From 165e394e1e17ad15eda6fd57a0358477d91c8746 Mon Sep 17 00:00:00 2001 From: hpanther Date: Fri, 30 Oct 2020 12:29:03 +0100 Subject: [PATCH 001/225] Stash these --- cscope.out | 419870 ++++++++++++++++++++++++++++++++++++++ pio_local.ini.txt | 3 + src/.emsdevice.cpp.swp | Bin 0 -> 16384 bytes src/devices/solar.cpp | 57 +- src/devices/solar.h | 7 +- 5 files changed, 419935 insertions(+), 2 deletions(-) create mode 100644 cscope.out create mode 100644 pio_local.ini.txt create mode 100644 src/.emsdevice.cpp.swp diff --git a/cscope.out b/cscope.out new file mode 100644 index 00000000..1241e87c --- /dev/null +++ b/cscope.out @@ -0,0 +1,419870 @@ +cscope 15 $HOME/DevCurrent/ems-esp/EMS-ESP 0002356847 + @.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h + +5  + ~"c/ArduoJs.h +" + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h + +5 #agm + + + +7 #ifde +__lulus + + +9  + ~"ArduoJs.h +" + +11 +usg + +mea + + gArduoJs +; + +15 #r +ArduoJs + +ques + +a + +C +++ +comp +, + + +chge + +fe + +exnsi + +to + . +cc + + + . +p + + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp + +5 #agm + + + +7  + ~"ArduoJs/Cfiguti.h +" + +9 #i! +ARDUINOJSON_DEBUG + + +10 #ifde +__g__ + + +11 #agm +g + +syem_hd + + +12 #i +defed + +__GNUC__ + + +13 #agm +GCC + +syem_hd + + +17  + ~"ArduoJs/Aay/AayRef.h +" + +18  + ~"ArduoJs/Obje/ObjeRef.h +" + +19  + ~"ArduoJs/V/VRef.h +" + +21  + ~"ArduoJs/Documt/DymicJsDocumt.h +" + +22  + ~"ArduoJs/Documt/SticJsDocumt.h +" + +24  + ~"ArduoJs/Aay/AayIm.h +" + +25  + ~"ArduoJs/Aay/EmtProxy.h +" + +26  + ~"ArduoJs/Aay/Uts.h +" + +27  + ~"ArduoJs/Ci/CiIm.h +" + +28  + ~"ArduoJs/Obje/MembProxy.h +" + +29  + ~"ArduoJs/Obje/ObjeIm.h +" + +30  + ~"ArduoJs/V/VAsIm.h +" + +31  + ~"ArduoJs/V/VCom.h +" + +32  + ~"ArduoJs/V/VIm.h +" + +34  + ~"ArduoJs/Js/JsDerliz.h +" + +35  + ~"ArduoJs/Js/JsSliz.h +" + +36  + ~"ArduoJs/Js/PyJsSliz.h +" + +37  + ~"ArduoJs/MsgPack/MsgPackDerliz.h +" + +38  + ~"ArduoJs/MsgPack/MsgPackSliz.h +" + +40  + ~"ArduoJs/comtiby.h +" + +42 +mea + + gArduoJs + { + +43  + gARDUINOJSON_NAMESPACE +:: + tAayCڡRef + + tJsAayCڡ +; + +44  + gARDUINOJSON_NAMESPACE +:: + tAayRef + + tJsAay +; + +45  + gARDUINOJSON_NAMESPACE +:: + tFlt + + tJsFlt +; + +46  + gARDUINOJSON_NAMESPACE +:: + tIeg + + tJsIeg +; + +47  + gARDUINOJSON_NAMESPACE +:: + tObjeCڡRef + + tJsObjeCڡ +; + +48  + gARDUINOJSON_NAMESPACE +:: + tObjeRef + + tJsObje +; + +49  + gARDUINOJSON_NAMESPACE +:: + tPa + + tJsPa +; + +50  + gARDUINOJSON_NAMESPACE +:: + tPaCڡ + + tJsPaCڡ +; + +51  + gARDUINOJSON_NAMESPACE +:: + tSg + + tJsSg +; + +52  + gARDUINOJSON_NAMESPACE +:: + tUI + + tJsUI +; + +53  + gARDUINOJSON_NAMESPACE +:: + tVCڡRef + + tJsVCڡ +; + +54  + gARDUINOJSON_NAMESPACE +:: + tVRef + + tJsV +; + +55 +usg + + gARDUINOJSON_NAMESPACE +:: +BasicJsDocumt +; + +56 +usg + + gARDUINOJSON_NAMESPACE +:: +cyAay +; + +57 +usg + + gARDUINOJSON_NAMESPACE +:: +DerliziE +; + +58 +usg + + gARDUINOJSON_NAMESPACE +:: +derlizeJs +; + +59 +usg + + gARDUINOJSON_NAMESPACE +:: +derlizeMsgPack +; + +60 +usg + + gARDUINOJSON_NAMESPACE +:: +DymicJsDocumt +; + +61 +usg + + gARDUINOJSON_NAMESPACE +:: +JsDocumt +; + +62 +usg + + gARDUINOJSON_NAMESPACE +:: +msuJs +; + +63 +usg + + gARDUINOJSON_NAMESPACE +:: +rlized +; + +64 +usg + + gARDUINOJSON_NAMESPACE +:: +rlizeJs +; + +65 +usg + + gARDUINOJSON_NAMESPACE +:: +rlizeJsPy +; + +66 +usg + + gARDUINOJSON_NAMESPACE +:: +rlizeMsgPack +; + +67 +usg + + gARDUINOJSON_NAMESPACE +:: +SticJsDocumt +; + +69 +mea + + gDerliziOi + { + +70 +usg + + gARDUINOJSON_NAMESPACE +:: +Fr +; + +71 +usg + + gARDUINOJSON_NAMESPACE +:: +NegLim +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +le + +VDa + * +yAdd +( +CiDa + * +r +, +MemyPo + * +po +) { + +12  + gr + ?-> +addEmt +( +po +) : 0; + +15 + gme + < +tyme + + gTVis +> + +16 +le + +tyme + + gTVis +:: +su_ty + +yAc +(cڡ +CiDa + * +r +, + +17 +TVis + & +vis +) { + +18 i( + gr +) + +19  + gvis +. +visAay +(* +r +); + +21  + gvis +. +visNu +(); + +24 +le + +bo + +yEqus +(cڡ +CiDa + * +lhs +, cڡ CiD* +rhs +) { + +25 i( + glhs + = +rhs +) + +26  +ue +; + +27 i(! + glhs + || ! + grhs +) + +28  + gl +; + +29  + glhs +-> +equsAay +(* +rhs +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTAay +> + +13 +le + +AayRef + + gAayShtcuts +< + gTAay +>:: +NeedAay +() const { + +14  +im +()-> +addEmt +(). +me + +to +< +AayRef +>(); + +17 + gme + < +tyme + + gTAay +> + +18 +le + +ObjeRef + + gAayShtcuts +< + gTAay +>:: +NeedObje +() const { + +19  +im +()-> +addEmt +(). +me + +to +< +ObjeRef +>(); + +22 + gme + < +tyme + + gTAay +> + +23 +le + + gEmtProxy +< + gTAay +> + gAayShtcuts +:: +ݔ +[]( + +24 +size_t + +dex +) const { + +25  +EmtProxy +< +TAay +>(* +im +(), + gdex +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cVP + { + +13 + gpublic +: + +14 +VP +( +MemyPo + * +po +, +VDa + * +da +: +_v +(pool, data) {} + +16 +VRef + * + gݔ +->() { + +17  & + g_v +; + +20 + gVRef + & + gݔ +*() { + +21  + g_v +; + +24 + give +: + +25 +VRef + +_v +; + +28 as + cAayIt + { + +29 + gpublic +: + +30 +AayIt +(: +_ +(0) {} + +31 +exic + +AayIt +( +MemyPo + * +po +, +VSl + * + +) + +32 : +_po +( +po +), +_ +( + +) {} + +34 +VRef + + gݔ +*() const { + +35  +VRef +( +_po +, +_ +-> +da +()); + +37 +VP + + gݔ +->() { + +38  +VP +( +_po +, +_ +-> +da +()); + +41 +bo + + gݔ +==(cڡ +AayIt + & +h +) const { + +42  +_ + = +h +._slot; + +45 +bo + + gݔ +!=(cڡ +AayIt + & +h +) const { + +46  +_ + ! +h +._slot; + +49 + gAayIt + & + gݔ +++() { + +50 + g_ + = +_ +-> +xt +(); + +51  * + gthis +; + +54 + gAayIt + & + gݔ ++=( +size_t + +di +) { + +55 +_ + = _-> +xt +( +di +); + +56  * + gthis +; + +59 +VSl + * + +() { + +60  + g_ +; + +63 + give +: + +64 +MemyPo + * +_po +; + +65 +VSl + * + g_ +; + +68 as + cVCڡP + { + +69 + gpublic +: + +70 +VCڡP +(cڡ +VDa + * +da +: +_v +(data) {} + +72 +VCڡRef + * +ݔ +->() { + +73  & +_v +; + +76 + gVCڡRef + & + gݔ +*() { + +77  + g_v +; + +80 + give +: + +81 +VCڡRef + +_v +; + +84 as + cAayCڡRefIt + { + +85 + gpublic +: + +86 +AayCڡRefIt +(: +_ +(0) {} + +87 +exic + +AayCڡRefIt +(cڡ +VSl + * + +: +_ +(slot) {} + +89 +VCڡRef + +ݔ +*() const { + +90  +VCڡRef +( +_ +-> +da +()); + +92 +VCڡP + + gݔ +->() { + +93  +VCڡP +( +_ +-> +da +()); + +96 +bo + + gݔ +==(cڡ +AayCڡRefIt + & +h +) const { + +97  +_ + = +h +._slot; + +100 +bo + + gݔ +!=(cڡ +AayCڡRefIt + & +h +) const { + +101  +_ + ! +h +._slot; + +104 + gAayCڡRefIt + & + gݔ +++() { + +105 + g_ + = +_ +-> +xt +(); + +106  * + gthis +; + +109 + gAayCڡRefIt + & + gݔ ++=( +size_t + +di +) { + +110 +_ + = _-> +xt +( +di +); + +111  * + gthis +; + +114 cڡ +VSl + * + +() { + +115  + g_ +; + +118 + give +: + +119 cڡ +VSl + * +_ +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +13  + #JSON_ARRAY_SIZE +( +NUMBER_OF_ELEMENTS +) \ + +14 (( +NUMBER_OF_ELEMENTS +* ( +ARDUINOJSON_NAMESPACE +:: +VSl +)) + + ) + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 +ass + + gObjeRef +; + +19 + gme + < + gtyme +> + +20 +ass + + gEmtProxy +; + +22 + gme + < +tyme + + gTDa +> + +23 as + cAayRefBa + { + +24 + gpublic +: + +25 +ݔ + +VCڡRef +() const { + +26 cڡ * +da + = +_da +; + +27  +VCڡRef +( +t_ +( +da +)); + +30 + gme + < +tyme + + gTVis +> + +31 +FORCE_INLINE + +tyme + + gTVis +:: +su_ty + +ac +( +TVis +& +vis +) const { + +32  +yAc +( +_da +, +vis +); + +35 +FORCE_INLINE + +bo + +isNu +() const { + +36  + g_da + == 0; + +39 +FORCE_INLINE + +ݔ + +bo +() const { + +40  + g_da + != 0; + +43 +FORCE_INLINE + +size_t + +memyUge +() const { + +44  + g_da + ? _da-> +memyUge +() : 0; + +47 +FORCE_INLINE + +size_t + +ág +() const { + +48  + g_da + ? _da-> +ág +() : 0; + +51 +FORCE_INLINE + +size_t + +size +() const { + +52  + g_da + ? _da-> +size +() : 0; + +55 + geed +: + +56 +AayRefBa +( +TDa +* +da +: +_da +(data) {} + +57 +TDa +* +_da +; + +60 +ass + + gAayCڡRef + : +public + +AayRefBa +, + +61 +public + + gVisab + { + +62 +nd + +ass + + gAayRef +; + +63  + gAayRefBa + + tba_ty +; + +65 + gpublic +: + +66  +AayCڡRefIt + + t +; + +68 +FORCE_INLINE + + + +beg +() const { + +69 i(! + g_da +) + +70  + +(); + +71  + +( +_da +-> +hd +()); + +74 +FORCE_INLINE + + + +d +() const { + +75  + +(); + +78 +FORCE_INLINE + +AayCڡRef +(: +ba_ty +(0) {} + +79 +FORCE_INLINE + +AayCڡRef +(cڡ +CiDa +* +da +: +ba_ty +(data) {} + +81 +FORCE_INLINE + +bo + +ݔ +==( +AayCڡRef + +rhs +) const { + +82  +yEqus +( +_da +, +rhs +._data); + +85 +FORCE_INLINE + +VCڡRef + + gݔ +[]( +size_t + + gdex +) const { + +86  +gEmt +( +dex +); + +89 +FORCE_INLINE + +VCڡRef + +gEmt +( +size_t + +dex +) const { + +90  +VCڡRef +( +_da + ? _da-> +gEmt +( +dex +) : 0); + +94 +ass + + gAayRef + : +public + +AayRefBa +< +CiDa +>, + +95 +public + + gAayShtcuts +< + gAayRef +>, + +96 +public + + gVisab + { + +97  + gAayRefBa +< + tCiDa +> + tba_ty +; + +99 + gpublic +: + +100  +AayIt + + t +; + +102 +FORCE_INLINE + +AayRef +(: +ba_ty +(0), +_po +(0) {} + +103 +FORCE_INLINE + +AayRef +( +MemyPo +* +po +, +CiDa +* +da +) + +104 : +ba_ty +( +da +), +_po +( +po +) {} + +106 +ݔ + +VRef +() { + +107 * + gda + = +_da +; + +108  +VRef +( +_po +, +t_ +< +VDa +*>( +da +)); + +111 +ݔ + +AayCڡRef +() const { + +112  +AayCڡRef +( +_da +); + +115 +VRef + +addEmt +() const { + +116  +VRef +( +_po +, +yAdd +( +_da +, _pool)); + +119 +FORCE_INLINE + + + +beg +() const { + +120 i(! + g_da +) + +121  + +(); + +122  + +( +_po +, +_da +-> +hd +()); + +125 +FORCE_INLINE + + + +d +() const { + +126  + +(); + +130 +FORCE_INLINE + +bo + +t +( +AayCڡRef + +c +) const { + +131 i(! + g_da + || ! + gc +._data) + +132  + gl +; + +133  + g_da +-> +cyFrom +(* +c +. +_da +, +_po +); + +136 +FORCE_INLINE + +bo + + gݔ +==( +AayRef + +rhs +) const { + +137  +yEqus +( +_da +, +rhs +._data); + +141 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t + +dex +) const { + +142  +VRef +( +_po +, +_da + ? _da-> +gOrAddEmt +( +dex +, _pool) : 0); + +146 +FORCE_INLINE + +VRef + +gEmt +( +size_t + +dex +) const { + +147  +VRef +( +_po +, +_da + ? _da-> +gEmt +( +dex +) : 0); + +151 +FORCE_INLINE +  +move +( + + + +) const { + +152 i(! + g_da +) + +154 + g_da +-> +moveSl +( + +. + +()); + +158 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +159 i(! + g_da +) + +161 + g_da +-> +moveEmt +( +dex +); + +164 + give +: + +165 +MemyPo +* +_po +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < + gtyme +> + +13 +ass + + gEmtProxy +; + +15 + gme + < +tyme + + gTAay +> + +16 as + cAayShtcuts + { + +17 + gpublic +: + +19 +FORCE_INLINE + +EmtProxy +< +TAay +> +ݔ +[]( +size_t + +dex +) const; + +21 +FORCE_INLINE + +ObjeRef + +NeedObje +() const; + +23 +FORCE_INLINE + +AayRef + +NeedAay +() const; + +30 + gme + < +tyme + + gT +> + +31 +FORCE_INLINE + +bo + +add +(cڡ +T + & +vue +) const { + +32  +im +()-> +addEmt +(). +t +( +vue +); + +37 + gme + < +tyme + + gT +> + +38 +FORCE_INLINE + +bo + +add +( +T + * +vue +) const { + +39  +im +()-> +addEmt +(). +t +( +vue +); + +42 + give +: + +43 cڡ +TAay + * +im +() const { + +44  +ic_ +( +this +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 #ifde +_MSC_VER + + +13 #agm +wng +( +push +) + +14 #agm +wng +( +dib + : 4522) + +17 +mea + + gARDUINOJSON_NAMESPACE + { + +19 + gme + < +tyme + + gTAay +> + +20 +ass + + gEmtProxy + : +public + +VOts +< +EmtProxy +< +TAay +> >, + +21 +public + + gVShtcuts +< + gEmtProxy +< + gTAay +> >, + +22 +public + + gVisab + { + +23  + gEmtProxy +< + tTAay +> + tthis_ty +; + +25 + gpublic +: + +26 +FORCE_INLINE + +EmtProxy +( +TAay + +y +, +size_t + +dex +) + +27 : +_y +( +y +), +_dex +( +dex +) {} + +29 +FORCE_INLINE + +EmtProxy +(cڡ EmtProxy& +c +) + +30 : +_y +( +c +._y), +_dex +(src._index) {} + +32 +FORCE_INLINE + + gthis_ty +& + gݔ +=(cڡ +this_ty +& +c +) { + +33 +gOrAddUpamEmt +(). +t +( +c +. +as +< +VCڡRef +>()); + +34  * + gthis +; + +42 + gme + < +tyme + + gT +> + +43 +FORCE_INLINE + + gthis_ty +& + gݔ +=(cڡ +T +& +c +) { + +44 +gOrAddUpamEmt +(). +t +( +c +); + +45  * + gthis +; + +50 + gme + < +tyme + + gT +> + +51 +FORCE_INLINE + + gthis_ty +& + gݔ +=( +T +* +c +) { + +52 +gOrAddUpamEmt +(). +t +( +c +); + +53  * + gthis +; + +56 +FORCE_INLINE +  +r +() const { + +57 +gUpamEmt +(). +r +(); + +60 +FORCE_INLINE + +bo + +isNu +() const { + +61  +gUpamEmt +(). +isNu +(); + +64 + gme + < +tyme + + gT +> + +65 +FORCE_INLINE + +tyme + + gVAs +< + gT +>:: +ty + +as +() const { + +66  +gUpamEmt +(). +me + +as +< +T +>(); + +69 + gme + < +tyme + + gT +> + +70 +FORCE_INLINE + +ݔ + +T +() const { + +71  +gUpamEmt +(); + +74 + gme + < +tyme + + gT +> + +75 +FORCE_INLINE + +bo + +is +() const { + +76  +gUpamEmt +(). +me + + gis +< + gT +>(); + +79 + gme + < +tyme + + gT +> + +80 +FORCE_INLINE + +tyme + + gVTo +< + gT +>:: +ty + +to +() const { + +81  +gOrAddUpamEmt +(). +me + +to +< +T +>(); + +89 + gme + < +tyme + + gTVue +> + +90 +FORCE_INLINE + +bo + +t +(cڡ +TVue +& +vue +) const { + +91  +gOrAddUpamEmt +(). +t +( +vue +); + +96 + gme + < +tyme + + gTVue +> + +97 +FORCE_INLINE + +bo + +t +( +TVue +* +vue +) const { + +98  +gOrAddUpamEmt +(). +t +( +vue +); + +101 + gme + < +tyme + + gTVis +> + +102 +tyme + + gTVis +:: +su_ty + +ac +( +TVis +& +vis +) const { + +103  +gUpamEmt +(). +ac +( +vis +); + +106 +FORCE_INLINE + +size_t + +size +() const { + +107  +gUpamEmt +(). +size +(); + +110 + gme + < +tyme + + gTNeedKey +> + +111 +VRef + +gMemb +( +TNeedKey +* +key +) const { + +112  +gUpamEmt +(). +gMemb +( +key +); + +115 + gme + < +tyme + + gTNeedKey +> + +116 +VRef + +gMemb +(cڡ +TNeedKey +& +key +) const { + +117  +gUpamEmt +(). +gMemb +( +key +); + +120 + gme + < +tyme + + gTNeedKey +> + +121 +VRef + +gOrAddMemb +( +TNeedKey +* +key +) const { + +122  +gOrAddUpamEmt +(). +gOrAddMemb +( +key +); + +125 + gme + < +tyme + + gTNeedKey +> + +126 +VRef + +gOrAddMemb +(cڡ +TNeedKey +& +key +) const { + +127  +gOrAddUpamEmt +(). +gOrAddMemb +( +key +); + +130 +VRef + +addEmt +() const { + +131  +gOrAddUpamEmt +(). +addEmt +(); + +134 +VRef + +gEmt +( +size_t + +dex +) const { + +135  +gOrAddUpamEmt +(). +gEmt +( +dex +); + +138 +VRef + +gOrAddEmt +( +size_t + +dex +) const { + +139  +gOrAddUpamEmt +(). +gOrAddEmt +( +dex +); + +142 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +143 +gUpamEmt +(). +move +( +dex +); + +148 + gme + < +tyme + + gTCh +> + +149 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +>:: +ty + +move +( + +150 +TCh +* +key +) const { + +151 +gUpamEmt +(). +move +( +key +); + +155 + gme + < +tyme + + gTSg +> + +156 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +157 cڡ +TSg +& +key +) const { + +158 +gUpamEmt +(). +move +( +key +); + +161 + give +: + +162 +FORCE_INLINE + +VRef + +gUpamEmt +() const { + +163  +_y +. +gEmt +( +_dex +); + +166 +FORCE_INLINE + +VRef + +gOrAddUpamEmt +() const { + +167  + g_y +. +gOrAddEmt +( +_dex +); + +170 +TAay + + g_y +; + +171 cڡ +size_t + + g_dex +; + +176 #ifde +_MSC_VER + + +177 #agm +wng +( +p +) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gT +, +size_t + + gN +,ym + gTDei +> + +14 +le + +tyme + + gab_if +:: +vue + && + +15 ! +is_ba_of +< +JsDocumt +, + gTDei +>:: +vue +, + +16 + gbo +>:: +ty + + +17 +cyAay +( +T + (& +c +)[ +N +], cڡ +TDei +& +d +) { + +18  +cyAay +( +c +, +N +, +d +); + +22 + gme + < +tyme + + gT +, +size_t + + gN +> + +23 +le + +bo + +cyAay +( +T + (& +c +)[ +N +], +JsDocumt +& +d +) { + +24  +cyAay +( +c +, +d +. +to +< +AayRef +>()); + +28 + gme + < +tyme + + gT +,ym + gTDei +> + +29 +le + +tyme + + gab_if +:: +vue + && + +30 ! +is_ba_of +< +JsDocumt +, + gTDei +>:: +vue +, + +31 + gbo +>:: +ty + + +32 +cyAay +( +T +* +c +, +size_t + +n +, cڡ +TDei +& +d +) { + +33 +bo + + gok + = +ue +; + +34  +size_t + + gi + = 0; i < + gn +; i++) { + +35 + gok + & +d +. +add +( +c +[ +i +]); + +37  + gok +; + +41 + gme + < +tyme + + gT +> + +42 +le + +bo + +cyAay +( +T +* +c +, +size_t + +n +, +JsDocumt +& +d +) { + +43  +cyAay +( +c +, +n +, +d +. +to +< +AayRef +>()); + +47 + gme + < +tyme + + gT +, +size_t + + gN1 +, size_ + gN2 +,ym + gTDei +> + +48 +le + +tyme + + gab_if +:: +vue +, + +49 + gbo +>:: +ty + + +50 +cyAay +( +T + (& +c +)[ +N1 +][ +N2 +], cڡ +TDei +& +d +) { + +51 +bo + + gok + = +ue +; + +52  +size_t + + gi + = 0; i < + gN1 +; i++) { + +53 +AayRef + + gáedAay + = +d +. +NeedAay +(); + +54  +size_t + + gj + = 0; j < + gN2 +; j++) { + +55 + gok + & +áedAay +. +add +( +c +[ +i +][ +j +]); + +58  + gok +; + +62 + gme + < +tyme + + gT +, +size_t + + gN1 +, size_ + gN2 +> + +63 +le + +bo + +cyAay +( +T + (& +c +)[ +N1 +][ +N2 +], +JsDocumt +& +d +) { + +64  +cyAay +( +c +, +d +. +to +< +AayRef +>()); + +67 + gme + < +tyme + + gT +> + +68 +ass + + gAayCݛr1D + : +public + +Vis +< +size_t +> { + +69 +public +: + +70 +AayCݛr1D +( +T +* +dei +, +size_t + +cy +) + +71 : +_dei +( +dei +), +_cy +( +cy +) {} + +73 +size_t + +visAay +(cڡ +CiDa +& +y +) { + +74 +size_t + + gsize + = 0; + +75 +VSl +* + g + = +y +. +hd +(); + +77  + g + !0 && +size + < +_cy +) { + +78 +_dei +[ +size +++] = +vAs +< +T +>( + +-> +da +()); + +79 + g + = + +-> +xt +(); + +81  + gsize +; + +84 +size_t + +visObje +(cڡ +CiDa +&) { + +88 +size_t + +visFlt +( +Flt +) { + +92 +size_t + +visSg +(const *) { + +96 +size_t + +visRawJs +(const *, size_t) { + +100 +size_t + +visNegiveIeg +( +UI +) { + +104 +size_t + +visPosiveIeg +( +UI +) { + +108 +size_t + +visBoޗn +( +bo +) { + +112 +size_t + +visNu +() { + +116 + give +: + +117 +T +* +_dei +; + +118 +size_t + + g_cy +; + +121 + gme + < +tyme + + gT +, +size_t + + gN1 +, size_ + gN2 +> + +122 +ass + + gAayCݛr2D + : +public + +Vis +<> { + +123 +public +: + +124 +AayCݛr2D +( +T + (* +dei +)[ +N1 +][ +N2 +]: +_dei +(destination) {} + +126  +visAay +(cڡ +CiDa +& +y +) { + +127 +VSl +* + + = +y +. +hd +(); + +128 +size_t + + gn + = 0; + +129  + g + !0 && +n + < +N1 +) { + +130 +AayCݛr1D +< +T +> +cݛr +((* +_dei +)[ +n +++], +N2 +); + +131 +vAc +( + +-> +da +(), +cݛr +); + +132 + g + = + +-> +xt +(); + +135  +visObje +(cڡ +CiDa +&) {} + +136  +visFlt +( +Flt +) {} + +137  +visSg +(const *) {} + +138  +visRawJs +(cڡ *, +size_t +) {} + +139  +visNegiveIeg +( +UI +) {} + +140  +visPosiveIeg +( +UI +) {} + +141  +visBoޗn +( +bo +) {} + +142  +visNu +() {} + +144 + give +: + +145 +T + (* +_dei +)[ +N1 +][ +N2 +]; + +146 +size_t + + g_cy1 +, + g_cy2 +; + +150 + gme + < +tyme + + gTSour +,ym + gT +, +size_t + + gN +> + +151 +le + +tyme + + gab_if +:: +vue +, + gsize_t +>:: +ty + +cyAay +( + +152 cڡ +TSour +& +c +, +T + (& +d +)[ +N +]) { + +153  +cyAay +( +c +, +d +, +N +); + +157 + gme + < +tyme + + gTSour +,ym + gT +> + +158 +le + +size_t + +cyAay +(cڡ +TSour +& +c +, +T +* +d +, size_ +n +) { + +159 + gAayCݛr1D +< + gT +> +cݛr +( +d +, +n +); + +161  + gc +. +ac +( +cݛr +); + +165 + gme + < +tyme + + gTSour +,ym + gT +, +size_t + + gN1 +, size_ + gN2 +> + +166 +le +  +cyAay +(cڡ +TSour +& +c +, +T + (& +d +)[ +N1 +][ +N2 +]) { + +167 + gAayCݛr2D +< + gT +, + gN1 +, + gN2 +> +cݛr +(& +d +); + +168 + gc +. +ac +( +cݛr +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 +ass + + gMemyPo +; + +15 +ass + + gVDa +; + +16 +ass + + gVSl +; + +18 as + cCiDa + { + +19 +VSl + * + g_hd +; + +20 +VSl + * + g_ +; + +22 + gpublic +: + +31 +VDa + * +addEmt +( +MemyPo + * +po +); + +33 +VDa + * +gEmt +( +size_t + +dex +) const; + +35 +VDa + * +gOrAddEmt +( +size_t + +dex +, +MemyPo + * +po +); + +37  +moveEmt +( +size_t + +dex +); + +39 +bo + +equsAay +(cڡ +CiDa + & +h +) const; + +43 + gme + < +tyme + + gTAddSg +> + +44 +VDa + * +addMemb +( +TAddSg + +key +, +MemyPo + * +po +); + +46 + gme + < +tyme + + gTAddSg +> + +47 +VDa + * +gMemb +( +TAddSg + +key +) const; + +49 + gme + < +tyme + + gTAddSg +> + +50 +VDa + * +gOrAddMemb +( +TAddSg + +key +, +MemyPo + * +po +); + +52 + gme + < +tyme + + gTAddSg +> + +53  +moveMemb +( +TAddSg + +key +) { + +54 +moveSl +( +gSl +( +key +)); + +57 + gme + < +tyme + + gTAddSg +> + +58 +bo + +cڏsKey +(cڡ +TAddSg + & +key +) const; + +60 +bo + +equsObje +(cڡ +CiDa + & +h +) const; + +64  +r +(); + +65 +size_t + +memyUge +() const; + +66 +size_t + +ág +() const; + +67 +size_t + +size +() const; + +69 +VSl + * +addSl +( +MemyPo + *); + +70  +moveSl +( +VSl + * + +); + +72 +bo + +cyFrom +(cڡ +CiDa + & +c +, +MemyPo + * +po +); + +74 +VSl + * +hd +() const { + +75  + g_hd +; + +78  +movePors +( +rdiff_t + +rgDi +,diff_ +vDi +); + +80 + give +: + +81 +VSl + * +gSl +( +size_t + +dex +) const; + +83 + gme + < +tyme + + gTAddSg +> + +84 +VSl + * +gSl +( +TAddSg + +key +) const; + +86 +VSl + * +gPviousSl +(VariantSlot *) const; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 +le + +bo + +vEqus +(cڡ +VDa +* +a +, cڡ VDa* +b +) { + +13  +vCom +( +a +, +b += +COMPARE_RESULT_EQUAL +; + +16 +le + +VSl +* + gCiDa +:: +addSl +( +MemyPo +* +po +) { + +17 +VSl +* + + = +po +-> +locV +(); + +18 i(! + g +) + +21 i( + g_ +) { + +22 + g_ +-> +tNextNNu +( + +); + +23 + g_ + = + +; + +25 + g_hd + = + +; + +26 + g_ + = + +; + +29 + g +-> +r +(); + +30  + g +; + +33 +le + +VDa +* + gCiDa +:: +addEmt +( +MemyPo +* +po +) { + +34  +Da +( +addSl +( +po +)); + +37 + gme + < +tyme + + gTAddSg +> + +38 +le + +VDa +* + gCiDa +:: +addMemb +( +TAddSg + +key +, + +39 +MemyPo +* +po +) { + +40 +VSl +* + g + = +addSl +( +po +); + +41 i(! +SKey +( + +, +key +, +po +)) { + +42 +moveSl +( + +); + +45  + g +-> +da +(); + +48 +le +  + gCiDa +:: +r +() { + +49 +_hd + = 0; + +50 + g_ + = 0; + +53 + gme + < +tyme + + gTAddSg +> + +54 +le + +bo + + gCiDa +:: +cڏsKey +(cڡ +TAddSg +& +key +) const { + +55  +gSl +( +key +) != 0; + +58 +le + +bo + + gCiDa +:: +cyFrom +(cڡ +CiDa +& +c +, + +59 +MemyPo +* +po +) { + +60 +r +(); + +61  +VSl +* + gs + = +c +. +_hd +; s; s = +s +-> +xt +()) { + +62 +VDa +* +v +; + +63 i( + gs +-> +key +() != 0) { + +64 i( +s +-> +ownsKey +()) + +65 +v + = +addMemb +( +RamSgAdr +( +s +-> +key +()), +po +); + +67 + gv + = +addMemb +( +CڡRamSgAdr +( +s +-> +key +()), +po +); + +69 + gv + = +addEmt +( +po +); + +71 i(! + gv +) + +72  + gl +; + +73 i(! + gv +-> +cyFrom +(* +s +-> +da +(), +po +)) + +74  + gl +; + +76  + gue +; + +79 +le + +bo + + gCiDa +:: +equsObje +(cڡ +CiDa +& +h +) const { + +80 +size_t + +cou + = 0; + +81  +VSl +* + g + = +_hd +; sl; sl = + +-> +xt +()) { + +82 +VDa +* +v1 + = + +-> +da +(); + +83 +VDa +* + gv2 + = +h +. +gMemb +( +adtSg +( + +-> +key +())); + +84 i(! +vEqus +( +v1 +, +v2 +)) + +85  + gl +; + +86 + gcou +++; + +88  + gcou + = +h +. +size +(); + +91 +le + +bo + + gCiDa +:: +equsAay +(cڡ +CiDa +& +h +) const { + +92 +VSl +* +s1 + = +_hd +; + +93 +VSl +* + gs2 + = +h +. +_hd +; + +95 i( + gs1 + = +s2 +) + +96  +ue +; + +97 i(! + gs1 + || ! + gs2 +) + +98  + gl +; + +99 i(! +vEqus +( +s1 +-> +da +(), +s2 +->data())) + +100  + gl +; + +101 + gs1 + = +s1 +-> +xt +(); + +102 + gs2 + = +s2 +-> +xt +(); + +106 + gme + < +tyme + + gTAddSg +> + +107 +le + +VSl +* + gCiDa +:: +gSl +( +TAddSg + +key +) const { + +108 +VSl +* + + = +_hd +; + +109  + g +) { + +110 i( + gkey +. +equs +( + +-> +key +())) + +112 + g + = + +-> +xt +(); + +114  + g +; + +117 +le + +VSl +* + gCiDa +:: +gSl +( +size_t + +dex +) const { + +118  +_hd +-> +xt +( +dex +); + +121 +le + +VSl +* + gCiDa +:: +gPviousSl +(VSl* +rg +) const { + +122 +VSl +* +cut + = +_hd +; + +123  + gcut +) { + +124 +VSl +* + gxt + = +cut +-> +xt +(); + +125 i( + gxt + = +rg +) + +126  +cut +; + +127 + gcut + = +xt +; + +132 + gme + < +tyme + + gTAddSg +> + +133 +le + +VDa +* + gCiDa +:: +gMemb +( +TAddSg + +key +) const { + +134 +VSl +* + + = +gSl +( +key +); + +135  + g + ? sl-> +da +() : 0; + +138 + gme + < +tyme + + gTAddSg +> + +139 +le + +VDa +* + gCiDa +:: +gOrAddMemb +( +TAddSg + +key +, + +140 +MemyPo +* +po +) { + +142 i( + gkey +. +isNu +()) + +146 +VSl +* + g + = +gSl +( +key +); + +147 i( + g +) + +148  + g +-> +da +(); + +150  +addMemb +( +key +, +po +); + +153 +le + +VDa +* + gCiDa +:: +gEmt +( +size_t + +dex +) const { + +154 +VSl +* + + = +gSl +( +dex +); + +155  + g + ? sl-> +da +() : 0; + +158 +le + +VDa +* + gCiDa +:: +gOrAddEmt +( +size_t + +dex +, + +159 +MemyPo +* +po +) { + +160 +VSl +* + g + = +_hd +; + +161  + g + && + gdex + > 0) { + +162 + g + = + +-> +xt +(); + +163 + gdex +--; + +165 i(! + g +) + +166 + gdex +++; + +167  + gdex + > 0) { + +168 + g + = +addSl +( +po +); + +169 + gdex +--; + +171  +Da +( + +); + +174 +le +  + gCiDa +:: +moveSl +( +VSl +* + +) { + +175 i(! + +) + +177 +VSl +* + gev + = +gPviousSl +( + +); + +178 +VSl +* + gxt + = + +-> +xt +(); + +179 i( + gev +) + +180 + gev +-> +tNext +( +xt +); + +182 + g_hd + = +xt +; + +183 i(! + gxt +) + +184 + g_ + = +ev +; + +187 +le +  + gCiDa +:: +moveEmt +( +size_t + +dex +) { + +188 +moveSl +( +gSl +( +dex +)); + +191 +le + +size_t + + gCiDa +:: +memyUge +() const { + +192 +size_t + +tٮ + = 0; + +193  +VSl +* + gs + = +_hd +; s; s = +s +-> +xt +()) { + +194 +tٮ + +( +VSl ++ +s +-> +da +()-> +memyUge +(); + +195 i( + gs +-> +ownsKey +()) + +196 + gtٮ + + + +( +s +-> +key +()) + 1; + +198  + gtٮ +; + +201 +le + +size_t + + gCiDa +:: +ág +() const { + +202 +size_t + +maxChdNeg + = 0; + +203  +VSl +* + gs + = +_hd +; s; s = +s +-> +xt +()) { + +204 +size_t + +chdNeg + = +s +-> +da +()-> +ág +(); + +205 i( + gchdNeg + > + gmaxChdNeg +) + +206 + gmaxChdNeg + = +chdNeg +; + +208  + gmaxChdNeg + + 1; + +211 +le + +size_t + + gCiDa +:: +size +() const { + +212  +Size +( +_hd +); + +215 + gme + < +tyme + + gT +> + +216 +le +  +movePor +( +T +*& +p +, +rdiff_t + +offt +) { + +217 i(! + gp +) + +219 + gp + = +t_ +< +T +*>( + +220 +t_ +<*>et_<*>( +p ++ +offt +)); + +221 +ARDUINOJSON_ASSERT +( +isAligd +( +p +)); + +224 +le +  + gCiDa +:: +movePors +( +rdiff_t + +rgDi +, + +225 +rdiff_t + +vDi +) { + +226 +movePor +( +_hd +, +vDi +); + +227 +movePor +( +_ +, +vDi +); + +228  +VSl +* + g + = +_hd +; sl; sl = + +-> +xt +()) + +229 + +-> +movePors +( +rgDi +, +vDi +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp + +5 #agm + + + +7 #i +__lulus + >= 201103L + +8  + #ARDUINOJSON_HAS_LONG_LONG + 1 + + ) + +9  + #ARDUINOJSON_HAS_NULLPTR + 1 + + ) + +10  + #ARDUINOJSON_HAS_RVALUE_REFERENCES + 1 + + ) + +12  + #ARDUINOJSON_HAS_LONG_LONG + 0 + + ) + +13  + #ARDUINOJSON_HAS_NULLPTR + 0 + + ) + +14  + #ARDUINOJSON_HAS_RVALUE_REFERENCES + 0 + + ) + +17 #i +defed +( +_MSC_VER +&& ! +ARDUINOJSON_HAS_LONG_LONG + + +18  + #ARDUINOJSON_HAS_INT64 + 1 + + ) + +20  + #ARDUINOJSON_HAS_INT64 + 0 + + ) + +24 #ide +ARDUINOJSON_EMBEDDED_MODE + + +25 #i +defed +( +ARDUINO +) \ + +26 || +defed +( +__IAR_SYSTEMS_ICC__ +) \ + +27 || +defed +( +__XC +) \ + +28 || +defed +( +__ARMCC_VERSION +) \ + +29 || + $defed +( +__AVR +) + +30  + #ARDUINOJSON_EMBEDDED_MODE + 1 + + ) + +32  + #ARDUINOJSON_EMBEDDED_MODE + 0 + + ) + +38 #i! + `defed +( +ARDUINOJSON_ENABLE_STD_STREAM +&& defed( +__has_ude +) + +39 #i + `__has_ude +(< +iam +>) && \ + +40 + `__has_ude +(< +oam +>) && \ + +41 ! + `defed +( +m +) && \ + +42 ! + $defed +( +max +) + +43  + #ARDUINOJSON_ENABLE_STD_STREAM + 1 + + ) + +45  + #ARDUINOJSON_ENABLE_STD_STREAM + 0 + + ) + +51 #i! + `defed +( +ARDUINOJSON_ENABLE_STD_STRING +&& defed( +__has_ude +) + +52 #i + `__has_ude +(< +rg +>&& ! + `defed +( +m +&& !defed( +max +) + +53  + #ARDUINOJSON_ENABLE_STD_STRING + 1 + + ) + +55  + #ARDUINOJSON_ENABLE_STD_STRING + 0 + + ) + +59 #i +ARDUINOJSON_EMBEDDED_MODE + + +62 #ide +ARDUINOJSON_USE_DOUBLE + + +63  + #ARDUINOJSON_USE_DOUBLE + 0 + + ) + +67 #ide +ARDUINOJSON_USE_LONG_LONG + + +68  + #ARDUINOJSON_USE_LONG_LONG + 0 + + ) + +72 #ide +ARDUINOJSON_ENABLE_STD_STRING + + +73  + #ARDUINOJSON_ENABLE_STD_STRING + 0 + + ) + +77 #ide +ARDUINOJSON_ENABLE_STD_STREAM + + +78  + #ARDUINOJSON_ENABLE_STD_STREAM + 0 + + ) + +82 #ide +ARDUINOJSON_DEFAULT_NESTING_LIMIT + + +83  + #ARDUINOJSON_DEFAULT_NESTING_LIMIT + 10 + + ) + +89 #ide +ARDUINOJSON_USE_DOUBLE + + +90  + #ARDUINOJSON_USE_DOUBLE + 1 + + ) + +94 #ide +ARDUINOJSON_USE_LONG_LONG + + +95 #i +ARDUINOJSON_HAS_LONG_LONG + || +ARDUINOJSON_HAS_INT64 + + +96  + #ARDUINOJSON_USE_LONG_LONG + 1 + + ) + +98  + #ARDUINOJSON_USE_LONG_LONG + 0 + + ) + +103 #ide +ARDUINOJSON_ENABLE_STD_STRING + + +104  + #ARDUINOJSON_ENABLE_STD_STRING + 1 + + ) + +108 #ide +ARDUINOJSON_ENABLE_STD_STREAM + + +109  + #ARDUINOJSON_ENABLE_STD_STREAM + 1 + + ) + +113 #ide +ARDUINOJSON_DEFAULT_NESTING_LIMIT + + +114  + #ARDUINOJSON_DEFAULT_NESTING_LIMIT + 50 + + ) + +119 #ifde +ARDUINO + + +121  + ~ + +124 #ide +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +125  + #ARDUINOJSON_ENABLE_ARDUINO_STRING + 1 + + ) + +129 #ide +ARDUINOJSON_ENABLE_ARDUINO_STREAM + + +130  + #ARDUINOJSON_ENABLE_ARDUINO_STREAM + 1 + + ) + +134 #ide +ARDUINOJSON_ENABLE_ARDUINO_PRINT + + +135  + #ARDUINOJSON_ENABLE_ARDUINO_PRINT + 1 + + ) + +141 #ide +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +142  + #ARDUINOJSON_ENABLE_ARDUINO_STRING + 0 + + ) + +146 #ide +ARDUINOJSON_ENABLE_ARDUINO_STREAM + + +147  + #ARDUINOJSON_ENABLE_ARDUINO_STREAM + 0 + + ) + +151 #ide +ARDUINOJSON_ENABLE_ARDUINO_PRINT + + +152  + #ARDUINOJSON_ENABLE_ARDUINO_PRINT + 0 + + ) + +157 #ide +ARDUINOJSON_ENABLE_PROGMEM + + +158 #ifde +PROGMEM + + +159  + #ARDUINOJSON_ENABLE_PROGMEM + 1 + + ) + +161  + #ARDUINOJSON_ENABLE_PROGMEM + 0 + + ) + +166 #ide +ARDUINOJSON_DECODE_UNICODE + + +167  + #ARDUINOJSON_DECODE_UNICODE + 1 + + ) + +171 #ide +ARDUINOJSON_ENABLE_COMMENTS + + +172  + #ARDUINOJSON_ENABLE_COMMENTS + 0 + + ) + +176 #ide +ARDUINOJSON_ENABLE_NAN + + +177  + #ARDUINOJSON_ENABLE_NAN + 0 + + ) + +181 #ide +ARDUINOJSON_ENABLE_INFINITY + + +182  + #ARDUINOJSON_ENABLE_INFINITY + 0 + + ) + +187 #ide +ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD + + +188  + #ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD + 1e7 + + ) + +192 #ide +ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD + + +193  + #ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD + 1e-5 + + ) + +196 #ide +ARDUINOJSON_LITTLE_ENDIAN + + +197 #i + `defed +( +_MSC_VER +) || \ + +198 ( + `defed +( +__BYTE_ORDER__ +&& __BYTE_ORDER__ = +__ORDER_LITTLE_ENDIAN__ +) || \ + +199 + `defed +( +__LITTLE_ENDIAN__ +|| defed( +__i386 +|| + $defed +( +__x86_64 +) + +200  + #ARDUINOJSON_LITTLE_ENDIAN + 1 + + ) + +202  + #ARDUINOJSON_LITTLE_ENDIAN + 0 + + ) + +206 #ide +ARDUINOJSON_ENABLE_ALIGNMENT + + +207 #i + `defed +( +__AVR +) + +208  + #ARDUINOJSON_ENABLE_ALIGNMENT + 0 + + ) + +210  + #ARDUINOJSON_ENABLE_ALIGNMENT + 1 + + ) + +214 #ide +ARDUINOJSON_TAB + + +215  + #ARDUINOJSON_TAB + " " + + ) + +218 #ide +ARDUINOJSON_ENABLE_STRING_DEDUPLICATION + + +219  + #ARDUINOJSON_ENABLE_STRING_DEDUPLICATION + 1 + + ) + +222 #ide +ARDUINOJSON_STRING_BUFFER_SIZE + + +223  + #ARDUINOJSON_STRING_BUFFER_SIZE + 32 + + ) + +226 #ide +ARDUINOJSON_DEBUG + + +227 #ifde +__PLATFORMIO_BUILD_DEBUG__ + + +228  + #ARDUINOJSON_DEBUG + 1 + + ) + +230  + #ARDUINOJSON_DEBUG + 0 + + ) + +234 #i +ARDUINOJSON_HAS_NULLPTR + && + `defed +( +nuαr +) + +235  +nuαr + +is + +defed + +as + +a + +mao +. +Remove + +the + +uy + #def + # + #unde + ) +nullptr + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +12  + ~ + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +17 as + cDerliziE + { + +19 ( + gDerliziE +::* + tbo_ty +)() const; + +20  +BoHr +() const {} + +22 + gpublic +: + +23 + eCode + { + +24 +Ok +, + +25 + gEmyIut +, + +26 + gIncomeIut +, + +27 + gInvidIut +, + +28 + gNoMemy +, + +29 + gNSu܋d +, + +30 + gTooDp + + +33 +DerliziE +() {} + +34 +DerliziE +( +Code + +c +: +_code +(c) {} + +37 +nd + +bo + +ݔ +==(cڡ +DerliziE +& +lhs +, + +38 cڡ + gDerliziE +& + grhs +) { + +39  + glhs +. + g_code + = +rhs +. +_code +; + +41 +nd + +bo + + gݔ +!=(cڡ +DerliziE +& +lhs +, + +42 cڡ + gDerliziE +& + grhs +) { + +43  + glhs +. + g_code + ! +rhs +. +_code +; + +47 +nd + +bo + + gݔ +==(cڡ +DerliziE +& +lhs +, +Code + + grhs +) { + +48  + glhs +. + g_code + = +rhs +; + +50 +nd + +bo + + gݔ +==( +Code + +lhs +, cڡ + gDerliziE +& + grhs +) { + +51  + glhs + = +rhs +. +_code +; + +53 +nd + +bo + + gݔ +!=(cڡ +DerliziE +& +lhs +, +Code + + grhs +) { + +54  + glhs +. + g_code + ! +rhs +; + +56 +nd + +bo + + gݔ +!=( +Code + +lhs +, cڡ + gDerliziE +& + grhs +) { + +57  + glhs + ! +rhs +. +_code +; + +61 +ݔ + +bo_ty +() const { + +62  + g_code + ! +Ok + ? & +DerliziE +:: +BoHr + : 0; + +64 +nd + +bo + + gݔ +==(bo +vue +, cڡ + gDerliziE +& + gr +) { + +65  + gic_ +< + gbo +>( + gr += +vue +; + +67 +nd + +bo + + gݔ +==(cڡ +DerliziE +& +r +, bo + gvue +) { + +68  + gic_ +< + gbo +>( + gr += +vue +; + +70 +nd + +bo + + gݔ +!=(bo +vue +, cڡ + gDerliziE +& + gr +) { + +71  + gic_ +< + gbo +>( + gr +! +vue +; + +73 +nd + +bo + + gݔ +!=(cڡ +DerliziE +& +r +, bo + gvue +) { + +74  + gic_ +< + gbo +>( + gr +! +vue +; + +78 +Code + +code +() const { + +79  + g_code +; + +82 cڡ * +c_r +() const { + +83 cڡ * + gmesges +[] = { + +86 +ARDUINOJSON_ASSERT +( +ic_ +< +size_t +>( +_code +) < + +87 ( +mesges +) / (messages[0])); + +88  + gmesges +[ +_code +]; + +91 #i +ARDUINOJSON_ENABLE_PROGMEM + + +92 cڡ +__FshSgHr +* +f_r +() const { + +93 +ARDUINOJSON_DEFINE_STATIC_ARRAY +(, +s0 +, "Ok"); + +94 +ARDUINOJSON_DEFINE_STATIC_ARRAY +(, +s1 +, "EmptyInput"); + +95 +ARDUINOJSON_DEFINE_STATIC_ARRAY +(, +s2 +, "IncompleteInput"); + +96 +ARDUINOJSON_DEFINE_STATIC_ARRAY +(, +s3 +, "InvalidInput"); + +97 +ARDUINOJSON_DEFINE_STATIC_ARRAY +(, +s4 +, "NoMemory"); + +98 +ARDUINOJSON_DEFINE_STATIC_ARRAY +(, +s5 +, "NotSupported"); + +99 +ARDUINOJSON_DEFINE_STATIC_ARRAY +(, +s6 +, "TooDeep"); + +100 +ARDUINOJSON_DEFINE_STATIC_ARRAY +( + +101 cڡ *, +mesges +, + +102 +ARDUINOJSON_EXPAND7 +({ +s0 +, +s1 +, +s2 +, +s3 +, +s4 +, +s5 +, +s6 +})); + +103  +ARDUINOJSON_READ_STATIC_ARRAY +(cڡ +__FshSgHr +*, +mesges +, + +104 +_code +); + +108 + give +: + +109 +Code + +_code +; + +112 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +113 +le + + gd +:: +oam +& +ݔ +<<( +d +::oam& +s +, + +114 cڡ + gDerliziE +& + ge +) { + +115 + gs + << + ge +. +c_r +(); + +116  + gs +; + +119 +le + + gd +:: +oam +& +ݔ +<<( +d +::oam& +s +, + gDerliziE +:: +Code + +c +) { + +120 +s + << +DerliziE +( +c +). +c_r +(); + +121  + gs +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cFr + { + +12 + gpublic +: + +13 +exic + +Fr +( +VCڡRef + +v +: +_v +(v) {} + +15 +bo + +low +() const { + +16  +_v +; + +19 +bo + +lowAay +() const { + +20  + g_v + = +ue + || +_v +. +is +< +AayRef +>(); + +23 +bo + +lowObje +() const { + +24  + g_v + = +ue + || +_v +. +is +< +ObjeRef +>(); + +27 +bo + +lowVue +() const { + +28  + g_v + = +ue +; + +31 + gme + < +tyme + + gTKey +> + +32 +Fr + + gݔ +[](cڡ + gTKey +& + gkey +) const { + +33 i( + g_v + = +ue +) + +34  * +this +; + +36  +Fr +( +_v +[ +key +] | _variant["*"]); + +39 + give +: + +40 +VCڡRef + +_v +; + +43  + sAowAFr + { + +44 +bo + +low +() const { + +45  + gue +; + +48 +bo + +lowAay +() const { + +49  + gue +; + +52 +bo + +lowObje +() const { + +53  + gue +; + +56 +bo + +lowVue +() const { + +57  + gue +; + +60 + gme + < +tyme + + gTKey +> + +61 +AowAFr + + gݔ +[](cڡ + gTKey +&) const { + +62  +AowAFr +(); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cNegLim + { + +13 + gpublic +: + +14 +NegLim +(: +_vue +( +ARDUINOJSON_DEFAULT_NESTING_LIMIT +) {} + +15 +exic + +NegLim +( +ut8_t + +n +: +_vue +(n) {} + +17 +NegLim + +deemt +() const { + +18 +ARDUINOJSON_ASSERT +( +_vue + > 0); + +19  +NegLim +( +ic_ +< +ut8_t +>( +_vue + - 1)); + +22 +bo + +ached +() const { + +23  + g_vue + == 0; + +26 + give +: + +27 +ut8_t + +_vue +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +tyme + + gTSour +,ym + gEb + = > + +15  + sRd + { + +16 +public +: + +17 +Rd +( +TSour +& +sour +: +_sour +(&source) {} + +19  +ad +() { + +20  +_sour +-> +ad +(); + +23 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +24  + g_sour +-> +adBys +( +bufr +, +ngth +); + +27 + give +: + +28 +TSour +* +_sour +; + +31 + gme + < +tyme + + gTSour +,ym + gEb + = > + +32  + sBoundedRd + { + +38  + ~ + +39  + ~ + +40  + ~ + +42 #i +ARDUINOJSON_ENABLE_ARDUINO_STREAM + + +43  + ~ + +46 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +47  + ~ + +50 #i +ARDUINOJSON_ENABLE_PROGMEM + + +51  + ~ + +54 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +55  + ~ + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTSour +> + +12  + gRd +< + gTSour +, + +13 +tyme + + gab_if +< + gis_ba_of +< + gSm +, + gTSour +>:: +vue +>:: +ty +> { + +14 +public +: + +15 +exic + +Rd +( +Sm +& +am +: +_am +(&stream) {} + +17  +ad +() { + +19  +c +; + +20  + g_am +-> +adBys +(& +c +, 1? + gic_ +<>( + gc +) : -1; + +23 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +24  + g_am +-> +adBys +( +bufr +, +ngth +); + +27 + give +: + +28 +Sm +* +_am +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + < +tyme + + gTSour +> + +10  + gRd +< + gTSour +, + +11 +tyme + + gab_if +< + gis_ba_of +< :: +Sg +, + gTSour +>:: +vue +>:: +ty +> + +12 : +BoundedRd + { + +13 +exic + +Rd +(cڡ :: +Sg +& +s +) + +14 : +BoundedRd +( +s +. +c_r +(), + gs +. +ngth +()) {} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + <> + +10  + gRd + { + +11 cڡ * + g_r +; + +13 + gpublic +: + +14 +exic + +Rd +(cڡ +__FshSgHr +* +r +) + +15 : +_r +( +t_ +( +r +)) {} + +17  +ad +() { + +18  +pgm_ad_by +( +_r +++); + +21 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +22 +memy_P +( +bufr +, +_r +, +ngth +); + +23 + g_r + + +ngth +; + +24  + gngth +; + +28 + gme + <> + +29  + gBoundedRd + { + +30 cڡ * + g_r +; + +31 cڡ * + g_d +; + +33 + gpublic +: + +34 +exic + +BoundedRd +(cڡ +__FshSgHr +* +r +, +size_t + +size +) + +35 : +_r +( +t_ +( +r +)), +_d +(_+ +size +) {} + +37  +ad +() { + +38 i( + g_r + < + g_d +) + +39  +pgm_ad_by +( +_r +++); + +44 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +45 +size_t + + gavaab + = +ic_ +( +_d + - +_r +); + +46 i( + gavaab + < + gngth +) + +47 + gngth + = +avaab +; + +48 +memy_P +( +bufr +, +_r +, +ngth +); + +49 + g_r + + +ngth +; + +50  + gngth +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + < +tyme + + gTIt +> + +10 as + cItRd + { + +11 +TIt + + g_r +, + g_d +; + +13 + gpublic +: + +14 +exic + +ItRd +( +TIt + +beg +, TIt +d +) + +15 : +_r +( +beg +), +_d +( +d +) {} + +17  +ad +() { + +18 i( + g_r + < + g_d +) + +19  + gic_ +<>(* + g_r +++); + +24 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +25 +size_t + + gi + = 0; + +26  + gi + < + gngth + && + g_r + < + g_d + + gbufr +[ +i +++] = * +_r +++; + +27  + gi +; + +31 + gme + < +tyme + + gT +> + +32  + svoid_ + { + +33  + tty +; + +36 + gme + < +tyme + + gTSour +> + +37  + gRd +< + gTSour +, +tyme + + gvoid_ +:: +ty +> + +38 : +ItRd +< +tyme + +TSour +:: +cڡ_ +> { + +39 +exic + +Rd +(cڡ +TSour +& +sour +) + +40 : +ItRd +< +tyme + +TSour +:: +cڡ_ +>( +sour +. +beg +(), + +41 + gsour +. +d +()) {} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12  + sIsChOrVoid + { + +13 cڡ +bo + + gvue + = + +14 +is_me +< +T +, >:: +vue + || is_same::value || + +15 +is_me +< +T +, >:: +vue + || is_same::value; + +18 + gme + < +tyme + + gT +> + +19  + gIsChOrVoid + : +IsChOrVoid +< +T +> {}; + +21 + gme + < +tyme + + gTSour +> + +22  + gRd +< + gTSour +*, + +23 +tyme + + gab_if +< + gIsChOrVoid +< + gTSour +>:: +vue +>:: +ty +> { + +24 cڡ * +_r +; + +26 + gpublic +: + +27 +exic + +Rd +(cڡ * +r +) + +28 : +_r +( +r + ? +t_ +(ptr) : "") {} + +30  +ad +() { + +31  +ic_ +<>(* +_r +++); + +34 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +35  +size_t + + gi + = 0; i < + gngth +; i++ + gbufr +[ +i +] = * +_r +++; + +36  + gngth +; + +40 + gme + < +tyme + + gTSour +> + +41  + gBoundedRd +< + gTSour +*, + +42 +tyme + + gab_if +< + gIsChOrVoid +< + gTSour +>:: +vue +>:: +ty +> + +43 : +public + +ItRd + { + +44 +public +: + +45 +exic + +BoundedRd +(cڡ * +r +, +size_t + +n +) + +46 : +ItRd +( +t_ +( +r +), + +47 + gt_ +( + gr ++ + gn +) {} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTSour +> + +12  + gRd +< + gTSour +, +tyme + + gab_if +< + +13 + gis_ba_of +< + gd +:: +iam +, + gTSour +>:: +vue +>:: +ty +> { + +14 +public +: + +15 +exic + +Rd +( +d +:: +iam +& +am +: +_am +(&stream) {} + +17  +ad +() { + +18  +_am +-> +g +(); + +21 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +22 + g_am +-> +ad +( +bufr +, +ic_ +< +d +:: +amsize +>( +ngth +)); + +23  + gic_ +< + gsize_t +>( + g_am +-> +gcou +()); + +26 + give +: + +27 +d +:: +iam +* +_am +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTAay +> + +13  + gRd +< + gEmtProxy +< + gTAay +>, > : +Rd +<*, > { + +14 +exic + +Rd +(cڡ +EmtProxy +< +TAay +>& +x +) + +15 : +Rd +<*, >( + gx +. +me + + gas +()) {} + +18 + gme + < +tyme + + gTObje +,ym + gTSgRef +> + +19  + gRd +< + gMembProxy +< + gTObje +, + gTSgRef +>, > : +Rd +<*, > { + +20 +exic + +Rd +(cڡ +MembProxy +< +TObje +, +TSgRef +>& +x +) + +21 : +Rd +<*, >( + gx +. +me + + gas +()) {} + +24 + gme + <> + +25  + gRd +< + gVRef +, > : +Rd +<*, > { + +26 +exic + +Rd +( +VRef + +x +: Rd<*, >( + gx +. + gas +()) {} + +29 + gme + <> + +30  + gRd +< + gVCڡRef +, > : +Rd +<*, > { + +31 +exic + +Rd +( +VCڡRef + +x +) + +32 : +Rd +<*, >( + gx +. + gas +()) {} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + +ass + + gTDerliz +, +tyme + + gTRd +, + +16 +tyme + + gTWr +> + +17 + gTDerliz +< + gTRd +, + gTWr +> +makeDerliz +( +MemyPo + & +po +, + +18 +TRd + +ad +, + +19 +TWr + +wr +) { + +20  + gTDerliz +< + gTRd +, + gTWr +>( + gpo +, + gad +, + gwr +); + +28 + gme + +ass + + gTDerliz +, +tyme + + gTSg +, + +29 +tyme + + gTFr +> + +30 +tyme + + gab_if +:: +vue +, + gDerliziE +>:: +ty + + +31 +derlize +( +JsDocumt + & +doc +, cڡ +TSg + & +put +, +NegLim + +ágLim +, + +32 +TFr + +fr +) { + +33 + gRd +< + gTSg +> +ad +( +put +); + +34 + gdoc +. +r +(); + +35  + gmakeDerliz +< + gTDerliz +>( + +36 + gdoc +. +memyPo +(), + gad +, + +37 +makeSgStage +( +put +, +doc +. +memyPo +())) + +38 . +r +( +doc +. +da +(), +fr +, +ágLim +); + +44 + gme + +ass + + gTDerliz +, +tyme + + gTCh +, + +45 +tyme + + gTFr +> + +46 +DerliziE + +derlize +( +JsDocumt + & +doc +, +TCh + * +put +, + +47 +size_t + +putSize +, +NegLim + +ágLim +, + +48 +TFr + +fr +) { + +49 + gBoundedRd +< + gTCh + *> +ad +( +put +, +putSize +); + +50 + gdoc +. +r +(); + +51  + gmakeDerliz +< + gTDerliz +>( + +52 + gdoc +. +memyPo +(), + gad +, + +53 +makeSgStage +( +put +, +doc +. +memyPo +())) + +54 . +r +( +doc +. +da +(), +fr +, +ágLim +); + +59 + gme + +ass + + gTDerliz +, +tyme + + gTSm +, + +60 +tyme + + gTFr +> + +61 +DerliziE + +derlize +( +JsDocumt + & +doc +, +TSm + & +put +, + +62 +NegLim + +ágLim +, +TFr + +fr +) { + +63 + gRd +< + gTSm +> +ad +( +put +); + +64 + gdoc +. +r +(); + +65  + gmakeDerliz +< + gTDerliz +>( + +66 + gdoc +. +memyPo +(), + gad +, + +67 +makeSgStage +( +put +, +doc +. +memyPo +())) + +68 . +r +( +doc +. +da +(), +fr +, +ágLim +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gTAot +> + +14 as + cAotOwr + { + +15 + gpublic +: + +16 +AotOwr +() {} + +17 +AotOwr +(cڡ AotOwr& +c +: +_lot +(src._allocator) {} + +18 +AotOwr +( +TAot + +a +: +_lot +(a) {} + +20 * +lo +( +size_t + +size +) { + +21  +_lot +. +lo +( +size +); + +24  +do +(* +r +) { + +25 i( + gr +) + +26 + g_lot +. +do +( +r +); + +29 * +lo +(* +r +, +size_t + +w_size +) { + +30  + g_lot +. +lo +( +r +, +w_size +); + +33 + gTAot +& +lot +() { + +34  + g_lot +; + +37 + give +: + +38 +TAot + +_lot +; + +41 + gme + < +tyme + + gTAot +> + +42 +ass + + gBasicJsDocumt + : +AotOwr +< +TAot +>, +public + + gJsDocumt + { + +43 + gpublic +: + +44 +exic + +BasicJsDocumt +( +size_t + + +, +TAot + +loc + = TAllocator()) + +45 : +AotOwr +< +TAot +>( +loc +), +JsDocumt +( +locPo +( + +)) {} + +48 +BasicJsDocumt +(cڡ BasicJsDocumt& +c +) + +49 : +AotOwr +< +TAot +>( +c +), +JsDocumt +() { + +50 +cyAssignFrom +( +c +); + +54 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +55 +BasicJsDocumt +(BasicJsDocumt&& +c +: +AotOwr +< +TAot +>(src) { + +56 +moveAssignFrom +( +c +); + +60 +BasicJsDocumt +(cڡ +JsDocumt +& +c +) { + +61 +cyAssignFrom +( +c +); + +65 + gme + < +tyme + + gT +> + +66 +BasicJsDocumt +( + +67 cڡ +T +& +c +, + +68 +tyme + +ab_if +< + +69 +is_me +< +T +, +VRef +>:: +vue + || is_me::value || + +70 +is_me +< +T +, +AayRef +>:: +vue + || is_me::value || + +71 +is_me +< +T +, +ObjeRef +>:: +vue + || + +72 +is_me +< +T +, +ObjeCڡRef +>:: +vue +>:: +ty +* = 0) + +73 : +JsDocumt +( +locPo +( +c +. +memyUge +())) { + +74 +t +( +c +); + +78 +BasicJsDocumt +( +VRef + +c +) + +79 : +JsDocumt +( +locPo +( +c +. +memyUge +())) { + +80 +t +( +c +); + +83 ~ +BasicJsDocumt +() { + +84 +Po +(); + +87 + gBasicJsDocumt +& + gݔ +=(cڡ +BasicJsDocumt +& +c +) { + +88 +cyAssignFrom +( +c +); + +89  * + gthis +; + +92 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +93 + gBasicJsDocumt +& + gݔ +=( +BasicJsDocumt +&& +c +) { + +94 +moveAssignFrom +( +c +); + +95  * + gthis +; + +99 + gme + < +tyme + + gT +> + +100 + gBasicJsDocumt +& + gݔ +=(cڡ +T +& +c +) { + +101 +locPoIfTooSml +( +c +. +memyUge +()); + +102 +t +( +c +); + +103  * + gthis +; + +106  +shrkToF +() { + +107 +rdiff_t + + gbys_aimed + = +_po +. +squash +(); + +108 i( + gbys_aimed + == 0) + +111 * + gd_r + = +_po +. +bufr +(); + +112 * + gw_r + = +this +-> +lo +( +d_r +, +_po +. +cy +()); + +114 +rdiff_t + + gr_offt + = + +115 +ic_ +<*>( +w_r +- stic_<*>( +d_r +); + +117 + g_po +. +movePors +( +r_offt +); + +118 + g_da +. +movePors +( +r_offt +,_off- +bys_aimed +); + +121 +bo + +gbageC +() { + +123 +BasicJsDocumt + +tmp +(* +this +); + +124 i(! + gtmp +. +cy +()) + +125  + gl +; + +126 + gtmp +. +t +(* +this +); + +127 +moveAssignFrom +( +tmp +); + +128  + gue +; + +131 +usg + + gAotOwr +< + gTAot +>:: +lot +; + +133 + give +: + +134 +MemyPo + +locPo +( +size_t + +quedSize +) { + +135 +size_t + + + = +addPaddg +( +quedSize +); + +136  +MemyPo +( +t_ +<*>( +this +-> +lo +( + +)), capa); + +139  +locPoIfTooSml +( +size_t + +quedSize +) { + +140 i( + gquedSize + < +cy +()) + +142 +Po +(); + +143 +aPo +( +locPo +( +addPaddg +( +quedSize +))); + +146  +Po +() { + +147 + gthis +-> +do +( +memyPo +(). +bufr +()); + +150  +cyAssignFrom +(cڡ +JsDocumt +& +c +) { + +151 +locPoIfTooSml +( +c +. +cy +()); + +152 +t +( +c +); + +155  +moveAssignFrom +( +BasicJsDocumt +& +c +) { + +156 +Po +(); + +157 + g_da + = +c +. +_da +; + +158 + g_po + = +c +. +_po +; + +159 + gc +. + g_da +. +tNu +(); + +160 + gc +. + g_po + = +MemyPo +(0, 0); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13  + sDeuAot + { + +14 * +lo +( +size_t + +size +) { + +15  +mloc +( +size +); + +18  +do +(* +r +) { + +19 + +( +r +); + +22 * +lo +(* +r +, +size_t + +w_size +) { + +23  +loc +( +r +, +w_size +); + +27  + gBasicJsDocumt +< + tDeuAot +> + tDymicJsDocumt +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 as + cJsDocumt + : +public + +Visab + { + +17 +public +: + +18 +me + < +tyme + +TVis +> + +19 +tyme + +TVis +:: +su_ty + +ac +(TVis& +vis +) const { + +20  +gV +(). +ac +( +vis +); + +23 + gme + < +tyme + + gT +> + +24 +tyme + + gVAs +< + gT +>:: +ty + +as +() { + +25  +gV +(). +me + +as +< +T +>(); + +28 + gme + < +tyme + + gT +> + +29 +tyme + + gVCڡAs +< + gT +>:: +ty + +as +() const { + +30  +gV +(). +me + +as +< +T +>(); + +33  +r +() { + +34 + g_po +. +r +(); + +35 + g_da +. +tNu +(); + +38 + gme + < +tyme + + gT +> + +39 +bo + +is +() const { + +40  +gV +(). +me + + gis +< + gT +>(); + +43 +bo + +isNu +() const { + +44  +gV +(). +isNu +(); + +47 +size_t + +memyUge +() const { + +48  + g_po +. +size +(); + +51 +bo + +ovowed +() const { + +52  + g_po +. +ovowed +(); + +55 +size_t + +ág +() const { + +56  + g_da +. +ág +(); + +59 +size_t + +cy +() const { + +60  + g_po +. +cy +(); + +63 +size_t + +size +() const { + +64  + g_da +. +size +(); + +67 +bo + +t +(cڡ +JsDocumt +& +c +) { + +68  + gto +< + gVRef +>(). +t +( +c +. +as +< +VRef +>()); + +71 + gme + < +tyme + + gT +> + +72 +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +t +( + +73 cڡ +T +& +c +) { + +74  +to +< +VRef +>(). +t +( +c +); + +77 + gme + < +tyme + + gT +> + +78 +tyme + + gVTo +< + gT +>:: +ty + +to +() { + +79 +r +(); + +80  +gV +(). +me + + gto +< + gT +>(); + +84 + gMemyPo +& +memyPo +() { + +85  + g_po +; + +89 + gVDa +& +da +() { + +90  + g_da +; + +93 +AayRef + +NeedAay +() { + +94  +addEmt +(). + gto +< + gAayRef +>(); + +100 + gme + < +tyme + + gTCh +> + +101 +AayRef + +NeedAay +( +TCh +* +key +) { + +102  +gOrAddMemb +( +key +). +me + + gto +< + gAayRef +>(); + +107 + gme + < +tyme + + gTSg +> + +108 +AayRef + +NeedAay +(cڡ +TSg +& +key +) { + +109  +gOrAddMemb +( +key +). +me + + gto +< + gAayRef +>(); + +112 +ObjeRef + +NeedObje +() { + +113  +addEmt +(). + gto +< + gObjeRef +>(); + +119 + gme + < +tyme + + gTCh +> + +120 +ObjeRef + +NeedObje +( +TCh +* +key +) { + +121  +gOrAddMemb +( +key +). +me + + gto +< + gObjeRef +>(); + +126 + gme + < +tyme + + gTSg +> + +127 +ObjeRef + +NeedObje +(cڡ +TSg +& +key +) { + +128  +gOrAddMemb +( +key +). +me + + gto +< + gObjeRef +>(); + +134 + gme + < +tyme + + gTCh +> + +135 +bo + +cڏsKey +( +TCh +* +key +) const { + +136  ! +gMemb +( +key +). +isUndefed +(); + +141 + gme + < +tyme + + gTSg +> + +142 +bo + +cڏsKey +(cڡ +TSg +& +key +) const { + +143  ! +gMemb +( +key +). +isUndefed +(); + +148 + gme + < +tyme + + gTSg +> + +149 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + +150 + gMembProxy +< + gJsDocumt +&, + gTSg +> >:: +ty + + +151 +ݔ +[](cڡ +TSg +& +key +) { + +152  +MembProxy +< +JsDocumt +&, + gTSg +>(* + gthis +, + gkey +); + +158 + gme + < +tyme + + gTCh +> + +159 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + +160 + gMembProxy +< + gJsDocumt +&, + gTCh +*> >:: +ty + + +161 +ݔ +[]( +TCh +* +key +) { + +162  +MembProxy +< +JsDocumt +&, + gTCh +*>(* + gthis +, + gkey +); + +167 + gme + < +tyme + + gTSg +> + +168 +FORCE_INLINE + + +169 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +170 +ݔ +[](cڡ +TSg +& +key +) const { + +171  +gMemb +( +key +); + +177 + gme + < +tyme + + gTCh +> + +178 +FORCE_INLINE + + +179 +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + gVCڡRef +>:: +ty + + +180 +ݔ +[]( +TCh +* +key +) const { + +181  +gMemb +( +key +); + +184 +FORCE_INLINE + + gEmtProxy +< + gJsDocumt +&> + gݔ +[]( +size_t + + gdex +) { + +185  + gEmtProxy +< + gJsDocumt +&>(* + gthis +, + gdex +); + +188 +FORCE_INLINE + +VCڡRef + + gݔ +[]( +size_t + + gdex +) const { + +189  +gEmt +( +dex +); + +192 +FORCE_INLINE + +VRef + +gEmt +( +size_t + +dex +) { + +193  +VRef +(& +_po +, +_da +. +gEmt +( +dex +)); + +196 +FORCE_INLINE + +VCڡRef + +gEmt +( +size_t + +dex +) const { + +197  +VCڡRef +( +_da +. +gEmt +( +dex +)); + +200 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t + +dex +) { + +201  +VRef +(& +_po +, +_da +. +gOrAddEmt +( +dex +, &_pool)); + +207 + gme + < +tyme + + gTCh +> + +208 +FORCE_INLINE + +VCڡRef + +gMemb +( +TCh +* +key +) const { + +209  +VCڡRef +( +_da +. +gMemb +( +adtSg +( +key +))); + +214 + gme + < +tyme + + gTSg +> + +215 +FORCE_INLINE + + +216 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +217 +gMemb +(cڡ +TSg +& +key +) const { + +218  +VCڡRef +( +_da +. +gMemb +( +adtSg +( +key +))); + +224 + gme + < +tyme + + gTCh +> + +225 +FORCE_INLINE + +VRef + +gMemb +( +TCh +* +key +) { + +226  +VRef +(& +_po +, +_da +. +gMemb +( +adtSg +( +key +))); + +231 + gme + < +tyme + + gTSg +> + +232 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVRef +>:: +ty + + +233 +gMemb +(cڡ +TSg +& +key +) { + +234  +VRef +(& +_po +, +_da +. +gMemb +( +adtSg +( +key +))); + +240 + gme + < +tyme + + gTCh +> + +241 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh +* +key +) { + +242  +VRef +(& +_po +, +_da +. +gOrAddMemb +( +adtSg +( +key +), &_pool)); + +247 + gme + < +tyme + + gTSg +> + +248 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg +& +key +) { + +249  +VRef +(& +_po +, +_da +. +gOrAddMemb +( +adtSg +( +key +), &_pool)); + +252 +FORCE_INLINE + +VRef + +addEmt +() { + +253  +VRef +(& +_po +, +_da +. +addEmt +(&_pool)); + +256 + gme + < +tyme + + gTVue +> + +257 +FORCE_INLINE + +bo + +add +(cڡ +TVue +& +vue +) { + +258  +addEmt +(). +t +( +vue +); + +264 + gme + < +tyme + + gTCh +> + +265 +FORCE_INLINE + +bo + +add +( +TCh +* +vue +) { + +266  +addEmt +(). +t +( +vue +); + +269 +FORCE_INLINE +  +move +( +size_t + +dex +) { + +270 + g_da +. +move +( +dex +); + +275 + gme + < +tyme + + gTCh +> + +276 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +>:: +ty + +move +( + +277 +TCh +* +key +) { + +278 +_da +. +move +( +adtSg +( +key +)); + +282 + gme + < +tyme + + gTSg +> + +283 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +284 cڡ +TSg +& +key +) { + +285 +_da +. +move +( +adtSg +( +key +)); + +288 +FORCE_INLINE + +ݔ + +VCڡRef +() const { + +289  +VCڡRef +(& +_da +); + +292 +bo + + gݔ +==( +VCڡRef + +rhs +) const { + +293  +gV +(= +rhs +; + +296 +bo + + gݔ +!=( +VCڡRef + +rhs +) const { + +297  +gV +(! +rhs +; + +300 + geed +: + +301 +JsDocumt +(: +_po +(0, 0) { + +302 + g_da +. +tNu +(); + +305 +JsDocumt +( +MemyPo + +po +: +_po +(pool) { + +306 +_da +. +tNu +(); + +309 +JsDocumt +(* +buf +, +size_t + + +: +_po +(buf, capa) { + +310 + g_da +. +tNu +(); + +313  +aPo +( +MemyPo + +po +) { + +314 + g_po + = +po +; + +317 +VRef + +gV +() { + +318  +VRef +(& +_po +, & +_da +); + +321 +VCڡRef + +gV +() const { + +322  +VCڡRef +(& +_da +); + +325 +MemyPo + + g_po +; + +326 +VDa + + g_da +; + +328 + give +: + +329 +JsDocumt +(const JsonDocument&); + +330 + gJsDocumt +& + gݔ +=(cڡ +JsDocumt +&); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +size_t + + gdesedCacy +> + +12 as + cSticJsDocumt + : +public + +JsDocumt + { + +13 cڡ +size_t + +_cy + = + +14 +AddPaddg +< +Max +<1, + gdesedCacy +>:: +vue +>::value; + +16 + gpublic +: + +17 +SticJsDocumt +(: +JsDocumt +( +_bufr +, +_cy +) {} + +19 +SticJsDocumt +(cڡ SticJsDocumt& +c +) + +20 : +JsDocumt +( +_bufr +, +_cy +) { + +21 +t +( +c +); + +24 + gme + < +tyme + + gT +> + +25 +SticJsDocumt +(cڡ +T +& +c +, + +26 +tyme + +ab_if +< +IsVisab +< +T +>:: +vue +>:: +ty +* = 0) + +27 : +JsDocumt +( +_bufr +, +_cy +) { + +28 +t +( +c +); + +32 +SticJsDocumt +( +VRef + +c +: +JsDocumt +( +_bufr +, +_cy +) { + +33 +t +( +c +); + +36 +SticJsDocumt + + gݔ +=(cڡ SticJsDocumt& +c +) { + +37 +t +( +c +); + +38  * + gthis +; + +41 + gme + < +tyme + + gT +> + +42 +SticJsDocumt + + gݔ +=(cڡ +T +& +c +) { + +43 +t +( +c +); + +44  * + gthis +; + +47  +gbageC +() { + +48 +SticJsDocumt + +tmp +(* +this +); + +49 +t +( +tmp +); + +52 + give +: + +53  +_bufr +[ +_cy +]; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cEsSequ + { + +12 + gpublic +: + +14  +esCh +( +c +) { + +15 cڡ * +p + = +esTab +( +ue +); + +16  + gp +[0] &&[1] ! +c +) { + +17 +p + += 2; + +19  + gp +[0]; + +23  +usCh +( +c +) { + +24 cڡ * + gp + = +esTab +( +l +); + +26 i( + gp +[0] == '\0') + +28 i( + gp +[0] = +c +) + +29  +p +[1]; + +30 + gp + += 2; + +34 + give +: + +35 cڡ * +esTab +( +bo + +exudeSidus +) { + +36  &"//\"\"\\\\b\bf\\\\t"[ +exudeSidus + ? 2 : 0]; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +18 +mea + + gARDUINOJSON_NAMESPACE + { + +20 + gme + < +tyme + + gTRd +,ym + gTSgStage +> + +21 as + cJsDerliz + { + +22 + gpublic +: + +23 +JsDerliz +( +MemyPo + & +po +, +TRd + +ad +, + +24 +TSgStage + +rgStage +) + +25 : +_rgStage +( +rgStage +), + +26 +_foundSomhg +( +l +), + +27 +_tch +( +ad +), + +28 +_po +(& +po +), + +29 +_r +( +DerliziE +:: +Ok +) {} + +31 +me + < +tyme + +TFr +> + +32 +DerliziE + +r +( +VDa + & +v +, +TFr + +fr +, + +33 +NegLim + +ágLim +) { + +34 +rV +( +v +, +fr +, +ágLim +); + +36 i(! + g_r + && + g_tch +. +ϡ +(!0 && ! +v +. +isEnod +()) { + +38  +DerliziE +:: +InvidIut +; + +41  + g_r +; + +44 + give +: + +45 +JsDerliz + & +ݔ +=(const JsonDeserializer &); + +47  +cut +() { + +48  + g_tch +. +cut +(); + +51  +move +() { + +52 + g_tch +. +r +(); + +55 +bo + +t +( +chToSk +) { + +56 i( +cut +(! +chToSk +) + +57  +l +; + +58 +move +(); + +59  + gue +; + +62 + gme + < +tyme + + gTFr +> + +63 +bo + +rV +( +VDa + & +v +, +TFr + +fr +, + +64 +NegLim + +ágLim +) { + +65 i(! +skSsAndCommts +()) + +66  + gl +; + +68  +cut +()) { + +70 i( +fr +. +lowAay +()) + +71  +rAay +( +v +. +toAay +(), +fr +, +ágLim +); + +73  +skAay +( +ágLim +); + +76 i( +fr +. +lowObje +()) + +77  +rObje +( +v +. +toObje +(), +fr +, +ágLim +); + +79  +skObje +( +ágLim +); + +83 i( +fr +. +lowVue +()) + +84  +rSgVue +( +v +); + +86  +skSg +(); + +89 i( +fr +. +lowVue +()) + +90  +rNumicVue +( +v +); + +92  +skNumicVue +(); + +96 +bo + +skV +( +NegLim + +ágLim +) { + +97 i(! +skSsAndCommts +()) + +98  + gl +; + +100  +cut +()) { + +102  +skAay +( +ágLim +); + +105  +skObje +( +ágLim +); + +109  +skSg +(); + +112  +skNumicVue +(); + +116 + gme + < +tyme + + gTFr +> + +117 +bo + +rAay +( +CiDa + & +y +, +TFr + +fr +, + +118 +NegLim + +ágLim +) { + +119 i( + gágLim +. +ached +()) { + +120 + g_r + = +DerliziE +:: +TooDp +; + +121  + gl +; + +125 +ARDUINOJSON_ASSERT +( +cut +() == '['); + +126 +move +(); + +129 i(! +skSsAndCommts +()) + +130  + gl +; + +133 i( +t +(']')) + +134  + gue +; + +136 +TFr + + gmembFr + = +fr +[0UL]; + +140 i( + gmembFr +. +low +()) { + +142 +VDa + * + gvue + = +y +. +addEmt +( +_po +); + +143 i(! + gvue +) { + +144 + g_r + = +DerliziE +:: +NoMemy +; + +145  + gl +; + +149 i(! +rV +(* +vue +, +membFr +, +ágLim +. +deemt +())) + +150  + gl +; + +152 i(! +skV +( +ágLim +. +deemt +())) + +153  + gl +; + +157 i(! +skSsAndCommts +()) + +158  + gl +; + +161 i( +t +(']')) + +162  + gue +; + +163 i(! +t +(',')) { + +164 + g_r + = +DerliziE +:: +InvidIut +; + +165  + gl +; + +170 +bo + +skAay +( +NegLim + +ágLim +) { + +171 i( + gágLim +. +ached +()) { + +172 + g_r + = +DerliziE +:: +TooDp +; + +173  + gl +; + +177 +ARDUINOJSON_ASSERT +( +cut +() == '['); + +178 +move +(); + +183 i(! +skV +( +ágLim +. +deemt +())) + +184  + gl +; + +187 i(! +skSsAndCommts +()) + +188  + gl +; + +191 i( +t +(']')) + +192  + gue +; + +193 i(! +t +(',')) { + +194 + g_r + = +DerliziE +:: +InvidIut +; + +195  + gl +; + +200 + gme + < +tyme + + gTFr +> + +201 +bo + +rObje +( +CiDa + & +obje +, +TFr + +fr +, + +202 +NegLim + +ágLim +) { + +203 i( + gágLim +. +ached +()) { + +204 + g_r + = +DerliziE +:: +TooDp +; + +205  + gl +; + +209 +ARDUINOJSON_ASSERT +( +cut +() == '{'); + +210 +move +(); + +213 i(! +skSsAndCommts +()) + +214  + gl +; + +217 i( +t +('}')) + +218  + gue +; + +223 i(! +rKey +()) + +224  + gl +; + +227 i(! +skSsAndCommts +()) + +228  + gl +; + +231 i(! +t +(':')) { + +232 + g_r + = +DerliziE +:: +InvidIut +; + +233  + gl +; + +236 cڡ * + gkey + = +_rgStage +. +c_r +(); + +238 +TFr + + gmembFr + = +fr +[ +key +]; + +240 i( + gmembFr +. +low +()) { + +241 +VDa + * + gv + = +obje +. +gMemb +( +adtSg +( +key +)); + +242 i(! + gv +) { + +245 + gkey + = +_rgStage +. +ve +(); + +248 +VSl + * + g + = +obje +. +addSl +( +_po +); + +249 i(! + g +) { + +250 + g_r + = +DerliziE +:: +NoMemy +; + +251  + gl +; + +254 + g +-> +tKey +( +key +, +tyme + +TSgStage +:: +age_picy +()); + +256 + gv + = + +-> +da +(); + +260 i(! +rV +(* +v +, +membFr +, +ágLim +. +deemt +())) + +261  + gl +; + +263 i(! +skV +( +ágLim +. +deemt +())) + +264  + gl +; + +268 i(! +skSsAndCommts +()) + +269  + gl +; + +272 i( +t +('}')) + +273  + gue +; + +274 i(! +t +(',')) { + +275 + g_r + = +DerliziE +:: +InvidIut +; + +276  + gl +; + +280 i(! +skSsAndCommts +()) + +281  + gl +; + +285 +bo + +skObje +( +NegLim + +ágLim +) { + +286 i( + gágLim +. +ached +()) { + +287 + g_r + = +DerliziE +:: +TooDp +; + +288  + gl +; + +292 +ARDUINOJSON_ASSERT +( +cut +() == '{'); + +293 +move +(); + +296 i(! +skSsAndCommts +()) + +297  + gl +; + +300 i( +t +('}')) + +301  + gue +; + +306 i(! +skV +( +ágLim +. +deemt +())) + +307  + gl +; + +310 i(! +skSsAndCommts +()) + +311  + gl +; + +314 i(! +t +(':')) { + +315 + g_r + = +DerliziE +:: +InvidIut +; + +316  + gl +; + +320 i(! +skV +( +ágLim +. +deemt +())) + +321  + gl +; + +324 i(! +skSsAndCommts +()) + +325  + gl +; + +328 i( +t +('}')) + +329  + gue +; + +330 i(! +t +(',')) { + +331 + g_r + = +DerliziE +:: +InvidIut +; + +332  + gl +; + +337 +bo + +rKey +() { + +338 + g_rgStage +. +tSg +(); + +339 i( +isQue +( +cut +())) { + +340  +rQuedSg +(); + +342  +rNQuedSg +(); + +346 +bo + +rSgVue +( +VDa + & +v +) { + +347 + g_rgStage +. +tSg +(); + +348 i(! +rQuedSg +()) + +349  + gl +; + +350 cڡ * + gvue + = +_rgStage +. +ve +(); + +351 + gv +. +tSgPor +( +vue +, +tyme + +TSgStage +:: +age_picy +()); + +352  + gue +; + +355 +bo + +rQuedSg +() { + +356 #i +ARDUINOJSON_DECODE_UNICODE + + +357 + gUtf16 +:: +Codot + +codot +; + +359 cڡ  + gCh + = +cut +(); + +361 +move +(); + +363  + gc + = +cut +(); + +364 +move +(); + +365 i( + gc + = +Ch +) + +368 i( + gc + == '\0') { + +369 +_r + = +DerliziE +:: +IncomeIut +; + +370  + gl +; + +373 i( + gc + == '\\') { + +374 +c + = +cut +(); + +376 i( + gc + == '\0') { + +377 +_r + = +DerliziE +:: +IncomeIut +; + +378  + gl +; + +381 i( + gc + == 'u') { + +382 #i +ARDUINOJSON_DECODE_UNICODE + + +383 +move +(); + +384 +ut16_t + + gcodeun +; + +385 i(! +rHex4 +( +codeun +)) + +386  + gl +; + +387 i( + gcodot +. +nd +( +codeun +)) + +388 + gUtf8 +:: +codeCodot +( +codot +. +vue +(), +_rgStage +); + +391 + g_r + = +DerliziE +:: +NSu܋d +; + +392  + gl +; + +397 + gc + = +EsSequ +:: +usCh +( +c +); + +398 i( + gc + == '\0') { + +399 +_r + = +DerliziE +:: +InvidIut +; + +400  + gl +; + +402 +move +(); + +405 + g_rgStage +. +nd +( +c +); + +408 + g_rgStage +. +nd +('\0'); + +410 i(! + g_rgStage +. +isVid +()) { + +411 + g_r + = +DerliziE +:: +NoMemy +; + +412  + gl +; + +415  + gue +; + +418 +bo + +rNQuedSg +() { + +419  + gc + = +cut +(); + +420 +ARDUINOJSON_ASSERT +( +c +); + +422 i( +nBeInNQuedSg +( +c +)) { + +424 +move +(); + +425 + g_rgStage +. +nd +( +c +); + +426 + gc + = +cut +(); + +427 }  +nBeInNQuedSg +( +c +)); + +429 + g_r + = +DerliziE +:: +InvidIut +; + +430  + gl +; + +433 + g_rgStage +. +nd +('\0'); + +435 i(! + g_rgStage +. +isVid +()) { + +436 + g_r + = +DerliziE +:: +NoMemy +; + +437  + gl +; + +440  + gue +; + +443 +bo + +skSg +() { + +444 cڡ  + gCh + = +cut +(); + +446 +move +(); + +448  + gc + = +cut +(); + +449 +move +(); + +450 i( + gc + = +Ch +) + +452 i( + gc + == '\0') { + +453 +_r + = +DerliziE +:: +IncomeIut +; + +454  + gl +; + +456 i( + gc + == '\\') { + +457 i( +cut +() != '\0') + +458 +move +(); + +462  + gue +; + +465 +bo + +rNumicVue +( +VDa + & +su +) { + +466 +ut8_t + + gn + = 0; + +468  + gc + = +cut +(); + +469  +nBeInNQuedSg +( +c +&& + gn + < 63) { + +470 +move +(); + +471 + g_bufr +[ +n +++] = +c +; + +472 + gc + = +cut +(); + +474 + g_bufr +[ +n +] = 0; + +476 + gc + = +_bufr +[0]; + +477 i( + gc + == 't') { + +478 +su +. +tBoޗn +( +ue +); + +479 i( + gn + != 4) { + +480 +_r + = +DerliziE +:: +IncomeIut +; + +481  + gl +; + +483  + gue +; + +485 i( + gc + == 'f') { + +486 +su +. +tBoޗn +( +l +); + +487 i( + gn + != 5) { + +488 +_r + = +DerliziE +:: +IncomeIut +; + +489  + gl +; + +491  + gue +; + +493 i( + gc + == 'n') { + +495 i( +n + != 4) { + +496 +_r + = +DerliziE +:: +IncomeIut +; + +497  + gl +; + +499  + gue +; + +502 i(! +rNumb +( +_bufr +, +su +)) { + +503 + g_r + = +DerliziE +:: +InvidIut +; + +504  + gl +; + +507  + gue +; + +510 +bo + +skNumicVue +() { + +511  + gc + = +cut +(); + +512  +nBeInNQuedSg +( +c +)) { + +513 +move +(); + +514 + gc + = +cut +(); + +516  + gue +; + +519 +bo + +rHex4 +( +ut16_t + & +su +) { + +520 + gsu + = 0; + +521  +ut8_t + + gi + = 0; i < 4; ++i) { + +522  + gdig + = +cut +(); + +523 i(! + gdig +) { + +524 + g_r + = +DerliziE +:: +IncomeIut +; + +525  + gl +; + +527 +ut8_t + + gvue + = +decodeHex +( +dig +); + +528 i( + gvue + > 0x0F) { + +529 + g_r + = +DerliziE +:: +InvidIut +; + +530  + gl +; + +532 + gsu + = +ut16_t +(( +su + << 4| +vue +); + +533 +move +(); + +535  + gue +; + +538  +le + +bo + +isBwn +( +c +,  +m +,  +max +) { + +539  + gm + < +c + && c < +max +; + +542  +le + +bo + +nBeInNQuedSg +( +c +) { + +543  +isBwn +( +c +, '0', '9') || isBetween(c, '_', 'z') || + +544 +isBwn +( +c +, 'A', 'Z'|| + gc + == '+' || c == '-' || c == '.'; + +547  +le + +bo + +isQue +( +c +) { + +548  + gc + ='\'' || +c + == '\"'; + +551  +le + +ut8_t + +decodeHex +( +c +) { + +552 i( + gc + < 'A') + +553  +ut8_t +( +c + - '0'); + +554 + gc + = ( +c + & ~0x20); + +555  +ut8_t +( +c + - 'A' + 10); + +558 +bo + +skSsAndCommts +() { + +560  +cut +()) { + +563 +_r + = +_foundSomhg + ? +DerliziE +:: +IncomeIut + + +564 : +DerliziE +:: +EmyIut +; + +565  + gl +; + +572 +move +(); + +575 #i +ARDUINOJSON_ENABLE_COMMENTS + + +578 +move +(); + +579  +cut +()) { + +582 +move +(); + +583 +bo + + gwasSr + = +l +; + +585  + gc + = +cut +(); + +586 i( + gc + == '\0') { + +587 +_r + = +DerliziE +:: +IncomeIut +; + +588  + gl +; + +590 i( + gc + ='/' && +wasSr +) { + +591 +move +(); + +594 + gwasSr + = +c + == '*'; + +595 +move +(); + +604 +move +(); + +605  + gc + = +cut +(); + +606 i( + gc + == '\0') { + +607 +_r + = +DerliziE +:: +IncomeIut +; + +608  + gl +; + +610 i( + gc + == '\n') + +617 +_r + = +DerliziE +:: +InvidIut +; + +618  + gl +; + +624 +_foundSomhg + = +ue +; + +625  + gue +; + +630 +TSgStage + + g_rgStage +; + +631 +bo + + g_foundSomhg +; + +632 + gLch +< + gTRd +> + g_tch +; + +633 +MemyPo + * + g_po +; + +634  + g_bufr +[64]; + +637 +DerliziE + + g_r +; + +644 + gme + < +tyme + + gTSg +> + +645 +DerliziE + +derlizeJs +( + +646 +JsDocumt + & +doc +, cڡ +TSg + & +put +, + +647 +NegLim + +ágLim + = + $NegLim +()) { + +648  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, + +649 + `AowAFr +()); + +650 + } +} + +652 + gme + < +tyme + + gTSg +> + +653 +DerliziE + +derlizeJs +( + +654 +JsDocumt + & +doc +, cڡ +TSg + & +put +, +Fr + +fr +, + +655 +NegLim + +ágLim + = + $NegLim +()) { + +656  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +657 + } +} + +659 + gme + < +tyme + + gTSg +> + +660 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, cڡ +TSg + & +put +, + +661 +NegLim + +ágLim +, +Fr + +fr +) { + +662  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +663 + } +} + +669 + gme + < +tyme + + gTSm +> + +670 +DerliziE + +derlizeJs +( + +671 +JsDocumt + & +doc +, +TSm + & +put +, + +672 +NegLim + +ágLim + = + $NegLim +()) { + +673  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, + +674 + `AowAFr +()); + +675 + } +} + +677 + gme + < +tyme + + gTSm +> + +678 +DerliziE + +derlizeJs +( + +679 +JsDocumt + & +doc +, +TSm + & +put +, +Fr + +fr +, + +680 +NegLim + +ágLim + = + $NegLim +()) { + +681  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +682 + } +} + +684 + gme + < +tyme + + gTSm +> + +685 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, +TSm + & +put +, + +686 +NegLim + +ágLim +, +Fr + +fr +) { + +687  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +688 + } +} + +694 + gme + < +tyme + + gTCh +> + +695 +DerliziE + +derlizeJs +( + +696 +JsDocumt + & +doc +, +TCh + * +put +, + +697 +NegLim + +ágLim + = + $NegLim +()) { + +698  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, + +699 + `AowAFr +()); + +700 + } +} + +702 + gme + < +tyme + + gTCh +> + +703 +DerliziE + +derlizeJs +( + +704 +JsDocumt + & +doc +, +TCh + * +put +, +Fr + +fr +, + +705 +NegLim + +ágLim + = + $NegLim +()) { + +706  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +707 + } +} + +709 + gme + < +tyme + + gTCh +> + +710 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, +TCh + * +put +, + +711 +NegLim + +ágLim +, +Fr + +fr +) { + +712  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +713 + } +} + +719 + gme + < +tyme + + gTCh +> + +720 +DerliziE + +derlizeJs +( + +721 +JsDocumt + & +doc +, +TCh + * +put +, +size_t + +putSize +, + +722 +NegLim + +ágLim + = + $NegLim +()) { + +723  +derlize +< +JsDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +724 + `AowAFr +()); + +725 + } +} + +727 + gme + < +tyme + + gTCh +> + +728 +DerliziE + +derlizeJs +( + +729 +JsDocumt + & +doc +, +TCh + * +put +, +size_t + +putSize +, +Fr + +fr +, + +730 +NegLim + +ágLim + = + $NegLim +()) { + +731  +derlize +< +JsDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +732 +fr +); + +733 + } +} + +735 + gme + < +tyme + + gTCh +> + +736 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, +TCh + * +put +, + +737 +size_t + +putSize +, + +738 +NegLim + +ágLim +, +Fr + +fr +) { + +739  +derlize +< +JsDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +740 +fr +); + +741 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +tyme + + gTWr +> + +15 +ass + + gJsSliz + : +public + +Vis +< +size_t +> { + +16 +public +: + +17 +JsSliz +( +TWr + +wr +: +_fmr +(writer) {} + +19 +FORCE_INLINE + +size_t + +visAay +(cڡ +CiDa + & +y +) { + +20 +wre +('['); + +22 +VSl + * + g + = +y +. +hd +(); + +24  + g + != 0) { + +25 + +-> +da +()-> +ac +(* +this +); + +27 + g + = + +-> +xt +(); + +28 i( + g + == 0) + +31 +wre +(','); + +34 +wre +(']'); + +35  +bysWrn +(); + +38 +size_t + +visObje +(cڡ +CiDa + & +obje +) { + +39 +wre +('{'); + +41 +VSl + * + g + = +obje +. +hd +(); + +43  + g + != 0) { + +44 +_fmr +. +wreSg +( + +-> +key +()); + +45 +wre +(':'); + +46 + g +-> +da +()-> +ac +(* +this +); + +48 + g + = + +-> +xt +(); + +49 i( + g + == 0) + +52 +wre +(','); + +55 +wre +('}'); + +56  +bysWrn +(); + +59 +size_t + +visFlt +( +Flt + +vue +) { + +60 + g_fmr +. +wreFlt +( +vue +); + +61  +bysWrn +(); + +64 +size_t + +visSg +(cڡ * +vue +) { + +65 + g_fmr +. +wreSg +( +vue +); + +66  +bysWrn +(); + +69 +size_t + +visRawJs +(cڡ * +da +, size_ +n +) { + +70 + g_fmr +. +wreRaw +( +da +, +n +); + +71  +bysWrn +(); + +74 +size_t + +visNegiveIeg +( +UI + +vue +) { + +75 + g_fmr +. +wreNegiveIeg +( +vue +); + +76  +bysWrn +(); + +79 +size_t + +visPosiveIeg +( +UI + +vue +) { + +80 + g_fmr +. +wrePosiveIeg +( +vue +); + +81  +bysWrn +(); + +84 +size_t + +visBoޗn +( +bo + +vue +) { + +85 + g_fmr +. +wreBoޗn +( +vue +); + +86  +bysWrn +(); + +89 +size_t + +visNu +() { + +90 + g_fmr +. +wreRaw +("null"); + +91  +bysWrn +(); + +94 + geed +: + +95 +size_t + +bysWrn +() const { + +96  +_fmr +. +bysWrn +(); + +99  +wre +( +c +) { + +100 + g_fmr +. +wreRaw +( +c +); + +103  +wre +(cڡ * +s +) { + +104 + g_fmr +. +wreRaw +( +s +); + +107 + give +: + +108 +TextFmr +< +TWr +> +_fmr +; + +111 + gme + < +tyme + + gTSour +,ym + gTDei +> + +112 +size_t + +rlizeJs +(cڡ +TSour + & +sour +, +TDei + & +dei +) { + +113  + grlize +< + gJsSliz +>( + gsour +, + gdei +); + +116 + gme + < +tyme + + gTSour +> + +117 +size_t + +rlizeJs +(cڡ +TSour + & +sour +, * +bufr +, size_ +bufrSize +) { + +118  + grlize +< + gJsSliz +>( + gsour +, + gbufr +, + gbufrSize +); + +121 + gme + < +tyme + + gTSour +> + +122 +size_t + +msuJs +(cڡ +TSour + & +sour +) { + +123  + gmsu +< + gJsSliz +>( + gsour +); + +126 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +127 + gme + < +tyme + + gT +> + +128 +le + +tyme + + gab_if +< + gIsVisab +< + gT +>:: +vue +, + gd +:: +oam + &>:: +ty + + +129 +ݔ +<<( +d +:: +oam + & +os +, cڡ + gT + & + gsour +) { + +130 +rlizeJs +( +sour +, +os +); + +131  + gos +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTRd +> + +12 as + cLch + { + +13 + gpublic +: + +14 +Lch +( +TRd + +ad +: +_ad +ԗd), +_lded +( +l +) { + +15 #i +ARDUINOJSON_DEBUG + + +16 + g_ded + = +l +; + +20  +r +() { + +21 + g_lded + = +l +; + +24  +ϡ +() const { + +25  + g_cut +; + +28 +FORCE_INLINE +  +cut +() { + +29 i(! + g_lded +) { + +30 +ld +(); + +32  + g_cut +; + +35 + give +: + +36  +ld +() { + +37 +ARDUINOJSON_ASSERT +(! +_ded +); + +38  + gc + = +_ad +. +ad +(); + +39 #i +ARDUINOJSON_DEBUG + + +40 i( + gc + <= 0) + +41 +_ded + = +ue +; + +43 + g_cut + = +ic_ +<>( +c + > 0 ? c : 0); + +44 + g_lded + = +ue +; + +47 +TRd + + g_ad +; + +48  + g_cut +; + +49 +bo + + g_lded +; + +50 #i +ARDUINOJSON_DEBUG + + +51 +bo + + g_ded +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +tyme + + gTWr +> + +15 +ass + + gPyJsSliz + : +public + +JsSliz +< +TWr +> { + +16  +JsSliz +< + tTWr +> + tba +; + +18 + gpublic +: + +19 +PyJsSliz +( +TWr + & +wr +: +ba +(wr), +_ág +(0) {} + +21 +size_t + +visAay +(cڡ +CiDa + & +y +) { + +22 +VSl + * + g + = +y +. +hd +(); + +23 i( + g +) { + +24 + gba +:: +wre +("[\r\n"); + +25 + g_ág +++; + +26  + g + != 0) { + +27 +dt +(); + +28 + g +-> +da +()-> +ac +(* +this +); + +30 + g + = + +-> +xt +(); + +31 + gba +:: +wre +( + + ? ",\r\n" : "\r\n"); + +33 + g_ág +--; + +34 +dt +(); + +35 + gba +:: +wre +("]"); + +37 + gba +:: +wre +("[]"); + +39  + gthis +-> +bysWrn +(); + +42 +size_t + +visObje +(cڡ +CiDa + & +obje +) { + +43 +VSl + * + g + = +obje +. +hd +(); + +44 i( + g +) { + +45 + gba +:: +wre +("{\r\n"); + +46 + g_ág +++; + +47  + g + != 0) { + +48 +dt +(); + +49 + gba +:: +visSg +( + +-> +key +()); + +50 + gba +:: +wre +(": "); + +51 + g +-> +da +()-> +ac +(* +this +); + +53 + g + = + +-> +xt +(); + +54 + gba +:: +wre +( + + ? ",\r\n" : "\r\n"); + +56 + g_ág +--; + +57 +dt +(); + +58 + gba +:: +wre +("}"); + +60 + gba +:: +wre +("{}"); + +62  + gthis +-> +bysWrn +(); + +65 + give +: + +66  +dt +() { + +67  +ut8_t + +i + = 0; + gi + < + g_ág +; i++ + gba +:: +wre +( +ARDUINOJSON_TAB +); + +70 +ut8_t + + g_ág +; + +73 + gme + < +tyme + + gTSour +,ym + gTDei +> + +74 +size_t + +rlizeJsPy +(cڡ +TSour + & +sour +, +TDei + & +dei +) { + +75  + grlize +< + gPyJsSliz +>( + gsour +, + gdei +); + +78 + gme + < +tyme + + gTSour +> + +79 +size_t + +rlizeJsPy +(cڡ +TSour + & +sour +, * +bufr +, + +80 +size_t + +bufrSize +) { + +81  + grlize +< + gPyJsSliz +>( + gsour +, + gbufr +, + gbufrSize +); + +84 + gme + < +tyme + + gTSour +> + +85 +size_t + +msuJsPy +(cڡ +TSour + & +sour +) { + +86  + gmsu +< + gPyJsSliz +>( + gsour +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +17 +mea + + gARDUINOJSON_NAMESPACE + { + +19 + gme + < +tyme + + gTWr +> + +20 as + cTextFmr + { + +21 + gpublic +: + +22 +exic + +TextFmr +( +TWr + +wr +: +_wr +(writer) {} + +25 +size_t + +bysWrn +() const { + +26  +_wr +. +cou +(); + +29  +wreBoޗn +( +bo + +vue +) { + +30 i( + gvue +) + +31 +wreRaw +("true"); + +33 +wreRaw +("false"); + +36  +wreSg +(cڡ * +vue +) { + +37 +ARDUINOJSON_ASSERT +( +vue + ! +NULL +); + +38 +wreRaw +('\"'); + +39 * + gvue + +wreCh +(* +vue +++); + +40 +wreRaw +('\"'); + +43  +wreCh +( +c +) { + +44  + geclCh + = +EsSequ +:: +esCh +( +c +); + +45 i( + geclCh +) { + +46 +wreRaw +('\\'); + +47 +wreRaw +( +eclCh +); + +49 +wreRaw +( +c +); + +53 + gme + < +tyme + + gT +> + +54  +wreFlt +( +T + +vue +) { + +55 i( +i +( +vue +)) + +56  +wreRaw +( +ARDUINOJSON_ENABLE_NAN + ? "NaN" : "null"); + +58 #i +ARDUINOJSON_ENABLE_INFINITY + + +59 i( + gvue + < 0.0) { + +60 +wreRaw +('-'); + +61 + gvue + = - +vue +; + +64 i( +isf +( +vue +)) + +65  +wreRaw +("Infinity"); + +67 i( +isf +( +vue +)) + +68  +wreRaw +("null"); + +70 i( + gvue + < 0.0) { + +71 +wreRaw +('-'); + +72 + gvue + = - +vue +; + +76 + gFltPts +< + gT +> +s +( +vue +); + +78 +wrePosiveIeg +( +s +. +gl +); + +79 i( + gs +. + gdecimPs +) + +80 +wreDecims +( +s +. +decim +,ts. +decimPs +); + +82 i( + gs +. + gexpڒt + < 0) { + +83 +wreRaw +("e-"); + +84 +wrePosiveIeg +(- +s +. +expڒt +); + +87 i( + gs +. + gexpڒt + > 0) { + +88 +wreRaw +('e'); + +89 +wrePosiveIeg +( +s +. +expڒt +); + +93  +wreNegiveIeg +( +UI + +vue +) { + +94 +wreRaw +('-'); + +95 +wrePosiveIeg +( +vue +); + +98 + gme + < +tyme + + gT +> + +99  +wrePosiveIeg +( +T + +vue +) { + +100  + gbufr +[22]; + +101 * + gd + = +bufr + + (buffer); + +102 * + gbeg + = +d +; + +106 *-- + gbeg + = ( +vue + % 10 + '0'); + +107 + gvue + = +T +( +vue + / 10); + +108 }  + gvue +); + +111 +wreRaw +( +beg +, +d +); + +114  +wreDecims +( +ut32_t + +vue +, +t8_t + +width +) { + +116  + gbufr +[16]; + +117 * + gd + = +bufr + + (buffer); + +118 * + gbeg + = +d +; + +121  + gwidth +--) { + +122 *-- + gbeg + = ( +vue + % 10 + '0'); + +123 + gvue + /= 10; + +125 *-- + gbeg + = '.'; + +128 +wreRaw +( +beg +, +d +); + +131  +wreRaw +(cڡ * +s +) { + +132 + g_wr +. +wre +( +t_ +( +s +), + +(s)); + +135  +wreRaw +(cڡ * +s +, +size_t + +n +) { + +136 + g_wr +. +wre +( +t_ +( +s +), +n +); + +139  +wreRaw +(cڡ * +beg +, cڡ * +d +) { + +140 + g_wr +. +wre +( +t_ +( +beg +), + +141 +ic_ +< +size_t +>( +d + - +beg +)); + +144 + gme + < +size_t + + gN +> + +145  +wreRaw +(cڡ (& +s +)[ +N +]) { + +146 + g_wr +. +wre +( +t_ +( +s +), +N + - 1); + +148  +wreRaw +( +c +) { + +149 + g_wr +. +wre +( +ic_ +< +ut8_t +>( +c +)); + +152 + geed +: + +153 +CougDecܩ +< +TWr +> +_wr +; + +154 +size_t + + g_ngth +; + +156 + give +: + +157 +TextFmr + & +ݔ +=(const TextFormatter &); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +14 #i +defed +( +__GNUC__ +) + +15 #i +__GNUC__ + >= 7 + +16 #agm +GCC + +dgnoic + +push + + +17 #agm +GCC + +dgnoic + +igned + "-Wmaybe-uninitialized" + +21 +mea + + gARDUINOJSON_NAMESPACE + { + +23 +mea + + gUtf16 + { + +24 +le + +bo + +isHighSuoge +( +ut16_t + +codeun +) { + +25  + gcodeun + >0xD800 && +codeun + < 0xDC00; + +28 +le + +bo + +isLowSuoge +( +ut16_t + +codeun +) { + +29  + gcodeun + >0xDC00 && +codeun + < 0xE000; + +32 as + cCodot + { + +33 + gpublic +: + +34 +Codot +(: +_highSuoge +(0) {} + +36 +bo + +nd +( +ut16_t + +codeun +) { + +37 i( +isHighSuoge +( +codeun +)) { + +38 +_highSuoge + = +codeun + & 0x3FF; + +39  + gl +; + +42 i( +isLowSuoge +( +codeun +)) { + +43 + g_codot + = + +44 +ut32_t +(0x10000 + (( +_highSuoge + << 10| ( +codeun + & 0x3FF))); + +45  + gue +; + +48 + g_codot + = +codeun +; + +49  + gue +; + +52 +ut32_t + +vue +() const { + +53  + g_codot +; + +56 + give +: + +57 +ut16_t + +_highSuoge +; + +58 +ut32_t + + g_codot +; + +63 #i +defed +( +__GNUC__ +) + +64 #i +__GNUC__ + >= 8 + +65 #agm +GCC + +dgnoic + +p + + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +mea + + gUtf8 + { + +12 + gme + < +tyme + + gTSgBud +> + +13 +le +  +codeCodot +( +ut32_t + +codot32 +, +TSgBud +& +r +) { + +17  + gbuf +[5]; + +18 * + gp + = +buf +; + +20 *( + gp +++) = 0; + +21 i( + gcodot32 + < 0x80) { + +22 *( + gp +++(( +codot32 +)); + +24 *( + gp +++(( +codot32 + | 0x80) & 0xBF); + +25 +ut16_t + + gcodot16 + = ut16_t( +codot32 + >> 6); + +26 i( + gcodot16 + < 0x20) { + +27 *( + gp +++( +codot16 + | 0xC0); + +29 *( + gp +++(( +codot16 + | 0x80) & 0xBF); + +30 + gcodot16 + = +ut16_t +( +codot16 + >> 6); + +31 i( + gcodot16 + < 0x10) { + +32 *( + gp +++( +codot16 + | 0xE0); + +34 *( + gp +++(( +codot16 + | 0x80) & 0xBF); + +35 + gcodot16 + = +ut16_t +( +codot16 + >> 6); + +36 *( + gp +++( +codot16 + | 0xF0); + +41 *(-- + gp +)) { + +42 + gr +. +nd +(* +p +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 #i +ARDUINOJSON_ENABLE_ALIGNMENT + + +15 +le + +bo + +isAligd +( +size_t + +vue +) { + +16 cڡ +size_t + + gmask + = (*) - 1; + +17 +size_t + + gaddr + = +vue +; + +18  ( + gaddr + & + gmask +) == 0; + +21 +le + +size_t + +addPaddg +(size_ +bys +) { + +22 cڡ +size_t + + gmask + = (*) - 1; + +23  ( + gbys + + + gmask +) & ~mask; + +26 + gme + < +size_t + + gbys +> + +27  + sAddPaddg + { + +28 cڡ +size_t + + gmask + = (*) - 1; + +29 cڡ +size_t + + gvue + = ( +bys + + +mask +) & ~mask; + +34 +le + +bo + +isAligd +( +size_t +) { + +35  + gue +; + +38 +le + +size_t + +addPaddg +(size_ +bys +) { + +39  + gbys +; + +42 + gme + < +size_t + + gbys +> + +43  + sAddPaddg + { + +44 cڡ +size_t + + gvue + = +bys +; + +49 + gme + < +tyme + + gT +> + +50 +le + +bo + +isAligd +( +T + * +r +) { + +51  +isAligd +( +t_ +< +size_t +>( +r +)); + +54 + gme + < +tyme + + gT +> + +55 +le + +T + * +addPaddg +(T * +p +) { + +56 +size_t + + gaddss + = +addPaddg +( +t_ +( +p +)); + +57  + gt_ +< + gT + *>( + gaddss +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12  + ~ + +14  + #JSON_STRING_SIZE +( +SIZE +(SIZE + 1) + + ) + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +26 as + cMemyPo + { + +27 + gpublic +: + +28 +MemyPo +(* +buf +, +size_t + + +) + +29 : +_beg +( +buf +), + +30 +_ +( +buf +), + +31 +_right +( +buf + ? bu+ + + : 0), + +32 +_d +( +buf + ? bu+ + + : 0), + +33 +_ovowed +( +l +) { + +34 +ARDUINOJSON_ASSERT +( +isAligd +( +_beg +)); + +35 +ARDUINOJSON_ASSERT +( +isAligd +( +_right +)); + +36 +ARDUINOJSON_ASSERT +( +isAligd +( +_d +)); + +39 * +bufr +() { + +40  + g_beg +; + +44 +size_t + +cy +() const { + +45  +size_t +( +_d + - +_beg +); + +48 +size_t + +size +() const { + +49  +size_t +( +_ + - +_beg + + +_d + - +_right +); + +52 +bo + +ovowed +() const { + +53  + g_ovowed +; + +56 +VSl +* +locV +() { + +57  + glocRight +< + gVSl +>(); + +60 + gme + < +tyme + + gTAddSg +> + +61 cڡ * +veSg +(cڡ +TAddSg +& +r +) { + +62 i( + gr +. +isNu +()) + +65 #i +ARDUINOJSON_ENABLE_STRING_DEDUPLICATION + + +66 cڡ * + gexigCy + = +fdSg +( +r +. +beg +()); + +67 i( + gexigCy +) + +68  + gexigCy +; + +71 +size_t + + gn + = +r +. +size +(); + +73 * + gwCy + = +locSg +( +n + + 1); + +74 i( + gwCy +) { + +75 + gr +. +cyTo +( +wCy +, +n +); + +76 + gwCy +[ +n +] = 0; + +78  + gwCy +; + +81  +gFeZe +(** +zeS +, +size_t +* +zeSize +) const { + +82 * + gzeS + = +_ +; + +83 * + gzeSize + = +size_t +( +_right + - +_ +); + +86 cڡ * +veSgFromFeZe +( +size_t + +n +) { + +87 #i +ARDUINOJSON_ENABLE_STRING_DEDUPLICATION + + +88 cڡ * + gdup + = +fdSg +( +_ +); + +89 i( + gdup +) + +90  + gdup +; + +93 cڡ * + gr + = +_ +; + +94 + g_ + + +n +; + +95 +checkInvs +(); + +96  + gr +; + +99  +mkAsOvowed +() { + +100 + g_ovowed + = +ue +; + +103  +r +() { + +104 + g_ + = +_beg +; + +105 + g_right + = +_d +; + +106 + g_ovowed + = +l +; + +109 +bo + +nAoc +( +size_t + +bys +) const { + +110  + g_ + + + gbys + < +_right +; + +113 +bo + +owns +(* +p +) const { + +114  + g_beg + < +p + && < +_d +; + +118 * +ݔ + +w +( +size_t +, * +p +) { + +119  + gp +; + +133 +rdiff_t + +squash +() { + +134 * + gw_right + = +addPaddg +( +_ +); + +135 i( + gw_right + > +_right +) + +138 +size_t + + gright_size + = +ic_ +( +_d + - +_right +); + +139 +memmove +( +w_right +, +_right +, +right_size +); + +141 +rdiff_t + + gbys_aimed + = +_right + - +w_right +; + +142 + g_right + = +w_right +; + +143 + g_d + = +w_right + + +right_size +; + +144  + gbys_aimed +; + +149  +movePors +( +rdiff_t + +offt +) { + +150 + g_beg + + +offt +; + +151 + g_ + + +offt +; + +152 + g_right + + +offt +; + +153 + g_d + + +offt +; + +156 + give +: + +157  +checkInvs +() { + +158 +ARDUINOJSON_ASSERT +( +_beg + < +_ +); + +159 +ARDUINOJSON_ASSERT +( +_ + < +_right +); + +160 +ARDUINOJSON_ASSERT +( +_right + < +_d +); + +161 +ARDUINOJSON_ASSERT +( +isAligd +( +_right +)); + +164 #i +ARDUINOJSON_ENABLE_STRING_DEDUPLICATION + + +165 + gme + < +tyme + + gTIt +> + +166 cڡ * +fdSg +( +TIt + +r +) { + +167 * + gxt + = +_beg +;ex< + g_ +; ++next) { + +168 * + gbeg + = +xt +; + +171  +TIt + + g + = +r +; * =* +xt +; ++it) { + +172 i(* + gxt +++ == 0) + +173  +beg +; + +177 * + gxt +) ++next; + +183 * +locSg +( +size_t + +n +) { + +184 i(! +nAoc +( +n +)) { + +185 + g_ovowed + = +ue +; + +188 * + gs + = +_ +; + +189 + g_ + + +n +; + +190 +checkInvs +(); + +191  + gs +; + +194 + gme + < +tyme + + gT +> + +195 +T +* +locRight +() { + +196  + gt_ +< + gT +*>( +locRight +(( +T +))); + +199 * +locRight +( +size_t + +bys +) { + +200 i(! +nAoc +( +bys +)) { + +201 + g_ovowed + = +ue +; + +204 + g_right + - +bys +; + +205  + g_right +; + +208 * + g_beg +, * + g_ +, * + g_right +, * + g_d +; + +209 +bo + + g_ovowed +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13 as + cSlizedVue + { + +14 + gpublic +: + +15 +exic + +SlizedVue +( +T + +r +: +_r +(str) {} + +16 +ݔ + +T +() const { + +17  +_r +; + +20 cڡ * +da +() const { + +21  + g_r +. +c_r +(); + +24 +size_t + +size +() const { + +26  + g_r +. +ngth +(); + +29 + give +: + +30 +T + +_r +; + +33 + gme + < +tyme + + gTCh +> + +34 +ass + + gSlizedVue +< + gTCh +*> { + +35 + gpublic +: + +36 +exic + +SlizedVue +( +TCh +* +p +, +size_t + +n +: +_da +), +_size +(n) {} + +37 +ݔ + + gTCh +*() const { + +38  + g_da +; + +41 +TCh +* +da +() const { + +42  + g_da +; + +45 +size_t + +size +() const { + +46  + g_size +; + +49 + give +: + +50 +TCh +* +_da +; + +51 +size_t + + g_size +; + +54 + gme + < +tyme + + gT +> + +55 +le + + gSlizedVue +< + gT +> + $rlized +( +T + +r +) { + +56  +SlizedVue +< +T +>( +r +); + +57 + } +} + +59 + gme + < +tyme + + gTCh +> + +60 +le + + gSlizedVue +< + gTCh +*> + $rlized +( +TCh +* +p +) { + +61  +SlizedVue +< +TCh +*>( +p +, + `adtSg +). + `size +()); + +62 + } +} + +64 + gme + < +tyme + + gTCh +> + +65 +le + + gSlizedVue +< + gTCh +*> + $rlized +( +TCh +* +p +, +size_t + +n +) { + +66  +SlizedVue +< +TCh +*>( +p +, +n +); + +67 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTResu +> + +12  + sVis + { + +13  +TResu + + tsu_ty +; + +16  + sVisab + { + +21 + gme + < +tyme + + gT +> + +22  + gIsVisab + : +is_ba_of +< +Visab +, + gT +> {}; + +24 + gme + < +tyme + + gT +> + +25  + gIsVisab +< + gT +&> : +IsVisab +< +T +> {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 + gme + < +tyme + + gTRd +,ym + gTSgStage +> + +17 as + cMsgPackDerliz + { + +18 + gpublic +: + +19 +MsgPackDerliz +( +MemyPo + & +po +, +TRd + +ad +, + +20 +TSgStage + +rgStage +) + +21 : +_po +(& +po +), + +22 +_ad +( +ad +), + +23 +_rgStage +( +rgStage +), + +24 +_r +( +DerliziE +:: +Ok +), + +25 +_foundSomhg +( +l +) {} + +27 + gme + < +tyme + + gTFr +> + +28 +DerliziE + +r +( +VDa + & +v +, +TFr + +fr +, + +29 +NegLim + +ágLim +) { + +30 +rV +( +v +, +fr +, +ágLim +); + +31  + g_foundSomhg + ? + g_r + : +DerliziE +:: +EmyIut +; + +34 + give +: + +36 +MsgPackDerliz + & +ݔ +=(const MsgPackDeserializer &); + +38 +bo + +vidIut +() { + +39 + g_r + = +DerliziE +:: +InvidIut +; + +40  + gl +; + +43 +bo + +nSu܋d +() { + +44 + g_r + = +DerliziE +:: +NSu܋d +; + +45  + gl +; + +48 + gme + < +tyme + + gTFr +> + +49 +bo + +rV +( +VDa + & +v +, +TFr + +fr +, + +50 +NegLim + +ágLim +) { + +51 +ut8_t + + gcode + = 0; + +52 i(! +adBy +( +code +)) + +53  + gl +; + +55 + g_foundSomhg + = +ue +; + +57 +bo + + glowVue + = +fr +. +lowVue +(); + +59  + gcode +) { + +62  +ue +; + +65  +vidIut +(); + +68 i( +lowVue +) + +69 +v +. +tBoޗn +( +l +); + +70  + gue +; + +73 i( +lowVue +) + +74 +v +. +tBoޗn +( +ue +); + +75  + gue +; + +78 i( +lowVue +) + +79  +nSu܋d +(); + +81  + gskSg +< + gut8_t +>(); + +84 i( +lowVue +) + +85  +nSu܋d +(); + +87  + gskSg +< + gut16_t +>(); + +90 i( +lowVue +) + +91  +nSu܋d +(); + +93  + gskSg +< + gut32_t +>(); + +96 i( +lowVue +) + +97  +nSu܋d +(); + +99  + gskExt +< + gut8_t +>(); + +102 i( +lowVue +) + +103  +nSu܋d +(); + +105  + gskExt +< + gut16_t +>(); + +108 i( +lowVue +) + +109  +nSu܋d +(); + +111  + gskExt +< + gut32_t +>(); + +114 i( +lowVue +) + +115  +adFlt +<>( +v +); + +117  +skBys +(4); + +120 i( +lowVue +) + +121  +adDoub +<>( +v +); + +123  +skBys +(8); + +126 i( +lowVue +) + +127  +adIeg +< +ut8_t +>( +v +); + +129  +skBys +(1); + +132 i( +lowVue +) + +133  +adIeg +< +ut16_t +>( +v +); + +135  +skBys +(2); + +138 i( +lowVue +) + +139  +adIeg +< +ut32_t +>( +v +); + +141  +skBys +(4); + +144 i( +lowVue +) + +145 #i +ARDUINOJSON_USE_LONG_LONG + + +146  +adIeg +< +ut64_t +>( +v +); + +148  +nSu܋d +(); + +151  +skBys +(8); + +154 i( +lowVue +) + +155  +adIeg +< +t8_t +>( +v +); + +157  +skBys +(1); + +160 i( +lowVue +) + +161  +adIeg +< +t16_t +>( +v +); + +163  +skBys +(2); + +166 i( +lowVue +) + +167  +adIeg +< +t32_t +>( +v +); + +169  +skBys +(4); + +172 i( +lowVue +) + +173 #i +ARDUINOJSON_USE_LONG_LONG + + +174  +adIeg +< +t64_t +>( +v +); + +176  +nSu܋d +(); + +179  +skBys +(8); + +182 i( +lowVue +) + +183  +nSu܋d +(); + +185  +skBys +(2); + +188 i( +lowVue +) + +189  +nSu܋d +(); + +191  +skBys +(3); + +194 i( +lowVue +) + +195  +nSu܋d +(); + +197  +skBys +(5); + +200 i( +lowVue +) + +201  +nSu܋d +(); + +203  +skBys +(9); + +206 i( +lowVue +) + +207  +nSu܋d +(); + +209  +skBys +(17); + +212 i( +lowVue +) + +213  +adSg +< +ut8_t +>( +v +); + +215  + gskSg +< + gut8_t +>(); + +218 i( +lowVue +) + +219  +adSg +< +ut16_t +>( +v +); + +221  + gskSg +< + gut16_t +>(); + +224 i( +lowVue +) + +225  +adSg +< +ut32_t +>( +v +); + +227  + gskSg +< + gut32_t +>(); + +230  +adAay +< +ut16_t +>( +v +, + gfr +, + gágLim +); + +233  +adAay +< +ut32_t +>( +v +, + gfr +, + gágLim +); + +236  +adObje +< +ut16_t +>( +v +, + gfr +, + gágLim +); + +239  +adObje +< +ut32_t +>( +v +, + gfr +, + gágLim +); + +242  + gcode + & 0xf0) { + +244  +adObje +( +v +, +code + & 0x0F, +fr +, +ágLim +); + +247  +adAay +( +v +, +code + & 0x0F, +fr +, +ágLim +); + +250 i(( + gcode + & 0xe0) == 0xa0) { + +251 i( +lowVue +) + +252  +adSg +( +v +, +code + & 0x1f); + +254  +skBys +( +code + & 0x1f); + +257 i( + glowVue +) + +258 + gv +. +tIeg +( +ic_ +< +t8_t +>( +code +)); + +260  + gue +; + +263 +bo + +adBy +( +ut8_t + & +vue +) { + +264  + gc + = +_ad +. +ad +(); + +265 i( + gc + < 0) { + +266 + g_r + = +DerliziE +:: +IncomeIut +; + +267  + gl +; + +269 + gvue + = +ic_ +< +ut8_t +>( +c +); + +270  + gue +; + +273 +bo + +adBys +( +ut8_t + * +p +, +size_t + +n +) { + +274 i( + g_ad +. +adBys +( +t_ +<*>( +p +), +n +) ==) + +275  +ue +; + +276 + g_r + = +DerliziE +:: +IncomeIut +; + +277  + gl +; + +280 + gme + < +tyme + + gT +> + +281 +bo + +adBys +( +T + & +vue +) { + +282  +adBys +( +t_ +< +ut8_t + *>(& +vue +), (value)); + +285 +bo + +skBys +( +size_t + +n +) { + +286 ; + gn +; --n) { + +287 i( + g_ad +. +ad +() < 0) { + +288 + g_r + = +DerliziE +:: +IncomeIut +; + +289  + gl +; + +292  + gue +; + +295 + gme + < +tyme + + gT +> + +296 +bo + +adIeg +( +T + & +vue +) { + +297 i(! +adBys +( +vue +)) + +298  + gl +; + +299 +fixEndss +( +vue +); + +300  + gue +; + +303 + gme + < +tyme + + gT +> + +304 +bo + +adIeg +( +VDa + & +v +) { + +305 +T + + gvue +; + +306 i(! +adIeg +( +vue +)) + +307  + gl +; + +308 + gv +. +tIeg +( +vue +); + +309  + gue +; + +312 + gme + < +tyme + + gT +> + +313 +tyme + + gab_if +<( + gT +=4, + gbo +>:: +ty + +adFlt +( + +314 +VDa + & +v +) { + +315 +T + +vue +; + +316 i(! +adBys +( +vue +)) + +317  + gl +; + +318 +fixEndss +( +vue +); + +319 + gv +. +tFlt +( +vue +); + +320  + gue +; + +323 + gme + < +tyme + + gT +> + +324 +tyme + + gab_if +<( + gT +=8, + gbo +>:: +ty + +adDoub +( + +325 +VDa + & +v +) { + +326 +T + +vue +; + +327 i(! +adBys +( +vue +)) + +328  + gl +; + +329 +fixEndss +( +vue +); + +330 + gv +. +tFlt +( +vue +); + +331  + gue +; + +334 + gme + < +tyme + + gT +> + +335 +tyme + + gab_if +<( + gT +=4, + gbo +>:: +ty + +adDoub +( + +336 +VDa + & +v +) { + +337 +ut8_t + +i +[8]; + +338 +T + + gvue +; + +339 +ut8_t + * + go + = +t_ +(& +vue +); + +340 i(! +adBys +( +i +, 8)) + +341  + gl +; + +342 +doubToFlt +( +i +, +o +); + +343 +fixEndss +( +vue +); + +344 + gv +. +tFlt +( +vue +); + +345  + gue +; + +348 + gme + < +tyme + + gT +> + +349 +bo + +adSg +( +VDa + & +v +) { + +350 +T + + gsize +; + +351 i(! +adIeg +( +size +)) + +352  + gl +; + +353  +adSg +( +v +, +size +); + +356 + gme + < +tyme + + gT +> + +357 +bo + +adSg +() { + +358 +T + + gsize +; + +359 i(! +adIeg +( +size +)) + +360  + gl +; + +361  +adSg +( +size +); + +364 + gme + < +tyme + + gT +> + +365 +bo + +skSg +() { + +366 +T + + gsize +; + +367 i(! +adIeg +( +size +)) + +368  + gl +; + +369  +skBys +( +size +); + +372 +bo + +adSg +( +VDa + & +v +, +size_t + +n +) { + +373 i(! +adSg +( +n +)) + +374  + gl +; + +375 + gv +. +tSgPor +( +_rgStage +. +ve +(), + +376 +tyme + +TSgStage +:: +age_picy +()); + +377  + gue +; + +380 +bo + +adSg +( +size_t + +n +) { + +381 + g_rgStage +. +tSg +(); + +382 ; + gn +; --n) { + +383 +ut8_t + + gc +; + +384 i(! +adBys +( +c +)) + +385  + gl +; + +386 + g_rgStage +. +nd +( +ic_ +<>( +c +)); + +388 + g_rgStage +. +nd +('\0'); + +389 i(! + g_rgStage +. +isVid +()) { + +390 + g_r + = +DerliziE +:: +NoMemy +; + +391  + gl +; + +394  + gue +; + +397 + gme + < +tyme + + gTSize +,ym + gTFr +> + +398 +bo + +adAay +( +VDa + & +v +, +TFr + +fr +, + +399 +NegLim + +ágLim +) { + +400 +TSize + + gsize +; + +401 i(! +adIeg +( +size +)) + +402  + gl +; + +403  +adAay +( +v +, +size +, +fr +, +ágLim +); + +406 + gme + < +tyme + + gTFr +> + +407 +bo + +adAay +( +VDa + & +v +, +size_t + +n +, +TFr + +fr +, + +408 +NegLim + +ágLim +) { + +409 i( + gágLim +. +ached +()) { + +410 + g_r + = +DerliziE +:: +TooDp +; + +411  + gl +; + +414 +bo + + glowAay + = +fr +. +lowAay +(); + +416 +CiDa + * + gy + = +lowAay + ? & +v +. +toAay +() : 0; + +418 +TFr + + gmembFr + = +fr +[0U]; + +420 ; + gn +; --n) { + +421 +VDa + * + gvue +; + +423 i( + gmembFr +. +low +()) { + +424 + gvue + = +y +-> +addEmt +( +_po +); + +425 i(! + gvue +) { + +426 + g_r + = +DerliziE +:: +NoMemy +; + +427  + gl +; + +430 + gvue + = 0; + +433 i(! +rV +(* +vue +, +membFr +, +ágLim +. +deemt +())) + +434  + gl +; + +437  + gue +; + +440 + gme + < +tyme + + gTSize +,ym + gTFr +> + +441 +bo + +adObje +( +VDa + & +v +, +TFr + +fr +, + +442 +NegLim + +ágLim +) { + +443 +TSize + + gsize +; + +444 i(! +adIeg +( +size +)) + +445  + gl +; + +446  +adObje +( +v +, +size +, +fr +, +ágLim +); + +449 + gme + < +tyme + + gTFr +> + +450 +bo + +adObje +( +VDa + & +v +, +size_t + +n +, +TFr + +fr +, + +451 +NegLim + +ágLim +) { + +452 i( + gágLim +. +ached +()) { + +453 + g_r + = +DerliziE +:: +TooDp +; + +454  + gl +; + +457 +CiDa + * + gobje + = +fr +. +lowObje +(? & +v +. +toObje +() : 0; + +459 ; + gn +; --n) { + +460 i(! +adKey +()) + +461  + gl +; + +463 cڡ * + gkey + = +_rgStage +. +c_r +(); + +464 +TFr + + gmembFr + = +fr +[ +key +]; + +465 +VDa + * + gmemb +; + +467 i( + gmembFr +. +low +()) { + +470 + gkey + = +_rgStage +. +ve +(); + +472 +VSl + * + g + = +obje +-> +addSl +( +_po +); + +473 i(! + g +) { + +474 + g_r + = +DerliziE +:: +NoMemy +; + +475  + gl +; + +478 + g +-> +tKey +( +key +, +tyme + +TSgStage +:: +age_picy +()); + +480 + gmemb + = + +-> +da +(); + +482 + gmemb + = 0; + +485 i(! +rV +(* +memb +, +membFr +, +ágLim +. +deemt +())) + +486  + gl +; + +489  + gue +; + +492 +bo + +adKey +() { + +493 +ut8_t + + gcode +; + +494 i(! +adBy +( +code +)) + +495  + gl +; + +497 i(( + gcode + & 0xe0) == 0xa0) + +498  +adSg +( +code + & 0x1f); + +500  + gcode +) { + +502  +adSg +< +ut8_t +>(); + +505  +adSg +< +ut16_t +>(); + +508  +adSg +< +ut32_t +>(); + +511  +nSu܋d +(); + +515 + gme + < +tyme + + gT +> + +516 +bo + +skExt +() { + +517 +T + + gsize +; + +518 i(! +adIeg +( +size +)) + +519  + gl +; + +520  +skBys +( +size + + 1); + +523 +MemyPo + * + g_po +; + +524 +TRd + + g_ad +; + +525 +TSgStage + + g_rgStage +; + +526 +DerliziE + + g_r +; + +527 +bo + + g_foundSomhg +; + +534 + gme + < +tyme + + gTSg +> + +535 +DerliziE + +derlizeMsgPack +( + +536 +JsDocumt + & +doc +, cڡ +TSg + & +put +, + +537 +NegLim + +ágLim + = + $NegLim +()) { + +538  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, + +539 + `AowAFr +()); + +540 + } +} + +542 + gme + < +tyme + + gTSg +> + +543 +DerliziE + +derlizeMsgPack +( + +544 +JsDocumt + & +doc +, cڡ +TSg + & +put +, +Fr + +fr +, + +545 +NegLim + +ágLim + = + $NegLim +()) { + +546  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +547 + } +} + +549 + gme + < +tyme + + gTSg +> + +550 +DerliziE + + $derlizeMsgPack +( +JsDocumt + & +doc +, cڡ +TSg + & +put +, + +551 +NegLim + +ágLim +, + +552 +Fr + +fr +) { + +553  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +554 + } +} + +560 + gme + < +tyme + + gTSm +> + +561 +DerliziE + +derlizeMsgPack +( + +562 +JsDocumt + & +doc +, +TSm + & +put +, + +563 +NegLim + +ágLim + = + $NegLim +()) { + +564  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, + +565 + `AowAFr +()); + +566 + } +} + +568 + gme + < +tyme + + gTSm +> + +569 +DerliziE + +derlizeMsgPack +( + +570 +JsDocumt + & +doc +, +TSm + & +put +, +Fr + +fr +, + +571 +NegLim + +ágLim + = + $NegLim +()) { + +572  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +573 + } +} + +575 + gme + < +tyme + + gTSm +> + +576 +DerliziE + + $derlizeMsgPack +( +JsDocumt + & +doc +, +TSm + & +put +, + +577 +NegLim + +ágLim +, + +578 +Fr + +fr +) { + +579  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +580 + } +} + +586 + gme + < +tyme + + gTCh +> + +587 +DerliziE + +derlizeMsgPack +( + +588 +JsDocumt + & +doc +, +TCh + * +put +, + +589 +NegLim + +ágLim + = + $NegLim +()) { + +590  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, + +591 + `AowAFr +()); + +592 + } +} + +594 + gme + < +tyme + + gTCh +> + +595 +DerliziE + +derlizeMsgPack +( + +596 +JsDocumt + & +doc +, +TCh + * +put +, +Fr + +fr +, + +597 +NegLim + +ágLim + = + $NegLim +()) { + +598  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +599 + } +} + +601 + gme + < +tyme + + gTCh +> + +602 +DerliziE + + $derlizeMsgPack +( +JsDocumt + & +doc +, +TCh + * +put +, + +603 +NegLim + +ágLim +, + +604 +Fr + +fr +) { + +605  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +606 + } +} + +612 + gme + < +tyme + + gTCh +> + +613 +DerliziE + +derlizeMsgPack +( + +614 +JsDocumt + & +doc +, +TCh + * +put +, +size_t + +putSize +, + +615 +NegLim + +ágLim + = + $NegLim +()) { + +616  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +617 + `AowAFr +()); + +618 + } +} + +620 + gme + < +tyme + + gTCh +> + +621 +DerliziE + +derlizeMsgPack +( + +622 +JsDocumt + & +doc +, +TCh + * +put +, +size_t + +putSize +, +Fr + +fr +, + +623 +NegLim + +ágLim + = + $NegLim +()) { + +624  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +625 +fr +); + +626 + } +} + +628 + gme + < +tyme + + gTCh +> + +629 +DerliziE + + $derlizeMsgPack +( +JsDocumt + & +doc +, +TCh + * +put +, + +630 +size_t + +putSize +, + +631 +NegLim + +ágLim +, + +632 +Fr + +fr +) { + +633  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +634 +fr +); + +635 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gTWr +> + +18 +ass + + gMsgPackSliz + : +public + +Vis +< +size_t +> { + +19 +public +: + +20 +MsgPackSliz +( +TWr + +wr +: +_wr +(writer) {} + +22 +me + < +tyme + +T +> + +23 +tyme + +ab_if +<( +T +=4, + gsize_t +>:: +ty + +visFlt +(T +vue32 +) { + +24 +wreBy +(0xCA); + +25 +wreIeg +( +vue32 +); + +26  +bysWrn +(); + +29 + gme + < +tyme + + gT +> + +30 +ARDUINOJSON_NO_SANITIZE +("float-cast-overflow") + +31 +tyme + + gab_if +<( + gT +=8, + gsize_t +>:: +ty + +visFlt +( +T + +vue64 +) { + +32  +vue32 + = ( +vue64 +); + +33 i( + gvue32 + = +vue64 +) { + +34 +wreBy +(0xCA); + +35 +wreIeg +( +vue32 +); + +37 +wreBy +(0xCB); + +38 +wreIeg +( +vue64 +); + +40  +bysWrn +(); + +43 +size_t + +visAay +(cڡ +CiDa +& +y +) { + +44 +size_t + + gn + = +y +. +size +(); + +45 i( + gn + < 0x10) { + +46 +wreBy +( +ut8_t +(0x90 + +y +. +size +())); + +47 } i( + gn + < 0x10000) { + +48 +wreBy +(0xDC); + +49 +wreIeg +( +ut16_t +( +n +)); + +51 +wreBy +(0xDD); + +52 +wreIeg +( +ut32_t +( +n +)); + +54  +VSl +* + g + = +y +. +hd +(); sl; sl = + +-> +xt +()) { + +55 + +-> +da +()-> +ac +(* +this +); + +57  +bysWrn +(); + +60 +size_t + +visObje +(cڡ +CiDa +& +obje +) { + +61 +size_t + + gn + = +obje +. +size +(); + +62 i( + gn + < 0x10) { + +63 +wreBy +( +ut8_t +(0x80 + +n +)); + +64 } i( + gn + < 0x10000) { + +65 +wreBy +(0xDE); + +66 +wreIeg +( +ut16_t +( +n +)); + +68 +wreBy +(0xDF); + +69 +wreIeg +( +ut32_t +( +n +)); + +71  +VSl +* + g + = +obje +. +hd +(); sl; sl = + +-> +xt +()) { + +72 +visSg +( + +-> +key +()); + +73 + g +-> +da +()-> +ac +(* +this +); + +75  +bysWrn +(); + +78 +size_t + +visSg +(cڡ * +vue +) { + +79 +ARDUINOJSON_ASSERT +( +vue + ! +NULL +); + +81 +size_t + + gn + = + +( +vue +); + +83 i( + gn + < 0x20) { + +84 +wreBy +( +ut8_t +(0xA0 + +n +)); + +85 } i( + gn + < 0x100) { + +86 +wreBy +(0xD9); + +87 +wreIeg +( +ut8_t +( +n +)); + +88 } i( + gn + < 0x10000) { + +89 +wreBy +(0xDA); + +90 +wreIeg +( +ut16_t +( +n +)); + +92 +wreBy +(0xDB); + +93 +wreIeg +( +ut32_t +( +n +)); + +95 +wreBys +( +t_ +( +vue +), +n +); + +96  +bysWrn +(); + +99 +size_t + +visRawJs +(cڡ * +da +, size_ +size +) { + +100 +wreBys +( +t_ +( +da +), +size +); + +101  +bysWrn +(); + +104 +size_t + +visNegiveIeg +( +UI + +vue +) { + +105 +UI + + gged + = UI(~ +vue + + 1); + +106 i( + gvue + <= 0x20) { + +107 +wreIeg +( +t8_t +( +ged +)); + +108 } i( + gvue + <= 0x80) { + +109 +wreBy +(0xD0); + +110 +wreIeg +( +t8_t +( +ged +)); + +111 } i( + gvue + <= 0x8000) { + +112 +wreBy +(0xD1); + +113 +wreIeg +( +t16_t +( +ged +)); + +114 } i( + gvue + <= 0x80000000) { + +115 +wreBy +(0xD2); + +116 +wreIeg +( +t32_t +( +ged +)); + +118 #i +ARDUINOJSON_USE_LONG_LONG + + +120 +wreBy +(0xD3); + +121 +wreIeg +( +t64_t +( +ged +)); + +124  +bysWrn +(); + +127 +size_t + +visPosiveIeg +( +UI + +vue +) { + +128 i( + gvue + <= 0x7F) { + +129 +wreIeg +( +ut8_t +( +vue +)); + +130 } i( + gvue + <= 0xFF) { + +131 +wreBy +(0xCC); + +132 +wreIeg +( +ut8_t +( +vue +)); + +133 } i( + gvue + <= 0xFFFF) { + +134 +wreBy +(0xCD); + +135 +wreIeg +( +ut16_t +( +vue +)); + +137 #i +ARDUINOJSON_USE_LONG_LONG + + +138 i( + gvue + <= 0xFFFFFFFF) + +143 +wreBy +(0xCE); + +144 +wreIeg +( +ut32_t +( +vue +)); + +146 #i +ARDUINOJSON_USE_LONG_LONG + + +148 +wreBy +(0xCF); + +149 +wreIeg +( +ut64_t +( +vue +)); + +152  +bysWrn +(); + +155 +size_t + +visBoޗn +( +bo + +vue +) { + +156 +wreBy +( +vue + ? 0xC3 : 0xC2); + +157  +bysWrn +(); + +160 +size_t + +visNu +() { + +161 +wreBy +(0xC0); + +162  +bysWrn +(); + +165 + give +: + +166 +size_t + +bysWrn +() const { + +167  +_wr +. +cou +(); + +170  +wreBy +( +ut8_t + +c +) { + +171 + g_wr +. +wre +( +c +); + +174  +wreBys +(cڡ +ut8_t +* +p +, +size_t + +n +) { + +175 + g_wr +. +wre +( +p +, +n +); + +178 + gme + < +tyme + + gT +> + +179  +wreIeg +( +T + +vue +) { + +180 +fixEndss +( +vue +); + +181 +wreBys +( +t_ +< +ut8_t +*>(& +vue +), (value)); + +184 + gCougDecܩ +< + gTWr +> + g_wr +; + +187 + gme + < +tyme + + gTSour +,ym + gTDei +> + +188 +le + +size_t + +rlizeMsgPack +(cڡ +TSour +& +sour +, +TDei +& +ouut +) { + +189  + grlize +< + gMsgPackSliz +>( + gsour +, + gouut +); + +192 + gme + < +tyme + + gTSour +> + +193 +le + +size_t + +rlizeMsgPack +(cڡ +TSour +& +sour +, * +ouut +, + +194 +size_t + +size +) { + +195  + grlize +< + gMsgPackSliz +>( + gsour +, + gouut +, + gsize +); + +198 + gme + < +tyme + + gTSour +> + +199 +le + +size_t + +msuMsgPack +(cڡ +TSour +& +sour +) { + +200  + gmsu +< + gMsgPackSliz +>( + gsour +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 #i +ARDUINOJSON_LITTLE_ENDIAN + + +13 +le +  +fixEndss +( +ut8_t + * +p +, +gl_cڡt +< +size_t +, 8>) { + +14 +sw +( +p +[0],[7]); + +15 +sw +( +p +[1],[6]); + +16 +sw +( +p +[2],[5]); + +17 +sw +( +p +[3],[4]); + +20 +le +  +fixEndss +( +ut8_t + * +p +, +gl_cڡt +< +size_t +, 4>) { + +21 +sw +( +p +[0],[3]); + +22 +sw +( +p +[1],[2]); + +25 +le +  +fixEndss +( +ut8_t + * +p +, +gl_cڡt +< +size_t +, 2>) { + +26 +sw +( +p +[0],[1]); + +29 +le +  +fixEndss +( +ut8_t + *, +gl_cڡt +< +size_t +, 1>) {} + +31 + gme + < +tyme + + gT +> + +32 +le +  +fixEndss +( +T + & +vue +) { + +33 +fixEndss +( +t_ +< +ut8_t + *>(& +vue +), + +34 +gl_cڡt +< +size_t +, ( +T +)>()); + +37 + gme + < +tyme + + gT +> + +38 +le +  +fixEndss +( +T + &) {} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +le +  +doubToFlt +(cڡ +ut8_t + +d +[8], ut8_ +f +[4]) { + +12 + gf +[0] = +ut8_t +(( +d +[0] & 0xC0) | (d[0] << 3 & 0x3f) | (d[1] >> 5)); + +13 + gf +[1] = +ut8_t +(( +d +[1] << 3) | (d[2] >> 5)); + +14 + gf +[2] = +ut8_t +(( +d +[2] << 3) | (d[3] >> 5)); + +15 + gf +[3] = +ut8_t +(( +d +[3] << 3) | (d[4] >> 5)); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 #ide +ARDUINOJSON_NAMESPACE + + +13  + #ARDUINOJSON_NAMESPACE + \ + +14 + `ARDUINOJSON_CONCAT4 +( \ + +15 + `ARDUINOJSON_CONCAT4 +( +ArduoJs +, +ARDUINOJSON_VERSION_MAJOR +, \ + +16 +ARDUINOJSON_VERSION_MINOR +, \ + +17 +ARDUINOJSON_VERSION_REVISION +), \ + +18 +_ +, \ + +19 + `ARDUINOJSON_HEX_DIGIT +( +ARDUINOJSON_ENABLE_PROGMEM +, \ + +20 +ARDUINOJSON_USE_LONG_LONG +, +ARDUINOJSON_USE_DOUBLE +, \ + +21 +ARDUINOJSON_ENABLE_STRING_DEDUPLICATION +), \ + +22 + `ARDUINOJSON_HEX_DIGIT +( \ + +23 +ARDUINOJSON_ENABLE_NAN +, +ARDUINOJSON_ENABLE_INFINITY +, \ + +24 +ARDUINOJSON_ENABLE_COMMENTS +, +ARDUINOJSON_DECODE_UNICODE +)) + + ) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 #i +ARDUINOJSON_USE_DOUBLE + + +13  + tFlt +; + +15  + tFlt +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gTFlt +> + +14  + sFltPts + { + +15 +ut32_t + + ggl +; + +16 +ut32_t + + gdecim +; + +17 +t16_t + + gexpڒt +; + +18 +t8_t + + gdecimPs +; + +20 +FltPts +( +TFlt + +vue +) { + +21 +ut32_t + + gmaxDecimPt + = ( +TFlt +) >= 8 ? 1000000000 : 1000000; + +22 + gdecimPs + = ( +TFlt +) >= 8 ? 9 : 6; + +24 + gexpڒt + = +nmize +( +vue +); + +26 + ggl + = +ut32_t +( +vue +); + +28  +ut32_t + + gtmp + = +gl +;mp >= 10;mp /= 10) { + +29 +maxDecimPt + /= 10; + +30 + gdecimPs +--; + +33 +TFlt + + gmad + = ( +vue + - TFlt( +gl +)* TFlt( +maxDecimPt +); + +35 + gdecim + = +ut32_t +( +mad +); + +36 + gmad + = +mad + - +TFlt +( +decim +); + +40 + gdecim + + +ut32_t +( +mad + * 2); + +41 i( + gdecim + > +maxDecimPt +) { + +42 +decim + = 0; + +43 + ggl +++; + +44 i( + gexpڒt + && + ggl + >= 10) { + +45 +expڒt +++; + +46 + ggl + = 1; + +51  + gdecim + % 10 =0 && +decimPs + > 0) { + +52 +decim + /= 10; + +53 + gdecimPs +--; + +57  +t16_t + +nmize +( +TFlt +& +vue +) { + +58  + gFltTs +< + tTFlt +> + tas +; + +59 +t16_t + + gpowsOf10 + = 0; + +61 +t8_t + + gdex + = ( +TFlt +) == 8 ? 8 : 5; + +62  + gb + = 1 << +dex +; + +64 i( + gvue + > +ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD +) { + +65 ; + gdex + >= 0; index--) { + +66 i( + gvue + > +as +:: +posiveByPowOfT +( +dex +)) { + +67 +vue + * +as +:: +giveByPowOfT +( +dex +); + +68 + gpowsOf10 + = +t16_t +( +powsOf10 + + +b +); + +70 + gb + >>= 1; + +74 i( + gvue + > 0 && vu< +ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD +) { + +75 ; + gdex + >= 0; index--) { + +76 i( + gvue + < + gas +:: +giveByPowOfTPlusO +( +dex +)) { + +77 +vue + * +as +:: +posiveByPowOfT +( +dex +); + +78 + gpowsOf10 + = +t16_t +( +powsOf10 + - +b +); + +80 + gb + >>= 1; + +84  + gpowsOf10 +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 + gme + < +tyme + + gT +, + gsize_t + = ( +T +)> + +19  + sFltTs + {}; + +21 + gme + < +tyme + + gT +> + +22  + gFltTs +< + gT +, 8 > { + +23  +ut64_t + + tmtis_ty +; + +24 cڡ  + gmtis_bs + = 52; + +25 cڡ +mtis_ty + + gmtis_max + = + +26 ( +mtis_ty +(1<< +mtis_bs +) - 1; + +28  +t16_t + + texpڒt_ty +; + +29 cڡ +expڒt_ty + + gexpڒt_max + = 308; + +31 + gme + < +tyme + + gTExpڒt +> + +32  +T + +make_t +(T +m +, +TExpڒt + +e +) { + +33 i( + ge + > 0) { + +34  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +35 i( + ge + & 1) + +36 + gm + * +posiveByPowOfT +( +dex +); + +37 + ge + >>= 1; + +40 + ge + = +TExpڒt +(- +e +); + +41  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +42 i( + ge + & 1) + +43 + gm + * +giveByPowOfT +( +dex +); + +44 + ge + >>= 1; + +47  + gm +; + +50  +T + +posiveByPowOfT +( +dex +) { + +51 +ARDUINOJSON_DEFINE_STATIC_ARRAY +( + +52 +ut32_t +, +s +, + +53 +ARDUINOJSON_EXPAND18 +({ + +64  +fge +( + +65 +ARDUINOJSON_READ_STATIC_ARRAY +( +ut32_t +, +s +, 2 * +dex +), + +66 +ARDUINOJSON_READ_STATIC_ARRAY +( +ut32_t +, +s +, 2 * +dex + + 1)); + +69  +T + +giveByPowOfT +( +dex +) { + +70 +ARDUINOJSON_DEFINE_STATIC_ARRAY +( + +71 +ut32_t +, +s +, + +72 +ARDUINOJSON_EXPAND18 +({ + +83  +fge +( + +84 +ARDUINOJSON_READ_STATIC_ARRAY +( +ut32_t +, +s +, 2 * +dex +), + +85 +ARDUINOJSON_READ_STATIC_ARRAY +( +ut32_t +, +s +, 2 * +dex + + 1)); + +88  +T + +giveByPowOfTPlusO +( +dex +) { + +89 +ARDUINOJSON_DEFINE_STATIC_ARRAY +( + +90 +ut32_t +, +s +, + +91 +ARDUINOJSON_EXPAND18 +({ + +102  +fge +( + +103 +ARDUINOJSON_READ_STATIC_ARRAY +( +ut32_t +, +s +, 2 * +dex +), + +104 +ARDUINOJSON_READ_STATIC_ARRAY +( +ut32_t +, +s +, 2 * +dex + + 1)); + +107  +T + +n +() { + +108  +fge +(0x7ff80000, 0x00000000); + +111  +T + +f +() { + +112  +fge +(0x7ff00000, 0x00000000); + +115  +T + +highe +() { + +116  +fge +(0x7FEFFFFF, 0xFFFFFFFF); + +119  +T + +lowe +() { + +120  +fge +(0xFFEFFFFF, 0xFFFFFFFF); + +126  +T + +fge +( +ut32_t + +msb +, ut32_ +lsb +) { + +127  + gs_ +< + gT +>(( +ut64_t +( +msb +<< 32| + glsb +); + +131 + gme + < +tyme + + gT +> + +132  + gFltTs +< + gT +, 4 > { + +133  +ut32_t + + tmtis_ty +; + +134 cڡ  + gmtis_bs + = 23; + +135 cڡ +mtis_ty + + gmtis_max + = + +136 ( +mtis_ty +(1<< +mtis_bs +) - 1; + +138  +t8_t + + texpڒt_ty +; + +139 cڡ +expڒt_ty + + gexpڒt_max + = 38; + +141 + gme + < +tyme + + gTExpڒt +> + +142  +T + +make_t +(T +m +, +TExpڒt + +e +) { + +143 i( + ge + > 0) { + +144  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +145 i( + ge + & 1) + +146 + gm + * +posiveByPowOfT +( +dex +); + +147 + ge + >>= 1; + +150 + ge + = - +e +; + +151  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +152 i( + ge + & 1) + +153 + gm + * +giveByPowOfT +( +dex +); + +154 + ge + >>= 1; + +157  + gm +; + +160  +T + +posiveByPowOfT +( +dex +) { + +161 +ARDUINOJSON_DEFINE_STATIC_ARRAY +( + +162 +T +, +s +, + +163 +ARDUINOJSON_EXPAND6 +({1e1f, 1e2f, 1e4f, 1e8f, 1e16f, 1e32f})); + +164  +ARDUINOJSON_READ_STATIC_ARRAY +( +T +, +s +, +dex +); + +167  +T + +giveByPowOfT +( +dex +) { + +168 +ARDUINOJSON_DEFINE_STATIC_ARRAY +( + +169 +T +, +s +, + +170 +ARDUINOJSON_EXPAND6 +({1e-1f, 1e-2f, 1e-4f, 1e-8f, 1e-16f, 1e-32f})); + +171  +ARDUINOJSON_READ_STATIC_ARRAY +( +T +, +s +, +dex +); + +174  +T + +giveByPowOfTPlusO +( +dex +) { + +175 +ARDUINOJSON_DEFINE_STATIC_ARRAY +( + +176 +T +, +s +, + +177 +ARDUINOJSON_EXPAND6 +({1e0f, 1e-1f, 1e-3f, 1e-7f, 1e-15f, 1e-31f})); + +178  +ARDUINOJSON_READ_STATIC_ARRAY +( +T +, +s +, +dex +); + +181  +T + +fge +( +ut32_t + +bs +) { + +182  + gs_ +< + gT +>( + gbs +); + +185  +T + +n +() { + +186  +fge +(0x7fc00000); + +189  +T + +f +() { + +190  +fge +(0x7f800000); + +193  +T + +highe +() { + +194  +fge +(0x7f7fffff); + +197  +T + +lowe +() { + +198  +fge +(0xFf7fffff); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 #i +ARDUINOJSON_USE_LONG_LONG + + +15  +t64_t + + tIeg +; + +16  +ut64_t + + tUI +; + +18  + tIeg +; + +19  + tUI +; + +24 #i +ARDUINOJSON_HAS_LONG_LONG + && ! +ARDUINOJSON_USE_LONG_LONG + + +25  + #ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED +( +T +) \ + +26 + `ic_as +(( +T +<( +ARDUINOJSON_NAMESPACE +:: +Ieg +), \ + +29 "hps://duojs.g/v6/i/cfig/u_lg_lg/"); + + ) + +31  + #ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED +( +T +) + + ) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + eComResu + { + +13 + gCOMPARE_RESULT_DIFFER + = 0, + +14 + gCOMPARE_RESULT_EQUAL + = 1, + +15 + gCOMPARE_RESULT_GREATER + = 2, + +16 + gCOMPARE_RESULT_LESS + = 4, + +18 + gCOMPARE_RESULT_GREATER_OR_EQUAL + = 3, + +19 + gCOMPARE_RESULT_LESS_OR_EQUAL + = 5 + +22 + gme + < +tyme + + gT +> + +23 +ComResu + +hmicCom +(cڡ +T + & +lhs +, cڡ T & +rhs +) { + +24 i( + glhs + < + grhs +) + +25  + gCOMPARE_RESULT_LESS +; + +26 i( + glhs + > + grhs +) + +27  + gCOMPARE_RESULT_GREATER +; + +29  + gCOMPARE_RESULT_EQUAL +; + +32 + gme + < +tyme + + gT1 +,ym + gT2 +> + +33 +ComResu + +hmicCom +( + +34 cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +, + +35 +tyme + +ab_if +< +is_gl +< +T1 +>:: +vue + && is_gl< +T2 +>::value && + +36 ( +T1 +< ( +T2 +), + +39 >:: +ty + * = 0) { + +40  +hmicCom +< +T2 +>( +ic_ +( +lhs +), +rhs +); + +43 + gme + < +tyme + + gT1 +,ym + gT2 +> + +44 +ComResu + +hmicCom +( + +45 cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +, + +46 +tyme + +ab_if +< +is_gl +< +T1 +>:: +vue + && is_gl< +T2 +>::value && + +47 ( +T2 +< ( +T1 +)>:: +ty + * = 0) { + +48  +hmicCom +< +T1 +>( +lhs +, +ic_ +( +rhs +)); + +51 + gme + < +tyme + + gT1 +,ym + gT2 +> + +52 +ComResu + +hmicCom +( + +53 cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +, + +54 +tyme + +ab_if +< +is_gl +< +T1 +>:: +vue + && is_gl< +T2 +>::value && + +55 +is_sigd +< +T1 +>:: +vue + =is_sigd< +T2 +>::value && + +56 ( +T2 +=( +T1 +)>:: +ty + * = 0) { + +57  +hmicCom +< +T1 +>( +lhs +, +ic_ +( +rhs +)); + +60 + gme + < +tyme + + gT1 +,ym + gT2 +> + +61 +ComResu + +hmicCom +( + +62 cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +, + +63 +tyme + +ab_if +< +is_gl +< +T1 +>:: +vue + && is_gl< +T2 +>::value && + +64 +is_unsigd +< +T1 +>:: +vue + && +is_sigd +< +T2 +>::value && + +65 ( +T2 +=( +T1 +)>:: +ty + * = 0) { + +66 i( +rhs + < 0) + +67  +COMPARE_RESULT_GREATER +; + +68  + ghmicCom +< + gT1 +>( + glhs +, + gic_ +( + grhs +)); + +71 + gme + < +tyme + + gT1 +,ym + gT2 +> + +72 +ComResu + +hmicCom +( + +73 cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +, + +74 +tyme + +ab_if +< +is_gl +< +T1 +>:: +vue + && is_gl< +T2 +>::value && + +75 +is_sigd +< +T1 +>:: +vue + && +is_unsigd +< +T2 +>::value && + +76 ( +T2 +=( +T1 +)>:: +ty + * = 0) { + +77 i( +lhs + < 0) + +78  +COMPARE_RESULT_LESS +; + +79  + ghmicCom +< + gT2 +>( + gic_ +( + glhs +), + grhs +); + +82 + gme + < +tyme + + gT1 +,ym + gT2 +> + +83 +ComResu + +hmicCom +( + +84 cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +, + +85 +tyme + +ab_if +< +is_tg_pot +< +T1 +>:: +vue + || + +86 +is_tg_pot +< +T2 +>:: +vue +>:: +ty + * = 0) { + +87  +hmicCom +<>( +ic_ +<>( +lhs +), + +88 +ic_ +<>( +rhs +)); + +91 + gme + < +tyme + + gT2 +> + +92 +ComResu + +hmicComNegeLe +( + +93 +UI +, cڡ +T2 + &, +tyme + +ab_if +< +is_unsigd +:: +vue +>:: +ty + * = 0) { + +94  +COMPARE_RESULT_LESS +; + +97 + gme + < +tyme + + gT2 +> + +98 +ComResu + +hmicComNegeLe +( + +99 +UI + +lhs +, cڡ +T2 + & +rhs +, + +100 +tyme + +ab_if +< +is_sigd +< +T2 +>:: +vue +>:: +ty + * = 0) { + +101 i( +rhs + > 0) + +102  +COMPARE_RESULT_LESS +; + +103  +hmicCom +(- +rhs +, +ic_ +< +T2 +>( +lhs +)); + +106 + gme + < +tyme + + gT1 +> + +107 +ComResu + +hmicComNegeRight +( + +108 cڡ +T1 + &, +UI +, +tyme + +ab_if +< +is_unsigd +:: +vue +>:: +ty + * = 0) { + +109  +COMPARE_RESULT_GREATER +; + +112 + gme + < +tyme + + gT1 +> + +113 +ComResu + +hmicComNegeRight +( + +114 cڡ +T1 + & +lhs +, +UI + +rhs +, + +115 +tyme + +ab_if +< +is_sigd +< +T1 +>:: +vue +>:: +ty + * = 0) { + +116 i( +lhs + > 0) + +117  +COMPARE_RESULT_GREATER +; + +118  +hmicCom +( +ic_ +< +T1 +>( +rhs +), - +lhs +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp + +5 #agm + + + +7 #i +defed +( +__g__ +) + +8 #agm +g + +dgnoic + +push + + +9 #agm +g + +dgnoic + +igned + "-Wconversion" + +10 #i +defed +( +__GNUC__ +) + +11 #i +__GNUC__ + > 4 || (__GNUC__ =4 && +__GNUC_MINOR__ + >= 6) + +12 #agm +GCC + +dgnoic + +push + + +14 #agm +GCC + +dgnoic + +igned + "-Wconversion" + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +22 +mea + + gARDUINOJSON_NAMESPACE + { + +24 + gme + < +tyme + + gTOut +,ym + gTIn +> + +25 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && ( +TOut +<( +TIn +), + +26 + gbo +>:: +ty + + +27 +nStePosiveIeg +( +TIn + +vue +) { + +28  +vue + < +TIn +( +numic_lims +< +TOut +>:: +highe +()); + +31 + gme + < +tyme + + gTOut +,ym + gTIn +> + +32 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && ( +TIn +< ( +TOut +), + +33 + gbo +>:: +ty + + +34 +nStePosiveIeg +( +TIn +) { + +35  +ue +; + +38 + gme + < +tyme + + gTOut +,ym + gTIn +> + +39 +tyme + + gab_if +< + gis_tg_pot +< + gTOut +>:: +vue +, + gbo +>:: +ty + + +40 +nStePosiveIeg +( +TIn +) { + +41  +ue +; + +44 + gme + < +tyme + + gTOut +,ym + gTIn +> + +45 +tyme + + gab_if +< + gis_tg_pot +< + gTOut +>:: +vue +, + gbo +>:: +ty + + +46 +nSteNegiveIeg +( +TIn +) { + +47  +ue +; + +50 + gme + < +tyme + + gTOut +,ym + gTIn +> + +51 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && +is_sigd +< +TOut +>::value && + +52 ( +TOut +<( +TIn +), + +53 + gbo +>:: +ty + + +54 +nSteNegiveIeg +( +TIn + +vue +) { + +55  +vue + < +TIn +( +numic_lims +< +TOut +>:: +highe +()) + 1; + +58 + gme + < +tyme + + gTOut +,ym + gTIn +> + +59 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && +is_sigd +< +TOut +>::value && + +60 ( +TIn +< ( +TOut +), + +61 + gbo +>:: +ty + + +62 +nSteNegiveIeg +( +TIn +) { + +63  +ue +; + +66 + gme + < +tyme + + gTOut +,ym + gTIn +> + +67 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && +is_unsigd +< +TOut +>::value, + +68 + gbo +>:: +ty + + +69 +nSteNegiveIeg +( +TIn +) { + +70  +l +; + +73 + gme + < +tyme + + gTOut +,ym + gTIn +> + +74 +TOut + +cvtPosiveIeg +( +TIn + +vue +) { + +75  + gnStePosiveIeg +< + gTOut +>( + gvue +? +TOut +( +vue +) : 0; + +78 + gme + < +tyme + + gTOut +,ym + gTIn +> + +79 +TOut + +cvtNegiveIeg +( +TIn + +vue +) { + +80  + gnSteNegiveIeg +< + gTOut +>( + gvue +? +TOut +(~ +vue + + 1) : 0; + +83 + gme + < +tyme + + gTOut +,ym + gTIn +> + +84 +tyme + + gab_if +< + gis_tg_pot +< + gTOut +>:: +vue +, TOut>:: +ty + +cvtFlt +( + +85 +TIn + +vue +) { + +86  +TOut +( +vue +); + +89 + gme + < +tyme + + gTOut +,ym + gTIn +> + +90 +tyme + + gab_if +:: +vue +, TOut>:: +ty + +cvtFlt +( + +91 +TIn + +vue +) { + +92  +vue + > +numic_lims +< +TOut +>:: +lowe +() && + +93 +vue + < +numic_lims +< +TOut +>:: +highe +() + +94 ? +TOut +( +vue +) + +99 #i +defed +( +__g__ +) + +100 #agm +g + +dgnoic + +p + + +101 #i +defed +( +__GNUC__ +) + +102 #i +__GNUC__ + > 4 || (__GNUC__ =4 && +__GNUC_MINOR__ + >= 6) + +103 #agm +GCC + +dgnoic + +p + + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 + gme + < +tyme + + gA +,ym + gB +> + +19  + gchoo_rge + : +cdiڮ +<(( +A +> ( +B +)), + gA +, + gB +> {}; + +21 +le + +bo + +rNumb +(cڡ * +s +, +VDa +& +su +) { + +22  + gFltTs +< + tFlt +> + tas +; + +23  + gchoo_rge +< + tas +:: + tmtis_ty +, + tUI +>:: + tty + + tmtis_t +; + +24  + gas +:: + texpڒt_ty + + texpڒt_t +; + +26 +ARDUINOJSON_ASSERT +( +s + != 0); + +28 +bo + + gis_give + = +l +; + +29 * + gs +) { + +31 +is_give + = +ue +; + +32 + gs +++; + +35 +s +++; + +39 #i +ARDUINOJSON_ENABLE_NAN + + +40 i(* + gs + ='n' || * +s + == 'N') { + +41 +su +. +tFlt +( +as +:: +n +()); + +42  + gue +; + +46 #i +ARDUINOJSON_ENABLE_INFINITY + + +47 i(* + gs + ='i' || * +s + == 'I') { + +48 +su +. +tFlt +( +is_give + ? - +as +:: +f +() :raits::inf()); + +49  + gue +; + +53 i(! +isdig +(* +s +&& * + gs + != '.') + +54  +l +; + +56 +mtis_t + + gmtis + = 0; + +57 +expڒt_t + + gexpڒt_offt + = 0; + +58 cڡ +mtis_t + + gmaxUt + = +UI +(-1); + +60  +isdig +(* +s +)) { + +61 +ut8_t + + gdig + = ut8_t(* +s + - '0'); + +62 i( + gmtis + > + gmaxUt + / 10) + +64 + gmtis + *= 10; + +65 i( + gmtis + > + gmaxUt + - + gdig +) + +67 + gmtis + + +dig +; + +68 + gs +++; + +71 i(* + gs + == '\0') { + +72 i( +is_give +) + +73 +su +. +tNegiveIeg +( +UI +( +mtis +)); + +75 + gsu +. +tPosiveIeg +( +UI +( +mtis +)); + +76  + gue +; + +80  + gmtis + > + gas +:: +mtis_max +) { + +81 +mtis + /= 10; + +82 + gexpڒt_offt +++; + +86  +isdig +(* +s +)) { + +87 + gexpڒt_offt +++; + +88 + gs +++; + +91 i(* + gs + == '.') { + +92 +s +++; + +93  +isdig +(* +s +)) { + +94 i( + gmtis + < + gas +:: +mtis_max + / 10) { + +95 +mtis + = mtis * 10 + +ut8_t +(* +s + - '0'); + +96 + gexpڒt_offt +--; + +98 + gs +++; + +102  + gexpڒt + = 0; + +103 i(* + gs + ='e' || * +s + == 'E') { + +104 +s +++; + +105 +bo + + ggive_expڒt + = +l +; + +106 i(* + gs + == '-') { + +107 +give_expڒt + = +ue +; + +108 + gs +++; + +109 } i(* + gs + == '+') { + +110 +s +++; + +113  +isdig +(* +s +)) { + +114 + gexpڒt + = +expڒt + * 10 + (* +s + - '0'); + +115 i( + gexpڒt + + + gexpڒt_offt + > + gas +:: +expڒt_max +) { + +116 i( +give_expڒt +) + +117 +su +. +tFlt +( +is_give + ? -0.0f : 0.0f); + +119 + gsu +. +tFlt +( +is_give + ? - +as +:: +f +() :raits::inf()); + +120  + gue +; + +122 + gs +++; + +124 i( + ggive_expڒt +) + +125 + gexpڒt + = - +expڒt +; + +127 + gexpڒt + + +expڒt_offt +; + +130 i(* + gs + != '\0') + +131  +l +; + +133 +Flt + + gf_su + = + +134 +as +:: +make_t +( +ic_ +< +Flt +>( +mtis +), +expڒt +); + +136 + gsu +. +tFlt +( +is_give + ? - +f_su + : final_result); + +137  + gue +; + +140 + gme + < +tyme + + gT +> + +141 +le + +T + +rNumb +(cڡ * +s +) { + +142 +VDa + + gvue +; + +143 + gvue +. + +(); + +144 +rNumb +( +s +, +vue +); + +145  + gvAs +< + gT +>(& + gvue +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 #ifde +_MSC_VER + + +15 #agm +wng +( +push +) + +16 #agm +wng +( +dib + : 4522) + +19 +mea + + gARDUINOJSON_NAMESPACE + { + +21 + gme + < +tyme + + gTObje +,ym + gTSgRef +> + +22 +ass + + gMembProxy + : +public + +VOts +< +MembProxy +< +TObje +, + gTSgRef +> >, + +23 +public + + gVShtcuts +< + gMembProxy +< + gTObje +, + gTSgRef +> >, + +24 +public + + gVisab + { + +25  + gMembProxy +< + tTObje +, + tTSgRef +> + tthis_ty +; + +27 + gpublic +: + +28 +FORCE_INLINE + +MembProxy +( +TObje + +v +, +TSgRef + +key +) + +29 : +_obje +( +v +), +_key +( +key +) {} + +31 +FORCE_INLINE + +MembProxy +(cڡ MembProxy & +c +) + +32 : +_obje +( +c +._obje), +_key +(src._key) {} + +34 +FORCE_INLINE + +ݔ + +VCڡRef +() const { + +35  +gUpamMemb +(); + +38 +FORCE_INLINE + + gthis_ty + & + gݔ +=(cڡ +this_ty + & +c +) { + +39 +gOrAddUpamMemb +(). +t +( +c +); + +40  * + gthis +; + +43 + gme + < +tyme + + gTVue +> + +44 +FORCE_INLINE + +tyme + + gab_if +:: +vue +, + gthis_ty + &>:: +ty + + +45 +ݔ +=(cڡ +TVue + & +c +) { + +46 +gOrAddUpamMemb +(). +t +( +c +); + +47  * + gthis +; + +53 + gme + < +tyme + + gTCh +> + +54 +FORCE_INLINE + + gthis_ty + & + gݔ +=( +TCh + * +c +) { + +55 +gOrAddUpamMemb +(). +t +( +c +); + +56  * + gthis +; + +59 +FORCE_INLINE +  +r +() const { + +60 +gUpamMemb +(). +r +(); + +63 +FORCE_INLINE + +bo + +isNu +() const { + +64  +gUpamMemb +(). +isNu +(); + +67 + gme + < +tyme + + gTVue +> + +68 +FORCE_INLINE + +tyme + + gVAs +< + gTVue +>:: +ty + +as +() const { + +69  +gUpamMemb +(). +me + +as +< +TVue +>(); + +72 + gme + < +tyme + + gT +> + +73 +FORCE_INLINE + +ݔ + +T +() const { + +74  +gUpamMemb +(); + +77 + gme + < +tyme + + gTVue +> + +78 +FORCE_INLINE + +bo + +is +() const { + +79  +gUpamMemb +(). +me + + gis +< + gTVue +>(); + +82 +FORCE_INLINE + +size_t + +size +() const { + +83  +gUpamMemb +(). +size +(); + +86 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +87 +gUpamMemb +(). +move +( +dex +); + +92 + gme + < +tyme + + gTCh +> + +93 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +>:: +ty + +move +( + +94 +TCh + * +key +) const { + +95 +gUpamMemb +(). +move +( +key +); + +99 + gme + < +tyme + + gTSg +> + +100 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +101 cڡ +TSg + & +key +) const { + +102 +gUpamMemb +(). +move +( +key +); + +105 + gme + < +tyme + + gTVue +> + +106 +FORCE_INLINE + +tyme + + gVTo +< + gTVue +>:: +ty + +to +() { + +107  +gOrAddUpamMemb +(). +me + +to +< +TVue +>(); + +110 + gme + < +tyme + + gTVue +> + +111 +FORCE_INLINE + +bo + +t +(cڡ +TVue + & +vue +) { + +112  +gOrAddUpamMemb +(). +t +( +vue +); + +118 + gme + < +tyme + + gTCh +> + +119 +FORCE_INLINE + +bo + +t +( +TCh + * +vue +) { + +120  +gOrAddUpamMemb +(). +t +( +vue +); + +123 + gme + < +tyme + + gTVis +> + +124 +tyme + + gTVis +:: +su_ty + +ac +( +TVis + & +vis +) const { + +125  +gUpamMemb +(). +ac +( +vis +); + +128 +FORCE_INLINE + +VRef + +addEmt +() const { + +129  +gOrAddUpamMemb +(). +addEmt +(); + +132 +FORCE_INLINE + +VRef + +gEmt +( +size_t + +dex +) const { + +133  +gUpamMemb +(). +gEmt +( +dex +); + +136 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t + +dex +) const { + +137  +gOrAddUpamMemb +(). +gOrAddEmt +( +dex +); + +143 + gme + < +tyme + + gTCh +> + +144 +FORCE_INLINE + +VRef + +gMemb +( +TCh + * +key +) const { + +145  +gUpamMemb +(). +gMemb +( +key +); + +150 + gme + < +tyme + + gTSg +> + +151 +FORCE_INLINE + +VRef + +gMemb +(cڡ +TSg + & +key +) const { + +152  +gUpamMemb +(). +gMemb +( +key +); + +158 + gme + < +tyme + + gTCh +> + +159 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh + * +key +) const { + +160  +gOrAddUpamMemb +(). +gOrAddMemb +( +key +); + +165 + gme + < +tyme + + gTSg +> + +166 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg + & +key +) const { + +167  +gOrAddUpamMemb +(). +gOrAddMemb +( +key +); + +170 + give +: + +171 +FORCE_INLINE + +VRef + +gUpamMemb +() const { + +172  +_obje +. +gMemb +( +_key +); + +175 +FORCE_INLINE + +VRef + +gOrAddUpamMemb +() const { + +176  + g_obje +. +gOrAddMemb +( +_key +); + +179 +TObje + + g_obje +; + +180 +TSgRef + + g_key +; + +185 #ifde +_MSC_VER + + +186 #agm +wng +( +p +) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTVis +> + +12 +tyme + + gTVis +:: +su_ty + +objeAc +(cڡ +CiDa + * +obj +, + +13 +TVis + & +vis +) { + +14 i( + gobj +) + +15  + gvis +. +visObje +(* +obj +); + +17  + gvis +. +visNu +(); + +20 +le + +bo + +objeEqus +(cڡ +CiDa + * +lhs +, cڡ CiD* +rhs +) { + +21 i( + glhs + = +rhs +) + +22  +ue +; + +23 i(! + glhs + || ! + grhs +) + +24  + gl +; + +25  + glhs +-> +equsObje +(* +rhs +); + +28 + gme + < +tyme + + gTAddSg +> + +29 +le + +VDa + * +objeGMemb +(cڡ +CiDa + * +obj +, + +30 +TAddSg + +key +) { + +31 i(! + gobj +) + +33  + gobj +-> +gMemb +( +key +); + +36 + gme + < +tyme + + gTAddSg +> + +37  +objeRemove +( +CiDa + * +obj +, +TAddSg + +key +) { + +38 i(! + gobj +) + +40 + gobj +-> +moveMemb +( +key +); + +43 + gme + < +tyme + + gTAddSg +> + +44 +le + +VDa + * +objeGOrAddMemb +( +CiDa + * +obj +, + +45 +TAddSg + +key +, +MemyPo + * +po +) { + +46 i(! + gobj +) + +49  + gobj +-> +gOrAddMemb +( +key +, +po +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTObje +> + +13 + gme + < +tyme + + gTSg +> + +14 +le + +AayRef + + gObjeShtcuts +< + gTObje +>:: +NeedAay +( + +15 cڡ +TSg +& +key +) const { + +16  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +AayRef +>(); + +19 + gme + < +tyme + + gTObje +> + +20 + gme + < +tyme + + gTCh +> + +21 +le + +AayRef + + gObjeShtcuts +< + gTObje +>:: +NeedAay +( +TCh +* +key +) const { + +22  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +AayRef +>(); + +25 + gme + < +tyme + + gTObje +> + +26 + gme + < +tyme + + gTSg +> + +27 +le + +ObjeRef + + gObjeShtcuts +< + gTObje +>:: +NeedObje +( + +28 cڡ +TSg +& +key +) const { + +29  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +ObjeRef +>(); + +32 + gme + < +tyme + + gTObje +> + +33 + gme + < +tyme + + gTCh +> + +34 +le + +ObjeRef + + gObjeShtcuts +< + gTObje +>:: +NeedObje +( + +35 +TCh +* +key +) const { + +36  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +ObjeRef +>(); + +39 + gme + < +tyme + + gTObje +> + +40 + gme + < +tyme + + gTSg +> + +41 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gbo +>:: +ty + + +42 +ObjeShtcuts +< +TObje +>:: +cڏsKey +(cڡ +TSg +& +key +) const { + +43  ! +im +()-> +gMemb +( +key +). +isUndefed +(); + +46 + gme + < +tyme + + gTObje +> + +47 + gme + < +tyme + + gTCh +> + +48 +le + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + gbo +>:: +ty + + +49 +ObjeShtcuts +< +TObje +>:: +cڏsKey +( +TCh +* +key +) const { + +50  ! +im +()-> +gMemb +( +key +). +isUndefed +(); + +53 + gme + < +tyme + + gTObje +> + +54 + gme + < +tyme + + gTSg +> + +55 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +*>:: +vue +, + +56 + gMembProxy +< + gTObje +, + gTSg +*> >:: +ty + + +57 +ObjeShtcuts +< +TObje +>:: +ݔ +[]( +TSg +* +key +) const { + +58  +MembProxy +< +TObje +, + gTSg +*>(* +im +(), + gkey +); + +61 + gme + < +tyme + + gTObje +> + +62 + gme + < +tyme + + gTSg +> + +63 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + +64 + gMembProxy +< + gTObje +, + gTSg +> >:: +ty + + +65 +ObjeShtcuts +< +TObje +>:: +ݔ +[](cڡ +TSg +& +key +) const { + +66  +MembProxy +< +TObje +, + gTSg +>(* +im +(), + gkey +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cPaP + { + +13 + gpublic +: + +14 +PaP +( +MemyPo + * +po +, +VSl + * + +: +_ +(pool, slot) {} + +16 cڡ +Pa + * + gݔ +->() const { + +17  & + g_ +; + +20 cڡ + gPa + & + gݔ +*() const { + +21  + g_ +; + +24 + give +: + +25 +Pa + +_ +; + +28 as + cObjeIt + { + +29 + gpublic +: + +30 +ObjeIt +(: +_ +(0) {} + +32 +exic + +ObjeIt +( +MemyPo + * +po +, +VSl + * + +) + +33 : +_po +( +po +), +_ +( + +) {} + +35 +Pa + + gݔ +*() const { + +36  +Pa +( +_po +, +_ +); + +38 +PaP + + gݔ +->() { + +39  +PaP +( +_po +, +_ +); + +42 +bo + + gݔ +==(cڡ +ObjeIt + & +h +) const { + +43  +_ + = +h +._slot; + +46 +bo + + gݔ +!=(cڡ +ObjeIt + & +h +) const { + +47  +_ + ! +h +._slot; + +50 + gObjeIt + & + gݔ +++() { + +51 + g_ + = +_ +-> +xt +(); + +52  * + gthis +; + +55 + gObjeIt + & + gݔ ++=( +size_t + +di +) { + +56 +_ + = _-> +xt +( +di +); + +57  * + gthis +; + +60 +VSl + * + +() { + +61  + g_ +; + +64 + give +: + +65 +MemyPo + * +_po +; + +66 +VSl + * + g_ +; + +69 as + cPaCڡP + { + +70 + gpublic +: + +71 +PaCڡP +(cڡ +VSl + * + +: +_ +(slot) {} + +73 cڡ +PaCڡ + * +ݔ +->() const { + +74  & +_ +; + +77 cڡ + gPaCڡ + & + gݔ +*() const { + +78  + g_ +; + +81 + give +: + +82 +PaCڡ + +_ +; + +85 as + cObjeCڡIt + { + +86 + gpublic +: + +87 +ObjeCڡIt +(: +_ +(0) {} + +89 +exic + +ObjeCڡIt +(cڡ +VSl + * + +: +_ +(slot) {} + +91 +PaCڡ + +ݔ +*() const { + +92  +PaCڡ +( +_ +); + +94 +PaCڡP + + gݔ +->() { + +95  +PaCڡP +( +_ +); + +98 +bo + + gݔ +==(cڡ +ObjeCڡIt + & +h +) const { + +99  +_ + = +h +._slot; + +102 +bo + + gݔ +!=(cڡ +ObjeCڡIt + & +h +) const { + +103  +_ + ! +h +._slot; + +106 + gObjeCڡIt + & + gݔ +++() { + +107 + g_ + = +_ +-> +xt +(); + +108  * + gthis +; + +111 + gObjeCڡIt + & + gݔ ++=( +size_t + +di +) { + +112 +_ + = _-> +xt +( +di +); + +113  * + gthis +; + +116 cڡ +VSl + * + +() { + +117  + g_ +; + +120 + give +: + +121 cڡ +VSl + * +_ +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +12  + #JSON_OBJECT_SIZE +( +NUMBER_OF_ELEMENTS +) \ + +13 (( +NUMBER_OF_ELEMENTS +* ( +ARDUINOJSON_NAMESPACE +:: +VSl +)) + + ) + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gTDa +> + +18 as + cObjeRefBa + { + +19 + gpublic +: + +20 +ݔ + +VCڡRef +() const { + +21 cڡ * +da + = +_da +; + +22  +VCڡRef +( +t_ +( +da +)); + +25 + gme + < +tyme + + gTVis +> + +26 +tyme + + gTVis +:: +su_ty + +ac +( +TVis +& +vis +) const { + +27  +objeAc +( +_da +, +vis +); + +30 +FORCE_INLINE + +bo + +isNu +() const { + +31  + g_da + == 0; + +34 +FORCE_INLINE + +ݔ + +bo +() const { + +35  + g_da + != 0; + +38 +FORCE_INLINE + +size_t + +memyUge +() const { + +39  + g_da + ? _da-> +memyUge +() : 0; + +42 +FORCE_INLINE + +size_t + +ág +() const { + +43  + g_da + ? _da-> +ág +() : 0; + +46 +FORCE_INLINE + +size_t + +size +() const { + +47  + g_da + ? _da-> +size +() : 0; + +50 + geed +: + +51 +ObjeRefBa +( +TDa +* +da +: +_da +(data) {} + +52 +TDa +* +_da +; + +55 +ass + + gObjeCڡRef + : +public + +ObjeRefBa +, + +56 +public + + gVisab + { + +57 +nd + +ass + + gObjeRef +; + +58  + gObjeRefBa + + tba_ty +; + +60 + gpublic +: + +61  +ObjeCڡIt + + t +; + +63 +ObjeCڡRef +(: +ba_ty +(0) {} + +64 +ObjeCڡRef +(cڡ +CiDa +* +da +: +ba_ty +(data) {} + +66 +FORCE_INLINE + + + +beg +() const { + +67 i(! +_da +) + +68  + +(); + +69  + +( +_da +-> +hd +()); + +72 +FORCE_INLINE + + + +d +() const { + +73  + +(); + +78 + gme + < +tyme + + gTSg +> + +79 +FORCE_INLINE + +bo + +cڏsKey +(cڡ +TSg +& +key +) const { + +80  ! +gMemb +( +key +). +isUndefed +(); + +86 + gme + < +tyme + + gTCh +> + +87 +FORCE_INLINE + +bo + +cڏsKey +( +TCh +* +key +) const { + +88  ! +gMemb +( +key +). +isUndefed +(); + +93 + gme + < +tyme + + gTSg +> + +94 +FORCE_INLINE + +VCڡRef + +gMemb +(cڡ +TSg +& +key +) const { + +95  +g_im +( +adtSg +( +key +)); + +101 + gme + < +tyme + + gTCh +> + +102 +FORCE_INLINE + +VCڡRef + +gMemb +( +TCh +* +key +) const { + +103  +g_im +( +adtSg +( +key +)); + +108 + gme + < +tyme + + gTSg +> + +109 +FORCE_INLINE + + +110 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +111 +ݔ +[](cڡ +TSg +& +key +) const { + +112  +g_im +( +adtSg +( +key +)); + +118 + gme + < +tyme + + gTCh +> + +119 +FORCE_INLINE + + +120 +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + gVCڡRef +>:: +ty + + +121 +ݔ +[]( +TCh +* +key +) const { + +122  +g_im +( +adtSg +( +key +)); + +125 +FORCE_INLINE + +bo + + gݔ +==( +ObjeCڡRef + +rhs +) const { + +126  +objeEqus +( +_da +, +rhs +._data); + +129 + give +: + +130 +me + < +tyme + +TAddSg +> + +131 +FORCE_INLINE + +VCڡRef + +g_im +( +TAddSg + +key +) const { + +132  +VCڡRef +( +objeGMemb +( +_da +, +key +)); + +136 +ass + + gObjeRef + : +public + +ObjeRefBa +< +CiDa +>, + +137 +public + + gObjeShtcuts +< + gObjeRef +>, + +138 +public + + gVisab + { + +139  + gObjeRefBa +< + tCiDa +> + tba_ty +; + +141 + gpublic +: + +142  +ObjeIt + + t +; + +144 +FORCE_INLINE + +ObjeRef +(: +ba_ty +(0), +_po +(0) {} + +145 +FORCE_INLINE + +ObjeRef +( +MemyPo +* +buf +, +CiDa +* +da +) + +146 : +ba_ty +( +da +), +_po +( +buf +) {} + +148 +ݔ + +VRef +() const { + +149 * + gda + = +_da +; + +150  +VRef +( +_po +, +t_ +< +VDa +*>( +da +)); + +153 +ݔ + +ObjeCڡRef +() const { + +154  +ObjeCڡRef +( +_da +); + +157 +FORCE_INLINE + + + +beg +() const { + +158 i(! + g_da +) + +159  + +(); + +160  + +( +_po +, +_da +-> +hd +()); + +163 +FORCE_INLINE + + + +d +() const { + +164  + +(); + +167  +r +() const { + +168 i(! + g_da +) + +170 + g_da +-> +r +(); + +173 +FORCE_INLINE + +bo + +t +( +ObjeCڡRef + +c +) { + +174 i(! + g_da + || ! + gc +._data) + +175  + gl +; + +176  + g_da +-> +cyFrom +(* +c +. +_da +, +_po +); + +181 + gme + < +tyme + + gTSg +> + +182 +FORCE_INLINE + +VRef + +gMemb +(cڡ +TSg +& +key +) const { + +183  +VRef +( +_po +, +objeGMemb +( +_da +, +adtSg +( +key +))); + +189 + gme + < +tyme + + gTCh +> + +190 +FORCE_INLINE + +VRef + +gMemb +( +TCh +* +key +) const { + +191  +VRef +( +_po +, +objeGMemb +( +_da +, +adtSg +( +key +))); + +196 + gme + < +tyme + + gTSg +> + +197 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg +& +key +) const { + +198  +VRef +( +_po +, + +199 +objeGOrAddMemb +( +_da +, +adtSg +( +key +), +_po +)); + +205 + gme + < +tyme + + gTCh +> + +206 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh +* +key +) const { + +207  +VRef +( +_po +, + +208 +objeGOrAddMemb +( +_da +, +adtSg +( +key +), +_po +)); + +211 +FORCE_INLINE + +bo + + gݔ +==( +ObjeRef + +rhs +) const { + +212  +objeEqus +( +_da +, +rhs +._data); + +215 +FORCE_INLINE +  +move +( + + + +) const { + +216 i(! + g_da +) + +218 + g_da +-> +moveSl +( + +. + +()); + +223 + gme + < +tyme + + gTSg +> + +224 +FORCE_INLINE +  +move +(cڡ +TSg +& +key +) const { + +225 +objeRemove +( +_da +, +adtSg +( +key +)); + +231 + gme + < +tyme + + gTCh +> + +232 +FORCE_INLINE +  +move +( +TCh +* +key +) const { + +233 +objeRemove +( +_da +, +adtSg +( +key +)); + +236 + give +: + +237 +MemyPo +* +_po +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTPt +,ym + gTSgRef +> + +13 +ass + + gMembProxy +; + +15 + gme + < +tyme + + gTObje +> + +16 as + cObjeShtcuts + { + +17 + gpublic +: + +20 +me + < +tyme + +TSg +> + +21 +FORCE_INLINE + +tyme + +ab_if +< +IsSg +< +TSg +>:: +vue +, + gbo +>:: +ty + + +22 +cڏsKey +(cڡ +TSg + & +key +) const; + +27 + gme + < +tyme + + gTCh +> + +28 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +, + gbo +>:: +ty + + +29 +cڏsKey +( +TCh + * +key +) const; + +33 + gme + < +tyme + + gTSg +> + +34 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + +35 + gMembProxy +< + gTObje +, + gTSg +> >:: +ty + + +36 +ݔ +[](cڡ +TSg + & +key +) const; + +41 + gme + < +tyme + + gTCh +> + +42 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +, + +43 + gMembProxy +< + gTObje +, + gTCh + *> >:: +ty + + +44 +ݔ +[]( +TCh + * +key +) const; + +48 + gme + < +tyme + + gTSg +> + +49 +FORCE_INLINE + +AayRef + +NeedAay +(cڡ +TSg + & +key +) const; + +54 + gme + < +tyme + + gTCh +> + +55 +FORCE_INLINE + +AayRef + +NeedAay +( +TCh + * +key +) const; + +59 + gme + < +tyme + + gTSg +> + +60 +ObjeRef + +NeedObje +(cڡ +TSg + & +key +) const; + +65 + gme + < +tyme + + gTCh +> + +66 +ObjeRef + +NeedObje +( +TCh + * +key +) const; + +68 + give +: + +69 cڡ +TObje + * +im +() const { + +70  +ic_ +( +this +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/Pair.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cPa + { + +13 + gpublic +: + +14 +Pa +( +MemyPo +* +po +, +VSl +* + +) { + +15 i( + g +) { + +16 + g_key + = +Sg +( + +-> +key +(), !-> +ownsKey +()); + +17 + g_vue + = +VRef +( +po +, + +-> +da +()); + +21 +Sg + +key +() const { + +22  + g_key +; + +25 +VRef + +vue +() const { + +26  + g_vue +; + +29 + give +: + +30 +Sg + +_key +; + +31 +VRef + + g_vue +; + +34 as + cPaCڡ + { + +35 + gpublic +: + +36 +PaCڡ +(cڡ +VSl +* + +) { + +37 i( + +) { + +38 +_key + = +Sg +( + +-> +key +(), !-> +ownsKey +()); + +39 + g_vue + = +VCڡRef +( + +-> +da +()); + +43 +Sg + +key +() const { + +44  + g_key +; + +47 +VCڡRef + +vue +() const { + +48  + g_vue +; + +51 + give +: + +52 +Sg + +_key +; + +53 +VCڡRef + + g_vue +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~"mh.h +" + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + < +tyme + + gT +,ym + gF +> + +16  + ss__t + { + +18 +F + + gw +; + +19 +T + + gda +; + +23 + gme + < +tyme + + gT +,ym + gF +> + +24 +T + +s_ +( +F + +w_da +) { + +25 + gs__t +< + gT +, + gF +> + gac +; + +26 + gac +. + gw + = +w_da +; + +27  + gac +. + gda +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp + +5 #agm + + + +7  + ~ + +9 #i +ARDUINOJSON_DEBUG + + +10  + ~ + +11  + #ARDUINOJSON_ASSERT +( +X + + `as +(X) + + ) + +13  + #ARDUINOJSON_ASSERT +( +X +(()0) + + ) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp + +5 #agm + + + +7 #ifde +_MSC_VER + + +9  + #FORCE_INLINE + + +10  + #NO_INLINE + + `__deec +( +nole +) + + ) + +11  + #DEPRECATED +( +msg + + `__deec +( + `dd +(msg)) + + ) + +13 #i +defed +( +__GNUC__ +) + +15  + #FORCE_INLINE + + `__ibu__ +(( +ways_le +)) + + ) + +16  + #NO_INLINE + + `__ibu__ +(( +nole +)) + + ) + +17 #i +__GNUC__ + > 4 || (__GNUC__ =4 && +__GNUC_MINOR__ + >= 5) + +18  + #DEPRECATED +( +msg + + `__ibu__ +(( + `dd +(msg))) + + ) + +20  + #DEPRECATED +( +msg + + `__ibu__ +(( +dd +)) + + ) + +25  + #FORCE_INLINE + + + ) + +26  + #NO_INLINE + + + ) + +27  + #DEPRECATED +( +msg +) + + ) + +31 #i +__lulus + >= 201103L + +32  + #NOEXCEPT + +nx + + + ) + +34  + #NOEXCEPT + + `throw +() + + ) + +37 #i +defed +( +__has_ibu +) + +38 #i +__has_ibu +( +no_nize +) + +39  + #ARDUINOJSON_NO_SANITIZE +( +check + + `__ibu__ +(( + `no_nize +(check))) + + ) + +41  + #ARDUINOJSON_NO_SANITIZE +( +check +) + + ) + +44  + #ARDUINOJSON_NO_SANITIZE +( +check +) + + ) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +le + +bo + +isdig +( +c +) { + +12  '0' < +c + && c <= '9'; + +15 +le + +bo + +issign +( +c +) { + +16  '-' = +c + || c == '+'; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp + +5 #agm + + + +7  + ~"ty_as.h +" + +9 #ifde +_MSC_VER + + +10 #agm +wng +( +push +) + +11 #agm +wng +( +dib + : 4310) + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gT +,ym + gEb + = > + +18  +numic_lims +; + +20 + gme + < +tyme + + gT +> + +21  + gnumic_lims +< + gT +, +tyme + + gab_if +< + gis_unsigd +:: +vue +>:: +ty +> { + +22  +T + +lowe +() { + +25  +T + +highe +() { + +26  +T +(-1); + +30 + gme + < +tyme + + gT +> + +31  + gnumic_lims +< + +32 + gT +, +tyme + + gab_if +< + gis_gl +:: +vue + && +is_sigd +< +T +>::vue>:: +ty +> { + +33  +T + +lowe +() { + +34  +T +(T(1) << ((T) * 8 - 1)); + +36  +T + +highe +() { + +37  +T +(~ +lowe +()); + +43 #ifde +_MSC_VER + + +44 #agm +wng +( +p +) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +14 #ide +i + + +15 + gme + < +tyme + + gT +> + +16 +bo + +i +( +T + +x +) { + +17  + gx + ! +x +; + +21 #ide +isf + + +22 + gme + < +tyme + + gT +> + +23 +bo + +isf +( +T + +x +) { + +24  + gx + !0.0 && +x + * 2 == x; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +size_t + + gX +, size_ + gY +, +bo + + gMaxIsX + = ( +X + > +Y +)> + +15  + sMax + {}; + +17 + gme + < +size_t + + gX +, size_ + gY +> + +18  + gMax +< + gX +, + gY +, + gue +> { + +19 cڡ +size_t + + gvue + = +X +; + +22 + gme + < +size_t + + gX +, size_ + gY +> + +23  + gMax +< + gX +, + gY +, + gl +> { + +24 cڡ +size_t + + gvue + = +Y +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +14  + spgm_p + { + +15 +pgm_p +(cڡ * +p +: +addss +(p) {} + +16 cڡ * +addss +; + +20 #ide +_P + + +21 +le + +size_t + + $_P +( +ARDUINOJSON_NAMESPACE +:: +pgm_p + +s +) { + +22 cڡ * +p + = +s +. +addss +; + +23 + `ARDUINOJSON_ASSERT +( +p + ! +NULL +); + +24  + `pgm_ad_by +( +p +))++; + +25  + `size_t +( +p + - +s +. +addss +); + +26 + } +} + +29 #ide +cmp_P + + +30 +le +  + $cmp_P +(cڡ * +a +, +ARDUINOJSON_NAMESPACE +:: +pgm_p + +b +, +size_t + +n +) { + +31 cڡ * +s1 + = +a +; + +32 cڡ * +s2 + = +b +. +addss +; + +33 + `ARDUINOJSON_ASSERT +( +s1 + ! +NULL +); + +34 + `ARDUINOJSON_ASSERT +( +s2 + ! +NULL +); + +35  +n +-- > 0) { + +36  +c1 + = * +s1 +++; + +37  +c2 + = +ic_ +<>( + `pgm_ad_by +( +s2 +++)); + +38 i( +c1 + < +c2 +) + +40 i( +c1 + > +c2 +) + +42 i( +c1 + == 0 ) + +46 + } +} + +49 #ide +rcmp_P + + +50 +le +  + $rcmp_P +(cڡ * +a +, +ARDUINOJSON_NAMESPACE +:: +pgm_p + +b +) { + +51 cڡ * +s1 + = +a +; + +52 cڡ * +s2 + = +b +. +addss +; + +53 + `ARDUINOJSON_ASSERT +( +s1 + ! +NULL +); + +54 + `ARDUINOJSON_ASSERT +( +s2 + ! +NULL +); + +56  +c1 + = * +s1 +++; + +57  +c2 + = +ic_ +<>( + `pgm_ad_by +( +s2 +++)); + +58 i( +c1 + < +c2 +) + +60 i( +c1 + > +c2 +) + +62 i( +c1 + == 0 ) + +65 + } +} + +68 #ide +memy_P + + +69 +le + * + $memy_P +(* +d +, +ARDUINOJSON_NAMESPACE +:: +pgm_p + +c +, +size_t + +n +) { + +70 +ut8_t +* +d + = +t_ +( +d +); + +71 cڡ * +s + = +c +. +addss +; + +72 + `ARDUINOJSON_ASSERT +( +d + ! +NULL +); + +73 + `ARDUINOJSON_ASSERT +( +s + ! +NULL +); + +74  +n +-- > 0) { + +75 * +d +++ = + `pgm_ad_by +( +s +++); + +77  +d +; + +78 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13 +tyme + + gab_if +< + gis_por +< + gT +>:: +vue +, T>:: +ty + +pgm_ad +(cڡ * +p +) { + +14  +t_ +< +T +>( +pgm_ad_r +( +p +)); + +17 + gme + < +tyme + + gT +> + +18 +tyme + + gab_if +< + gis_tg_pot +< + gT +>:: +vue + && + +19 ( +T +) == (), + +21 + gT +>:: +ty + + +22 +pgm_ad +(cڡ * +p +) { + +23  +pgm_ad_t +( +p +); + +26 + gme + < +tyme + + gT +> + +27 +tyme + + gab_if +< + gis_me +< + gT +, + gut32_t +>:: +vue +, T>:: +ty + +pgm_ad +( + +28 cڡ * +p +) { + +29  +pgm_ad_dwd +( +p +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp + +5 #agm + + + +7  + #ARDUINOJSON_EXPAND6 +( +a +, +b +, +c +, +d +, +e +, +f +a, b, c, d,, + ) +f + +8  + #ARDUINOJSON_EXPAND7 +( +a +, +b +, +c +, +d +, +e +, +f +, +g +a, b, c, d,, f, + ) +g + +9  + #ARDUINOJSON_EXPAND9 +( +a +, +b +, +c +, +d +, +e +, +f +, +g +, +h +, +i +a, b, c, d,, f, g, h, + ) +i + +10  + #ARDUINOJSON_EXPAND18 +( +a +, +b +, +c +, +d +, +e +, +f +, +g +, +h +, +i +, +j +, +k +, +l +, +m +, +n +, +o +, +p +, \ + +11 +q +, +r +) \ + +12 +a +, +b +, +c +, +d +, +e +, +f +, +g +, +h +, +i +, +j +, +k +, +l +, +m +, +n +, +o +, +p +, +q +, +r + + + ) + +14  + #ARDUINOJSON_CONCAT_ +( +A +, +B +A## + ) +B + +15  + #ARDUINOJSON_CONCAT2 +( +A +, +B + + `ARDUINOJSON_CONCAT_ +(A, B) + + ) + +16  + #ARDUINOJSON_CONCAT4 +( +A +, +B +, +C +, +D +) \ + +17 + `ARDUINOJSON_CONCAT2 +(ARDUINOJSON_CONCAT2( +A +, +B +), ARDUINOJSON_CONCAT2( +C +, +D +)) + + ) + +19  + #ARDUINOJSON_HEX_DIGIT_0000 +(0 + + ) + +20  + #ARDUINOJSON_HEX_DIGIT_0001 +(1 + + ) + +21  + #ARDUINOJSON_HEX_DIGIT_0010 +(2 + + ) + +22  + #ARDUINOJSON_HEX_DIGIT_0011 +(3 + + ) + +23  + #ARDUINOJSON_HEX_DIGIT_0100 +(4 + + ) + +24  + #ARDUINOJSON_HEX_DIGIT_0101 +(5 + + ) + +25  + #ARDUINOJSON_HEX_DIGIT_0110 +(6 + + ) + +26  + #ARDUINOJSON_HEX_DIGIT_0111 +(7 + + ) + +27  + #ARDUINOJSON_HEX_DIGIT_1000 +(8 + + ) + +28  + #ARDUINOJSON_HEX_DIGIT_1001 +(9 + + ) + +29  + #ARDUINOJSON_HEX_DIGIT_1010 +( +A + + + ) + +30  + #ARDUINOJSON_HEX_DIGIT_1011 +( +B + + + ) + +31  + #ARDUINOJSON_HEX_DIGIT_1100 +( +C + + + ) + +32  + #ARDUINOJSON_HEX_DIGIT_1101 +( +D + + + ) + +33  + #ARDUINOJSON_HEX_DIGIT_1110 +( +E + + + ) + +34  + #ARDUINOJSON_HEX_DIGIT_1111 +( +F + + + ) + +35  + #ARDUINOJSON_HEX_DIGIT_ +( +A +, +B +, +C +, +D + +ARDUINOJSON_HEX_DIGIT_ +##A##B##C## + `D +() + + ) + +36  + #ARDUINOJSON_HEX_DIGIT +( +A +, +B +, +C +, +D + + `ARDUINOJSON_HEX_DIGIT_ +(A, B, C, D) + + ) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 +le +  +_rcmp +(cڡ * +a +, cڡ * +b +) { + +14 i( + ga + = +b +) + +16 i(! + ga +) + +18 i(! + gb +) + +20  +rcmp +( +a +, +b +); + +23 +le +  +_cmp +(cڡ * +a +, cڡ * +b +, +size_t + +n +) { + +24 i( + ga + = +b +) + +26 i(! + ga +) + +28 i(! + gb +) + +30  +cmp +( +a +, +b +, +n +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp + +5 #agm + + + +7  + ~ + +9 #i +ARDUINOJSON_ENABLE_PROGMEM + + +11  + ~ + +13 #ide +ARDUINOJSON_DEFINE_STATIC_ARRAY + + +14  + #ARDUINOJSON_DEFINE_STATIC_ARRAY +( +ty +, +me +, +vue +) \ + +15  +ty + cڡ +me +[] +PROGMEM + = +vue +; + + ) + +18 #ide +ARDUINOJSON_READ_STATIC_ARRAY + + +19  + #ARDUINOJSON_READ_STATIC_ARRAY +( +ty +, +me +, +dex +) \ + +20 +pgm_ad +< +ty +>( +me + + +dex +) + + ) + +25 #ide +ARDUINOJSON_DEFINE_STATIC_ARRAY + + +26  + #ARDUINOJSON_DEFINE_STATIC_ARRAY +( +ty +, +me +, +vue +) \ + +27  +ty + cڡ +me +[] = +vue +; + + ) + +30 #ide +ARDUINOJSON_READ_STATIC_ARRAY + + +31  + #ARDUINOJSON_READ_STATIC_ARRAY +( +ty +, +me +, +dex +me[dex] + + ) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp + +5 #agm + + + +7  + ~"ty_as/cdiڮ.h +" + +8  + ~"ty_as/ab_if.h +" + +9  + ~"ty_as/gl_cڡt.h +" + +10  + ~"ty_as/is_y.h +" + +11  + ~"ty_as/is_ba_of.h +" + +12  + ~"ty_as/is_ass.h +" + +13  + ~"ty_as/is_cڡ.h +" + +14  + ~"ty_as/is_cvtib.h +" + +15  + ~"ty_as/is_um.h +" + +16  + ~"ty_as/is_tg_pot.h +" + +17  + ~"ty_as/is_gl.h +" + +18  + ~"ty_as/is_por.h +" + +19  + ~"ty_as/is_me.h +" + +20  + ~"ty_as/is_sigd.h +" + +21  + ~"ty_as/is_unsigd.h +" + +22  + ~"ty_as/make_unsigd.h +" + +23  + ~"ty_as/move_cڡ.h +" + +24  + ~"ty_as/move_n.h +" + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +bo + + gCdi +, +ass + + gTrueTy +, cs + gFTy +> + +12  + scdiڮ + { + +13  +TrueTy + + tty +; + +16 + gme + < +ass + + gTrueTy +, cs + gFTy +> + +17  + gcdiڮ +< + gl +, + gTrueTy +, + gFTy +> { + +18  +FTy + + tty +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12 +T + +dev +(); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +bo + + gCdi +, +tyme + + gT + = > + +13  + sab_if + {}; + +15 + gme + < +tyme + + gT +> + +16  + gab_if +< + gue +, + gT +> { + +17  +T + + tty +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +, +T + + gv +> + +12  + sgl_cڡt + { + +13 cڡ +T + + gvue + = +v +; + +16  + ggl_cڡt +< + tbo +, + tue +> + tue_ty +; + +17  + ggl_cڡt +< + tbo +, + tl +> + tl_ty +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gT +> + +14  + gis_y + : +l_ty + {}; + +16 + gme + < +tyme + + gT +> + +17  + gis_y +< + gT +[]> : +ue_ty + {}; + +19 + gme + < +tyme + + gT +, +size_t + + gN +> + +20  + gis_y +< + gT +[ +N +]> : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gTBa +,ym + gTDived +> + +14 as + cis_ba_of + { + +15 + geed +: + +16  + tYes +[1]; + +17  + tNo +[2]; + +19  + gYes + & +obe +(cڡ +TBa + *); + +20  + gNo + & +obe +(...); + +22 + gpublic +: + +23 cڡ +bo + +vue + = + +24 ( +obe +( +t_ +< +TDived + *>(0))=( +Yes +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp + +5 #agm + + + +7  + ~"dev.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12  + sis_ass + { + +13 + geed +: + +14  + tYes +[1]; + +15  + tNo +[2]; + +17 + gme + < +tyme + + gU +> + +18  + gYes + & +obe +(( +U +::*)()); + +19 + gme + < + gtyme +> + +20  + gNo + & +obe +(...); + +22 + gpublic +: + +23 cڡ +bo + +vue + = ( +obe +< +T +>(0)=( +Yes +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13  + gis_cڡ + : +l_ty + {}; + +15 + gme + < +tyme + + gT +> + +16  + gis_cڡ + : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp + +5 #agm + + + +7  + ~"dev.h +" + +9 #ifde +_MSC_VER + + +10 #agm +wng +( +push +) + +12 #agm +wng +( +dib + : 4244) + +15 #ifde +__ICCARM__ + + +17 #agm +dg_suss += +Pa093 + + +20 +mea + + gARDUINOJSON_NAMESPACE + { + +22 + gme + < +tyme + + gFrom +,ym + gTo +> + +23  + sis_cvtib + { + +24 + geed +: + +25  + tYes +[1]; + +26  + tNo +[2]; + +28  + gYes + & +obe +( +To +); + +29  + gNo + & +obe +(...); + +31 + gpublic +: + +32 cڡ +bo + +vue + = ( +obe +( +dev +< +From +>())=( +Yes +); + +37 #ifde +_MSC_VER + + +38 #agm +wng +( +p +) + +41 #ifde +__ICCARM__ + + +42 #agm +dg_deu += +Pa093 + + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp + +5 #agm + + + +7  + ~"is_ass.h +" + +8  + ~"is_cvtib.h +" + +9  + ~"is_tg_pot.h +" + +10  + ~"is_gl.h +" + +11  + ~"is_me.h +" + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + < +tyme + + gT +> + +16  + sis_um + { + +17 cڡ +bo + + gvue + = +is_cvtib +< +T +, >:: +vue + && + +18 ! +is_ass +< +T +>:: +vue + && ! +is_gl +::value && + +19 ! +is_tg_pot +< +T +>:: +vue +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < + gtyme +> + +12  + gis_tg_pot + : +l_ty + {}; + +14 + gme + <> + +15  + gis_tg_pot +<> : +ue_ty + {}; + +17 + gme + <> + +18  + gis_tg_pot +<> : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp + +5 #agm + + + +7  + ~ + +8  + ~"is_me.h +" + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gT +> + +14  + sis_gl + { + +15 cڡ +bo + + gvue + = + +16 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +17 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +18 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +19 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +20 #i +ARDUINOJSON_HAS_LONG_LONG + + +21 +is_me +< +T +, sigd >:: +vue + || + +22 +is_me +< +T +, >:: +vue + || + +24 #i +ARDUINOJSON_HAS_INT64 + + +25 +is_me +< +T +, sigd + g__t64 +>:: +vue + || + +26 +is_me +< +T +,  + g__t64 +>:: +vue + || + +28 +is_me +< +T +, >:: +vue + || is_me::value; + +31 + gme + < +tyme + + gT +> + +32  + gis_gl + : +is_gl +< +T +> {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12  + gis_por + : +l_ty + {}; + +14 + gme + < +tyme + + gT +> + +15  + gis_por +< + gT +*> : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +,ym + gU +> + +13  + gis_me + : +l_ty + {}; + +15 + gme + < +tyme + + gT +> + +16  + gis_me +< + gT +, T> : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +8 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < + gtyme +> + +11  + gis_sigd + : +l_ty + {}; + +13 + gme + <> + +14  + gis_sigd +<> : +ue_ty + {}; + +16 + gme + <> + +17  + gis_sigd + : +ue_ty + {}; + +19 + gme + <> + +20  + gis_sigd + : +ue_ty + {}; + +22 + gme + <> + +23  + gis_sigd + : +ue_ty + {}; + +25 + gme + <> + +26  + gis_sigd + : +ue_ty + {}; + +28 + gme + <> + +29  + gis_sigd +<> : +ue_ty + {}; + +31 + gme + <> + +32  + gis_sigd +<> : +ue_ty + {}; + +34 #i +ARDUINOJSON_HAS_LONG_LONG + + +35 + gme + <> + +36  + gis_sigd + : +ue_ty + {}; + +39 #i +ARDUINOJSON_HAS_INT64 + + +40 + gme + <> + +41  + gis_sigd + : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +8 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < + gtyme +> + +11  + gis_unsigd + : +l_ty + {}; + +13 + gme + <> + +14  + gis_unsigd +< + gbo +> : +ue_ty + {}; + +16 + gme + <> + +17  + gis_unsigd +<> : +ue_ty + {}; + +19 + gme + <> + +20  + gis_unsigd +<> : +ue_ty + {}; + +22 + gme + <> + +23  + gis_unsigd +<> : +ue_ty + {}; + +25 + gme + <> + +26  + gis_unsigd +<> : +ue_ty + {}; + +28 #i +ARDUINOJSON_HAS_INT64 + + +29 + gme + <> + +30  + gis_unsigd +< + g__t64 +> : +ue_ty + {}; + +33 #i +ARDUINOJSON_HAS_LONG_LONG + + +34 + gme + <> + +35  + gis_unsigd +<> : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp + +5 #agm + + + +7  + ~"ty_idty.h +" + +8 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < +tyme + + gT +> + +11  + gmake_unsigd +; + +13 + gme + <> + +14  + gmake_unsigd +<> : +ty_idty +<> {}; + +16 + gme + <> + +17  + gmake_unsigd + : +ty_idty +<> {}; + +18 + gme + <> + +19  + gmake_unsigd +<> : +ty_idty +<> {}; + +21 + gme + <> + +22  + gmake_unsigd + : +ty_idty +<> {}; + +23 + gme + <> + +24  + gmake_unsigd +<> : +ty_idty +<> {}; + +26 + gme + <> + +27  + gmake_unsigd + : +ty_idty +<> {}; + +28 + gme + <> + +29  + gmake_unsigd +<> : +ty_idty +<> {}; + +31 + gme + <> + +32  + gmake_unsigd + : +ty_idty +<> {}; + +33 + gme + <> + +34  + gmake_unsigd +<> : +ty_idty +<> {}; + +36 #i +ARDUINOJSON_HAS_LONG_LONG + + +37 + gme + <> + +38  + gmake_unsigd + : +ty_idty +<> {}; + +39 + gme + <> + +40  + gmake_unsigd +<> : +ty_idty +<> {}; + +43 #i +ARDUINOJSON_HAS_INT64 + + +44 + gme + <> + +45  + gmake_unsigd + : +ty_idty +< +__t64 +> {}; + +46 + gme + <> + +47  + gmake_unsigd +< + g__t64 +> : +ty_idty +< +__t64 +> {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13  + smove_cڡ + { + +14  +T + + tty +; + +16 + gme + < +tyme + + gT +> + +17  + gmove_cڡ + { + +18  +T + + tty +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13  + smove_n + { + +14  +T + + tty +; + +16 + gme + < +tyme + + gT +> + +17  + gmove_n +< + gT +&> { + +18  +T + + tty +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12  + sty_idty + { + +13  +T + + tty +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp + +5 #agm + + + +7  + ~"ty_as.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < +tyme + + gT +> + +11 +le +  +sw +( +T +& +a +, T& +b +) { + +12 +T + +t +( +a +); + +13 + ga + = +b +; + +14 + gb + = +t +; + +17 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +18 + gme + < +tyme + + gT +> + +19 +tyme + + gmove_n +< + gT +>:: +ty +&& +move +( +T +&& +t +) { + +20  +ic_ +< +tyme + +move_n +< +T +>:: +ty +&&>( +t +); + +23 + gme + < +tyme + + gT +> + +24 + gT +& +move +( +T +& +t +) { + +25  + gt +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTWr +> + +12 as + cCougDecܩ + { + +13 + gpublic +: + +14 +exic + +CougDecܩ +( +TWr +& +wr +: +_wr +(wr), +_cou +(0) {} + +16  +wre +( +ut8_t + +c +) { + +17 + g_cou + + +_wr +. +wre +( +c +); + +20  +wre +(cڡ +ut8_t +* +s +, +size_t + +n +) { + +21 + g_cou + + +_wr +. +wre +( +s +, +n +); + +24 +size_t + +cou +() const { + +25  + g_cou +; + +28 + give +: + +29 +TWr + +_wr +; + +30 +size_t + + g_cou +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTDei +,ym + gEb + = > + +13 as + cWr + { + +14 +public +: + +15 +exic + +Wr +( +TDei +& +de +: +_de +(&dest) {} + +17 +size_t + +wre +( +ut8_t + +c +) { + +18  +_de +-> +wre +( +c +); + +21 +size_t + +wre +(cڡ +ut8_t +* +s +, size_ +n +) { + +22  + g_de +-> +wre +( +s +, +n +); + +25 + give +: + +26 +TDei +* +_de +; + +31  + ~ + +33 #i +ARDUINOJSON_ENABLE_STD_STRING + + +34  + ~ + +37 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +38  + ~ + +41 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +42  + ~ + +45 #i +ARDUINOJSON_ENABLE_ARDUINO_PRINT + + +46  + ~ + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + <> + +12 +ass + + gWr +< :: +Sg +, > { + +13 cڡ +size_t + + gbufrCacy + = +ARDUINOJSON_STRING_BUFFER_SIZE +; + +15 + gpublic +: + +16 +exic + +Wr +(:: +Sg + & +r +: +_dei +(&str) { + +17 +_size + = 0; + +20 ~ +Wr +() { + +21 +ush +(); + +24 +size_t + +wre +( +ut8_t + +c +) { + +25 +ARDUINOJSON_ASSERT +( +_size + < +bufrCacy +); + +26 + g_bufr +[ +_size +++] = +ic_ +<>( +c +); + +27 i( + g_size + + 1 > +bufrCacy +) + +28 +ush +(); + +32 +size_t + +wre +(cڡ +ut8_t + * +s +, size_ +n +) { + +33  +size_t + + gi + = 0; i < + gn +; i++) { + +34 +wre +( +s +[ +i +]); + +36  + gn +; + +39 + give +: + +40  +ush +() { + +41 +ARDUINOJSON_ASSERT +( +_size + < +bufrCacy +); + +42 + g_bufr +[ +_size +] = 0; + +43 * + g_dei + + +_bufr +; + +44 + g_size + = 0; + +47 :: +Sg + * +_dei +; + +48  + g_bufr +[ +bufrCacy +]; + +49 +size_t + + g_size +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cDummyWr + { + +12 + gpublic +: + +13 +size_t + +wre +( +ut8_t +) { + +17 +size_t + +wre +(cڡ +ut8_t +*, size_ +n +) { + +18  + gn +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + < +tyme + + gTDei +> + +10 +ass + + gWr +< + +11 + gTDei +, + +12 +tyme + + gab_if +< + gis_ba_of +< :: +Prt +, + gTDei +>:: +vue +>:: +ty +> { + +13 +public +: + +14 +exic + +Wr +(:: +Prt +& +t +: +_t +(&print) {} + +16 +size_t + +wre +( +ut8_t + +c +) { + +17  +_t +-> +wre +( +c +); + +20 +size_t + +wre +(cڡ +ut8_t +* +s +, size_ +n +) { + +21  + g_t +-> +wre +( +s +, +n +); + +24 + give +: + +25 :: +Prt +* +_t +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cSticSgWr + { + +13 + gpublic +: + +14 +SticSgWr +(* +buf +, +size_t + +size +: +d +(bu+ siz- 1), +p +(buf) { + +15 * + gp + = '\0'; + +18 +size_t + +wre +( +ut8_t + +c +) { + +19 i( + gp + > +d +) + +21 * + gp +++ = +ic_ +<>( +c +); + +22 * + gp + = '\0'; + +26 +size_t + +wre +(cڡ +ut8_t + * +s +, size_ +n +) { + +27 * + gbeg + = +p +; + +28  + gp + < + gd + && + gn + > 0) { + +29 * + gp +++ = +ic_ +<>(* +s +++); + +30 + gn +--; + +32 * + gp + = '\0'; + +33  +size_t +( +p + - +beg +); + +36 + give +: + +37 * +d +; + +38 * + gp +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTDei +> + +12 +ass + + gWr +< + +13 + gTDei +, + +14 +tyme + + gab_if +< + gis_ba_of +< + gd +:: +oam +, + gTDei +>:: +vue +>:: +ty +> { + +15 +public +: + +16 +exic + +Wr +( +d +:: +oam +& +os +: +_os +(&os) {} + +18 +size_t + +wre +( +ut8_t + +c +) { + +19 +_os +-> +put +( +ic_ +<>( +c +)); + +23 +size_t + +wre +(cڡ +ut8_t +* +s +, size_ +n +) { + +24 + g_os +-> +wre +( +t_ +( +s +), + +25 +ic_ +< +d +:: +amsize +>( +n +)); + +26  + gn +; + +29 + give +: + +30 +d +:: +oam +* +_os +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +ass + + gT +> + +15  + gis_d_rg + : +l_ty + {}; + +17 + gme + < +ass + + gTChTs +, cs + gTAot +> + +18  + gis_d_rg +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > + +19 : +ue_ty + {}; + +21 + gme + < +tyme + + gTDei +> + +22 +ass + + gWr +< + gTDei +, + +23 +tyme + + gab_if +< + gis_d_rg +< + gTDei +>:: +vue +>:: +ty +> { + +24 +public +: + +25 +Wr +( +TDei + & +r +: +_r +(&str) {} + +27 +size_t + +wre +( +ut8_t + +c +) { + +28 +_r +-> +ݔ ++=( +ic_ +<>( +c +)); + +32 +size_t + +wre +(cڡ +ut8_t + * +s +, size_ +n +) { + +33 + g_r +-> +nd +( +t_ +( +s +), +n +); + +34  + gn +; + +37 + give +: + +38 +TDei + * +_r +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + +ass + + gTSliz +, +tyme + + gTSour +> + +12 +size_t + +msu +(cڡ +TSour + & +sour +) { + +13 +DummyWr + + gdp +; + +14 + gTSliz +< + gDummyWr +> +rliz +( +dp +); + +15  + gsour +. +ac +( +rliz +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + +ass + + gTSliz +, +tyme + + gTSour +, + +12 +tyme + + gTWr +> + +13 +size_t + +doSlize +(cڡ +TSour + & +sour +, +TWr + +wr +) { + +14 + gTSliz +< + gTWr +> +rliz +( +wr +); + +15  + gsour +. +ac +( +rliz +); + +18 + gme + +ass + + gTSliz +, +tyme + + gTSour +, + +19 +tyme + + gTDei +> + +20 +size_t + +rlize +(cڡ +TSour + & +sour +, +TDei + & +dei +) { + +21 + gWr +< + gTDei +> +wr +( +dei +); + +22  + gdoSlize +< + gTSliz +>( + gsour +, + gwr +); + +25 + gme + +ass + + gTSliz +, +tyme + + gTSour +> + +26 +size_t + +rlize +(cڡ +TSour + & +sour +, * +bufr +, size_ +bufrSize +) { + +27 +SticSgWr + +wr +( +t_ +<*>( +bufr +), +bufrSize +); + +28  + gdoSlize +< + gTSliz +>( + gsour +, + gwr +); + +31 + gme + +ass + + gTSliz +, +tyme + + gTSour +, + +32 +tyme + + gTCh +, +size_t + + gN +> + +33 #i +defed + +_MSC_VER + && _MSC_VER < 1900 + +34 +tyme + + gab_if +<( + gmove_n +< + gTCh +>:: +ty +=1, + gsize_t +>::type + +36 +tyme + +ab_if +<( +TCh +=1, + gsize_t +>:: +ty + + +38 +rlize +(cڡ +TSour + & +sour +, +TCh + (& +bufr +)[ +N +]) { + +39 +SticSgWr + +wr +( +t_ +<*>( +bufr +), +N +); + +40  + gdoSlize +< + gTSliz +>( + gsour +, + gwr +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cSgCݛr + { + +12 + gpublic +: + +13 +SgCݛr +( +MemyPo +& +po +: +_po +(&pool) {} + +15  +tSg +() { + +16 +_po +-> +gFeZe +(& +_r +, & +_cy +); + +17 + g_size + = 0; + +20 cڡ * +ve +() { + +21 +ARDUINOJSON_ASSERT +( +_r +); + +22  + g_po +-> +veSgFromFeZe +( +_size +); + +25  +nd +(cڡ * +s +) { + +26 * + gs + +nd +(* +s +++); + +29  +nd +(cڡ * +s +, +size_t + +n +) { + +30  + gn +-- > 0 +nd +(* +s +++); + +33  +nd +( +c +) { + +34 i(! + g_r +) + +37 i( + g_size + > +_cy +) { + +38 +_r + = 0; + +39 + g_po +-> +mkAsOvowed +(); + +43 + g_r +[ +_size +++] = +c +; + +46 +bo + +isVid +() { + +47  + g_r + != 0; + +50 cڡ * +c_r +() { + +51  + g_r +; + +54  + gage_pics +:: + te_by_cy + + tage_picy +; + +56 + give +: + +57 +MemyPo +* +_po +; + +58 * + g_r +; + +59 +size_t + + g_size +; + +60 +size_t + + g_cy +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cSgMov + { + +13 + gpublic +: + +14 +SgMov +(* +r +: +_wreP +(ptr) {} + +16  +tSg +() { + +17 +_tP + = +_wreP +; + +20 cڡ * +ve +() const { + +21  + g_tP +; + +24  +nd +( +c +) { + +25 * + g_wreP +++ = +c +; + +28 +bo + +isVid +() const { + +29  + gue +; + +32 cڡ * +c_r +() const { + +33  + g_tP +; + +36  + gage_pics +:: + te_by_addss + + tage_picy +; + +38 + give +: + +39 * +_wreP +; + +40 * + g_tP +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTIut +> + +13 +SgCݛr + +makeSgStage +( +TIut +&, +MemyPo +& +po +) { + +14  +SgCݛr +( +po +); + +17 + gme + < +tyme + + gTCh +> + +18 +SgMov + +makeSgStage +( + +19 +TCh +* +put +, +MemyPo +&, + +20 +tyme + +ab_if +:: +vue +>:: +ty +* = 0) { + +21  +SgMov +( +t_ +<*>( +put +)); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 as + cArduoSgAdr + { + +16 + gpublic +: + +17 +ArduoSgAdr +(cڡ :: +Sg +& +r +: +_r +(&str) {} + +19  +cyTo +(* +p +, +size_t + +n +) const { + +20 +memy +( +p +, +_r +-> +c_r +(), +n +); + +23 +bo + +isNu +() const { + +25  ! + g_r +-> +c_r +(); + +28  +com +(cڡ * +h +) const { + +30 cڡ * + gme + = +_r +-> +c_r +(); + +31  +_rcmp +( +me +, +h +); + +34 +bo + +equs +(cڡ * +exed +) const { + +35  +com +( +exed +) == 0; + +38 +size_t + +size +() const { + +39  + g_r +-> +ngth +(); + +42 cڡ * +beg +() const { + +43  + g_r +-> +c_r +(); + +46  + gage_pics +:: + te_by_cy + + tage_picy +; + +48 + give +: + +49 cڡ :: +Sg +* +_r +; + +52 + gme + <> + +53  + gIsSg +< :: +Sg +> : +ue_ty + {}; + +55 + gme + <> + +56  + gIsSg +< :: +SgSumHr +> : +ue_ty + {}; + +58 +le + +ArduoSgAdr + + $adtSg +(cڡ :: +Sg +& +r +) { + +59  + `ArduoSgAdr +( +r +); + +60 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 as + cCڡRamSgAdr + { + +17 + gpublic +: + +18 +CڡRamSgAdr +(cڡ * +r + = 0: +_r +(str) {} + +20  +com +(cڡ * +h +) const { + +21  +_rcmp +( +_r +, +h +); + +24 +bo + +equs +(cڡ * +exed +) const { + +25  +com +( +exed +) == 0; + +28 +bo + +isNu +() const { + +29  ! + g_r +; + +32 +size_t + +size +() const { + +33 i(! + g_r +) + +35  + +( +_r +); + +38 cڡ * +da +() const { + +39  + g_r +; + +42 cڡ * +beg +() const { + +43  + g_r +; + +46  + gage_pics +:: + te_by_addss + + tage_picy +; + +48 + geed +: + +49 cڡ * +_r +; + +52 + gme + <> + +53  + gIsSg + : +ue_ty + {}; + +55 + gme + < + gN +> + +56  + gIsSg + : +ue_ty + {}; + +58 +le + +CڡRamSgAdr + + $adtSg +(cڡ * +r +) { + +59  + `CڡRamSgAdr +( +r +); + +60 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 as + cFshSgAdr + { + +15 + gpublic +: + +16 +FshSgAdr +(cڡ +__FshSgHr +* +r +: +_r +(str) {} + +18  +com +(cڡ * +h +) const { + +19 i(! +h + && ! +_r +) + +21 i(! + g_r +) + +23 i(! + gh +) + +25  - +rcmp_P +( +h +, +t_ +( +_r +)); + +28 +bo + +equs +(cڡ * +exed +) const { + +29  +com +( +exed +) == 0; + +32 +bo + +isNu +() const { + +33  ! + g_r +; + +36  +cyTo +(* +p +, +size_t + +n +) const { + +37 +memy_P +( +p +, +t_ +( +_r +), +n +); + +40 +size_t + +size +() const { + +41 i(! + g_r +) + +43  +_P +( +t_ +( +_r +)); + +46 +FshSgIt + +beg +() const { + +47  +FshSgIt +( +_r +); + +50  + gage_pics +:: + te_by_cy + + tage_picy +; + +52 + give +: + +53 cڡ +__FshSgHr +* +_r +; + +56 +le + +FshSgAdr + + $adtSg +(cڡ +__FshSgHr +* +r +) { + +57  + `FshSgAdr +( +r +); + +58 + } +} + +60 + gme + <> + +61  + gIsSg + : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringIterator.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 as + cFshSgIt + { + +10 + gpublic +: + +11 +exic + +FshSgIt +(cڡ +__FshSgHr +* +r +) + +12 : +_r +( +t_ +( +r +)) {} + +14 +exic + +FshSgIt +(cڡ * +r +: +_r +(ptr) {} + +16 +FshSgIt + +ݔ ++( +rdiff_t + +d +) const { + +17  +FshSgIt +( +_r + + +d +); + +20 +rdiff_t + + gݔ +-( +FshSgIt + + gh +) const { + +21  + g_r + - + gh +._ptr; + +24 +FshSgIt + + gݔ +++() { + +25  +FshSgIt +( +_r +++); + +28 +FshSgIt + + gݔ +++() { + +29  +FshSgIt +(++ +_r +); + +32 +bo + + gݔ +!=( +FshSgIt + +h +) const { + +33  +_r + ! +h +._ptr; + +36  + gݔ +*() const { + +37  ( +pgm_ad_by +( +_r +)); + +40 + give +: + +41 cڡ * +_r +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < + gtyme +> + +11  + gIsSg + : +l_ty + {}; + +13 + gme + < +tyme + + gT +> + +14  + gIsSg + : +IsSg +< +T +> {}; + +16 + gme + < +tyme + + gT +> + +17  + gIsSg +< + gT +&> : +IsSg +< +T +> {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +11  + ~ + +14 #i +ARDUINOJSON_ENABLE_STD_STRING + + +15  + ~ + +18 +mea + + gARDUINOJSON_NAMESPACE + { + +20 + gme + < + gtyme +> + +21  + gIsWrbSg + : +l_ty + {}; + +23 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +25 + gme + <> + +26  + gIsWrbSg +< :: +Sg +> : +ue_ty + {}; + +30 #i +ARDUINOJSON_ENABLE_STD_STRING + + +32 + gme + < +tyme + + gTChTs +,ym + gTAot +> + +33  + gIsWrbSg +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > + +34 : +ue_ty + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 as + cRamSgAdr + : +public + +CڡRamSgAdr + { + +14 +public +: + +15 +RamSgAdr +(cڡ * +r +: +CڡRamSgAdr +(str) {} + +17  +cyTo +(* +p +, +size_t + +n +) const { + +18 +memy +( +p +, +_r +, +n +); + +21  + gARDUINOJSON_NAMESPACE +:: + tage_pics +:: + te_by_cy + + tage_picy +; + +24 + gme + < +tyme + + gTCh +> + +25 +le + +RamSgAdr + + $adtSg +(cڡ +TCh +* +r +) { + +26  + `RamSgAdr +( +t_ +( +r +)); + +27 + } +} + +29 +le + +RamSgAdr + + $adtSg +(* +r +) { + +30  + `RamSgAdr +( +r +); + +31 + } +} + +33 + gme + < +tyme + + gTCh +> + +34  + gIsSg +< + gTCh +*> { + +35 cڡ +bo + + gvue + = ( +TCh +) == 1; + +38 + gme + <> + +39  + gIsSg +<*> { + +40 cڡ +bo + + gvue + = +l +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 as + cSizedFshSgAdr + { + +15 + gpublic +: + +16 +SizedFshSgAdr +(cڡ +__FshSgHr +* +r +, +size_t + +sz +) + +17 : +_r +( +r +), +_size +( +sz +) {} + +19  +com +(cڡ * +h +) const { + +20 i(! + gh + && ! + g_r +) + +22 i(! + g_r +) + +24 i(! + gh +) + +26  - +cmp_P +( +h +, +t_ +( +_r +), +_size +); + +29 +bo + +equs +(cڡ * +exed +) const { + +30  +com +( +exed +) == 0; + +33 +bo + +isNu +() const { + +34  ! + g_r +; + +37  +cyTo +(* +p +, +size_t + +n +) const { + +38 +memy_P +( +p +, +t_ +( +_r +), +n +); + +41 +size_t + +size +() const { + +42  + g_size +; + +45 +FshSgIt + +beg +() const { + +46  +FshSgIt +( +_r +); + +49  + gage_pics +:: + te_by_cy + + tage_picy +; + +51 + give +: + +52 cڡ +__FshSgHr +* +_r +; + +53 +size_t + + g_size +; + +56 +le + +SizedFshSgAdr + + $adtSg +(cڡ +__FshSgHr +* +r +, + +57 +size_t + +sz +) { + +58  + `SizedFshSgAdr +( +r +, +sz +); + +59 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 as + cSizedRamSgAdr + { + +16 + gpublic +: + +17 +SizedRamSgAdr +(cڡ * +r +, +size_t + +n +: +_r +(r), +_size +(n) {} + +19  +com +(cڡ * +h +) const { + +20  +_cmp +( +_r +, +h +, +_size +); + +23 +bo + +equs +(cڡ * +exed +) const { + +24  +com +( +exed +) == 0; + +27 +bo + +isNu +() const { + +28  ! + g_r +; + +31  +cyTo +(* +p +, +size_t + +n +) const { + +32 +memy +( +p +, +_r +, +n +); + +35 +size_t + +size +() const { + +36  + g_size +; + +39 cڡ * +beg +() const { + +40  + g_r +; + +43  + gage_pics +:: + te_by_cy + + tage_picy +; + +45 + give +: + +46 cڡ * +_r +; + +47 +size_t + + g_size +; + +50 + gme + < +tyme + + gTCh +> + +51 +le + +SizedRamSgAdr + + $adtSg +(cڡ +TCh +* +r +, +size_t + +size +) { + +52  + `SizedRamSgAdr +( +t_ +( +r +), +size +); + +53 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StdStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + < +tyme + + gTSg +> + +16 as + cStdSgAdr + { + +17 + gpublic +: + +18 +StdSgAdr +(cڡ +TSg +& +r +: +_r +(&str) {} + +20  +cyTo +(* +p +, +size_t + +n +) const { + +21 +memy +( +p +, +_r +-> +c_r +(), +n +); + +24 +bo + +isNu +() const { + +25  + gl +; + +28  +com +(cڡ * +h +) const { + +29 i(! + gh +) + +31  + g_r +-> +com +( +h +); + +34 +bo + +equs +(cڡ * +exed +) const { + +35 i(! + gexed +) + +36  + gl +; + +37  * + g_r + = +exed +; + +40 +size_t + +size +() const { + +41  + g_r +-> +size +(); + +44 cڡ * +beg +() const { + +45  + g_r +-> +c_r +(); + +48  + gage_pics +:: + te_by_cy + + tage_picy +; + +50 + give +: + +51 cڡ +TSg +* +_r +; + +54 + gme + < +tyme + + gTChTs +,ym + gTAot +> + +55  + gIsSg +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > : +ue_ty + { + +58 + gme + < +tyme + + gTChTs +,ym + gTAot +> + +59 +le + + gStdSgAdr +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > + +60 +adtSg +(cڡ +d +:: +basic_rg +<, +TChTs +, +TAot +>& +r +) { + +61  + gStdSgAdr +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> >( + +62 + gr +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 +mea + + gage_pics + { + +10  + se_by_addss + {}; + +11  + se_by_cy + {}; + +12  + sdecide__ruime + {}; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/String.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 as + cSg + { + +14 + gpublic +: + +15 +Sg +(: +_da +(0), +_isStic +( +ue +) {} + +16 +Sg +(cڡ * +da +, +bo + +isSticDa + = +ue +) + +17 : +_da +( +da +), +_isStic +( +isSticDa +) {} + +19 cڡ * +c_r +() const { + +20  + g_da +; + +23 +bo + +isNu +() const { + +24  ! + g_da +; + +27 +bo + +isStic +() const { + +28  + g_isStic +; + +31 +nd + +bo + + gݔ +==( +Sg + +lhs +, Sg + grhs +) { + +32 i( + glhs +. + g_da + = +rhs +. +_da +) + +33  +ue +; + +34 i(! + glhs +. + g_da +) + +35  + gl +; + +36 i(! + grhs +. + g_da +) + +37  + gl +; + +38  +rcmp +( +lhs +. +_da +, +rhs +._data) == 0; + +41 +nd + +bo + + gݔ +!=( +Sg + +lhs +, Sg + grhs +) { + +42 i( + glhs +. + g_da + = +rhs +. +_da +) + +43  +l +; + +44 i(! + glhs +. + g_da +) + +45  + gue +; + +46 i(! + grhs +. + g_da +) + +47  + gue +; + +48  +rcmp +( +lhs +. +_da +, +rhs +._data) != 0; + +51 + give +: + +52 cڡ * +_da +; + +53 +bo + + g_isStic +; + +56 as + cSgAdr + : +public + +RamSgAdr + { + +57 +public +: + +58 +SgAdr +(cڡ +Sg +& +r +) + +59 : +RamSgAdr +( +r +. +c_r +()), +_isStic +(r. +isStic +()) {} + +61 +bo + +isStic +() const { + +62  + g_isStic +; + +65  + gage_pics +:: + tdecide__ruime + + tage_picy +; + +67 + give +: + +68 +bo + +_isStic +; + +71 + gme + <> + +72  + gIsSg +< + gSg +> : +ue_ty + {}; + +74 +le + +SgAdr + + $adtSg +(cڡ +Sg +& +r +) { + +75  + `SgAdr +( +r +); + +76 + } +} + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 #i +ARDUINOJSON_ENABLE_STD_STRING + + +12  + ~ + +15 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +16  + ~ + +19 #i +ARDUINOJSON_ENABLE_PROGMEM + + +20  + ~ + +21  + ~ + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTAddSg +> + +13 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +* +po +) { + +14 i(! + gv +) + +15  + gl +; + +16  +SKey +( +v +, +key +, +po +, +tyme + +TAddSg +:: +age_picy +()); + +19 + gme + < +tyme + + gTAddSg +> + +20 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +* +po +, + +21 +age_pics +:: +decide__ruime +) { + +22 i( +key +. +isStic +()) { + +23  +SKey +( +v +, +key +, +po +, +age_pics +:: +e_by_addss +()); + +25  +SKey +( +v +, +key +, +po +, +age_pics +:: +e_by_cy +()); + +29 + gme + < +tyme + + gTAddSg +> + +30 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +*, + +31 +age_pics +:: +e_by_addss +) { + +32 +ARDUINOJSON_ASSERT +( +v +); + +33 + gv +-> +tKey +( +key +. +da +(), +age_pics +:: +e_by_addss +()); + +34  + gue +; + +37 + gme + < +tyme + + gTAddSg +> + +38 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +* +po +, + +39 +age_pics +:: +e_by_cy +) { + +40 cڡ * +dup + = +po +-> +veSg +( +key +); + +41 i(! + gdup +) + +42  + gl +; + +43 +ARDUINOJSON_ASSERT +( +v +); + +44 + gv +-> +tKey +( +dup +, +age_pics +:: +e_by_cy +()); + +45  + gue +; + +48 +le + +size_t + +Size +(cڡ +VSl +* +v +) { + +49 +size_t + + gn + = 0; + +50  + gv +) { + +51 + gn +++; + +52 + gv + = +v +-> +xt +(); + +54  + gn +; + +57 +le + +VDa +* +Da +( +VSl +* + +) { + +58  + gt_ +< + gVDa +*>( + g +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 +ass + + gAayRef +; + +13 +ass + + gAayCڡRef +; + +14 +ass + + gObjeRef +; + +15 +ass + + gObjeCڡRef +; + +16 +ass + + gVRef +; + +17 +ass + + gVCڡRef +; + +21 + gme + < +tyme + + gT +> + +22  + sVAs + { + +23  +T + + tty +; + +26 + gme + <> + +27  + gVAs +<*> { + +28 cڡ * + tty +; + +33 + gme + < +tyme + + gT +> + +34  + sVCڡAs + { + +35  +tyme + + tVAs +< + tT +>:: + tty +ype; + +38 + gme + <> + +39  + gVCڡAs +< + gVRef +> { + +40  +VCڡRef + + tty +; + +43 + gme + <> + +44  + gVCڡAs +< + gObjeRef +> { + +45  +ObjeCڡRef + + tty +; + +48 + gme + <> + +49  + gVCڡAs +< + gAayRef +> { + +50  +AayCڡRef + + tty +; + +55 + gme + < +tyme + + gT +> + +56 +le + +tyme + + gab_if +< + gis_gl +< + gT +>:: +vue + && ! +is_me +< +bo +, T>::value, + +57 + gT +>:: +ty + + +58 +vAs +(cڡ +VDa +* +da +) { + +59 +ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED +( +T +); + +60  + gda + !0 ? +da +-> +asIegl +< +T +>() : T(0); + +63 + gme + < +tyme + + gT +> + +64 +le + +tyme + + gab_if +< + gis_um +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +65 cڡ +VDa +* +da +) { + +66  +da + !0 ? +ic_ +< +T +>(da-> +asIegl +<>()) : T(); + +69 + gme + < +tyme + + gT +> + +70 +le + +tyme + + gab_if +< + gis_me +< + gT +, + gbo +>:: +vue +, T>:: +ty + +vAs +( + +71 cڡ +VDa +* +da +) { + +72  +da + !0 ? da-> +asBoޗn +(: +l +; + +75 + gme + < +tyme + + gT +> + +76 +le + +tyme + + gab_if +< + gis_tg_pot +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +77 cڡ +VDa +* +da +) { + +78  +da + !0 ? da-> +asFlt +< +T +>() : T(0); + +81 + gme + < +tyme + + gT +> + +82 +le + +tyme + + gab_if +< + gis_me +< + gT +, cڡ *>:: +vue + || + +83 +is_me +< +T +, *>:: +vue +, + +84 cڡ *>:: +ty + + +85 +vAs +(cڡ +VDa +* +da +) { + +86  +da + !0 ? da-> +asSg +() : 0; + +89 + gme + < +tyme + + gT +> + +90 +T + +vAs +( +VDa +* +da +, +MemyPo +*) { + +94  + gvAs +< + gT +>( + gda +); + +97 + gme + < +tyme + + gT +> + +98 +le + +tyme + + gab_if +< + gis_me +< + gAayCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +99 cڡ +VDa +* +da +); + +101 + gme + < +tyme + + gT +> + +102 +le + +tyme + + gab_if +< + gis_me +< + gObjeCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +103 cڡ +VDa +* +da +); + +105 + gme + < +tyme + + gT +> + +106 +le + +tyme + + gab_if +< + gis_me +< + gVCڡRef +, + gT +>:: +vue +, T>:: +ty + + +107 +vAs +(cڡ +VDa +* +da +); + +109 + gme + < +tyme + + gT +> + +110 +le + +tyme + + gab_if +< + gIsWrbSg +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +111 cڡ +VDa +* +da +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gT +> + +14 +le + +tyme + + gab_if +< + gis_me +< + gAayCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +15 cڡ +VDa +* +_da +) { + +16  +AayCڡRef +( +vAsAay +( +_da +)); + +19 + gme + < +tyme + + gT +> + +20 +le + +tyme + + gab_if +< + gis_me +< + gObjeCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +21 cڡ +VDa +* +_da +) { + +22  +ObjeCڡRef +( +vAsObje +( +_da +)); + +25 + gme + < +tyme + + gT +> + +26 +le + +tyme + + gab_if +< + gis_me +< + gVCڡRef +, + gT +>:: +vue +, T>:: +ty + + +27 +vAs +(cڡ +VDa +* +_da +) { + +28  +VCڡRef +( +_da +); + +31 + gme + < +tyme + + gT +> + +32 +le + +tyme + + gab_if +< + gIsWrbSg +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +33 cڡ +VDa +* +_da +) { + +34 cڡ * +cr + = +_da + !0 ? _da-> +asSg +() : 0; + +35 i( + gcr +) + +36  +T +( +cr +); + +37 +T + + gs +; + +38 +rlizeJs +( +VCڡRef +( +_da +), +s +); + +39  + gs +; + +42 + gme + <> + +43 +le + +AayRef + + gvAs +< + gAayRef +>( +VDa +* + gda +, +MemyPo +* + gpo +) { + +44  +AayRef +( +po +, +da + !0 ? da-> +asAay +() : 0); + +47 + gme + <> + +48 +le + +ObjeRef + + gvAs +< + gObjeRef +>( +VDa +* + gda +, +MemyPo +* + gpo +) { + +49  +ObjeRef +( +po +, +da + !0 ? da-> +asObje +() : 0); + +52 + gme + <> + +53 +le + +VRef + + gvAs +< + gVRef +>( +VDa +* + gda +, +MemyPo +* + gpo +) { + +54  +VRef +( +po +, +da +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 +ass + + gCiDa +; + +17  + gComrBa + : +Vis +< +ComResu +> { + +18 +ComResu + +visAay +(cڡ +CiDa + &) { + +19  +COMPARE_RESULT_DIFFER +; + +21 +ComResu + +visBoޗn +( +bo +) { + +22  + gCOMPARE_RESULT_DIFFER +; + +24 +ComResu + +visFlt +( +Flt +) { + +25  + gCOMPARE_RESULT_DIFFER +; + +27 +ComResu + +visNegiveIeg +( +UI +) { + +28  + gCOMPARE_RESULT_DIFFER +; + +30 +ComResu + +visNu +() { + +31  + gCOMPARE_RESULT_DIFFER +; + +33 +ComResu + +visObje +(cڡ +CiDa + &) { + +34  + gCOMPARE_RESULT_DIFFER +; + +36 +ComResu + +visPosiveIeg +( +UI +) { + +37  + gCOMPARE_RESULT_DIFFER +; + +39 +ComResu + +visRawJs +(cڡ *, +size_t +) { + +40  + gCOMPARE_RESULT_DIFFER +; + +42 +ComResu + +visSg +(const *) { + +43  + gCOMPARE_RESULT_DIFFER +; + +47 + gme + < +tyme + + gT +,ym + gEb + = > + +48  +Comr +; + +50 + gme + < +tyme + + gT +> + +51  + gComr +< + gT +, +tyme + + gab_if +< + gIsSg +:: +vue +>:: +ty +> + +52 : +ComrBa + { + +53 +T + +rhs +; + +55 +exic + +Comr +( +T + +vue +: +rhs +(value) {} + +57 +ComResu + +visSg +(cڡ * +lhs +) { + +58  +i + = +adtSg +( +rhs +). +com +( +lhs +); + +59 i( + gi + < 0) + +60  + gCOMPARE_RESULT_GREATER +; + +61 i( + gi + > 0) + +62  + gCOMPARE_RESULT_LESS +; + +64  + gCOMPARE_RESULT_EQUAL +; + +67 +ComResu + +visNu +() { + +68 i( +adtSg +( +rhs +). +isNu +()) + +69  + gCOMPARE_RESULT_EQUAL +; + +71  + gCOMPARE_RESULT_DIFFER +; + +75 + gme + < +tyme + + gT +> + +76  + gComr +< + gT +, +tyme + + gab_if +< + gis_gl +:: +vue + || + +77 +is_tg_pot +< +T +>:: +vue +>:: +ty +> + +78 : +ComrBa + { + +79 +T + +rhs +; + +81 +exic + +Comr +( +T + +vue +: +rhs +(value) {} + +83 +ComResu + +visFlt +( +Flt + +lhs +) { + +84  +hmicCom +( +lhs +, +rhs +); + +87 +ComResu + +visNegiveIeg +( +UI + +lhs +) { + +88  +hmicComNegeLe +( +lhs +, +rhs +); + +91 +ComResu + +visPosiveIeg +( +UI + +lhs +) { + +92  +hmicCom +( +lhs +, +rhs +); + +95 +ComResu + +visBoޗn +( +bo + +lhs +) { + +96  +visPosiveIeg +( +ic_ +< +UI +>( +lhs +)); + +100  + gNuComr + : +ComrBa + { + +101 +ComResu + +visNu +() { + +102  +COMPARE_RESULT_EQUAL +; + +106 #i +ARDUINOJSON_HAS_NULLPTR + + +107 + gme + <> + +108  + gComr +< +dety +( +nuαr +), > : +NuComr + { + +109 +exic + +Comr +( +dety +( +nuαr +): +NuComr +() {} + +113  + gAayComr + : +ComrBa + { + +114 cڡ +CiDa + * +_rhs +; + +116 +exic + +AayComr +(cڡ +CiDa + & +rhs +: +_rhs +(&rhs) {} + +118 +ComResu + +visAay +(cڡ +CiDa + & +lhs +) { + +119 i( +lhs +. +equsAay +(* +_rhs +)) + +120  +COMPARE_RESULT_EQUAL +; + +122  + gCOMPARE_RESULT_DIFFER +; + +126  + gNegiveIegComr + : +ComrBa + { + +127 +UI + +_rhs +; + +129 +exic + +NegiveIegComr +( +UI + +rhs +: +_rhs +(rhs) {} + +131 +ComResu + +visFlt +( +Flt + +lhs +) { + +132  +hmicComNegeRight +( +lhs +, +_rhs +); + +135 +ComResu + +visNegiveIeg +( +UI + +lhs +) { + +136  +hmicCom +( +_rhs +, +lhs +); + +139 +ComResu + +visPosiveIeg +( +UI +) { + +140  + gCOMPARE_RESULT_GREATER +; + +143 +ComResu + +visBoޗn +( +bo +) { + +144  + gCOMPARE_RESULT_GREATER +; + +148  + gObjeComr + : +ComrBa + { + +149 cڡ +CiDa + * +_rhs +; + +151 +exic + +ObjeComr +(cڡ +CiDa + & +rhs +: +_rhs +(&rhs) {} + +153 +ComResu + +visObje +(cڡ +CiDa + & +lhs +) { + +154 i( +lhs +. +equsObje +(* +_rhs +)) + +155  +COMPARE_RESULT_EQUAL +; + +157  + gCOMPARE_RESULT_DIFFER +; + +161  + gRawComr + : +ComrBa + { + +162 cڡ * +_rhsDa +; + +163 +size_t + + g_rhsSize +; + +165 +exic + +RawComr +(cڡ * +rhsDa +, +size_t + +rhsSize +) + +166 : +_rhsDa +( +rhsDa +), +_rhsSize +( +rhsSize +) {} + +168 +ComResu + +visRawJs +(cڡ * +lhsDa +, +size_t + +lhsSize +) { + +169 +size_t + + gsize + = +_rhsSize + < +lhsSize + ? _rhsSize :hsSize; + +170  + gn + = +memcmp +( +lhsDa +, +_rhsDa +, +size +); + +171 i( + gn + < 0) + +172  + gCOMPARE_RESULT_LESS +; + +173 i( + gn + > 0) + +174  + gCOMPARE_RESULT_GREATER +; + +176  + gCOMPARE_RESULT_EQUAL +; + +180 + gme + < +tyme + + gT +> + +181  + gComr +< + gT +, +tyme + + gab_if +< + gIsVisab +:: +vue +>:: +ty +> + +182 : +ComrBa + { + +183 +T + +rhs +; + +185 +exic + +Comr +( +T + +vue +: +rhs +(value) {} + +187 +ComResu + +visAay +(cڡ +CiDa + & +lhs +) { + +188 +AayComr + +comr +( +lhs +); + +189  +ac +( +comr +); + +192 +ComResu + +visObje +(cڡ +CiDa + & +lhs +) { + +193 +ObjeComr + +comr +( +lhs +); + +194  +ac +( +comr +); + +197 +ComResu + +visFlt +( +Flt + +lhs +) { + +198 + gComr +< + gFlt +> +comr +( +lhs +); + +199  +ac +( +comr +); + +202 +ComResu + +visSg +(cڡ * +lhs +) { + +203 + gComr + +comr +( +lhs +); + +204  +ac +( +comr +); + +207 +ComResu + +visRawJs +(cڡ * +lhsDa +, +size_t + +lhsSize +) { + +208 +RawComr + +comr +( +lhsDa +, +lhsSize +); + +209  +ac +( +comr +); + +212 +ComResu + +visNegiveIeg +( +UI + +lhs +) { + +213 +NegiveIegComr + +comr +( +lhs +); + +214  +ac +( +comr +); + +217 +ComResu + +visPosiveIeg +( +UI + +lhs +) { + +218 + gComr +< + gUI +> +comr +( +lhs +); + +219  +ac +( +comr +); + +222 +ComResu + +visBoޗn +( +bo + +lhs +) { + +223 + gComr +< + gbo +> +comr +( +lhs +); + +224  +ac +( +comr +); + +227 +ComResu + +visNu +() { + +228 +NuComr + + gcomr +; + +229  +ac +( +comr +); + +232 + give +: + +233 +me + < +tyme + +TComr +> + +234 +ComResu + +ac +( +TComr + & +comr +) { + +235 +ComResu + +vdResu + = +rhs +. +ac +( +comr +); + +236  + gvdResu +) { + +237  + gCOMPARE_RESULT_GREATER +: + +238  +COMPARE_RESULT_LESS +; + +239  + gCOMPARE_RESULT_LESS +: + +240  +COMPARE_RESULT_GREATER +; + +242  +vdResu +; + +247 + gme + < +tyme + + gT1 +,ym + gT2 +> + +248 +ComResu + +com +(cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +) { + +249 + gComr +< + gT2 +> +comr +( +rhs +); + +250  + glhs +. +ac +( +comr +); + +253 +le +  +vCom +(cڡ +VDa + * +a +, cڡ VD* +b +) { + +254  +com +( +VCڡRef +( +a +), VCڡRef( +b +)); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gVALUE_MASK + = 0x7F, + +19 + gVALUE_IS_OWNED + = 0x01, + +20 + gVALUE_IS_NULL + = 0, + +21 + gVALUE_IS_LINKED_RAW + = 0x02, + +22 + gVALUE_IS_OWNED_RAW + = 0x03, + +23 + gVALUE_IS_LINKED_STRING + = 0x04, + +24 + gVALUE_IS_OWNED_STRING + = 0x05, + +27 + gVALUE_IS_BOOLEAN + = 0x06, + +28 + gVALUE_IS_POSITIVE_INTEGER + = 0x08, + +29 + gVALUE_IS_NEGATIVE_INTEGER + = 0x0A, + +30 + gVALUE_IS_FLOAT + = 0x0C, + +32 + gCOLLECTION_MASK + = 0x60, + +33 + gVALUE_IS_OBJECT + = 0x20, + +34 + gVALUE_IS_ARRAY + = 0x40, + +36 + gKEY_IS_OWNED + = 0x80 + +39  + sRawDa + { + +40 cڡ * + gda +; + +41 +size_t + + gsize +; + +44  + uVCڋ + { + +45 +Flt + + gasFlt +; + +46 +UI + + gasIeg +; + +47 +CiDa + + gasCi +; + +48 cڡ * + gasSg +; + +50 cڡ * + gda +; + +51 +size_t + + gsize +; + +52 } + gasRaw +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +15 #i +defed +( +__GNUC__ +) + +16 #i +__GNUC__ + >= 7 + +17 #agm +GCC + +dgnoic + +push + + +18 #agm +GCC + +dgnoic + +igned + "-Wmaybe-uninitialized" + +19 #agm +GCC + +dgnoic + +igned + "-Wuninitialized" + +23 +mea + + gARDUINOJSON_NAMESPACE + { + +25 as + cVDa + { + +26 +VCڋ + + g_cڋ +; + +27 +ut8_t + + g_ags +; + +29 + gpublic +: + +35  + +() { + +36 +_ags + = 0; + +39 + gme + < +tyme + + gTVis +> + +40 +tyme + + gTVis +:: +su_ty + +ac +( +TVis + & +vis +) const { + +41  +ty +()) { + +42  +VALUE_IS_FLOAT +: + +43  +vis +. +visFlt +( +_cڋ +. +asFlt +); + +45  + gVALUE_IS_ARRAY +: + +46  +vis +. +visAay +( +_cڋ +. +asCi +); + +48  + gVALUE_IS_OBJECT +: + +49  +vis +. +visObje +( +_cڋ +. +asCi +); + +51  + gVALUE_IS_LINKED_STRING +: + +52  +VALUE_IS_OWNED_STRING +: + +53  +vis +. +visSg +( +_cڋ +. +asSg +); + +55  + gVALUE_IS_OWNED_RAW +: + +56  +VALUE_IS_LINKED_RAW +: + +57  +vis +. +visRawJs +( +_cڋ +. +asRaw +. +da +, _cڋ.asRaw. +size +); + +59  + gVALUE_IS_NEGATIVE_INTEGER +: + +60  +vis +. +visNegiveIeg +( +_cڋ +. +asIeg +); + +62  + gVALUE_IS_POSITIVE_INTEGER +: + +63  +vis +. +visPosiveIeg +( +_cڋ +. +asIeg +); + +65  + gVALUE_IS_BOOLEAN +: + +66  +vis +. +visBoޗn +( +_cڋ +. +asIeg + != 0); + +69  +vis +. +visNu +(); + +73 + gme + < +tyme + + gT +> + +74 +T + +asIegl +() const; + +76 + gme + < +tyme + + gT +> + +77 +T + +asFlt +() const; + +79 cڡ * +asSg +() const; + +81 +bo + +asBoޗn +() const; + +83 +CiDa + * +asAay +() { + +84  +isAay +(? & + g_cڋ +. + gasCi + : 0; + +87 cڡ +CiDa + * +asAay +() const { + +88  + gcڡ_ +< + gVDa + *>( + gthis +)-> +asAay +(); + +91 +CiDa + * +asObje +() { + +92  +isObje +(? & + g_cڋ +. + gasCi + : 0; + +95 cڡ +CiDa + * +asObje +() const { + +96  + gcڡ_ +< + gVDa + *>( + gthis +)-> +asObje +(); + +99 +bo + +cyFrom +(cڡ +VDa + & +c +, +MemyPo + * +po +) { + +100  + gc +. +ty +()) { + +101  + gVALUE_IS_ARRAY +: + +102  +toAay +(). +cyFrom +( +c +. +_cڋ +. +asCi +, +po +); + +103  + gVALUE_IS_OBJECT +: + +104  +toObje +(). +cyFrom +( +c +. +_cڋ +. +asCi +, +po +); + +105  + gVALUE_IS_OWNED_STRING +: + +106  +tSg +( +RamSgAdr +( +c +. +_cڋ +. +asSg +), +po +); + +107  + gVALUE_IS_OWNED_RAW +: + +108  +tOwdRaw +( + +109 +rlized +( +c +. +_cڋ +. +asRaw +. +da +, src._cڋ.asRaw. +size +), +po +); + +111 +tTy +( +c +. +ty +()); + +112 + g_cڋ + = +c +. +_cڋ +; + +113  + gue +; + +117 +bo + +isAay +() const { + +118  ( + g_ags + & + gVALUE_IS_ARRAY +) != 0; + +121 +bo + +isBoޗn +() const { + +122  +ty +(= +VALUE_IS_BOOLEAN +; + +125 +bo + +isCi +() const { + +126  ( + g_ags + & + gCOLLECTION_MASK +) != 0; + +129 + gme + < +tyme + + gT +> + +130 +bo + +isIeg +() const { + +131  +ty +()) { + +132  + gVALUE_IS_POSITIVE_INTEGER +: + +133  +nStePosiveIeg +< +T +>( +_cڋ +. +asIeg +); + +135  + gVALUE_IS_NEGATIVE_INTEGER +: + +136  +nSteNegiveIeg +< +T +>( +_cڋ +. +asIeg +); + +139  +l +; + +143 +bo + +isFlt +() const { + +144  +ty +(= +VALUE_IS_FLOAT + ||y(= +VALUE_IS_POSITIVE_INTEGER + || + +145 +ty +(= +VALUE_IS_NEGATIVE_INTEGER +; + +148 +bo + +isSg +() const { + +149  +ty +(= +VALUE_IS_LINKED_STRING + ||y(= +VALUE_IS_OWNED_STRING +; + +152 +bo + +isObje +() const { + +153  ( + g_ags + & + gVALUE_IS_OBJECT +) != 0; + +156 +bo + +isNu +() const { + +157  +ty +(= +VALUE_IS_NULL +; + +160 +bo + +isEnod +() const { + +161  ! +isFlt +(); + +164  +move +( +size_t + +dex +) { + +165 i( +isAay +()) + +166 + g_cڋ +. + gasCi +. +moveEmt +( +dex +); + +169 + gme + < +tyme + + gTAddSg +> + +170  +move +( +TAddSg + +key +) { + +171 i( +isObje +()) + +172 + g_cڋ +. + gasCi +. +moveMemb +( +key +); + +175  +tBoޗn +( +bo + +vue +) { + +176 +tTy +( +VALUE_IS_BOOLEAN +); + +177 + g_cڋ +. + gasIeg + = +ic_ +< +UI +>( +vue +); + +180  +tFlt +( +Flt + +vue +) { + +181 +tTy +( +VALUE_IS_FLOAT +); + +182 + g_cڋ +. + gasFlt + = +vue +; + +185  +tLkedRaw +( +SlizedVue + +vue +) { + +186 i( + gvue +. +da +()) { + +187 +tTy +( +VALUE_IS_LINKED_RAW +); + +188 + g_cڋ +. + gasRaw +. + gda + = +vue +. +da +(); + +189 + g_cڋ +. + gasRaw +. + gsize + = +vue +. +size +(); + +191 +tTy +( +VALUE_IS_NULL +); + +195 + gme + < +tyme + + gT +> + +196 +bo + +tOwdRaw +( +SlizedVue +< +T +> +vue +, +MemyPo + * +po +) { + +197 cڡ * + gdup + = +po +-> +veSg +( +adtSg +( +vue +. +da +(), vue. +size +())); + +198 i( + gdup +) { + +199 +tTy +( +VALUE_IS_OWNED_RAW +); + +200 + g_cڋ +. + gasRaw +. + gda + = +dup +; + +201 + g_cڋ +. + gasRaw +. + gsize + = +vue +. +size +(); + +202  + gue +; + +204 +tTy +( +VALUE_IS_NULL +); + +205  + gl +; + +209 + gme + < +tyme + + gT +> + +210 +tyme + + gab_if +< + gis_unsigd +< + gT +>:: +vue +>:: +ty + +tIeg +( +T + value) { + +211 +tUnsigdIeg +( +vue +); + +214 + gme + < +tyme + + gT +> + +215 +tyme + + gab_if +< + gis_sigd +< + gT +>:: +vue +>:: +ty + +tIeg +( +T + value) { + +216 +tSigdIeg +( +vue +); + +219 + gme + < +tyme + + gT +> + +220  +tSigdIeg +( +T + +vue +) { + +221 i( + gvue + >= 0) { + +222 +tPosiveIeg +( +ic_ +< +UI +>( +vue +)); + +224 +tNegiveIeg +(~ +ic_ +< +UI +>( +vue +) + 1); + +228  +tUnsigdIeg +( +UI + +vue +) { + +229 +tTy +( +VALUE_IS_POSITIVE_INTEGER +); + +230 + g_cڋ +. + gasIeg + = +ic_ +< +UI +>( +vue +); + +233  +tPosiveIeg +( +UI + +vue +) { + +234 +tTy +( +VALUE_IS_POSITIVE_INTEGER +); + +235 + g_cڋ +. + gasIeg + = +vue +; + +238  +tNegiveIeg +( +UI + +vue +) { + +239 +tTy +( +VALUE_IS_NEGATIVE_INTEGER +); + +240 + g_cڋ +. + gasIeg + = +vue +; + +243  +tNu +() { + +244 +tTy +( +VALUE_IS_NULL +); + +247  +tSgPor +(cڡ * +s +, +age_pics +:: +e_by_cy +) { + +248 +tTy +( +VALUE_IS_OWNED_STRING +); + +249 + g_cڋ +. + gasSg + = +s +; + +252  +tSgPor +(cڡ * +s +, +age_pics +:: +e_by_addss +) { + +253 +tTy +( +VALUE_IS_LINKED_STRING +); + +254 + g_cڋ +. + gasSg + = +s +; + +257 + gme + < +tyme + + gTAddSg +> + +258 +bo + +tSg +( +TAddSg + +vue +, +MemyPo + * +po +) { + +259  +tSg +( +vue +, +po +, +tyme + +TAddSg +:: +age_picy +()); + +262 + gme + < +tyme + + gTAddSg +> + +263 +le + +bo + +tSg +( +TAddSg + +vue +, +MemyPo + * +po +, + +264 +age_pics +:: +decide__ruime +) { + +265 i( +vue +. +isStic +()) + +266  +tSg +( +vue +, +po +, +age_pics +:: +e_by_addss +()); + +268  +tSg +( +vue +, +po +, +age_pics +:: +e_by_cy +()); + +271 + gme + < +tyme + + gTAddSg +> + +272 +le + +bo + +tSg +( +TAddSg + +vue +, +MemyPo + *, + +273 +age_pics +:: +e_by_addss +) { + +274 i( +vue +. +isNu +()) + +275 +tNu +(); + +277 +tSgPor +( +vue +. +da +(), +age_pics +:: +e_by_addss +()); + +278  + gue +; + +281 + gme + < +tyme + + gTAddSg +> + +282 +le + +bo + +tSg +( +TAddSg + +vue +, +MemyPo + * +po +, + +283 +age_pics +:: +e_by_cy +) { + +284 i( +vue +. +isNu +()) { + +285 +tNu +(); + +286  + gue +; + +288 cڡ * + gcy + = +po +-> +veSg +( +vue +); + +289 i(! + gcy +) { + +290 +tNu +(); + +291  + gl +; + +293 +tSgPor +( +cy +, +age_pics +:: +e_by_cy +()); + +294  + gue +; + +297 + gCiDa + & +toAay +() { + +298 +tTy +( +VALUE_IS_ARRAY +); + +299 + g_cڋ +. + gasCi +. +r +(); + +300  + g_cڋ +. + gasCi +; + +303 + gCiDa + & +toObje +() { + +304 +tTy +( +VALUE_IS_OBJECT +); + +305 + g_cڋ +. + gasCi +. +r +(); + +306  + g_cڋ +. + gasCi +; + +309 +size_t + +memyUge +() const { + +310  +ty +()) { + +311  + gVALUE_IS_OWNED_STRING +: + +312  + +( +_cڋ +. +asSg +) + 1; + +313  + gVALUE_IS_OWNED_RAW +: + +314  +_cڋ +. +asRaw +. +size +; + +315  + gVALUE_IS_OBJECT +: + +316  +VALUE_IS_ARRAY +: + +317  +_cڋ +. +asCi +. +memyUge +(); + +323 +size_t + +ág +() const { + +324  +isCi +(? + g_cڋ +. + gasCi +. +ág +() : 0; + +327 +size_t + +size +() const { + +328  +isCi +(? + g_cڋ +. + gasCi +. +size +() : 0; + +331 +VDa + * +addEmt +( +MemyPo + * +po +) { + +332 i( +isNu +()) + +333 +toAay +(); + +334 i(! +isAay +()) + +336  + g_cڋ +. + gasCi +. +addEmt +( +po +); + +339 +VDa + * +gEmt +( +size_t + +dex +) const { + +340  +isAay +(? + g_cڋ +. + gasCi +. +gEmt +( +dex +) : 0; + +343 +VDa + * +gOrAddEmt +( +size_t + +dex +, +MemyPo + * +po +) { + +344 i( +isNu +()) + +345 +toAay +(); + +346 i(! +isAay +()) + +348  + g_cڋ +. + gasCi +. +gOrAddEmt +( +dex +, +po +); + +351 + gme + < +tyme + + gTAddSg +> + +352 +VDa + * +gMemb +( +TAddSg + +key +) const { + +353  +isObje +(? + g_cڋ +. + gasCi +. +gMemb +( +key +) : 0; + +356 + gme + < +tyme + + gTAddSg +> + +357 +VDa + * +gOrAddMemb +( +TAddSg + +key +, +MemyPo + * +po +) { + +358 i( +isNu +()) + +359 +toObje +(); + +360 i(! +isObje +()) + +362  + g_cڋ +. + gasCi +. +gOrAddMemb +( +key +, +po +); + +365  +movePors +( +rdiff_t + +rgDi +,diff_ +vDi +) { + +366 i( + g_ags + & + gVALUE_IS_OWNED +) + +367 + g_cڋ +. + gasSg + + +rgDi +; + +368 i( + g_ags + & + gCOLLECTION_MASK +) + +369 + g_cڋ +. + gasCi +. +movePors +( +rgDi +, +vDi +); + +372 +ut8_t + +ty +() const { + +373  + g_ags + & + gVALUE_MASK +; + +376 + give +: + +377  +tTy +( +ut8_t + +t +) { + +378 +_ags + & +KEY_IS_OWNED +; + +379 + g_ags + | +t +; + +385 #i +defed +( +__GNUC__ +) + +386 #i +__GNUC__ + >= 8 + +387 #agm +GCC + +dgnoic + +p + + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTVis +> + +13 +le + +tyme + + gTVis +:: +su_ty + +vAc +(cڡ +VDa + * +v +, + +14 +TVis + & +vis +) { + +15 i( + gv + != 0) + +16  +v +-> +ac +( +vis +); + +18  + gvis +. +visNu +(); + +21 +le + cڡ +CiDa + * +vAsAay +(cڡ +VDa + * +v +) { + +22  + gv + !0 ? +v +-> +asAay +() : 0; + +25 +le + cڡ +CiDa + * +vAsObje +(cڡ +VDa + * +v +) { + +26  + gv + !0 ? +v +-> +asObje +() : 0; + +29 +le + +CiDa + * +vAsObje +( +VDa + * +v +) { + +30  + gv + !0 ? +v +-> +asObje +() : 0; + +33 +le + +bo + +vCyFrom +( +VDa + * +d +, cڡ VD* +c +, + +34 +MemyPo + * +po +) { + +35 i(! + gd +) + +36  + gl +; + +37 i(! + gc +) { + +38 + gd +-> +tNu +(); + +39  + gue +; + +41  + gd +-> +cyFrom +(* +c +, +po +); + +44 +le +  +vCom +(cڡ +VDa + * +a +, cڡ VD* +b +); + +46 +le + +bo + +vIsAay +(cڡ +VDa + * +v +) { + +47  + gv + && v-> +isAay +(); + +50 +le + +bo + +vIsBoޗn +(cڡ +VDa + * +v +) { + +51  + gv + && v-> +isBoޗn +(); + +54 + gme + < +tyme + + gT +> + +55 +le + +bo + +vIsIeg +(cڡ +VDa + * +v +) { + +56  + gv + && v-> + gisIeg +< + gT +>(); + +59 +le + +bo + +vIsFlt +(cڡ +VDa + * +v +) { + +60  + gv + && v-> +isFlt +(); + +63 +le + +bo + +vIsSg +(cڡ +VDa + * +v +) { + +64  + gv + && v-> +isSg +(); + +67 +le + +bo + +vIsObje +(cڡ +VDa + * +v +) { + +68  + gv + && v-> +isObje +(); + +71 +le + +bo + +vIsNu +(cڡ +VDa + * +v +) { + +72  + gv + =0 || +v +-> +isNu +(); + +75 +le + +bo + +vSBoޗn +( +VDa + * +v +, bo +vue +) { + +76 i(! + gv +) + +77  + gl +; + +78 + gv +-> +tBoޗn +( +vue +); + +79  + gue +; + +82 +le + +bo + +vSFlt +( +VDa + * +v +, +Flt + +vue +) { + +83 i(! + gv +) + +84  + gl +; + +85 + gv +-> +tFlt +( +vue +); + +86  + gue +; + +89 +le + +bo + +vSLkedRaw +( +VDa + * +v +, + +90 +SlizedVue + +vue +) { + +91 i(! + gv +) + +92  + gl +; + +93 + gv +-> +tLkedRaw +( +vue +); + +94  + gue +; + +97 + gme + < +tyme + + gT +> + +98 +le + +bo + +vSOwdRaw +( +VDa + * +v +, +SlizedVue +< +T +> +vue +, + +99 +MemyPo + * +po +) { + +100  + gv + !0 && +v +-> +tOwdRaw +( +vue +, +po +); + +103 +le +  +vSNu +( +VDa + * +v +) { + +104 i(! + gv +) + +106 + gv +-> +tNu +(); + +109 + gme + < +tyme + + gTAddSg +> + +110 +le + +bo + +vSSg +( +VDa + * +v +, +TAddSg + +vue +, + +111 +MemyPo + * +po +) { + +112 i(! + gv +) + +113  + gl +; + +114  + gv +-> +tSg +( +vue +, +po +); + +117 + gme + < +tyme + + gT +> + +118 +le + +bo + +vSIeg +( +VDa + * +v +, +T + +vue +) { + +119 +ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED +( +T +); + +120 i(! + gv +) + +121  + gl +; + +122 + gv +-> +tIeg +( +vue +); + +123  + gue +; + +126 +le + +size_t + +vSize +(cڡ +VDa + * +v +) { + +127  + gv + !0 ? +v +-> +size +() : 0; + +130 +le + +CiDa + * +vToAay +( +VDa + * +v +) { + +131 i(! + gv +) + +133  & + gv +-> +toAay +(); + +136 +le + +CiDa + * +vToObje +( +VDa + * +v +) { + +137 i(! + gv +) + +139  & + gv +-> +toObje +(); + +142 +le + +NO_INLINE + +VDa + * +vAddEmt +(VD* +v +, + +143 +MemyPo + * +po +) { + +144  + gv + !0 ? +v +-> +addEmt +( +po +) : 0; + +147 +le + +NO_INLINE + +VDa + * +vGOrAddEmt +(VD* +v +, + +148 +size_t + +dex +, + +149 +MemyPo + * +po +) { + +150  + gv + !0 ? +v +-> +gOrAddEmt +( +dex +, +po +) : 0; + +153 + gme + < +tyme + + gTCh +> + +154 +NO_INLINE + +VDa + * +vGOrAddMemb +(VD* +v +, +TCh + * +key +, + +155 +MemyPo + * +po +) { + +156  + gv + !0 ? +v +-> +gOrAddMemb +( +adtSg +( +key +), +po +) : 0; + +159 + gme + < +tyme + + gTSg +> + +160 +NO_INLINE + +VDa + * +vGOrAddMemb +(VD* +v +, + +161 cڡ +TSg + & +key +, + +162 +MemyPo + * +po +) { + +163  + gv + !0 ? +v +-> +gOrAddMemb +( +adtSg +( +key +), +po +) : 0; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14  + ~ + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 + gme + < +tyme + + gT +> + +19 +le + +T + + gVDa +:: +asIegl +() const { + +20  +ty +()) { + +21  +VALUE_IS_POSITIVE_INTEGER +: + +22  +VALUE_IS_BOOLEAN +: + +23  +cvtPosiveIeg +< +T +>( +_cڋ +. +asIeg +); + +24  + gVALUE_IS_NEGATIVE_INTEGER +: + +25  +cvtNegiveIeg +< +T +>( +_cڋ +. +asIeg +); + +26  + gVALUE_IS_LINKED_STRING +: + +27  +VALUE_IS_OWNED_STRING +: + +28  +rNumb +< +T +>( +_cڋ +. +asSg +); + +29  + gVALUE_IS_FLOAT +: + +30  +cvtFlt +< +T +>( +_cڋ +. +asFlt +); + +36 +le + +bo + + gVDa +:: +asBoޗn +() const { + +37  +ty +()) { + +38  +VALUE_IS_POSITIVE_INTEGER +: + +39  +VALUE_IS_BOOLEAN +: + +40  +VALUE_IS_NEGATIVE_INTEGER +: + +41  +_cڋ +. +asIeg + != 0; + +42  + gVALUE_IS_FLOAT +: + +43  +_cڋ +. +asFlt + != 0; + +44  + gVALUE_IS_NULL +: + +45  +l +; + +47  +ue +; + +52 + gme + < +tyme + + gT +> + +53 +le + +T + + gVDa +:: +asFlt +() const { + +54  +ty +()) { + +55  +VALUE_IS_POSITIVE_INTEGER +: + +56  +VALUE_IS_BOOLEAN +: + +57  +ic_ +< +T +>( +_cڋ +. +asIeg +); + +58  + gVALUE_IS_NEGATIVE_INTEGER +: + +59  - +ic_ +< +T +>( +_cڋ +. +asIeg +); + +60  + gVALUE_IS_LINKED_STRING +: + +61  +VALUE_IS_OWNED_STRING +: + +62  +rNumb +< +T +>( +_cڋ +. +asSg +); + +63  + gVALUE_IS_FLOAT +: + +64  +ic_ +< +T +>( +_cڋ +. +asFlt +); + +70 +le + cڡ * + gVDa +:: +asSg +() const { + +71  +ty +()) { + +72  +VALUE_IS_LINKED_STRING +: + +73  +VALUE_IS_OWNED_STRING +: + +74  +_cڋ +. +asSg +; + +80 + gme + < +tyme + + gTV +> + +81 +tyme + + gab_if +< + gIsVisab +< + gTV +>:: +vue +, + gbo +>:: +ty + +VRef +:: +t +( + +82 cڡ +TV + & +vue +) const { + +83 +VCڡRef + +v + = +vue +; + +84  +vCyFrom +( +_da +, +v +._da, +_po +); + +87 + gme + < +tyme + + gT +> + +88 +le + +tyme + + gab_if +< + gis_me +< + gT +, + gAayRef +>:: +vue +, AayRef>:: +ty + + +89 +VRef +:: +to +() const { + +90  +AayRef +( +_po +, +vToAay +( +_da +)); + +93 + gme + < +tyme + + gT +> + +94 +tyme + + gab_if +< + gis_me +< + gT +, + gObjeRef +>:: +vue +, ObjeRef>:: +ty + + +95 +VRef +:: +to +() const { + +96  +ObjeRef +( +_po +, +vToObje +( +_da +)); + +99 + gme + < +tyme + + gT +> + +100 +tyme + + gab_if +< + gis_me +< + gT +, + gVRef +>:: +vue +, VRef>:: +ty + + +101 +VRef +:: +to +() const { + +102 +vSNu +( +_da +); + +103  * + gthis +; + +106 +le + +VCڡRef + + gVCڡRef +:: +gEmt +( +size_t + +dex +) const { + +107  +AayCڡRef +( +_da + !0 ? _da-> +asAay +(: 0)[ +dex +]; + +110 +le + +VRef + + gVRef +:: +addEmt +() const { + +111  +VRef +( +_po +, +vAddEmt +( +_da +, _pool)); + +114 +le + +VRef + + gVRef +:: +gEmt +( +size_t + +dex +) const { + +115  +VRef +( +_po +, +_da + !0 ? _da-> +gEmt +( +dex +) : 0); + +118 +le + +VRef + + gVRef +:: +gOrAddEmt +( +size_t + +dex +) const { + +119  +VRef +( +_po +, +vGOrAddEmt +( +_da +, +dex +, _pool)); + +122 + gme + < +tyme + + gTCh +> + +123 +le + +VRef + + gVRef +:: +gMemb +( +TCh + * +key +) const { + +124  +VRef +( +_po +, +_da + !0 ? _da-> +gMemb +( +adtSg +( +key +)) : 0); + +127 + gme + < +tyme + + gTSg +> + +128 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVRef +>:: +ty + + +129 +VRef +:: +gMemb +(cڡ +TSg + & +key +) const { + +130  +VRef +( +_po +, +_da + !0 ? _da-> +gMemb +( +adtSg +( +key +)) : 0); + +133 + gme + < +tyme + + gTCh +> + +134 +le + +VRef + + gVRef +:: +gOrAddMemb +( +TCh + * +key +) const { + +135  +VRef +( +_po +, +vGOrAddMemb +( +_da +, +key +, _pool)); + +138 + gme + < +tyme + + gTSg +> + +139 +le + +VRef + + gVRef +:: +gOrAddMemb +(cڡ +TSg + & +key +) const { + +140  +VRef +( +_po +, +vGOrAddMemb +( +_da +, +key +, _pool)); + +143 +le + +VCڡRef + + gݔ +|(VCڡRe + gedVue +, + +144 +VCڡRef + + gdeuVue +) { + +145  + gedVue + ?dVu: +deuVue +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + < +tyme + + gT1 +,ym + gT2 +> + +16 +ComResu + +com +(cڡ +T1 + & +lhs +, cڡ +T2 + & +rhs +); + +18 + gme + < +tyme + + gTV +> + +19  + sVOts + { + +21 + gme + < +tyme + + gT +> + +22 +nd + +tyme + + gab_if +:: +vue +, T>:: +ty + +ݔ +|( + +23 cڡ +TV + & +v +, cڡ + gT + & + gdeuVue +) { + +24 i( + gv +. +me + + gis +< + gT +>()) + +25  + gv +. +me + + gas +< + gT +>(); + +27  + gdeuVue +; + +32 + gme + < +tyme + + gT +> + +33 +nd + +tyme + + gab_if +< + gis_me +< + gT +, cڡ *>:: +vue +, T>:: +ty + +ݔ +|( + +34 cڡ +TV + & +v +, +T + + gdeuVue +) { + +35 cڡ * + gvue + = +v +. +me + +as +(); + +36  + gvue + ? vu: +deuVue +; + +40 + gme + < +tyme + + gT +> + +41 +nd + +bo + + gݔ +==( +T + * +lhs +, +TV + + grhs +) { + +42  +com +( +rhs +, +lhs += +COMPARE_RESULT_EQUAL +; + +44 + gme + < +tyme + + gT +> + +45 +nd + +bo + + gݔ +==(cڡ +T + & +lhs +, +TV + + grhs +) { + +46  +com +( +rhs +, +lhs += +COMPARE_RESULT_EQUAL +; + +50 + gme + < +tyme + + gT +> + +51 +nd + +bo + + gݔ +==( +TV + +lhs +, +T + * + grhs +) { + +52  +com +( +lhs +, +rhs += +COMPARE_RESULT_EQUAL +; + +54 + gme + < +tyme + + gT +> + +55 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +==( + +56 +TV + +lhs +, cڡ + gT + & + grhs +) { + +57  +com +( +lhs +, +rhs += +COMPARE_RESULT_EQUAL +; + +61 + gme + < +tyme + + gT +> + +62 +nd + +bo + + gݔ +!=( +T + * +lhs +, +TV + + grhs +) { + +63  +com +( +rhs +, +lhs +! +COMPARE_RESULT_EQUAL +; + +65 + gme + < +tyme + + gT +> + +66 +nd + +bo + + gݔ +!=(cڡ +T + & +lhs +, +TV + + grhs +) { + +67  +com +( +rhs +, +lhs +! +COMPARE_RESULT_EQUAL +; + +71 + gme + < +tyme + + gT +> + +72 +nd + +bo + + gݔ +!=( +TV + +lhs +, +T + * + grhs +) { + +73  +com +( +lhs +, +rhs +! +COMPARE_RESULT_EQUAL +; + +75 + gme + < +tyme + + gT +> + +76 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +!=( + +77 +TV + +lhs +, cڡ + gT + & + grhs +) { + +78  +com +( +lhs +, +rhs +! +COMPARE_RESULT_EQUAL +; + +82 + gme + < +tyme + + gT +> + +83 +nd + +bo + + gݔ +<( +T + * + glhs +, +TV + + grhs +) { + +84  +com +( +rhs +, +lhs += +COMPARE_RESULT_GREATER +; + +86 + gme + < +tyme + + gT +> + +87 +nd + +bo + + gݔ +<(cڡ + gT + & + glhs +, +TV + + grhs +) { + +88  +com +( +rhs +, +lhs += +COMPARE_RESULT_GREATER +; + +92 + gme + < +tyme + + gT +> + +93 +nd + +bo + + gݔ +<( +TV + + glhs +, +T + * + grhs +) { + +94  +com +( +lhs +, +rhs += +COMPARE_RESULT_LESS +; + +96 + gme + < +tyme + + gT +> + +97 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +<( + +98 +TV + +lhs +, cڡ + gT + & + grhs +) { + +99  +com +( +lhs +, +rhs += +COMPARE_RESULT_LESS +; + +103 + gme + < +tyme + + gT +> + +104 +nd + +bo + + gݔ +<=( +T + * +lhs +, +TV + + grhs +) { + +105  ( +com +( +rhs +, +lhs +& + gCOMPARE_RESULT_GREATER_OR_EQUAL +) != 0; + +107 + gme + < +tyme + + gT +> + +108 +nd + +bo + + gݔ +<=(cڡ +T + & +lhs +, +TV + + grhs +) { + +109  ( +com +( +rhs +, +lhs +& + gCOMPARE_RESULT_GREATER_OR_EQUAL +) != 0; + +113 + gme + < +tyme + + gT +> + +114 +nd + +bo + + gݔ +<=( +TV + +lhs +, +T + * + grhs +) { + +115  ( +com +( +lhs +, +rhs +& + gCOMPARE_RESULT_LESS_OR_EQUAL +) != 0; + +117 + gme + < +tyme + + gT +> + +118 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +<=( + +119 +TV + +lhs +, cڡ + gT + & + grhs +) { + +120  ( +com +( +lhs +, +rhs +& + gCOMPARE_RESULT_LESS_OR_EQUAL +) != 0; + +124 + gme + < +tyme + + gT +> + +125 +nd + +bo + + gݔ +>( +T + * + glhs +, +TV + + grhs +) { + +126  +com +( +rhs +, +lhs += +COMPARE_RESULT_LESS +; + +128 + gme + < +tyme + + gT +> + +129 +nd + +bo + + gݔ +>(cڡ + gT + & + glhs +, +TV + + grhs +) { + +130  +com +( +rhs +, +lhs += +COMPARE_RESULT_LESS +; + +134 + gme + < +tyme + + gT +> + +135 +nd + +bo + + gݔ +>( +TV + + glhs +, +T + * + grhs +) { + +136  +com +( +lhs +, +rhs += +COMPARE_RESULT_GREATER +; + +138 + gme + < +tyme + + gT +> + +139 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +>( + +140 +TV + +lhs +, cڡ + gT + & + grhs +) { + +141  +com +( +lhs +, +rhs += +COMPARE_RESULT_GREATER +; + +145 + gme + < +tyme + + gT +> + +146 +nd + +bo + + gݔ +>=( +T + * +lhs +, +TV + + grhs +) { + +147  ( +com +( +rhs +, +lhs +& + gCOMPARE_RESULT_LESS_OR_EQUAL +) != 0; + +149 + gme + < +tyme + + gT +> + +150 +nd + +bo + + gݔ +>=(cڡ +T + & +lhs +, +TV + + grhs +) { + +151  ( +com +( +rhs +, +lhs +& + gCOMPARE_RESULT_LESS_OR_EQUAL +) != 0; + +155 + gme + < +tyme + + gT +> + +156 +nd + +bo + + gݔ +>=( +TV + +lhs +, +T + * + grhs +) { + +157  ( +com +( +lhs +, +rhs +& + gCOMPARE_RESULT_GREATER_OR_EQUAL +) != 0; + +159 + gme + < +tyme + + gT +> + +160 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +>=( + +161 +TV + +lhs +, cڡ + gT + & + grhs +) { + +162  ( +com +( +lhs +, +rhs +& + gCOMPARE_RESULT_GREATER_OR_EQUAL +) != 0; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +17  + ~ + +18  + ~ + +20 +mea + + gARDUINOJSON_NAMESPACE + { + +23 +ass + + gAayRef +; + +24 +ass + + gObjeRef +; + +26 + gme + < + gtyme +,ypename> + +27 +ass + + gMembProxy +; + +30 + gme + < +tyme + + gTDa +> + +31 as + cVRefBa + { + +32 + gpublic +: + +45 +me + < +tyme + +T +> + +46 +FORCE_INLINE + + +47 +tyme + +ab_if +< +is_gl +< +T +>:: +vue + && ! +is_me +< +bo +, + gT +>::value, + +48 + gbo +>:: +ty + + +49 +is +() const { + +50  +vIsIeg +< +T +>( +_da +); + +55 + gme + < +tyme + + gT +> + +56 +FORCE_INLINE + +tyme + + gab_if +< + gis_tg_pot +< + gT +>:: +vue +, + gbo +>:: +ty + +is +() + +58  +vIsFlt +( +_da +); + +62 + gme + < +tyme + + gT +> + +63 +FORCE_INLINE + +tyme + + gab_if +< + gis_me +< + gT +, + gbo +>:: +vue +, bo>:: +ty + +is +() + +65  +vIsBoޗn +( +_da +); + +72 + gme + < +tyme + + gT +> + +73 +FORCE_INLINE + +tyme + + gab_if +< + gis_me +< + gT +, cڡ *>:: +vue + || + +74 +is_me +< +T +, *>:: +vue + || + +75 +IsWrbSg +< +T +>:: +vue +, + +76 + gbo +>:: +ty + + +77 +is +() const { + +78  +vIsSg +( +_da +); + +83 + gme + < +tyme + + gT +> + +84 +FORCE_INLINE + +tyme + + gab_if +< + +85 + gis_me +< +tyme + + gmove_cڡ +< + gT +>:: +ty +, + gAayRef +>:: +vue +, + gbo +>::type + +86 +is +() const { + +87  +vIsAay +( +_da +); + +92 + gme + < +tyme + + gT +> + +93 +FORCE_INLINE + +tyme + + gab_if +< + +94 + gis_me +< +tyme + + gmove_cڡ +< + gT +>:: +ty +, + gObjeRef +>:: +vue +, + gbo +>::type + +95 +is +() const { + +96  +vIsObje +( +_da +); + +98 #i +ARDUINOJSON_HAS_NULLPTR + + +101 + gme + < +tyme + + gT +> + +102 +FORCE_INLINE + + +103 +tyme + + gab_if +< + gis_me +< + gT +, +dety +( +nuαr +)>:: +vue +, + gbo +>:: +ty + + +104 +is +() const { + +105  +vIsNu +( +_da +); + +109 + gme + < +tyme + + gT +> + +110 +FORCE_INLINE + +tyme + + gab_if +< + gis_um +< + gT +>:: +vue +, + gbo +>:: +ty + +is +() const { + +111  +vIsIeg +<>( +_da +); + +114 +FORCE_INLINE + +bo + +isNu +() const { + +115  +vIsNu +( +_da +); + +118 +FORCE_INLINE + +bo + +isUndefed +() const { + +119  ! + g_da +; + +122 +FORCE_INLINE + +size_t + +memyUge +() const { + +123  + g_da + ? _da-> +memyUge +() : 0; + +126 +FORCE_INLINE + +size_t + +ág +() const { + +127  + g_da + ? _da-> +ág +() : 0; + +130 +size_t + +size +() const { + +131  +vSize +( +_da +); + +134 + geed +: + +135 +VRefBa +( +TDa + * +da +: +_da +(data) {} + +136 +TDa + * +_da +; + +146 +ass + + gVRef + : +public + +VRefBa +< +VDa +>, + +147 +public + + gVOts +< + gVRef +>, + +148 +public + + gVShtcuts +< + gVRef +>, + +149 +public + + gVisab + { + +150  + gVRefBa +< + tVDa +> + tba_ty +; + +151 +nd + +ass + + gVCڡRef +; + +153 + gpublic +: + +155 +FORCE_INLINE + +VRef +( +MemyPo + * +po +, +VDa + * +da +) + +156 : +ba_ty +( +da +), +_po +( +po +) {} + +159 +FORCE_INLINE + +VRef +(: +ba_ty +(0), +_po +(0) {} + +161 +FORCE_INLINE +  +r +() const { + +162  +vSNu +( +_da +); + +166 + gme + < +tyme + + gT +> + +167 +FORCE_INLINE + +bo + +t +( + +168 +T + +vue +, +tyme + +ab_if +< +is_me +::vue>:: +ty + * = 0) const { + +169  +vSBoޗn +( +_da +, +vue +); + +174 + gme + < +tyme + + gT +> + +175 +FORCE_INLINE + +bo + +t +( + +176 +T + +vue +, + +177 +tyme + +ab_if +< +is_tg_pot +< +T +>:: +vue +>:: +ty + * = 0) const { + +178  +vSFlt +( +_da +, +ic_ +< +Flt +>( +vue +)); + +189 + gme + < +tyme + + gT +> + +190 +FORCE_INLINE + +bo + +t +( + +191 +T + +vue +, +tyme + +ab_if +< +is_gl +::value && + +192 ! +is_me +< +bo +, +T +>:: +vue +>:: +ty + * = 0) const { + +193  +vSIeg +< +T +>( +_da +, +vue +); + +197 +FORCE_INLINE + +bo + +t +( +SlizedVue + +vue +) const { + +198  +vSLkedRaw +( +_da +, +vue +); + +204 + gme + < +tyme + + gT +> + +205 +FORCE_INLINE + +bo + +t +( + +206 +SlizedVue +< +T +> +vue +, + +207 +tyme + +ab_if +:: +vue +>:: +ty + * = 0) const { + +208  +vSOwdRaw +( +_da +, +vue +, +_po +); + +213 + gme + < +tyme + + gT +> + +214 +FORCE_INLINE + +bo + +t +( + +215 cڡ +T + & +vue +, + +216 +tyme + +ab_if +< +IsSg +< +T +>:: +vue +>:: +ty + * = 0) const { + +217  +vSSg +( +_da +, +adtSg +( +vue +), +_po +); + +222 + gme + < +tyme + + gT +> + +223 +FORCE_INLINE + +bo + +t +( + +224 +T + * +vue +, +tyme + +ab_if +< +IsSg +::vue>:: +ty + * = 0) const { + +225  +vSSg +( +_da +, +adtSg +( +vue +), +_po +); + +235 + gme + < +tyme + + gTV +> + +236 +tyme + + gab_if +< + gIsVisab +< + gTV +>:: +vue +, + gbo +>:: +ty + +t +( + +237 cڡ +TV + & +vue +) const; + +240 + gme + < +tyme + + gT +> + +241 +FORCE_INLINE + +bo + +t +( + +242 +T + +vue +, +tyme + +ab_if +< +is_um +::vue>:: +ty + * = 0) const { + +243  +vSIeg +( +_da +, +ic_ +< +Ieg +>( +vue +)); + +246 #i +ARDUINOJSON_HAS_NULLPTR + + +248 +FORCE_INLINE + +bo + +t +( +dety +( +nuαr +)) const { + +249 +vSNu +( +_da +); + +250  + gue +; + +254 + gme + < +tyme + + gT +> + +255 +FORCE_INLINE + +tyme + + gVAs +< + gT +>:: +ty + +as +() const { + +256  +vAs +< +tyme + +VAs +< +T +>:: +ty +>( +_da +, + g_po +); + +259 + gme + < +tyme + + gT +> + +260 +FORCE_INLINE + +ݔ + +T +() const { + +261  + gvAs +< + gT +>( + g_da +, + g_po +); + +264 + gme + < +tyme + + gTVis +> + +265 +tyme + + gTVis +:: +su_ty + +ac +( +TVis + & +vis +) const { + +266  +vAc +( +_da +, +vis +); + +272 + gme + < +tyme + + gT +> + +273 +tyme + + gab_if +< + gis_me +< + gT +, + gAayRef +>:: +vue +, AayRef>:: +ty + +to +() const; + +276 + gme + < +tyme + + gT +> + +277 +tyme + + gab_if +< + gis_me +< + gT +, + gObjeRef +>:: +vue +, ObjeRef>:: +ty + +to +() const; + +280 + gme + < +tyme + + gT +> + +281 +tyme + + gab_if +< + gis_me +< + gT +, + gVRef +>:: +vue +, VRef>:: +ty + +to +() + +284 +VRef + +addEmt +() const; + +286 +FORCE_INLINE + +VRef + +gEmt +( +size_t +) const; + +288 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t +) const; + +292 + gme + < +tyme + + gTCh +> + +293 +FORCE_INLINE + +VRef + +gMemb +( +TCh + *) const; + +297 + gme + < +tyme + + gTSg +> + +298 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVRef +>:: +ty + + +299 +gMemb +(cڡ +TSg + &) const; + +304 + gme + < +tyme + + gTCh +> + +305 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh + *) const; + +309 + gme + < +tyme + + gTSg +> + +310 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg + &) const; + +312 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +313 i( + g_da +) + +314 + g_da +-> +move +( +dex +); + +319 + gme + < +tyme + + gTCh +> + +320 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +>:: +ty + +move +( + +321 +TCh + * +key +) const { + +322 i( +_da +) + +323 +_da +-> +move +( +adtSg +( +key +)); + +327 + gme + < +tyme + + gTSg +> + +328 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +329 cڡ +TSg + & +key +) const { + +330 i( +_da +) + +331 +_da +-> +move +( +adtSg +( +key +)); + +334 + give +: + +335 +MemyPo + * +_po +; + +338 +ass + + gVCڡRef + : +public + +VRefBa +, + +339 +public + + gVOts +< + gVCڡRef +>, + +340 +public + + gVShtcuts +< + gVCڡRef +>, + +341 +public + + gVisab + { + +342  + gVRefBa + + tba_ty +; + +343 +nd + +ass + + gVRef +; + +345 + gpublic +: + +346 +VCڡRef +(: +ba_ty +(0) {} + +347 +VCڡRef +(cڡ +VDa + * +da +: +ba_ty +(data) {} + +348 +VCڡRef +( +VRef + +v +: +ba_ty +(v. +_da +) {} + +350 +me + < +tyme + +TVis +> + +351 +tyme + +TVis +:: +su_ty + +ac +(TVis & +vis +) const { + +352  +vAc +( +_da +, +vis +); + +355 + gme + < +tyme + + gT +> + +356 +FORCE_INLINE + +tyme + + gVCڡAs +< + gT +>:: +ty + +as +() const { + +357  +vAs +< +tyme + +VCڡAs +< +T +>:: +ty +>( +_da +); + +360 + gme + < +tyme + + gT +> + +361 +FORCE_INLINE + +ݔ + +T +() const { + +362  + gvAs +< + gT +>( + g_da +); + +365 +FORCE_INLINE + +VCڡRef + +gEmt +( +size_t +) const; + +367 +FORCE_INLINE + +VCڡRef + + gݔ +[]( +size_t + + gdex +) const { + +368  +gEmt +( +dex +); + +373 + gme + < +tyme + + gTSg +> + +374 +FORCE_INLINE + +VCڡRef + +gMemb +(cڡ +TSg + & +key +) const { + +375  +VCڡRef +( + +376 +objeGMemb +( +vAsObje +( +_da +), +adtSg +( +key +))); + +382 + gme + < +tyme + + gTCh +> + +383 +FORCE_INLINE + +VCڡRef + +gMemb +( +TCh + * +key +) const { + +384 cڡ +CiDa + * + gobj + = +vAsObje +( +_da +); + +385  +VCڡRef +( +obj + ? obj-> +gMemb +( +adtSg +( +key +)) : 0); + +390 + gme + < +tyme + + gTSg +> + +391 +FORCE_INLINE + + +392 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +393 +ݔ +[](cڡ +TSg + & +key +) const { + +394  +gMemb +( +key +); + +400 + gme + < +tyme + + gTCh +> + +401 +FORCE_INLINE + + +402 +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +, + gVCڡRef +>:: +ty + + +403 +ݔ +[]( +TCh + * +key +) const { + +404  +gMemb +( +key +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantShortcuts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTV +> + +13 +ass + + gVShtcuts + : +public + +ObjeShtcuts +< +TV +>, + +14 +public + + gAayShtcuts +< + gTV +> { + +15 + gpublic +: + +16 +usg + +AayShtcuts +< +TV +>:: +NeedAay +; + +17 +usg + + gAayShtcuts +< + gTV +>:: +NeedObje +; + +18 +usg + + gAayShtcuts +< + gTV +>:: +ݔ +[]; + +19 +usg + + gObjeShtcuts +< + gTV +>:: +NeedAay +; + +20 +usg + + gObjeShtcuts +< + gTV +>:: +NeedObje +; + +21 +usg + + gObjeShtcuts +< + gTV +>:: +ݔ +[]; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15  + gcdiڮ +<(*<2, + tt8_t +, + tt16_t +>:: + tty + + tVSlDiff +; + +17 as + cVSl + { + +21 +VCڋ + + g_cڋ +; + +22 +ut8_t + + g_ags +; + +23 +VSlDiff + + g_xt +; + +24 cڡ * + g_key +; + +26 + gpublic +: + +33 +VDa +* +da +() { + +34  +t_ +< +VDa +*>(& +_cڋ +); + +37 cڡ +VDa +* +da +() const { + +38  + gt_ +(& + g_cڋ +); + +41 +VSl +* +xt +() { + +42  + g_xt + ? + gthis + + _next : 0; + +45 cڡ +VSl +* +xt +() const { + +46  + gcڡ_ +< + gVSl +*>( + gthis +)-> +xt +(); + +49 +VSl +* +xt +( +size_t + +di +) { + +50 +VSl +* + g + = +this +; + +51  + gdi +--) { + +52 i(! + g +-> + g_xt +) + +54 + g + + + +-> +_xt +; + +56  + g +; + +59 cڡ +VSl +* +xt +( +size_t + +di +) const { + +60  + gcڡ_ +< + gVSl +*>( + gthis +)-> +xt +( +di +); + +63  +tNext +( +VSl +* + +) { + +64 + g_xt + = +VSlDiff +( + + ? sl - +this + : 0); + +67  +tNextNNu +( +VSl +* + +) { + +68 +ARDUINOJSON_ASSERT +( + + != 0); + +69 + g_xt + = +VSlDiff +( + + - +this +); + +72  +tKey +(cڡ * +k +, +age_pics +:: +e_by_cy +) { + +73 +ARDUINOJSON_ASSERT +( +k + ! +NULL +); + +74 + g_ags + | +KEY_IS_OWNED +; + +75 + g_key + = +k +; + +78  +tKey +(cڡ * +k +, +age_pics +:: +e_by_addss +) { + +79 +ARDUINOJSON_ASSERT +( +k + ! +NULL +); + +80 + g_ags + & +VALUE_MASK +; + +81 + g_key + = +k +; + +84 cڡ * +key +() const { + +85  + g_key +; + +88 +bo + +ownsKey +() const { + +89  ( + g_ags + & + gKEY_IS_OWNED +) != 0; + +92  +r +() { + +93 + g_xt + = 0; + +94 + g_ags + = 0; + +95 + g_key + = 0; + +98  +movePors +( +rdiff_t + +rgDi +,diff_ +vDi +) { + +99 i( + g_ags + & + gKEY_IS_OWNED +) + +100 + g_key + + +rgDi +; + +101 i( + g_ags + & + gVALUE_IS_OWNED +) + +102 + g_cڋ +. + gasSg + + +rgDi +; + +103 i( + g_ags + & + gCOLLECTION_MASK +) + +104 + g_cڋ +. + gasCi +. +movePors +( +rgDi +, +vDi +); + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +10 +ass + + gAayRef +; + +11 +ass + + gObjeRef +; + +12 +ass + + gVRef +; + +16 + gme + < +tyme + + gT +> + +17  + sVTo + {}; + +19 + gme + <> + +20  + gVTo +< + gAayRef +> { + +21  +AayRef + + tty +; + +23 + gme + <> + +24  + gVTo +< + gObjeRef +> { + +25  +ObjeRef + + tty +; + +27 + gme + <> + +28  + gVTo +< + gVRef +> { + +29  +VRef + + tty +; + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp + +7 #ifde +__GNUC__ + + +9  + #ARDUINOJSON_PRAGMA +( +x + + `_Pgma +(#x) + + ) + +11  + #ARDUINOJSON_COMPILE_ERROR +( +msg + + `ARDUINOJSON_PRAGMA +( +GCC + +r + msg) + + ) + +13  + #ARDUINOJSON_STRINGIFY +( +S +#S + + ) + +15  + #ARDUINOJSON_DEPRECATION_ERROR +( +X +, +Y +) \ + +16 + `ARDUINOJSON_COMPILE_ERROR +( + `ARDUINOJSON_STRINGIFY +( +X + +is + +a + +Y + +om + +ArduoJs + 5. +Pa + +e + +duojs +. +g +/ +upgde + +to + +ˬn + +how +upgd +your + +ogm +ArduoJs +vsi + 6)) + + ) + +18  + #SticJsBufr + + `ARDUINOJSON_DEPRECATION_ERROR +( +SticJsBufr +, +ass +) + + ) + +19  + #DymicJsBufr + + `ARDUINOJSON_DEPRECATION_ERROR +( +DymicJsBufr +, +ass +) + + ) + +20  + #JsBufr + + `ARDUINOJSON_DEPRECATION_ERROR +( +JsBufr +, +ass +) + + ) + +21  + #RawJs + + `ARDUINOJSON_DEPRECATION_ERROR +( +RawJs +, +funi +) + + ) + + @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp + +5 #agm + + + +7  + #ARDUINOJSON_VERSION + "6.17.0" + + ) + +8  + #ARDUINOJSON_VERSION_MAJOR + 6 + + ) + +9  + #ARDUINOJSON_VERSION_MINOR + 17 + + ) + +10  + #ARDUINOJSON_VERSION_REVISION + 0 + + ) + + @.pio/libdeps/esp8266/AsyncMqttClient/examples/FullyFeaturedSSL/src/main.cpp + +6  + ~ + +7  + ~ + +8  + ~ + +9  + ~ + +11  + #WIFI_SSID + "My_Wi-Fi" + + ) + +12  + #WIFI_PASSWORD + "my-awesome-sswd" + + ) + +14  + #MQTT_HOST + + `IPAddss +(192, 168, 1, 10) + + ) + +16 #i +ASYNC_TCP_SSL_ENABLED + + +17  + #MQTT_SECURE + +ue + + + ) + +18  + #MQTT_SERVER_FINGERPRINT + {0x7e, 0x36, 0x22, 0x01, 0xf9, 0x7e, 0x99, 0x2f, 0xc5, 0xdb, 0x3d, 0xbe, 0xac, 0x48, 0x67, 0x5b, 0x5d, 0x47, 0x94, 0xd2} + + ) + +19  + #MQTT_PORT + 8883 + + ) + +21  + #MQTT_PORT + 1883 + + ) + +24 +AsyncMqCl + + gmqCl +; + +25 +Tick + + gmqRecTim +; + +27 +WiFiEvtHdr + + gwifiCHdr +; + +28 +WiFiEvtHdr + + gwifiDiscHdr +; + +29 +Tick + + gwifiRecTim +; + +31  + $cToWifi +() { + +32 +Sl +. + `n +("Connectingo Wi-Fi..."); + +33 +WiFi +. + `beg +( +WIFI_SSID +, +WIFI_PASSWORD +); + +34 + } +} + +36  + $cToMq +() { + +37 +Sl +. + `n +("Connectingo MQTT..."); + +38 +mqCl +. + `c +(); + +39 + } +} + +41  + $WifiC +(cڡ +WiFiEvtStiModeGIP +& +evt +) { + +42 +Sl +. + `n +("Connectedo Wi-Fi."); + +43 + `cToMq +(); + +44 + } +} + +46  + $WifiDisc +(cڡ +WiFiEvtStiModeDisced +& +evt +) { + +47 +Sl +. + `n +("Disconnected from Wi-Fi."); + +48 +mqRecTim +. + `dach +(); + +49 +wifiRecTim +. + ` +(2, +cToWifi +); + +50 + } +} + +52  + $MqC +( +bo + +ssiP +) { + +53 +Sl +. + `n +("Connectedo MQTT."); + +54 +Sl +. + `t +("Sessionresent: "); + +55 +Sl +. + `n +( +ssiP +); + +56 +ut16_t + +ckIdSub + = +mqCl +. + `subsibe +("test/lol", 2); + +57 +Sl +. + `t +("Subscribingt QoS 2,acketId: "); + +58 +Sl +. + `n +( +ckIdSub +); + +59 +mqCl +. + `publish +("/l", 0, +ue +, "test 1"); + +60 +Sl +. + `n +("Publishingt QoS 0"); + +61 +ut16_t + +ckIdPub1 + = +mqCl +. + `publish +("/l", 1, +ue +, "test 2"); + +62 +Sl +. + `t +("Publishingt QoS 1,acketId: "); + +63 +Sl +. + `n +( +ckIdPub1 +); + +64 +ut16_t + +ckIdPub2 + = +mqCl +. + `publish +("/l", 2, +ue +, "test 3"); + +65 +Sl +. + `t +("Publishingt QoS 2,acketId: "); + +66 +Sl +. + `n +( +ckIdPub2 +); + +67 + } +} + +69  + $MqDisc +( +AsyncMqClDiscRs + +as +) { + +70 +Sl +. + `n +("Disconnected from MQTT."); + +72 i( +as + = +AsyncMqClDiscRs +:: +TLS_BAD_FINGERPRINT +) { + +73 +Sl +. + `n +("Bad server fingerprint."); + +76 i( +WiFi +. + `isCed +()) { + +77 +mqRecTim +. + ` +(2, +cToMq +); + +79 + } +} + +81  + $MqSubsibe +( +ut16_t + +ckId +, +ut8_t + +qos +) { + +82 +Sl +. + `n +("Subscribecknowledged."); + +83 +Sl +. + `t +("acketId: "); + +84 +Sl +. + `n +( +ckId +); + +85 +Sl +. + `t +(" qos: "); + +86 +Sl +. + `n +( +qos +); + +87 + } +} + +89  + $MqUnsubsibe +( +ut16_t + +ckId +) { + +90 +Sl +. + `n +("Unsubscribecknowledged."); + +91 +Sl +. + `t +("acketId: "); + +92 +Sl +. + `n +( +ckId +); + +93 + } +} + +95  + $MqMesge +(* +tic +, * +yld +, +AsyncMqClMesgePrݔts + +ݔts +, +size_t + +n +, size_ +dex +, size_ +tٮ +) { + +96 +Sl +. + `n +("Publisheceived."); + +97 +Sl +. + `t +("opic: "); + +98 +Sl +. + `n +( +tic +); + +99 +Sl +. + `t +(" qos: "); + +100 +Sl +. + `n +( +ݔts +. +qos +); + +101 +Sl +. + `t +(" dup: "); + +102 +Sl +. + `n +( +ݔts +. +dup +); + +103 +Sl +. + `t +("etain: "); + +104 +Sl +. + `n +( +ݔts +. + +); + +105 +Sl +. + `t +("en: "); + +106 +Sl +. + `n +( +n +); + +107 +Sl +. + `t +(" index: "); + +108 +Sl +. + `n +( +dex +); + +109 +Sl +. + `t +("otal: "); + +110 +Sl +. + `n +( +tٮ +); + +111 + } +} + +113  + $MqPublish +( +ut16_t + +ckId +) { + +114 +Sl +. + `n +("Publishcknowledged."); + +115 +Sl +. + `t +("acketId: "); + +116 +Sl +. + `n +( +ckId +); + +117 + } +} + +119  + $tup +() { + +120 +Sl +. + `beg +(115200); + +121 +Sl +. + `n +(); + +122 +Sl +. + `n +(); + +124 +wifiCHdr + = +WiFi +. + `StiModeGIP +( +WifiC +); + +125 +wifiDiscHdr + = +WiFi +. + `StiModeDisced +( +WifiDisc +); + +127 +mqCl +. + `C +( +MqC +); + +128 +mqCl +. + `Disc +( +MqDisc +); + +129 +mqCl +. + `Subsibe +( +MqSubsibe +); + +130 +mqCl +. + `Unsubsibe +( +MqUnsubsibe +); + +131 +mqCl +. + `Mesge +( +MqMesge +); + +132 +mqCl +. + `Publish +( +MqPublish +); + +133 +mqCl +. + `tSv +( +MQTT_HOST +, +MQTT_PORT +); + +134 #i +ASYNC_TCP_SSL_ENABLED + + +135 +mqCl +. + `tSecu +( +MQTT_SECURE +); + +136 i( +MQTT_SECURE +) { + +137 +mqCl +. + `addSvFgt +((cڡ +ut8_t +[]) +MQTT_SERVER_FINGERPRINT +); + +141 + `cToWifi +(); + +142 + } +} + +144  + $lo +() { + +145 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.cpp + +1  + ~"AsyncMqCl.h +" + +3 + gAsyncMqCl +:: + $AsyncMqCl +() + +4 : + `_ced +( +l +) + +5 , + `_cPackNEnoughS +( +l +) + +6 , + `_discOnPl +( +l +) + +7 , + `_sBadFgt +( +l +) + +8 , + `_ϡClAivy +(0) + +9 , + `_ϡSvAivy +(0) + +10 , + `_ϡPgRequeTime +(0) + +11 , + `_ho +( +nuαr +) + +12 , + $_uIp +( +l +) + +13 #i +ASYNC_TCP_SSL_ENABLED + + +14 , + $_cu +( +l +) + +16 , + `_pt +(0) + +17 , + `_kpAlive +(15) + +18 , + `_nSessi +( +ue +) + +19 , + `_Id +( +nuαr +) + +20 , + `_uame +( +nuαr +) + +21 , + `_sswd +( +nuαr +) + +22 , + `_wlTic +( +nuαr +) + +23 , + `_wlPayld +( +nuαr +) + +24 , + `_wlPayldLgth +(0) + +25 , + `_wlQos +(0) + +26 , + `_wlRa +( +l +) + +27 , +_rsgInfmi + { . +bufrS + = +AsyncMqClIls +:: +BufrS +:: +NONE + + } +} + +28 , +_cutPdPack +( +nuαr +) + +29 , +_magLgthBufrPosi +(0) + +30 , + $_xtPackId +(1) { + +31 +_ +. + `C +([](* +obj +, +AsyncCl +* +c +{ ( +ic_ +< +AsyncMqCl +*>(obj))-> + `_C +(c); }, +this +); + +32 +_ +. + `Disc +([](* +obj +, +AsyncCl +* +c +{ ( +ic_ +< +AsyncMqCl +*>(obj))-> + `_Disc +(c); }, +this +); + +33 +_ +. + `E +([](* +obj +, +AsyncCl +* +c +, +t8_t + +r +{ ( +ic_ +< +AsyncMqCl +*>(obj))-> + `_E +(c,); }, +this +); + +34 +_ +. + `Timeout +([](* +obj +, +AsyncCl +* +c +, +ut32_t + +time +{ ( +ic_ +< +AsyncMqCl +*>(obj))-> + `_Timeout +(c,ime); }, +this +); + +35 +_ +. + `Ack +([](* +obj +, +AsyncCl +* +c +, +size_t + +n +, +ut32_t + +time +{ ( +ic_ +< +AsyncMqCl +*>(obj))-> + `_Ack +(c,,ime); }, +this +); + +36 +_ +. + `Da +([](* +obj +, +AsyncCl +* +c +, * +da +, +size_t + +n +{ ( +ic_ +< +AsyncMqCl +*>(obj))-> + `_Da +(c, stic_<*>(da),); }, +this +); + +37 +_ +. + `Pl +([](* +obj +, +AsyncCl +* +c +{ ( +ic_ +< +AsyncMqCl +*>(obj))-> + `_Pl +(c); }, +this +); + +39 #ifde +ESP32 + + +40 + `rtf +( +_gedClId +, "e32-%06x", +ESP +. + `gEfuMac +()); + +41 +_xSemhe + = + `xSemheCeMux +(); + +42 #i + `defed +( +ESP8266 +) + +43 + `rtf +( +_gedClId +, "e8266-%06x", +ESP +. + `gChId +()); + +45 +_Id + = +_gedClId +; + +47 + `tMaxTicLgth +(128); + +48 + } +} + +50 + gAsyncMqCl +::~ + $AsyncMqCl +() { + +51 +de + +_cutPdPack +; + +52 +de +[] +_rsgInfmi +. +ticBufr +; + +53 #ifde +ESP32 + + +54 + `vSemheDe +( +_xSemhe +); + +56 + } +} + +58 + gAsyncMqCl +& AsyncMqCl:: + $tKpAlive +( +ut16_t + +kpAlive +) { + +59 +_kpAlive + = +kpAlive +; + +60  * +this +; + +61 + } +} + +63 + gAsyncMqCl +& AsyncMqCl:: + $tClId +(cڡ * +Id +) { + +64 +_Id + = +Id +; + +65  * +this +; + +66 + } +} + +68 + gAsyncMqCl +& AsyncMqCl:: + $tC˪Sessi +( +bo + +nSessi +) { + +69 +_nSessi + = +nSessi +; + +70  * +this +; + +71 + } +} + +73 + gAsyncMqCl +& AsyncMqCl:: + $tMaxTicLgth +( +ut16_t + +maxTicLgth +) { + +74 +_rsgInfmi +. +maxTicLgth + = maxTopicLength; + +75 +de +[] +_rsgInfmi +. +ticBufr +; + +76 +_rsgInfmi +. +ticBufr + = +w + [ +maxTicLgth + + 1]; + +77  * +this +; + +78 + } +} + +80 + gAsyncMqCl +& AsyncMqCl:: + $tCdtls +(cڡ * +uame +, cڡ * +sswd +) { + +81 +_uame + = +uame +; + +82 +_sswd + = +sswd +; + +83  * +this +; + +84 + } +} + +86 + gAsyncMqCl +& AsyncMqCl:: + $tWl +(cڡ * +tic +, +ut8_t + +qos +, +bo + + +, cڡ * +yld +, +size_t + +ngth +) { + +87 +_wlTic + = +tic +; + +88 +_wlQos + = +qos +; + +89 +_wlRa + = + +; + +90 +_wlPayld + = +yld +; + +91 +_wlPayldLgth + = +ngth +; + +92  * +this +; + +93 + } +} + +95 + gAsyncMqCl +& AsyncMqCl:: + $tSv +( +IPAddss + + +, +ut16_t + +pt +) { + +96 +_uIp + = +ue +; + +97 +_ + = + +; + +98 +_pt + = +pt +; + +99  * +this +; + +100 + } +} + +102 + gAsyncMqCl +& AsyncMqCl:: + $tSv +(cڡ * +ho +, +ut16_t + +pt +) { + +103 +_uIp + = +l +; + +104 +_ho + = +ho +; + +105 +_pt + = +pt +; + +106  * +this +; + +107 + } +} + +109 #i +ASYNC_TCP_SSL_ENABLED + + +110 + gAsyncMqCl +& AsyncMqCl:: + $tSecu +( +bo + +cu +) { + +111 +_cu + = +cu +; + +112  * +this +; + +113 + } +} + +115 + gAsyncMqCl +& AsyncMqCl:: + $addSvFgt +(cڡ +ut8_t +* +fgt +) { + +116 +d +:: +y +< +ut8_t +, +SHA1_SIZE +> +wFgt +; + +117 + `memy +( +wFgt +. + `da +(), +fgt +, +SHA1_SIZE +); + +118 +_cuSvFgts +. + `push_back +( +wFgt +); + +119  * +this +; + +120 + } +} + +123 + gAsyncMqCl +& AsyncMqCl:: + $C +( +AsyncMqClIls +:: +OnCUrClback + +back +) { + +124 +_CUrClbacks +. + `push_back +( +back +); + +125  * +this +; + +126 + } +} + +128 + gAsyncMqCl +& AsyncMqCl:: + $Disc +( +AsyncMqClIls +:: +OnDiscUrClback + +back +) { + +129 +_DiscUrClbacks +. + `push_back +( +back +); + +130  * +this +; + +131 + } +} + +133 + gAsyncMqCl +& AsyncMqCl:: + $Subsibe +( +AsyncMqClIls +:: +OnSubsibeUrClback + +back +) { + +134 +_SubsibeUrClbacks +. + `push_back +( +back +); + +135  * +this +; + +136 + } +} + +138 + gAsyncMqCl +& AsyncMqCl:: + $Unsubsibe +( +AsyncMqClIls +:: +OnUnsubsibeUrClback + +back +) { + +139 +_UnsubsibeUrClbacks +. + `push_back +( +back +); + +140  * +this +; + +141 + } +} + +143 + gAsyncMqCl +& AsyncMqCl:: + $Mesge +( +AsyncMqClIls +:: +OnMesgeUrClback + +back +) { + +144 +_MesgeUrClbacks +. + `push_back +( +back +); + +145  * +this +; + +146 + } +} + +148 + gAsyncMqCl +& AsyncMqCl:: + $Publish +( +AsyncMqClIls +:: +OnPublishUrClback + +back +) { + +149 +_PublishUrClbacks +. + `push_back +( +back +); + +150  * +this +; + +151 + } +} + +153  + gAsyncMqCl +:: + $_CutPdPack +() { + +154 +de + +_cutPdPack +; + +155 +_cutPdPack + = +nuαr +; + +156 + } +} + +158  + gAsyncMqCl +:: + $_r +() { + +159 +_ϡPgRequeTime + = 0; + +160 +_ced + = +l +; + +161 +_discOnPl + = +l +; + +162 +_cPackNEnoughS + = +l +; + +163 +_sBadFgt + = +l +; + +164 + `_CutPdPack +(); + +166 +_ndgPubRs +. + `r +(); + +167 +_ndgPubRs +. + `shrk_to_f +(); + +169 +_toSdAcks +. + `r +(); + +170 +_toSdAcks +. + `shrk_to_f +(); + +172 +_xtPackId + = 1; + +173 +_rsgInfmi +. +bufrS + = +AsyncMqClIls +:: +BufrS +:: +NONE +; + +174 + } +} + +177  + gAsyncMqCl +:: + $_C +( +AsyncCl +* + +) { + +178 () + +; + +180 #i +ASYNC_TCP_SSL_ENABLED + + +181 i( +_cu + && +_cuSvFgts +. + `size +() > 0) { + +182 +SSL +* +S + = +_ +. + `gSSL +(); + +184 +bo + +sFoundFgt + = +l +; + +185  +d +:: +y +< +ut8_t +, +SHA1_SIZE +> +fgt + : +_cuSvFgts +) { + +186 i( + `s_mch_fgt +( +S +, +fgt +. + `da +()= +SSL_OK +) { + +187 +sFoundFgt + = +ue +; + +192 i(! +sFoundFgt +) { + +193 +_sBadFgt + = +ue +; + +194 +_ +. + `o +( +ue +); + +200  +fixedHd +[5]; + +201 +fixedHd +[0] = +AsyncMqClIls +:: +PackTy +. +CONNECT +; + +202 +fixedHd +[0] = fixedHeader[0] << 4; + +203 +fixedHd +[0] = fixedHd[0] | +AsyncMqClIls +:: +HdFg +. +CONNECT_RESERVED +; + +205 +ut16_t + +ocNameLgth + = 4; + +206  +ocNameLgthBys +[2]; + +207 +ocNameLgthBys +[0] = +ocNameLgth + >> 8; + +208 +ocNameLgthBys +[1] = +ocNameLgth + & 0xFF; + +210  +ocLev +[1]; + +211 +ocLev +[0] = 0x04; + +213  +cFgs +[1]; + +214 +cFgs +[0] = 0; + +215 i( +_nSessi + +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +CLEAN_SESSION +; + +216 i( +_uame + ! +nuαr + +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +USERNAME +; + +217 i( +_sswd + ! +nuαr + +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +PASSWORD +; + +218 i( +_wlTic + ! +nuαr +) { + +219 +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +WILL +; + +220 i( +_wlRa + +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +WILL_RETAIN +; + +221  +_wlQos +) { + +223 +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +WILL_QOS0 +; + +226 +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +WILL_QOS1 +; + +229 +cFgs +[0] | +AsyncMqClIls +:: +CFg +. +WILL_QOS2 +; + +234  +kpAliveBys +[2]; + +235 +kpAliveBys +[0] = +_kpAlive + >> 8; + +236 +kpAliveBys +[1] = +_kpAlive + & 0xFF; + +238 +ut16_t + +IdLgth + = + ` +( +_Id +); + +239  +IdLgthBys +[2]; + +240 +IdLgthBys +[0] = +IdLgth + >> 8; + +241 +IdLgthBys +[1] = +IdLgth + & 0xFF; + +244 +ut16_t + +wlTicLgth + = 0; + +245  +wlTicLgthBys +[2]; + +246 +ut16_t + +wlPayldLgth + = +_wlPayldLgth +; + +247  +wlPayldLgthBys +[2]; + +248 i( +_wlTic + ! +nuαr +) { + +249 +wlTicLgth + = + ` +( +_wlTic +); + +250 +wlTicLgthBys +[0] = +wlTicLgth + >> 8; + +251 +wlTicLgthBys +[1] = +wlTicLgth + & 0xFF; + +253 i( +_wlPayld + ! +nuαr + && +wlPayldLgth + =0wlPayldLgth = + ` +(_willPayload); + +255 +wlPayldLgthBys +[0] = +wlPayldLgth + >> 8; + +256 +wlPayldLgthBys +[1] = +wlPayldLgth + & 0xFF; + +259 +ut16_t + +uameLgth + = 0; + +260  +uameLgthBys +[2]; + +261 i( +_uame + ! +nuαr +) { + +262 +uameLgth + = + ` +( +_uame +); + +263 +uameLgthBys +[0] = +uameLgth + >> 8; + +264 +uameLgthBys +[1] = +uameLgth + & 0xFF; + +267 +ut16_t + +sswdLgth + = 0; + +268  +sswdLgthBys +[2]; + +269 i( +_sswd + ! +nuαr +) { + +270 +sswdLgth + = + ` +( +_sswd +); + +271 +sswdLgthBys +[0] = +sswdLgth + >> 8; + +272 +sswdLgthBys +[1] = +sswdLgth + & 0xFF; + +275 +ut32_t + +magLgth + = 2 + +ocNameLgth + + 1 + 1 + 2 + 2 + +IdLgth +; + +276 i( +_wlTic + ! +nuαr + +magLgth + +2 + +wlTicLgth + + 2 + +wlPayldLgth +; + +277 i( +_uame + ! +nuαr + +magLgth + +2 + +uameLgth +; + +278 i( +_sswd + ! +nuαr + +magLgth + +2 + +sswdLgth +; + +279 +ut8_t + +magLgthLgth + = +AsyncMqClIls +:: +Hrs +:: + `codeRemagLgth +( +magLgth +, +fixedHd + + 1); + +281 +ut32_t + +ededS + = 1 + +magLgthLgth +; + +282 +ededS + += 2; + +283 +ededS + + +ocNameLgth +; + +284 +ededS + += 1; + +285 +ededS + += 1; + +286 +ededS + += 2; + +287 +ededS + += 2; + +288 +ededS + + +IdLgth +; + +289 i( +_wlTic + ! +nuαr +) { + +290 +ededS + += 2; + +291 +ededS + + +wlTicLgth +; + +293 +ededS + += 2; + +294 i( +_wlPayld + ! +nuαr + +ededS + + +wlPayldLgth +; + +296 i( +_uame + ! +nuαr +) { + +297 +ededS + += 2; + +298 +ededS + + +uameLgth +; + +300 i( +_sswd + ! +nuαr +) { + +301 +ededS + += 2; + +302 +ededS + + +sswdLgth +; + +305 + `SEMAPHORE_TAKE +(); + +306 i( +_ +. + `a +(< +ededS +) { + +307 +_cPackNEnoughS + = +ue +; + +308 +_ +. + `o +( +ue +); + +309 + `SEMAPHORE_GIVE +(); + +313 +_ +. + `add +( +fixedHd +, 1 + +magLgthLgth +); + +316  +ndbufr +[12]; + +317 +ndbufr +[0] = +ocNameLgthBys +[0]; + +318 +ndbufr +[1] = +ocNameLgthBys +[1]; + +320 +ndbufr +[2] = 'M'; + +321 +ndbufr +[3] = 'Q'; + +322 +ndbufr +[4] = 'T'; + +323 +ndbufr +[5] = 'T'; + +325 +ndbufr +[6] = +ocLev +[0]; + +326 +ndbufr +[7] = +cFgs +[0]; + +327 +ndbufr +[8] = +kpAliveBys +[0]; + +328 +ndbufr +[9] = +kpAliveBys +[1]; + +329 +ndbufr +[10] = +IdLgthBys +[0]; + +330 +ndbufr +[11] = +IdLgthBys +[1]; + +332 +_ +. + `add +( +ndbufr +, 12); + +334 +_ +. + `add +( +_Id +, +IdLgth +); + +335 i( +_wlTic + ! +nuαr +) { + +336 +_ +. + `add +( +wlTicLgthBys +, 2); + +337 +_ +. + `add +( +_wlTic +, +wlTicLgth +); + +339 +_ +. + `add +( +wlPayldLgthBys +, 2); + +340 i( +_wlPayld + ! +nuαr + +_ +. + `add +(_wlPayld, +wlPayldLgth +); + +342 i( +_uame + ! +nuαr +) { + +343 +_ +. + `add +( +uameLgthBys +, 2); + +344 +_ +. + `add +( +_uame +, +uameLgth +); + +346 i( +_sswd + ! +nuαr +) { + +347 +_ +. + `add +( +sswdLgthBys +, 2); + +348 +_ +. + `add +( +_sswd +, +sswdLgth +); + +350 +_ +. + `nd +(); + +351 +_ϡClAivy + = + `mlis +(); + +352 + `SEMAPHORE_GIVE +(); + +353 + } +} + +355  + gAsyncMqCl +:: + $_Disc +( +AsyncCl +* + +) { + +356 () + +; + +357 +AsyncMqClDiscRs + +as +; + +359 i( +_cPackNEnoughS +) { + +360 +as + = +AsyncMqClDiscRs +:: +ESP8266_NOT_ENOUGH_SPACE +; + +361 } i( +_sBadFgt +) { + +362 +as + = +AsyncMqClDiscRs +:: +TLS_BAD_FINGERPRINT +; + +364 +as + = +AsyncMqClDiscRs +:: +TCP_DISCONNECTED +; + +367 + `_r +(); + +369 aut +back + : +_DiscUrClbacks + + `back +( +as +); + +370 + } +} + +372  + gAsyncMqCl +:: + $_E +( +AsyncCl +* + +, +t8_t + +r +) { + +373 () + +; + +374 () +r +; + +376 + } +} + +378  + gAsyncMqCl +:: + $_Timeout +( +AsyncCl +* + +, +ut32_t + +time +) { + +379 () + +; + +380 () +time +; + +382 + } +} + +384  + gAsyncMqCl +:: + $_Ack +( +AsyncCl +* + +, +size_t + +n +, +ut32_t + +time +) { + +385 () + +; + +386 () +n +; + +387 () +time +; + +388 + } +} + +390  + gAsyncMqCl +:: + $_Da +( +AsyncCl +* + +, * +da +, +size_t + +n +) { + +391 () + +; + +392 +size_t + +cutByPosi + = 0; + +393  +cutBy +; + +395  +_rsgInfmi +. +bufrS +) { + +396  +AsyncMqClIls +:: +BufrS +:: +NONE +: + +397 +cutBy + = +da +[ +cutByPosi +++]; + +398 +_rsgInfmi +. +ckTy + = +cutBy + >> 4; + +399 +_rsgInfmi +. +ckFgs + = ( +cutBy + << 4) >> 4; + +400 +_rsgInfmi +. +bufrS + = +AsyncMqClIls +:: +BufrS +:: +REMAINING_LENGTH +; + +401 +_ϡSvAivy + = + `mlis +(); + +402  +_rsgInfmi +. +ckTy +) { + +403  +AsyncMqClIls +:: +PackTy +. +CONNACK +: + +404 +_cutPdPack + = +w + +AsyncMqClIls +:: + `CnAckPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_CnAck +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +)); + +406  +AsyncMqClIls +:: +PackTy +. +PINGRESP +: + +407 +_cutPdPack + = +w + +AsyncMqClIls +:: + `PgRePack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_PgRe +, +this +)); + +409  +AsyncMqClIls +:: +PackTy +. +SUBACK +: + +410 +_cutPdPack + = +w + +AsyncMqClIls +:: + `SubAckPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_SubAck +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +)); + +412  +AsyncMqClIls +:: +PackTy +. +UNSUBACK +: + +413 +_cutPdPack + = +w + +AsyncMqClIls +:: + `UnsubAckPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_UnsubAck +, +this +, std:: +ahds +:: +_1 +)); + +415  +AsyncMqClIls +:: +PackTy +. +PUBLISH +: + +416 +_cutPdPack + = +w + +AsyncMqClIls +:: + `PublishPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_Mesge +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +, std::ahds:: +_3 +, std::ahds:: +_4 +, std::ahds:: +_5 +, std::ahds:: +_6 +, std::ahds:: +_7 +, std::ahds:: +_8 +, std::ahds:: +_9 +), std::bd(&AsyncMqCl:: +_Publish +,his, std::placeholders::_1, std::placeholders::_2)); + +418  +AsyncMqClIls +:: +PackTy +. +PUBREL +: + +419 +_cutPdPack + = +w + +AsyncMqClIls +:: + `PubRPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_PubR +, +this +, std:: +ahds +:: +_1 +)); + +421  +AsyncMqClIls +:: +PackTy +. +PUBACK +: + +422 +_cutPdPack + = +w + +AsyncMqClIls +:: + `PubAckPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_PubAck +, +this +, std:: +ahds +:: +_1 +)); + +424  +AsyncMqClIls +:: +PackTy +. +PUBREC +: + +425 +_cutPdPack + = +w + +AsyncMqClIls +:: + `PubRecPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_PubRec +, +this +, std:: +ahds +:: +_1 +)); + +427  +AsyncMqClIls +:: +PackTy +. +PUBCOMP +: + +428 +_cutPdPack + = +w + +AsyncMqClIls +:: + `PubCompPack +(& +_rsgInfmi +, +d +:: + `bd +(& +AsyncMqCl +:: +_PubComp +, +this +, std:: +ahds +:: +_1 +)); + +434  +AsyncMqClIls +:: +BufrS +:: +REMAINING_LENGTH +: + +435 +cutBy + = +da +[ +cutByPosi +++]; + +436 +_magLgthBufr +[ +_magLgthBufrPosi +++] = +cutBy +; + +437 i( +cutBy + >> 7 == 0) { + +438 +_rsgInfmi +. +magLgth + = +AsyncMqClIls +:: +Hrs +:: + `decodeRemagLgth +( +_magLgthBufr +); + +439 +_magLgthBufrPosi + = 0; + +440 i( +_rsgInfmi +. +magLgth + > 0) { + +441 +_rsgInfmi +. +bufrS + = +AsyncMqClIls +:: +BufrS +:: +VARIABLE_HEADER +; + +444 +_rsgInfmi +. +bufrS + = +AsyncMqClIls +:: +BufrS +:: +NONE +; + +445 + `_PgRe +(); + +449  +AsyncMqClIls +:: +BufrS +:: +VARIABLE_HEADER +: + +450 +_cutPdPack +-> + `rVbHd +( +da +, +n +, & +cutByPosi +); + +452  +AsyncMqClIls +:: +BufrS +:: +PAYLOAD +: + +453 +_cutPdPack +-> + `rPayld +( +da +, +n +, & +cutByPosi +); + +456 +cutByPosi + = +n +; + +458 }  +cutByPosi + ! +n +); + +459 + } +} + +461  + gAsyncMqCl +:: + $_Pl +( +AsyncCl +* + +) { + +462 i(! +_ced +) ; + +465 i( +_ϡPgRequeTime + !0 && ( + `mlis +(- _ϡPgRequeTime>( +_kpAlive + * 1000 * 2)) { + +466 + `disc +(); + +469 } i( +_ϡPgRequeTime + =0 && ( + `mlis +(- +_ϡClAivy +>( +_kpAlive + * 1000 * 0.7)) { + +470 + `_ndPg +(); + +473 } i( +_ced + && +_ϡPgRequeTime + =0 && ( + `mlis +(- +_ϡSvAivy +>( +_kpAlive + * 1000 * 0.7)) { + +474 + `_ndPg +(); + +480 + `_ndAcks +(); + +484 i( +_discOnPl +) { + +485 + `_ndDisc +(); + +487 + } +} + +490  + gAsyncMqCl +:: + $_PgRe +() { + +491 + `_CutPdPack +(); + +492 +_ϡPgRequeTime + = 0; + +493 + } +} + +495  + gAsyncMqCl +:: + $_CnAck +( +bo + +ssiP +, +ut8_t + +cRuCode +) { + +496 () +ssiP +; + +497 + `_CutPdPack +(); + +499 i( +cRuCode + == 0) { + +500 +_ced + = +ue +; + +501 aut +back + : +_CUrClbacks + + `back +( +ssiP +); + +505 + } +} + +507  + gAsyncMqCl +:: + $_SubAck +( +ut16_t + +ckId +,  +us +) { + +508 + `_CutPdPack +(); + +510 aut +back + : +_SubsibeUrClbacks + + `back +( +ckId +, +us +); + +511 + } +} + +513  + gAsyncMqCl +:: + $_UnsubAck +( +ut16_t + +ckId +) { + +514 + `_CutPdPack +(); + +516 aut +back + : +_UnsubsibeUrClbacks + + `back +( +ckId +); + +517 + } +} + +519  + gAsyncMqCl +:: + $_Mesge +(* +tic +, * +yld +, +ut8_t + +qos +, +bo + +dup +, bo + +, +size_t + +n +, size_ +dex +, size_ +tٮ +, +ut16_t + +ckId +) { + +520 +bo + +nifyPublish + = +ue +; + +522 i( +qos + == 2) { + +523  +AsyncMqClIls +:: +PdgPubR + +ndgPubR + : +_ndgPubRs +) { + +524 i( +ndgPubR +. +ckId + ==acketId) { + +525 +nifyPublish + = +l +; + +531 i( +nifyPublish +) { + +532 +AsyncMqClMesgePrݔts + +ݔts +; + +533 +ݔts +. +qos + = qos; + +534 +ݔts +. +dup + = dup; + +535 +ݔts +. + + =etain; + +537 aut +back + : +_MesgeUrClbacks + + `back +( +tic +, +yld +, +ݔts +, +n +, +dex +, +tٮ +); + +539 + } +} + +541  + gAsyncMqCl +:: + $_Publish +( +ut16_t + +ckId +, +ut8_t + +qos +) { + +542 +AsyncMqClIls +:: +PdgAck + +ndgAck +; + +544 i( +qos + == 1) { + +545 +ndgAck +. +ckTy + = +AsyncMqClIls +:: +PackTy +. +PUBACK +; + +546 +ndgAck +. +hdFg + = +AsyncMqClIls +:: +HdFg +. +PUBACK_RESERVED +; + +547 +ndgAck +. +ckId + =acketId; + +548 +_toSdAcks +. + `push_back +( +ndgAck +); + +549 } i( +qos + == 2) { + +550 +ndgAck +. +ckTy + = +AsyncMqClIls +:: +PackTy +. +PUBREC +; + +551 +ndgAck +. +hdFg + = +AsyncMqClIls +:: +HdFg +. +PUBREC_RESERVED +; + +552 +ndgAck +. +ckId + =acketId; + +553 +_toSdAcks +. + `push_back +( +ndgAck +); + +555 +bo + +pubRAwag + = +l +; + +556  +AsyncMqClIls +:: +PdgPubR + +ndgPubR + : +_ndgPubRs +) { + +557 i( +ndgPubR +. +ckId + ==acketId) { + +558 +pubRAwag + = +ue +; + +563 i(! +pubRAwag +) { + +564 +AsyncMqClIls +:: +PdgPubR + +ndgPubR +; + +565 +ndgPubR +. +ckId + =acketId; + +566 +_ndgPubRs +. + `push_back +( +ndgPubR +); + +569 + `_ndAcks +(); + +572 + `_CutPdPack +(); + +573 + } +} + +575  + gAsyncMqCl +:: + $_PubR +( +ut16_t + +ckId +) { + +576 + `_CutPdPack +(); + +578 +AsyncMqClIls +:: +PdgAck + +ndgAck +; + +579 +ndgAck +. +ckTy + = +AsyncMqClIls +:: +PackTy +. +PUBCOMP +; + +580 +ndgAck +. +hdFg + = +AsyncMqClIls +:: +HdFg +. +PUBCOMP_RESERVED +; + +581 +ndgAck +. +ckId + =acketId; + +582 +_toSdAcks +. + `push_back +( +ndgAck +); + +584  +size_t + +i + = 0; i < +_ndgPubRs +. + `size +(); i++) { + +585 i( +_ndgPubRs +[ +i +]. +ckId + ==acketId) { + +586 +_ndgPubRs +. + `a +(_ndgPubRs. + `beg +(+ +i +); + +587 +_ndgPubRs +. + `shrk_to_f +(); + +591 + `_ndAcks +(); + +592 + } +} + +594  + gAsyncMqCl +:: + $_PubAck +( +ut16_t + +ckId +) { + +595 + `_CutPdPack +(); + +597 aut +back + : +_PublishUrClbacks + + `back +( +ckId +); + +598 + } +} + +600  + gAsyncMqCl +:: + $_PubRec +( +ut16_t + +ckId +) { + +601 + `_CutPdPack +(); + +603 +AsyncMqClIls +:: +PdgAck + +ndgAck +; + +604 +ndgAck +. +ckTy + = +AsyncMqClIls +:: +PackTy +. +PUBREL +; + +605 +ndgAck +. +hdFg + = +AsyncMqClIls +:: +HdFg +. +PUBREL_RESERVED +; + +606 +ndgAck +. +ckId + =acketId; + +607 +_toSdAcks +. + `push_back +( +ndgAck +); + +609 + `_ndAcks +(); + +610 + } +} + +612  + gAsyncMqCl +:: + $_PubComp +( +ut16_t + +ckId +) { + +613 + `_CutPdPack +(); + +615 aut +back + : +_PublishUrClbacks + + `back +( +ckId +); + +616 + } +} + +618 +bo + + gAsyncMqCl +:: + $_ndPg +() { + +619  +fixedHd +[2]; + +620 +fixedHd +[0] = +AsyncMqClIls +:: +PackTy +. +PINGREQ +; + +621 +fixedHd +[0] = fixedHeader[0] << 4; + +622 +fixedHd +[0] = fixedHd[0] | +AsyncMqClIls +:: +HdFg +. +PINGREQ_RESERVED +; + +623 +fixedHd +[1] = 0; + +625 +size_t + +ededS + = 2; + +627 + `SEMAPHORE_TAKE +( +l +); + +628 i( +_ +. + `a +(< +ededS +{ + `SEMAPHORE_GIVE +();  +l +; } + +630 +_ +. + `add +( +fixedHd +, 2); + +631 +_ +. + `nd +(); + +632 +_ϡClAivy + = + `mlis +(); + +633 +_ϡPgRequeTime + = + `mlis +(); + +635 + `SEMAPHORE_GIVE +(); + +636  +ue +; + +637 + } +} + +639  + gAsyncMqCl +:: + $_ndAcks +() { + +640 +ut8_t + +ededAckS + = 2 + 2; + +642 + `SEMAPHORE_TAKE +(); + +643  +size_t + +i + = 0; i < +_toSdAcks +. + `size +(); i++) { + +644 i( +_ +. + `a +(< +ededAckS +) ; + +646 +AsyncMqClIls +:: +PdgAck + +ndgAck + = +_toSdAcks +[ +i +]; + +648  +fixedHd +[2]; + +649 +fixedHd +[0] = +ndgAck +. +ckTy +; + +650 +fixedHd +[0] = fixedHeader[0] << 4; + +651 +fixedHd +[0] = fixedHd[0] | +ndgAck +. +hdFg +; + +652 +fixedHd +[1] = 2; + +654  +ckIdBys +[2]; + +655 +ckIdBys +[0] = +ndgAck +. +ckId + >> 8; + +656 +ckIdBys +[1] = +ndgAck +. +ckId + & 0xFF; + +658 +_ +. + `add +( +fixedHd +, 2); + +659 +_ +. + `add +( +ckIdBys +, 2); + +660 +_ +. + `nd +(); + +662 +_toSdAcks +. + `a +(_toSdAcks. + `beg +(+ +i +); + +663 +_toSdAcks +. + `shrk_to_f +(); + +665 +_ϡClAivy + = + `mlis +(); + +667 + `SEMAPHORE_GIVE +(); + +668 + } +} + +670 +bo + + gAsyncMqCl +:: + $_ndDisc +() { + +671 i(! +_ced + +ue +; + +673 cڡ +ut8_t + +ededS + = 2; + +675 + `SEMAPHORE_TAKE +( +l +); + +677 i( +_ +. + `a +(< +ededS +{ + `SEMAPHORE_GIVE +();  +l +; } + +679  +fixedHd +[2]; + +680 +fixedHd +[0] = +AsyncMqClIls +:: +PackTy +. +DISCONNECT +; + +681 +fixedHd +[0] = fixedHeader[0] << 4; + +682 +fixedHd +[0] = fixedHd[0] | +AsyncMqClIls +:: +HdFg +. +DISCONNECT_RESERVED +; + +683 +fixedHd +[1] = 0; + +685 +_ +. + `add +( +fixedHd +, 2); + +686 +_ +. + `nd +(); + +687 +_ +. + `o +( +ue +); + +689 +_discOnPl + = +l +; + +691 + `SEMAPHORE_GIVE +(); + +692  +ue +; + +693 + } +} + +695 +ut16_t + + gAsyncMqCl +:: + $_gNextPackId +() { + +696 +ut16_t + +xtPackId + = +_xtPackId +; + +698 i( +_xtPackId + == 65535) _nextPacketId = 0; + +699 +_xtPackId +++; + +701  +xtPackId +; + +702 + } +} + +704 +bo + + gAsyncMqCl +:: + $ced +() const { + +705  +_ced +; + +706 + } +} + +708  + gAsyncMqCl +:: + $c +() { + +709 i( +_ced +) ; + +711 #i +ASYNC_TCP_SSL_ENABLED + + +712 i( +_uIp +) { + +713 +_ +. + `c +( +_ +, +_pt +, +_cu +); + +715 +_ +. + `c +( +_ho +, +_pt +, +_cu +); + +718 i( +_uIp +) { + +719 +_ +. + `c +( +_ +, +_pt +); + +721 +_ +. + `c +( +_ho +, +_pt +); + +724 + } +} + +726  + gAsyncMqCl +:: + $disc +( +bo + +f +) { + +727 i(! +_ced +) ; + +729 i( +f +) { + +730 +_ +. + `o +( +ue +); + +732 + `_ndDisc +(); + +733 +_discOnPl + = +l +; + +735 + } +} + +737 +ut16_t + + gAsyncMqCl +:: + $subsibe +(cڡ * +tic +, +ut8_t + +qos +) { + +738 i(! +_ced +)  0; + +740  +fixedHd +[5]; + +741 +fixedHd +[0] = +AsyncMqClIls +:: +PackTy +. +SUBSCRIBE +; + +742 +fixedHd +[0] = fixedHeader[0] << 4; + +743 +fixedHd +[0] = fixedHd[0] | +AsyncMqClIls +:: +HdFg +. +SUBSCRIBE_RESERVED +; + +745 +ut16_t + +ticLgth + = + ` +( +tic +); + +746  +ticLgthBys +[2]; + +747 +ticLgthBys +[0] = +ticLgth + >> 8; + +748 +ticLgthBys +[1] = +ticLgth + & 0xFF; + +750  +qosBy +[1]; + +751 +qosBy +[0] = +qos +; + +753 +ut8_t + +magLgthLgth + = +AsyncMqClIls +:: +Hrs +:: + `codeRemagLgth +(2 + 2 + +ticLgth + + 1, +fixedHd + + 1); + +755 +size_t + +ededS + = 0; + +756 +ededS + +1 + +magLgthLgth +; + +757 +ededS + += 2; + +758 +ededS + += 2; + +759 +ededS + + +ticLgth +; + +760 +ededS + += 1; + +762 + `SEMAPHORE_TAKE +(0); + +763 i( +_ +. + `a +(< +ededS +{ + `SEMAPHORE_GIVE +();  0; } + +765 +ut16_t + +ckId + = + `_gNextPackId +(); + +766  +ckIdBys +[2]; + +767 +ckIdBys +[0] = +ckId + >> 8; + +768 +ckIdBys +[1] = +ckId + & 0xFF; + +770 +_ +. + `add +( +fixedHd +, 1 + +magLgthLgth +); + +771 +_ +. + `add +( +ckIdBys +, 2); + +772 +_ +. + `add +( +ticLgthBys +, 2); + +773 +_ +. + `add +( +tic +, +ticLgth +); + +774 +_ +. + `add +( +qosBy +, 1); + +775 +_ +. + `nd +(); + +776 +_ϡClAivy + = + `mlis +(); + +778 + `SEMAPHORE_GIVE +(); + +779  +ckId +; + +780 + } +} + +782 +ut16_t + + gAsyncMqCl +:: + $unsubsibe +(cڡ * +tic +) { + +783 i(! +_ced +)  0; + +785  +fixedHd +[5]; + +786 +fixedHd +[0] = +AsyncMqClIls +:: +PackTy +. +UNSUBSCRIBE +; + +787 +fixedHd +[0] = fixedHeader[0] << 4; + +788 +fixedHd +[0] = fixedHd[0] | +AsyncMqClIls +:: +HdFg +. +UNSUBSCRIBE_RESERVED +; + +790 +ut16_t + +ticLgth + = + ` +( +tic +); + +791  +ticLgthBys +[2]; + +792 +ticLgthBys +[0] = +ticLgth + >> 8; + +793 +ticLgthBys +[1] = +ticLgth + & 0xFF; + +795 +ut8_t + +magLgthLgth + = +AsyncMqClIls +:: +Hrs +:: + `codeRemagLgth +(2 + 2 + +ticLgth +, +fixedHd + + 1); + +797 +size_t + +ededS + = 0; + +798 +ededS + +1 + +magLgthLgth +; + +799 +ededS + += 2; + +800 +ededS + += 2; + +801 +ededS + + +ticLgth +; + +803 + `SEMAPHORE_TAKE +(0); + +804 i( +_ +. + `a +(< +ededS +{ + `SEMAPHORE_GIVE +();  0; } + +806 +ut16_t + +ckId + = + `_gNextPackId +(); + +807  +ckIdBys +[2]; + +808 +ckIdBys +[0] = +ckId + >> 8; + +809 +ckIdBys +[1] = +ckId + & 0xFF; + +811 +_ +. + `add +( +fixedHd +, 1 + +magLgthLgth +); + +812 +_ +. + `add +( +ckIdBys +, 2); + +813 +_ +. + `add +( +ticLgthBys +, 2); + +814 +_ +. + `add +( +tic +, +ticLgth +); + +815 +_ +. + `nd +(); + +816 +_ϡClAivy + = + `mlis +(); + +818 + `SEMAPHORE_GIVE +(); + +819  +ckId +; + +820 + } +} + +822 +ut16_t + + gAsyncMqCl +:: + $publish +(cڡ * +tic +, +ut8_t + +qos +, +bo + + +, cڡ * +yld +, +size_t + +ngth +, bo +dup +, +ut16_t + +mesge_id +) { + +823 i(! +_ced +)  0; + +825  +fixedHd +[5]; + +826 +fixedHd +[0] = +AsyncMqClIls +:: +PackTy +. +PUBLISH +; + +827 +fixedHd +[0] = fixedHeader[0] << 4; + +828 i( +dup + +fixedHd +[0] | +AsyncMqClIls +:: +HdFg +. +PUBLISH_DUP +; + +829 i( + + +fixedHd +[0] | +AsyncMqClIls +:: +HdFg +. +PUBLISH_RETAIN +; + +830  +qos +) { + +832 +fixedHd +[0] | +AsyncMqClIls +:: +HdFg +. +PUBLISH_QOS0 +; + +835 +fixedHd +[0] | +AsyncMqClIls +:: +HdFg +. +PUBLISH_QOS1 +; + +838 +fixedHd +[0] | +AsyncMqClIls +:: +HdFg +. +PUBLISH_QOS2 +; + +842 +ut16_t + +ticLgth + = + ` +( +tic +); + +843  +ticLgthBys +[2]; + +844 +ticLgthBys +[0] = +ticLgth + >> 8; + +845 +ticLgthBys +[1] = +ticLgth + & 0xFF; + +847 +ut32_t + +yldLgth + = +ngth +; + +848 i( +yld + ! +nuαr + && +yldLgth + =0yldLgth = + ` +(payload); + +850 +ut32_t + +magLgth + = 2 + +ticLgth + + +yldLgth +; + +851 i( +qos + !0 +magLgth + += 2; + +852 +ut8_t + +magLgthLgth + = +AsyncMqClIls +:: +Hrs +:: + `codeRemagLgth +( +magLgth +, +fixedHd + + 1); + +854 +size_t + +ededS + = 0; + +855 +ededS + +1 + +magLgthLgth +; + +856 +ededS + += 2; + +857 +ededS + + +ticLgth +; + +858 i( +qos + !0 +ededS + += 2; + +859 i( +yld + ! +nuαr + +ededS + + +yldLgth +; + +861 + `SEMAPHORE_TAKE +(0); + +862 i( +_ +. + `a +(< +ededS +{ + `SEMAPHORE_GIVE +();  0; } + +864 +ut16_t + +ckId + = 0; + +865  +ckIdBys +[2]; + +866 i( +qos + != 0) { + +867 i( +dup + && +mesge_id + > 0) { + +868 +ckId + = +mesge_id +; + +870 +ckId + = + `_gNextPackId +(); + +873 +ckIdBys +[0] = +ckId + >> 8; + +874 +ckIdBys +[1] = +ckId + & 0xFF; + +877 +_ +. + `add +( +fixedHd +, 1 + +magLgthLgth +); + +878 +_ +. + `add +( +ticLgthBys +, 2); + +879 +_ +. + `add +( +tic +, +ticLgth +); + +880 i( +qos + !0 +_ +. + `add +( +ckIdBys +, 2); + +881 i( +yld + ! +nuαr + +_ +. + `add +ayld, +yldLgth +); + +882 +_ +. + `nd +(); + +883 +_ϡClAivy + = + `mlis +(); + +885 + `SEMAPHORE_GIVE +(); + +886 i( +qos + != 0) { + +887  +ckId +; + +891 + } +} + +893 cڡ * + gAsyncMqCl +:: + $gClId +() { + +894  +_Id +; + +895 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.h + +1 #ide +SRC_ASYNCMQTTCLIENT_H_ + + +2  + #SRC_ASYNCMQTTCLIENT_H_ + + + ) + +4  + ~"AsyncMqCl.h +" + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.hpp + +1 #agm + + + +3  + ~ + +4  + ~ + +6  + ~"Arduo.h +" + +8 #ifde +ESP32 + + +9  + ~ + +10  + ~<䓹os/mphr.h +> + +11 #i +defed +( +ESP8266 +) + +12  + ~ + +14 #r +Ptfm + +n + +su܋d + + +17 #i +ASYNC_TCP_SSL_ENABLED + + +18  + ~ + +19  + #SHA1_SIZE + 20 + + ) + +22  + ~"AsyncMqCl/Fgs.h +" + +23  + ~"AsyncMqCl/PsgInfmi.h +" + +24  + ~"AsyncMqCl/MesgePrݔts.h +" + +25  + ~"AsyncMqCl/Hrs.h +" + +26  + ~"AsyncMqCl/Clbacks.h +" + +27  + ~"AsyncMqCl/DiscRss.h +" + +28  + ~"AsyncMqCl/Stage.h +" + +30  + ~"AsyncMqCl/Packs/Pack.h +" + +31  + ~"AsyncMqCl/Packs/CnAckPack.h +" + +32  + ~"AsyncMqCl/Packs/PgRePack.h +" + +33  + ~"AsyncMqCl/Packs/SubAckPack.h +" + +34  + ~"AsyncMqCl/Packs/UnsubAckPack.h +" + +35  + ~"AsyncMqCl/Packs/PublishPack.h +" + +36  + ~"AsyncMqCl/Packs/PubRPack.h +" + +37  + ~"AsyncMqCl/Packs/PubAckPack.h +" + +38  + ~"AsyncMqCl/Packs/PubRecPack.h +" + +39  + ~"AsyncMqCl/Packs/PubCompPack.h +" + +41 #i +ESP32 + + +42  + #SEMAPHORE_TAKE +( +X +i( + `xSemheTake +( +_xSemhe +, 1000 / +ptTICK_PERIOD_MS +! +pdTRUE +) {  X; } + +43  + #SEMAPHORE_GIVE +( + `xSemheGive +( +_xSemhe +); + + ) + +44 #i +defed +( +ESP8266 +) + +45  + #SEMAPHORE_TAKE +( +X +() + + ) + +46  + #SEMAPHORE_GIVE +(() + + ) + +49 as + cAsyncMqCl + { + +50 + mpublic +: + +51 +AsyncMqCl +(); + +52 ~ +AsyncMqCl +(); + +54 + mAsyncMqCl +& +tKpAlive +( +ut16_t + +kpAlive +); + +55 + mAsyncMqCl +& +tClId +(cڡ * +Id +); + +56 + mAsyncMqCl +& +tC˪Sessi +( +bo + +nSessi +); + +57 + mAsyncMqCl +& +tMaxTicLgth +( +ut16_t + +maxTicLgth +); + +58 + mAsyncMqCl +& +tCdtls +(cڡ * +uame +, cڡ * +sswd + = +nuαr +); + +59 + mAsyncMqCl +& +tWl +(cڡ * +tic +, +ut8_t + +qos +, +bo + + +, cڡ * +yld + = +nuαr +, +size_t + +ngth + = 0); + +60 + mAsyncMqCl +& +tSv +( +IPAddss + + +, +ut16_t + +pt +); + +61 + mAsyncMqCl +& +tSv +(cڡ * +ho +, +ut16_t + +pt +); + +62 #i +ASYNC_TCP_SSL_ENABLED + + +63 + mAsyncMqCl +& +tSecu +( +bo + +cu +); + +64 + mAsyncMqCl +& +addSvFgt +(cڡ +ut8_t +* +fgt +); + +67 + mAsyncMqCl +& +C +( +AsyncMqClIls +:: +OnCUrClback + +back +); + +68 + mAsyncMqCl +& +Disc +( +AsyncMqClIls +:: +OnDiscUrClback + +back +); + +69 + mAsyncMqCl +& +Subsibe +( +AsyncMqClIls +:: +OnSubsibeUrClback + +back +); + +70 + mAsyncMqCl +& +Unsubsibe +( +AsyncMqClIls +:: +OnUnsubsibeUrClback + +back +); + +71 + mAsyncMqCl +& +Mesge +( +AsyncMqClIls +:: +OnMesgeUrClback + +back +); + +72 + mAsyncMqCl +& +Publish +( +AsyncMqClIls +:: +OnPublishUrClback + +back +); + +74 +bo + + $ced +() const; + +75  + `c +(); + +76  + `disc +( +bo + +f + = +l +); + +77 +ut16_t + + `subsibe +(cڡ * +tic +, +ut8_t + +qos +); + +78 +ut16_t + + `unsubsibe +(cڡ * +tic +); + +79 +ut16_t + + `publish +(cڡ * +tic +, +ut8_t + +qos +, +bo + + +, cڡ * +yld + = +nuαr +, +size_t + +ngth + = 0, bo +dup + = +l +, ut16_ +mesge_id + = 0); + +81 cڡ * + `gClId +(); + +83 +ive +: + +84 +AsyncCl + +_ +; + +86 +bo + +_ced +; + +87 +bo + +_cPackNEnoughS +; + +88 +bo + +_discOnPl +; + +89 +bo + +_sBadFgt +; + +90 +ut32_t + +_ϡClAivy +; + +91 +ut32_t + +_ϡSvAivy +; + +92 +ut32_t + +_ϡPgRequeTime +; + +94  +_gedClId +[18 + 1]; + +95 +IPAddss + +_ +; + +96 cڡ * +_ho +; + +97 +bo + +_uIp +; + +98 #i +ASYNC_TCP_SSL_ENABLED + + +99 +bo + +_cu +; + +101 +ut16_t + +_pt +; + +102 +ut16_t + +_kpAlive +; + +103 +bo + +_nSessi +; + +104 cڡ * +_Id +; + +105 cڡ * +_uame +; + +106 cڡ * +_sswd +; + +107 cڡ * +_wlTic +; + +108 cڡ * +_wlPayld +; + +109 +ut16_t + +_wlPayldLgth +; + +110 +ut8_t + +_wlQos +; + +111 +bo + +_wlRa +; + +113 #i +ASYNC_TCP_SSL_ENABLED + + +114 +d +:: +ve +> +_cuSvFgts +; + +117 +d +:: +ve +< +AsyncMqClIls +:: +OnCUrClback +> +_CUrClbacks +; + +118 +d +:: +ve +< +AsyncMqClIls +:: +OnDiscUrClback +> +_DiscUrClbacks +; + +119 +d +:: +ve +< +AsyncMqClIls +:: +OnSubsibeUrClback +> +_SubsibeUrClbacks +; + +120 +d +:: +ve +< +AsyncMqClIls +:: +OnUnsubsibeUrClback +> +_UnsubsibeUrClbacks +; + +121 +d +:: +ve +< +AsyncMqClIls +:: +OnMesgeUrClback +> +_MesgeUrClbacks +; + +122 +d +:: +ve +< +AsyncMqClIls +:: +OnPublishUrClback +> +_PublishUrClbacks +; + +124 +AsyncMqClIls +:: +PsgInfmi + +_rsgInfmi +; + +125 +AsyncMqClIls +:: +Pack +* +_cutPdPack +; + +126 +ut8_t + +_magLgthBufrPosi +; + +127  +_magLgthBufr +[4]; + +129 +ut16_t + +_xtPackId +; + +131 +d +:: +ve +< +AsyncMqClIls +:: +PdgPubR +> +_ndgPubRs +; + +133 +d +:: +ve +< +AsyncMqClIls +:: +PdgAck +> +_toSdAcks +; + +135 #ifde +ESP32 + + +136 +SemheHd_t + +_xSemhe + = +nuαr +; + +139  + `_r +(); + +140  + `_CutPdPack +(); + +143  + `_C +( +AsyncCl +* + +); + +144  + `_Disc +( +AsyncCl +* + +); + +145  + `_E +( +AsyncCl +* + +, +t8_t + +r +); + +146  + `_Timeout +( +AsyncCl +* + +, +ut32_t + +time +); + +147  + `_Ack +( +AsyncCl +* + +, +size_t + +n +, +ut32_t + +time +); + +148  + `_Da +( +AsyncCl +* + +, * +da +, +size_t + +n +); + +149  + `_Pl +( +AsyncCl +* + +); + +152  + `_PgRe +(); + +153  + `_CnAck +( +bo + +ssiP +, +ut8_t + +cRuCode +); + +154  + `_SubAck +( +ut16_t + +ckId +,  +us +); + +155  + `_UnsubAck +( +ut16_t + +ckId +); + +156  + `_Mesge +(* +tic +, * +yld +, +ut8_t + +qos +, +bo + +dup +, bo + +, +size_t + +n +, size_ +dex +, size_ +tٮ +, +ut16_t + +ckId +); + +157  + `_Publish +( +ut16_t + +ckId +, +ut8_t + +qos +); + +158  + `_PubR +( +ut16_t + +ckId +); + +159  + `_PubAck +( +ut16_t + +ckId +); + +160  + `_PubRec +( +ut16_t + +ckId +); + +161  + `_PubComp +( +ut16_t + +ckId +); + +163 +bo + + `_ndPg +(); + +164  + `_ndAcks +(); + +165 +bo + + `_ndDisc +(); + +167 +ut16_t + + `_gNextPackId +(); + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Callbacks.hpp + +1 #agm + + + +3  + ~ + +5  + ~"DiscRss.h +" + +6  + ~"MesgePrݔts.h +" + +8 +mea + + gAsyncMqClIls + { + +10  + gd +:: + tfuni +<( + tbo + + tssiP +)> + tOnCUrClback +; + +11  + gd +:: + tfuni +<( + tAsyncMqClDiscRs + + tas +)> + tOnDiscUrClback +; + +12  + gd +:: + tfuni +<( + tut16_t + + tckId +, + tut8_t + + tqos +)> + tOnSubsibeUrClback +; + +13  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnUnsubsibeUrClback +; + +14  + gd +:: + tfuni +<(* + ttic +, * + tyld +, + tAsyncMqClMesgePrݔts + + tݔts +, + tsize_t + + tn +, size_ + tdex +, size_ + ttٮ +)> + tOnMesgeUrClback +; + +15  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnPublishUrClback +; + +18  + gd +:: + tfuni +<( + tbo + + tssiP +, + tut8_t + + tcRuCode +)> + tOnCnAckIlClback +; + +19  + gd +:: + tfuni +<()> + tOnPgReIlClback +; + +20  + gd +:: + tfuni +<( + tut16_t + + tckId +,  + tus +)> + tOnSubAckIlClback +; + +21  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnUnsubAckIlClback +; + +22  + gd +:: + tfuni +<(* + ttic +, * + tyld +, + tut8_t + + tqos +, + tbo + + tdup +, bo + t +, + tsize_t + + tn +, size_ + tdex +, size_ + ttٮ +, + tut16_t + + tckId +)> + tOnMesgeIlClback +; + +23  + gd +:: + tfuni +<( + tut16_t + + tckId +, + tut8_t + + tqos +)> + tOnPublishIlClback +; + +24  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnPubRIlClback +; + +25  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnPubAckIlClback +; + +26  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnPubRecIlClback +; + +27  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnPubCompIlClback +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/DisconnectReasons.hpp + +1 #agm + + + +3 as + cAsyncMqClDiscRs + : +t8_t + { + +4 +TCP_DISCONNECTED + = 0, + +6 + mMQTT_UNACCEPTABLE_PROTOCOL_VERSION + = 1, + +7 + mMQTT_IDENTIFIER_REJECTED + = 2, + +8 + mMQTT_SERVER_UNAVAILABLE + = 3, + +9 + mMQTT_MALFORMED_CREDENTIALS + = 4, + +10 + mMQTT_NOT_AUTHORIZED + = 5, + +12 + mESP8266_NOT_ENOUGH_SPACE + = 6, + +14 + mTLS_BAD_FINGERPRINT + = 7 + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Flags.hpp + +1 #agm + + + +3 +mea + + gAsyncMqClIls + { + +4 +cڡex + struct { + +5 cڡ +ut8_t + + gRESERVED + = 0; + +6 cڡ +ut8_t + + gCONNECT + = 1; + +7 cڡ +ut8_t + + gCONNACK + = 2; + +8 cڡ +ut8_t + + gPUBLISH + = 3; + +9 cڡ +ut8_t + + gPUBACK + = 4; + +10 cڡ +ut8_t + + gPUBREC + = 5; + +11 cڡ +ut8_t + + gPUBREL + = 6; + +12 cڡ +ut8_t + + gPUBCOMP + = 7; + +13 cڡ +ut8_t + + gSUBSCRIBE + = 8; + +14 cڡ +ut8_t + + gSUBACK + = 9; + +15 cڡ +ut8_t + + gUNSUBSCRIBE + = 10; + +16 cڡ +ut8_t + + gUNSUBACK + = 11; + +17 cڡ +ut8_t + + gPINGREQ + = 12; + +18 cڡ +ut8_t + + gPINGRESP + = 13; + +19 cڡ +ut8_t + + gDISCONNECT + = 14; + +20 cڡ +ut8_t + + gRESERVED2 + = 1; + +21 } + gPackTy +; + +23 +cڡex + struct { + +24 cڡ +ut8_t + + gCONNECT_RESERVED + = 0x00; + +25 cڡ +ut8_t + + gCONNACK_RESERVED + = 0x00; + +26 cڡ +ut8_t + + gPUBLISH_DUP + = 0x08; + +27 cڡ +ut8_t + + gPUBLISH_QOS0 + = 0x00; + +28 cڡ +ut8_t + + gPUBLISH_QOS1 + = 0x02; + +29 cڡ +ut8_t + + gPUBLISH_QOS2 + = 0x04; + +30 cڡ +ut8_t + + gPUBLISH_QOSRESERVED + = 0x06; + +31 cڡ +ut8_t + + gPUBLISH_RETAIN + = 0x01; + +32 cڡ +ut8_t + + gPUBACK_RESERVED + = 0x00; + +33 cڡ +ut8_t + + gPUBREC_RESERVED + = 0x00; + +34 cڡ +ut8_t + + gPUBREL_RESERVED + = 0x02; + +35 cڡ +ut8_t + + gPUBCOMP_RESERVED + = 0x00; + +36 cڡ +ut8_t + + gSUBSCRIBE_RESERVED + = 0x02; + +37 cڡ +ut8_t + + gSUBACK_RESERVED + = 0x00; + +38 cڡ +ut8_t + + gUNSUBSCRIBE_RESERVED + = 0x02; + +39 cڡ +ut8_t + + gUNSUBACK_RESERVED + = 0x00; + +40 cڡ +ut8_t + + gPINGREQ_RESERVED + = 0x00; + +41 cڡ +ut8_t + + gPINGRESP_RESERVED + = 0x00; + +42 cڡ +ut8_t + + gDISCONNECT_RESERVED + = 0x00; + +43 cڡ +ut8_t + + gRESERVED2_RESERVED + = 0x00; + +44 } + gHdFg +; + +46 +cڡex + struct { + +47 cڡ +ut8_t + + gUSERNAME + = 0x80; + +48 cڡ +ut8_t + + gPASSWORD + = 0x40; + +49 cڡ +ut8_t + + gWILL_RETAIN + = 0x20; + +50 cڡ +ut8_t + + gWILL_QOS0 + = 0x00; + +51 cڡ +ut8_t + + gWILL_QOS1 + = 0x08; + +52 cڡ +ut8_t + + gWILL_QOS2 + = 0x10; + +53 cڡ +ut8_t + + gWILL + = 0x04; + +54 cڡ +ut8_t + + gCLEAN_SESSION + = 0x02; + +55 cڡ +ut8_t + + gRESERVED + = 0x00; + +56 } + gCFg +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Helpers.hpp + +1 #agm + + + +3 +mea + + gAsyncMqClIls + { + +4 as + cHrs + { + +5 + gpublic +: + +6  +ut32_t + +decodeRemagLgth +(* +bys +) { + +7 +ut32_t + +muɝlr + = 1; + +8 +ut32_t + + gvue + = 0; + +9 +ut8_t + + gcutBy + = 0; + +10 +ut8_t + + gcodedBy +; + +12 + gcodedBy + = +bys +[ +cutBy +++]; + +13 + gvue + +( +codedBy + & 127* +muɝlr +; + +14 + gmuɝlr + *= 128; + +15 } ( + gcodedBy + & 128) != 0); + +17  + gvue +; + +20  +ut8_t + +codeRemagLgth +( +ut32_t + +magLgth +, * +dei +) { + +21 +ut8_t + + gcutBy + = 0; + +22 +ut8_t + + gbysNded + = 0; + +25 +ut8_t + + gcodedBy + = +magLgth + % 128; + +26 + gmagLgth + /= 128; + +27 i( + gmagLgth + > 0) { + +28 + gcodedBy + = +codedBy + | 128; + +31 + gdei +[ +cutBy +++] = +codedBy +; + +32 + gbysNded +++; + +33 }  + gmagLgth + > 0); + +35  + gbysNded +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/MessageProperties.hpp + +1 #agm + + + +3  + sAsyncMqClMesgePrݔts + { + +4 +ut8_t + + mqos +; + +5 +bo + + mdup +; + +6 +bo + + m +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.cpp + +1  + ~"CnAckPack.h +" + +3 +usg + + gAsyncMqClIls +:: +CnAckPack +; + +5 + gCnAckPack +:: + $CnAckPack +( +PsgInfmi +* +rsgInfmi +, +OnCnAckIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_back +( +back +) + +8 , + `_byPosi +(0) + +9 , + `_ssiP +( +l +) + +10 , + $_cRuCode +(0) { + +11 + } +} + +13 + gCnAckPack +::~ + $CnAckPack +() { + +14 + } +} + +16  +CnAckPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +17  +cutBy + = +da +[(* +cutByPosi +)++]; + +18 i( +_byPosi +++ == 0) { + +19 +_ssiP + = ( +cutBy + << 7) >> 7; + +21 +_cRuCode + = +cutBy +; + +22 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +23 + `_back +( +_ssiP +, +_cRuCode +); + +25 + } +} + +27  + gCnAckPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +28 () +da +; + +29 () +cutByPosi +; + +30 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cCnAckPack + : +public + +Pack + { + +10 +public +: + +11 +exic + +CnAckPack +( +PsgInfmi +* +rsgInfmi +, +OnCnAckIlClback + +back +); + +12 ~ +CnAckPack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnCnAckIlClback + + g_back +; + +21 +ut8_t + + g_byPosi +; + +22 +bo + + g_ssiP +; + +23 +ut8_t + + g_cRuCode +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/Packet.hpp + +1 #agm + + + +3 +mea + + gAsyncMqClIls + { + +4 as + cPack + { + +5 + gpublic +: + +6 +vtu + ~ +Pack +() {} + +8 +vtu +  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) = 0; + +9 +vtu +  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) = 0; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.cpp + +1  + ~"PgRePack.h +" + +3 +usg + + gAsyncMqClIls +:: +PgRePack +; + +5 + gPgRePack +:: + $PgRePack +( +PsgInfmi +* +rsgInfmi +, +OnPgReIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + $_back +( +back +) { + +8 + } +} + +10 + gPgRePack +::~ + $PgRePack +() { + +11 + } +} + +13  +PgRePack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +14 () +da +; + +15 () +cutByPosi +; + +16 + } +} + +18  + gPgRePack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +19 () +da +; + +20 () +cutByPosi +; + +21 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cPgRePack + : +public + +Pack + { + +10 +public +: + +11 +exic + +PgRePack +( +PsgInfmi +* +rsgInfmi +, +OnPgReIlClback + +back +); + +12 ~ +PgRePack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnPgReIlClback + + g_back +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.cpp + +1  + ~"PubAckPack.h +" + +3 +usg + + gAsyncMqClIls +:: +PubAckPack +; + +5 + gPubAckPack +:: + $PubAckPack +( +PsgInfmi +* +rsgInfmi +, +OnPubAckIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_back +( +back +) + +8 , + `_byPosi +(0) + +9 , + `_ckIdMsb +(0) + +10 , + $_ckId +(0) { + +11 + } +} + +13 + gPubAckPack +::~ + $PubAckPack +() { + +14 + } +} + +16  +PubAckPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +17  +cutBy + = +da +[(* +cutByPosi +)++]; + +18 i( +_byPosi +++ == 0) { + +19 +_ckIdMsb + = +cutBy +; + +21 +_ckId + = +cutBy + | +_ckIdMsb + << 8; + +22 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +23 + `_back +( +_ckId +); + +25 + } +} + +27  + gPubAckPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +28 () +da +; + +29 () +cutByPosi +; + +30 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cPubAckPack + : +public + +Pack + { + +10 +public +: + +11 +exic + +PubAckPack +( +PsgInfmi +* +rsgInfmi +, +OnPubAckIlClback + +back +); + +12 ~ +PubAckPack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnPubAckIlClback + + g_back +; + +21 +ut8_t + + g_byPosi +; + +22  + g_ckIdMsb +; + +23 +ut16_t + + g_ckId +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.cpp + +1  + ~"PubCompPack.h +" + +3 +usg + + gAsyncMqClIls +:: +PubCompPack +; + +5 + gPubCompPack +:: + $PubCompPack +( +PsgInfmi +* +rsgInfmi +, +OnPubCompIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_back +( +back +) + +8 , + `_byPosi +(0) + +9 , + `_ckIdMsb +(0) + +10 , + $_ckId +(0) { + +11 + } +} + +13 + gPubCompPack +::~ + $PubCompPack +() { + +14 + } +} + +16  +PubCompPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +17  +cutBy + = +da +[(* +cutByPosi +)++]; + +18 i( +_byPosi +++ == 0) { + +19 +_ckIdMsb + = +cutBy +; + +21 +_ckId + = +cutBy + | +_ckIdMsb + << 8; + +22 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +23 + `_back +( +_ckId +); + +25 + } +} + +27  + gPubCompPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +28 () +da +; + +29 () +cutByPosi +; + +30 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cPubCompPack + : +public + +Pack + { + +10 +public +: + +11 +exic + +PubCompPack +( +PsgInfmi +* +rsgInfmi +, +OnPubCompIlClback + +back +); + +12 ~ +PubCompPack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnPubCompIlClback + + g_back +; + +21 +ut8_t + + g_byPosi +; + +22  + g_ckIdMsb +; + +23 +ut16_t + + g_ckId +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.cpp + +1  + ~"PubRecPack.h +" + +3 +usg + + gAsyncMqClIls +:: +PubRecPack +; + +5 + gPubRecPack +:: + $PubRecPack +( +PsgInfmi +* +rsgInfmi +, +OnPubRecIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_back +( +back +) + +8 , + `_byPosi +(0) + +9 , + `_ckIdMsb +(0) + +10 , + $_ckId +(0) { + +11 + } +} + +13 + gPubRecPack +::~ + $PubRecPack +() { + +14 + } +} + +16  +PubRecPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +17  +cutBy + = +da +[(* +cutByPosi +)++]; + +18 i( +_byPosi +++ == 0) { + +19 +_ckIdMsb + = +cutBy +; + +21 +_ckId + = +cutBy + | +_ckIdMsb + << 8; + +22 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +23 + `_back +( +_ckId +); + +25 + } +} + +27  + gPubRecPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +28 () +da +; + +29 () +cutByPosi +; + +30 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cPubRecPack + : +public + +Pack + { + +10 +public +: + +11 +exic + +PubRecPack +( +PsgInfmi +* +rsgInfmi +, +OnPubRecIlClback + +back +); + +12 ~ +PubRecPack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnPubRecIlClback + + g_back +; + +21 +ut8_t + + g_byPosi +; + +22  + g_ckIdMsb +; + +23 +ut16_t + + g_ckId +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.cpp + +1  + ~"PubRPack.h +" + +3 +usg + + gAsyncMqClIls +:: +PubRPack +; + +5 + gPubRPack +:: + $PubRPack +( +PsgInfmi +* +rsgInfmi +, +OnPubRIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_back +( +back +) + +8 , + `_byPosi +(0) + +9 , + `_ckIdMsb +(0) + +10 , + $_ckId +(0) { + +11 + } +} + +13 + gPubRPack +::~ + $PubRPack +() { + +14 + } +} + +16  +PubRPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +17  +cutBy + = +da +[(* +cutByPosi +)++]; + +18 i( +_byPosi +++ == 0) { + +19 +_ckIdMsb + = +cutBy +; + +21 +_ckId + = +cutBy + | +_ckIdMsb + << 8; + +22 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +23 + `_back +( +_ckId +); + +25 + } +} + +27  + gPubRPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +28 () +da +; + +29 () +cutByPosi +; + +30 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cPubRPack + : +public + +Pack + { + +10 +public +: + +11 +exic + +PubRPack +( +PsgInfmi +* +rsgInfmi +, +OnPubRIlClback + +back +); + +12 ~ +PubRPack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnPubRIlClback + + g_back +; + +21 +ut8_t + + g_byPosi +; + +22  + g_ckIdMsb +; + +23 +ut16_t + + g_ckId +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.cpp + +1  + ~"PublishPack.h +" + +3 +usg + + gAsyncMqClIls +:: +PublishPack +; + +5 + gPublishPack +:: + $PublishPack +( +PsgInfmi +* +rsgInfmi +, +OnMesgeIlClback + +daClback +, +OnPublishIlClback + +comeClback +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_daClback +( +daClback +) + +8 , + `_comeClback +( +comeClback +) + +9 , + `_dup +( +l +) + +10 , + `_qos +(0) + +11 , + `_ +(0) + +12 , + `_byPosi +(0) + +13 , + `_ticLgthMsb +(0) + +14 , + `_ticLgth +(0) + +15 , + `_igne +( +l +) + +16 , + `_ckIdMsb +(0) + +17 , + `_ckId +(0) + +18 , + `_yldLgth +(0) + +19 , + $_yldBysRd +(0) { + +20 +_dup + = +_rsgInfmi +-> +ckFgs + & +HdFg +. +PUBLISH_DUP +; + +21 +_ + = +_rsgInfmi +-> +ckFgs + & +HdFg +. +PUBLISH_RETAIN +; + +22  +qosMasked + = +_rsgInfmi +-> +ckFgs + & 0x06; + +23  +qosMasked +) { + +24  +HdFg +. +PUBLISH_QOS0 +: + +25 +_qos + = 0; + +27  +HdFg +. +PUBLISH_QOS1 +: + +28 +_qos + = 1; + +30  +HdFg +. +PUBLISH_QOS2 +: + +31 +_qos + = 2; + +34 + } +} + +36 + gPublishPack +::~ + $PublishPack +() { + +37 + } +} + +39  +PublishPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +40  +cutBy + = +da +[(* +cutByPosi +)++]; + +41 i( +_byPosi + == 0) { + +42 +_ticLgthMsb + = +cutBy +; + +43 } i( +_byPosi + == 1) { + +44 +_ticLgth + = +cutBy + | +_ticLgthMsb + << 8; + +45 i( +_ticLgth + > +_rsgInfmi +-> +maxTicLgth +) { + +46 +_igne + = +ue +; + +48 +_rsgInfmi +-> +ticBufr +[ +_ticLgth +] = '\0'; + +50 } i( +_byPosi + >2 && _byPosi < 2 + +_ticLgth +) { + +52 i(! +_igne + +_rsgInfmi +-> +ticBufr +[ +_byPosi + - 2] = +cutBy +; + +53 i( +_byPosi + =2 + +_ticLgth + - 1 && +_qos + == 0) { + +54 + `_ePayldHdlg +( +_rsgInfmi +-> +magLgth + - ( +_byPosi + + 1)); + +57 } i( +_byPosi + =2 + +_ticLgth +) { + +58 +_ckIdMsb + = +cutBy +; + +60 +_ckId + = +cutBy + | +_ckIdMsb + << 8; + +61 + `_ePayldHdlg +( +_rsgInfmi +-> +magLgth + - ( +_byPosi + + 1)); + +63 +_byPosi +++; + +64 + } +} + +66  + gPublishPack +:: + $_ePayldHdlg +( +ut32_t + +yldLgth +) { + +67 +_yldLgth + = +yldLgth +; + +68 i( +yldLgth + == 0) { + +69 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +70 i(! +_igne +) { + +71 + `_daClback +( +_rsgInfmi +-> +ticBufr +, +nuαr +, +_qos +, +_dup +, +_ +, 0, 0, 0, +_ckId +); + +72 + `_comeClback +( +_ckId +, +_qos +); + +75 +_rsgInfmi +-> +bufrS + = +BufrS +:: +PAYLOAD +; + +77 + } +} + +79  + gPublishPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +80 +size_t + +maToRd + = +n + - (* +cutByPosi +); + +81 i( +_yldBysRd + + +maToRd + > +_yldLgth +)emainToRead = _payloadLength - _payloadBytesRead; + +83 i(! +_igne + + `_daClback +( +_rsgInfmi +-> +ticBufr +, +da + + (* +cutByPosi +), +_qos +, +_dup +, +_ +, +maToRd +, +_yldBysRd +, +_yldLgth +, +_ckId +); + +84 +_yldBysRd + + +maToRd +; + +85 (* +cutByPosi ++ +maToRd +; + +87 i( +_yldBysRd + = +_yldLgth +) { + +88 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +89 i(! +_igne + + `_comeClback +( +_ckId +, +_qos +); + +91 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../Fgs.h +" + +6  + ~"../PsgInfmi.h +" + +7  + ~"../Clbacks.h +" + +9 +mea + + gAsyncMqClIls + { + +10 as + cPublishPack + : +public + +Pack + { + +11 +public +: + +12 +exic + +PublishPack +( +PsgInfmi +* +rsgInfmi +, +OnMesgeIlClback + +daClback +, +OnPublishIlClback + +comeClback +); + +13 ~ +PublishPack +(); + +15  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +16  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +18 + give +: + +19 +PsgInfmi +* +_rsgInfmi +; + +20 +OnMesgeIlClback + + g_daClback +; + +21 +OnPublishIlClback + + g_comeClback +; + +23  +_ePayldHdlg +( +ut32_t + +yldLgth +); + +25 +bo + + g_dup +; + +26 +ut8_t + + g_qos +; + +27 +bo + + g_ +; + +29 +ut8_t + + g_byPosi +; + +30  + g_ticLgthMsb +; + +31 +ut16_t + + g_ticLgth +; + +32 +bo + + g_igne +; + +33  + g_ckIdMsb +; + +34 +ut16_t + + g_ckId +; + +35 +ut32_t + + g_yldLgth +; + +36 +ut32_t + + g_yldBysRd +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.cpp + +1  + ~"SubAckPack.h +" + +3 +usg + + gAsyncMqClIls +:: +SubAckPack +; + +5 + gSubAckPack +:: + $SubAckPack +( +PsgInfmi +* +rsgInfmi +, +OnSubAckIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_back +( +back +) + +8 , + `_byPosi +(0) + +9 , + `_ckIdMsb +(0) + +10 , + $_ckId +(0) { + +11 + } +} + +13 + gSubAckPack +::~ + $SubAckPack +() { + +14 + } +} + +16  +SubAckPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +17  +cutBy + = +da +[(* +cutByPosi +)++]; + +18 i( +_byPosi +++ == 0) { + +19 +_ckIdMsb + = +cutBy +; + +21 +_ckId + = +cutBy + | +_ckIdMsb + << 8; + +22 +_rsgInfmi +-> +bufrS + = +BufrS +:: +PAYLOAD +; + +24 + } +} + +26  + gSubAckPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +27  +us + = +da +[(* +cutByPosi +)++]; + +44 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +45 + `_back +( +_ckId +, +us +); + +46 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cSubAckPack + : +public + +Pack + { + +10 +public +: + +11 +exic + +SubAckPack +( +PsgInfmi +* +rsgInfmi +, +OnSubAckIlClback + +back +); + +12 ~ +SubAckPack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnSubAckIlClback + + g_back +; + +21 +ut8_t + + g_byPosi +; + +22  + g_ckIdMsb +; + +23 +ut16_t + + g_ckId +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.cpp + +1  + ~"UnsubAckPack.h +" + +3 +usg + + gAsyncMqClIls +:: +UnsubAckPack +; + +5 + gUnsubAckPack +:: + $UnsubAckPack +( +PsgInfmi +* +rsgInfmi +, +OnUnsubAckIlClback + +back +) + +6 : + `_rsgInfmi +( +rsgInfmi +) + +7 , + `_back +( +back +) + +8 , + `_byPosi +(0) + +9 , + `_ckIdMsb +(0) + +10 , + $_ckId +(0) { + +11 + } +} + +13 + gUnsubAckPack +::~ + $UnsubAckPack +() { + +14 + } +} + +16  +UnsubAckPack +:: + $rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +17  +cutBy + = +da +[(* +cutByPosi +)++]; + +18 i( +_byPosi +++ == 0) { + +19 +_ckIdMsb + = +cutBy +; + +21 +_ckId + = +cutBy + | +_ckIdMsb + << 8; + +22 +_rsgInfmi +-> +bufrS + = +BufrS +:: +NONE +; + +23 + `_back +( +_ckId +); + +25 + } +} + +27  + gUnsubAckPack +:: + $rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +) { + +28 () +da +; + +29 () +cutByPosi +; + +30 + } +} + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.hpp + +1 #agm + + + +3  + ~"Arduo.h +" + +4  + ~"Pack.h +" + +5  + ~"../PsgInfmi.h +" + +6  + ~"../Clbacks.h +" + +8 +mea + + gAsyncMqClIls + { + +9 as + cUnsubAckPack + : +public + +Pack + { + +10 +public +: + +11 +exic + +UnsubAckPack +( +PsgInfmi +* +rsgInfmi +, +OnUnsubAckIlClback + +back +); + +12 ~ +UnsubAckPack +(); + +14  +rVbHd +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +15  +rPayld +(* +da +, +size_t + +n +, size_t* +cutByPosi +); + +17 + give +: + +18 +PsgInfmi +* +_rsgInfmi +; + +19 +OnUnsubAckIlClback + + g_back +; + +21 +ut8_t + + g_byPosi +; + +22  + g_ckIdMsb +; + +23 +ut16_t + + g_ckId +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/ParsingInformation.hpp + +1 #agm + + + +3 +mea + + gAsyncMqClIls + { + +4 as + cBufrS + : +ut8_t + { + +5 +NONE + = 0, + +6 + gREMAINING_LENGTH + = 2, + +7 + gVARIABLE_HEADER + = 3, + +8 + gPAYLOAD + = 4 + +11  + sPsgInfmi + { + +12 +BufrS + + gbufrS +; + +14 +ut16_t + + gmaxTicLgth +; + +15 * + gticBufr +; + +17 +ut8_t + + gckTy +; + +18 +ut16_t + + gckFgs +; + +19 +ut32_t + + gmagLgth +; + + @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Storage.hpp + +1 #agm + + + +3 +mea + + gAsyncMqClIls + { + +4  + sPdgPubR + { + +5 +ut16_t + + gckId +; + +8  + sPdgAck + { + +9 +ut8_t + + gckTy +; + +10 +ut8_t + + ghdFg +; + +11 +ut16_t + + gckId +; + + @.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.cpp + +22  + ~"Arduo.h +" + +24  + ~"AsyncTCP.h +" + +26  + ~"lw/t.h +" + +27  + ~"lw/t.h +" + +28  + ~"lw/.h +" + +29  + ~"lw/dns.h +" + +30  + ~"lw/r.h +" + +32  + ~"e_sk_wdt.h +" + +39 +LWIP_TCP_SENT +, +LWIP_TCP_RECV +, +LWIP_TCP_FIN +, +LWIP_TCP_ERROR +, +LWIP_TCP_POLL +, +LWIP_TCP_CLEAR +, +LWIP_TCP_ACCEPT +, +LWIP_TCP_CONNECTED +, +LWIP_TCP_DNS + + +40 } + tlw_evt_t +; + +43 +lw_evt_t + + mevt +; + +44 * + mg +; + +47 * + mpcb +; + +48 +t8_t + + mr +; + +49 } + mced +; + +51 +t8_t + + mr +; + +52 } + mr +; + +54 +t_pcb + * + mpcb +; + +55 +ut16_t + + mn +; + +56 } + m +; + +58 +t_pcb + * + mpcb +; + +59 +pbuf + * + mpb +; + +60 +t8_t + + mr +; + +61 } + mcv +; + +63 +t_pcb + * + mpcb +; + +64 +t8_t + + mr +; + +65 } + mf +; + +67 +t_pcb + * + mpcb +; + +68 } + mpl +; + +70 +AsyncCl + * + m +; + +71 } + mac +; + +73 cڡ * + mme +; + +74 +_addr_t + + maddr +; + +75 } + mdns +; + +77 } + tlw_evt_ck_t +; + +79  +xQueueHd + + g_async_queue +; + +80  +TaskHd_t + + g_async_rvi_sk_hd + = +NULL +; + +83 +SemheHd_t + + g_s_lock +; + +84 cڡ  + g_numb_of_od_s + = +CONFIG_LWIP_MAX_ACTIVE_TCP +; + +85  + g_od_s +[ +_numb_of_od_s +]; + +86  + g_od_dex + = []() { + +87 +_s_lock + = +xSemheCeBy +(); + +88 +xSemheGive +( +_s_lock +); + +89  + gi + = 0; i < + g_numb_of_od_s +; ++ i) { + +90 + g_od_s +[ +i +] = 1; + +96  +le + +bo + + $__async_evt_queue +(){ + +97 if(! +_async_queue +){ + +98 +_async_queue + = + `xQueueCe +(32, ( +lw_evt_ck_t + *)); + +99 if(! +_async_queue +){ + +100  +l +; + +103  +ue +; + +104 + } +} + +106  +le + +bo + + $_nd_async_evt +( +lw_evt_ck_t + ** +e +){ + +107  +_async_queue + && + `xQueueSd +(_async_queue, +e +, +ptMAX_DELAY += +pdPASS +; + +108 + } +} + +110  +le + +bo + + $_d_async_evt +( +lw_evt_ck_t + ** +e +){ + +111  +_async_queue + && + `xQueueSdToFrt +(_async_queue, +e +, +ptMAX_DELAY += +pdPASS +; + +112 + } +} + +114  +le + +bo + + $_g_async_evt +( +lw_evt_ck_t + ** +e +){ + +115  +_async_queue + && + `xQueueReive +(_async_queue, +e +, +ptMAX_DELAY += +pdPASS +; + +116 + } +} + +118  +bo + + $_move_evts_wh_g +(* +g +){ + +119 +lw_evt_ck_t + * +f_ck + = +NULL +; + +120 +lw_evt_ck_t + * +ck + = +NULL +; + +122 if(! +_async_queue +){ + +123  +l +; + +126 ! +f_ck +){ + +127 if( + `xQueueReive +( +_async_queue +, & +f_ck +, 0! +pdPASS +){ + +128  +l +; + +131 if(() +f_ck +-> +g + == ()arg){ + +132 + ` +( +f_ck +); + +133 +f_ck + = +NULL +; + +135 } if( + `xQueueSd +( +_async_queue +, & +f_ck +, +ptMAX_DELAY +! +pdPASS +){ + +136  +l +; + +140  + `xQueuePk +( +_async_queue +, & +ck +, 0= +pdPASS + &&ack ! +f_ck +){ + +141 if( + `xQueueReive +( +_async_queue +, & +ck +, 0! +pdPASS +){ + +142  +l +; + +144 if(() +ck +-> +g + == ()arg){ + +145 + ` +( +ck +); + +146 +ck + = +NULL +; + +147 } if( + `xQueueSd +( +_async_queue +, & +ck +, +ptMAX_DELAY +! +pdPASS +){ + +148  +l +; + +151  +ue +; + +152 + } +} + +154  + $_hd_async_evt +( +lw_evt_ck_t + * +e +){ + +155 if( +e +-> +evt + = +LWIP_TCP_CLEAR +){ + +156 + `_move_evts_wh_g +( +e +-> +g +); + +157 } if( +e +-> +evt + = +LWIP_TCP_RECV +){ + +159 +AsyncCl +:: + `_s_cv +( +e +-> +g +,-> +cv +. +pcb +,->cv. +pb +,->cv. +r +); + +160 } if( +e +-> +evt + = +LWIP_TCP_FIN +){ + +162 +AsyncCl +:: + `_s_f +( +e +-> +g +,-> +f +. +pcb +,->f. +r +); + +163 } if( +e +-> +evt + = +LWIP_TCP_SENT +){ + +165 +AsyncCl +:: + `_s_ +( +e +-> +g +,-> + +. +pcb +,->. +n +); + +166 } if( +e +-> +evt + = +LWIP_TCP_POLL +){ + +168 +AsyncCl +:: + `_s_pl +( +e +-> +g +,-> +pl +. +pcb +); + +169 } if( +e +-> +evt + = +LWIP_TCP_ERROR +){ + +171 +AsyncCl +:: + `_s_r +( +e +-> +g +,-> +r +. +r +); + +172 } if( +e +-> +evt + = +LWIP_TCP_CONNECTED +){ + +174 +AsyncCl +:: + `_s_ced +( +e +-> +g +,-> +ced +. +pcb +,->ced. +r +); + +175 } if( +e +-> +evt + = +LWIP_TCP_ACCEPT +){ + +177 +AsyncSv +:: + `_s_aced +( +e +-> +g +,-> +ac +. + +); + +178 } if( +e +-> +evt + = +LWIP_TCP_DNS +){ + +180 +AsyncCl +:: + `_s_dns_found +( +e +-> +dns +. +me +, &e->dns. +addr +,-> +g +); + +182 + ` +((*)( +e +)); + +183 + } +} + +185  + $_async_rvi_sk +(* +pvPams +){ + +186 +lw_evt_ck_t + * +ck + = +NULL +; + +188 if( + `_g_async_evt +(& +ck +)){ + +189 #i +CONFIG_ASYNC_TCP_USE_WDT + + +190 if( + `e_sk_wdt_add +( +NULL +! +ESP_OK +){ + +191 + `log_e +("Failedoddsyncasko WDT"); + +194 + `_hd_async_evt +( +ck +); + +195 #i +CONFIG_ASYNC_TCP_USE_WDT + + +196 if( + `e_sk_wdt_de +( +NULL +! +ESP_OK +){ + +197 + `log_e +("Failedoemoveoopask from WDT"); + +202 + `vTaskDe +( +NULL +); + +203 +_async_rvi_sk_hd + = +NULL +; + +204 + } +} + +213  +bo + + $_t_async_sk +(){ + +214 if(! + `__async_evt_queue +()){ + +215  +l +; + +217 if(! +_async_rvi_sk_hd +){ + +218 + `xTaskCeUnivl +( +_async_rvi_sk +, "async_t", 8192 * 2, +NULL +, 3, & +_async_rvi_sk_hd +, +CONFIG_ASYNC_TCP_RUNNING_CORE +); + +219 if(! +_async_rvi_sk_hd +){ + +220  +l +; + +223  +ue +; + +224 + } +} + +230  +t8_t + + $_t_r_evts +(* +g +) { + +231 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +232 +e +-> +evt + = +LWIP_TCP_CLEAR +; + +233 +e +-> +g + =rg; + +234 i(! + `_d_async_evt +(& +e +)) { + +235 + ` +((*)( +e +)); + +237  +ERR_OK +; + +238 + } +} + +240  +t8_t + + $_t_ced +(* +g +, +t_pcb + * +pcb +, +t8_t + +r +) { + +242 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +243 +e +-> +evt + = +LWIP_TCP_CONNECTED +; + +244 +e +-> +g + =rg; + +245 +e +-> +ced +. +pcb + =cb; + +246 +e +-> +ced +. +r + =rr; + +247 i(! + `_d_async_evt +(& +e +)) { + +248 + ` +((*)( +e +)); + +250  +ERR_OK +; + +251 + } +} + +253  +t8_t + + $_t_pl +(* +g +,  +t_pcb + * +pcb +) { + +255 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +256 +e +-> +evt + = +LWIP_TCP_POLL +; + +257 +e +-> +g + =rg; + +258 +e +-> +pl +. +pcb + =cb; + +259 i(! + `_nd_async_evt +(& +e +)) { + +260 + ` +((*)( +e +)); + +262  +ERR_OK +; + +263 + } +} + +265  +t8_t + + $_t_cv +(* +g +,  +t_pcb + * +pcb +,  +pbuf + * +pb +, +t8_t + +r +) { + +266 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +267 +e +-> +g + =rg; + +268 if( +pb +){ + +270 +e +-> +evt + = +LWIP_TCP_RECV +; + +271 +e +-> +cv +. +pcb + =cb; + +272 +e +-> +cv +. +pb + =b; + +273 +e +-> +cv +. +r + =rr; + +276 +e +-> +evt + = +LWIP_TCP_FIN +; + +277 +e +-> +f +. +pcb + =cb; + +278 +e +-> +f +. +r + =rr; + +280 +AsyncCl +:: + `_s_lw_f +( +e +-> +g +,-> +f +. +pcb +,->f. +r +); + +282 i(! + `_nd_async_evt +(& +e +)) { + +283 + ` +((*)( +e +)); + +285  +ERR_OK +; + +286 + } +} + +288  +t8_t + + $_t_ +(* +g +,  +t_pcb + * +pcb +, +ut16_t + +n +) { + +290 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +291 +e +-> +evt + = +LWIP_TCP_SENT +; + +292 +e +-> +g + =rg; + +293 +e +-> + +. +pcb + =cb; + +294 +e +-> + +. +n + =en; + +295 i(! + `_nd_async_evt +(& +e +)) { + +296 + ` +((*)( +e +)); + +298  +ERR_OK +; + +299 + } +} + +301  + $_t_r +(* +g +, +t8_t + +r +) { + +303 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +304 +e +-> +evt + = +LWIP_TCP_ERROR +; + +305 +e +-> +g + =rg; + +306 +e +-> +r +. +r + =rr; + +307 i(! + `_nd_async_evt +(& +e +)) { + +308 + ` +((*)( +e +)); + +310 + } +} + +312  + $_t_dns_found +(cڡ * +me +,  +_addr + * +addr +, * +g +) { + +313 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +315 +e +-> +evt + = +LWIP_TCP_DNS +; + +316 +e +-> +g + =rg; + +317 +e +-> +dns +. +me + =ame; + +318 i( +addr +) { + +319 + `memy +(& +e +-> +dns +. +addr +, +addr +, ( +_addr +)); + +321 + `memt +(& +e +-> +dns +. +addr +, 0, (e->dns.addr)); + +323 i(! + `_nd_async_evt +(& +e +)) { + +324 + ` +((*)( +e +)); + +326 + } +} + +329  +t8_t + + $_t_ac +(* +g +, +AsyncCl + * + +) { + +330 +lw_evt_ck_t + * +e + = (lw_evt_ck_*) + `mloc +((lwip_event_packet_t)); + +331 +e +-> +evt + = +LWIP_TCP_ACCEPT +; + +332 +e +-> +g + =rg; + +333 +e +-> +ac +. + + = client; + +334 i(! + `_d_async_evt +(& +e +)) { + +335 + ` +((*)( +e +)); + +337  +ERR_OK +; + +338 + } +} + +344  + ~"lw/iv/t_iv.h +" + +347  +t_i__da + + m +; + +348 +t_pcb + * + mpcb +; + +349 +t8_t + + mod_ +; + +350 +t8_t + + mr +; + +353 cڡ * + mda +; + +354 +size_t + + msize +; + +355 +ut8_t + + miags +; + +356 } + mwre +; + +357 +size_t + + mived +; + +359 +_addr_t + * + maddr +; + +360 +ut16_t + + mpt +; + +361 +t_ced_ + + mcb +; + +362 } + mc +; + +364 +_addr_t + * + maddr +; + +365 +ut16_t + + mpt +; + +366 } + mbd +; + +367 +ut8_t + + mbacklog +; + +369 } + tt_i__t +; + +371  +r_t + + $_t_ouut_i +( +t_i__da + * +i__msg +){ + +372 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +373 +msg +-> +r + = +ERR_CONN +; + +374 if( +msg +-> +od_ + =-1 || ! +_od_s +[msg->closed_slot]) { + +375 +msg +-> +r + = + `t_ouut +(msg-> +pcb +); + +377  +msg +-> +r +; + +378 + } +} + +380  +e_r_t + + $_t_ouut +( +t_pcb + * +pcb +, +t8_t + +od_ +) { + +381 if(! +pcb +){ + +382  +ERR_CONN +; + +384 +t_i__t + +msg +; + +385 +msg +. +pcb + =cb; + +386 +msg +. +od_ + = closed_slot; + +387 + `t_i_ +( +_t_ouut_i +, ( +t_i__da +*)& +msg +); + +388  +msg +. +r +; + +389 + } +} + +391  +r_t + + $_t_wre_i +( +t_i__da + * +i__msg +){ + +392 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +393 +msg +-> +r + = +ERR_CONN +; + +394 if( +msg +-> +od_ + =-1 || ! +_od_s +[msg->closed_slot]) { + +395 +msg +-> +r + = + `t_wre +(msg-> +pcb +, msg-> +wre +. +da +, msg->wre. +size +, msg->wre. +iags +); + +397  +msg +-> +r +; + +398 + } +} + +400  +e_r_t + + $_t_wre +( +t_pcb + * +pcb +, +t8_t + +od_ +, cڡ * +da +, +size_t + +size +, +ut8_t + +iags +) { + +401 if(! +pcb +){ + +402  +ERR_CONN +; + +404 +t_i__t + +msg +; + +405 +msg +. +pcb + =cb; + +406 +msg +. +od_ + = closed_slot; + +407 +msg +. +wre +. +da + = data; + +408 +msg +. +wre +. +size + = size; + +409 +msg +. +wre +. +iags + =piflags; + +410 + `t_i_ +( +_t_wre_i +, ( +t_i__da +*)& +msg +); + +411  +msg +. +r +; + +412 + } +} + +414  +r_t + + $_t_cved_i +( +t_i__da + * +i__msg +){ + +415 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +416 +msg +-> +r + = +ERR_CONN +; + +417 if( +msg +-> +od_ + =-1 || ! +_od_s +[msg->closed_slot]) { + +418 +msg +-> +r + = 0; + +419 + `t_cved +( +msg +-> +pcb +, msg-> +ived +); + +421  +msg +-> +r +; + +422 + } +} + +424  +e_r_t + + $_t_cved +( +t_pcb + * +pcb +, +t8_t + +od_ +, +size_t + +n +) { + +425 if(! +pcb +){ + +426  +ERR_CONN +; + +428 +t_i__t + +msg +; + +429 +msg +. +pcb + =cb; + +430 +msg +. +od_ + = closed_slot; + +431 +msg +. +ived + = +n +; + +432 + `t_i_ +( +_t_cved_i +, ( +t_i__da +*)& +msg +); + +433  +msg +. +r +; + +434 + } +} + +436  +r_t + + $_t_o_i +( +t_i__da + * +i__msg +){ + +437 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +438 +msg +-> +r + = +ERR_CONN +; + +439 if( +msg +-> +od_ + =-1 || ! +_od_s +[msg->closed_slot]) { + +440 +msg +-> +r + = + `t_o +(msg-> +pcb +); + +442  +msg +-> +r +; + +443 + } +} + +445  +e_r_t + + $_t_o +( +t_pcb + * +pcb +, +t8_t + +od_ +) { + +446 if(! +pcb +){ + +447  +ERR_CONN +; + +449 +t_i__t + +msg +; + +450 +msg +. +pcb + =cb; + +451 +msg +. +od_ + = closed_slot; + +452 + `t_i_ +( +_t_o_i +, ( +t_i__da +*)& +msg +); + +453  +msg +. +r +; + +454 + } +} + +456  +r_t + + $_t_abt_i +( +t_i__da + * +i__msg +){ + +457 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +458 +msg +-> +r + = +ERR_CONN +; + +459 if( +msg +-> +od_ + =-1 || ! +_od_s +[msg->closed_slot]) { + +460 + `t_abt +( +msg +-> +pcb +); + +462  +msg +-> +r +; + +463 + } +} + +465  +e_r_t + + $_t_abt +( +t_pcb + * +pcb +, +t8_t + +od_ +) { + +466 if(! +pcb +){ + +467  +ERR_CONN +; + +469 +t_i__t + +msg +; + +470 +msg +. +pcb + =cb; + +471 +msg +. +od_ + = closed_slot; + +472 + `t_i_ +( +_t_abt_i +, ( +t_i__da +*)& +msg +); + +473  +msg +. +r +; + +474 + } +} + +476  +r_t + + $_t_c_i +( +t_i__da + * +i__msg +){ + +477 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +478 +msg +-> +r + = + `t_c +(msg-> +pcb +, msg-> +c +. +addr +, msg->c. +pt +, msg->c. +cb +); + +479  +msg +-> +r +; + +480 + } +} + +482  +e_r_t + + $_t_c +( +t_pcb + * +pcb +, +t8_t + +od_ +, +_addr_t + * +addr +, +ut16_t + +pt +, +t_ced_ + +cb +) { + +483 if(! +pcb +){ + +484  +ESP_FAIL +; + +486 +t_i__t + +msg +; + +487 +msg +. +pcb + =cb; + +488 +msg +. +od_ + = closed_slot; + +489 +msg +. +c +. +addr + =ddr; + +490 +msg +. +c +. +pt + =ort; + +491 +msg +. +c +. +cb + = cb; + +492 + `t_i_ +( +_t_c_i +, ( +t_i__da +*)& +msg +); + +493  +msg +. +r +; + +494 + } +} + +496  +r_t + + $_t_bd_i +( +t_i__da + * +i__msg +){ + +497 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +498 +msg +-> +r + = + `t_bd +(msg-> +pcb +, msg-> +bd +. +addr +, msg->bd. +pt +); + +499  +msg +-> +r +; + +500 + } +} + +502  +e_r_t + + $_t_bd +( +t_pcb + * +pcb +, +_addr_t + * +addr +, +ut16_t + +pt +) { + +503 if(! +pcb +){ + +504  +ESP_FAIL +; + +506 +t_i__t + +msg +; + +507 +msg +. +pcb + =cb; + +508 +msg +. +od_ + = -1; + +509 +msg +. +bd +. +addr + =ddr; + +510 +msg +. +bd +. +pt + =ort; + +511 + `t_i_ +( +_t_bd_i +, ( +t_i__da +*)& +msg +); + +512  +msg +. +r +; + +513 + } +} + +515  +r_t + + $_t_li_i +( +t_i__da + * +i__msg +){ + +516 +t_i__t + * +msg + = (t_i__*) +i__msg +; + +517 +msg +-> +r + = 0; + +518 +msg +-> +pcb + = + `t_li_wh_backlog +(msg->pcb, msg-> +backlog +); + +519  +msg +-> +r +; + +520 + } +} + +522  +t_pcb + * + $_t_li_wh_backlog +( +t_pcb + * +pcb +, +ut8_t + +backlog +) { + +523 if(! +pcb +){ + +524  +NULL +; + +526 +t_i__t + +msg +; + +527 +msg +. +pcb + =cb; + +528 +msg +. +od_ + = -1; + +529 +msg +. +backlog + = backlog?backlog:0xFF; + +530 + `t_i_ +( +_t_li_i +, ( +t_i__da +*)& +msg +); + +531  +msg +. +pcb +; + +532 + } +} + +540 + gAsyncCl +:: + $AsyncCl +( +t_pcb +* +pcb +) + +541 : + `_c_cb +(0) + +542 , + `_c_cb_g +(0) + +543 , + `_disrd_cb +(0) + +544 , + `_disrd_cb_g +(0) + +545 , + `__cb +(0) + +546 , + `__cb_g +(0) + +547 , + `_r_cb +(0) + +548 , + `_r_cb_g +(0) + +549 , + `_cv_cb +(0) + +550 , + `_cv_cb_g +(0) + +551 , + `_pb_cb +(0) + +552 , + `_pb_cb_g +(0) + +553 , + `_timeout_cb +(0) + +554 , + `_timeout_cb_g +(0) + +555 , + `_pcb_busy +( +l +) + +556 , + `_pcb__ +(0) + +557 , + `_ack_pcb +( +ue +) + +558 , + `_rx_ϡ_ck +(0) + +559 , + `_rx_s_timeout +(0) + +560 , + `_ack_timeout +( +ASYNC_MAX_ACK_TIME +) + +561 , + `_c_pt +(0) + +562 , + `ev +( +NULL +) + +563 , + $xt +( +NULL +) + +565 +_pcb + = +pcb +; + +566 +_od_ + = -1; + +567 if( +_pcb +){ + +568 + `xSemheTake +( +_s_lock +, +ptMAX_DELAY +); + +569  +od__m_dex + = 0; + +570  +i + = 0; i < +_numb_of_od_s +; ++ i) { + +571 i(( +_od_ + =-1 || +_od_s +[ +i +] < +od__m_dex +) && _closed_slots[i] != 0) { + +572 +od__m_dex + = +_od_s +[ +i +]; + +573 +_od_ + = +i +; + +576 +_od_s +[ +_od_ +] = 0; + +577 + `xSemheGive +( +_s_lock +); + +579 +_rx_ϡ_ck + = + `mlis +(); + +580 + `t_g +( +_pcb +, +this +); + +581 + `t_cv +( +_pcb +, & +_t_cv +); + +582 + `t_ +( +_pcb +, & +_t_ +); + +583 + `t_r +( +_pcb +, & +_t_r +); + +584 + `t_pl +( +_pcb +, & +_t_pl +, 1); + +586 + } +} + +588 + gAsyncCl +::~ + $AsyncCl +(){ + +589 if( +_pcb +) { + +590 + `_o +(); + +592 + } +} + +598 + gAsyncCl +& AsyncCl:: +ݔ +=(cڡ +AsyncCl +& +h +){ + +599 i( +_pcb +) { + +600 +_o +(); + +603 + g_pcb + = +h +. +_pcb +; + +604 + g_od_ + = +h +. +_od_ +; + +605 i( + g_pcb +) { + +606 + g_rx_ϡ_ck + = +mlis +(); + +607 +t_g +( +_pcb +, +this +); + +608 +t_cv +( +_pcb +, & +_t_cv +); + +609 +t_ +( +_pcb +, & +_t_ +); + +610 +t_r +( +_pcb +, & +_t_r +); + +611 +t_pl +( +_pcb +, & +_t_pl +, 1); + +613  * + gthis +; + +616 +bo + + gAsyncCl +:: +ݔ +==(cڡ +AsyncCl + & +h +) { + +617  +_pcb + = +h +._pcb; + +620 + gAsyncCl + & AsyncCl:: +ݔ ++=(cڡ +AsyncCl + & +h +) { + +621 if( +xt + = +NULL +){ + +622 +xt + = ( +AsyncCl +*)(& +h +); + +623 + gxt +-> + gev + = +this +; + +625 +AsyncCl + * + gc + = +xt +; + +626  + gc +-> + gxt + ! +NULL +) { + +627 +c + = c-> +xt +; + +629 + gc +-> + gxt + =( +AsyncCl +*)(& +h +); + +630 + gc +-> + gxt +-> + gev + = +c +; + +632  * + gthis +; + +639  + gAsyncCl +:: + $C +( +AcCHdr + +cb +, * +g +){ + +640 +_c_cb + = +cb +; + +641 +_c_cb_g + = +g +; + +642 + } +} + +644  + gAsyncCl +:: + $Disc +( +AcCHdr + +cb +, * +g +){ + +645 +_disrd_cb + = +cb +; + +646 +_disrd_cb_g + = +g +; + +647 + } +} + +649  + gAsyncCl +:: + $Ack +( +AcAckHdr + +cb +, * +g +){ + +650 +__cb + = +cb +; + +651 +__cb_g + = +g +; + +652 + } +} + +654  + gAsyncCl +:: + $E +( +AcEHdr + +cb +, * +g +){ + +655 +_r_cb + = +cb +; + +656 +_r_cb_g + = +g +; + +657 + } +} + +659  + gAsyncCl +:: + $Da +( +AcDaHdr + +cb +, * +g +){ + +660 +_cv_cb + = +cb +; + +661 +_cv_cb_g + = +g +; + +662 + } +} + +664  + gAsyncCl +:: + $Pack +( +AcPackHdr + +cb +, * +g +){ + +665 +_pb_cb + = +cb +; + +666 +_pb_cb_g + = +g +; + +667 + } +} + +669  + gAsyncCl +:: + $Timeout +( +AcTimeoutHdr + +cb +, * +g +){ + +670 +_timeout_cb + = +cb +; + +671 +_timeout_cb_g + = +g +; + +672 + } +} + +674  + gAsyncCl +:: + $Pl +( +AcCHdr + +cb +, * +g +){ + +675 +_pl_cb + = +cb +; + +676 +_pl_cb_g + = +g +; + +677 + } +} + +683 +bo + + gAsyncCl +:: + $c +( +IPAddss + + +, +ut16_t + +pt +){ + +684 i( +_pcb +){ + +685 + `log_w +("ady ced, s %d", +_pcb +-> +e +); + +686  +l +; + +688 if(! + `_t_async_sk +()){ + +689 + `log_e +("failedo startask"); + +690  +l +; + +693 +_addr_t + +addr +; + +694 +addr +. +ty + = +IPADDR_TYPE_V4 +; + +695 +addr +. +u_addr +. +4 +.add + +; + +697 +t_pcb +* +pcb + = + `t_w__ty +( +IPADDR_TYPE_V4 +); + +698 i(! +pcb +){ + +699 + `log_e +("pcb == NULL"); + +700  +l +; + +703 + `t_g +( +pcb +, +this +); + +704 + `t_r +( +pcb +, & +_t_r +); + +705 + `t_cv +( +pcb +, & +_t_cv +); + +706 + `t_ +( +pcb +, & +_t_ +); + +707 + `t_pl +( +pcb +, & +_t_pl +, 1); + +709 + `_t_c +( +pcb +, +_od_ +, & +addr +, +pt +,( +t_ced_ +)& +_t_ced +); + +710  +ue +; + +711 + } +} + +713 +bo + + gAsyncCl +:: + $c +(cڡ * +ho +, +ut16_t + +pt +){ + +714 +_addr_t + +addr +; + +716 if(! + `_t_async_sk +()){ + +717 +Sl +. + `n +("failedo startask"); + +718 + `log_e +("failedo startask"); + +719  +l +; + +722 +r_t + +r + = + `dns_ghobyme +( +ho +, & +addr +, ( +dns_found_back +)& +_t_dns_found +, +this +); + +723 if( +r + = +ERR_OK +) { + +724  + `c +( + `IPAddss +( +addr +. +u_addr +. +4 +.addr), +pt +); + +725 } if( +r + = +ERR_INPROGRESS +) { + +726 +_c_pt + = +pt +; + +727  +ue +; + +729 + `log_e +("r: %d", +r +); + +730  +l +; + +731 + } +} + +733  + gAsyncCl +:: + $o +( +bo + +now +){ + +734 if( +_pcb +){ + +735 + `_t_cved +( +_pcb +, +_od_ +, +_rx_ack_n +); + +737 + `_o +(); + +738 + } +} + +740 +t8_t + + gAsyncCl +:: + $abt +(){ + +741 if( +_pcb +) { + +742 + `_t_abt +( +_pcb +, +_od_ + ); + +743 +_pcb + = +NULL +; + +745  +ERR_ABRT +; + +746 + } +} + +748 +size_t + + gAsyncCl +:: + $a +(){ + +749 if(( +_pcb + ! +NULL +&& (_pcb-> +e + == 4)){ + +750  + `t_dbuf +( +_pcb +); + +753 + } +} + +755 +size_t + + gAsyncCl +:: + $add +(cڡ * +da +, +size_t + +size +, +ut8_t + +iags +) { + +756 if(! +_pcb + || +size + =0 || +da + = +NULL +) { + +759 +size_t + +room + = + `a +(); + +760 if(! +room +) { + +763 +size_t + +wl_nd + = ( +room + < +size +) ?oom : size; + +764 +t8_t + +r + = +ERR_OK +; + +765 +r + = + `_t_wre +( +_pcb +, +_od_ +, +da +, +wl_nd +, +iags +); + +766 if( +r + ! +ERR_OK +) { + +769  +wl_nd +; + +770 + } +} + +772 +bo + + gAsyncCl +:: + $nd +(){ + +773 +t8_t + +r + = +ERR_OK +; + +774 +r + = + `_t_ouut +( +_pcb +, +_od_ +); + +775 if( +r + = +ERR_OK +){ + +776 +_pcb_busy + = +ue +; + +777 +_pcb__ + = + `mlis +(); + +778  +ue +; + +780  +l +; + +781 + } +} + +783 +size_t + + gAsyncCl +:: + $ack +( +size_t + +n +){ + +784 if( +n + > +_rx_ack_n +) + +785 +n + = +_rx_ack_n +; + +786 if( +n +){ + +787 + `_t_cved +( +_pcb +, +_od_ +, +n +); + +789 +_rx_ack_n + - +n +; + +790  +n +; + +791 + } +} + +793  + gAsyncCl +:: + $ackPack +( +pbuf + * +pb +){ + +794 if(! +pb +){ + +797 + `_t_cved +( +_pcb +, +_od_ +, +pb +-> +n +); + +798 + `pbuf_ +( +pb +); + +799 + } +} + +805 +t8_t + + gAsyncCl +:: + $_o +(){ + +807 +t8_t + +r + = +ERR_OK +; + +808 if( +_pcb +) { + +810 + `t_g +( +_pcb +, +NULL +); + +811 + `t_ +( +_pcb +, +NULL +); + +812 + `t_cv +( +_pcb +, +NULL +); + +813 + `t_r +( +_pcb +, +NULL +); + +814 + `t_pl +( +_pcb +, +NULL +, 0); + +815 + `_t_r_evts +( +this +); + +816 +r + = + `_t_o +( +_pcb +, +_od_ +); + +817 if( +r + ! +ERR_OK +) { + +818 +r + = + `abt +(); + +820 +_pcb + = +NULL +; + +821 if( +_disrd_cb +) { + +822 + `_disrd_cb +( +_disrd_cb_g +, +this +); + +825  +r +; + +826 + } +} + +832 +t8_t + + gAsyncCl +:: + $_ced +(* +pcb +, +t8_t + +r +){ + +833 +_pcb + = +t_ +< +t_pcb +*>( +pcb +); + +834 if( +_pcb +){ + +835 +_rx_ϡ_ck + = + `mlis +(); + +836 +_pcb_busy + = +l +; + +841 if( +_c_cb +) { + +842 + `_c_cb +( +_c_cb_g +, +this +); + +844  +ERR_OK +; + +845 + } +} + +847  + gAsyncCl +:: + $_r +( +t8_t + +r +) { + +848 if( +_pcb +){ + +849 + `t_g +( +_pcb +, +NULL +); + +850 + `t_ +( +_pcb +, +NULL +); + +851 + `t_cv +( +_pcb +, +NULL +); + +852 + `t_r +( +_pcb +, +NULL +); + +853 + `t_pl +( +_pcb +, +NULL +, 0); + +854 +_pcb + = +NULL +; + +856 if( +_r_cb +) { + +857 + `_r_cb +( +_r_cb_g +, +this +, +r +); + +859 if( +_disrd_cb +) { + +860 + `_disrd_cb +( +_disrd_cb_g +, +this +); + +862 + } +} + +865 +t8_t + + gAsyncCl +:: + $_lw_f +( +t_pcb +* +pcb +, +t8_t + +r +) { + +866 if(! +_pcb + || +pcb + != _pcb){ + +867 + `log_e +("0x%08x !0x%08x", ( +ut32_t +) +pcb +, (ut32_t) +_pcb +); + +868  +ERR_OK +; + +870 + `t_g +( +_pcb +, +NULL +); + +871 + `t_ +( +_pcb +, +NULL +); + +872 + `t_cv +( +_pcb +, +NULL +); + +873 + `t_r +( +_pcb +, +NULL +); + +874 + `t_pl +( +_pcb +, +NULL +, 0); + +875 if( + `t_o +( +_pcb +! +ERR_OK +) { + +876 + `t_abt +( +_pcb +); + +878 +_od_s +[ +_od_ +] = +_od_dex +; + +879 ++ +_od_dex +; + +880 +_pcb + = +NULL +; + +881  +ERR_OK +; + +882 + } +} + +885 +t8_t + + gAsyncCl +:: + $_f +( +t_pcb +* +pcb +, +t8_t + +r +) { + +886 + `_t_r_evts +( +this +); + +887 if( +_disrd_cb +) { + +888 + `_disrd_cb +( +_disrd_cb_g +, +this +); + +890  +ERR_OK +; + +891 + } +} + +893 +t8_t + + gAsyncCl +:: + $_ +( +t_pcb +* +pcb +, +ut16_t + +n +) { + +894 +_rx_ϡ_ck + = + `mlis +(); + +896 +_pcb_busy + = +l +; + +897 if( +__cb +) { + +898 + `__cb +( +__cb_g +, +this +, +n +, ( + `mlis +(- +_pcb__ +)); + +900  +ERR_OK +; + +901 + } +} + +903 +t8_t + + gAsyncCl +:: + $_cv +( +t_pcb +* +pcb +, +pbuf +* +pb +, +t8_t + +r +) { + +904  +pb + ! +NULL +) { + +905 +_rx_ϡ_ck + = + `mlis +(); + +907 +_ack_pcb + = +ue +; + +908 +pbuf + * +b + = +pb +; + +909 +pb + = +b +-> +xt +; + +910 +b +-> +xt + = +NULL +; + +911 if( +_pb_cb +){ + +912 + `_pb_cb +( +_pb_cb_g +, +this +, +b +); + +914 if( +_cv_cb +) { + +915 + `_cv_cb +( +_cv_cb_g +, +this +, +b +-> +yld +, b-> +n +); + +917 if(! +_ack_pcb +) { + +918 +_rx_ack_n + + +b +-> +n +; + +919 } if( +_pcb +) { + +920 + `_t_cved +( +_pcb +, +_od_ +, +b +-> +n +); + +922 + `pbuf_ +( +b +); + +925  +ERR_OK +; + +926 + } +} + +928 +t8_t + + gAsyncCl +:: + $_pl +( +t_pcb +* +pcb +){ + +929 if(! +_pcb +){ + +930 + `log_w +("pcb is NULL"); + +931  +ERR_OK +; + +933 if( +pcb + ! +_pcb +){ + +934 + `log_e +("0x%08x !0x%08x", ( +ut32_t +) +pcb +, (ut32_t) +_pcb +); + +935  +ERR_OK +; + +938 +ut32_t + +now + = + `mlis +(); + +941 if( +_pcb_busy + && +_ack_timeout + && ( +now + - +_pcb__ +) >= _ack_timeout){ + +942 +_pcb_busy + = +l +; + +943 + `log_w +("ackimeou%d", +pcb +-> +e +); + +944 if( +_timeout_cb +) + +945 + `_timeout_cb +( +_timeout_cb_g +, +this +, ( +now + - +_pcb__ +)); + +946  +ERR_OK +; + +949 if( +_rx_s_timeout + && ( +now + - +_rx_ϡ_ck +) >= (_rx_since_timeout * 1000)){ + +950 + `log_w +("rximeou%d", +pcb +-> +e +); + +951 + `_o +(); + +952  +ERR_OK +; + +955 if( +_pl_cb +) { + +956 + `_pl_cb +( +_pl_cb_g +, +this +); + +958  +ERR_OK +; + +959 + } +} + +961  + gAsyncCl +:: + $_dns_found +( +_addr + * +addr +){ + +962 if( +addr + && iddr-> +u_addr +. +4 +. +addr +){ + +963 + `c +( + `IPAddss +( +addr +-> +u_addr +. +4 +. +addr +), +_c_pt +); + +965 if( +_r_cb +) { + +966 + `_r_cb +( +_r_cb_g +, +this +, -55); + +968 if( +_disrd_cb +) { + +969 + `_disrd_cb +( +_disrd_cb_g +, +this +); + +972 + } +} + +978  + gAsyncCl +:: + $ +() { + +979 + `o +( +l +); + +980 + } +} + +982 +bo + + gAsyncCl +:: + $ +(){ + +983 if(! +_pcb +) { + +984  +ue +; + +986 if( +_pcb +-> +e + == 0 || _pcb->state > 4) { + +987  +ue +; + +989  +l +; + +990 + } +} + +992 +size_t + + gAsyncCl +:: + $wre +(cڡ * +da +) { + +993 if( +da + = +NULL +) { + +996  + `wre +( +da +, + ` +(data)); + +997 + } +} + +999 +size_t + + gAsyncCl +:: + $wre +(cڡ * +da +, +size_t + +size +, +ut8_t + +iags +) { + +1000 +size_t + +wl_nd + = + `add +( +da +, +size +, +iags +); + +1001 if(! +wl_nd + || ! + `nd +()) { + +1004  +wl_nd +; + +1005 + } +} + +1007  + gAsyncCl +:: + $tRxTimeout +( +ut32_t + +timeout +){ + +1008 +_rx_s_timeout + = +timeout +; + +1009 + } +} + +1011 +ut32_t + + gAsyncCl +:: + $gRxTimeout +(){ + +1012  +_rx_s_timeout +; + +1013 + } +} + +1015 +ut32_t + + gAsyncCl +:: + $gAckTimeout +(){ + +1016  +_ack_timeout +; + +1017 + } +} + +1019  + gAsyncCl +:: + $tAckTimeout +( +ut32_t + +timeout +){ + +1020 +_ack_timeout + = +timeout +; + +1021 + } +} + +1023  + gAsyncCl +:: + $tNoDay +( +bo + +noday +){ + +1024 if(! +_pcb +) { + +1027 if( +noday +) { + +1028 + `t_g_dib +( +_pcb +); + +1030 + `t_g_ab +( +_pcb +); + +1032 + } +} + +1034 +bo + + gAsyncCl +:: + $gNoDay +(){ + +1035 if(! +_pcb +) { + +1036  +l +; + +1038  + `t_g_dibd +( +_pcb +); + +1039 + } +} + +1041 +ut16_t + + gAsyncCl +:: + $gMss +(){ + +1042 if(! +_pcb +) { + +1045  + `t_mss +( +_pcb +); + +1046 + } +} + +1048 +ut32_t + + gAsyncCl +:: + $gRemeAddss +() { + +1049 if(! +_pcb +) { + +1052  +_pcb +-> +me_ +. +u_addr +. +4 +. +addr +; + +1053 + } +} + +1055 +ut16_t + + gAsyncCl +:: + $gRemePt +() { + +1056 if(! +_pcb +) { + +1059  +_pcb +-> +me_pt +; + +1060 + } +} + +1062 +ut32_t + + gAsyncCl +:: + $gLolAddss +() { + +1063 if(! +_pcb +) { + +1066  +_pcb +-> +lol_ +. +u_addr +. +4 +. +addr +; + +1067 + } +} + +1069 +ut16_t + + gAsyncCl +:: + $gLolPt +() { + +1070 if(! +_pcb +) { + +1073  +_pcb +-> +lol_pt +; + +1074 + } +} + +1076 +IPAddss + + gAsyncCl +:: + $meIP +() { + +1077  + `IPAddss +( + `gRemeAddss +()); + +1078 + } +} + +1080 +ut16_t + + gAsyncCl +:: + $mePt +() { + +1081  + `gRemePt +(); + +1082 + } +} + +1084 +IPAddss + + gAsyncCl +:: + $lolIP +() { + +1085  + `IPAddss +( + `gLolAddss +()); + +1086 + } +} + +1088 +ut16_t + + gAsyncCl +:: + $lolPt +() { + +1089  + `gLolPt +(); + +1090 + } +} + +1092 +ut8_t + + gAsyncCl +:: + $e +() { + +1093 if(! +_pcb +) { + +1096  +_pcb +-> +e +; + +1097 + } +} + +1099 +bo + + gAsyncCl +:: + $ced +(){ + +1100 i(! +_pcb +) { + +1101  +l +; + +1103  +_pcb +-> +e + == 4; + +1104 + } +} + +1106 +bo + + gAsyncCl +:: + $cg +(){ + +1107 i(! +_pcb +) { + +1108  +l +; + +1110  +_pcb +-> +e + > 0 && _pcb->state < 4; + +1111 + } +} + +1113 +bo + + gAsyncCl +:: + $discg +(){ + +1114 i(! +_pcb +) { + +1115  +l +; + +1117  +_pcb +-> +e + > 4 && _pcb->state < 10; + +1118 + } +} + +1120 +bo + + gAsyncCl +:: + $disced +(){ + +1121 i(! +_pcb +) { + +1122  +ue +; + +1124  +_pcb +-> +e + == 0 || _pcb->state == 10; + +1125 + } +} + +1127 +bo + + gAsyncCl +:: + $ab +(){ + +1128 i(! +_pcb +) { + +1129  +ue +; + +1131  +_pcb +-> +e + == 0 || _pcb->state > 4; + +1132 + } +} + +1134 +bo + + gAsyncCl +:: + $nSd +(){ + +1135  + `a +() > 0; + +1136 + } +} + +1138 cڡ * + gAsyncCl +:: + $rToSg +( +t8_t + +r +){ + +1139  +r +){ + +1140  +ERR_OK +:  "OK"; + +1141  +ERR_MEM +:  "Out of memoryrror"; + +1142  +ERR_BUF +:  "Bufferrror"; + +1143  +ERR_TIMEOUT +:  "Timeout"; + +1144  +ERR_RTE +:  "Routingroblem"; + +1145  +ERR_INPROGRESS +:  "Operation inrogress"; + +1146  +ERR_VAL +:  "Illegal value"; + +1147  +ERR_WOULDBLOCK +:  "Operation would block"; + +1148  +ERR_USE +:  "Address in use"; + +1149  +ERR_ALREADY +:  "Already connected"; + +1150  +ERR_CONN +:  "Not connected"; + +1151  +ERR_IF +:  "Low-leveletifrror"; + +1152  +ERR_ABRT +:  "Connectionborted"; + +1153  +ERR_RST +:  "Connectioneset"; + +1154  +ERR_CLSD +:  "Connection closed"; + +1155  +ERR_ARG +:  "Illegalrgument"; + +1159 + } +} + +1161 cڡ * + gAsyncCl +:: + $eToSg +(){ + +1162  + `e +()){ + +1176 + } +} + +1182  + gAsyncCl +:: + $_s_dns_found +(cڡ * +me +,  +_addr + * +addr +, * +g +){ + +1183 +t_ +< +AsyncCl +*>( +g +)-> + `_dns_found +( +addr +); + +1184 + } +} + +1186 +t8_t + + gAsyncCl +:: + $_s_pl +(* +g +,  +t_pcb + * +pcb +) { + +1187  +t_ +< +AsyncCl +*>( +g +)-> + `_pl +( +pcb +); + +1188 + } +} + +1190 +t8_t + + gAsyncCl +:: + $_s_cv +(* +g +,  +t_pcb + * +pcb +,  +pbuf + * +pb +, +t8_t + +r +) { + +1191  +t_ +< +AsyncCl +*>( +g +)-> + `_cv +( +pcb +, +pb +, +r +); + +1192 + } +} + +1194 +t8_t + + gAsyncCl +:: + $_s_f +(* +g +,  +t_pcb + * +pcb +, +t8_t + +r +) { + +1195  +t_ +< +AsyncCl +*>( +g +)-> + `_f +( +pcb +, +r +); + +1196 + } +} + +1198 +t8_t + + gAsyncCl +:: + $_s_lw_f +(* +g +,  +t_pcb + * +pcb +, +t8_t + +r +) { + +1199  +t_ +< +AsyncCl +*>( +g +)-> + `_lw_f +( +pcb +, +r +); + +1200 + } +} + +1202 +t8_t + + gAsyncCl +:: + $_s_ +(* +g +,  +t_pcb + * +pcb +, +ut16_t + +n +) { + +1203  +t_ +< +AsyncCl +*>( +g +)-> + `_ +( +pcb +, +n +); + +1204 + } +} + +1206  + gAsyncCl +:: + $_s_r +(* +g +, +t8_t + +r +) { + +1207 +t_ +< +AsyncCl +*>( +g +)-> + `_r +( +r +); + +1208 + } +} + +1210 +t8_t + + gAsyncCl +:: + $_s_ced +(* +g +, * +pcb +, +t8_t + +r +){ + +1211  +t_ +< +AsyncCl +*>( +g +)-> + `_ced +( +pcb +, +r +); + +1212 + } +} + +1218 + gAsyncSv +:: + $AsyncSv +( +IPAddss + +addr +, +ut16_t + +pt +) + +1219 : + `_pt +( +pt +) + +1220 , + `_addr +( +addr +) + +1221 , + `_noDay +( +l +) + +1222 , + `_pcb +(0) + +1223 , + `_c_cb +(0) + +1224 , + $_c_cb_g +(0) + +1225 { + } +} + +1227 + gAsyncSv +:: + $AsyncSv +( +ut16_t + +pt +) + +1228 : + `_pt +( +pt +) + +1229 , + `_addr +(( +ut32_t + +IPADDR_ANY +) + +1230 , + `_noDay +( +l +) + +1231 , + `_pcb +(0) + +1232 , + `_c_cb +(0) + +1233 , + $_c_cb_g +(0) + +1234 { + } +} + +1236 + gAsyncSv +::~ + $AsyncSv +(){ + +1237 + `d +(); + +1238 + } +} + +1240  + gAsyncSv +:: + $Cl +( +AcCHdr + +cb +, * +g +){ + +1241 +_c_cb + = +cb +; + +1242 +_c_cb_g + = +g +; + +1243 + } +} + +1245  + gAsyncSv +:: + $beg +(){ + +1246 if( +_pcb +) { + +1250 if(! + `_t_async_sk +()){ + +1251 + `log_e +("failedo startask"); + +1254 +t8_t + +r +; + +1255 +_pcb + = + `t_w__ty +( +IPADDR_TYPE_V4 +); + +1256 i(! +_pcb +){ + +1257 + `log_e +("_pcb == NULL"); + +1261 +_addr_t + +lol_addr +; + +1262 +lol_addr +. +ty + = +IPADDR_TYPE_V4 +; + +1263 +lol_addr +. +u_addr +. +4 +. +addr + = ( +ut32_t + +_addr +; + +1264 +r + = + `_t_bd +( +_pcb +, & +lol_addr +, +_pt +); + +1266 i( +r + ! +ERR_OK +) { + +1267 + `_t_o +( +_pcb +, -1); + +1268 + `log_e +("bd: %d", +r +); + +1272  +ut8_t + +backlog + = 5; + +1273 +_pcb + = + `_t_li_wh_backlog +(_pcb, +backlog +); + +1274 i(! +_pcb +) { + +1275 + `log_e +("listen_pcb == NULL"); + +1278 + `t_g +( +_pcb +, (* +this +); + +1279 + `t_ac +( +_pcb +, & +_s_ac +); + +1280 + } +} + +1282  + gAsyncSv +:: + $d +(){ + +1283 if( +_pcb +){ + +1284 + `t_g +( +_pcb +, +NULL +); + +1285 + `t_ac +( +_pcb +, +NULL +); + +1286 if( + `t_o +( +_pcb +! +ERR_OK +){ + +1287 + `_t_abt +( +_pcb +, -1); + +1289 +_pcb + = +NULL +; + +1291 + } +} + +1294 +t8_t + + gAsyncSv +:: + $_ac +( +t_pcb +* +pcb +, +t8_t + +r +){ + +1296 if( +_c_cb +){ + +1297 +AsyncCl + * +c + = +w + + `AsyncCl +( +pcb +); + +1298 if( +c +){ + +1299 +c +-> + `tNoDay +( +_noDay +); + +1300  + `_t_ac +( +this +, +c +); + +1303 if( + `t_o +( +pcb +! +ERR_OK +){ + +1304 + `t_abt +( +pcb +); + +1306 + `log_e +("FAIL"); + +1307  +ERR_OK +; + +1308 + } +} + +1310 +t8_t + + gAsyncSv +:: + $_aced +( +AsyncCl +* + +){ + +1311 if( +_c_cb +){ + +1312 + `_c_cb +( +_c_cb_g +, + +); + +1314  +ERR_OK +; + +1315 + } +} + +1317  + gAsyncSv +:: + $tNoDay +( +bo + +noday +){ + +1318 +_noDay + = +noday +; + +1319 + } +} + +1321 +bo + + gAsyncSv +:: + $gNoDay +(){ + +1322  +_noDay +; + +1323 + } +} + +1325 +ut8_t + + gAsyncSv +:: + $us +(){ + +1326 i(! +_pcb +) { + +1329  +_pcb +-> +e +; + +1330 + } +} + +1332 +t8_t + + gAsyncSv +:: + $_s_ac +(* +g +, +t_pcb + * +pcb +, +t8_t + +r +){ + +1333  +t_ +< +AsyncSv +*>( +g +)-> + `_ac +( +pcb +, +r +); + +1334 + } +} + +1336 +t8_t + + gAsyncSv +:: + $_s_aced +(* +g +, +AsyncCl +* + +){ + +1337  +t_ +< +AsyncSv +*>( +g +)-> + `_aced +( + +); + +1338 + } +} + + @.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.h + +22 #ide +ASYNCTCP_H_ + + +23  + #ASYNCTCP_H_ + + + ) + +25  + ~"IPAddss.h +" + +26  + ~"sdkcfig.h +" + +27  + ~ + +29  + ~"䓹os/mphr.h +" + +30  + ~"lw/pbuf.h +" + +34 #ide +CONFIG_ASYNC_TCP_RUNNING_CORE + + +35  + #CONFIG_ASYNC_TCP_RUNNING_CORE + -1 + +36  + #CONFIG_ASYNC_TCP_USE_WDT + 1 + +38 + + ) + +39 +ass + +AsyncCl +; + +41  + #ASYNC_MAX_ACK_TIME + 5000 + + ) + +42  + #ASYNC_WRITE_FLAG_COPY + 0x01 + +43  + #ASYNC_WRITE_FLAG_MORE + 0x02 + +44 + + ) + +45  + gd +:: + tfuni +<(*, + tAsyncCl +*)> + tAcCHdr +; + +46  + gd +:: + tfuni +<(*, + tAsyncCl +*, + tsize_t + + tn +, + tut32_t + + ttime +)> + tAcAckHdr +; + +47  + gd +:: + tfuni +<(*, + tAsyncCl +*, + tt8_t + + tr +)> + tAcEHdr +; + +48  + gd +:: + tfuni +<(*, + tAsyncCl +*, * + tda +, + tsize_t + + tn +)> + tAcDaHdr +; + +49  + gd +:: + tfuni +<(*, + tAsyncCl +*,  + tpbuf + * + tpb +)> + tAcPackHdr +; + +50  + gd +:: + tfuni +<(*, + tAsyncCl +*, + tut32_t + + ttime +)> + tAcTimeoutHdr +; + +52  + gt_pcb +; + +53  + g_addr +; + +55 as + cAsyncCl + { + +56 + mpublic +: + +57 +AsyncCl +( +t_pcb +* +pcb + = 0); + +58 ~ +AsyncCl +(); + +60 + mAsyncCl + & + mݔ +=(cڡ +AsyncCl + & +h +); + +61 + mAsyncCl + & + mݔ ++=(cڡ +AsyncCl + & +h +); + +63 +bo + + mݔ +==(cڡ +AsyncCl + & +h +); + +65 +bo + + mݔ +!=(cڡ +AsyncCl + & +h +) { + +66  !(* +this + = +h +); + +68 +bo + +c +( +IPAddss + + +, +ut16_t + +pt +); + +69 +bo + +c +(cڡ * +ho +, +ut16_t + +pt +); + +70  +o +( +bo + +now + = +l +); + +71  + +(); + +72 +t8_t + +abt +(); + +73 +bo + + +(); + +75 +bo + +nSd +(); + +76 +size_t + +a +(); + +77 +size_t + +add +(cڡ * +da +, size_ +size +, +ut8_t + +iags += +ASYNC_WRITE_FLAG_COPY +); + +78 +bo + +nd +(); + +81 +size_t + +wre +(cڡ * +da +); + +82 +size_t + +wre +(cڡ * +da +, size_ +size +, +ut8_t + +iags += +ASYNC_WRITE_FLAG_COPY +); + +84 +ut8_t + +e +(); + +85 +bo + +cg +(); + +86 +bo + +ced +(); + +87 +bo + +discg +(); + +88 +bo + +disced +(); + +89 +bo + +ab +(); + +91 +ut16_t + +gMss +(); + +93 +ut32_t + +gRxTimeout +(); + +94  +tRxTimeout +( +ut32_t + +timeout +); + +96 +ut32_t + +gAckTimeout +(); + +97  +tAckTimeout +( +ut32_t + +timeout +); + +99  +tNoDay +( +bo + +noday +); + +100 +bo + +gNoDay +(); + +102 +ut32_t + +gRemeAddss +(); + +103 +ut16_t + +gRemePt +(); + +104 +ut32_t + +gLolAddss +(); + +105 +ut16_t + +gLolPt +(); + +108 +IPAddss + +meIP +(); + +109 +ut16_t + +mePt +(); + +110 +IPAddss + +lolIP +(); + +111 +ut16_t + +lolPt +(); + +113  +C +( +AcCHdr + +cb +, * +g + = 0); + +114  +Disc +( +AcCHdr + +cb +, * +g + = 0); + +115  +Ack +( +AcAckHdr + +cb +, * +g + = 0); + +116  +E +( +AcEHdr + +cb +, * +g + = 0); + +117  +Da +( +AcDaHdr + +cb +, * +g + = 0); + +118  +Pack +( +AcPackHdr + +cb +, * +g + = 0); + +119  +Timeout +( +AcTimeoutHdr + +cb +, * +g + = 0); + +120  +Pl +( +AcCHdr + +cb +, * +g + = 0); + +122  +ackPack +( +pbuf + * +pb +); + +123 +size_t + +ack +(size_ +n +); + +124  + $ackL +(){ +_ack_pcb + = +l +; + } +} + +126 cڡ * +rToSg +( +t8_t + +r +); + +127 cڡ * +eToSg +(); + +130  +t8_t + +_s_pl +(* +g +,  +t_pcb + * +cb +); + +131  +t8_t + +_s_cv +(* +g +,  +t_pcb + * +cb +,  +pbuf + * +pb +, i8_ +r +); + +132  +t8_t + +_s_f +(* +g +,  +t_pcb + * +cb +, i8_ +r +); + +133  +t8_t + +_s_lw_f +(* +g +,  +t_pcb + * +cb +, i8_ +r +); + +134  +_s_r +(* +g +, +t8_t + +r +); + +135  +t8_t + +_s_ +(* +g +,  +t_pcb + * +cb +, +ut16_t + +n +); + +136  +t8_t + +_s_ced +(* +g +, * +cb +, i8_ +r +); + +137  +_s_dns_found +(cڡ * +me +,  +_addr + * +addr +, * +g +); + +139 +t8_t + +_cv +( +t_pcb +* +pcb +, +pbuf +* +pb +, i8_ +r +); + +140 +t_pcb + * + $pcb +(){  +_pcb +; + } +} + +142 + geed +: + +143 +t_pcb +* +_pcb +; + +144 +t8_t + + g_od_ +; + +146 +AcCHdr + + g_c_cb +; + +147 * + g_c_cb_g +; + +148 +AcCHdr + + g_disrd_cb +; + +149 * + g_disrd_cb_g +; + +150 +AcAckHdr + + g__cb +; + +151 * + g__cb_g +; + +152 +AcEHdr + + g_r_cb +; + +153 * + g_r_cb_g +; + +154 +AcDaHdr + + g_cv_cb +; + +155 * + g_cv_cb_g +; + +156 +AcPackHdr + + g_pb_cb +; + +157 * + g_pb_cb_g +; + +158 +AcTimeoutHdr + + g_timeout_cb +; + +159 * + g_timeout_cb_g +; + +160 +AcCHdr + + g_pl_cb +; + +161 * + g_pl_cb_g +; + +163 +bo + + g_pcb_busy +; + +164 +ut32_t + + g_pcb__ +; + +165 +bo + + g_ack_pcb +; + +166 +ut32_t + + g_rx_ack_n +; + +167 +ut32_t + + g_rx_ϡ_ck +; + +168 +ut32_t + + g_rx_s_timeout +; + +169 +ut32_t + + g_ack_timeout +; + +170 +ut16_t + + g_c_pt +; + +172 +t8_t + +_o +(); + +173 +t8_t + +_ced +(* +pcb +, i8_ +r +); + +174  +_r +( +t8_t + +r +); + +175 +t8_t + +_pl +( +t_pcb +* +pcb +); + +176 +t8_t + +_ +( +t_pcb +* +pcb +, +ut16_t + +n +); + +177 +t8_t + +_f +( +t_pcb +* +pcb +, i8_ +r +); + +178 +t8_t + +_lw_f +( +t_pcb +* +pcb +, i8_ +r +); + +179  +_dns_found +( +_addr + * +addr +); + +181 + gpublic +: + +182 +AsyncCl +* +ev +; + +183 +AsyncCl +* + gxt +; + +186 as + cAsyncSv + { + +187 + mpublic +: + +188 +AsyncSv +( +IPAddss + +addr +, +ut16_t + +pt +); + +189 +AsyncSv +( +ut16_t + +pt +); + +190 ~ +AsyncSv +(); + +191  +Cl +( +AcCHdr + +cb +, * +g +); + +192  +beg +(); + +193  +d +(); + +194  +tNoDay +( +bo + +noday +); + +195 +bo + +gNoDay +(); + +196 +ut8_t + +us +(); + +199  +t8_t + +_s_ac +(* +g +, +t_pcb +* +wpcb +, i8_ +r +); + +200  +t8_t + +_s_aced +(* +g +, +AsyncCl +* + +); + +202 + meed +: + +203 +ut16_t + +_pt +; + +204 +IPAddss + + m_addr +; + +205 +bo + + m_noDay +; + +206 +t_pcb +* + m_pcb +; + +207 +AcCHdr + + m_c_cb +; + +208 * + m_c_cb_g +; + +210 +t8_t + +_ac +( +t_pcb +* +wpcb +, i8_ +r +); + +211 +t8_t + +_aced +( +AsyncCl +* + +); + + @.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h + +1 #ide +CONFIG_H + + +2  + #CONFIG_H + + + ) + +15  + #SSID + "ESP-TEST" + + ) + +16  + #PASSWORD + "123456789" + + ) + +18  + #SERVER_HOST_NAME + "e_rv" + + ) + +20  + #TCP_PORT + 7050 + + ) + +21  + #DNS_PORT + 53 + + ) + + @.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h + +1 #ide +CONFIG_H + + +2  + #CONFIG_H + + + ) + +15  + #SSID + "ESP-TEST" + + ) + +16  + #PASSWORD + "123456789" + + ) + +18  + #SERVER_HOST_NAME + "e_rv" + + ) + +20  + #TCP_PORT + 7050 + + ) + +21  + #DNS_PORT + 53 + + ) + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp + +22  + ~"AsyncPrr.h +" + +24 + gAsyncPrr +:: + $AsyncPrr +() + +25 : + `_ +( +NULL +) + +26 , + `_da_cb +( +NULL +) + +27 , + `_da_g +( +NULL +) + +28 , + `_o_cb +( +NULL +) + +29 , + `_o_g +( +NULL +) + +30 , + `_tx_bufr +( +NULL +) + +31 , + `_tx_bufr_size +(1460) + +32 , + $xt +( +NULL +) + +33 { + } +} + +35 + gAsyncPrr +:: + $AsyncPrr +( +AsyncCl + * + +, +size_t + +txBufL +) + +36 : + `_ +( + +) + +37 , + `_da_cb +( +NULL +) + +38 , + `_da_g +( +NULL +) + +39 , + `_o_cb +( +NULL +) + +40 , + `_o_g +( +NULL +) + +41 , + `_tx_bufr +( +NULL +) + +42 , + `_tx_bufr_size +( +txBufL +) + +43 , + $xt +( +NULL +) + +45 + `_chClbacks +(); + +46 +_tx_bufr + = +w + + `cbuf +( +_tx_bufr_size +); + +47 + } +} + +49 + gAsyncPrr +::~ + $AsyncPrr +(){ + +50 + `__o +(); + +51 + } +} + +53  + gAsyncPrr +:: + $Da +( +ApDaHdr + +cb +, * +g +){ + +54 +_da_cb + = +cb +; + +55 +_da_g + = +g +; + +56 + } +} + +58  + gAsyncPrr +:: + $Clo +( +ApCloHdr + +cb +, * +g +){ + +59 +_o_cb + = +cb +; + +60 +_o_g + = +g +; + +61 + } +} + +63  + gAsyncPrr +:: + $c +( +IPAddss + + +, +ut16_t + +pt +){ + +64 if( +_ + ! +NULL + && + `ced +()) + +66 +_ + = +w + + `AsyncCl +(); + +67 +_ +-> + `C +([](* +obj +, +AsyncCl + * +c +){ (( +AsyncPrr +*)(obj))-> + `_C +(c); }, +this +); + +68 if( +_ +-> + `c +( + +, +pt +)){ + +69  +_ +-> + `e +() < 4) + +70 + `day +(1); + +71  + `ced +(); + +74 + } +} + +76  + gAsyncPrr +:: + $c +(cڡ * +ho +, +ut16_t + +pt +){ + +77 if( +_ + ! +NULL + && + `ced +()) + +79 +_ + = +w + + `AsyncCl +(); + +80 +_ +-> + `C +([](* +obj +, +AsyncCl + * +c +){ (( +AsyncPrr +*)(obj))-> + `_C +(c); }, +this +); + +81 if( +_ +-> + `c +( +ho +, +pt +)){ + +82  +_ +-> + `e +() < 4) + +83 + `day +(1); + +84  + `ced +(); + +87 + } +} + +89  + gAsyncPrr +:: + $_C +( +AsyncCl + * +c +){ + +90 if( +_tx_bufr + ! +NULL +){ + +91 +cbuf + * +b + = +_tx_bufr +; + +92 +_tx_bufr + = +NULL +; + +93 +de + +b +; + +95 +_tx_bufr + = +w + + `cbuf +( +_tx_bufr_size +); + +96 + `_chClbacks +(); + +97 + } +} + +99 + gAsyncPrr +:: +ݔ + + $bo +(){  + `ced +(); + } +} + +101 + gAsyncPrr + & AsyncPrr:: +ݔ +=(cڡ +AsyncPrr + & +h +){ + +102 if( +_ + ! +NULL +){ + +103 +_ +-> +o +( +ue +); + +104 + g_ + = +NULL +; + +106 + g_tx_bufr_size + = +h +. +_tx_bufr_size +; + +107 if( + g_tx_bufr + ! +NULL +){ + +108 +cbuf + * +b + = +_tx_bufr +; + +109 + g_tx_bufr + = +NULL +; + +110 +de + + gb +; + +112 + g_tx_bufr + = +w + +cbuf +( +h +. +_tx_bufr_size +); + +113 + g_ + = +h +. +_ +; + +114 +_chClbacks +(); + +115  * + gthis +; + +118 +size_t + + gAsyncPrr +:: + $wre +( +ut8_t + +da +){ + +119  + `wre +(& +da +, 1); + +120 + } +} + +122 +size_t + + gAsyncPrr +:: + $wre +(cڡ +ut8_t + * +da +, +size_t + +n +){ + +123 if( +_tx_bufr + = +NULL + || ! + `ced +()) + +125 +size_t + +toWre + = 0; + +126 +size_t + +toSd + = +n +; + +127  +_tx_bufr +-> + `room +(< +toSd +){ + +128 +toWre + = +_tx_bufr +-> + `room +(); + +129 +_tx_bufr +-> + `wre +((cڡ *) +da +, +toWre +); + +130 ! +_ +-> + `nSd +()) + +131 + `day +(0); + +132 + `_ndBufr +(); + +133 +toSd + - +toWre +; + +135 +_tx_bufr +-> + `wre +((cڡ *)( +da ++( +n + - +toSd +)),oSend); + +136 ! +_ +-> + `nSd +() + `day +(0); + +137 + `_ndBufr +(); + +138  +n +; + +139 + } +} + +141 +bo + + gAsyncPrr +:: + $ced +(){ + +142  ( +_ + ! +NULL + && _-> + `ced +()); + +143 + } +} + +145  + gAsyncPrr +:: + $o +(){ + +146 if( +_ + ! +NULL +) + +147 +_ +-> + `o +( +ue +); + +148 + } +} + +150 +size_t + + gAsyncPrr +:: + $_ndBufr +(){ + +151 +size_t + +avaab + = +_tx_bufr +-> + `avaab +(); + +152 if(! + `ced +(|| ! +_ +-> + `nSd +(|| +avaab + == 0) + +154 +size_t + +ndab + = +_ +-> + `a +(); + +155 if( +ndab + < +avaab +) + +156 +avaab + +ndab +; + +157 * +out + = +w + [ +avaab +]; + +158 +_tx_bufr +-> + `ad +( +out +, +avaab +); + +159 +size_t + + + = +_ +-> + `wre +( +out +, +avaab +); + +160 +de + +out +; + +161  + +; + +162 + } +} + +164  + gAsyncPrr +:: + $_Da +(* +da +, +size_t + +n +){ + +165 if( +_da_cb +) + +166 + `_da_cb +( +_da_g +, +this +, ( +ut8_t +*) +da +, +n +); + +167 + } +} + +169  + gAsyncPrr +:: + $__o +(){ + +170 if( +_ + ! +NULL +){ + +171 +_ + = +NULL +; + +173 if( +_tx_bufr + ! +NULL +){ + +174 +cbuf + * +b + = +_tx_bufr +; + +175 +_tx_bufr + = +NULL +; + +176 +de + +b +; + +178 if( +_o_cb +) + +179 + `_o_cb +( +_o_g +, +this +); + +180 + } +} + +182  + gAsyncPrr +:: + $_chClbacks +(){ + +183 +_ +-> + `Pl +([](* +obj +, +AsyncCl +* +c +){ (( +AsyncPrr +*)(obj))-> + `_ndBufr +(); }, +this +); + +184 +_ +-> + `Ack +([](* +obj +, +AsyncCl +* +c +, +size_t + +n +, +ut32_t + +time +){ (( +AsyncPrr +*)(obj))-> + `_ndBufr +(); }, +this +); + +185 +_ +-> + `Disc +([](* +obj +, +AsyncCl +* +c +){ (( +AsyncPrr +*)(obj))-> + `__o +(); +de + c; }, +this +); + +186 +_ +-> + `Da +([](* +obj +, +AsyncCl +* +c +, * +da +, +size_t + +n +){ (( +AsyncPrr +*)(obj))-> + `_Da +(da,); }, +this +); + +187 + } +} + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h + +22 #ide +ASYNCPRINTER_H_ + + +23  + #ASYNCPRINTER_H_ + + + ) + +25  + ~"Arduo.h +" + +26  + ~"ESPAsyncTCP.h +" + +27  + ~"cbuf.h +" + +29 +ass + + gAsyncPrr +; + +31  + gd +:: + tfuni +<(*, + tAsyncPrr +*, + tut8_t +*, + tsize_t +)> + tApDaHdr +; + +32  + gd +:: + tfuni +<(*, + tAsyncPrr +*)> + tApCloHdr +; + +34 as + cAsyncPrr +: +public + +Prt + { + +35 +ive +: + +36 +AsyncCl + * +_ +; + +37 +ApDaHdr + + m_da_cb +; + +38 * + m_da_g +; + +39 +ApCloHdr + + m_o_cb +; + +40 * + m_o_g +; + +41 +cbuf + * + m_tx_bufr +; + +42 +size_t + + m_tx_bufr_size +; + +44  +_C +( +AsyncCl + * +c +); + +45 + mpublic +: + +46 +AsyncPrr + * +xt +; + +48 +AsyncPrr +(); + +49 +AsyncPrr +( +AsyncCl + * + +, +size_t + +txBufL + = 1460); + +50 + mvtu + ~ +AsyncPrr +(); + +52  +c +( +IPAddss + + +, +ut16_t + +pt +); + +53  +c +(cڡ * +ho +, +ut16_t + +pt +); + +55  +Da +( +ApDaHdr + +cb +, * +g +); + +56  +Clo +( +ApCloHdr + +cb +, * +g +); + +58 +ݔ + +bo +(); + +59 + mAsyncPrr + & + mݔ +=(cڡ +AsyncPrr + & +h +); + +61 +size_t + +wre +( +ut8_t + +da +); + +62 +size_t + +wre +(cڡ +ut8_t + * +da +, size_ +n +); + +64 +bo + +ced +(); + +65  +o +(); + +67 +size_t + +_ndBufr +(); + +68  +_Da +(* +da +, +size_t + +n +); + +69  +__o +(); + +70  +_chClbacks +(); + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp + +22  + ~"Arduo.h +" + +24  + ~"ESPAsyncTCP.h +" + +26  + ~"lw/t.h +" + +27  + ~"lw/t.h +" + +28  + ~"lw/.h +" + +29  + ~"lw/dns.h +" + +30  + ~"lw/.h +" + +32  + ~ + +38 #i +ASYNC_TCP_SSL_ENABLED + + +39 +AsyncCl +:: + $AsyncCl +( +t_pcb +* +pcb +, +SSL_CTX + * +s_x +): + +41 +AsyncCl +:: + $AsyncCl +( +t_pcb +* +pcb +): + +43 + `_c_cb +(0) + +44 , + `_c_cb_g +(0) + +45 , + `_disrd_cb +(0) + +46 , + `_disrd_cb_g +(0) + +47 , + `__cb +(0) + +48 , + `__cb_g +(0) + +49 , + `_r_cb +(0) + +50 , + `_r_cb_g +(0) + +51 , + `_cv_cb +(0) + +52 , + `_cv_cb_g +(0) + +53 , + `_pb_cb +(0) + +54 , + `_pb_cb_g +(0) + +55 , + `_timeout_cb +(0) + +56 , + `_timeout_cb_g +(0) + +57 , + $_pcb_busy +( +l +) + +58 #i +ASYNC_TCP_SSL_ENABLED + + +59 , + `_pcb_cu +( +l +) + +60 , + $_hdshake_de +( +ue +) + +62 , + `_pcb__ +(0) + +63 , + `_o_pcb +( +l +) + +64 , + `_ack_pcb +( +ue +) + +65 , + `_tx_ucked_n +(0) + +66 , + `_tx_acked_n +(0) + +67 , + `_tx_un_n +(0) + +68 , + `_rx_ϡ_ck +(0) + +69 , + `_rx_s_timeout +(0) + +70 , + `_ack_timeout +( +ASYNC_MAX_ACK_TIME +) + +71 , + `_c_pt +(0) + +72 , + `ev +( +NULL +) + +73 , + $xt +( +NULL +) + +75 +_pcb + = +pcb +; + +76 if( +_pcb +){ + +77 +_rx_ϡ_ck + = + `mlis +(); + +78 + `t_rio +( +_pcb +, +TCP_PRIO_MIN +); + +79 + `t_g +( +_pcb +, +this +); + +80 + `t_cv +( +_pcb +, & +_s_cv +); + +81 + `t_ +( +_pcb +, & +_s_ +); + +82 + `t_r +( +_pcb +, & +_s_r +); + +83 + `t_pl +( +_pcb +, & +_s_pl +, 1); + +84 #i +ASYNC_TCP_SSL_ENABLED + + +85 if( +s_x +){ + +86 if( + `t_s_w_rv +( +_pcb +, +s_x +) < 0){ + +87 + `_o +(); + +90 + `t_s_g +( +_pcb +, +this +); + +91 + `t_s_da +( +_pcb +, & +_s_da +); + +92 + `t_s_hdshake +( +_pcb +, & +_s_hdshake +); + +93 + `t_s_r +( +_pcb +, & +_s_s_r +); + +95 +_pcb_cu + = +ue +; + +96 +_hdshake_de + = +l +; + +100 + } +} + +102 +AsyncCl +::~ + $AsyncCl +(){ + +103 if( +_pcb +) + +104 + `_o +(); + +105 + } +} + +107 #i +ASYNC_TCP_SSL_ENABLED + + +108 +bo + +AsyncCl +:: + $c +( +IPAddss + + +, +ut16_t + +pt +, +bo + +cu +){ + +110 +bo + +AsyncCl +:: + $c +( +IPAddss + + +, +ut16_t + +pt +){ + +112 i( +_pcb +) + +113  +l +; + +114 +_addr_t + +addr +; + +115 +addr +.add + +; + +116 #i +LWIP_VERSION_MAJOR + == 1 + +117 +tif +* +r + = + `_rou +(& +addr +); + +118 i(! +r +){ + +119  +l +; + +122 +t_pcb +* +pcb + = + `t_w +(); + +123 i(! +pcb +){ + +124  +l +; + +127 #i +ASYNC_TCP_SSL_ENABLED + + +128 +_pcb_cu + = +cu +; + +129 +_hdshake_de + = ! +cu +; + +131 + `t_g +( +pcb +, +this +); + +132 + `t_r +( +pcb +, & +_s_r +); + +133 + `t_c +( +pcb +, & +addr +, +pt +,( +t_ced_ +)& +_s_ced +); + +134  +ue +; + +135 + } +} + +137 #i +ASYNC_TCP_SSL_ENABLED + + +138 +bo + +AsyncCl +:: + $c +(cڡ * +ho +, +ut16_t + +pt +, +bo + +cu +){ + +140 +bo + +AsyncCl +:: + $c +(cڡ * +ho +, +ut16_t + +pt +){ + +142 +_addr_t + +addr +; + +143 +r_t + +r + = + `dns_ghobyme +( +ho +, & +addr +, ( +dns_found_back +)& +_s_dns_found +, +this +); + +144 if( +r + = +ERR_OK +) { + +145 #i +ASYNC_TCP_SSL_ENABLED + + +146  + `c +( + `IPAddss +( +addr +.addr), +pt +, +cu +); + +148  + `c +( + `IPAddss +( +addr +.addr), +pt +); + +150 } if( +r + = +ERR_INPROGRESS +) { + +151 #i +ASYNC_TCP_SSL_ENABLED + + +152 +_pcb_cu + = +cu +; + +153 +_hdshake_de + = ! +cu +; + +155 +_c_pt + = +pt +; + +156  +ue +; + +158  +l +; + +159 + } +} + +161 +AsyncCl +& AsyncCl:: +ݔ +=(cڡ AsyncCl& +h +){ + +162 i( +_pcb +) + +163 +_o +(); + +165 +_pcb + = +h +._pcb; + +166 i( +_pcb +) { + +167 +_rx_ϡ_ck + = +mlis +(); + +168 +t_rio +( +_pcb +, +TCP_PRIO_MIN +); + +169 +t_g +( +_pcb +, +this +); + +170 +t_cv +( +_pcb +, & +_s_cv +); + +171 +t_ +( +_pcb +, & +_s_ +); + +172 +t_r +( +_pcb +, & +_s_r +); + +173 +t_pl +( +_pcb +, & +_s_pl +, 1); + +174 #i +ASYNC_TCP_SSL_ENABLED + + +175 if( +t_s_has +( +_pcb +)){ + +176 +_pcb_cu + = +ue +; + +177 +_hdshake_de + = +l +; + +178 +t_s_g +( +_pcb +, +this +); + +179 +t_s_da +( +_pcb +, & +_s_da +); + +180 +t_s_hdshake +( +_pcb +, & +_s_hdshake +); + +181 +t_s_r +( +_pcb +, & +_s_s_r +); + +183 +_pcb_cu + = +l +; + +184 +_hdshake_de + = +ue +; + +188  * +this +; + +191 +bo + +AsyncCl +:: +ݔ +==(cڡ AsyncCl & +h +) { + +192  ( +_pcb + ! +NULL + && +h +._pcb !NULL && (_pcb-> +me_ +. +addr + =h._pcb->me_.addr&& (_pcb-> +me_pt + == other._pcb->remote_port)); + +195 +t8_t + +AsyncCl +:: + $abt +(){ + +196 if( +_pcb +) { + +197 + `t_abt +( +_pcb +); + +198 +_pcb + = +NULL +; + +200  +ERR_ABRT +; + +201 + } +} + +203  +AsyncCl +:: + $o +( +bo + +now +){ + +204 if( +_pcb +) + +205 + `t_cved +( +_pcb +, +_rx_ack_n +); + +206 if( +now +) + +207 + `_o +(); + +209 +_o_pcb + = +ue +; + +210 + } +} + +212  +AsyncCl +:: + $ +() { + +213 + `o +( +l +); + +214 + } +} + +216 +bo + +AsyncCl +:: + $ +(){ + +217 if(! +_pcb +) + +218  +ue +; + +219 if( +_pcb +-> +e + == 0 || _pcb->state > 4) + +220  +ue +; + +221  +l +; + +222 + } +} + +224 +size_t + +AsyncCl +:: + $wre +(cڡ * +da +) { + +225 if( +da + = +NULL +) + +227  + `wre +( +da +, + ` +(data)); + +228 + } +} + +230 +size_t + +AsyncCl +:: + $wre +(cڡ * +da +, +size_t + +size +, +ut8_t + +iags +) { + +231 +size_t + +wl_nd + = + `add +( +da +, +size +, +iags +); + +232 if(! +wl_nd + || ! + `nd +()) + +234  +wl_nd +; + +235 + } +} + +237 +size_t + +AsyncCl +:: + $add +(cڡ * +da +, +size_t + +size +, +ut8_t + +iags +) { + +238 if(! +_pcb + || +size + =0 || +da + = +NULL +) + +240 +size_t + +room + = + `a +(); + +241 if(! +room +) + +243 #i +ASYNC_TCP_SSL_ENABLED + + +244 if( +_pcb_cu +){ + +245  + + = + `t_s_wre +( +_pcb +, ( +ut8_t +*) +da +, +size +); + +246 if( + + >= 0){ + +247 +_tx_ucked_n + + + +; + +248  + +; + +250 + `_o +(); + +254 +size_t + +wl_nd + = ( +room + < +size +) ?oom : size; + +255 +t8_t + +r + = + `t_wre +( +_pcb +, +da +, +wl_nd +, +iags +); + +256 if( +r + ! +ERR_OK +) + +258 +_tx_un_n + + +wl_nd +; + +259  +wl_nd +; + +260 + } +} + +262 +bo + +AsyncCl +:: + $nd +(){ + +263 #i +ASYNC_TCP_SSL_ENABLED + + +264 if( +_pcb_cu +) + +265  +ue +; + +267 if( + `t_ouut +( +_pcb += +ERR_OK +){ + +268 +_pcb_busy + = +ue +; + +269 +_pcb__ + = + `mlis +(); + +270 +_tx_ucked_n + + +_tx_un_n +; + +271 +_tx_un_n + = 0; + +272  +ue +; + +274 +_tx_un_n + = 0; + +275  +l +; + +276 + } +} + +278 +size_t + +AsyncCl +:: + $ack +( +size_t + +n +){ + +279 if( +n + > +_rx_ack_n +) + +280 +n + = +_rx_ack_n +; + +281 if( +n +) + +282 + `t_cved +( +_pcb +, +n +); + +283 +_rx_ack_n + - +n +; + +284  +n +; + +285 + } +} + +289 +r_t + +AsyncCl +:: + $_ced +(* +pcb +, +r_t + +r +){ + +290 +_pcb + = +t_ +< +t_pcb +*>( +pcb +); + +291 if( +_pcb +){ + +292 +_pcb_busy + = +l +; + +293 +_rx_ϡ_ck + = + `mlis +(); + +294 + `t_rio +( +_pcb +, +TCP_PRIO_MIN +); + +295 + `t_cv +( +_pcb +, & +_s_cv +); + +296 + `t_ +( +_pcb +, & +_s_ +); + +297 + `t_pl +( +_pcb +, & +_s_pl +, 1); + +298 #i +ASYNC_TCP_SSL_ENABLED + + +299 if( +_pcb_cu +){ + +300 if( + `t_s_w_ +( +_pcb +) < 0){ + +301  + `_o +(); + +303 + `t_s_g +( +_pcb +, +this +); + +304 + `t_s_da +( +_pcb +, & +_s_da +); + +305 + `t_s_hdshake +( +_pcb +, & +_s_hdshake +); + +306 + `t_s_r +( +_pcb +, & +_s_s_r +); + +309 if(! +_pcb_cu + && +_c_cb +) + +312 if( +_c_cb +) + +314 + `_c_cb +( +_c_cb_g +, +this +); + +315  +ERR_OK +; + +316 + } +} + +318 +t8_t + +AsyncCl +:: + $_o +(){ + +319 +t8_t + +r + = +ERR_OK +; + +320 if( +_pcb +) { + +321 #i +ASYNC_TCP_SSL_ENABLED + + +322 if( +_pcb_cu +){ + +323 + `t_s_ +( +_pcb +); + +326 + `t_g +( +_pcb +, +NULL +); + +327 + `t_ +( +_pcb +, +NULL +); + +328 + `t_cv +( +_pcb +, +NULL +); + +329 + `t_r +( +_pcb +, +NULL +); + +330 + `t_pl +( +_pcb +, +NULL +, 0); + +331 +r + = + `t_o +( +_pcb +); + +332 if( +r + ! +ERR_OK +) { + +333 +r + = + `abt +(); + +335 +_pcb + = +NULL +; + +336 if( +_disrd_cb +) + +337 + `_disrd_cb +( +_disrd_cb_g +, +this +); + +339  +r +; + +340 + } +} + +342  +AsyncCl +:: + $_r +( +r_t + +r +) { + +343 if( +_pcb +){ + +344 #i +ASYNC_TCP_SSL_ENABLED + + +345 if( +_pcb_cu +){ + +346 + `t_s_ +( +_pcb +); + +349 + `t_g +( +_pcb +, +NULL +); + +350 + `t_ +( +_pcb +, +NULL +); + +351 + `t_cv +( +_pcb +, +NULL +); + +352 + `t_r +( +_pcb +, +NULL +); + +353 + `t_pl +( +_pcb +, +NULL +, 0); + +354 +_pcb + = +NULL +; + +356 if( +_r_cb +) + +357 + `_r_cb +( +_r_cb_g +, +this +, +r +); + +358 if( +_disrd_cb +) + +359 + `_disrd_cb +( +_disrd_cb_g +, +this +); + +360 + } +} + +362 #i +ASYNC_TCP_SSL_ENABLED + + +363  +AsyncCl +:: + $_s_r +( +t8_t + +r +){ + +364 if( +_r_cb +) + +365 + `_r_cb +( +_r_cb_g +, +this +, +r ++64); + +366 + } +} + +369 +r_t + +AsyncCl +:: + $_ +( +t_pcb +* +pcb +, +ut16_t + +n +) { + +370 #i +ASYNC_TCP_SSL_ENABLED + + +371 i( +_pcb_cu + && ! +_hdshake_de +) + +372  +ERR_OK +; + +374 +_rx_ϡ_ck + = + `mlis +(); + +375 +_tx_ucked_n + - +n +; + +376 +_tx_acked_n + + +n +; + +377 + `ASYNC_TCP_DEBUG +("_: %u (%d %d)\n", +n +, +_tx_ucked_n +, +_tx_acked_n +); + +378 if( +_tx_ucked_n + == 0){ + +379 +_pcb_busy + = +l +; + +380 if( +__cb +) + +381 + `__cb +( +__cb_g +, +this +, +_tx_acked_n +, ( + `mlis +(- +_pcb__ +)); + +382 +_tx_acked_n + = 0; + +384  +ERR_OK +; + +385 + } +} + +387 +r_t + +AsyncCl +:: + $_cv +( +t_pcb +* +pcb +, +pbuf +* +pb +, +r_t + +r +) { + +388 if( +pb + = +NULL +){ + +389 + `ASYNC_TCP_DEBUG +("_cv:b =NULL! Closg... %d\n", +r +); + +390  + `_o +(); + +393 +_rx_ϡ_ck + = + `mlis +(); + +394 #i +ASYNC_TCP_SSL_ENABLED + + +395 if( +_pcb_cu +){ + +396 + `ASYNC_TCP_DEBUG +("_cv: %d\n", +pb +-> +t_n +); + +397  +ad_bys + = + `t_s_ad +( +pcb +, +pb +); + +398 if( +ad_bys + < 0){ + +399 i( +ad_bys + ! +SSL_CLOSE_NOTIFY +) { + +400 + `ASYNC_TCP_DEBUG +("_cv: %d\n", +ad_bys +); + +401 + `_o +(); + +405  +ERR_OK +; + +408  +pb + ! +NULL +){ + +410 +_ack_pcb + = +ue +; + +411 +pbuf + * +b + = +pb +; + +412 +pb + = +b +-> +xt +; + +413 +b +-> +xt + = +NULL +; + +414 + `ASYNC_TCP_DEBUG +("_cv: %d\n", +b +-> +n +); + +415 if( +_pb_cb +){ + +416 + `_pb_cb +( +_pb_cb_g +, +this +, +b +); + +418 if( +_cv_cb +) + +419 + `_cv_cb +( +_cv_cb_g +, +this +, +b +-> +yld +, b-> +n +); + +420 if(! +_ack_pcb +) + +421 +_rx_ack_n + + +b +-> +n +; + +423 + `t_cved +( +pcb +, +b +-> +n +); + +424 + `pbuf_ +( +b +); + +427  +ERR_OK +; + +428 + } +} + +430 +r_t + +AsyncCl +:: + $_pl +( +t_pcb +* +pcb +){ + +432 if( +_o_pcb +){ + +433 +_o_pcb + = +l +; + +434 + `_o +(); + +435  +ERR_OK +; + +437 +ut32_t + +now + = + `mlis +(); + +440 if( +_pcb_busy + && +_ack_timeout + && ( +now + - +_pcb__ +) >= _ack_timeout){ + +441 +_pcb_busy + = +l +; + +442 if( +_timeout_cb +) + +443 + `_timeout_cb +( +_timeout_cb_g +, +this +, ( +now + - +_pcb__ +)); + +444  +ERR_OK +; + +447 if( +_rx_s_timeout + && ( +now + - +_rx_ϡ_ck +) >= (_rx_since_timeout * 1000)){ + +448 + `_o +(); + +449  +ERR_OK +; + +451 #i +ASYNC_TCP_SSL_ENABLED + + +453 if( +_pcb_cu + && ! +_hdshake_de + && ( +now + - +_rx_ϡ_ck +) >= 2000){ + +454 + `_o +(); + +455  +ERR_OK +; + +459 if( +_pl_cb +) + +460 + `_pl_cb +( +_pl_cb_g +, +this +); + +461  +ERR_OK +; + +462 + } +} + +464 #i +LWIP_VERSION_MAJOR + == 1 + +465  +AsyncCl +:: + $_dns_found +( +_addr + * +addr +){ + +467  +AsyncCl +:: + $_dns_found +(cڡ +_addr + * +addr +){ + +469 if( +addr +){ + +470 #i +ASYNC_TCP_SSL_ENABLED + + +471 + `c +( + `IPAddss +( +addr +-> +addr +), +_c_pt +, +_pcb_cu +); + +473 + `c +( + `IPAddss +( +addr +-> +addr +), +_c_pt +); + +476 if( +_r_cb +) + +477 + `_r_cb +( +_r_cb_g +, +this +, -55); + +478 if( +_disrd_cb +) + +479 + `_disrd_cb +( +_disrd_cb_g +, +this +); + +481 + } +} + +484 #i +LWIP_VERSION_MAJOR + == 1 + +485  +AsyncCl +:: + $_s_dns_found +(cڡ * +me +, +_addr_t + * +addr +, * +g +){ + +487  +AsyncCl +:: + $_s_dns_found +(cڡ * +me +, cڡ +_addr + * +addr +, * +g +){ + +489 +t_ +< +AsyncCl +*>( +g +)-> + `_dns_found +( +addr +); + +490 + } +} + +492 +r_t + +AsyncCl +:: + $_s_pl +(* +g +,  +t_pcb + * +cb +) { + +493  +t_ +< +AsyncCl +*>( +g +)-> + `_pl +( +cb +); + +494 + } +} + +496 +r_t + +AsyncCl +:: + $_s_cv +(* +g +,  +t_pcb + * +cb +,  +pbuf + * +pb +, +r_t + +r +) { + +497  +t_ +< +AsyncCl +*>( +g +)-> + `_cv +( +cb +, +pb +, +r +); + +498 + } +} + +500  +AsyncCl +:: + $_s_r +(* +g +, +r_t + +r +) { + +501 +t_ +< +AsyncCl +*>( +g +)-> + `_r +( +r +); + +502 + } +} + +504 +r_t + +AsyncCl +:: + $_s_ +(* +g +,  +t_pcb + * +cb +, +ut16_t + +n +) { + +505  +t_ +< +AsyncCl +*>( +g +)-> + `_ +( +cb +, +n +); + +506 + } +} + +508 +r_t + +AsyncCl +:: + $_s_ced +(* +g +, * +cb +, +r_t + +r +){ + +509  +t_ +< +AsyncCl +*>( +g +)-> + `_ced +( +cb +, +r +); + +510 + } +} + +512 #i +ASYNC_TCP_SSL_ENABLED + + +513  +AsyncCl +:: + $_s_da +(* +g +,  +t_pcb + * +t +, +ut8_t + * +da +, +size_t + +n +){ + +514 +AsyncCl + * +c + = +t_ +( +g +); + +515 if( +c +-> +_cv_cb +) + +516 +c +-> + `_cv_cb +(c-> +_cv_cb_g +, c, +da +, +n +); + +517 + } +} + +519  +AsyncCl +:: + $_s_hdshake +(* +g +,  +t_pcb + * +t +, +SSL + * +s +){ + +520 +AsyncCl + * +c + = +t_ +( +g +); + +521 +c +-> +_hdshake_de + = +ue +; + +522 if( +c +-> +_c_cb +) + +523 +c +-> + `_c_cb +(c-> +_c_cb_g +, c); + +524 + } +} + +526  +AsyncCl +:: + $_s_s_r +(* +g +,  +t_pcb + * +t +, +t8_t + +r +){ + +527 +t_ +< +AsyncCl +*>( +g +)-> + `_s_r +( +r +); + +528 + } +} + +533 +AsyncCl + & AsyncCl:: +ݔ ++=(cڡ AsyncCl & +h +) { + +534 if( +xt + = +NULL +){ + +535 +xt + = ( +AsyncCl +*)(& +h +); + +536 +xt +-> +ev + = +this +; + +538 +AsyncCl + * +c + = +xt +; + +539  +c +-> +xt + ! +NULL +) c = c->next; + +540 +c +-> +xt + =( +AsyncCl +*)(& +h +); + +541 +c +-> +xt +-> +ev + = c; + +543  * +this +; + +546  +AsyncCl +:: + $tRxTimeout +( +ut32_t + +timeout +){ + +547 +_rx_s_timeout + = +timeout +; + +548 + } +} + +550 +ut32_t + +AsyncCl +:: + $gRxTimeout +(){ + +551  +_rx_s_timeout +; + +552 + } +} + +554 +ut32_t + +AsyncCl +:: + $gAckTimeout +(){ + +555  +_ack_timeout +; + +556 + } +} + +558  +AsyncCl +:: + $tAckTimeout +( +ut32_t + +timeout +){ + +559 +_ack_timeout + = +timeout +; + +560 + } +} + +562  +AsyncCl +:: + $tNoDay +( +bo + +noday +){ + +563 if(! +_pcb +) + +565 if( +noday +) + +566 + `t_g_dib +( +_pcb +); + +568 + `t_g_ab +( +_pcb +); + +569 + } +} + +571 +bo + +AsyncCl +:: + $gNoDay +(){ + +572 if(! +_pcb +) + +573  +l +; + +574  + `t_g_dibd +( +_pcb +); + +575 + } +} + +577 +ut16_t + +AsyncCl +:: + $gMss +(){ + +578 if( +_pcb +) + +579  + `t_mss +( +_pcb +); + +581 + } +} + +583 +ut32_t + +AsyncCl +:: + $gRemeAddss +() { + +584 if(! +_pcb +) + +586  +_pcb +-> +me_ +. +addr +; + +587 + } +} + +589 +ut16_t + +AsyncCl +:: + $gRemePt +() { + +590 if(! +_pcb +) + +592  +_pcb +-> +me_pt +; + +593 + } +} + +595 +ut32_t + +AsyncCl +:: + $gLolAddss +() { + +596 if(! +_pcb +) + +598  +_pcb +-> +lol_ +. +addr +; + +599 + } +} + +601 +ut16_t + +AsyncCl +:: + $gLolPt +() { + +602 if(! +_pcb +) + +604  +_pcb +-> +lol_pt +; + +605 + } +} + +607 +IPAddss + +AsyncCl +:: + $meIP +() { + +608  + `IPAddss +( + `gRemeAddss +()); + +609 + } +} + +611 +ut16_t + +AsyncCl +:: + $mePt +() { + +612  + `gRemePt +(); + +613 + } +} + +615 +IPAddss + +AsyncCl +:: + $lolIP +() { + +616  + `IPAddss +( + `gLolAddss +()); + +617 + } +} + +619 +ut16_t + +AsyncCl +:: + $lolPt +() { + +620  + `gLolPt +(); + +621 + } +} + +623 #i +ASYNC_TCP_SSL_ENABLED + + +624 +SSL + * +AsyncCl +:: + $gSSL +(){ + +625 if( +_pcb + && +_pcb_cu +){ + +626  + `t_s_g_s +( +_pcb +); + +628  +NULL +; + +629 + } +} + +632 +ut8_t + +AsyncCl +:: + $e +() { + +633 if(! +_pcb +) + +635  +_pcb +-> +e +; + +636 + } +} + +638 +bo + +AsyncCl +:: + $ced +(){ + +639 i(! +_pcb +) + +640  +l +; + +641 #i +ASYNC_TCP_SSL_ENABLED + + +642  +_pcb +-> +e + =4 && +_hdshake_de +; + +644  +_pcb +-> +e + == 4; + +646 + } +} + +648 +bo + +AsyncCl +:: + $cg +(){ + +649 i(! +_pcb +) + +650  +l +; + +651  +_pcb +-> +e + > 0 && _pcb->state < 4; + +652 + } +} + +654 +bo + +AsyncCl +:: + $discg +(){ + +655 i(! +_pcb +) + +656  +l +; + +657  +_pcb +-> +e + > 4 && _pcb->state < 10; + +658 + } +} + +660 +bo + +AsyncCl +:: + $disced +(){ + +661 i(! +_pcb +) + +662  +ue +; + +663  +_pcb +-> +e + == 0 || _pcb->state == 10; + +664 + } +} + +666 +bo + +AsyncCl +:: + $ab +(){ + +667 i(! +_pcb +) + +668  +ue +; + +669  +_pcb +-> +e + == 0 || _pcb->state > 4; + +670 + } +} + +672 +bo + +AsyncCl +:: + $nSd +(){ + +673  ! +_pcb_busy + && ( + `a +() > 0); + +674 + } +} + +679  +AsyncCl +:: + $C +( +AcCHdr + +cb +, * +g +){ + +680 +_c_cb + = +cb +; + +681 +_c_cb_g + = +g +; + +682 + } +} + +684  +AsyncCl +:: + $Disc +( +AcCHdr + +cb +, * +g +){ + +685 +_disrd_cb + = +cb +; + +686 +_disrd_cb_g + = +g +; + +687 + } +} + +689  +AsyncCl +:: + $Ack +( +AcAckHdr + +cb +, * +g +){ + +690 +__cb + = +cb +; + +691 +__cb_g + = +g +; + +692 + } +} + +694  +AsyncCl +:: + $E +( +AcEHdr + +cb +, * +g +){ + +695 +_r_cb + = +cb +; + +696 +_r_cb_g + = +g +; + +697 + } +} + +699  +AsyncCl +:: + $Da +( +AcDaHdr + +cb +, * +g +){ + +700 +_cv_cb + = +cb +; + +701 +_cv_cb_g + = +g +; + +702 + } +} + +704  +AsyncCl +:: + $Pack +( +AcPackHdr + +cb +, * +g +){ + +705 +_pb_cb + = +cb +; + +706 +_pb_cb_g + = +g +; + +707 + } +} + +709  +AsyncCl +:: + $Timeout +( +AcTimeoutHdr + +cb +, * +g +){ + +710 +_timeout_cb + = +cb +; + +711 +_timeout_cb_g + = +g +; + +712 + } +} + +714  +AsyncCl +:: + $Pl +( +AcCHdr + +cb +, * +g +){ + +715 +_pl_cb + = +cb +; + +716 +_pl_cb_g + = +g +; + +717 + } +} + +720 +size_t + +AsyncCl +:: + $a +(){ + +721 #i +ASYNC_TCP_SSL_ENABLED + + +722 if(( +_pcb + ! +NULL +&& (_pcb-> +e + =4&& +_hdshake_de +){ + +723 +ut16_t + +s + = + `t_dbuf +( +_pcb +); + +724 if( +_pcb_cu +){ + +725 #ifde +AXTLS_2_0_0_SNDBUF + + +726  + `t_s_dbuf +( +_pcb +); + +728 if( +s + >= 128) + +729  +s + - 128; + +733  +s +; + +736 if(( +_pcb + ! +NULL +&& (_pcb-> +e + == 4)){ + +737  + `t_dbuf +( +_pcb +); + +741 + } +} + +743  +AsyncCl +:: + $ackPack +( +pbuf + * +pb +){ + +744 if(! +pb +){ + +747 + `t_cved +( +_pcb +, +pb +-> +n +); + +748 + `pbuf_ +( +pb +); + +749 + } +} + +751 cڡ * +AsyncCl +:: + $rToSg +( +t8_t + +r +) { + +752  +r +) { + +753  +ERR_OK +: + +755  +ERR_MEM +: + +757  +ERR_BUF +: + +759  +ERR_TIMEOUT +: + +761  +ERR_RTE +: + +763  +ERR_INPROGRESS +: + +765  +ERR_VAL +: + +767  +ERR_WOULDBLOCK +: + +769  +ERR_ABRT +: + +771  +ERR_RST +: + +773  +ERR_CLSD +: + +775  +ERR_CONN +: + +777  +ERR_ARG +: + +779  +ERR_USE +: + +781  +ERR_IF +: + +783  +ERR_ISCONN +: + +788 + } +} + +790 cڡ * +AsyncCl +:: + $eToSg +(){ + +791  + `e +()){ + +805 + } +} + +810  + sndg_pcb + { + +811 +t_pcb +* +pcb +; + +812 +pbuf + * +pb +; + +813  +ndg_pcb + * +xt +; + +816 + gAsyncSv +:: + $AsyncSv +( +IPAddss + +addr +, +ut16_t + +pt +) + +817 : + `_pt +( +pt +) + +818 , + `_addr +( +addr +) + +819 , + `_noDay +( +l +) + +820 , + `_pcb +(0) + +821 , + `_c_cb +(0) + +822 , + $_c_cb_g +(0) + +823 #i +ASYNC_TCP_SSL_ENABLED + + +824 , + `_ndg +( +NULL +) + +825 , + `_s_x +( +NULL +) + +826 , + `_fe_cb +(0) + +827 , + $_fe_cb_g +(0) + +829 { + } +} + +831 + gAsyncSv +:: + $AsyncSv +( +ut16_t + +pt +) + +832 : + `_pt +( +pt +) + +833 , + `_addr +(( +ut32_t + +IPADDR_ANY +) + +834 , + `_noDay +( +l +) + +835 , + `_pcb +(0) + +836 , + `_c_cb +(0) + +837 , + $_c_cb_g +(0) + +838 #i +ASYNC_TCP_SSL_ENABLED + + +839 , + `_ndg +( +NULL +) + +840 , + `_s_x +( +NULL +) + +841 , + `_fe_cb +(0) + +842 , + $_fe_cb_g +(0) + +844 { + } +} + +846 + gAsyncSv +::~ + $AsyncSv +(){ + +847 + `d +(); + +848 + } +} + +850  + gAsyncSv +:: + $Cl +( +AcCHdr + +cb +, * +g +){ + +851 +_c_cb + = +cb +; + +852 +_c_cb_g + = +g +; + +853 + } +} + +855 #i +ASYNC_TCP_SSL_ENABLED + + +856  + gAsyncSv +:: + $SFeReque +( +AcSSlFeHdr + +cb +, * +g +){ + +857 +_fe_cb + = +cb +; + +858 +_fe_cb_g + = +g +; + +859 + } +} + +862  + gAsyncSv +:: + $beg +(){ + +863 if( +_pcb +) + +866 +t8_t + +r +; + +867 +t_pcb +* +pcb + = + `t_w +(); + +868 i(! +pcb +){ + +872 +_addr_t + +lol_addr +; + +873 +lol_addr +. +addr + = ( +ut32_t + +_addr +; + +874 +r + = + `t_bd +( +pcb +, & +lol_addr +, +_pt +); + +876 i( +r + ! +ERR_OK +) { + +877 + `t_o +( +pcb +); + +881 +t_pcb +* +li_pcb + = + `t_li +( +pcb +); + +882 i(! +li_pcb +) { + +883 + `t_o +( +pcb +); + +886 +_pcb + = +li_pcb +; + +887 + `t_g +( +_pcb +, (* +this +); + +888 + `t_ac +( +_pcb +, & +_s_ac +); + +889 + } +} + +891 #i +ASYNC_TCP_SSL_ENABLED + + +892  + gAsyncSv +:: + $begSecu +(cڡ * + +, cڡ * +key +, cڡ * +sswd +){ + +893 if( +_s_x +){ + +896 + `t_s_fe +( +_s_ +, +this +); + +897 +_s_x + = + `t_s_w_rv_x +( + +, +key +, +sswd +); + +898 if( +_s_x +){ + +899 + `beg +(); + +901 + } +} + +904  + gAsyncSv +:: + $d +(){ + +905 if( +_pcb +){ + +907 + `t_g +( +_pcb +, +NULL +); + +908 + `t_ac +( +_pcb +, +NULL +); + +909 if( + `t_o +( +_pcb +! +ERR_OK +){ + +910 + `t_abt +( +_pcb +); + +912 +_pcb + = +NULL +; + +914 #i +ASYNC_TCP_SSL_ENABLED + + +915 if( +_s_x +){ + +916 + `s_x_ +( +_s_x +); + +917 +_s_x + = +NULL +; + +918 if( +_ndg +){ + +919  +ndg_pcb + * +p +; + +920  +_ndg +){ + +921 +p + = +_ndg +; + +922 +_ndg + = _ndg-> +xt +; + +923 if( +p +-> +pb +){ + +924 + `pbuf_ +( +p +-> +pb +); + +926 + ` +( +p +); + +931 + } +} + +933  + gAsyncSv +:: + $tNoDay +( +bo + +noday +){ + +934 +_noDay + = +noday +; + +935 + } +} + +937 +bo + + gAsyncSv +:: + $gNoDay +(){ + +938  +_noDay +; + +939 + } +} + +941 +ut8_t + + gAsyncSv +:: + $us +(){ + +942 i(! +_pcb +) + +944  +_pcb +-> +e +; + +945 + } +} + +947 +r_t + + gAsyncSv +:: + $_ac +( +t_pcb +* +pcb +, +r_t + +r +){ + +948 if( +_c_cb +){ + +949 #i +ASYNC_TCP_SSL_ENABLED + + +950 i( +_noDay + || +_s_x +) + +952 i( +_noDay +) + +954 + `t_g_dib +( +pcb +); + +956 + `t_g_ab +( +pcb +); + +959 #i +ASYNC_TCP_SSL_ENABLED + + +960 if( +_s_x +){ + +961 if( + `t_s_has_ +(|| +_ndg +){ + +962  +ndg_pcb + * +w_em + = (ndg_pcb*) + `mloc +((pending_pcb)); + +963 if(! +w_em +){ + +964 + `ASYNC_TCP_DEBUG +("### mallocewending failed!\n"); + +965 if( + `t_o +( +pcb +! +ERR_OK +){ + +966 + `t_abt +( +pcb +); + +968  +ERR_OK +; + +970 + `ASYNC_TCP_DEBUG +("###utwa: %d\n", +_s_wag +); + +971 +w_em +-> +pcb + =cb; + +972 +w_em +-> +pb + = +NULL +; + +973 +w_em +-> +xt + = +NULL +; + +974 + `t_rio +( +_pcb +, +TCP_PRIO_MIN +); + +975 + `t_g +( +pcb +, +this +); + +976 + `t_pl +( +pcb +, & +_s_pl +, 1); + +977 + `t_cv +( +pcb +, & +_s_cv +); + +979 if( +_ndg + = +NULL +){ + +980 +_ndg + = +w_em +; + +982  +ndg_pcb + * +p + = +_ndg +; + +983  +p +-> +xt + ! +NULL +) + +984 +p + =-> +xt +; + +985 +p +-> +xt + = +w_em +; + +988 +AsyncCl + * +c + = +w + + `AsyncCl +( +pcb +, +_s_x +); + +989 if( +c +){ + +990 +c +-> + `C +([ +this +](* +g +, +AsyncCl + *c){ + +991 + `_c_cb +( +_c_cb_g +, +c +); + +992 }, +this +); + +995  +ERR_OK +; + +997 +AsyncCl + * +c + = +w + + `AsyncCl +( +pcb +, +NULL +); + +999 +AsyncCl + * +c + = +w + + `AsyncCl +( +pcb +); + +1001 if( +c +){ + +1002 + `_c_cb +( +_c_cb_g +, +c +); + +1003  +ERR_OK +; + +1005 #i +ASYNC_TCP_SSL_ENABLED + + +1009 if( + `t_o +( +pcb +! +ERR_OK +){ + +1010 + `t_abt +( +pcb +); + +1012  +ERR_OK +; + +1013 + } +} + +1015 +r_t + + gAsyncSv +:: + $_s_ac +(* +g +, +t_pcb +* +pcb +, +r_t + +r +){ + +1016  +t_ +< +AsyncSv +*>( +g +)-> + `_ac +( +pcb +, +r +); + +1017 + } +} + +1019 #i +ASYNC_TCP_SSL_ENABLED + + +1020 +r_t + + gAsyncSv +:: + $_pl +( +t_pcb +* +pcb +){ + +1021 if(! + `t_s_has_ +(&& +_ndg +){ + +1022  +ndg_pcb + * +p + = +_ndg +; + +1023 if( +p +-> +pcb + ==cb){ + +1024 +_ndg + = _ndg-> +xt +; + +1026  +p +-> +xt + &&->xt-> +pcb + !=cb) =->next; + +1027 if(! +p +-> +xt +)  0; + +1028  +ndg_pcb + * +b + = +p +-> +xt +; + +1029 +p +-> +xt + = +b +->next; + +1030 +p + = +b +; + +1032 + `ASYNC_TCP_DEBUG +("###emovom wa: %d\n", +_s_wag +); + +1033 +AsyncCl + * +c + = +w + + `AsyncCl +( +pcb +, +_s_x +); + +1034 if( +c +){ + +1035 +c +-> + `C +([ +this +](* +g +, +AsyncCl + *c){ + +1036 + `_c_cb +( +_c_cb_g +, +c +); + +1037 }, +this +); + +1038 if( +p +-> +pb +) + +1039 +c +-> + `_cv +( +pcb +, +p +-> +pb +, 0); + +1041 + ` +( +p +); + +1043  +ERR_OK +; + +1044 + } +} + +1046 +r_t + + gAsyncSv +:: + $_cv +( +t_pcb + * +pcb +,  +pbuf + * +pb +, +r_t + +r +){ + +1047 if(! +_ndg +) + +1048  +ERR_OK +; + +1050  +ndg_pcb + * +p +; + +1052 if(! +pb +){ + +1053 + `ASYNC_TCP_DEBUG +("### clo from wa: %d\n", +_s_wag +); + +1054 +p + = +_ndg +; + +1055 if( +p +-> +pcb + ==cb){ + +1056 +_ndg + = _ndg-> +xt +; + +1058  +p +-> +xt + &&->xt-> +pcb + !=cb) =->next; + +1059 if(! +p +-> +xt +)  0; + +1060  +ndg_pcb + * +b + = +p +-> +xt +; + +1061 +p +-> +xt + = +b +->next; + +1062 +p + = +b +; + +1064 if( +p +-> +pb +){ + +1065 + `pbuf_ +( +p +-> +pb +); + +1067 + ` +( +p +); + +1068 + `t_o +( +pcb +); + +1069 + `t_abt +( +pcb +); + +1071 + `ASYNC_TCP_DEBUG +("### wa _cv: %u %d\n", +pb +-> +t_n +, +_s_wag +); + +1072 +p + = +_ndg +; + +1073  +p + &&-> +pcb + !=cb) + +1074 +p + =-> +xt +; + +1075 if( +p +){ + +1076 if( +p +-> +pb +){ + +1077 + `pbuf_cha +( +p +-> +pb +,b); + +1079 +p +-> +pb + =b; + +1083  +ERR_OK +; + +1084 + } +} + +1086  + gAsyncSv +:: + $_ +(cڡ * +fame +, +ut8_t + ** +buf +){ + +1087 if( +_fe_cb +){ + +1088  + `_fe_cb +( +_fe_cb_g +, +fame +, +buf +); + +1090 * +buf + = 0; + +1092 + } +} + +1094  + gAsyncSv +:: + $_s_ +(* +g +, cڡ * +fame +, +ut8_t + ** +buf +){ + +1095  +t_ +< +AsyncSv +*>( +g +)-> + `_ +( +fame +, +buf +); + +1096 + } +} + +1098 +r_t + + gAsyncSv +:: + $_s_pl +(* +g +,  +t_pcb + * +pcb +){ + +1099  +t_ +< +AsyncSv +*>( +g +)-> + `_pl +( +pcb +); + +1100 + } +} + +1102 +r_t + + gAsyncSv +:: + $_s_cv +(* +g +,  +t_pcb + * +pcb +,  +pbuf + * +pb +, +r_t + +r +){ + +1103  +t_ +< +AsyncSv +*>( +g +)-> + `_cv +( +pcb +, +pb +, +r +); + +1104 + } +} + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h + +22 #ide +ASYNCTCP_H_ + + +23  + #ASYNCTCP_H_ + + + ) + +25  + ~ + +26  + ~"IPAddss.h +" + +27  + ~ + +30  + ~"lw/.h +" + +31  + ~"lw/r.h +" + +32  + ~"lw/pbuf.h +" + +35 +ass + + gAsyncCl +; + +37  + #ASYNC_MAX_ACK_TIME + 5000 + + ) + +38  + #ASYNC_WRITE_FLAG_COPY + 0x01 + +39  + #ASYNC_WRITE_FLAG_MORE + 0x02 + +40 + + ) + +41  + gt_pcb +; + +42  + g_addr +; + +43 #i +ASYNC_TCP_SSL_ENABLED + + +44  + gSSL_ +; + +45  +SSL_ + + tSSL +; + +46  + gSSL_CTX_ +; + +47  +SSL_CTX_ + + tSSL_CTX +; + +50  + gd +:: + tfuni +<(*, + tAsyncCl +*)> + tAcCHdr +; + +51  + gd +:: + tfuni +<(*, + tAsyncCl +*, + tsize_t + + tn +, + tut32_t + + ttime +)> + tAcAckHdr +; + +52  + gd +:: + tfuni +<(*, + tAsyncCl +*, + tt8_t + + tr +)> + tAcEHdr +; + +53  + gd +:: + tfuni +<(*, + tAsyncCl +*, * + tda +, + tsize_t + + tn +)> + tAcDaHdr +; + +54  + gd +:: + tfuni +<(*, + tAsyncCl +*,  + tpbuf + * + tpb +)> + tAcPackHdr +; + +55  + gd +:: + tfuni +<(*, + tAsyncCl +*, + tut32_t + + ttime +)> + tAcTimeoutHdr +; + +57 as + cAsyncCl + { + +58 + meed +: + +59 +nd + +ass + +AsyncTCPbufr +; + +60 +t_pcb +* + m_pcb +; + +61 +AcCHdr + + m_c_cb +; + +62 * + m_c_cb_g +; + +63 +AcCHdr + + m_disrd_cb +; + +64 * + m_disrd_cb_g +; + +65 +AcAckHdr + + m__cb +; + +66 * + m__cb_g +; + +67 +AcEHdr + + m_r_cb +; + +68 * + m_r_cb_g +; + +69 +AcDaHdr + + m_cv_cb +; + +70 * + m_cv_cb_g +; + +71 +AcPackHdr + + m_pb_cb +; + +72 * + m_pb_cb_g +; + +73 +AcTimeoutHdr + + m_timeout_cb +; + +74 * + m_timeout_cb_g +; + +75 +AcCHdr + + m_pl_cb +; + +76 * + m_pl_cb_g +; + +77 +bo + + m_pcb_busy +; + +78 #i +ASYNC_TCP_SSL_ENABLED + + +79 +bo + + m_pcb_cu +; + +80 +bo + + m_hdshake_de +; + +82 +ut32_t + + m_pcb__ +; + +83 +bo + + m_o_pcb +; + +84 +bo + + m_ack_pcb +; + +85 +ut32_t + + m_tx_ucked_n +; + +86 +ut32_t + + m_tx_acked_n +; + +87 +ut32_t + + m_tx_un_n +; + +88 +ut32_t + + m_rx_ack_n +; + +89 +ut32_t + + m_rx_ϡ_ck +; + +90 +ut32_t + + m_rx_s_timeout +; + +91 +ut32_t + + m_ack_timeout +; + +92 +ut16_t + + m_c_pt +; + +94 +t8_t + +_o +(); + +95 +r_t + +_ced +(* +pcb +,_ +r +); + +96  +_r +( +r_t + +r +); + +97 #i +ASYNC_TCP_SSL_ENABLED + + +98  +_s_r +( +t8_t + +r +); + +100 +r_t + +_pl +( +t_pcb +* +pcb +); + +101 +r_t + +_ +( +t_pcb +* +pcb +, +ut16_t + +n +); + +102 #i +LWIP_VERSION_MAJOR + == 1 + +103  +_dns_found +( +_addr + * +addr +); + +105  +_dns_found +(cڡ +_addr + * +addr +); + +107  +r_t + +_s_pl +(* +g +,  +t_pcb + * +cb +); + +108  +r_t + +_s_cv +(* +g +,  +t_pcb + * +cb +,  +pbuf + * +pb +,_ +r +); + +109  +_s_r +(* +g +, +r_t + +r +); + +110  +r_t + +_s_ +(* +g +,  +t_pcb + * +cb +, +ut16_t + +n +); + +111  +r_t + +_s_ced +(* +g +, * +cb +,_ +r +); + +112 #i +LWIP_VERSION_MAJOR + == 1 + +113  +_s_dns_found +(cڡ * +me +,  +_addr + * +addr +, * +g +); + +115  +_s_dns_found +(cڡ * +me +, cڡ +_addr + * +addr +, * +g +); + +117 #i +ASYNC_TCP_SSL_ENABLED + + +118  +_s_da +(* +g +,  +t_pcb + * +t +, +ut8_t + * +da +, +size_t + +n +); + +119  +_s_hdshake +(* +g +,  +t_pcb + * +t +, +SSL + * +s +); + +120  +_s_s_r +(* +g +,  +t_pcb + * +t +, +t8_t + +r +); + +123 + mpublic +: + +124 +AsyncCl +* +ev +; + +125 +AsyncCl +* + mxt +; + +127 #i +ASYNC_TCP_SSL_ENABLED + + +128 +AsyncCl +( +t_pcb +* +pcb + = 0, +SSL_CTX + * +s_x + = +NULL +); + +130 +AsyncCl +( +t_pcb +* +pcb + = 0); + +132 ~ +AsyncCl +(); + +134 + mAsyncCl + & + mݔ +=(cڡ +AsyncCl + & +h +); + +135 + mAsyncCl + & + mݔ ++=(cڡ +AsyncCl + & +h +); + +137 +bo + + mݔ +==(cڡ +AsyncCl + & +h +); + +139 +bo + + mݔ +!=(cڡ +AsyncCl + & +h +) { + +140  !(* +this + = +h +); + +142 #i +ASYNC_TCP_SSL_ENABLED + + +143 +bo + +c +( +IPAddss + + +, +ut16_t + +pt +, bo +cu += +l +); + +144 +bo + +c +(cڡ * +ho +, +ut16_t + +pt +, bo +cu += +l +); + +146 +bo + +c +( +IPAddss + + +, +ut16_t + +pt +); + +147 +bo + +c +(cڡ * +ho +, +ut16_t + +pt +); + +149  +o +( +bo + +now + = +l +); + +150  + +(); + +151 +t8_t + +abt +(); + +152 +bo + + +(); + +154 +bo + +nSd +(); + +155 +size_t + +a +(); + +156 +size_t + +add +(cڡ * +da +, size_ +size +, +ut8_t + +iags +=0); + +157 +bo + +nd +(); + +158 +size_t + +ack +(size_ +n +); + +159  + $ackL +(){ +_ack_pcb + = +l +; + } +} + +161 #i +ASYNC_TCP_SSL_ENABLED + + +162 +SSL + * +gSSL +(); + +165 +size_t + +wre +(cڡ * +da +); + +166 +size_t + +wre +(cڡ * +da +, size_ +size +, +ut8_t + +iags +=0); + +168 +ut8_t + +e +(); + +169 +bo + +cg +(); + +170 +bo + +ced +(); + +171 +bo + +discg +(); + +172 +bo + +disced +(); + +173 +bo + +ab +(); + +175 +ut16_t + +gMss +(); + +176 +ut32_t + +gRxTimeout +(); + +177  +tRxTimeout +( +ut32_t + +timeout +); + +178 +ut32_t + +gAckTimeout +(); + +179  +tAckTimeout +( +ut32_t + +timeout +); + +180  +tNoDay +( +bo + +noday +); + +181 +bo + +gNoDay +(); + +182 +ut32_t + +gRemeAddss +(); + +183 +ut16_t + +gRemePt +(); + +184 +ut32_t + +gLolAddss +(); + +185 +ut16_t + +gLolPt +(); + +187 +IPAddss + +meIP +(); + +188 +ut16_t + +mePt +(); + +189 +IPAddss + +lolIP +(); + +190 +ut16_t + +lolPt +(); + +192  +C +( +AcCHdr + +cb +, * +g + = 0); + +193  +Disc +( +AcCHdr + +cb +, * +g + = 0); + +194  +Ack +( +AcAckHdr + +cb +, * +g + = 0); + +195  +E +( +AcEHdr + +cb +, * +g + = 0); + +196  +Da +( +AcDaHdr + +cb +, * +g + = 0); + +197  +Pack +( +AcPackHdr + +cb +, * +g + = 0); + +198  +Timeout +( +AcTimeoutHdr + +cb +, * +g + = 0); + +199  +Pl +( +AcCHdr + +cb +, * +g + = 0); + +201  +ackPack +( +pbuf + * +pb +); + +203 cڡ * +rToSg +( +t8_t + +r +); + +204 cڡ * +eToSg +(); + +206 +r_t + +_cv +( +t_pcb +* +pcb +, +pbuf +* +pb +,_ +r +); + +209 #i +ASYNC_TCP_SSL_ENABLED + + +210  + gd +:: + tfuni +<(* + tg +, cڡ * + tfame +, + tut8_t + ** + tbuf +)> + tAcSSlFeHdr +; + +211  + gndg_pcb +; + +214 as + cAsyncSv + { + +215 + meed +: + +216 +ut16_t + +_pt +; + +217 +IPAddss + + m_addr +; + +218 +bo + + m_noDay +; + +219 +t_pcb +* + m_pcb +; + +220 +AcCHdr + + m_c_cb +; + +221 * + m_c_cb_g +; + +222 #i +ASYNC_TCP_SSL_ENABLED + + +223  +ndg_pcb + * + m_ndg +; + +224 +SSL_CTX + * + m_s_x +; + +225 +AcSSlFeHdr + + m_fe_cb +; + +226 * + m_fe_cb_g +; + +229 + mpublic +: + +231 +AsyncSv +( +IPAddss + +addr +, +ut16_t + +pt +); + +232 +AsyncSv +( +ut16_t + +pt +); + +233 ~ +AsyncSv +(); + +234  +Cl +( +AcCHdr + +cb +, * +g +); + +235 #i +ASYNC_TCP_SSL_ENABLED + + +236  +SFeReque +( +AcSSlFeHdr + +cb +, * +g +); + +237  +begSecu +(cڡ * + +, cڡ * +ive_key_fe +, cڡ * +sswd +); + +239  +beg +(); + +240  +d +(); + +241  +tNoDay +( +bo + +noday +); + +242 +bo + +gNoDay +(); + +243 +ut8_t + +us +(); + +245 + meed +: + +246 +r_t + +_ac +( +t_pcb +* +wpcb +,_ +r +); + +247  +r_t + +_s_ac +(* +g +, +t_pcb +* +wpcb +,_ +r +); + +248 #i +ASYNC_TCP_SSL_ENABLED + + +249  +_ +(cڡ * +fame +, +ut8_t + ** +buf +); + +250 +r_t + +_pl +( +t_pcb +* +pcb +); + +251 +r_t + +_cv +( +t_pcb + * +pcb +,  +pbuf + * +pb +,_ +r +); + +252  +_s_ +(* +g +, cڡ * +fame +, +ut8_t + ** +buf +); + +253  +r_t + +_s_pl +(* +g +,  +t_pcb + * +cb +); + +254  +r_t + +_s_cv +(* +g +,  +t_pcb + * +cb +,  +pbuf + * +pb +,_ +r +); + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp + +26  + ~ + +27  + ~ + +29  + ~"ESPAsyncTCPbufr.h +" + +32 + gAsyncTCPbufr +:: + $AsyncTCPbufr +( +AsyncCl +* + +) { + +33 if( + + = +NULL +) { + +34 + `DEBUG_ASYNC_TCP +("[A-TCP] client isull!!!\n"); + +35 + `nic +(); + +38 +_ + = + +; + +39 +_TXbufrWre + = +w + + `cbuf +(1460); + +40 +_TXbufrRd + = +_TXbufrWre +; + +41 +_RXbufr + = +w + + `cbuf +(100); + +42 +_RXmode + = +ATB_RX_MODE_FREE +; + +43 +_rxSize + = 0; + +44 +_rxTm + = 0x00; + +45 +_rxRdBysP + = +NULL +; + +46 +_rxRdSgP + = +NULL +; + +47 +_cbDisc + = +NULL +; + +49 +_cbRX + = +NULL +; + +50 +_cbDe + = +NULL +; + +51 + `_chClbacks +(); + +52 + } +} + +54 + gAsyncTCPbufr +::~ + $AsyncTCPbufr +() { + +55 if( +_ +) { + +56 +_ +-> + `o +(); + +59 if( +_RXbufr +) { + +60 +de + +_RXbufr +; + +61 +_RXbufr + = +NULL +; + +64 if( +_TXbufrWre +) { + +66 +_TXbufrWre + = +NULL +; + +69 if( +_TXbufrRd +) { + +70 +cbuf + * +xt + = +_TXbufrRd +->next; + +71 +de + +_TXbufrRd +; + +72  +xt + ! +NULL +) { + +73 +_TXbufrRd + = +xt +; + +74 +xt + = +_TXbufrRd +->next; + +75 +de + +_TXbufrRd +; + +77 +_TXbufrRd + = +NULL +; + +79 + } +} + +81 +size_t + + gAsyncTCPbufr +:: + $wre +( +Sg + & +da +) { + +82  + `wre +( +da +. + `c_r +(), da. + `ngth +()); + +83 + } +} + +85 +size_t + + gAsyncTCPbufr +:: + $wre +( +ut8_t + +da +) { + +86  + `wre +(& +da +, 1); + +87 + } +} + +89 +size_t + + gAsyncTCPbufr +:: + $wre +(cڡ * +da +) { + +90  + `wre +((cڡ +ut8_t + * +da +, + ` +(data)); + +91 + } +} + +93 +size_t + + gAsyncTCPbufr +:: + $wre +(cڡ * +da +, +size_t + +n +) { + +94  + `wre +((cڡ +ut8_t + * +da +, +n +); + +95 + } +} + +103 +size_t + + gAsyncTCPbufr +:: + $wre +(cڡ +ut8_t + * +da +, +size_t + +n +) { + +104 if( +_TXbufrWre + = +NULL + || +_ + =NULL || !_-> + `ced +(|| +da + =NULL || +n + == 0) { + +108 +size_t + +bysLe + = +n +; + +109  +bysLe +) { + +110 +size_t + +w + = +_TXbufrWre +-> + `wre +((cڡ * +da +, +bysLe +); + +111 +bysLe + - +w +; + +112 +da + + +w +; + +113 + `_ndBufr +(); + +116 if( +_TXbufrWre +-> + `fu +(&& +bysLe + > 0) { + +119 if( +ESP +. + `gFeHp +() < 4096) { + +120 + `DEBUG_ASYNC_TCP +("[A-TCP]un out of Heap canot sendll Data!\n"); + +121  ( +n + - +bysLe +); + +124 +cbuf + * +xt + = +w + + `cbuf +(1460); + +126 if( +xt + = +NULL +) { + +127 + `DEBUG_ASYNC_TCP +("[A-TCP]un out of Heap!\n"); + +128 + `nic +(); + +130 + `DEBUG_ASYNC_TCP +("[A-TCP]ew cbuf\n"); + +134 +_TXbufrWre +-> +xt + =ext; + +137 +_TXbufrWre + = +xt +; + +141  +n +; + +143 + } +} + +148  + gAsyncTCPbufr +:: + $ush +() { + +149 ! +_TXbufrWre +-> + `emy +()) { + +150 ! +_ +-> + `nSd +()) { + +151 + `day +(0); + +153 + `_ndBufr +(); + +155 + } +} + +157  + gAsyncTCPbufr +:: + $noClback +() { + +158 +_RXmode + = +ATB_RX_MODE_NONE +; + +159 + } +} + +161  + gAsyncTCPbufr +:: + $adSgU +( +rm +, +Sg + * +r +, +AsyncTCPbufrDeCb + +de +) { + +162 if( +_ + = +NULL +) { + +165 + `DEBUG_ASYNC_TCP +("[A-TCP]dSgUm: %02X\n", +rm +); + +166 +_RXmode + = +ATB_RX_MODE_NONE +; + +167 +_cbDe + = +de +; + +168 +_rxRdSgP + = +r +; + +169 +_rxTm + = +rm +; + +170 +_rxSize + = 0; + +171 +_RXmode + = +ATB_RX_MODE_TERMINATOR_STRING +; + +172 + } +} + +190  + gAsyncTCPbufr +:: + $adBys +(* +bufr +, +size_t + +ngth +, +AsyncTCPbufrDeCb + +de +) { + +191 if( +_ + = +NULL +) { + +194 + `DEBUG_ASYNC_TCP +("[A-TCP]dByngth: %d\n", +ngth +); + +195 +_RXmode + = +ATB_RX_MODE_NONE +; + +196 +_cbDe + = +de +; + +197 +_rxRdBysP + = ( +ut8_t + * +bufr +; + +198 +_rxSize + = +ngth +; + +199 +_RXmode + = +ATB_RX_MODE_READ_BYTES +; + +200 + } +} + +202  + gAsyncTCPbufr +:: + $adBys +( +ut8_t + * +bufr +, +size_t + +ngth +, +AsyncTCPbufrDeCb + +de +) { + +203 + `adBys +((* +bufr +, +ngth +, +de +); + +204 + } +} + +206  + gAsyncTCPbufr +:: + $Da +( +AsyncTCPbufrDaCb + +cb +) { + +207 if( +_ + = +NULL +) { + +210 + `DEBUG_ASYNC_TCP +("[A-TCP] onData\n"); + +211 +_RXmode + = +ATB_RX_MODE_NONE +; + +212 +_cbDe + = +NULL +; + +213 +_cbRX + = +cb +; + +214 +_RXmode + = +ATB_RX_MODE_FREE +; + +215 + } +} + +217  + gAsyncTCPbufr +:: + $Disc +( +AsyncTCPbufrDiscCb + +cb +) { + +218 +_cbDisc + = +cb +; + +219 + } +} + +221 +IPAddss + + gAsyncTCPbufr +:: + $meIP +() { + +222 if(! +_ +) { + +223  + `IPAddss +(0U); + +225  +_ +-> + `meIP +(); + +226 + } +} + +228 +ut16_t + + gAsyncTCPbufr +:: + $mePt +() { + +229 if(! +_ +) { + +232  +_ +-> + `mePt +(); + +233 + } +} + +235 +bo + + gAsyncTCPbufr +:: + $ced +() { + +236 if(! +_ +) { + +237  +l +; + +239  +_ +-> + `ced +(); + +240 + } +} + +242  + gAsyncTCPbufr +:: + $ +() { + +244 if(! +_ +) { + +247 +_ +-> + ` +(); + +248 +_ + = +NULL +; + +250 if( +_cbDe +) { + +251  +_RXmode +) { + +252  +ATB_RX_MODE_READ_BYTES +: + +253  +ATB_RX_MODE_TERMINATOR +: + +254  +ATB_RX_MODE_TERMINATOR_STRING +: + +255 +_RXmode + = +ATB_RX_MODE_NONE +; + +256 + `_cbDe +( +l +, +NULL +); + +262 +_RXmode + = +ATB_RX_MODE_NONE +; + +263 + } +} + +265  + gAsyncTCPbufr +:: + $o +() { + +266 + ` +(); + +267 + } +} + +275  + gAsyncTCPbufr +:: + $_chClbacks +() { + +276 if(! +_ +) { + +279 + `DEBUG_ASYNC_TCP +("[A-TCP]ttachCallbacks\n"); + +281 +_ +-> + `Pl +([](* +obj +, +AsyncCl +* +c +) { + +282 +AsyncTCPbufr +* +b + = ((AsyncTCPbufr*)( +obj +)); + +283 if(( +b +-> +_TXbufrRd + ! +NULL +&& !b->_TXbufrRd-> + `emy +()) { + +284 +b +-> + `_ndBufr +(); + +289 }, +this +); + +291 +_ +-> + `Ack +([](* +obj +, +AsyncCl +* +c +, +size_t + +n +, +ut32_t + +time +) { + +292 + `DEBUG_ASYNC_TCP +("[A-TCP] onAck\n"); + +293 (( +AsyncTCPbufr +*)( +obj +))-> + `_ndBufr +(); + +294 }, +this +); + +296 +_ +-> + `Disc +([](* +obj +, +AsyncCl +* +c +) { + +297 + `DEBUG_ASYNC_TCP +("[A-TCP] onDisconnect\n"); + +298 +AsyncTCPbufr +* +b + = ((AsyncTCPbufr*)( +obj +)); + +299 +b +-> +_ + = +NULL +; + +300 +bo + +d + = +ue +; + +301 if( +b +-> +_cbDisc +) { + +302 +d + = +b +-> + `_cbDisc +(b); + +304 +de + +c +; + +305 if( +d +) { + +306 +de + +b +; + +308 }, +this +); + +310 +_ +-> + `Da +([](* +obj +, +AsyncCl +* +c +, * +buf +, +size_t + +n +) { + +311 +AsyncTCPbufr +* +b + = ((AsyncTCPbufr*)( +obj +)); + +312 +b +-> + `_rxDa +(( +ut8_t + *) +buf +, +n +); + +313 }, +this +); + +315 +_ +-> + `Timeout +([](* +obj +, +AsyncCl +* +c +, +ut32_t + +time +){ + +316 + `DEBUG_ASYNC_TCP +("[A-TCP] onTimeout\n"); + +317 +c +-> + `o +(); + +318 }, +this +); + +320 + `DEBUG_ASYNC_TCP +("[A-TCP]ttachCallbacks Done.\n"); + +321 + } +} + +326  + gAsyncTCPbufr +:: + $_ndBufr +() { + +328 +size_t + +avaab + = +_TXbufrRd +-> + `avaab +(); + +329 if( +avaab + =0 || +_ + = +NULL + || !_-> + `ced +(|| !_-> + `nSd +()) { + +333 ( +_ +-> + `a +(> 0&& ( +_TXbufrRd +-> + `avaab +(> 0&& _-> + `nSd +()) { + +335 +avaab + = +_TXbufrRd +-> + `avaab +(); + +337 if( +avaab + > +_ +-> + `a +()) { + +338 +avaab + = +_ +-> + `a +(); + +341 * +out + = +w + [ +avaab +]; + +342 if( +out + = +NULL +) { + +343 + `DEBUG_ASYNC_TCP +("[A-TCP]oess heap,ryater.\n"); + +348 +_TXbufrRd +-> + `ek +( +out +, +avaab +); + +351 +size_t + +nd + = +_ +-> + `wre +((cڡ * +out +, +avaab +); + +352 if( +nd + ! +avaab +) { + +353 + `DEBUG_ASYNC_TCP +("[A-TCP] wred sd: %dvaab: %d \n", +nd +, +avaab +); + +357 +_TXbufrRd +-> + `move +( +nd +); + +360 if( +_TXbufrRd +-> + `avaab +(=0 && _TXbufrRd-> +xt + ! +NULL +) { + +361 +cbuf + * +d + = +_TXbufrRd +; + +362 +_TXbufrRd + = _TXbufrRd-> +xt +; + +363 +de + +d +; + +364 + `DEBUG_ASYNC_TCP +("[A-TCP] delete cbuf\n"); + +367 +de + +out +; + +370 + } +} + +377  + gAsyncTCPbufr +:: + $_rxDa +( +ut8_t + * +buf +, +size_t + +n +) { + +378 if(! +_ + || !_-> + `ced +()) { + +379 + `DEBUG_ASYNC_TCP +("[A-TCP]ot connected!\n"); + +382 if(! +_RXbufr +) { + +383 + `DEBUG_ASYNC_TCP +("[A-TCP] _rxDatao _RXbuffer!\n"); + +386 + `DEBUG_ASYNC_TCP +("[A-TCP] _rxDn: %d RXmode: %d\n", +n +, +_RXmode +); + +388 +size_t + +hdd + = 0; + +390 if( +_RXmode + ! +ATB_RX_MODE_NONE +) { + +391 +hdd + = + `_hdRxBufr +(( +ut8_t + * +buf +, +n +); + +392 +buf + + +hdd +; + +393 +n + - +hdd +; + +396 if( +_RXbufr +-> + `emy +()) { + +397  +_RXmode + ! +ATB_RX_MODE_NONE + && +hdd + !0 && +n + > 0) { + +398 +hdd + = + `_hdRxBufr +( +buf +, +n +); + +399 +buf + + +hdd +; + +400 +n + - +hdd +; + +405 if( +n + > 0) { + +407 if( +_RXbufr +-> + `room +(< +n +) { + +409 + `DEBUG_ASYNC_TCP +("[A-TCP] _rxData buffer fullryesize\n"); + +410 +_RXbufr +-> + `sizeAdd +(( +n + + _RXbufr-> + `room +())); + +412 if( +_RXbufr +-> + `room +(< +n +) { + +413 + `DEBUG_ASYNC_TCP +("[A-TCP] _rxDbuftfu c oy hd %d!!!\n", +_RXbufr +-> + `room +()); + +417 +_RXbufr +-> + `wre +((cڡ *( +buf +), +n +); + +420 if(! +_RXbufr +-> + `emy +(&& +_RXmode + ! +ATB_RX_MODE_NONE +) { + +422 +hdd + = + `_hdRxBufr +( +NULL +, 0); + +423  +_RXmode + ! +ATB_RX_MODE_NONE + && +hdd + != 0) { + +424 +hdd + = + `_hdRxBufr +( +NULL +, 0); + +429 if( +_RXbufr +-> + `emy +(&& _RXbufr-> + `room +() != 100) { + +430 +_RXbufr +-> + `size +(100); + +433 + } +} + +438 +size_t + + gAsyncTCPbufr +:: + $_hdRxBufr +( +ut8_t + * +buf +, +size_t + +n +) { + +439 if(! +_ + || !_-> + `ced +(|| +_RXbufr + = +NULL +) { + +443 + `DEBUG_ASYNC_TCP +("[A-TCP] _hdRxBufn: %d RXmode: %d\n", +n +, +_RXmode +); + +445 +size_t + +BufrAvaab + = +_RXbufr +-> + `avaab +(); + +446 +size_t + +r + = 0; + +448 if( +_RXmode + = +ATB_RX_MODE_NONE +) { + +450 } if( +_RXmode + = +ATB_RX_MODE_FREE +) { + +451 if( +_cbRX + = +NULL +) { + +455 if( +BufrAvaab + > 0) { + +456 +ut8_t + * +b + = +w + ut8_t[ +BufrAvaab +]; + +457 +_RXbufr +-> + `ek +((* +b +, +BufrAvaab +); + +458 +r + = + `_cbRX +( +b +, +BufrAvaab +); + +459 +_RXbufr +-> + `move +( +r +); + +462 if( +r + = +BufrAvaab + && +buf + && ( +n + > 0)) { + +463  + `_cbRX +( +buf +, +n +); + +468 } if( +_RXmode + = +ATB_RX_MODE_READ_BYTES +) { + +469 if( +_rxRdBysP + = +NULL + || +_cbDe + == NULL) { + +473 +size_t + +wRdCou + = 0; + +475 if( +BufrAvaab +) { + +476 +r + = +_RXbufr +-> + `ad +((* +_rxRdBysP +, +_rxSize +); + +477 +_rxSize + - +r +; + +478 +_rxRdBysP + + +r +; + +481 if( +_RXbufr +-> + `emy +(&& ( +n + > 0&& +buf +) { + +482 +r + = +n +; + +483 if( +r + > +_rxSize +) { + +484 +r + = +_rxSize +; + +486 + `memy +( +_rxRdBysP +, +buf +, +r +); + +487 +_rxRdBysP + + +r +; + +488 +_rxSize + - +r +; + +489 +wRdCou + + +r +; + +492 if( +_rxSize + == 0) { + +493 +_RXmode + = +ATB_RX_MODE_NONE +; + +494 + `_cbDe +( +ue +, +NULL +); + +498  +wRdCou +; + +500 } if( +_RXmode + = +ATB_RX_MODE_TERMINATOR +) { + +503 } if( +_RXmode + = +ATB_RX_MODE_TERMINATOR_STRING +) { + +504 if( +_rxRdSgP + = +NULL + || +_cbDe + == NULL) { + +509 if( +BufrAvaab + > 0) { + +510 ! +_RXbufr +-> + `emy +()) { + +511  +c + = +_RXbufr +-> + `ad +(); + +512 if( +c + = +_rxTm + || c == 0x00) { + +513 +_RXmode + = +ATB_RX_MODE_NONE +; + +514 + `_cbDe +( +ue +, +_rxRdSgP +); + +517 (* +_rxRdSgP ++ +c +; + +522 if( +_RXbufr +-> + `emy +(&& ( +n + > 0&& +buf +) { + +523 +size_t + +wRdCou + = 0; + +524  +wRdCou + < +n +) { + +525  +c + = (* +buf +; + +526 +buf +++; + +527 +wRdCou +++; + +528 if( +c + = +_rxTm + || c == 0x00) { + +529 +_RXmode + = +ATB_RX_MODE_NONE +; + +530 + `_cbDe +( +ue +, +_rxRdSgP +); + +531  +wRdCou +; + +533 (* +_rxRdSgP ++ +c +; + +536  +wRdCou +; + +541 + } +} + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h + +25 #ide +ESPASYNCTCPBUFFER_H_ + + +26  + #ESPASYNCTCPBUFFER_H_ + + + ) + +30 #ide +DEBUG_ASYNC_TCP + + +31  + #DEBUG_ASYNC_TCP +(...) + + ) + +34  + ~ + +35  + ~ + +37  + ~"ESPAsyncTCP.h +" + +42 + mATB_RX_MODE_NONE +, + +43 + mATB_RX_MODE_FREE +, + +44 + mATB_RX_MODE_READ_BYTES +, + +45 + mATB_RX_MODE_TERMINATOR +, + +46 + mATB_RX_MODE_TERMINATOR_STRING + + +47 } + tbRxMode_t +; + +49 as + cAsyncTCPbufr +: +public + +Prt + { + +51 +public +: + +53  +d +:: + tfuni +< + tsize_t +( + tut8_t + * + tyld +, size_ + tngth +)> + tAsyncTCPbufrDaCb +; + +54  + md +:: + tfuni +<( + tbo + + tok +, * + tt +)> + tAsyncTCPbufrDeCb +; + +55  + md +:: + tfuni +< + tbo +( + tAsyncTCPbufr + * + tobj +)> + tAsyncTCPbufrDiscCb +; + +57 +AsyncTCPbufr +( +AsyncCl +* +c +); + +58 + mvtu + ~ +AsyncTCPbufr +(); + +60 +size_t + +wre +( +Sg + & +da +); + +61 +size_t + +wre +( +ut8_t + +da +); + +62 +size_t + +wre +(cڡ * +da +); + +63 +size_t + +wre +(cڡ * +da +, size_ +n +); + +64 +size_t + +wre +(cڡ +ut8_t + * +da +, size_ +n +); + +66  +ush +(); + +68  +noClback +(); + +70  +adSgU +( +rm +, +Sg + * +r +, +AsyncTCPbufrDeCb + +de +); + +76  +adBys +(* +bufr +, +size_t + +ngth +, +AsyncTCPbufrDeCb + +de +); + +77  +adBys +( +ut8_t + * +bufr +, +size_t + +ngth +, +AsyncTCPbufrDeCb + +de +); + +82  +Da +( +AsyncTCPbufrDaCb + +cb +); + +83  +Disc +( +AsyncTCPbufrDiscCb + +cb +); + +85 +IPAddss + +meIP +(); + +86 +ut16_t + +mePt +(); + +87 +IPAddss + +lolIP +(); + +88 +ut16_t + +lolPt +(); + +90 +bo + +ced +(); + +92  + +(); + +93  +o +(); + +95 + meed +: + +96 +AsyncCl +* +_ +; + +97 +cbuf + * + m_TXbufrRd +; + +98 +cbuf + * + m_TXbufrWre +; + +99 +cbuf + * + m_RXbufr +; + +100 +bRxMode_t + + m_RXmode +; + +101 +size_t + + m_rxSize +; + +102  + m_rxTm +; + +103 +ut8_t + * + m_rxRdBysP +; + +104 +Sg + * + m_rxRdSgP +; + +106 +AsyncTCPbufrDaCb + + m_cbRX +; + +107 +AsyncTCPbufrDeCb + + m_cbDe +; + +108 +AsyncTCPbufrDiscCb + + m_cbDisc +; + +110  +_chClbacks +(); + +111  +_ndBufr +(); + +112  +__o +(); + +113  +_rxDa +( +ut8_t + * +buf +, +size_t + +n +); + +114 +size_t + +_hdRxBufr +( +ut8_t + * +buf +, size_ +n +); + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp + +21  + ~"SyncCl.h +" + +22  + ~"Arduo.h +" + +23  + ~"ESPAsyncTCP.h +" + +24  + ~"cbuf.h +" + +27 + gSyncCl +:: + $SyncCl +( +size_t + +txBufL +) + +28 : + `_ +( +NULL +) + +29 , + `_tx_bufr +( +NULL +) + +30 , + `_tx_bufr_size +( +txBufL +) + +31 , + $_rx_bufr +( +NULL +) + +32 { + } +} + +34 + gSyncCl +:: + $SyncCl +( +AsyncCl + * + +, +size_t + +txBufL +) + +35 : + `_ +( + +) + +36 , + `_tx_bufr +( +w + + `cbuf +( +txBufL +)) + +37 , + `_tx_bufr_size +( +txBufL +) + +38 , + $_rx_bufr +( +NULL +) + +40 + `_chClbacks +(); + +41 + } +} + +43 + gSyncCl +::~ + $SyncCl +(){ + +44 if( +_tx_bufr + ! +NULL +){ + +45 +cbuf + * +b + = +_tx_bufr +; + +46 +_tx_bufr + = +NULL +; + +47 +de + +b +; + +49  +_rx_bufr + ! +NULL +){ + +50 +cbuf + * +b + = +_rx_bufr +; + +51 +_rx_bufr + = _rx_bufr-> +xt +; + +52 +de + +b +; + +54 + } +} + +56 #i +ASYNC_TCP_SSL_ENABLED + + +57  + gSyncCl +:: + $c +( +IPAddss + + +, +ut16_t + +pt +, +bo + +cu +){ + +59  +SyncCl +:: + $c +( +IPAddss + + +, +ut16_t + +pt +){ + +61 if( +_ + ! +NULL + && + `ced +()) + +63 +_ + = +w + + `AsyncCl +(); + +64 +_ +-> + `C +([](* +obj +, +AsyncCl + * +c +){ (( +SyncCl +*)(obj))-> + `_C +(c); }, +this +); + +65 + `_chClbacks_Disc +(); + +66 #i +ASYNC_TCP_SSL_ENABLED + + +67 if( +_ +-> + `c +( + +, +pt +, +cu +)){ + +69 if( +_ +-> + `c +( + +, +pt +)){ + +71  +_ + ! +NULL + && !_-> + `ced +(&& !_-> + `discg +()) + +72 + `day +(1); + +73  + `ced +(); + +76 + } +} + +78 #i +ASYNC_TCP_SSL_ENABLED + + +79  + gSyncCl +:: + $c +(cڡ * +ho +, +ut16_t + +pt +, +bo + +cu +){ + +81  +SyncCl +:: + $c +(cڡ * +ho +, +ut16_t + +pt +){ + +83 if( +_ + ! +NULL + && + `ced +()){ + +86 +_ + = +w + + `AsyncCl +(); + +87 +_ +-> + `C +([](* +obj +, +AsyncCl + * +c +){ (( +SyncCl +*)(obj))-> + `_C +(c); }, +this +); + +88 + `_chClbacks_Disc +(); + +89 #i +ASYNC_TCP_SSL_ENABLED + + +90 if( +_ +-> + `c +( +ho +, +pt +, +cu +)){ + +92 if( +_ +-> + `c +( +ho +, +pt +)){ + +94  +_ + ! +NULL + && !_-> + `ced +(&& !_-> + `discg +()) + +95 + `day +(1); + +96  + `ced +(); + +99 + } +} + +101 + gSyncCl + & SyncCl:: +ݔ +=(cڡ +SyncCl + & +h +){ + +102 if( +_ + ! +NULL +){ + +103 +_ +-> +abt +(); + +104 + g_ +-> + +(); + +105 + g_ + = +NULL +; + +107 + g_tx_bufr_size + = +h +. +_tx_bufr_size +; + +108 if( + g_tx_bufr + ! +NULL +){ + +109 +cbuf + * +b + = +_tx_bufr +; + +110 + g_tx_bufr + = +NULL +; + +111 +de + + gb +; + +113  + g_rx_bufr + ! +NULL +){ + +114 +cbuf + * +b + = +_rx_bufr +; + +115 + g_rx_bufr + = +b +-> +xt +; + +116 +de + + gb +; + +118 + g_tx_bufr + = +w + +cbuf +( +h +. +_tx_bufr_size +); + +119 + g_ + = +h +. +_ +; + +120 +_chClbacks +(); + +121  * + gthis +; + +124  + gSyncCl +:: + $tTimeout +( +ut32_t + +cds +){ + +125 if( +_ + ! +NULL +) + +126 +_ +-> + `tRxTimeout +( +cds +); + +127 + } +} + +129 +ut8_t + + gSyncCl +:: + $us +(){ + +130 if( +_ + = +NULL +) + +132  +_ +-> + `e +(); + +133 + } +} + +135 +ut8_t + + gSyncCl +:: + $ced +(){ + +136  ( +_ + ! +NULL + && _-> + `ced +()); + +137 + } +} + +139  + gSyncCl +:: + $ +(){ + +140 if( +_ + ! +NULL +) + +141 +_ +-> + `o +( +ue +); + +142 + } +} + +144 +size_t + + gSyncCl +:: + $_ndBufr +(){ + +145 +size_t + +avaab + = +_tx_bufr +-> + `avaab +(); + +146 if(! + `ced +(|| ! +_ +-> + `nSd +(|| +avaab + == 0) + +148 +size_t + +ndab + = +_ +-> + `a +(); + +149 if( +ndab + < +avaab +) + +150 +avaab + +ndab +; + +151 * +out + = +w + [ +avaab +]; + +152 +_tx_bufr +-> + `ad +( +out +, +avaab +); + +153 +size_t + + + = +_ +-> + `wre +( +out +, +avaab +); + +154 +de +[] +out +; + +155  + +; + +156 + } +} + +158  + gSyncCl +:: + $_Da +(* +da +, +size_t + +n +){ + +159 +_ +-> + `ackL +(); + +160 +cbuf + * +b + = +w + + `cbuf +( +n ++1); + +161 if( +b + ! +NULL +){ + +162 +b +-> + `wre +((cڡ *) +da +, +n +); + +163 if( +_rx_bufr + = +NULL +) + +164 +_rx_bufr + = +b +; + +166 +cbuf + * +p + = +_rx_bufr +; + +167  +p +-> +xt + ! +NULL +) + +168 +p + =-> +xt +; + +169 +p +-> +xt + = +b +; + +172 + } +} + +174  + gSyncCl +:: + $_Disc +(){ + +175 if( +_ + ! +NULL +){ + +176 +_ + = +NULL +; + +178 if( +_tx_bufr + ! +NULL +){ + +179 +cbuf + * +b + = +_tx_bufr +; + +180 +_tx_bufr + = +NULL +; + +181 +de + +b +; + +183 + } +} + +185  + gSyncCl +:: + $_C +( +AsyncCl + * +c +){ + +186 +_ + = +c +; + +187 if( +_tx_bufr + ! +NULL +){ + +188 +cbuf + * +b + = +_tx_bufr +; + +189 +_tx_bufr + = +NULL +; + +190 +de + +b +; + +192 +_tx_bufr + = +w + + `cbuf +( +_tx_bufr_size +); + +193 + `_chClbacks_ACed +(); + +194 + } +} + +196  + gSyncCl +:: + $_chClbacks +(){ + +197 + `_chClbacks_Disc +(); + +198 + `_chClbacks_ACed +(); + +199 + } +} + +201  + gSyncCl +:: + $_chClbacks_ACed +(){ + +202 +_ +-> + `Ack +([](* +obj +, +AsyncCl +* +c +, +size_t + +n +, +ut32_t + +time +){ (( +SyncCl +*)(obj))-> + `_ndBufr +(); }, +this +); + +203 +_ +-> + `Da +([](* +obj +, +AsyncCl +* +c +, * +da +, +size_t + +n +){ (( +SyncCl +*)(obj))-> + `_Da +(da,); }, +this +); + +204 +_ +-> + `Timeout +([](* +obj +, +AsyncCl +* +c +, +ut32_t + +time +){ c-> + `o +(); }, +this +); + +205 + } +} + +207  + gSyncCl +:: + $_chClbacks_Disc +(){ + +208 +_ +-> + `Disc +([](* +obj +, +AsyncCl +* +c +){ (( +SyncCl +*)(obj))-> + `_Disc +(); +de + c; }, +this +); + +209 + } +} + +211 +size_t + + gSyncCl +:: + $wre +( +ut8_t + +da +){ + +212  + `wre +(& +da +, 1); + +213 + } +} + +215 +size_t + + gSyncCl +:: + $wre +(cڡ +ut8_t + * +da +, +size_t + +n +){ + +216 if( +_tx_bufr + = +NULL + || ! + `ced +()){ + +219 +size_t + +toWre + = 0; + +220 +size_t + +toSd + = +n +; + +221  +_tx_bufr +-> + `room +(< +toSd +){ + +222 +toWre + = +_tx_bufr +-> + `room +(); + +223 +_tx_bufr +-> + `wre +((cڡ *) +da +, +toWre +); + +224 ! +_ +-> + `nSd +(&& + `ced +()) + +225 + `day +(0); + +226 + `_ndBufr +(); + +227 +toSd + - +toWre +; + +229 +_tx_bufr +-> + `wre +((cڡ *)( +da ++( +n + - +toSd +)),oSend); + +230 if( +_ +-> + `nSd +(&& + `ced +()) + +231 + `_ndBufr +(); + +232  +n +; + +233 + } +} + +235  + gSyncCl +:: + $avaab +(){ + +236 if( +_rx_bufr + = +NULL +)  0; + +237 +size_t + +a + = 0; + +238 +cbuf + * +b + = +_rx_bufr +; + +239  +b + ! +NULL +){ + +240 +a + + +b +-> + `avaab +(); + +241 +b + = b-> +xt +; + +243  +a +; + +244 + } +} + +246  + gSyncCl +:: + $ek +(){ + +247 if( +_rx_bufr + = +NULL +)  -1; + +248  +_rx_bufr +-> + `ek +(); + +249 + } +} + +251  + gSyncCl +:: + $ad +( +ut8_t + * +da +, +size_t + +n +){ + +252 if( +_rx_bufr + = +NULL +)  -1; + +254 +size_t + +adSoF + = 0; + +255  +_rx_bufr + ! +NULL + && ( +n + - +adSoF +>_rx_bufr-> + `avaab +()){ + +256 +cbuf + * +b + = +_rx_bufr +; + +257 +_rx_bufr + = _rx_bufr-> +xt +; + +258 +size_t + +toRd + = +b +-> + `avaab +(); + +259 +adSoF + + +b +-> + `ad +((*)( +da ++adSoF), +toRd +); + +260 if( + `ced +()){ + +261 +_ +-> + `ack +( +b +-> + `size +() - 1); + +263 +de + +b +; + +265 if( +_rx_bufr + ! +NULL + && +adSoF + < +n +){ + +266 +adSoF + + +_rx_bufr +-> + `ad +((*)( +da ++adSoF), ( +n + -eadSoFar)); + +268  +adSoF +; + +269 + } +} + +271  + gSyncCl +:: + $ad +(){ + +272 +ut8_t + +s + = 0; + +273 if( + `ad +(& +s +, 1) != 1) + +275  +s +; + +276 + } +} + +278  + gSyncCl +:: + $ush +(){ + +279 if( +_tx_bufr + = +NULL + || ! + `ced +()) + +281 if( +_tx_bufr +-> + `avaab +()){ + +282 ! +_ +-> + `nSd +(&& + `ced +()) + +283 + `day +(0); + +284 + `_ndBufr +(); + +286 + } +} + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h + +22 #ide +SYNCCLIENT_H_ + + +23  + #SYNCCLIENT_H_ + + + ) + +25  + ~"Cl.h +" + +26  + ~ + +27 +ass + + gcbuf +; + +28 +ass + + gAsyncCl +; + +30 as + cSyncCl +: +public + +Cl + { + +31 +ive +: + +32 +AsyncCl + * +_ +; + +33 +cbuf + * + m_tx_bufr +; + +34 +size_t + + m_tx_bufr_size +; + +35 +cbuf + * + m_rx_bufr +; + +37 +size_t + +_ndBufr +(); + +38  +_Da +(* +da +, +size_t + +n +); + +39  +_C +( +AsyncCl + * +c +); + +40  +_Disc +(); + +41  +_chClbacks +(); + +42  +_chClbacks_Disc +(); + +43  +_chClbacks_ACed +(); + +45 + mpublic +: + +46 +SyncCl +( +size_t + +txBufL + = 1460); + +47 +SyncCl +( +AsyncCl + * + +, +size_t + +txBufL + = 1460); + +48 + mvtu + ~ +SyncCl +(); + +50 +ݔ + + $bo +(){  + `ced +(); } + +51 +SyncCl + & +ݔ +=(cڡ SyncCl & +h +); + +53 #i +ASYNC_TCP_SSL_ENABLED + + +54  + `c +( +IPAddss + + +, +ut16_t + +pt +, +bo + +cu +); + +55  + `c +(cڡ * +ho +, +ut16_t + +pt +, +bo + +cu +); + +56  + $c +( +IPAddss + + +, +ut16_t + +pt +){ + +57  + `c +( + +, +pt +, +l +); + +58 + } +} + +59  + $c +(cڡ * +ho +, +ut16_t + +pt +){ + +60  + `c +( +ho +, +pt +, +l +); + +61 + } +} + +63  +c +( +IPAddss + + +, +ut16_t + +pt +); + +64  +c +(cڡ * +ho +, +ut16_t + +pt +); + +66  +tTimeout +( +ut32_t + +cds +); + +68 +ut8_t + +us +(); + +69 +ut8_t + +ced +(); + +70  + +(); + +72 +size_t + +wre +( +ut8_t + +da +); + +73 +size_t + +wre +(cڡ +ut8_t + * +da +, size_ +n +); + +75  +avaab +(); + +76  +ek +(); + +77  +ad +(); + +78  +ad +( +ut8_t + * +da +, +size_t + +n +); + +79  +ush +(); + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h + +1 #ide +LIBRARIES_ESPASYNCTCP_SRC_ASYNC_CONFIG_H_ + + +2  + #LIBRARIES_ESPASYNCTCP_SRC_ASYNC_CONFIG_H_ + + + ) + +4 #ide +ASYNC_TCP_SSL_ENABLED + + +5  + #ASYNC_TCP_SSL_ENABLED + 0 + + ) + +8  + #ASYNC_TCP_DEBUG +(...) + +9  + #TCP_SSL_DEBUG +(...) + +10 + + ) + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c + +25  + ~ + +26 #i +ASYNC_TCP_SSL_ENABLED + + +28  + ~"lw/t.h +" + +29  + ~"lw/t.h +" + +30  + ~"lw/.h +" + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +36 +ut8_t + * + gdeu_ive_key + = +NULL +; + +37 +ut16_t + + gdeu_ive_key_n + = 0; + +39 +ut8_t + * + gdeu_ifi + = +NULL +; + +40 +ut16_t + + gdeu_ifi_n + = 0; + +42  +ut8_t + + g_t_s_has_ + = 0; + +44 +SSL_CTX + * + $t_s_w_rv_x +(cڡ * + +, cڡ * +ive_key_fe +, cڡ * +sswd +){ + +45 +ut32_t + +tis + = +SSL_CONNECT_IN_PARTS +; + +46 +SSL_CTX + * +s_x +; + +48 if( +ive_key_fe +){ + +49 +tis + | +SSL_NO_DEFAULT_KEY +; + +52 i(( +s_x + = + `s_x_w +( +tis +, +SSL_DEFAULT_SVR_SESS +)= +NULL +){ + +53 + `TCP_SSL_DEBUG +("tcp_ssl_new_server_ctx: failedollocate context\n"); + +54  +NULL +; + +57 i( +ive_key_fe +){ + +58  +obj_ty + = +SSL_OBJ_RSA_KEY +; + +59 i( + `rr +( +ive_key_fe +, ".p8")) + +60 +obj_ty + = +SSL_OBJ_PKCS8 +; + +61 i( + `rr +( +ive_key_fe +, ".p12")) + +62 +obj_ty + = +SSL_OBJ_PKCS12 +; + +64 i( + `s_obj_ld +( +s_x +, +obj_ty +, +ive_key_fe +, +sswd +)){ + +65 + `TCP_SSL_DEBUG +("t_s_w_rv_x:drivkey '%s' faed\n", +ive_key_fe +); + +66  +NULL +; + +70 i( + +){ + +71 i( + `s_obj_ld +( +s_x +, +SSL_OBJ_X509_CERT +, + +, +NULL +)){ + +72 + `TCP_SSL_DEBUG +("t_s_w_rv_x:d ctifi '%s' faed\n", + +); + +73  +NULL +; + +76  +s_x +; + +77 + } +} + +79  + st_s_pcb + { + +80  +t_pcb + * + mt +; + +81  + mfd +; + +82 +SSL_CTX +* + ms_x +; + +83 +SSL + * + ms +; + +84 +ut8_t + + mty +; + +85  + mhdshake +; + +86 * + mg +; + +87 +t_s_da_cb_t + + m_da +; + +88 +t_s_hdshake_cb_t + + m_hdshake +; + +89 +t_s_r_cb_t + + m_r +; + +90  + mϡ_wr +; + +91  +pbuf + * + mt_pbuf +; + +92  + mpbuf_offt +; + +93  +t_s_pcb + * + mxt +; + +96  +t_s_pcb + + tt_s_t +; + +98  +t_s_t + * + gt_s_y + = +NULL +; + +99  + gt_s_xt_fd + = 0; + +101 +ut8_t + + $t_s_has_ +(){ + +102  +_t_s_has_ +; + +103 + } +} + +105 +t_s_t + * + $t_s_w +( +t_pcb + * +t +) { + +107 if( +t_s_xt_fd + < 0){ + +108 +t_s_xt_fd + = 0; + +111 +t_s_t + * +w_em + = (t_s_t*) + `mloc +((tcp_ssl_t)); + +112 if(! +w_em +){ + +113 + `TCP_SSL_DEBUG +("tcp_ssl_new: failedollocatecp_ssl\n"); + +114  +NULL +; + +117 +w_em +-> +t + =cp; + +118 +w_em +-> +hdshake + = +SSL_NOT_OK +; + +119 +w_em +-> +g + = +NULL +; + +120 +w_em +-> +_da + = +NULL +; + +121 +w_em +-> +_hdshake + = +NULL +; + +122 +w_em +-> +_r + = +NULL +; + +123 +w_em +-> +t_pbuf + = +NULL +; + +124 +w_em +-> +pbuf_offt + = 0; + +125 +w_em +-> +xt + = +NULL +; + +126 +w_em +-> +s_x + = +NULL +; + +127 +w_em +-> +s + = +NULL +; + +128 +w_em +-> +ty + = +TCP_SSL_TYPE_CLIENT +; + +129 +w_em +-> +fd + = +t_s_xt_fd +++; + +131 if( +t_s_y + = +NULL +){ + +132 +t_s_y + = +w_em +; + +134 +t_s_t + * +em + = +t_s_y +; + +135  +em +-> +xt + ! +NULL +) + +136 +em + = im-> +xt +; + +137 +em +-> +xt + = +w_em +; + +140 + `TCP_SSL_DEBUG +("t_s_w: %d\n", +w_em +-> +fd +); + +141  +w_em +; + +142 + } +} + +144 +t_s_t +* + $t_s_g +( +t_pcb + * +t +) { + +145 if( +t + = +NULL +) { + +146  +NULL +; + +148 +t_s_t + * +em + = +t_s_y +; + +149  +em + && im-> +t + !=cp){ + +150 +em + = im-> +xt +; + +152  +em +; + +153 + } +} + +155  + $t_s_w_ +( +t_pcb + * +t +){ + +156 +SSL_CTX +* +s_x +; + +157 +t_s_t + * +t_s +; + +159 if( +t + = +NULL +) { + +163 if( + `t_s_g +( +t +! +NULL +){ + +164 + `TCP_SSL_DEBUG +("tcp_ssl_new_client:cp_ssllreadyxists\n"); + +168 +s_x + = + `s_x_w +( +SSL_CONNECT_IN_PARTS + | +SSL_SERVER_VERIFY_LATER +, 1); + +169 if( +s_x + = +NULL +){ + +170 + `TCP_SSL_DEBUG +("tcp_ssl_new_client: failedollocate ssl context\n"); + +174 +t_s + = + `t_s_w +( +t +); + +175 if( +t_s + = +NULL +){ + +176 + `s_x_ +( +s_x +); + +180 +t_s +-> +s_x + = ssl_ctx; + +182 +t_s +-> +s + = + `s__w +( +s_x +,_s-> +fd +, +NULL +, 0, NULL); + +183 if( +t_s +-> +s + = +NULL +){ + +184 + `TCP_SSL_DEBUG +("tcp_ssl_new_client: failedollocate ssl\n"); + +185 + `t_s_ +( +t +); + +189  +t_s +-> +fd +; + +190 + } +} + +192  + $t_s_w_rv +( +t_pcb + * +t +, +SSL_CTX +* +s_x +){ + +193 +t_s_t + * +t_s +; + +195 if( +t + = +NULL +) { + +199 if( +s_x + = +NULL +){ + +203 if( + `t_s_g +( +t +! +NULL +){ + +204 + `TCP_SSL_DEBUG +("tcp_ssl_new_server:cp_ssllreadyxists\n"); + +208 +t_s + = + `t_s_w +( +t +); + +209 if( +t_s + = +NULL +){ + +213 +t_s +-> +ty + = +TCP_SSL_TYPE_SERVER +; + +214 +t_s +-> +s_x + = ssl_ctx; + +216 +_t_s_has_ + = 1; + +217 +t_s +-> +s + = + `s_rv_w +( +s_x +,_s-> +fd +); + +218 if( +t_s +-> +s + = +NULL +){ + +219 + `TCP_SSL_DEBUG +("tcp_ssl_new_server: failedollocate ssl\n"); + +220 + `t_s_ +( +t +); + +224  +t_s +-> +fd +; + +225 + } +} + +227  + $t_s_ +( +t_pcb + * +t +) { + +229 if( +t + = +NULL +) { + +233 +t_s_t + * +em + = +t_s_y +; + +235 if( +em +-> +t + ==cp){ + +236 +t_s_y + =_s_y-> +xt +; + +237 if( +em +-> +t_pbuf + ! +NULL +){ + +238 + `pbuf_ +( +em +-> +t_pbuf +); + +240 + `TCP_SSL_DEBUG +("t_s_: %d\n", +em +-> +fd +); + +241 if( +em +-> +s +) + +242 + `s_ +( +em +-> +s +); + +243 if( +em +-> +ty + = +TCP_SSL_TYPE_CLIENT + && im-> +s_x +) + +244 + `s_x_ +( +em +-> +s_x +); + +245 if( +em +-> +ty + = +TCP_SSL_TYPE_SERVER +) + +246 +_t_s_has_ + = 0; + +247 + ` +( +em +); + +251  +em +-> +xt + && im->xt-> +t + !=cp) + +252 +em + = im-> +xt +; + +254 if( +em +-> +xt + = +NULL +){ + +255  +ERR_TCP_SSL_INVALID_CLIENTFD_DATA +; + +258 +t_s_t + * +i + = +em +-> +xt +; + +259 +em +-> +xt + = +i +->next; + +260 if( +i +-> +t_pbuf + ! +NULL +){ + +261 + `pbuf_ +( +i +-> +t_pbuf +); + +263 + `TCP_SSL_DEBUG +("t_s_: %d\n", +i +-> +fd +); + +264 if( +i +-> +s +) + +265 + `s_ +( +i +-> +s +); + +266 if( +i +-> +ty + = +TCP_SSL_TYPE_CLIENT + && i-> +s_x +) + +267 + `s_x_ +( +i +-> +s_x +); + +268 if( +i +-> +ty + = +TCP_SSL_TYPE_SERVER +) + +269 +_t_s_has_ + = 0; + +270 + ` +( +i +); + +272 + } +} + +274 #ifde +AXTLS_2_0_0_SNDBUF + + +275  + $t_s_dbuf +( +t_pcb + * +t +){ + +276  +exed +; + +277  +avaab +; + +278  +su + = -1; + +280 if( +t + = +NULL +) { + +281  +su +; + +283 +t_s_t + * +t_s + = + `t_s_g +( +t +); + +284 if(! +t_s +){ + +285 + `TCP_SSL_DEBUG +("tcp_ssl_sndbuf:cp_ssl is NULL\n"); + +286  +su +; + +288 +avaab + = + `t_dbuf +( +t +); + +289 if(! +avaab +){ + +290 + `TCP_SSL_DEBUG +("tcp_ssl_sndbuf:cp_sndbuf is zero\n"); + +293 +su + = +avaab +; + +294 ( +exed + = + `s_lcuϋ_wre_ngth +( +t_s +-> +s +, +su +)> +avaab +){ + +295 +su + -( +exed + - +avaab +) + 4; + +298 if( +exed + > 0){ + +300  +su +; + +304 + } +} + +307  + $t_s_wre +( +t_pcb + * +t +, +ut8_t + * +da +, +size_t + +n +) { + +308 if( +t + = +NULL +) { + +311 +t_s_t + * +t_s + = + `t_s_g +( +t +); + +312 if(! +t_s +){ + +313 + `TCP_SSL_DEBUG +("tcp_ssl_write:cp_ssl is NULL\n"); + +316 +t_s +-> +ϡ_wr + = 0; + +318 #ifde +AXTLS_2_0_0_SNDBUF + + +319  +exed_n + = + `s_lcuϋ_wre_ngth +( +t_s +-> +s +, +n +); + +320  +avaab_n + = + `t_dbuf +( +t +); + +321 if( +exed_n + < 0 ||xed_> +avaab_n +){ + +322 + `TCP_SSL_DEBUG +("t_s_wre: dwn f! %u < %d(%u)\r\n", +avaab_n +, +exed_n +, +n +); + +327  +rc + = + `s_wre +( +t_s +-> +s +, +da +, +n +); + +331 i( +rc + < 0){ + +332 if( +rc + ! +SSL_CLOSE_NOTIFY +) { + +333 + `TCP_SSL_DEBUG +("t_s_wrr: %d\r\n", +rc +); + +335  +rc +; + +338  +t_s +-> +ϡ_wr +; + +339 + } +} + +351  + $t_s_ad +( +t_pcb + * +t +,  +pbuf + * +p +) { + +352 if( +t + = +NULL +) { + +355 +t_s_t +* +fd_da + = +NULL +; + +357  +ad_bys + = 0; + +358  +tٮ_bys + = 0; + +359 +ut8_t + * +ad_buf +; + +361 +fd_da + = + `t_s_g +( +t +); + +362 if( +fd_da + = +NULL +) { + +363 + `TCP_SSL_DEBUG +("tcp_ssl_read:cp_ssl is NULL\n"); + +364  +ERR_TCP_SSL_INVALID_CLIENTFD_DATA +; + +367 if( +p + = +NULL +) { + +368 + `TCP_SSL_DEBUG +("tcp_ssl_read:p == NULL\n"); + +369  +ERR_TCP_SSL_INVALID_DATA +; + +374 +fd_da +-> +t_pbuf + = +p +; + +375 +fd_da +-> +pbuf_offt + = 0; + +378 +ad_bys + = + `s_ad +( +fd_da +-> +s +, & +ad_buf +); + +380 if( +ad_bys + < +SSL_OK +) { + +381 if( +ad_bys + ! +SSL_CLOSE_NOTIFY +) { + +382 + `TCP_SSL_DEBUG +("t_s_ad:d: %d\n", +ad_bys +); + +384 +tٮ_bys + = +ad_bys +; + +386 } if( +ad_bys + > 0){ + +387 if( +fd_da +-> +_da +){ + +388 +fd_da +-> + `_da +(fd_da-> +g +, +t +, +ad_buf +, +ad_bys +); + +390 +tٮ_bys ++ +ad_bys +; + +392 if( +fd_da +-> +hdshake + ! +SSL_OK +) { + +393 +fd_da +-> +hdshake + = + `s_hdshake_us +(fd_da-> +s +); + +394 if( +fd_da +-> +hdshake + = +SSL_OK +){ + +396 if( +fd_da +-> +_hdshake +) + +397 +fd_da +-> + `_hdshake +(fd_da-> +g +, fd_da-> +t +, fd_da-> +s +); + +398 } if( +fd_da +-> +hdshake + ! +SSL_NOT_OK +){ + +399 + `TCP_SSL_DEBUG +("t_s_ad: hdshakr: %d\n", +fd_da +-> +hdshake +); + +400 if( +fd_da +-> +_r +) + +401 +fd_da +-> + `_r +(fd_da-> +g +, fd_da-> +t +, fd_da-> +hdshake +); + +402  +fd_da +-> +hdshake +; + +406 }  +p +-> +t_n + - +fd_da +-> +pbuf_offt + > 0); + +408 + `t_cved +( +t +, +p +-> +t_n +); + +409 +fd_da +-> +t_pbuf + = +NULL +; + +410 + `pbuf_ +( +p +); + +412  +tٮ_bys +; + +413 + } +} + +415 +SSL + * + $t_s_g_s +( +t_pcb + * +t +){ + +416 +t_s_t + * +t_s + = + `t_s_g +( +t +); + +417 if( +t_s +){ + +418  +t_s +-> +s +; + +420  +NULL +; + +421 + } +} + +423 +bo + + $t_s_has +( +t_pcb + * +t +){ + +424  + `t_s_g +( +t +! +NULL +; + +425 + } +} + +427  + $t_s_is_rv +( +t_pcb + * +t +){ + +428 +t_s_t + * +t_s + = + `t_s_g +( +t +); + +429 if( +t_s +){ + +430  +t_s +-> +ty +; + +433 + } +} + +435  + $t_s_g +( +t_pcb + * +t +, * +g +){ + +436 +t_s_t + * +em + = + `t_s_g +( +t +); + +437 if( +em +) { + +438 +em +-> +g + =rg; + +440 + } +} + +442  + $t_s_da +( +t_pcb + * +t +, +t_s_da_cb_t + +g +){ + +443 +t_s_t + * +em + = + `t_s_g +( +t +); + +444 if( +em +) { + +445 +em +-> +_da + = +g +; + +447 + } +} + +449  + $t_s_hdshake +( +t_pcb + * +t +, +t_s_hdshake_cb_t + +g +){ + +450 +t_s_t + * +em + = + `t_s_g +( +t +); + +451 if( +em +) { + +452 +em +-> +_hdshake + = +g +; + +454 + } +} + +456  + $t_s_r +( +t_pcb + * +t +, +t_s_r_cb_t + +g +){ + +457 +t_s_t + * +em + = + `t_s_g +( +t +); + +458 if( +em +) { + +459 +em +-> +_r + = +g +; + +461 + } +} + +463  +t_s_fe_cb_t + + g_t_s_fe_cb + = +NULL +; + +464 * + g_t_s_fe_g + = +NULL +; + +466  + $t_s_fe +( +t_s_fe_cb_t + +cb +, * +g +){ + +467 +_t_s_fe_cb + = +cb +; + +468 +_t_s_fe_g + = +g +; + +469 + } +} + +471  + $ax_g_fe +(cڡ * +fame +, +ut8_t + ** +buf +) { + +473 if( +_t_s_fe_cb +){ + +474  + `_t_s_fe_cb +( +_t_s_fe_g +, +fame +, +buf +); + +476 * +buf + = 0; + +478 + } +} + +480 +t_s_t +* + $t_s_g_by_fd +( +fd +) { + +481 +t_s_t + * +em + = +t_s_y +; + +482  +em + && im-> +fd + != fd){ + +483 +em + = im-> +xt +; + +485  +em +; + +486 + } +} + +490  + $ax_pt_wre +( +fd +, +ut8_t + * +da +, +ut16_t + +n +) { + +491 +t_s_t + * +fd_da + = +NULL +; + +492  +t_n + = 0; + +493 +r_t + +r + = +ERR_OK +; + +497 +fd_da + = + `t_s_g_by_fd +( +fd +); + +498 if( +fd_da + = +NULL +) { + +500  +ERR_MEM +; + +503 i( +da + = +NULL + || +n + == 0) { + +507 i( + `t_dbuf +( +fd_da +-> +t +< +n +) { + +508 +t_n + = + `t_dbuf +( +fd_da +-> +t +); + +509 if( +t_n + == 0) { + +510 + `TCP_SSL_DEBUG +("ax_pt_wre:_dbuizo: %d\n", +n +); + +511  +ERR_MEM +; + +514 +t_n + = +n +; + +517 i( +t_n + > 2 * +fd_da +-> +t +-> +mss +) { + +518 +t_n + = 2 * +fd_da +-> +t +-> +mss +; + +521 +r + = + `t_wre +( +fd_da +-> +t +, +da +, +t_n +, +TCP_WRITE_FLAG_COPY +); + +522 if( +r + < +ERR_OK +) { + +523 i( +r + = +ERR_MEM +) { + +524 + `TCP_SSL_DEBUG +("ax_pt_wre: Nmemy %d (%d)\n", +t_n +, +n +); + +525  +r +; + +527 + `TCP_SSL_DEBUG +("ax_pt_wre:_wrr: %d\n", +r +); + +528  +r +; + +529 } i( +r + = +ERR_OK +) { + +531 +r + = + `t_ouut +( +fd_da +-> +t +); + +532 if( +r + ! +ERR_OK +) { + +533 + `TCP_SSL_DEBUG +("ax_pt_wre:_ouur: %d\n", +r +); + +534  +r +; + +538 +fd_da +-> +ϡ_wr + + +t_n +; + +540  +t_n +; + +541 + } +} + +546  + $ax_pt_ad +( +fd +, +ut8_t + * +da +,  +n +) { + +547 +t_s_t + * +fd_da + = +NULL +; + +548 +ut8_t + * +ad_buf + = +NULL +; + +549 +ut8_t + * +d_buf + = +NULL +; + +550 +u16_t + +cv_n + = 0; + +554 +fd_da + = + `t_s_g_by_fd +( +fd +); + +555 i( +fd_da + = +NULL +) { + +556 + `TCP_SSL_DEBUG +("ax_pt_ad:_s[%d] iNULL\n", +fd +); + +557  +ERR_TCP_SSL_INVALID_CLIENTFD_DATA +; + +560 if( +fd_da +-> +t_pbuf + = +NULL + || fd_da->t_pbuf-> +t_n + == 0) { + +564 +ad_buf + =( +ut8_t +*) + `oc +( +fd_da +-> +t_pbuf +-> +n + + 1, (uint8_t)); + +565 +d_buf + = +ad_buf +; + +566 i( +d_buf + ! +NULL +){ + +567 +cv_n + = + `pbuf_cy_l +( +fd_da +-> +t_pbuf +, +ad_buf +, +n +, fd_da-> +pbuf_offt +); + +568 +fd_da +-> +pbuf_offt + + +cv_n +; + +571 i( +cv_n + != 0) { + +572 + `memy +( +da +, +ad_buf +, +cv_n +); + +575 if( +n + < +cv_n +) { + +576 + `TCP_SSL_DEBUG +("ax_pt_ad: g %d bymܐthxed\n", +cv_n + - +n +); + +579 + ` +( +d_buf +); + +580 +d_buf + = +NULL +; + +582  +cv_n +; + +583 + } +} + +585  + $ax_wdt_ed +({ + } +} + + @.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h + +26 #ide +LWIPR_COMPAT_H + + +27  + #LWIPR_COMPAT_H + + + ) + +29  + ~ + +31 #i +ASYNC_TCP_SSL_ENABLED + + +33  + ~"lwts.h +" + +37 #i +LWIP_RAW +==1 + +39 #ifde +__lulus + + +43  + ~ + +44  + ~"ude/s.h +" + +46  + #ERR_TCP_SSL_INVALID_SSL + -101 + + ) + +47  + #ERR_TCP_SSL_INVALID_TCP + -102 + + ) + +48  + #ERR_TCP_SSL_INVALID_CLIENTFD + -103 + + ) + +49  + #ERR_TCP_SSL_INVALID_CLIENTFD_DATA + -104 + + ) + +50  + #ERR_TCP_SSL_INVALID_DATA + -105 + + ) + +52  + #TCP_SSL_TYPE_CLIENT + 0 + + ) + +53  + #TCP_SSL_TYPE_SERVER + 1 + + ) + +55  + #t_s_s_wre +( +A +, +B +, +C + + `t_s_wre +(A, B, C) + + ) + +56  + #t_s_s_ad +( +A +, +B + + `t_s_ad +(A, B) + + ) + +58 (* +t_s_da_cb_t +)(* + tg +,  + tt_pcb + * + tt +, + tut8_t + * + tda +, + tsize_t + + tn +); + +59 (* +t_s_hdshake_cb_t +)(* + tg +,  + tt_pcb + * + tt +, + tSSL + * + ts +); + +60 (* +t_s_r_cb_t +)(* + tg +,  + tt_pcb + * + tt +, + tt8_t + + tr +); + +61 (* +t_s_fe_cb_t +)(* + tg +, cڡ * + tfame +, + tut8_t + ** + tbuf +); + +63 +ut8_t + +t_s_has_ +(); + +65  +t_s_w_ +( +t_pcb + * +t +); + +67 +SSL_CTX + * +t_s_w_rv_x +(cڡ * + +, cڡ * +ive_key_fe +, cڡ * +sswd +); + +68  +t_s_w_rv +( +t_pcb + * +t +, +SSL_CTX +* +s_x +); + +69  +t_s_is_rv +( +t_pcb + * +t +); + +71  +t_s_ +( +t_pcb + * +t +); + +72  +t_s_ad +( +t_pcb + * +t +,  +pbuf + * +p +); + +74 #ifde +AXTLS_2_0_0_SNDBUF + + +75  +t_s_dbuf +( +t_pcb + * +t +); + +78  +t_s_wre +( +t_pcb + * +t +, +ut8_t + * +da +, +size_t + +n +); + +80  +t_s_fe +( +t_s_fe_cb_t + +cb +, * +g +); + +82  +t_s_g +( +t_pcb + * +t +, * +g +); + +83  +t_s_da +( +t_pcb + * +t +, +t_s_da_cb_t + +g +); + +84  +t_s_hdshake +( +t_pcb + * +t +, +t_s_hdshake_cb_t + +g +); + +85  +t_s_r +( +t_pcb + * +t +, +t_s_r_cb_t + +g +); + +87 +SSL + * +t_s_g_s +( +t_pcb + * +t +); + +88 +bo + +t_s_has +( +t_pcb + * +t +); + +90 #ifde +__lulus + + + @interface/node_modules/jest-haste-map/node_modules/fsevents/fsevents.cc + +6  + ~"n.h +" + +7  + ~"uv.h +" + +8  + ~"v8.h +" + +9  + ~"CeFoundi/CeFoundi.h +" + +10  + ~"CeSvis/CeSvis.h +" + +11  + ~ + +12  + ~ + +14  + ~"c/age.cc +" + +15 +mea + + gf + { + +16 as + cFSEvts + : +public + +N +:: +ObjeWp + { + +17 +public +: + +18 +exic + +FSEvts +(cڡ * +th +); + +19 ~ +FSEvts +(); + +21 +uv_mux_t + + gmux +; + +24 +uv_async_t + + gasync +; + +25  +asyncS +(); + +26  +asyncTrigg +(); + +27  +asyncSt +(); + +30 +uv_thad_t + + gthad +; + +31 +CFRunLoRef + + gthadlo +; + +32  +thadS +(); + +33  +thadRun +(* +x +); + +34  +thadSt +(); + +37 + gN +:: +AsyncResour + +async_sour +; + +38  +emEvt +(cڡ * +th +, +UI32 + +ags +, +UI64 + +id +); + +41 +CFAayRef + + gths +; + +42 + gd +:: +ve +< +f_evt +*> +evts +; + +43  +Inlize +( +v8 +:: +Lol + +expts +); + +46  +NAN_METHOD +( +New +); + +47  +NAN_METHOD +( +St +); + +48  +NAN_METHOD +( +S +); + +53 +usg + +mea + + gf +; + +55 + gFSEvts +:: + $FSEvts +(cڡ * +th +) + +56 : + `async_sour +("fsevents:FSEvents") { + +57 +CFSgRef + +ds +[] = { + `CFSgCeWhCSg +( +NULL +, +th +, +kCFSgEncodgUTF8 +) }; + +58 +ths + = + `CFAayCe +( +NULL +, (cڡ **)& +ds +, 1, NULL); + +59 +thadlo + = +NULL +; + +60 i( + `uv_mux_ +(& +mux +) + `abt +(); + +61 + } +} + +62 + gFSEvts +::~ + $FSEvts +() { + +63 + `CFR +( +ths +); + +64 + `uv_mux_deroy +(& +mux +); + +65 + } +} + +67 #ide +kFSEvtSmEvtFgImCed + + +68  + #kFSEvtSmEvtFgImCed + 0x00000010 + + ) + +71  + ~"c/async.cc +" + +72  + ~"c/thad.cc +" + +73  + ~"c/cڡts.cc +" + +74  + ~"c/mhods.cc +" + +76  + gFSEvts +:: +Inlize +( +v8 +:: +Lol + +expts +) { + +77 +v8 +:: +Isީe +* +isީe + = +expts +-> +GIsީe +(); + +78 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +79 + gv8 +:: +Lol +< +v8 +:: +FuniTeme +> +l + = +N +:: +New +( +FSEvts +::New); + +80 + gl +-> +SCssName +( +N +:: +New +< +v8 +:: +Sg +>("FSEvts"). +ToLolChecked +()); + +81 + gl +-> +InTeme +()-> +SIlFldCou +(1); + +82 + gN +:: +SPryTeme +( +l +, "t", +N +:: +New +< +v8 +:: +FuniTeme +>( +FSEvts +:: +S +)); + +83 + gN +:: +SPryTeme +( +l +, "", +N +:: +New +< +v8 +:: +FuniTeme +>( +FSEvts +:: +St +)); + +84 + gN +:: +S +( +expts +, +N +:: +New +< +v8 +:: +Sg +>("Cڡts"). +ToLolChecked +(), +Cڡts +()); + +85 + gN +:: +S +( +expts +, +N +:: +New +< +v8 +:: +Sg +>("FSEvts"). +ToLolChecked +(), +l +-> +GFuni +( +cڋxt +).ToLocalChecked()); + +88 +NODE_MODULE +( +f +, +FSEvts +:: +Inlize +) + + @interface/node_modules/jest-haste-map/node_modules/fsevents/src/async.cc + +7  + $async_age +( +uv_async_t + * +async +) { + +8 i(! +async +-> +da +) ; + +9 +FSEvts + * +f + = (FSEvt*) +async +-> +da +; + +10 +CFIndex + +idx +, +t +; + +11 +f_evt + * +evt +; + +12  +thbuf +[1024]; + +13 cڡ * +thr + = +NULL +; + +14 + `uv_mux_lock +(& +f +-> +mux +); + +15 +t + = +f +-> +evts +. + `size +(); + +16  +idx +=0; idx< +t +; idx++) { + +17 +evt + = +f +-> +evts +. + ` +( +idx +); + +18 i( +evt + = +NULL +) ; + +19 +thr + = + `CFSgGCSgP +( +evt +-> +th +, +kCFSgEncodgUTF8 +); + +20 i(! +thr + + `CFSgGCSg +( +evt +-> +th +, +thbuf +, 1024, +kCFSgEncodgUTF8 +); + +21 +f +-> + `emEvt +( +thr + ?h: +thbuf +, +evt +-> +ags +,vt-> +id +); + +22 +de + +evt +; + +24 i( +t +>0 +f +-> +evts +. + `r +(); + +25 + `uv_mux_uock +(& +f +-> +mux +); + +26 + } +} + +28  + gFSEvts +:: + $asyncS +() { + +29 i( +async +. +da + = +this +) ; + +30 +async +. +da + = +this +; + +31 + `uv_async_ +( + `uv_deu_lo +(), & +async +, ( +uv_async_cb + +async_age +); + +32 + } +} + +34  + gFSEvts +:: + $asyncTrigg +() { + +35 i( +async +. +da + ! +this +) ; + +36 + `uv_async_nd +(& +async +); + +37 + } +} + +39  + gFSEvts +:: + $asyncSt +() { + +40 i( +async +. +da + ! +this +) ; + +41 +async +. +da + = +NULL +; + +42 + `uv_o +(( +uv_hd_t + *& +async +, +NULL +); + +43 + } +} + + @interface/node_modules/jest-haste-map/node_modules/fsevents/src/constants.cc + +7 #ide +kFSEvtSmEvtFgNe + + +8  + #kFSEvtSmEvtFgNe + 0x00000000 + + ) + +11 #ide +kFSEvtSmEvtFgMuSnSubDs + + +12  + #kFSEvtSmEvtFgMuSnSubDs + 0x00000001 + + ) + +15 #ide +kFSEvtSmEvtFgUrDrݳd + + +16  + #kFSEvtSmEvtFgUrDrݳd + 0x00000002 + + ) + +19 #ide +kFSEvtSmEvtFgKlDrݳd + + +20  + #kFSEvtSmEvtFgKlDrݳd + 0x00000004 + + ) + +23 #ide +kFSEvtSmEvtFgEvtIdsWed + + +24  + #kFSEvtSmEvtFgEvtIdsWed + 0x00000008 + + ) + +27 #ide +kFSEvtSmEvtFgHiyDe + + +28  + #kFSEvtSmEvtFgHiyDe + 0x00000010 + + ) + +31 #ide +kFSEvtSmEvtFgRoChged + + +32  + #kFSEvtSmEvtFgRoChged + 0x00000020 + + ) + +35 #ide +kFSEvtSmEvtFgMou + + +36  + #kFSEvtSmEvtFgMou + 0x00000040 + + ) + +39 #ide +kFSEvtSmEvtFgUnmou + + +40  + #kFSEvtSmEvtFgUnmou + 0x00000080 + + ) + +43 #ide +kFSEvtSmEvtFgImCed + + +44  + #kFSEvtSmEvtFgImCed + 0x00000100 + + ) + +47 #ide +kFSEvtSmEvtFgImRemoved + + +48  + #kFSEvtSmEvtFgImRemoved + 0x00000200 + + ) + +51 #ide +kFSEvtSmEvtFgImInodeMaMod + + +52  + #kFSEvtSmEvtFgImInodeMaMod + 0x00000400 + + ) + +55 #ide +kFSEvtSmEvtFgImRamed + + +56  + #kFSEvtSmEvtFgImRamed + 0x00000800 + + ) + +59 #ide +kFSEvtSmEvtFgImModifd + + +60  + #kFSEvtSmEvtFgImModifd + 0x00001000 + + ) + +63 #ide +kFSEvtSmEvtFgImFdInfoMod + + +64  + #kFSEvtSmEvtFgImFdInfoMod + 0x00002000 + + ) + +67 #ide +kFSEvtSmEvtFgImChgeOwr + + +68  + #kFSEvtSmEvtFgImChgeOwr + 0x00004000 + + ) + +71 #ide +kFSEvtSmEvtFgImXMod + + +72  + #kFSEvtSmEvtFgImXMod + 0x00008000 + + ) + +75 #ide +kFSEvtSmEvtFgImIsFe + + +76  + #kFSEvtSmEvtFgImIsFe + 0x00010000 + + ) + +79 #ide +kFSEvtSmEvtFgImIsD + + +80  + #kFSEvtSmEvtFgImIsD + 0x00020000 + + ) + +83 #ide +kFSEvtSmEvtFgImIsSymlk + + +84  + #kFSEvtSmEvtFgImIsSymlk + 0x00040000 + + ) + +87  + gv8 +:: +Lol +< +v8 +:: +Obje +> + $Cڡts +() { + +88 +v8 +:: +Lol + +obje + = +N +:: +New +(); + +89 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgNe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgNe +)); + +90 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgMuSnSubDs"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgMuSnSubDs +)); + +91 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgUrDrݳd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgUrDrݳd +)); + +92 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgKlDrݳd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgKlDrݳd +)); + +93 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgEvtIdsWed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgEvtIdsWed +)); + +94 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgHiyDe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgHiyDe +)); + +95 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgRoChged"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgRoChged +)); + +96 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgMou"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgMou +)); + +97 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgUnmou"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgUnmou +)); + +98 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImCed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImCed +)); + +99 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImRemoved"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImRemoved +)); + +100 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImInodeMaMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImInodeMaMod +)); + +101 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImRamed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImRamed +)); + +102 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImModifd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImModifd +)); + +103 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImFdInfoMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImFdInfoMod +)); + +104 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImChgeOwr"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImChgeOwr +)); + +105 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImXMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImXMod +)); + +106 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsFe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsFe +)); + +107 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsD"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsD +)); + +108 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsSymlk"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsSymlk +)); + +109  +obje +; + +110 + } +} + + @interface/node_modules/jest-haste-map/node_modules/fsevents/src/methods.cc + +6  + gFSEvts +:: + $emEvt +(cڡ * +th +, +UI32 + +ags +, +UI64 + +id +) { + +7 +N +:: +HdSce + +hd_sce +; + +8 +v8 +:: +Lol + +obje + = + `hd +(); + +9 +v8 +:: +Lol + +key + = +N +:: +New +("hdr"). + `ToLolChecked +(); + +10 +N +:: +Clback + + `hdr +(N:: +To +< +v8 +:: +Funi +>(N:: + `G +( +obje +, +key +). + `ToLolChecked +()).ToLocalChecked()); + +11 +v8 +:: +Lol + +gv +[] = { + +12 +N +:: +New +< +v8 +:: +Sg +>( +th +). + `ToLolChecked +(), + +13 +N +:: +New +< +v8 +:: +Numb +>( +ags +), + +14 +N +:: +New +< +v8 +:: +Numb +>( +id +) + +16 +hdr +. + `Cl +(3, +gv +, & +async_sour +); + +17 + } +} + +19 + $NAN_METHOD +( +FSEvts +:: +New +) { + +20 +N +:: +Utf8Sg + + `th +( +fo +[0]); + +22 +FSEvts + * +f + = +w + + `FSEvts +(* +th +); + +23 +f +-> + `Wp +( +fo +. + `This +()); + +24 +N +:: + `S +( +fo +. + `This +(), N:: +New +< +v8 +:: +Sg +>("hdr"). + `ToLolChecked +(), info[1]); + +26 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +27 + } +} + +29 + $NAN_METHOD +( +FSEvts +:: +St +) { + +30 +FSEvts +* +f + = +N +:: +ObjeWp +:: +Unwp +( +fo +. + `This +()); + +32 +f +-> + `thadSt +(); + +33 +f +-> + `asyncSt +(); + +35 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +36 + } +} + +38 + $NAN_METHOD +( +FSEvts +:: +S +) { + +39 +FSEvts +* +f + = +N +:: +ObjeWp +:: +Unwp +( +fo +. + `This +()); + +40 +f +-> + `asyncS +(); + +41 +f +-> + `thadS +(); + +43 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +44 + } +} + + @interface/node_modules/jest-haste-map/node_modules/fsevents/src/storage.cc + +6  + sf_evt + { + +7 +UI64 + + mid +; + +8 +UI32 + + mags +; + +9 +CFSgRef + + mth +; + +11 +f_evt +( +CFSgRef + +evtPh +, +UI32 + +evtFg +, +UI64 + +evtId +) { + +12 + mthis +-> + mth + = +evtPh +; + +13 + mthis +-> + mags + = +evtFg +; + +14 + mthis +-> + mid + = +evtId +; + +15 i( + mthis +-> + mth + ! +NULL +) + +16 +CFRa +( +this +-> +th +); + +19 ~ +f_evt +() { + +20 i( + mthis +-> + mth + ! +NULL +) + +21 +CFR +( +this +-> +th +); + +24 + mive +: + +25 +f_evt +(const fse_event&); + +26  + mݔ +=(cڡ +f_evt +&); + + @interface/node_modules/jest-haste-map/node_modules/fsevents/src/thread.cc + +7 #ide +kFSEvtSmCeFgNe + + +8  + #kFSEvtSmCeFgNe + 0x00000000 + + ) + +11 #ide +kFSEvtSmCeFgUCFTys + + +12  + #kFSEvtSmCeFgUCFTys + 0x00000001 + + ) + +15 #ide +kFSEvtSmCeFgNoDer + + +16  + #kFSEvtSmCeFgNoDer + 0x00000002 + + ) + +19 #ide +kFSEvtSmCeFgWchRo + + +20  + #kFSEvtSmCeFgWchRo + 0x00000004 + + ) + +23 #ide +kFSEvtSmCeFgIgneSf + + +24  + #kFSEvtSmCeFgIgneSf + 0x00000008 + + ) + +27 #ide +kFSEvtSmCeFgFeEvts + + +28  + #kFSEvtSmCeFgFeEvts + 0x00000010 + + ) + +31  + gFSEvts +:: + $thadS +() { + +32 i( +thadlo +) ; + +33 i( + `uv_thad_ +(& +thad +, & +FSEvts +:: +thadRun +, +this +) + `abt +(); + +34 + } +} + +36  + $HdSmEvts +( +CڡFSEvtSmRef + +am +, * +x +, +size_t + +numEvts +, * +evtPhs +, cڡ +FSEvtSmEvtFgs + +evtFgs +[], cڡ +FSEvtSmEvtId + +evtIds +[]) { + +37 +FSEvts + * +f + = (FSEvt*) +x +; + +38 +size_t + +idx +; + +39 + `uv_mux_lock +(& +f +-> +mux +); + +40  +idx +=0; idx < +numEvts +; idx++) { + +41 +f_evt + * +evt + = +w + + `f_evt +( + +42 ( +CFSgRef +) + `CFAayGVueAtIndex +(( +CFAayRef +) +evtPhs +, +idx +), + +43 +evtFgs +[ +idx +], + +44 +evtIds +[ +idx +] + +46 +f +-> +evts +. + `push_back +( +evt +); + +48 +f +-> + `asyncTrigg +(); + +49 + `uv_mux_uock +(& +f +-> +mux +); + +50 + } +} + +52  + gFSEvts +:: + $thadRun +(* +x +) { + +53 +FSEvts + * +f + = (FSEvts*) +x +; + +54 +FSEvtSmCڋxt + +cڋxt + = { 0, +x +, +NULL +, NULL, NULL }; + +55 +f +-> +thadlo + = + `CFRunLoGCut +(); + +56 +FSEvtSmRef + +am + = + `FSEvtSmCe +( +NULL +, & +HdSmEvts +, & +cڋxt +, +f +-> +ths +, +kFSEvtSmEvtIdSNow +, ( +CFAbsuTime +0.1, +kFSEvtSmCeFgNe + | +kFSEvtSmCeFgWchRo + | +kFSEvtSmCeFgFeEvts + | +kFSEvtSmCeFgUCFTys +); + +57 + `FSEvtSmScheduWhRunLo +( +am +, +f +-> +thadlo +, +kCFRunLoDeuMode +); + +58 + `FSEvtSmS +( +am +); + +59 + `CFRunLoRun +(); + +60 + `FSEvtSmSt +( +am +); + +61 + `FSEvtSmUnscheduFromRunLo +( +am +, +f +-> +thadlo +, +kCFRunLoDeuMode +); + +62 + `FSEvtSmInvide +( +am +); + +63 + `FSEvtSmR +( +am +); + +64 +f +-> +thadlo + = +NULL +; + +65 + } +} + +67  + gFSEvts +:: + $thadSt +() { + +68 i(! +thadlo +) ; + +69 + `CFRunLoSt +( +thadlo +); + +70 i( + `uv_thad_jo +(& +thad +) + `abt +(); + +71 + } +} + + @interface/node_modules/nan/nan.h + +21 #ide +NAN_H_ + + +22  + #NAN_H_ + + + ) + +24  + ~ + +26  + #NODE_0_10_MODULE_VERSION + 11 + + ) + +27  + #NODE_0_12_MODULE_VERSION + 14 + + ) + +28  + #ATOM_0_21_MODULE_VERSION + 41 + + ) + +29  + #IOJS_1_0_MODULE_VERSION + 42 + + ) + +30  + #IOJS_1_1_MODULE_VERSION + 43 + + ) + +31  + #IOJS_2_0_MODULE_VERSION + 44 + + ) + +32  + #IOJS_3_0_MODULE_VERSION + 45 + + ) + +33  + #NODE_4_0_MODULE_VERSION + 46 + + ) + +34  + #NODE_5_0_MODULE_VERSION + 47 + + ) + +35  + #NODE_6_0_MODULE_VERSION + 48 + + ) + +36  + #NODE_7_0_MODULE_VERSION + 51 + + ) + +37  + #NODE_8_0_MODULE_VERSION + 57 + + ) + +38  + #NODE_9_0_MODULE_VERSION + 59 + + ) + +39  + #NODE_10_0_MODULE_VERSION + 64 + + ) + +40  + #NODE_11_0_MODULE_VERSION + 67 + + ) + +41  + #NODE_12_0_MODULE_VERSION + 72 + + ) + +42  + #NODE_13_0_MODULE_VERSION + 79 + + ) + +43  + #NODE_14_0_MODULE_VERSION + 83 + + ) + +45 #ifde +_MSC_VER + + +46  + #NAN_HAS_CPLUSPLUS_11 + ( +_MSC_VER + >1800) + + ) + +48  + #NAN_HAS_CPLUSPLUS_11 + ( +__lulus + >201103L) + + ) + +51 #i +NODE_MODULE_VERSION + > +IOJS_3_0_MODULE_VERSION + && ! +NAN_HAS_CPLUSPLUS_11 + + +52 #r +This + +vsi + +of + +node +/ +NAN +/ +v8 + +ques + +a + +C +++11 +comp + + +55  + ~ + +56  + ~ + +57  + ~ + +58  + ~ + +59  + ~ + +60  + ~ + +61  + ~ + +62  + ~ + +63  + ~ + +64 #i +defed +( +_MSC_VER +) + +65 #agm +wng + +push + ) + +66 #agm +wng + +dib + : 4530 ) + +67  + ~ + +68  + ~ + +69  + ~ + +70 #agm +wng + +p + ) + +72  + ~ + +73  + ~ + +74  + ~ + +78 #ifde +UV_VERSION_MAJOR + + +79 #ide +UV_VERSION_PATCH + + +80  + #UV_VERSION_PATCH + 0 + + ) + +82  + #NAUV_UVVERSION + (( +UV_VERSION_MAJOR + << 16) | \ + +83 ( +UV_VERSION_MINOR + << 8) | \ + +84 ( +UV_VERSION_PATCH +)) + + ) + +86  + #NAUV_UVVERSION + 0x000b00 + + ) + +89 #i +NAUV_UVVERSION + < 0x000b0b + +90 #ifde +WIN32 + + +91  + ~ + +93  + ~ + +97 +mea + + gN + { + +99  + #NAN_CONCAT +( +a +, +b + + `NAN_CONCAT_HELPER +, b) + + ) + +100  + #NAN_CONCAT_HELPER +( +a +, +b +a## + ) +b + +102  + #NAN_INLINE + +le + + +103 + + ) + +104 #i +defed +( +__GNUC__ +) && \ + +105 !( +defed +( +V8_DISABLE_DEPRECATIONS +&& + gV8_DISABLE_DEPRECATIONS +) + +106  + #NAN_DEPRECATED + + `__ibu__ +(( +dd +)) + + ) + +107 #i +defed +( +_MSC_VER +) && \ + +108 !( +defed +( +V8_DISABLE_DEPRECATIONS +&& + gV8_DISABLE_DEPRECATIONS +) + +109  + #NAN_DEPRECATED + + `__deec +( +dd +) + + ) + +111  + #NAN_DEPRECATED + + + ) + +114 #i +NAN_HAS_CPLUSPLUS_11 + + +115  + #NAN_DISALLOW_ASSIGN +( +CLASS + +ݔ +=(cڡ CLASS& +de +; + + ) + +116  + #NAN_DISALLOW_COPY +( +CLASS + + `CLASS +(cڡ CLASS& +de +; + + ) + +117  + #NAN_DISALLOW_MOVE +( +CLASS +) \ + +118 + `CLASS +( +CLASS +&& +de +; \ + +119  +ݔ +=( +CLASS +&& +de +; + + ) + +121  + #NAN_DISALLOW_ASSIGN +( +CLASS + +ݔ +=(cڡ CLASS&); + + ) + +122  + #NAN_DISALLOW_COPY +( +CLASS + + `CLASS +(cڡ CLASS&); + + ) + +123  + #NAN_DISALLOW_MOVE +( +CLASS +) + + ) + +126  + #NAN_DISALLOW_ASSIGN_COPY +( +CLASS +) \ + +127 + `NAN_DISALLOW_ASSIGN +( +CLASS +) \ + +128 + `NAN_DISALLOW_COPY +( +CLASS +) + + ) + +130  + #NAN_DISALLOW_ASSIGN_MOVE +( +CLASS +) \ + +131 + `NAN_DISALLOW_ASSIGN +( +CLASS +) \ + +132 + `NAN_DISALLOW_MOVE +( +CLASS +) + + ) + +134  + #NAN_DISALLOW_COPY_MOVE +( +CLASS +) \ + +135 + `NAN_DISALLOW_COPY +( +CLASS +) \ + +136 + `NAN_DISALLOW_MOVE +( +CLASS +) + + ) + +138  + #NAN_DISALLOW_ASSIGN_COPY_MOVE +( +CLASS +) \ + +139 + `NAN_DISALLOW_ASSIGN +( +CLASS +) \ + +140 + `NAN_DISALLOW_COPY +( +CLASS +) \ + +141 + `NAN_DISALLOW_MOVE +( +CLASS +) + + ) + +143  + #TYPE_CHECK +( +T +, +S +) \ + +144  +l +) { \ + +145 *( +ic_ +< +T + *vީ*>(0)ic_< +S +*>(0); \ + +146 } + + ) + +150 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +151  + gv8 +:: + tHd +< + tv8 +:: + tObje +> + tADDON_REGISTER_FUNCTION_ARGS_TYPE +; + +153  + gv8 +:: + tLol +< + tv8 +:: + tObje +> + tADDON_REGISTER_FUNCTION_ARGS_TYPE +; + +156  + #NAN_MODULE_INIT +( +me +) \ + +157  + `me +( +N +:: +ADDON_REGISTER_FUNCTION_ARGS_TYPE + +rg +) + + ) + +159 #i +NODE_MAJOR_VERSION + >= 10 || \ + +160 + gNODE_MAJOR_VERSION + =9 && +NODE_MINOR_VERSION + >= 3 + +161  + #NAN_MODULE_WORKER_ENABLED +( +modu_me +, +giti +) \ + +162 "C" +NODE_MODULE_EXPORT + \ + +163 + `NAN_CONCAT +( +node_gi_modu_v +, +NODE_MODULE_VERSION +)( \ + +164 +v8 +:: +Lol + +expts +, v8::Lol +modu +, \ + +165 +v8 +:: +Lol + +cڋxt +) \ + +167 + `giti +( +expts +); \ + +168 } + + ) + +170  + #NAN_MODULE_WORKER_ENABLED +( +modu_me +, +giti +) \ + +171 + `NODE_MODULE +( +modu_me +, +giti +) + + ) + +176  + ~"n_backs.h +" + +180 #i( +NODE_MODULE_VERSION + < +NODE_0_12_MODULE_VERSION +) + +181  +v8 +:: + tSt + + tUnboundSt +; + +182  + gv8 +:: + tSt + + tBoundSt +; + +184  + gv8 +:: + tUnboundSt + UnboundScript; + +185  + gv8 +:: + tSt + + tBoundSt +; + +188 #i( +NODE_MODULE_VERSION + < +ATOM_0_21_MODULE_VERSION +) + +189  + gv8 +:: + tSg +:: + tExAsciiSgResour + + +190 + tExOBySgResour +; + +192  + gv8 +:: + tSg +:: + tExOBySgResour + + +193 + tExOBySgResour +; + +196 #i( +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION +) + +197 + gme +< +tyme + + gT +> + +198 +ass + + gNCyabPsitTs + : + +199 +public + +v8 +:: +NCyabPsitTs +< +T +> {}; + +200 + gme +< +tyme + + gT +> + +201 +ass + + gCyabPsitTs + : + +202 +public + +v8 +:: +CyabPsitTs +< +T +> {}; + +204 + gme +< +tyme + + gT +> + +205 +ass + + gPsitBa + : + +206 +public + +v8 +:: +PsitBa +< +T +> {}; + +208 + gme +< +tyme + + gT +,ym + gM + = +v8 +:: +NCyabPsitTs +< +T +> > + +209 +ass + +Psit +; + +211 + gme +< +tyme + + gT +> +ass + + gNCyabPsitTs +; + +212 + gme +< +tyme + + gT +> +ass + + gPsitBa +; + +213 + gme +< +tyme + + gT +,ym + gP +> +ass + + gWkClbackDa +; + +214 + gme +< +tyme + + gT +,ym + gM + = +NCyabPsitTs +< +T +> > + +215 +ass + +Psit +; + +218 + gme +< +tyme + + gT +> + +219 as + cMaybe + { + +220 + gpublic +: + +221 +le + +bo + +IsNhg +(cڡ {  ! +has_vue_ +; } + +222 +le + +bo + +IsJu +(cڡ {  + ghas_vue_ +; } + +224 +le + +T + +ToChecked +(cڡ {  +FromJu +(); } + +225 +le +  +Check +(cڡ { +FromJu +(); } + +227 +le + +bo + +To +( +T +* +out +) const { + +228 i( +IsJu +()* + gout + = +vue_ +; + +229  +IsJu +(); + +232 +le + +T + +FromJu +() const { + +233 #i +defed +( +V8_ENABLE_CHECKS +) + +234 +as +( +IsJu +() && "FromJust is Nothing"); + +236  + gvue_ +; + +239 +le + +T + +FromMaybe +(cڡ T& +deu_vue +) const { + +240  + ghas_vue_ + ? + gvue_ + : +deu_vue +; + +243 +le + +bo + + gݔ +==(cڡ +Maybe + & +h +) const { + +244  ( +IsJu +(= +h +.IsJust()) && + +245 (! +IsJu +(|| +FromJu +(= +h +.FromJust()); + +248 +le + +bo + + gݔ +!=(cڡ +Maybe + & +h +) const { + +249  ! +ݔ +==( +h +); + +252 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +253 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +255 +Maybe +(cڡ +v8 +::Maybe< +T +>& +th +) + +256 : +has_vue_ +( +th +. +IsJu +()) + +257 , +vue_ +( +th +. +FromMaybe +( +T +())) {} + +260 + give +: + +261 +Maybe +(: +has_vue_ +( +l +) {} + +262 +exic + +Maybe +(cڡ +T +& +t +: +has_vue_ +( +ue +), +vue_ +(t) {} + +263 +bo + + ghas_vue_ +; + +264 +T + + gvue_ +; + +266 + gme +< +tyme + + gU +> + +267 +nd + + gMaybe +< + gU +> +Nhg +(); + +268 + gme +< +tyme + + gU +> + +269 +nd + + gMaybe +< + gU +> +Ju +(cڡ +U +& +u +); + +272 + gme +< +tyme + + gT +> + +273 +le + + gMaybe +< + gT +> + $Nhg +() { + +274  +Maybe +< +T +>(); + +275 + } +} + +277 + gme +< +tyme + + gT +> + +278 +le + + gMaybe +< + gT +> + $Ju +(cڡ +T +& +t +) { + +279  +Maybe +< +T +>( +t +); + +280 + } +} + +282 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +283 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +284  + ~"n_maybe_43_l.h +" + +286  + ~"n_maybe_e_43_l.h +" + +289  + ~"n_cvrs.h +" + +290  + ~"n_w.h +" + +292 #i +NAUV_UVVERSION + < 0x000b17 + +293  + #NAUV_WORK_CB +( +func +) \ + +294  + $func +( +uv_async_t + * +async +, ) + + ) + +296  + #NAUV_WORK_CB +( +func +) \ + +297  + $func +( +uv_async_t + * +async +) + + ) + +300 #i +NAUV_UVVERSION + >= 0x000b0b + +302  +uv_key_t + + tuv_key_t +; + +304 +le +  + $uv_key_ +( +uv_key_t + * +key +) { + +305  + `uv_key_ +( +key +); + +306 + } +} + +308 +le +  + $uv_key_de +( +uv_key_t + * +key +) { + +309 + `uv_key_de +( +key +); + +310 + } +} + +312 +le + * + $uv_key_g +( +uv_key_t + * +key +) { + +313  + `uv_key_g +( +key +); + +314 + } +} + +316 +le +  + $uv_key_t +( +uv_key_t + * +key +, * +vue +) { + +317 + `uv_key_t +( +key +, +vue +); + +318 + } +} + +327 #ide +WIN32 + + +329  +had_key_t + + tuv_key_t +; + +331 +le +  + $uv_key_ +( +uv_key_t +* +key +) { + +332  - + `had_key_ +( +key +, +NULL +); + +333 + } +} + +335 +le +  + $uv_key_de +( +uv_key_t +* +key +) { + +336 i( + `had_key_de +(* +key +)) + +337 + `abt +(); + +338 + } +} + +340 +le + * + $uv_key_g +( +uv_key_t +* +key +) { + +341  + `had_gecific +(* +key +); + +342 + } +} + +344 +le +  + $uv_key_t +( +uv_key_t +* +key +, * +vue +) { + +345 i( + `had_tecific +(* +key +, +vue +)) + +346 + `abt +(); + +347 + } +} + +352 +DWORD + + gs_dex +; + +353 } + tuv_key_t +; + +355 +le +  + $uv_key_ +( +uv_key_t +* +key +) { + +356 +key +-> +s_dex + = + `TlsAoc +(); + +357 i( +key +-> +s_dex + = +TLS_OUT_OF_INDEXES +) + +358  +UV_ENOMEM +; + +360 + } +} + +362 +le +  + $uv_key_de +( +uv_key_t +* +key +) { + +363 i( + `TlsFe +( +key +-> +s_dex += +FALSE +) + +364 + `abt +(); + +365 +key +-> +s_dex + = +TLS_OUT_OF_INDEXES +; + +366 + } +} + +368 +le + * + $uv_key_g +( +uv_key_t +* +key +) { + +369 * +vue + = + `TlsGVue +( +key +-> +s_dex +); + +370 i( +vue + = +NULL +) + +371 i( + `GLaE +(! +ERROR_SUCCESS +) + +372 + `abt +(); + +373  +vue +; + +374 + } +} + +376 +le +  + $uv_key_t +( +uv_key_t +* +key +, * +vue +) { + +377 i( + `TlsSVue +( +key +-> +s_dex +, +vue += +FALSE +) + +378 + `abt +(); + +379 + } +} + +384 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +385 + gme +< +tyme + + gT +> + +386 + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Hd +); + +389 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +390 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +391  +v8 +:: + tWkClbackTy + WeakCallbackType; + +393  + sWkClbackTy + { + +394 + eE + { + gkPam +, + gkIlFlds +}; + +395 +E + + gty +; + +396 +WkClbackTy +( +E + +h +: +ty +(other) {} + +397 +le + +bo + +ݔ +==( +E + +h +{  oth = +this +-> +ty +; } + +398 +le + +bo + + gݔ +!=( +E + +h +{  ! +ݔ +==(other); } + +402 + gme +< +tyme + + gP +> +ass + + gWkClbackInfo +; + +404 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +405  + ~"n_rsit_12_l.h +" + +407  + ~"n_rsit_e_12_l.h +" + +410 +mea + + gimp + { + +411 cڡ +size_t + + gkMaxLgth + = 0x3fffffff; + +414 #i +NODE_MAJOR_VERSION + > 0 || \ + +415 + gNODE_MINOR_VERSION + > 10 || \ + +416 + gNODE_MINOR_VERSION + =10 && +NODE_PATCH_VERSION + >= 29 || \ + +417 +NODE_MINOR_VERSION + =8 && +NODE_PATCH_VERSION + >= 27 + +418 cڡ  +kRInvidUtf8 + = +v8 +:: +Sg +:: +REPLACE_INVALID_UTF8 +; + +420 cڡ  + gkRInvidUtf8 + = 0; + +426 as + cHdSce + { + +427 + gv8 +:: +HdSce + +sce +; + +429 + gpublic +: + +430 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +431 +le + +HdSce +(: +sce +( +v8 +:: +Isީe +:: +GCut +()) {} + +432 +le +  +NumbOfHds +() { + +433  +v8 +:: +HdSce +:: +NumbOfHds +(v8:: +Isީe +:: +GCut +()); + +436 +le + +HdSce +(: +sce +() {} + +437 +le +  +NumbOfHds +() { + +438  +v8 +:: +HdSce +:: +NumbOfHds +(); + +442 + give +: + +445 +HdSce +(const HandleScope &); + +446  + gݔ +=(cڡ +HdSce + &); + +447 * +ݔ + +w +( +size_t + +size +); + +448  +ݔ + +de +(*, +size_t +) { + +449 +abt +(); + +453 as + cEsbHdSce + { + +454 + gpublic +: + +455 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +456 +le + +EsbHdSce +(: +sce +( +v8 +:: +Isީe +:: +GCut +()) {} + +458 +le +  +NumbOfHds +() { + +459  +v8 +:: +EsbHdSce +:: +NumbOfHds +(v8:: +Isީe +:: +GCut +()); + +462 + gme +< +tyme + + gT +> + +463 +le + + gv8 +:: +Lol +< +T +> +Es +( +v8 +::Lol +vue +) { + +464  +sce +. +Es +( +vue +); + +467 + give +: + +468 +v8 +:: +EsbHdSce + +sce +; + +470 +le + +EsbHdSce +(: +sce +() {} + +472 +le +  +NumbOfHds +() { + +473  +v8 +:: +HdSce +:: +NumbOfHds +(); + +476 + gme +< +tyme + + gT +> + +477 +le + + gv8 +:: +Lol +< +T +> +Es +( +v8 +::Lol +vue +) { + +478  +sce +. +Clo +( +vue +); + +481 + give +: + +482 +v8 +:: +HdSce + +sce +; + +485 + give +: + +488 +EsbHdSce +(const EscapableHandleScope &); + +489  + gݔ +=(cڡ +EsbHdSce + &); + +490 * +ݔ + +w +( +size_t + +size +); + +491  +ݔ + +de +(*, +size_t +) { + +492 +abt +(); + +498 as + cTryCch + { + +499 + gv8 +:: +TryCch + +y_tch_ +; + +500 +nd +  +FExi +(cڡ +TryCch +&); + +502 + gpublic +: + +503 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +504 +TryCch +(: +y_tch_ +( +v8 +:: +Isީe +:: +GCut +()) {} + +507 +le + +bo + +HasCaught +(cڡ {  +y_tch_ +.HasCaught(); } + +509 +le + +bo + +CCtue +(cڡ {  + gy_tch_ +.CanContinue(); } + +511 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +ReThrow +() { + +512 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +513  +New +( +y_tch_ +. +ReThrow +()); + +515  + gy_tch_ +. +ReThrow +(); + +519 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +Exi +() const { + +520  +y_tch_ +. +Exi +(); + +523 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +524 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +525 +le + +v8 +:: +MaybeLol + +SckT +() const { + +526 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +527 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +528  + gsce +. +Es +( +y_tch_ +. +SckT +( +isީe +-> +GCutCڋxt +()) + +529 . +FromMaybe +( +v8 +:: +Lol +())); + +532 +le + + gMaybeLol +< + gv8 +:: +Vue +> +SckT +() const { + +533  +y_tch_ +. +SckT +(); + +537 +le + + gv8 +:: +Lol +< +v8 +:: +Mesge +> Message() const { + +538  +y_tch_ +. +Mesge +(); + +541 +le +  +Ret +({ + gy_tch_ +.Reset(); } + +543 +le +  +SVbo +( +bo + +vue +{ + gy_tch_ +.SetVerbose(value); } + +545 +le +  +SCtuMesge +( +bo + +vue +) { + +546 + gy_tch_ +. +SCtuMesge +( +vue +); + +550 + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +(v8::Lol +rg +, + +551 +v8 +:: +Lol + +func +, + +552  +gc +, + +553 +v8 +:: +Lol +* +gv +); + +554 + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +(v8::Lol +rg +, + +555 +v8 +:: +Lol + +symb +, + +556  +gc +, + +557 +v8 +:: +Lol +* +gv +); + +558 + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +(v8::Lol +rg +, + +559 cڡ * +mhod +, + +560  +gc +, + +561 +v8 +:: +Lol +* +gv +); + +565 as + cAsyncResour + { + +566 + gpublic +: + +567 +AsyncResour +( + +568 +v8 +:: +Lol + +me + + +569 , +v8 +:: +Lol + +sour + = +New +()) { + +570 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +571 +v8 +:: +Isީe +* +isީe + = v8::Isީe:: +GCut +(); + +573 i( + gsour +. +IsEmy +()) { + +574 + gsour + = +New +< +v8 +:: +Obje +>(); + +577 + gcڋxt + = +node +:: +EmAsyncIn +( +isީe +, +sour +, +me +); + +581 +AsyncResour +( + +582 cڡ * +me + + +583 , +v8 +:: +Lol + +sour + = +New +()) { + +584 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +585 +v8 +:: +Isީe +* +isީe + = v8::Isީe:: +GCut +(); + +587 i( + gsour +. +IsEmy +()) { + +588 + gsour + = +New +< +v8 +:: +Obje +>(); + +591 + gv8 +:: +Lol +< +v8 +:: +Sg +> +me_rg + = + +592 +New +< +v8 +:: +Sg +>( +me +). +ToLolChecked +(); + +593 + gcڋxt + = +node +:: +EmAsyncIn +( +isީe +, +sour +, +me_rg +); + +597 ~ +AsyncResour +() { + +598 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +599 + gv8 +:: +Isީe +* +isީe + = +v8 +::Isީe:: +GCut +(); + +600 + gnode +:: +EmAsyncDeroy +( +isީe +, +cڋxt +); + +604 +le + + gMaybeLol +< + gv8 +:: +Vue +> +runInAsyncSce +( + +605 +v8 +:: +Lol + +rg + + +606 , +v8 +:: +Lol + +func + + +607 ,  +gc + + +608 , +v8 +:: +Lol +* +gv +) { + +609 #i +NODE_MODULE_VERSION + < +NODE_9_0_MODULE_VERSION + + +610  +MakeClback +( +rg +, +func +, +gc +, +gv +); + +612  + gnode +:: +MakeClback +( + +613 +v8 +:: +Isީe +:: +GCut +(), +rg +, +func +, +gc +, +gv +, +cڋxt +); + +617 +le + + gMaybeLol +< + gv8 +:: +Vue +> +runInAsyncSce +( + +618 +v8 +:: +Lol + +rg + + +619 , +v8 +:: +Lol + +symb + + +620 ,  +gc + + +621 , +v8 +:: +Lol +* +gv +) { + +622 #i +NODE_MODULE_VERSION + < +NODE_9_0_MODULE_VERSION + + +623  +MakeClback +( +rg +, +symb +, +gc +, +gv +); + +625  + gnode +:: +MakeClback +( + +626 +v8 +:: +Isީe +:: +GCut +(), +rg +, +symb +, +gc +, +gv +, +cڋxt +); + +630 +le + + gMaybeLol +< + gv8 +:: +Vue +> +runInAsyncSce +( + +631 +v8 +:: +Lol + +rg + + +632 , cڡ * +mhod + + +633 ,  +gc + + +634 , +v8 +:: +Lol +* +gv +) { + +635 #i +NODE_MODULE_VERSION + < +NODE_9_0_MODULE_VERSION + + +636  +MakeClback +( +rg +, +mhod +, +gc +, +gv +); + +638  + gnode +:: +MakeClback +( + +639 +v8 +:: +Isީe +:: +GCut +(), +rg +, +mhod +, +gc +, +gv +, +cڋxt +); + +643 + give +: + +644 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +AsyncResour +) + +645 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +646 +node +:: +async_cڋxt + +cڋxt +; + +650 +le + +uv_lo_t +* + $GCutEvtLo +() { + +651 #i +NODE_MAJOR_VERSION + >= 10 || \ + +652 +NODE_MAJOR_VERSION + =9 && +NODE_MINOR_VERSION + >= 3 || \ + +653 +NODE_MAJOR_VERSION + =8 && +NODE_MINOR_VERSION + >= 10 + +654  +node +:: + `GCutEvtLo +( +v8 +:: +Isީe +:: + `GCut +()); + +656  + `uv_deu_lo +(); + +658 + } +} + +663 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +664 +le + + +665  + $SCouFuni +( +v8 +:: +CouLookupClback + +cb +) { + +666 +v8 +:: +Isީe +:: + `GCut +()-> + `SCouFuni +( +cb +); + +667 + } +} + +669 +le + + +670  + $SCeHiogmFuni +( +v8 +:: +CeHiogmClback + +cb +) { + +671 +v8 +:: +Isީe +:: + `GCut +()-> + `SCeHiogmFuni +( +cb +); + +672 + } +} + +674 +le + + +675  + $SAddHiogmSameFuni +( +v8 +:: +AddHiogmSameClback + +cb +) { + +676 +v8 +:: +Isީe +:: + `GCut +()-> + `SAddHiogmSameFuni +( +cb +); + +677 + } +} + +679 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +680 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +681 +le + +bo + + $IdNifiti +( +id_time__ms +) { + +682  +v8 +:: +Isީe +:: + `GCut +()-> + `IdNifitiDdle +( + +683 +id_time__ms + * 0.001); + +684 + } +} + +686 +le + +bo + + $IdNifiti +( +id_time__ms +) { + +687  +v8 +:: +Isީe +:: + `GCut +()-> + `IdNifiti +( +id_time__ms +); + +688 + } +} + +691 +le +  + $LowMemyNifiti +() { + +692 +v8 +:: +Isީe +:: + `GCut +()-> + `LowMemyNifiti +(); + +693 + } +} + +695 +le +  + $CڋxtDiodNifiti +() { + +696 +v8 +:: +Isީe +:: + `GCut +()-> + `CڋxtDiodNifiti +(); + +697 + } +} + +699 +le + + +700  + $SCouFuni +( +v8 +:: +CouLookupClback + +cb +) { + +701 +v8 +:: +V8 +:: + `SCouFuni +( +cb +); + +702 + } +} + +704 +le + + +705  + $SCeHiogmFuni +( +v8 +:: +CeHiogmClback + +cb +) { + +706 +v8 +:: +V8 +:: + `SCeHiogmFuni +( +cb +); + +707 + } +} + +709 +le + + +710  + $SAddHiogmSameFuni +( +v8 +:: +AddHiogmSameClback + +cb +) { + +711 +v8 +:: +V8 +:: + `SAddHiogmSameFuni +( +cb +); + +712 + } +} + +714 +le + +bo + + $IdNifiti +( +id_time__ms +) { + +715  +v8 +:: +V8 +:: + `IdNifiti +( +id_time__ms +); + +716 + } +} + +718 +le +  + $LowMemyNifiti +() { + +719 +v8 +:: +V8 +:: + `LowMemyNifiti +(); + +720 + } +} + +722 +le +  + $CڋxtDiodNifiti +() { + +723 +v8 +:: +V8 +:: + `CڋxtDiodNifiti +(); + +724 + } +} + +727 #i( +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION +) + +728 +le + + gv8 +:: +Lol +< +v8 +:: +Primive +> + $Undefed +() { + +729 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +730 +EsbHdSce + +sce +; + +731  +sce +. + `Es +( + `New +( +v8 +:: + `Undefed +(v8:: +Isީe +:: + `GCut +()))); + +733  +v8 +:: + `Undefed +(v8:: +Isީe +:: + `GCut +()); + +735 + } +} + +737 +le + + gv8 +:: +Lol +< +v8 +:: +Primive +> + $Nu +() { + +738 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +739 +EsbHdSce + +sce +; + +740  +sce +. + `Es +( + `New +( +v8 +:: + `Nu +(v8:: +Isީe +:: + `GCut +()))); + +742  +v8 +:: + `Nu +(v8:: +Isީe +:: + `GCut +()); + +744 + } +} + +746 +le + + gv8 +:: +Lol +< +v8 +:: +Boޗn +> + $True +() { + +747 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +748 +EsbHdSce + +sce +; + +749  +sce +. + `Es +( + `New +( +v8 +:: + `True +(v8:: +Isީe +:: + `GCut +()))); + +751  +v8 +:: + `True +(v8:: +Isީe +:: + `GCut +()); + +753 + } +} + +755 +le + + gv8 +:: +Lol +< +v8 +:: +Boޗn +> + $F +() { + +756 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +757 +EsbHdSce + +sce +; + +758  +sce +. + `Es +( + `New +( +v8 +:: + `F +(v8:: +Isީe +:: + `GCut +()))); + +760  +v8 +:: + `F +(v8:: +Isީe +:: + `GCut +()); + +762 + } +} + +764 +le + + gv8 +:: +Lol +< +v8 +:: +Sg +> + $EmySg +() { + +765  +v8 +:: +Sg +:: + `Emy +(v8:: +Isީe +:: + `GCut +()); + +766 + } +} + +768 +le +  + $AdjuExMemy +( +bc +) { + +769  +ic_ +<>( + +770 +v8 +:: +Isީe +:: + `GCut +()-> + `AdjuAmouOfExAodMemy +( +bc +)); + +771 + } +} + +773 +le +  +STeme +( + +774 +v8 +:: +Lol + +m + + +775 , cڡ * +me + + +776 , +v8 +:: +Lol + +vue +) { + +777 +m +-> +S +( +v8 +:: +Isީe +:: +GCut +(), +me +, +vue +); + +780 +le +  +STeme +( + +781 +v8 +:: +Lol + +m + + +782 , +v8 +:: +Lol + +me + + +783 , +v8 +:: +Lol + +vue + + +784 , +v8 +:: +PrݔtyAribu + +ibus +) { + +785 +m +-> +S +( +me +, +vue +, +ibus +); + +788 +le + + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> + $GCutCڋxt +() { + +789  +v8 +:: +Isީe +:: + `GCut +()-> + `GCutCڋxt +(); + +790 + } +} + +792 +le + * +GIlFldPor +( + +793 +v8 +:: +Lol + +obje + + +794 ,  +dex +) { + +795  + gobje +-> +GAligdPorFromIlFld +( +dex +); + +798 +le +  +SIlFldPor +( + +799 +v8 +:: +Lol + +obje + + +800 ,  +dex + + +801 , * +vue +) { + +802 + gobje +-> +SAligdPorInIlFld +( +dex +, +vue +); + +805  + #NAN_GC_CALLBACK +( +me +) \ + +806  + $me +( +v8 +:: +Isީe + * +isީe +, v8:: +GCTy + +ty +, v8:: +GCClbackFgs + +ags +) + + ) + +808 #i +NODE_MODULE_VERSION + < +NODE_4_0_MODULE_VERSION + + +809  +v8 +:: + tIsީe +:: + tGCEpogueClback + GCEpilogueCallback; + +810  +v8 +:: + tIsީe +:: + tGCProgueClback + GCPrologueCallback; + +812  +v8 +:: + tIsީe +:: + tGCClback + + tGCEpogueClback +; + +813  +v8 +:: + tIsީe +:: + tGCClback + + tGCProgueClback +; + +816 +le +  + $AddGCEpogueClback +( + +817 +GCEpogueClback + +back + + +818 , +v8 +:: +GCTy + +gc_ty_fr + = v8:: +kGCTyA +) { + +819 +v8 +:: +Isީe +:: + `GCut +()-> + `AddGCEpogueClback +( +back +, +gc_ty_fr +); + +820 + } +} + +822 +le +  + $RemoveGCEpogueClback +( + +823 +GCEpogueClback + +back +) { + +824 +v8 +:: +Isީe +:: + `GCut +()-> + `RemoveGCEpogueClback +( +back +); + +825 + } +} + +827 +le +  + $AddGCProgueClback +( + +828 +GCProgueClback + +back + + +829 , +v8 +:: +GCTy + +gc_ty_fr + = v8:: +kGCTyA +) { + +830 +v8 +:: +Isީe +:: + `GCut +()-> + `AddGCProgueClback +( +back +, +gc_ty_fr +); + +831 + } +} + +833 +le +  + $RemoveGCProgueClback +( + +834 +GCProgueClback + +back +) { + +835 +v8 +:: +Isީe +:: + `GCut +()-> + `RemoveGCProgueClback +( +back +); + +836 + } +} + +838 +le +  + $GHpStiics +( + +839 +v8 +:: +HpStiics + * +hp_iics +) { + +840 +v8 +:: +Isީe +:: + `GCut +()-> + `GHpStiics +( +hp_iics +); + +841 + } +} + +843  + #X +( +NAME +) \ + +844 +le + +v8 +:: +Lol + + $NAME +(cڡ * +msg +) { \ + +845 +EsbHdSce + +sce +; \ + +846  +sce +. + `Es +( +v8 +:: +Exi +:: + `NAME +( + `New +( +msg +). + `ToLolChecked +())); \ + +847 + } +} \ + +849 +le + \ + +850 +v8 +:: +Lol + + `NAME +(v8::Lol +msg +) { \ + +851  +v8 +:: +Exi +:: + `NAME +( +msg +); \ + +854 +le +  +Throw + ## + $NAME +(cڡ * +msg +) { \ + +855 +HdSce + +sce +; \ + +856 +v8 +:: +Isީe +:: + `GCut +()-> + `ThrowExi +( \ + +857 +v8 +:: +Exi +:: + `NAME +( + `New +( +msg +). + `ToLolChecked +())); \ + +858 + } +} \ + +860 +le +  +Throw + ## + `NAME +( +v8 +:: +Lol + +msg +) { \ + +861 +HdSce + +sce +; \ + +862 +v8 +:: +Isީe +:: + `GCut +()-> + `ThrowExi +( \ + +863 +v8 +:: +Exi +:: + `NAME +( +msg +)); \ + +864 } + + ) + +866 + $X +( +E +) + +867 + $X +( +RgeE +) + +868 + $X +( +RenE +) + +869 + $X +( +SyaxE +) + +870 + $X +( +TyE +) + +872 #unde +X + + +874 +le +  + `ThrowE +( +v8 +:: +Lol + +r +) { + +875 +v8 +:: +Isީe +:: + `GCut +()-> + `ThrowExi +( +r +); + +876 + } +} + +878 +le + + gMaybeLol +< + gv8 +:: +Obje +> +NewBufr +( + +879 * +da + + +880 , +size_t + +ngth + + +881 #i +NODE_MODULE_VERSION + > +IOJS_2_0_MODULE_VERSION + + +882 , +node +:: +Bufr +:: +FeClback + +back + + +884 , +node +:: +smloc +:: +FeClback + +back + + +886 , * +ht + + +890 +as +( +ngth + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +891 #i +NODE_MODULE_VERSION + > +IOJS_2_0_MODULE_VERSION + + +892  + gnode +:: +Bufr +:: +New +( + +893 +v8 +:: +Isީe +:: +GCut +(), +da +, +ngth +, +back +, +ht +); + +895  + gnode +:: +Bufr +:: +New +( +v8 +:: +Isީe +:: +GCut +(), +da +, +ngth +, +back +, + +896 +ht +); + +900 +le + + gMaybeLol +< + gv8 +:: +Obje +> + $CyBufr +( + +901 cڡ * +da + + +902 , +ut32_t + +size + + +906 + `as +( +size + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +907 #i +NODE_MODULE_VERSION + > +IOJS_2_0_MODULE_VERSION + + +908  +node +:: +Bufr +:: + `Cy +( + +909 +v8 +:: +Isީe +:: + `GCut +(), +da +, +size +); + +911  +node +:: +Bufr +:: + `New +( +v8 +:: +Isީe +:: + `GCut +(), +da +, +size +); + +913 + } +} + +915 +le + + gMaybeLol +< + gv8 +:: +Obje +> + $NewBufr +( +ut32_t + +size +) { + +918 + `as +( +size + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +919 #i +NODE_MODULE_VERSION + > +IOJS_2_0_MODULE_VERSION + + +920  +node +:: +Bufr +:: + `New +( + +921 +v8 +:: +Isީe +:: + `GCut +(), +size +); + +923  +node +:: +Bufr +:: + `New +( +v8 +:: +Isީe +:: + `GCut +(), +size +); + +925 + } +} + +927 +le + + gMaybeLol +< + gv8 +:: +Obje +> + $NewBufr +( + +928 * +da + + +929 , +ut32_t + +size + + +933 + `as +( +size + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +934 #i +NODE_MODULE_VERSION + > +IOJS_2_0_MODULE_VERSION + + +935  +node +:: +Bufr +:: + `New +( +v8 +:: +Isީe +:: + `GCut +(), +da +, +size +); + +937  +node +:: +Bufr +:: + `U +( +v8 +:: +Isީe +:: + `GCut +(), +da +, +size +); + +939 + } +} + +941 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +942 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +943 +le + +MaybeLol +< +v8 +:: +Sg +> + +944 +NewOBySg +(cڡ +ut8_t + * +vue +,  +ngth + = -1) { + +945  +v8 +:: +Sg +:: +NewFromOBy +(v8:: +Isީe +:: +GCut +(), +vue +, + +946 +v8 +:: +NewSgTy +:: +kNm +, +ngth +); + +949 +le + + gMaybeLol +< + gBoundSt +> +CompeSt +( + +950 +v8 +:: +Lol + +s + + +951 , cڡ +v8 +:: +StOrig +& +ig + + +953 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +954 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +955 + gv8 +:: +StComp +:: +Sour + +sour +( +s +, +ig +); + +956  + gsce +. +Es +( + +957 +v8 +:: +StComp +:: +Compe +( +isީe +-> +GCutCڋxt +(), & +sour +) + +958 . +FromMaybe +( +v8 +:: +Lol +< +BoundSt +>())); + +961 +le + + gMaybeLol +< + gBoundSt +> +CompeSt +( + +962 +v8 +:: +Lol + +s + + +964 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +965 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +966 + gv8 +:: +StComp +:: +Sour + +sour +( +s +); + +967  + gsce +. +Es +( + +968 +v8 +:: +StComp +:: +Compe +( +isީe +-> +GCutCڋxt +(), & +sour +) + +969 . +FromMaybe +( +v8 +:: +Lol +< +BoundSt +>())); + +972 +le + + gMaybeLol +< + gv8 +:: +Vue +> +RunSt +( + +973 +v8 +:: +Lol +< +UnboundSt +> +st + + +975 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +976 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +977  + gsce +. +Es +( +st +-> +BdToCutCڋxt +() + +978 -> +Run +( +isީe +-> +GCutCڋxt +()) + +979 . +FromMaybe +( +v8 +:: +Lol +())); + +982 +le + + gMaybeLol +< + gv8 +:: +Vue +> +RunSt +( + +983 +v8 +:: +Lol +< +BoundSt +> +st + + +985 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +986 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +987  + gsce +. +Es +( +st +-> +Run +( +isީe +-> +GCutCڋxt +()) + +988 . +FromMaybe +( +v8 +:: +Lol +())); + +991 +le + + gMaybeLol +< + gv8 +:: +Sg +> + +992 +NewOBySg +(cڡ +ut8_t + * +vue +,  +ngth + = -1) { + +993  +v8 +:: +Sg +:: +NewFromOBy +(v8:: +Isީe +:: +GCut +(), +vue +, + +994 +v8 +:: +Sg +:: +kNmSg +, +ngth +); + +997 +le + + gMaybeLol +< + gBoundSt +> +CompeSt +( + +998 +v8 +:: +Lol + +s + + +999 , cڡ +v8 +:: +StOrig +& +ig + + +1001 +v8 +:: +StComp +:: +Sour + +sour +( +s +, +ig +); + +1002  + gv8 +:: +StComp +:: +Compe +( +v8 +:: +Isީe +:: +GCut +(), & +sour +); + +1005 +le + + gMaybeLol +< + gBoundSt +> +CompeSt +( + +1006 +v8 +:: +Lol + +s + + +1008 +v8 +:: +StComp +:: +Sour + +sour +( +s +); + +1009  + gv8 +:: +StComp +:: +Compe +( +v8 +:: +Isީe +:: +GCut +(), & +sour +); + +1012 +le + + gMaybeLol +< + gv8 +:: +Vue +> +RunSt +( + +1013 +v8 +:: +Lol +< +UnboundSt +> +st + + +1015 +EsbHdSce + +sce +; + +1016  + gsce +. +Es +( +st +-> +BdToCutCڋxt +()-> +Run +()); + +1019 +le + + gMaybeLol +< + gv8 +:: +Vue +> +RunSt +( + +1020 +v8 +:: +Lol +< +BoundSt +> +st + + +1022  +st +-> +Run +(); + +1026 +NAN_DEPRECATED + +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +( + +1027 +v8 +:: +Lol + +rg + + +1028 , +v8 +:: +Lol + +func + + +1029 ,  +gc + + +1030 , +v8 +:: +Lol +* +gv +) { + +1031 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +1032 +EsbHdSce + +sce +; + +1033  + gsce +. +Es +( +New +( +node +:: +MakeClback +( + +1034 +v8 +:: +Isީe +:: +GCut +(), +rg +, +func +, +gc +, +gv +))); + +1036 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1037 +AsyncResour + +s +("nan:makeCallback"); + +1038  + gs +. +runInAsyncSce +( +rg +, +func +, +gc +, +gv +) + +1039 . +FromMaybe +( +v8 +:: +Lol +()); + +1041  + gnode +:: +MakeClback +( + +1042 +v8 +:: +Isީe +:: +GCut +(), +rg +, +func +, +gc +, +gv +); + +1047 +NAN_DEPRECATED + +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +( + +1048 +v8 +:: +Lol + +rg + + +1049 , +v8 +:: +Lol + +symb + + +1050 ,  +gc + + +1051 , +v8 +:: +Lol +* +gv +) { + +1052 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +1053 +EsbHdSce + +sce +; + +1054  + gsce +. +Es +( +New +( +node +:: +MakeClback +( + +1055 +v8 +:: +Isީe +:: +GCut +(), +rg +, +symb +, +gc +, +gv +))); + +1057 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1058 +AsyncResour + +s +("nan:makeCallback"); + +1059  + gs +. +runInAsyncSce +( +rg +, +symb +, +gc +, +gv +) + +1060 . +FromMaybe +( +v8 +:: +Lol +()); + +1062  + gnode +:: +MakeClback +( + +1063 +v8 +:: +Isީe +:: +GCut +(), +rg +, +symb +, +gc +, +gv +); + +1068 +NAN_DEPRECATED + +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +( + +1069 +v8 +:: +Lol + +rg + + +1070 , cڡ * +mhod + + +1071 ,  +gc + + +1072 , +v8 +:: +Lol +* +gv +) { + +1073 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +1074 +EsbHdSce + +sce +; + +1075  + gsce +. +Es +( +New +( +node +:: +MakeClback +( + +1076 +v8 +:: +Isީe +:: +GCut +(), +rg +, +mhod +, +gc +, +gv +))); + +1078 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1079 +AsyncResour + +s +("nan:makeCallback"); + +1080  + gs +. +runInAsyncSce +( +rg +, +mhod +, +gc +, +gv +) + +1081 . +FromMaybe +( +v8 +:: +Lol +()); + +1083  + gnode +:: +MakeClback +( + +1084 +v8 +:: +Isީe +:: +GCut +(), +rg +, +mhod +, +gc +, +gv +); + +1089 +le +  + $FExi +(cڡ +TryCch +& +y_tch +) { + +1090 +node +:: + `FExi +( +v8 +:: +Isީe +:: + `GCut +(), +y_tch +. +y_tch_ +); + +1091 + } +} + +1093 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $EnoExi +( + +1094  +rno + + +1095 , cڡ * +sys + = +NULL + + +1096 , cڡ * +mesge + = +NULL + + +1097 , cڡ * +th + = +NULL +) { + +1098  +node +:: + `EnoExi +( +v8 +:: +Isީe +:: + `GCut +(), +rno +, +sys +, + +1099 +mesge +, +th +); + +1100 + } +} + +1102 +NAN_DEPRECATED + +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $NEnoExi +( + +1103  +rno + + +1104 , cڡ * +sys + = +NULL + + +1105 , cڡ * +mesge + = +NULL + + +1106 , cڡ * +th + = +NULL +) { + +1107  + `EnoExi +( +rno +, +sys +, +mesge +, +th +); + +1108 + } +} + +1110 + gme +< +tyme + + gT +> + +1111 +le +  + $SIsީeDa +( + +1112 +v8 +:: +Isީe + * +isީe + + +1113 , +T + * +da + + +1115 +isީe +-> + `SDa +(0, +da +); + +1116 + } +} + +1118 + gme +< +tyme + + gT +> + +1119 +le + +T + * + $GIsީeDa +( + +1120 +v8 +:: +Isީe + * +isީe + + +1122  +ic_ +< +T +*>( +isީe +-> + `GDa +(0)); + +1123 + } +} + +1125 as + cUtf8Sg + { + +1126 + gpublic +: + +1127 +le + +exic + +Utf8Sg +( +v8 +:: +Lol + +om +) : + +1128 +ngth_ +(0), +r_ +( +r__ +) { + +1129 +HdSce + + gsce +; + +1130 i(! + gom +. +IsEmy +()) { + +1131 #i +NODE_MAJOR_VERSION + >= 10 + +1132 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +GCutCڋxt +(); + +1133 + gv8 +:: +Lol +< +v8 +:: +Sg +> +rg + = + +1134 +om +-> +ToSg +( +cڋxt +). +FromMaybe +( +v8 +:: +Lol +()); + +1136 + gv8 +:: +Lol +< +v8 +:: +Sg +> +rg + = +om +-> +ToSg +(); + +1138 i(! + grg +. +IsEmy +()) { + +1139 +size_t + + gn + = 3 * +rg +-> +Lgth +() + 1; + +1140 +as +( +n + < +INT_MAX +); + +1141 i( + gn + >  ( + gr__ +)) { + +1142 + gr_ + = +ic_ +<*>( +mloc +( +n +)); + +1143 +as +( +r_ + != 0); + +1145 cڡ  + gags + = + +1146 +v8 +:: +Sg +:: +NO_NULL_TERMINATION + | +imp +:: +kRInvidUtf8 +; + +1147 #i +NODE_MAJOR_VERSION + >= 11 + +1148 + gngth_ + = +rg +-> +WreUtf8 +( +v8 +:: +Isީe +:: +GCut +(), +r_ +, + +1149 +ic_ +<>( +n +), 0, +ags +); + +1153 #ifde +_MSC_VER + + +1154 #agm +wng +( +push +) + +1155 #agm +wng +( +dib + : 4996) + +1157 #ifde +__GNUC__ + + +1158 #agm +GCC + +dgnoic + +push + + +1159 #agm +GCC + +dgnoic + +igned + "-Wdeprecated-declarations" + +1161 + gngth_ + = +rg +-> +WreUtf8 +( +r_ +, +ic_ +<>( +n +), 0, +ags +); + +1162 #ifde +__GNUC__ + + +1163 #agm +GCC + +dgnoic + +p + + +1165 #ifde +_MSC_VER + + +1166 #agm +wng +( +p +) + +1169 + gr_ +[ +ngth_ +] = '\0'; + +1174 +le +  +ngth +() const { + +1175  + gngth_ +; + +1178 +le + * + gݔ +*({  + gr_ +; } + +1179 +le + cڡ * + gݔ +*(cڡ {  + gr_ +; } + +1181 + gle + ~ +Utf8Sg +() { + +1182 i( + gr_ + ! +r__ +) { + +1183 + +( +r_ +); + +1187 + give +: + +1188 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +Utf8Sg +) + +1190  +ngth_ +; + +1191 * + gr_ +; + +1192  + gr__ +[1024]; + +1196 +le + + gv8 +:: +Lol +< +v8 +:: +Primive +> + $Undefed +() { + +1197 +EsbHdSce + +sce +; + +1198  +sce +. + `Es +( + `New +( +v8 +:: + `Undefed +())); + +1199 + } +} + +1201 +le + + gv8 +:: +Lol +< +v8 +:: +Primive +> + $Nu +() { + +1202 +EsbHdSce + +sce +; + +1203  +sce +. + `Es +( + `New +( +v8 +:: + `Nu +())); + +1204 + } +} + +1206 +le + + gv8 +:: +Lol +< +v8 +:: +Boޗn +> + $True +() { + +1207 +EsbHdSce + +sce +; + +1208  +sce +. + `Es +( + `New +( +v8 +:: + `True +())); + +1209 + } +} + +1211 +le + + gv8 +:: +Lol +< +v8 +:: +Boޗn +> + $F +() { + +1212 +EsbHdSce + +sce +; + +1213  +sce +. + `Es +( + `New +( +v8 +:: + `F +())); + +1214 + } +} + +1216 +le + + gv8 +:: +Lol +< +v8 +:: +Sg +> + $EmySg +() { + +1217  +v8 +:: +Sg +:: + `Emy +(); + +1218 + } +} + +1220 +le +  + $AdjuExMemy +( +bc +) { + +1221  +ic_ +<>( +v8 +:: +V8 +:: + `AdjuAmouOfExAodMemy +( +bc +)); + +1222 + } +} + +1224 +le +  +STeme +( + +1225 +v8 +:: +Lol + +m + + +1226 , cڡ * +me + + +1227 , +v8 +:: +Lol + +vue +) { + +1228 +m +-> +S +( +me +, +vue +); + +1231 +le +  +STeme +( + +1232 +v8 +:: +Lol + +m + + +1233 , +v8 +:: +Lol + +me + + +1234 , +v8 +:: +Lol + +vue + + +1235 , +v8 +:: +PrݔtyAribu + +ibus +) { + +1236 +m +-> +S +( +me +, +vue +, +ibus +); + +1239 +le + + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> + $GCutCڋxt +() { + +1240  +v8 +:: +Cڋxt +:: + `GCut +(); + +1241 + } +} + +1243 +le + * +GIlFldPor +( + +1244 +v8 +:: +Lol + +obje + + +1245 ,  +dex +) { + +1246  + gobje +-> +GPorFromIlFld +( +dex +); + +1249 +le +  +SIlFldPor +( + +1250 +v8 +:: +Lol + +obje + + +1251 ,  +dex + + +1252 , * +vue +) { + +1253 + gobje +-> +SPorInIlFld +( +dex +, +vue +); + +1256  + #NAN_GC_CALLBACK +( +me +) \ + +1257  + $me +( +v8 +:: +GCTy + +ty +, v8:: +GCClbackFgs + +ags +) + + ) + +1259 +le +  + $AddGCEpogueClback +( + +1260 +v8 +:: +GCEpogueClback + +back + + +1261 , +v8 +:: +GCTy + +gc_ty_fr + = v8:: +kGCTyA +) { + +1262 +v8 +:: +V8 +:: + `AddGCEpogueClback +( +back +, +gc_ty_fr +); + +1263 + } +} + +1264 +le +  + $RemoveGCEpogueClback +( + +1265 +v8 +:: +GCEpogueClback + +back +) { + +1266 +v8 +:: +V8 +:: + `RemoveGCEpogueClback +( +back +); + +1267 + } +} + +1268 +le +  + $AddGCProgueClback +( + +1269 +v8 +:: +GCProgueClback + +back + + +1270 , +v8 +:: +GCTy + +gc_ty_fr + = v8:: +kGCTyA +) { + +1271 +v8 +:: +V8 +:: + `AddGCProgueClback +( +back +, +gc_ty_fr +); + +1272 + } +} + +1273 +le +  + $RemoveGCProgueClback +( + +1274 +v8 +:: +GCProgueClback + +back +) { + +1275 +v8 +:: +V8 +:: + `RemoveGCProgueClback +( +back +); + +1276 + } +} + +1277 +le +  + $GHpStiics +( + +1278 +v8 +:: +HpStiics + * +hp_iics +) { + +1279 +v8 +:: +V8 +:: + `GHpStiics +( +hp_iics +); + +1280 + } +} + +1282  + #X +( +NAME +) \ + +1283 +le + +v8 +:: +Lol + + $NAME +(cڡ * +msg +) { \ + +1284 +EsbHdSce + +sce +; \ + +1285  +sce +. + `Es +( +v8 +:: +Exi +:: + `NAME +( + `New +( +msg +). + `ToLolChecked +())); \ + +1286 + } +} \ + +1288 +le + \ + +1289 +v8 +:: +Lol + + `NAME +(v8::Lol +msg +) { \ + +1290  +v8 +:: +Exi +:: + `NAME +( +msg +); \ + +1293 +le +  +Throw + ## + $NAME +(cڡ * +msg +) { \ + +1294 +HdSce + +sce +; \ + +1295 +v8 +:: + `ThrowExi +(v8:: +Exi +:: + `NAME +( + `New +( +msg +). + `ToLolChecked +())); \ + +1296 + } +} \ + +1298 +le + \ + +1299  +Throw + ## + `NAME +( +v8 +:: +Lol + +rmsg +) { \ + +1300 +HdSce + +sce +; \ + +1301 +v8 +:: + `ThrowExi +(v8:: +Exi +:: + `NAME +( +rmsg +)); \ + +1302 } + + ) + +1304 + $X +( +E +) + +1305 + $X +( +RgeE +) + +1306 + $X +( +RenE +) + +1307 + $X +( +SyaxE +) + +1308 + $X +( +TyE +) + +1310 #unde +X + + +1312 +le +  + `ThrowE +( +v8 +:: +Lol + +r +) { + +1313 +v8 +:: + `ThrowExi +( +r +); + +1314 + } +} + +1316 +le + + gMaybeLol +< + gv8 +:: +Obje +> + $NewBufr +( + +1317 * +da + + +1318 , +size_t + +ngth + + +1319 , +node +:: +Bufr +:: +_back + +back + + +1320 , * +ht + + +1322 +EsbHdSce + +sce +; + +1325 + `as +( +ngth + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +1326  +sce +. + `Es +( + +1327 + `New +( +node +:: +Bufr +::New( +da +, +ngth +, +back +, +ht +)-> +hd_ +)); + +1328 + } +} + +1330 +le + + gMaybeLol +< + gv8 +:: +Obje +> + $CyBufr +( + +1331 cڡ * +da + + +1332 , +ut32_t + +size + + +1334 +EsbHdSce + +sce +; + +1337 + `as +( +size + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +1338 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1339  +sce +. + `Es +( + `New +( +node +:: +Bufr +::New( +da +, +size +)-> +hd_ +)); + +1341  +sce +. + `Es +( + +1342 + `New +( +node +:: +Bufr +::New( +cڡ_ +<*>( +da +), +size +)-> +hd_ +)); + +1344 + } +} + +1346 +le + + gMaybeLol +< + gv8 +:: +Obje +> + $NewBufr +( +ut32_t + +size +) { + +1349 +EsbHdSce + +sce +; + +1350 + `as +( +size + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +1351  +sce +. + `Es +( + `New +( +node +:: +Bufr +::New( +size +)-> +hd_ +)); + +1352 + } +} + +1354 +le +  + $FeDa +(* +da +, * +ht +) { + +1355 ( +ht +; + +1356 +de +[] +da +; + +1357 + } +} + +1359 +le + + gMaybeLol +< + gv8 +:: +Obje +> + $NewBufr +( + +1360 * +da + + +1361 , +ut32_t + +size + + +1363 +EsbHdSce + +sce +; + +1366 + `as +( +size + < +imp +:: +kMaxLgth + && "tooarge buffer"); + +1367  +sce +. + `Es +( + +1368 + `New +( +node +:: +Bufr +::New( +da +, +size +, +FeDa +, +NULL +)-> +hd_ +)); + +1369 + } +} + +1371 +mea + + gimp + { + +1372 +le +  + +1373 +widSg +( +d +:: +ve +< +ut16_t +> * +ws +, cڡ +ut8_t + * +s +,  +l +) { + +1374 +size_t + + gn + = +ic_ +( +l +); + +1375 i( + gl + < 0) { + +1376 + gn + = + +( +t_ +( +s +)); + +1378 +as +( +n + < +INT_MAX + && "stringooong"); + +1379 + gws +-> +size +( +n +); + +1380 + gd +:: +cy +( +s +, s + +n +, +ws +-> +beg +()); + +1384 +le + + gMaybeLol +< + gv8 +:: +Sg +> + +1385 +NewOBySg +(cڡ +ut8_t + * +vue +,  +ngth + = -1) { + +1386 +d +:: +ve +< +ut16_t +> +wideSg +; + +1387 + gimp +:: +widSg +(& +wideSg +, +vue +, +ngth +); + +1388  + gv8 +:: +Sg +:: +New +( +wideSg +. +da +(), + +1389 +ic_ +<>( +wideSg +. +size +())); + +1392 +le + + gMaybeLol +< + gBoundSt +> +CompeSt +( + +1393 +v8 +:: +Lol + +s + + +1394 , cڡ +v8 +:: +StOrig +& +ig + + +1396  +v8 +:: +St +:: +Compe +( +s +, +cڡ_ +(& +ig +)); + +1399 +le + + gMaybeLol +< + gBoundSt +> +CompeSt +( + +1400 +v8 +:: +Lol + +s + + +1402  +v8 +:: +St +:: +Compe +( +s +); + +1405 +le + + +1406 + gMaybeLol +< + gv8 +:: +Vue +> +RunSt +( +v8 +:: +Lol + +st +) { + +1407  +st +-> +Run +(); + +1410 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +( + +1411 +v8 +:: +Lol + +rg + + +1412 , +v8 +:: +Lol + +func + + +1413 ,  +gc + + +1414 , +v8 +:: +Lol +* +gv +) { + +1415 +v8 +:: +HdSce + +sce +; + +1416  + gsce +. +Clo +( +New +( +node +:: +MakeClback +( +rg +, +func +, +gc +, +gv +))); + +1419 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +( + +1420 +v8 +:: +Lol + +rg + + +1421 , +v8 +:: +Lol + +symb + + +1422 ,  +gc + + +1423 , +v8 +:: +Lol +* +gv +) { + +1424 +v8 +:: +HdSce + +sce +; + +1425  + gsce +. +Clo +( +New +( +node +:: +MakeClback +( +rg +, +symb +, +gc +, +gv +))); + +1428 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +MakeClback +( + +1429 +v8 +:: +Lol + +rg + + +1430 , cڡ * +mhod + + +1431 ,  +gc + + +1432 , +v8 +:: +Lol +* +gv +) { + +1433 +v8 +:: +HdSce + +sce +; + +1434  + gsce +. +Clo +( +New +( +node +:: +MakeClback +( +rg +, +mhod +, +gc +, +gv +))); + +1437 +le +  + $FExi +(cڡ +TryCch +& +y_tch +) { + +1438 +node +:: + `FExi +( +cڡ_ +< +v8 +:: +TryCch + &>( +y_tch +. +y_tch_ +)); + +1439 + } +} + +1441 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $EnoExi +( + +1442  +rno + + +1443 , cڡ * +sys + = +NULL + + +1444 , cڡ * +mesge + = +NULL + + +1445 , cڡ * +th + = +NULL +) { + +1446  +node +:: + `EnoExi +( +rno +, +sys +, +mesge +, +th +); + +1447 + } +} + +1449 +NAN_DEPRECATED + +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $NEnoExi +( + +1450  +rno + + +1451 , cڡ * +sys + = +NULL + + +1452 , cڡ * +mesge + = +NULL + + +1453 , cڡ * +th + = +NULL +) { + +1454  + `EnoExi +( +rno +, +sys +, +mesge +, +th +); + +1455 + } +} + +1458 + gme +< +tyme + + gT +> + +1459 +le +  + $SIsީeDa +( + +1460 +v8 +:: +Isީe + * +isީe + + +1461 , +T + * +da + + +1463 +isީe +-> + `SDa +( +da +); + +1464 + } +} + +1466 + gme +< +tyme + + gT +> + +1467 +le + +T + * + $GIsީeDa +( + +1468 +v8 +:: +Isީe + * +isީe + + +1470  +ic_ +< +T +*>( +isީe +-> + `GDa +()); + +1471 + } +} + +1473 as + cUtf8Sg + { + +1474 + gpublic +: + +1475 +le + +exic + +Utf8Sg +( +v8 +:: +Lol + +om +) : + +1476 +ngth_ +(0), +r_ +( +r__ +) { + +1477 + gv8 +:: +HdSce + +sce +; + +1478 i(! + gom +. +IsEmy +()) { + +1479 + gv8 +:: +Lol +< +v8 +:: +Sg +> +rg + = +om +-> +ToSg +(); + +1480 i(! + grg +. +IsEmy +()) { + +1481 +size_t + + gn + = 3 * +rg +-> +Lgth +() + 1; + +1482 +as +( +n + < +INT_MAX +); + +1483 i( + gn + >  ( + gr__ +)) { + +1484 + gr_ + = +ic_ +<*>( +mloc +( +n +)); + +1485 +as +( +r_ + != 0); + +1487 cڡ  + gags + = + +1488 +v8 +:: +Sg +:: +NO_NULL_TERMINATION + | +imp +:: +kRInvidUtf8 +; + +1489 + gngth_ + = +rg +-> +WreUtf8 +( +r_ +, +ic_ +<>( +n +), 0, +ags +); + +1490 + gr_ +[ +ngth_ +] = '\0'; + +1495 +le +  +ngth +() const { + +1496  + gngth_ +; + +1499 +le + * + gݔ +*({  + gr_ +; } + +1500 +le + cڡ * + gݔ +*(cڡ {  + gr_ +; } + +1502 + gle + ~ +Utf8Sg +() { + +1503 i( + gr_ + ! +r__ +) { + +1504 + +( +r_ +); + +1508 + give +: + +1509 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +Utf8Sg +) + +1511  +ngth_ +; + +1512 * + gr_ +; + +1513  + gr__ +[1024]; + +1518 (* + tFeClback +)(* + tda +, * + tht +); + +1520 cڡ + tFuniClbackInfo +< + tv8 +:: + tVue +>& + tNAN_METHOD_ARGS_TYPE +; + +1521  + tNAN_METHOD_RETURN_TYPE +; + +1523 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>& + tNAN_GETTER_ARGS_TYPE +; + +1524  + tNAN_GETTER_RETURN_TYPE +; + +1526 cڡ + tPrݔtyClbackInfo +<>& + tNAN_SETTER_ARGS_TYPE +; + +1527  + tNAN_SETTER_RETURN_TYPE +; + +1529 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>& + +1530 + tNAN_PROPERTY_GETTER_ARGS_TYPE +; + +1531  + tNAN_PROPERTY_GETTER_RETURN_TYPE +; + +1533 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>& + +1534 + tNAN_PROPERTY_SETTER_ARGS_TYPE +; + +1535  + tNAN_PROPERTY_SETTER_RETURN_TYPE +; + +1537 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tAay +>& + +1538 + tNAN_PROPERTY_ENUMERATOR_ARGS_TYPE +; + +1539  + tNAN_PROPERTY_ENUMERATOR_RETURN_TYPE +; + +1541 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tBoޗn +>& + +1542 + tNAN_PROPERTY_DELETER_ARGS_TYPE +; + +1543  + tNAN_PROPERTY_DELETER_RETURN_TYPE +; + +1545 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tIeg +>& + +1546 + tNAN_PROPERTY_QUERY_ARGS_TYPE +; + +1547  + tNAN_PROPERTY_QUERY_RETURN_TYPE +; + +1549 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>& + tNAN_INDEX_GETTER_ARGS_TYPE +; + +1550  + tNAN_INDEX_GETTER_RETURN_TYPE +; + +1552 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>& + tNAN_INDEX_SETTER_ARGS_TYPE +; + +1553  + tNAN_INDEX_SETTER_RETURN_TYPE +; + +1555 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tAay +>& + +1556 + tNAN_INDEX_ENUMERATOR_ARGS_TYPE +; + +1557  + tNAN_INDEX_ENUMERATOR_RETURN_TYPE +; + +1559 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tBoޗn +>& + +1560 + tNAN_INDEX_DELETER_ARGS_TYPE +; + +1561  + tNAN_INDEX_DELETER_RETURN_TYPE +; + +1563 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tIeg +>& + +1564 + tNAN_INDEX_QUERY_ARGS_TYPE +; + +1565  + tNAN_INDEX_QUERY_RETURN_TYPE +; + +1567  + #NAN_METHOD +( +me +) \ + +1568 +N +:: +NAN_METHOD_RETURN_TYPE + + $me +( +N +:: +NAN_METHOD_ARGS_TYPE + +fo +) + + ) + +1569  + #NAN_GETTER +( +me +) \ + +1570 +N +:: +NAN_GETTER_RETURN_TYPE + + `me +( \ + +1571 +v8 +:: +Lol + +ݔty + \ + +1572 , +N +:: +NAN_GETTER_ARGS_TYPE + +fo +) + + ) + +1573  + #NAN_SETTER +( +me +) \ + +1574 +N +:: +NAN_SETTER_RETURN_TYPE + + `me +( \ + +1575 +v8 +:: +Lol + +ݔty + \ + +1576 , +v8 +:: +Lol + +vue + \ + +1577 , +N +:: +NAN_SETTER_ARGS_TYPE + +fo +) + + ) + +1578  + #NAN_PROPERTY_GETTER +( +me +) \ + +1579 +N +:: +NAN_PROPERTY_GETTER_RETURN_TYPE + + `me +( \ + +1580 +v8 +:: +Lol + +ݔty + \ + +1581 , +N +:: +NAN_PROPERTY_GETTER_ARGS_TYPE + +fo +) + + ) + +1582  + #NAN_PROPERTY_SETTER +( +me +) \ + +1583 +N +:: +NAN_PROPERTY_SETTER_RETURN_TYPE + + `me +( \ + +1584 +v8 +:: +Lol + +ݔty + \ + +1585 , +v8 +:: +Lol + +vue + \ + +1586 , +N +:: +NAN_PROPERTY_SETTER_ARGS_TYPE + +fo +) + + ) + +1587  + #NAN_PROPERTY_ENUMERATOR +( +me +) \ + +1588 +N +:: +NAN_PROPERTY_ENUMERATOR_RETURN_TYPE + + `me +( \ + +1589 +N +:: +NAN_PROPERTY_ENUMERATOR_ARGS_TYPE + +fo +) + + ) + +1590  + #NAN_PROPERTY_DELETER +( +me +) \ + +1591 +N +:: +NAN_PROPERTY_DELETER_RETURN_TYPE + + `me +( \ + +1592 +v8 +:: +Lol + +ݔty + \ + +1593 , +N +:: +NAN_PROPERTY_DELETER_ARGS_TYPE + +fo +) + + ) + +1594  + #NAN_PROPERTY_QUERY +( +me +) \ + +1595 +N +:: +NAN_PROPERTY_QUERY_RETURN_TYPE + + `me +( \ + +1596 +v8 +:: +Lol + +ݔty + \ + +1597 , +N +:: +NAN_PROPERTY_QUERY_ARGS_TYPE + +fo +) + + ) + +1598  + #NAN_INDEX_GETTER +( +me +) \ + +1599 +N +:: +NAN_INDEX_GETTER_RETURN_TYPE + + `me +( \ + +1600 +ut32_t + +dex + \ + +1601 , +N +:: +NAN_INDEX_GETTER_ARGS_TYPE + +fo +) + + ) + +1602  + #NAN_INDEX_SETTER +( +me +) \ + +1603 +N +:: +NAN_INDEX_SETTER_RETURN_TYPE + + `me +( \ + +1604 +ut32_t + +dex + \ + +1605 , +v8 +:: +Lol + +vue + \ + +1606 , +N +:: +NAN_INDEX_SETTER_ARGS_TYPE + +fo +) + + ) + +1607  + #NAN_INDEX_ENUMERATOR +( +me +) \ + +1608 +N +:: +NAN_INDEX_ENUMERATOR_RETURN_TYPE + \ + +1609 + $me +( +N +:: +NAN_INDEX_ENUMERATOR_ARGS_TYPE + +fo +) + + ) + +1610  + #NAN_INDEX_DELETER +( +me +) \ + +1611 +N +:: +NAN_INDEX_DELETER_RETURN_TYPE + + `me +( \ + +1612 +ut32_t + +dex + \ + +1613 , +N +:: +NAN_INDEX_DELETER_ARGS_TYPE + +fo +) + + ) + +1614  + #NAN_INDEX_QUERY +( +me +) \ + +1615 +N +:: +NAN_INDEX_QUERY_RETURN_TYPE + + `me +( \ + +1616 +ut32_t + +dex + \ + +1617 , +N +:: +NAN_INDEX_QUERY_ARGS_TYPE + +fo +) + + ) + +1619 as + cClback + { + +1620 +public +: + +1621 + `Clback +() {} + +1623 +exic + + `Clback +(cڡ +v8 +:: +Lol + & + +: + `hd_ +(fn) {} + +1625 ~ + `Clback +() { + +1626 +hd_ +. + `Ret +(); + +1629 +bo + +ݔ +==(cڡ +Clback + & +h +) const { + +1630  +hd_ + = +h +.handle_; + +1633 +bo + +ݔ +!=(cڡ +Clback + & +h +) const { + +1634  ! +ݔ +==( +h +); + +1637 +le + + +1638 +v8 +:: +Lol + +ݔ +*(cڡ {  + `GFuni +(); } + +1640 +NAN_DEPRECATED + +le + +v8 +:: +Lol + + `ݔ +()( + +1641 +v8 +:: +Lol + +rg + + +1642 ,  +gc + = 0 + +1643 , +v8 +:: +Lol + +gv +[] = 0) const { + +1644 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1645 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); + +1646 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1647 +AsyncResour + + `async +("nan:Callback:operator()"); + +1648  + `Cl_ +( +isީe +, +rg +, +gc +, +gv +, & +async +) + +1649 . + `FromMaybe +( +v8 +:: +Lol +()); + +1651  + `Cl_ +( +isީe +, +rg +, +gc +, +gv +); + +1654  + `Cl_ +( +rg +, +gc +, +gv +); + +1658 +NAN_DEPRECATED + +le + +v8 +:: +Lol + + `ݔ +()( + +1659  +gc + = 0 + +1660 , +v8 +:: +Lol + +gv +[] = 0) const { + +1661 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1662 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); + +1663 +v8 +:: +EsbHdSce + + `sce +( +isީe +); + +1664 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1665 +AsyncResour + + `async +("nan:Callback:operator()"); + +1666  +sce +. + `Es +( + `Cl_ +( +isީe +, isީe-> + `GCutCڋxt +()-> + `Glob +(), + +1667 +gc +, +gv +, & +async +) + +1668 . + `FromMaybe +( +v8 +:: +Lol +())); + +1670  +sce +. + `Es +( + +1671 + `Cl_ +( +isީe +, isީe-> + `GCutCڋxt +()-> + `Glob +(), +gc +, +gv +)); + +1674 +v8 +:: +HdSce + +sce +; + +1675  +sce +. + `Clo +( + `Cl_ +( +v8 +:: +Cڋxt +:: + `GCut +()-> + `Glob +(), +gc +, +gv +)); + +1679 +le + +MaybeLol +< +v8 +:: +Vue +> + `ݔ +()( + +1680 +AsyncResour +* +sour + + +1681 ,  +gc + = 0 + +1682 , +v8 +:: +Lol + +gv +[] = 0) const { + +1683  +this +-> + `Cl +( +gc +, +gv +, +sour +); + +1686 +le + +MaybeLol +< +v8 +:: +Vue +> + `ݔ +()( + +1687 +AsyncResour +* +sour + + +1688 , +v8 +:: +Lol + +rg + + +1689 ,  +gc + = 0 + +1690 , +v8 +:: +Lol + +gv +[] = 0) const { + +1691  +this +-> + `Cl +( +rg +, +gc +, +gv +, +sour +); + +1695 +le +  + `SFuni +(cڡ +v8 +:: +Lol + & + +) { + +1696 + `Ret +( + +); + +1699 +le +  + `Ret +(cڡ +v8 +:: +Lol + & + +) { + +1700 +hd_ +. + `Ret +( + +); + +1703 +le +  + `Ret +() { + +1704 +hd_ +. + `Ret +(); + +1707 +le + +v8 +:: +Lol + + `GFuni +() const { + +1708  + `New +( +hd_ +); + +1711 +le + +bo + + `IsEmy +() const { + +1712  +hd_ +. + `IsEmy +(); + +1719 +NAN_DEPRECATED + +le + +v8 +:: +Lol + + +1720 + `Cl +( +v8 +:: +Lol + +rg + + +1721 ,  +gc + + +1722 , +v8 +:: +Lol + +gv +[]) const { + +1723 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1724 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); + +1725 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1726 +AsyncResour + + `async +("nan:Callback:Call"); + +1727  + `Cl_ +( +isީe +, +rg +, +gc +, +gv +, & +async +) + +1728 . + `FromMaybe +( +v8 +:: +Lol +()); + +1730  + `Cl_ +( +isީe +, +rg +, +gc +, +gv +); + +1733  + `Cl_ +( +rg +, +gc +, +gv +); + +1741 +NAN_DEPRECATED + +le + +v8 +:: +Lol + + +1742 + `Cl +( +gc +, +v8 +:: +Lol + +gv +[]) const { + +1743 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1744 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); + +1745 +v8 +:: +EsbHdSce + + `sce +( +isީe +); + +1746 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1747 +AsyncResour + + `async +("nan:Callback:Call"); + +1748  +sce +. + `Es +( + `Cl_ +( +isީe +, isީe-> + `GCutCڋxt +()-> + `Glob +(), + +1749 +gc +, +gv +, & +async +) + +1750 . + `FromMaybe +( +v8 +:: +Lol +())); + +1752  +sce +. + `Es +( + +1753 + `Cl_ +( +isީe +, isީe-> + `GCutCڋxt +()-> + `Glob +(), +gc +, +gv +)); + +1756 +v8 +:: +HdSce + +sce +; + +1757  +sce +. + `Clo +( + `Cl_ +( +v8 +:: +Cڋxt +:: + `GCut +()-> + `Glob +(), +gc +, +gv +)); + +1761 +le + +MaybeLol +< +v8 +:: +Vue +> + +1762 + `Cl +( +v8 +:: +Lol + +rg + + +1763 ,  +gc + + +1764 , +v8 +:: +Lol + +gv +[] + +1765 , +AsyncResour +* +sour +) const { + +1766 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1767 +v8 +:: +Isީe +* +isީe + = v8::Isީe:: + `GCut +(); + +1768  + `Cl_ +( +isީe +, +rg +, +gc +, +gv +, +sour +); + +1769 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1770 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); + +1771  + `Cl_ +( +isީe +, +rg +, +gc +, +gv +); + +1773  + `Cl_ +( +rg +, +gc +, +gv +); + +1777 +le + +MaybeLol +< +v8 +:: +Vue +> + +1778 + `Cl +( +gc +, +v8 +:: +Lol + +gv +[], +AsyncResour +* +sour +) const { + +1779 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1780 +v8 +:: +Isީe +* +isީe + = v8::Isީe:: + `GCut +(); + +1781  + `Cl +( +isީe +-> + `GCutCڋxt +()-> + `Glob +(), +gc +, +gv +, +sour +); + +1782 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1783 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); + +1784 +v8 +:: +EsbHdSce + + `sce +( +isީe +); + +1785  +sce +. + `Es +( + +1786 + `Cl_ +( +isީe +, isީe-> + `GCutCڋxt +()-> + `Glob +(), +gc +, +gv +)); + +1788 +v8 +:: +HdSce + +sce +; + +1789  +sce +. + `Clo +( + `Cl_ +( +v8 +:: +Cڋxt +:: + `GCut +()-> + `Glob +(), +gc +, +gv +)); + +1793 +ive +: + +1794 + `NAN_DISALLOW_ASSIGN_COPY_MOVE +( +Clback +) + +1795 +Psit +< +v8 +:: +Funi +> +hd_ +; + +1797 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +1798 +MaybeLol +< +v8 +:: +Vue +> + `Cl_ +(v8:: +Isީe + * +isީe + + +1799 , +v8 +:: +Lol + +rg + + +1800 ,  +gc + + +1801 , +v8 +:: +Lol + +gv +[] + +1802 , +AsyncResour +* +sour +) const { + +1803 +EsbHdSce + +sce +; + +1804 +v8 +:: +Lol + +func + = + `New +( +hd_ +); + +1805 aut +maybe + = +sour +-> + `runInAsyncSce +( +rg +, +func +, +gc +, +gv +); + +1806 +v8 +:: +Lol + +lol +; + +1807 i(! +maybe +. + `ToLol +(& +lol +) +MaybeLol +< +v8 +:: +Vue +>(); + +1808  +sce +. + `Es +( +lol +); + +1810 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1811 +v8 +:: +Lol + + `Cl_ +(v8:: +Isީe + * +isީe + + +1812 , +v8 +:: +Lol + +rg + + +1813 ,  +gc + + +1814 , +v8 +:: +Lol + +gv +[]) const { + +1815 +EsbHdSce + +sce +; + +1817 +v8 +:: +Lol + +back + = + `New +( +hd_ +); + +1818 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +1819  +sce +. + `Es +( + `New +( +node +:: + `MakeClback +( + +1820 +isީe + + +1821 , +rg + + +1822 , +back + + +1823 , +gc + + +1824 , +gv + + +1827  +sce +. + `Es +( +node +:: + `MakeClback +( + +1828 +isީe + + +1829 , +rg + + +1830 , +back + + +1831 , +gc + + +1832 , +gv + + +1837 +v8 +:: +Lol + + `Cl_ +(v8::Lol +rg + + +1838 ,  +gc + + +1839 , +v8 +:: +Lol + +gv +[]) const { + +1840 +EsbHdSce + +sce +; + +1842 +v8 +:: +Lol + +back + = + `New +( +hd_ +); + +1843  +sce +. + `Es +( + `New +( +node +:: + `MakeClback +( + +1844 +rg + + +1845 , +back + + +1846 , +gc + + +1847 , +gv + + +1851 + } +}; + +1853 +le + + gMaybeLol +< + gv8 +:: +Vue +> +Cl +( + +1854 cڡ +N +:: +Clback +& +back + + +1855 , +v8 +:: +Lol + +cv + + +1856 ,  +gc + + +1857 , +v8 +:: +Lol + +gv +[]) { + +1858  +Cl +(* +back +, +cv +, +gc +, +gv +); + +1861 +le + + gMaybeLol +< + gv8 +:: +Vue +> +Cl +( + +1862 cڡ +N +:: +Clback +& +back + + +1863 ,  +gc + + +1864 , +v8 +:: +Lol + +gv +[]) { + +1865 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +1866 +v8 +:: +Isީe +* +isީe + = v8::Isީe:: +GCut +(); + +1867 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +1868  + gsce +. +Es +( + +1869 +Cl +(* +back +, +isީe +-> +GCutCڋxt +()-> +Glob +(), +gc +, +gv +) + +1870 . +FromMaybe +( +v8 +:: +Lol +())); + +1872 +EsbHdSce + + gsce +; + +1873  + gsce +. +Es +( + +1874 +Cl +(* +back +, +v8 +:: +Cڋxt +:: +GCut +()-> +Glob +(), +gc +, +gv +) + +1875 . +FromMaybe +( +v8 +:: +Lol +())); + +1879 +le + + gMaybeLol +< + gv8 +:: +Vue +> +Cl +( + +1880 +v8 +:: +Lol + +symb + + +1881 , +v8 +:: +Lol + +cv + + +1882 ,  +gc + + +1883 , +v8 +:: +Lol + +gv +[]) { + +1884 +EsbHdSce + +sce +; + +1885 + gv8 +:: +Lol +< +v8 +:: +Vue +> +_v + = + +1886 +G +( +cv +, +symb +). +FromMaybe +( +v8 +:: +Lol +()); + +1887 i( + g_v +. +IsEmy +(|| !_v-> +IsFuni +() + gv8 +:: +Lol +< +v8 +:: +Vue +>(); + +1888 + gv8 +:: +Lol +< +v8 +:: +Funi +> + + = +_v +. +As +(); + +1889  + gsce +. +Es +( + +1890 +Cl +( + +, +cv +, +gc +, +gv +). +FromMaybe +( +v8 +:: +Lol +())); + +1893 +le + + gMaybeLol +< + gv8 +:: +Vue +> +Cl +( + +1894 cڡ * +mhod + + +1895 , +v8 +:: +Lol + +cv + + +1896 ,  +gc + + +1897 , +v8 +:: +Lol + +gv +[]) { + +1898 +EsbHdSce + +sce +; + +1899 + gv8 +:: +Lol +< +v8 +:: +Sg +> +mhod_rg + = + +1900 +New +< +v8 +:: +Sg +>( +mhod +). +ToLolChecked +(); + +1901  + gsce +. +Es +( + +1902 +Cl +( +mhod_rg +, +cv +, +gc +, +gv +). +FromMaybe +( +v8 +:: +Lol +())); + +1905 cs + cAsyncWk + { + +1906 + gpublic +: + +1907 +exic + +AsyncWk +( +Clback + * +back_ +, + +1908 cڡ * +sour_me + = "nan:AsyncWorker") + +1909 : +back +( +back_ +), +rmsg_ +( +NULL +) { + +1910 + gque +. + gda + = +this +; + +1912 +HdSce + + gsce +; + +1913 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +New +(); + +1914 + grsitHd +. +Ret +( +obj +); + +1915 + gasync_sour + = +w + +AsyncResour +( +sour_me +, +obj +); + +1918 + gvtu + ~ +AsyncWk +() { + +1919 +HdSce + + gsce +; + +1921 i(! + grsitHd +. +IsEmy +()) + +1922 + grsitHd +. +Ret +(); + +1923 +de + + gback +; + +1924 + gde +[] + grmsg_ +; + +1925 +de + + gasync_sour +; + +1928 +vtu +  +WkCome +() { + +1929 +HdSce + + gsce +; + +1931 i( + grmsg_ + = +NULL +) + +1932 +HdOKClback +(); + +1934 +HdEClback +(); + +1935 +de + + gback +; + +1936 + gback + = +NULL +; + +1939 +le +  +SaveToPsit +( + +1940 cڡ * +key +, cڡ +v8 +:: +Lol + & +vue +) { + +1941 +HdSce + +sce +; + +1942 +S +( +New +( +rsitHd +), New( +key +). +ToLolChecked +(), +vue +). +FromJu +(); + +1945 +le +  +SaveToPsit +( + +1946 cڡ +v8 +:: +Lol + & +key +, cڡ v8::Lol & +vue +) { + +1947 +HdSce + +sce +; + +1948 +S +( +New +( +rsitHd +), +key +, +vue +). +FromJu +(); + +1951 +le +  +SaveToPsit +( + +1952 +ut32_t + +dex +, cڡ +v8 +:: +Lol + & +vue +) { + +1953 +HdSce + +sce +; + +1954 +S +( +New +( +rsitHd +), +dex +, +vue +). +FromJu +(); + +1957 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +GFromPsit +(cڡ * +key +) const { + +1958 +EsbHdSce + +sce +; + +1959  + gsce +. +Es +( + +1960 +G +( +New +( +rsitHd +), New( +key +). +ToLolChecked +()) + +1961 . +FromMaybe +( +v8 +:: +Lol +())); + +1964 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + +1965 +GFromPsit +(cڡ +v8 +:: +Lol + & +key +) const { + +1966 +EsbHdSce + +sce +; + +1967  + gsce +. +Es +( + +1968 +G +( +New +( +rsitHd +), +key +) + +1969 . +FromMaybe +( +v8 +:: +Lol +())); + +1972 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +GFromPsit +( +ut32_t + +dex +) const { + +1973 +EsbHdSce + +sce +; + +1974  + gsce +. +Es +( + +1975 +G +( +New +( +rsitHd +), +dex +) + +1976 . +FromMaybe +( +v8 +:: +Lol +())); + +1979 +vtu +  +Execu +() = 0; + +1981 +uv_wk_t + + gque +; + +1983 +vtu +  +Deroy +() { + +1984 +de + + gthis +; + +1987 + geed +: + +1988 +Psit +< +v8 +:: +Obje +> +rsitHd +; + +1989 +Clback + * + gback +; + +1990 +AsyncResour + * + gasync_sour +; + +1992 +vtu +  +HdOKClback +() { + +1993 +HdSce + + gsce +; + +1995 + gback +-> +Cl +(0, +NULL +, +async_sour +); + +1998 +vtu +  +HdEClback +() { + +1999 +HdSce + + gsce +; + +2001 + gv8 +:: +Lol +< +v8 +:: +Vue +> +gv +[] = { + +2002 +v8 +:: +Exi +:: +E +( +New +( +EMesge +()). +ToLolChecked +()) + +2004 + gback +-> +Cl +(1, +gv +, +async_sour +); + +2007  +SEMesge +(cڡ * +msg +) { + +2008 + gde +[] + grmsg_ +; + +2010 +size_t + + gsize + = + +( +msg +) + 1; + +2011 + grmsg_ + = +w + [ +size +]; + +2012 +memy +( +rmsg_ +, +msg +, +size +); + +2015 cڡ * +EMesge +() const { + +2016  + grmsg_ +; + +2019 + give +: + +2020 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +AsyncWk +) + +2021 * +rmsg_ +; + +2024 cs + cAsyncBeProgssWkBa + : +public + +AsyncWk + { + +2025 +public +: + +2026 +exic + +AsyncBeProgssWkBa +( + +2027 +Clback + * +back_ +, + +2028 cڡ * +sour_me + = "nan:AsyncBareProgressWorkerBase") + +2029 : +AsyncWk +( +back_ +, +sour_me +) { + +2030 +uv_async_ +( + +2031 +GCutEvtLo +() + +2032 , & +async + + +2033 , +AsyncProgss_ + + +2035 + gasync +. + gda + = +this +; + +2038 + gvtu + ~ +AsyncBeProgssWkBa +() { + +2041 +vtu +  +WkProgss +() = 0; + +2043 +vtu +  +Deroy +() { + +2044 +uv_o +( +t_ +< +uv_hd_t +*>(& +async +), +AsyncClo_ +); + +2047 + give +: + +2048 +le +  +NAUV_WORK_CB +( +AsyncProgss_ +) { + +2049 +AsyncBeProgssWkBa + * +wk + = + +2050 +ic_ +< +AsyncBeProgssWkBa +*>( +async +-> +da +); + +2051 + gwk +-> +WkProgss +(); + +2054 +le +  +AsyncClo_ +( +uv_hd_t +* +hd +) { + +2055 +AsyncBeProgssWkBa + * + gwk + = + +2056 +ic_ +< +AsyncBeProgssWkBa +*>( +hd +-> +da +); + +2057 +de + + gwk +; + +2060 + geed +: + +2061 +uv_async_t + +async +; + +2064 + gme +< +ass + + gT +> + +2066 as + cAsyncBeProgssWk + : +public + +AsyncBeProgssWkBa + { + +2067 +public +: + +2068 +exic + +AsyncBeProgssWk +( + +2069 +Clback + * +back_ +, + +2070 cڡ * +sour_me + = "nan:AsyncBareProgressWorker") + +2071 : +AsyncBeProgssWkBa +( +back_ +, +sour_me +) { + +2072 +uv_mux_ +(& +async_lock +); + +2075 + gvtu + ~ +AsyncBeProgssWk +() { + +2076 +uv_mux_deroy +(& +async_lock +); + +2079 as + cExecutiProgss + { + +2080 +nd + +ass + + gAsyncBeProgssWk +; + +2081 + gpublic +: + +2082  +Sigl +() const { + +2083 +uv_mux_lock +(& +th_ +-> +async_lock +); + +2084 +uv_async_nd +(& +th_ +-> +async +); + +2085 +uv_mux_uock +(& +th_ +-> +async_lock +); + +2088  +Sd +(cڡ +T +* +da +, +size_t + +cou +) const { + +2089 + gth_ +-> +SdProgss_ +( +da +, +cou +); + +2092 + give +: + +2093 +exic + +ExecutiProgss +( +AsyncBeProgssWk + * +th +: +th_ +(that) {} + +2094 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +ExecutiProgss +) + +2095 +AsyncBeProgssWk +* cڡ +th_ +; + +2098 +vtu +  +Execu +(cڡ +ExecutiProgss +& +ogss +) = 0; + +2099 +vtu +  +HdProgssClback +(cڡ +T + * +da +, +size_t + +size +) = 0; + +2101 + geed +: + +2102 +uv_mux_t + +async_lock +; + +2104 + give +: + +2105  +Execu +() { + +2106 +ExecutiProgss + +ogss +( +this +); + +2107 +Execu +( +ogss +); + +2110 +vtu +  +SdProgss_ +(cڡ +T + * +da +, +size_t + +cou +) = 0; + +2113 + gme +< +ass + + gT +> + +2115 +ass + + gAsyncProgssWkBa + : +public + +AsyncBeProgssWk +< +T +> { + +2116 +public +: + +2117 +exic + +AsyncProgssWkBa +( + +2118 +Clback + * +back_ +, + +2119 cڡ * +sour_me + = "nan:AsyncProgressWorkerBase") + +2120 : +AsyncBeProgssWk +< +T +>( +back_ +, + gsour_me +), +asyncda_ +( +NULL +), + +2121 +asyncsize_ +(0) { + +2124 + gvtu + ~ +AsyncProgssWkBa +() { + +2125 + gde +[] + gasyncda_ +; + +2128  +WkProgss +() { + +2129 +uv_mux_lock +(& +this +-> +async_lock +); + +2130 +T + * + gda + = +asyncda_ +; + +2131 +size_t + + gsize + = +asyncsize_ +; + +2132 + gasyncda_ + = +NULL +; + +2133 + gasyncsize_ + = 0; + +2134 +uv_mux_uock +(& +this +-> +async_lock +); + +2137 i( + gthis +-> + gback +) { + +2138 + gthis +-> +HdProgssClback +( +da +, +size +); + +2140 + gde +[] + gda +; + +2143 + give +: + +2144  +SdProgss_ +(cڡ +T + * +da +, +size_t + +cou +) { + +2145 +T + * + gw_da + = +w + T[ +cou +]; + +2146 + gd +:: +cy +( +da +, d+ +cou +, +w_da +); + +2148 +uv_mux_lock +(& +this +-> +async_lock +); + +2149 +T + * + gd_da + = +asyncda_ +; + +2150 + gasyncda_ + = +w_da +; + +2151 + gasyncsize_ + = +cou +; + +2152 +uv_async_nd +(& +this +-> +async +); + +2153 +uv_mux_uock +(& +this +-> +async_lock +); + +2155 + gde +[] + gd_da +; + +2158 +T + * + gasyncda_ +; + +2159 +size_t + + gasyncsize_ +; + +2164  + gAsyncProgssWkBa +<> + tAsyncProgssWk +; + +2166 + gme +< +ass + + gT +> + +2168 as + cAsyncBeProgssQueueWk + : +public + +AsyncBeProgssWkBa + { + +2169 +public +: + +2170 +exic + +AsyncBeProgssQueueWk +( + +2171 +Clback + * +back_ +, + +2172 cڡ * +sour_me + = "nan:AsyncBareProgressQueueWorker") + +2173 : +AsyncBeProgssWkBa +( +back_ +, +sour_me +) { + +2176 + gvtu + ~ +AsyncBeProgssQueueWk +() { + +2179 as + cExecutiProgss + { + +2180 +nd + +ass + + gAsyncBeProgssQueueWk +; + +2181 + gpublic +: + +2182  +Sd +(cڡ +T +* +da +, +size_t + +cou +) const { + +2183 + gth_ +-> +SdProgss_ +( +da +, +cou +); + +2186 + give +: + +2187 +exic + +ExecutiProgss +( +AsyncBeProgssQueueWk + * +th +) + +2188 : +th_ +( +th +) {} + +2189 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +ExecutiProgss +) + +2190 +AsyncBeProgssQueueWk +* cڡ +th_ +; + +2193 +vtu +  +Execu +(cڡ +ExecutiProgss +& +ogss +) = 0; + +2194 +vtu +  +HdProgssClback +(cڡ +T + * +da +, +size_t + +size +) = 0; + +2196 + give +: + +2197  +Execu +() { + +2198 +ExecutiProgss + +ogss +( +this +); + +2199 +Execu +( +ogss +); + +2202 +vtu +  +SdProgss_ +(cڡ +T + * +da +, +size_t + +cou +) = 0; + +2205 + gme +< +ass + + gT +> + +2207 +ass + + gAsyncProgssQueueWk + : +public + +AsyncBeProgssQueueWk +< +T +> { + +2208 +public +: + +2209 +exic + +AsyncProgssQueueWk +( + +2210 +Clback + * +back_ +, + +2211 cڡ * +sour_me + = "nan:AsyncProgressQueueWorker") + +2212 : +AsyncBeProgssQueueWk +< +T +>( +back_ +) { + +2213 +uv_mux_ +(& +async_lock +); + +2216 + gvtu + ~ +AsyncProgssQueueWk +() { + +2217 +uv_mux_lock +(& +async_lock +); + +2219 ! + gasyncda_ +. +emy +()) { + +2220 + gd +:: + +< +T +*, + gsize_t +> & + gda + = +asyncda_ +. +t +(); + +2221 +T + * + gda + = +da +. +f +; + +2223 + gasyncda_ +. +p +(); + +2225 + gde +[] + gda +; + +2228 +uv_mux_uock +(& +async_lock +); + +2229 +uv_mux_deroy +(& +async_lock +); + +2232  +WkCome +() { + +2233 +WkProgss +(); + +2234 + gAsyncWk +:: +WkCome +(); + +2237  +WkProgss +() { + +2238 +uv_mux_lock +(& +async_lock +); + +2240 ! + gasyncda_ +. +emy +()) { + +2241 + gd +:: + +< +T +*, + gsize_t +> & + gda + = +asyncda_ +. +t +(); + +2243 +T + * + gda + = +da +. +f +; + +2244 +size_t + + gsize + = +da +. +cd +; + +2246 + gasyncda_ +. +p +(); + +2247 +uv_mux_uock +(& +async_lock +); + +2250 i( + gthis +-> + gback +) { + +2251 + gthis +-> +HdProgssClback +( +da +, +size +); + +2254 + gde +[] + gda +; + +2256 +uv_mux_lock +(& +async_lock +); + +2259 +uv_mux_uock +(& +async_lock +); + +2262 + give +: + +2263  +SdProgss_ +(cڡ +T + * +da +, +size_t + +cou +) { + +2264 +T + * + gw_da + = +w + T[ +cou +]; + +2265 + gd +:: +cy +( +da +, d+ +cou +, +w_da +); + +2267 +uv_mux_lock +(& +async_lock +); + +2268 + gasyncda_ +. +push +( +d +:: + +< +T +*, +size_t +>( +w_da +, +cou +)); + +2269 +uv_mux_uock +(& +async_lock +); + +2271 +uv_async_nd +(& +this +-> +async +); + +2274 +uv_mux_t + + gasync_lock +; + +2275 + gd +:: +queue +< +d +:: + +< +T +*, + gsize_t +> > + gasyncda_ +; + +2278 +le +  + $AsyncExecu + ( +uv_wk_t +* +q +) { + +2279 +AsyncWk + * +wk + = +ic_ +( +q +-> +da +); + +2280 +wk +-> + `Execu +(); + +2281 + } +} + +2283 +le +  + $AsyncExecuCome + ( +uv_wk_t +* +q +) { + +2284 +AsyncWk +* +wk + = +ic_ +( +q +-> +da +); + +2285 +wk +-> + `WkCome +(); + +2286 +wk +-> + `Deroy +(); + +2287 + } +} + +2289 +le +  + $AsyncQueueWk + ( +AsyncWk +* +wk +) { + +2290 + `uv_queue_wk +( + +2291 + `GCutEvtLo +() + +2292 , & +wk +-> +que + + +2293 , +AsyncExecu + + +2294 , +t_ +< +uv_a_wk_cb +>( +AsyncExecuCome +) + +2296 + } +} + +2298 +mea + + gimp + { + +2300 +le + + +2301 +ExOBySgResour + const* + +2302 +GExResour +( +v8 +:: +Lol + +r +) { + +2303 #i +NODE_MODULE_VERSION + < +ATOM_0_21_MODULE_VERSION + + +2304  +r +-> +GExAsciiSgResour +(); + +2306  + gr +-> +GExOBySgResour +(); + +2310 +le + + +2311 +bo + + +2312 +IsEx +( +v8 +:: +Lol + +r +) { + +2313 #i +NODE_MODULE_VERSION + < +ATOM_0_21_MODULE_VERSION + + +2314  +r +-> +IsExAscii +(); + +2316  + gr +-> +IsExOBy +(); + +2322 + eEncodg + { + gASCII +, + gUTF8 +, + gBASE64 +, + gUCS2 +, + gBINARY +, + gHEX +, + gBUFFER +}; + +2324 #i +NODE_MODULE_VERSION + < +NODE_0_10_MODULE_VERSION + + +2325  + ~"n_rg_bys.h +" + +2328 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $Encode +( + +2329 cڡ * +buf +, +size_t + +n +, +Encodg + +codg + = +BINARY +) { + +2330 #i( +NODE_MODULE_VERSION + > +ATOM_0_21_MODULE_VERSION +) + +2331 +v8 +:: +Isީe +* +isީe + = v8::Isީe:: + `GCut +(); + +2332 +node +:: +codg + +node_c + = +ic_ +(encoding); + +2334 i( +codg + = +UCS2 +) { + +2335  +node +:: + `Encode +( + +2336 +isީe + + +2337 , +t_ +( +buf +) + +2338 , +n + / 2); + +2340  +node +:: + `Encode +( + +2341 +isީe + + +2342 , +t_ +( +buf +) + +2343 , +n + + +2344 , +node_c +); + +2346 #i( +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION +) + +2347  +node +:: + `Encode +( + +2348 +v8 +:: +Isީe +:: + `GCut +() + +2349 , +buf +, +n + + +2350 , +ic_ +< +node +:: +codg +>(encoding)); + +2352 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +2353  +node +:: + `Encode +( +buf +, +n +, +ic_ +(encoding)); + +2355  +imp +:: + `Encode +( +t_ +( +buf +), +n +, +codg +); + +2358 + } +} + +2360 +le + +ssize_t + +DecodeBys +( + +2361 +v8 +:: +Lol + +v +, +Encodg + +codg + = +BINARY +) { + +2362 #i( +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION +) + +2363  +node +:: +DecodeBys +( + +2364 +v8 +:: +Isީe +:: +GCut +() + +2365 , +v + + +2366 , +ic_ +< +node +:: +codg +>(encoding)); + +2368 #i( +NODE_MODULE_VERSION + < +NODE_0_10_MODULE_VERSION +) + +2369 i( + gcodg + = +BUFFER +) { + +2370  +node +:: +DecodeBys +( +v +,ode:: +BINARY +); + +2373  + gnode +:: +DecodeBys +( +v +, +ic_ +< +node +:: +codg +>(encoding)); + +2377 +le + +ssize_t + +DecodeWre +( + +2378 * +buf + + +2379 , +size_t + +n + + +2380 , +v8 +:: +Lol + +v + + +2381 , +Encodg + +codg + = +BINARY +) { + +2382 #i( +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION +) + +2383  +node +:: +DecodeWre +( + +2384 +v8 +:: +Isީe +:: +GCut +() + +2385 , +buf + + +2386 , +n + + +2387 , +v + + +2388 , +ic_ +< +node +:: +codg +>(encoding)); + +2390 #i( +NODE_MODULE_VERSION + < +NODE_0_10_MODULE_VERSION +) + +2391 i( + gcodg + = +BUFFER +) { + +2392  +node +:: +DecodeWre +( +buf +, +n +, +v +,ode:: +BINARY +); + +2395  + gnode +:: +DecodeWre +( + +2396 +buf + + +2397 , +n + + +2398 , +v + + +2399 , +ic_ +< +node +:: +codg +>(encoding)); + +2403 +le +  +SPryTeme +( + +2404 +v8 +:: +Lol + +m + + +2405 , cڡ * +me + + +2406 , +v8 +:: +Lol + +vue + + +2408 +HdSce + +sce +; + +2409 +STeme +( +m +-> +PryTeme +(), +me +, +vue +); + +2412 +le +  +SPryTeme +( + +2413 +v8 +:: +Lol + +m + + +2414 , +v8 +:: +Lol + +me + + +2415 , +v8 +:: +Lol + +vue + + +2416 , +v8 +:: +PrݔtyAribu + +ibus + + +2418 +HdSce + +sce +; + +2419 +STeme +( +m +-> +PryTeme +(), +me +, +vue +, +ibus +); + +2422 +le +  +SInTeme +( + +2423 +v8 +:: +Lol + +m + + +2424 , cڡ * +me + + +2425 , +v8 +:: +Lol + +vue + + +2427 +HdSce + +sce +; + +2428 +STeme +( +m +-> +InTeme +(), +me +, +vue +); + +2431 +le +  +SInTeme +( + +2432 +v8 +:: +Lol + +m + + +2433 , +v8 +:: +Lol + +me + + +2434 , +v8 +:: +Lol + +vue + + +2435 , +v8 +:: +PrݔtyAribu + +ibus + + +2437 +HdSce + +sce +; + +2438 +STeme +( +m +-> +InTeme +(), +me +, +vue +, +ibus +); + +2441 +mea + + gimp + { + +2447 + gme + < +tyme + + gT +> + +2448 +le + + +2450 +SMhodAux +( +T + +cv +, + +2451 +v8 +:: +Lol + +me +, + +2452 +v8 +:: +Lol + +l +, + +2453 +v8 +:: +Teme + *) { + +2454 +cv +-> +S +( +me +, +l +); + +2457 + gme + < +tyme + + gT +> + +2458 +le + + +2460 +SMhodAux +( +T + +cv +, + +2461 +v8 +:: +Lol + +me +, + +2462 +v8 +:: +Lol + +l +, + +2464 +S +( +cv +, +me +, +GFuni +( +l +). +ToLolChecked +()); + +2469 + gme + < +tyme + + gT +,em< + gtyme +> +ass + + gHdTy +> + +2470 +le +  +SMhod +( + +2471 +HdTy +< +T +> +cv + + +2472 , cڡ * +me + + +2473 , +FuniClback + +back + + +2474 , +v8 +:: +Lol + +da + = v8::Local()) { + +2475 +HdSce + +sce +; + +2476 + gv8 +:: +Lol +< +v8 +:: +FuniTeme +> +t + = +New +( +back +, + gda +); + +2477 + gv8 +:: +Lol +< +v8 +:: +Sg +> +_me + = +New +( +me +). +ToLolChecked +(); + +2478 + gt +-> +SCssName +( +_me +); + +2481 + gimp +:: +SMhodAux +( +cv +, +_me +, +t +, +ic_ +< +T +*>(0)); + +2484 +le +  +SPryMhod +( + +2485 +v8 +:: +Lol + +cv + + +2486 , cڡ * +me + + +2487 , +FuniClback + +back + + +2488 , +v8 +:: +Lol + +da + = v8::Local()) { + +2489 +HdSce + +sce +; + +2490 + gv8 +:: +Lol +< +v8 +:: +FuniTeme +> +t + = +New +( + +2491 +back + + +2492 , + gda + + +2493 , + gNew +< + gv8 +:: +Sigtu +>( +cv +)); + +2494 + gv8 +:: +Lol +< +v8 +:: +Sg +> +_me + = +New +( +me +). +ToLolChecked +(); + +2495 + gcv +-> +PryTeme +()-> +S +( +_me +, +t +); + +2496 + gt +-> +SCssName +( +_me +); + +2501 +le +  +SAcss +( + +2502 +v8 +:: +Lol + +l + + +2503 , +v8 +:: +Lol + +me + + +2504 , +GrClback + +gr + + +2505 , +SrClback + + + = 0 + +2506 , +v8 +:: +Lol + +da + = v8::Local() + +2507 , +v8 +:: +AcssCڌ + +gs + = v8:: +DEFAULT + + +2508 , +v8 +:: +PrݔtyAribu + +ibu + = v8:: +Ne + + +2509 , +imp +:: +Sig + +sigtu + = imp:: + $Sig +()) { + +2510 +HdSce + +sce +; + +2512 +imp +:: +NiveGr + +gr_ + = + +2513 +imp +:: +GrClbackW +; + +2514 +imp +:: +NiveSr + +_ + = + +2515 + + ? +imp +:: +SrClbackW + : 0; + +2517 +v8 +:: +Lol + +ٶ + = +New +(); + +2518 +ٶ +-> + `SIlFldCou +( +imp +:: +kAcssFldCou +); + +2519 +v8 +:: +Lol + +obj + = + `NewIn +( +ٶ +). + `ToLolChecked +(); + +2521 +obj +-> + `SIlFld +( + +2522 +imp +:: +kGrIndex + + +2523 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +gr +))); + +2525 i( + + != 0) { + +2526 +obj +-> + `SIlFld +( + +2527 +imp +:: +kSrIndex + + +2528 , +New +< +v8 +:: +Ex +>( +t_ +<*>( + +))); + +2531 i(! +da +. + `IsEmy +()) { + +2532 +obj +-> + `SIlFld +( +imp +:: +kDaIndex +, +da +); + +2535 +l +-> + `SAcss +( + +2536 +me + + +2537 , +gr_ + + +2538 , +_ + + +2539 , +obj + + +2540 , +gs + + +2541 , +ibu + + +2542 , +sigtu +); + +2543 + } +} + +2545 +le + +bo + +SAcss +( + +2546 +v8 +:: +Lol + +obj + + +2547 , +v8 +:: +Lol + +me + + +2548 , +GrClback + +gr + + +2549 , +SrClback + + + = 0 + +2550 , +v8 +:: +Lol + +da + = v8::Local() + +2551 , +v8 +:: +AcssCڌ + +gs + = v8:: +DEFAULT + + +2552 , +v8 +:: +PrݔtyAribu + +ibu + = v8:: +Ne +) { + +2553 +HdSce + +sce +; + +2555 + gimp +:: +NiveGr + +gr_ + = + +2556 +imp +:: +GrClbackW +; + +2557 + gimp +:: +NiveSr + +_ + = + +2558 + + ? +imp +:: +SrClbackW + : 0; + +2560 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +ٶ + = +New +(); + +2561 + gٶ +-> +SIlFldCou +( +imp +:: +kAcssFldCou +); + +2562 + gv8 +:: +Lol +< +v8 +:: +Obje +> +daobj + = +NewIn +( +ٶ +). +ToLolChecked +(); + +2564 + gdaobj +-> +SIlFld +( + +2565 +imp +:: +kGrIndex + + +2566 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +gr +))); + +2568 i(! + gda +. +IsEmy +()) { + +2569 + gdaobj +-> +SIlFld +( +imp +:: +kDaIndex +, +da +); + +2572 i( + g +) { + +2573 + gdaobj +-> +SIlFld +( + +2574 +imp +:: +kSrIndex + + +2575 , +New +< +v8 +:: +Ex +>( +t_ +<*>( + +))); + +2578 #i( +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION +) + +2579  + gobj +-> +SAcss +( + +2580 +GCutCڋxt +() + +2581 , +me + + +2582 , +gr_ + + +2583 , +_ + + +2584 , +daobj + + +2585 , +gs + + +2586 , +ibu +). +FromMaybe +( +l +); + +2588  + gobj +-> +SAcss +( + +2589 +me + + +2590 , +gr_ + + +2591 , +_ + + +2592 , +daobj + + +2593 , +gs + + +2594 , +ibu +); + +2598 +le +  +SNamedPrݔtyHdr +( + +2599 +v8 +:: +Lol + +l + + +2600 , +PrݔtyGrClback + +gr + + +2601 , +PrݔtySrClback + + + = 0 + +2602 , +PrݔtyQuyClback + +quy + = 0 + +2603 , +PrݔtyDClback + +d + = 0 + +2604 , +PrݔtyEnumClback + +um + = 0 + +2605 , +v8 +:: +Lol + +da + = v8::Local()) { + +2606 +HdSce + +sce +; + +2608 + gimp +:: +NivePrݔtyGr + +gr_ + = + +2609 +imp +:: +PrݔtyGrClbackW +; + +2610 + gimp +:: +NivePrݔtySr + +_ + = + +2611 + + ? +imp +:: +PrݔtySrClbackW + : 0; + +2612 + gimp +:: +NivePrݔtyQuy + +quy_ + = + +2613 +quy + ? +imp +:: +PrݔtyQuyClbackW + : 0; + +2614 + gimp +:: +NivePrݔtyD + * +d_ + = + +2615 +d + ? +imp +:: +PrݔtyDClbackW + : 0; + +2616 + gimp +:: +NivePrݔtyEnum + +um_ + = + +2617 +um + ? +imp +:: +PrݔtyEnumClbackW + : 0; + +2619 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +ٶ + = +New +(); + +2620 + gٶ +-> +SIlFldCou +( +imp +:: +kPrݔtyFldCou +); + +2621 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +NewIn +( +ٶ +). +ToLolChecked +(); + +2622 + gobj +-> +SIlFld +( + +2623 +imp +:: +kPrݔtyGrIndex + + +2624 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +gr +))); + +2626 i( + g +) { + +2627 + gobj +-> +SIlFld +( + +2628 +imp +:: +kPrݔtySrIndex + + +2629 , +New +< +v8 +:: +Ex +>( +t_ +<*>( + +))); + +2632 i( + gquy +) { + +2633 + gobj +-> +SIlFld +( + +2634 +imp +:: +kPrݔtyQuyIndex + + +2635 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +quy +))); + +2638 i( + gd +) { + +2639 + gobj +-> +SIlFld +( + +2640 +imp +:: +kPrݔtyDIndex + + +2641 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +d +))); + +2644 i( + gum +) { + +2645 + gobj +-> +SIlFld +( + +2646 +imp +:: +kPrݔtyEnumIndex + + +2647 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +um +))); + +2650 i(! + gda +. +IsEmy +()) { + +2651 + gobj +-> +SIlFld +( +imp +:: +kDaIndex +, +da +); + +2654 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +2655 + gl +-> +SHdr +( +v8 +:: +NamedPrݔtyHdrCfiguti +( + +2656 +gr_ +, +_ +, +quy_ +, +d_ +, +um_ +, +obj +)); + +2658 + gl +-> +SNamedPrݔtyHdr +( + +2659 +gr_ + + +2660 , +_ + + +2661 , +quy_ + + +2662 , +d_ + + +2663 , +um_ + + +2664 , +obj +); + +2668 +le +  +SIndexedPrݔtyHdr +( + +2669 +v8 +:: +Lol + +l + + +2670 , +IndexGrClback + +gr + + +2671 , +IndexSrClback + + + = 0 + +2672 , +IndexQuyClback + +quy + = 0 + +2673 , +IndexDClback + +d + = 0 + +2674 , +IndexEnumClback + +um + = 0 + +2675 , +v8 +:: +Lol + +da + = v8::Local()) { + +2676 +HdSce + +sce +; + +2678 + gimp +:: +NiveIndexGr + +gr_ + = + +2679 +imp +:: +IndexGrClbackW +; + +2680 + gimp +:: +NiveIndexSr + +_ + = + +2681 + + ? +imp +:: +IndexSrClbackW + : 0; + +2682 + gimp +:: +NiveIndexQuy + +quy_ + = + +2683 +quy + ? +imp +:: +IndexQuyClbackW + : 0; + +2684 + gimp +:: +NiveIndexD + +d_ + = + +2685 +d + ? +imp +:: +IndexDClbackW + : 0; + +2686 + gimp +:: +NiveIndexEnum + +um_ + = + +2687 +um + ? +imp +:: +IndexEnumClbackW + : 0; + +2689 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +ٶ + = +New +(); + +2690 + gٶ +-> +SIlFldCou +( +imp +:: +kIndexPrݔtyFldCou +); + +2691 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +NewIn +( +ٶ +). +ToLolChecked +(); + +2692 + gobj +-> +SIlFld +( + +2693 +imp +:: +kIndexPrݔtyGrIndex + + +2694 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +gr +))); + +2696 i( + g +) { + +2697 + gobj +-> +SIlFld +( + +2698 +imp +:: +kIndexPrݔtySrIndex + + +2699 , +New +< +v8 +:: +Ex +>( +t_ +<*>( + +))); + +2702 i( + gquy +) { + +2703 + gobj +-> +SIlFld +( + +2704 +imp +:: +kIndexPrݔtyQuyIndex + + +2705 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +quy +))); + +2708 i( + gd +) { + +2709 + gobj +-> +SIlFld +( + +2710 +imp +:: +kIndexPrݔtyDIndex + + +2711 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +d +))); + +2714 i( + gum +) { + +2715 + gobj +-> +SIlFld +( + +2716 +imp +:: +kIndexPrݔtyEnumIndex + + +2717 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +um +))); + +2720 i(! + gda +. +IsEmy +()) { + +2721 + gobj +-> +SIlFld +( +imp +:: +kDaIndex +, +da +); + +2724 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +2725 + gl +-> +SHdr +( +v8 +:: +IndexedPrݔtyHdrCfiguti +( + +2726 +gr_ +, +_ +, +quy_ +, +d_ +, +um_ +, +obj +)); + +2728 + gl +-> +SIndexedPrݔtyHdr +( + +2729 +gr_ + + +2730 , +_ + + +2731 , +quy_ + + +2732 , +d_ + + +2733 , +um_ + + +2734 , +obj +); + +2738 +le +  +SClHdr +( + +2739 +v8 +:: +Lol + +l + + +2740 , +FuniClback + +back + + +2741 , +v8 +:: +Lol + +da + = v8::Local()) { + +2742 +HdSce + +sce +; + +2744 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +ٶ + = +New +(); + +2745 + gٶ +-> +SIlFldCou +( +imp +:: +kFuniFldCou +); + +2746 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +NewIn +( +ٶ +). +ToLolChecked +(); + +2748 + gobj +-> +SIlFld +( + +2749 +imp +:: +kFuniIndex + + +2750 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +back +))); + +2752 i(! + gda +. +IsEmy +()) { + +2753 + gobj +-> +SIlFld +( +imp +:: +kDaIndex +, +da +); + +2756 + gl +-> +SClHdr +( +imp +:: +FuniClbackW +, +obj +); + +2760 +le +  +SClAsFuniHdr +( + +2761 +v8 +:: +Lol + +l +, + +2762 +FuniClback + +back +, + +2763 +v8 +:: +Lol + +da + = v8::Local()) { + +2764 +HdSce + +sce +; + +2766 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +ٶ + = +New +(); + +2767 + gٶ +-> +SIlFldCou +( +imp +:: +kFuniFldCou +); + +2768 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +NewIn +( +ٶ +). +ToLolChecked +(); + +2770 + gobj +-> +SIlFld +( + +2771 +imp +:: +kFuniIndex + + +2772 , +New +< +v8 +:: +Ex +>( +t_ +<*>( +back +))); + +2774 i(! + gda +. +IsEmy +()) { + +2775 + gobj +-> +SIlFld +( +imp +:: +kDaIndex +, +da +); + +2778 + gl +-> +SClAsFuniHdr +( +imp +:: +FuniClbackW +, +obj +); + +2783  + ~"n_wk.h +" + +2787  + ~"n_obje_wp.h +" + +2791  + ~"n_ive.h +" + +2795 +le + + +2797 + $Expt +( +ADDON_REGISTER_FUNCTION_ARGS_TYPE + +rg +, cڡ * +me +, + +2798 +FuniClback + +f +) { + +2799 +HdSce + +sce +; + +2801 + `S +( +rg +, +New +< +v8 +:: +Sg +>( +me +). + `ToLolChecked +(), + +2802 + `GFuni +( +New +< +v8 +:: +FuniTeme +>( +f +)). + `ToLolChecked +()); + +2803 + } +} + +2807  + sT + { + +2808 +exic + +T +( +v8 +:: +Lol + +t +: +t_ +() { + +2809 +HdSce + +sce +; + +2811 + gt_ +. +Ret +( +To +< +v8 +:: +Obje +>( +t +). +ToLolChecked +()); + +2814 ~ +T +({ + gt_ +. +Ret +(); } + +2816 +le +  + +( +i +) { + +2817 +HdSce + + gsce +; + +2818 + gv8 +:: +Lol +< +v8 +:: +Vue +> +g + = +New +( +i +); + +2819 +Cl +("", +New +( +t_ +), 1, & +g +); + +2822 +le +  +ok +( +bo + +isOk +, cڡ * +msg + = +NULL +) { + +2823 +HdSce + +sce +; + +2824 + gv8 +:: +Lol +< +v8 +:: +Vue +> +gs +[2]; + +2825 + ggs +[0] = +New +( +isOk +); + +2826 i( + gmsg + + ggs +[1] = +New +( +msg +). +ToLolChecked +(); + +2827 +Cl +("ok", +New +( +t_ +), +msg + ? 2 : 1, +gs +); + +2830 +le +  +ss +(cڡ * +msg + = +NULL +) { + +2831 +HdSce + +sce +; + +2832 + gv8 +:: +Lol +< +v8 +:: +Vue +> +hmsg +; + +2833 i( + gmsg + + ghmsg + = +New +( +msg +). +ToLolChecked +(); + +2834 +Cl +("ss", +New +( +t_ +), +msg + ? 1 : 0, & +hmsg +); + +2837 +le +  +d +() { + +2838 +HdSce + + gsce +; + +2839 +Cl +("d", +New +( +t_ +), 0, +NULL +); + +2842 + give +: + +2843 +Psit +< +v8 +:: +Obje +> +t_ +; + +2846  + #NAN_STRINGIZE2 +( +x +#x + + ) + +2847  + #NAN_STRINGIZE +( +x + + $NAN_STRINGIZE2 +( +x +) + + ) + +2848  + #NAN_TEST_EXPRESSION +( +exessi +) \ + +2849 +exessi + ), +__FILE__ + ":" + `NAN_STRINGIZE +( +__LINE__ +": " #exessi + + ) + +2851  + #NAN_EXPORT +( +rg +, +funi + + `Expt +Ѭg, #funi, funi) + + ) + +2853 #unde +TYPE_CHECK + + +2857 +mea + +imp + { + +2859 +me + < +tyme + +T +>  +Maybefr +; + +2861 +me + < +tyme + +T +>  +Maybefr +< +v8 +:: +Lol + > { + +2862 +le +  +MaybeLol +< +T +> + `cvt +( +v8 +:: +Lol + +v +) { + +2863  +v +; + +2867 +me + < +tyme + +T +>  +Maybefr +< +MaybeLol + > { + +2868 +le +  +MaybeLol +< +T +> + `cvt +(MaybeLol +v +) { + +2869  +v +; + +2873 + } +} + +2875 + gme + < +tyme + + gT +,em< + gtyme +> +ass + + gMaybeMaybe +> + +2876 +le + + gMaybeLol +< + gT +> + +2877 +MakeMaybe +( +MaybeMaybe +< +T +> +v +) { + +2878  + gimp +:: +Maybefr +< +MaybeMaybe +< +T +> >:: +cvt +( +v +); + +2883  + ~"n_tydy_cڋs.h +" + +2887  + ~"n_js.h +" + + @interface/node_modules/nan/nan_callbacks.h + +9 #ide +NAN_CALLBACKS_H_ + + +10  + #NAN_CALLBACKS_H_ + + + ) + +12 + gme +< +tyme + + gT +> +ass + + gFuniClbackInfo +; + +13 + gme +< +tyme + + gT +> +ass + + gPrݔtyClbackInfo +; + +14 + gme +< +tyme + + gT +> +ass + + gGlob +; + +16 (* + tFuniClback +)(cڡ + tFuniClbackInfo +< + tv8 +:: + tVue +>&); + +17 (* + tGrClback +) + +18 ( + tv8 +:: + tLol +, cڡ + tPrݔtyClbackInfo +&); + +19 (* + tSrClback +)( + +20 + tv8 +:: + tLol +, + +21 + tv8 +:: + tLol +, + +22 cڡ + tPrݔtyClbackInfo +<>&); + +23 (* + tPrݔtyGrClback +)( + +24 + tv8 +:: + tLol +, + +25 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>&); + +26 (* + tPrݔtySrClback +)( + +27 + tv8 +:: + tLol +, + +28 + tv8 +:: + tLol +, + +29 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>&); + +30 (* + tPrݔtyEnumClback +) + +31 (cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tAay +>&); + +32 (* + tPrݔtyDClback +)( + +33 + tv8 +:: + tLol +, + +34 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tBoޗn +>&); + +35 (* + tPrݔtyQuyClback +)( + +36 + tv8 +:: + tLol +, + +37 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tIeg +>&); + +38 (* + tIndexGrClback +)( + +39 + tut32_t +, + +40 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>&); + +41 (* + tIndexSrClback +)( + +42 + tut32_t +, + +43 + tv8 +:: + tLol +, + +44 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tVue +>&); + +45 (* + tIndexEnumClback +) + +46 (cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tAay +>&); + +47 (* + tIndexDClback +)( + +48 + tut32_t +, + +49 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tBoޗn +>&); + +50 (* + tIndexQuyClback +)( + +51 + tut32_t +, + +52 cڡ + tPrݔtyClbackInfo +< + tv8 +:: + tIeg +>&); + +54 +mea + +imp + { + +55  +v8 +:: + tLol +< + tv8 +:: + tAcssSigtu +> + tSig +; + +57 cڡ  +kDaIndex + = 0; + +59 cڡ  +kFuniIndex + = 1; + +60 cڡ  +kFuniFldCou + = 2; + +62 cڡ  +kGrIndex + = 1; + +63 cڡ  +kSrIndex + = 2; + +64 cڡ  +kAcssFldCou + = 3; + +66 cڡ  +kPrݔtyGrIndex + = 1; + +67 cڡ  +kPrݔtySrIndex + = 2; + +68 cڡ  +kPrݔtyEnumIndex + = 3; + +69 cڡ  +kPrݔtyDIndex + = 4; + +70 cڡ  +kPrݔtyQuyIndex + = 5; + +71 cڡ  +kPrݔtyFldCou + = 6; + +73 cڡ  +kIndexPrݔtyGrIndex + = 1; + +74 cڡ  +kIndexPrݔtySrIndex + = 2; + +75 cڡ  +kIndexPrݔtyEnumIndex + = 3; + +76 cڡ  +kIndexPrݔtyDIndex + = 4; + +77 cڡ  +kIndexPrݔtyQuyIndex + = 5; + +78 cڡ  +kIndexPrݔtyFldCou + = 6; + +80 + } +} + +82 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +83  + ~"n_backs_12_l.h +" + +85  + ~"n_backs_e_12_l.h +" + + @interface/node_modules/nan/nan_callbacks_12_inl.h + +9 #ide +NAN_CALLBACKS_12_INL_H_ + + +10  + #NAN_CALLBACKS_12_INL_H_ + + + ) + +12 + gme +< +tyme + + gT +> + +13 as + cRuVue + { + +14 + mv8 +:: +RuVue +< +T +> +vue_ +; + +16 + mpublic +: + +17 +me + < +ass + +S +> + +18 +exic + +le + +RuVue +(cڡ +v8 +::RuVue< +S +> & +vue +) : + +19 + $vue_ +( +vue +) {} + +20 +me + < +ass + +S +> + +21 +exic + +le + + `RuVue +(cڡ +RuVue +< +S +>& +th +) + +22 : + $vue_ +( +th +. +vue_ +) { + +23 + `TYPE_CHECK +( +T +, +S +); + +24 + } +} + +27 + gme + < +tyme + + gS +> +le +  +S +(cڡ +v8 +:: +Lol +< +S +> & +hd +) { + +28 +TYPE_CHECK +( +T +, +S +); + +29 + gvue_ +. +S +( +hd +); + +32 + gme + < +tyme + + gS +> +le +  +S +(cڡ +Glob +< +S +> & +hd +) { + +33 +TYPE_CHECK +( +T +, +S +); + +34 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +35 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && \ + +36 ( +V8_MINOR_VERSION + > 5 || (V8_MINOR_VERSION == 5 && \ + +37 +defed +( +V8_BUILD_NUMBER +) && V8_BUILD_NUMBER >= 8)))) + +38 +vue_ +. +S +( +hd +); + +40 + gvue_ +. +S +(* +t_ +*>(& +hd +)); + +41 + gcڡ_ +< + gGlob +< + gS +> &>( + ghd +). +Ret +(); + +46 +le +  + $S +( +bo + +vue +) { + +47 + `TYPE_CHECK +( +T +, +v8 +:: +Boޗn +); + +48 +vue_ +. + `S +( +vue +); + +49 + } +} + +51 +le +  + $S +( +i +) { + +52 + `TYPE_CHECK +( +T +, +v8 +:: +Numb +); + +53 +vue_ +. + `S +( +i +); + +54 + } +} + +56 +le +  + $S +( +t32_t + +i +) { + +57 + `TYPE_CHECK +( +T +, +v8 +:: +Ieg +); + +58 +vue_ +. + `S +( +i +); + +59 + } +} + +61 +le +  + $S +( +ut32_t + +i +) { + +62 + `TYPE_CHECK +( +T +, +v8 +:: +Ieg +); + +63 +vue_ +. + `S +( +i +); + +64 + } +} + +67 +le +  + $SNu +() { + +68 + `TYPE_CHECK +( +T +, +v8 +:: +Primive +); + +69 +vue_ +. + `SNu +(); + +70 + } +} + +72 +le +  + $SUndefed +() { + +73 + `TYPE_CHECK +( +T +, +v8 +:: +Primive +); + +74 +vue_ +. + `SUndefed +(); + +75 + } +} + +77 +le +  + $SEmySg +() { + +78 + `TYPE_CHECK +( +T +, +v8 +:: +Sg +); + +79 +vue_ +. + `SEmySg +(); + +80 + } +} + +83 +le + + gv8 +:: +Isީe + * + $GIsީe +() const { + +84  +vue_ +. + `GIsީe +(); + +85 + } +} + +88 + gme +< +tyme + + gS +> + +89 +le +  + $S +( +S + * +whev +{ + `TYPE_CHECK +(S*, +v8 +:: +Primive +); + } +} + +92 + gme +< +tyme + + gT +> + +93 as + cFuniClbackInfo + { + +94 cڡ + mv8 +:: +FuniClbackInfo +< +T +> & +fo_ +; + +95 cڡ + mv8 +:: +Lol +< +v8 +:: +Vue +> +da_ +; + +97 + mpublic +: + +98 +exic + +le + +FuniClbackInfo +( + +99 cڡ +v8 +:: +FuniClbackInfo +< +T +> & +fo + + +100 , +v8 +:: +Lol + +da +) : + +101 +fo_ +( +fo +) + +102 , + $da_ +( +da +) {} + +104 +le + +RuVue +< +T +> + $GRuVue +() const { + +105  +RuVue +< +T +>( +fo_ +. + `GRuVue +()); + +106 + } +} + +108 #i +NODE_MAJOR_VERSION + < 10 + +109 +le + + gv8 +:: +Lol +< +v8 +:: +Funi +> + $Ce +(cڡ {  +fo_ +. + `Ce +(); + } +} + +111 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $Da +(cڡ {  +da_ +; + } +} + +112 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $Hd +(cڡ {  +fo_ +. + `Hd +(); + } +} + +113 +le + +bo + + $IsCڡruCl +(cڡ {  +fo_ +. + `IsCڡruCl +(); + } +} + +114 +le +  + $Lgth +(cڡ {  +fo_ +. + `Lgth +(); + } +} + +115 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +ݔ +[]( +i +cڡ {  +fo_ +[i]; } + +116 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $This +(cڡ {  +fo_ +. + `This +(); + } +} + +117 +le + + gv8 +:: +Isީe + * + $GIsީe +(cڡ {  +fo_ +. + `GIsީe +(); + } +} + +120 + geed +: + +121 cڡ  +kHdIndex + = 0; + +122 cڡ  + gkIsީeIndex + = 1; + +123 cڡ  + gkRuVueDeuVueIndex + = 2; + +124 cڡ  + gkRuVueIndex + = 3; + +125 cڡ  + gkDaIndex + = 4; + +126 cڡ  + gkCeIndex + = 5; + +127 cڡ  + gkCڋxtSaveIndex + = 6; + +128 cڡ  + gkArgsLgth + = 7; + +130 + give +: + +131 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +FuniClbackInfo +) + +134 + gme +< +tyme + + gT +> + +135 as + cPrݔtyClbackInfo + { + +136 cڡ + mv8 +:: +PrݔtyClbackInfo +< +T +> & +fo_ +; + +137 cڡ + mv8 +:: +Lol +< +v8 +:: +Vue +> +da_ +; + +139 + mpublic +: + +140 +exic + +le + +PrݔtyClbackInfo +( + +141 cڡ +v8 +:: +PrݔtyClbackInfo +< +T +> & +fo + + +142 , cڡ +v8 +:: +Lol + +da +) : + +143 +fo_ +( +fo +) + +144 , + $da_ +( +da +) {} + +146 +le + +v8 +:: +Isީe +* + $GIsީe +(cڡ {  +fo_ +. + `GIsީe +(); + } +} + +147 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $Da +(cڡ {  +da_ +; + } +} + +148 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $This +(cڡ {  +fo_ +. + `This +(); + } +} + +149 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $Hd +(cڡ {  +fo_ +. + `Hd +(); + } +} + +150 +le + + gRuVue +< + gT +> + $GRuVue +() const { + +151  +RuVue +< +T +>( +fo_ +. + `GRuVue +()); + +152 + } +} + +154 + geed +: + +155 cڡ  +kHdIndex + = 0; + +156 cڡ  + gkIsީeIndex + = 1; + +157 cڡ  + gkRuVueDeuVueIndex + = 2; + +158 cڡ  + gkRuVueIndex + = 3; + +159 cڡ  + gkDaIndex + = 4; + +160 cڡ  + gkThisIndex + = 5; + +161 cڡ  + gkArgsLgth + = 6; + +163 + give +: + +164 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +PrݔtyClbackInfo +) + +167 +mea + + gimp + { + +169  +FuniClbackW +(cڡ +v8 +:: +FuniClbackInfo + & +fo +) { + +170 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +171 +FuniClback + + gback + = +t_ +( + +172 +t_ +< +_t +>( + +173 +obj +-> +GIlFld +( +kFuniIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +174 + gFuniClbackInfo +< + gv8 +:: +Vue +> + +175 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +176 +back +( +cbfo +); + +179 (* + gNiveFuni +)(cڡ + tv8 +:: + tFuniClbackInfo + &); + +181 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +183  +GrClbackW +( + +184 +v8 +:: +Lol + +ݔty + + +185 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +186 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +187 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +188 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +189 +GrClback + + gback + = +t_ +( + +190 +t_ +< +_t +>( + +191 +obj +-> +GIlFld +( +kGrIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +192 +back +( +ݔty +. +As +< +v8 +:: +Sg +>(), +cbfo +); + +195 (* + gNiveGr +) + +196 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +199  +SrClbackW +( + +200 +v8 +:: +Lol + +ݔty + + +201 , +v8 +:: +Lol + +vue + + +202 , cڡ +v8 +:: +PrݔtyClbackInfo +<> & +fo +) { + +203 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +204 + gPrݔtyClbackInfo +<> + +205 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +206 +SrClback + + gback + = +t_ +( + +207 +t_ +< +_t +>( + +208 +obj +-> +GIlFld +( +kSrIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +209 +back +( +ݔty +. +As +< +v8 +:: +Sg +>(), +vue +, +cbfo +); + +212 (* + gNiveSr +)( + +213 + tv8 +:: + tLol + + +214 , + tv8 +:: + tLol + + +215 , cڡ + tv8 +:: + tPrݔtyClbackInfo +<> &); + +218  +GrClbackW +( + +219 +v8 +:: +Lol + +ݔty + + +220 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +221 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +222 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +223 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +224 +GrClback + + gback + = +t_ +( + +225 +t_ +< +_t +>( + +226 +obj +-> +GIlFld +( +kGrIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +227 +back +( +ݔty +, +cbfo +); + +230 (* + gNiveGr +) + +231 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +234  +SrClbackW +( + +235 +v8 +:: +Lol + +ݔty + + +236 , +v8 +:: +Lol + +vue + + +237 , cڡ +v8 +:: +PrݔtyClbackInfo +<> & +fo +) { + +238 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +239 + gPrݔtyClbackInfo +<> + +240 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +241 +SrClback + + gback + = +t_ +( + +242 +t_ +< +_t +>( + +243 +obj +-> +GIlFld +( +kSrIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +244 +back +( +ݔty +, +vue +, +cbfo +); + +247 (* + gNiveSr +)( + +248 + tv8 +:: + tLol + + +249 , + tv8 +:: + tLol + + +250 , cڡ + tv8 +:: + tPrݔtyClbackInfo +<> &); + +253 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +255  +PrݔtyGrClbackW +( + +256 +v8 +:: +Lol + +ݔty + + +257 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +258 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +259 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +260 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +261 +PrݔtyGrClback + + gback + = +t_ +( + +262 +t_ +< +_t +>( + +263 +obj +-> +GIlFld +( +kPrݔtyGrIndex +) + +264 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +265 +back +( +ݔty +. +As +< +v8 +:: +Sg +>(), +cbfo +); + +268 (* + gNivePrݔtyGr +) + +269 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +272  +PrݔtySrClbackW +( + +273 +v8 +:: +Lol + +ݔty + + +274 , +v8 +:: +Lol + +vue + + +275 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +276 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +277 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +278 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +279 +PrݔtySrClback + + gback + = +t_ +( + +280 +t_ +< +_t +>( + +281 +obj +-> +GIlFld +( +kPrݔtySrIndex +) + +282 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +283 +back +( +ݔty +. +As +< +v8 +:: +Sg +>(), +vue +, +cbfo +); + +286 (* + gNivePrݔtySr +)( + +287 + tv8 +:: + tLol + + +288 , + tv8 +:: + tLol + + +289 , cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +292  +PrݔtyEnumClbackW +( + +293 cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +294 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +295 + gPrݔtyClbackInfo +< + gv8 +:: +Aay +> + +296 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +297 +PrݔtyEnumClback + + gback + = + +298 +t_ +< +PrݔtyEnumClback +>et_< +_t +>( + +299 +obj +-> +GIlFld +( +kPrݔtyEnumIndex +) + +300 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +301 +back +( +cbfo +); + +304 (* + gNivePrݔtyEnum +) + +305 (cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +308  +PrݔtyDClbackW +( + +309 +v8 +:: +Lol + +ݔty + + +310 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +311 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +312 + gPrݔtyClbackInfo +< + gv8 +:: +Boޗn +> + +313 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +314 +PrݔtyDClback + + gback + = +t_ +( + +315 +t_ +< +_t +>( + +316 +obj +-> +GIlFld +( +kPrݔtyDIndex +) + +317 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +318 +back +( +ݔty +. +As +< +v8 +:: +Sg +>(), +cbfo +); + +321 ( + gNivePrݔtyD +) + +322 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +325  +PrݔtyQuyClbackW +( + +326 +v8 +:: +Lol + +ݔty + + +327 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +328 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +329 + gPrݔtyClbackInfo +< + gv8 +:: +Ieg +> + +330 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +331 +PrݔtyQuyClback + + gback + = +t_ +( + +332 +t_ +< +_t +>( + +333 +obj +-> +GIlFld +( +kPrݔtyQuyIndex +) + +334 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +335 +back +( +ݔty +. +As +< +v8 +:: +Sg +>(), +cbfo +); + +338 (* + gNivePrݔtyQuy +) + +339 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +342  +PrݔtyGrClbackW +( + +343 +v8 +:: +Lol + +ݔty + + +344 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +345 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +346 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +347 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +348 +PrݔtyGrClback + + gback + = +t_ +( + +349 +t_ +< +_t +>( + +350 +obj +-> +GIlFld +( +kPrݔtyGrIndex +) + +351 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +352 +back +( +ݔty +, +cbfo +); + +355 (* + gNivePrݔtyGr +) + +356 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +359  +PrݔtySrClbackW +( + +360 +v8 +:: +Lol + +ݔty + + +361 , +v8 +:: +Lol + +vue + + +362 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +363 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +364 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +365 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +366 +PrݔtySrClback + + gback + = +t_ +( + +367 +t_ +< +_t +>( + +368 +obj +-> +GIlFld +( +kPrݔtySrIndex +) + +369 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +370 +back +( +ݔty +, +vue +, +cbfo +); + +373 (* + gNivePrݔtySr +)( + +374 + tv8 +:: + tLol + + +375 , + tv8 +:: + tLol + + +376 , cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +379  +PrݔtyEnumClbackW +( + +380 cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +381 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +382 + gPrݔtyClbackInfo +< + gv8 +:: +Aay +> + +383 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +384 +PrݔtyEnumClback + + gback + = + +385 +t_ +< +PrݔtyEnumClback +>et_< +_t +>( + +386 +obj +-> +GIlFld +( +kPrݔtyEnumIndex +) + +387 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +388 +back +( +cbfo +); + +391 (* + gNivePrݔtyEnum +) + +392 (cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +395  +PrݔtyDClbackW +( + +396 +v8 +:: +Lol + +ݔty + + +397 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +398 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +399 + gPrݔtyClbackInfo +< + gv8 +:: +Boޗn +> + +400 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +401 +PrݔtyDClback + + gback + = +t_ +( + +402 +t_ +< +_t +>( + +403 +obj +-> +GIlFld +( +kPrݔtyDIndex +) + +404 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +405 +back +( +ݔty +, +cbfo +); + +408 ( + gNivePrݔtyD +) + +409 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +412  +PrݔtyQuyClbackW +( + +413 +v8 +:: +Lol + +ݔty + + +414 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +415 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +416 + gPrݔtyClbackInfo +< + gv8 +:: +Ieg +> + +417 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +418 +PrݔtyQuyClback + + gback + = +t_ +( + +419 +t_ +< +_t +>( + +420 +obj +-> +GIlFld +( +kPrݔtyQuyIndex +) + +421 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +422 +back +( +ݔty +, +cbfo +); + +425 (* + gNivePrݔtyQuy +) + +426 ( + tv8 +:: + tLol +, cڡ v8:: + tPrݔtyClbackInfo + &); + +430  +IndexGrClbackW +( + +431 +ut32_t + +dex +, cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +432 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +433 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +434 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +435 +IndexGrClback + + gback + = +t_ +( + +436 +t_ +< +_t +>( + +437 +obj +-> +GIlFld +( +kIndexPrݔtyGrIndex +) + +438 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +439 +back +( +dex +, +cbfo +); + +442 (* + gNiveIndexGr +) + +443 ( + tut32_t +, cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +446  +IndexSrClbackW +( + +447 +ut32_t + +dex + + +448 , +v8 +:: +Lol + +vue + + +449 , cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +450 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +451 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +452 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +453 +IndexSrClback + + gback + = +t_ +( + +454 +t_ +< +_t +>( + +455 +obj +-> +GIlFld +( +kIndexPrݔtySrIndex +) + +456 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +457 +back +( +dex +, +vue +, +cbfo +); + +460 (* + gNiveIndexSr +)( + +461 + tut32_t + + +462 , + tv8 +:: + tLol + + +463 , cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +466  +IndexEnumClbackW +( + +467 cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +468 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +469 + gPrݔtyClbackInfo +< + gv8 +:: +Aay +> + +470 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +471 +IndexEnumClback + + gback + = +t_ +( + +472 +t_ +< +_t +>( + +473 +obj +-> +GIlFld +( + +474 +kIndexPrݔtyEnumIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +475 +back +( +cbfo +); + +478 (* + gNiveIndexEnum +) + +479 (cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +482  +IndexDClbackW +( + +483 +ut32_t + +dex +, cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +484 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +485 + gPrݔtyClbackInfo +< + gv8 +:: +Boޗn +> + +486 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +487 +IndexDClback + + gback + = +t_ +( + +488 +t_ +< +_t +>( + +489 +obj +-> +GIlFld +( +kIndexPrݔtyDIndex +) + +490 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +491 +back +( +dex +, +cbfo +); + +494 (* + gNiveIndexD +) + +495 ( + tut32_t +, cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + +498  +IndexQuyClbackW +( + +499 +ut32_t + +dex +, cڡ +v8 +:: +PrݔtyClbackInfo + & +fo +) { + +500 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +501 + gPrݔtyClbackInfo +< + gv8 +:: +Ieg +> + +502 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +503 +IndexQuyClback + + gback + = +t_ +( + +504 +t_ +< +_t +>( + +505 +obj +-> +GIlFld +( +kIndexPrݔtyQuyIndex +) + +506 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +507 +back +( +dex +, +cbfo +); + +510 (* + gNiveIndexQuy +) + +511 ( + tut32_t +, cڡ + tv8 +:: + tPrݔtyClbackInfo + &); + + @interface/node_modules/nan/nan_callbacks_pre_12_inl.h + +9 #ide +NAN_CALLBACKS_PRE_12_INL_H_ + + +10  + #NAN_CALLBACKS_PRE_12_INL_H_ + + + ) + +12 +mea + + gimp + { + +13 + gme +< +tyme + + gT +> +ass + + gRuVueImp +; + +16 + gme +< +tyme + + gT +> + +17 as + cRuVue + { + +18 + mv8 +:: +Isީe + * +isީe_ +; + +19 + mv8 +:: +Psit +< +T +> * +vue_ +; + +20 +nd + +ass + + mimp +:: +RuVueImp +< +T +>; + +22 + mpublic +: + +23 +me + < +ass + +S +> + +24 +exic + +le + +RuVue +( +v8 +:: +Isީe + * +isީe +, v8:: +Psit +< +S +> * +p +) : + +25 +isީe_ +( +isީe +), + $vue_ +( +p +) {} + +26 +me + < +ass + +S +> + +27 +exic + +le + + `RuVue +(cڡ +RuVue +< +S +>& +th +) + +28 : + `isީe_ +( +th +. +isީe_ +), + $vue_ +( +th +. +vue_ +) { + +29 + `TYPE_CHECK +( +T +, +S +); + +30 + } +} + +33 + gme + < +tyme + + gS +> +le +  +S +(cڡ +v8 +:: +Lol +< +S +> & +hd +) { + +34 +TYPE_CHECK +( +T +, +S +); + +35 + gvue_ +-> +Dio +(); + +36 * + gvue_ + = +v8 +:: +Psit +< +T +>:: +New +( +hd +); + +39 + gme + < +tyme + + gS +> +le +  +S +(cڡ +Glob +< +S +> & +hd +) { + +40 +TYPE_CHECK +( +T +, +S +); + +41 + gvue_ +-> +Dio +(); + +42 * + gvue_ + = +v8 +:: +Psit +< +T +>:: +New +( +hd +. +rsit +); + +43 + gcڡ_ +< + gGlob +< + gS +> &>( + ghd +). +Ret +(); + +47 +le +  + $S +( +bo + +vue +) { + +48 +v8 +:: +HdSce + +sce +; + +50 + `TYPE_CHECK +( +T +, +v8 +:: +Boޗn +); + +51 +vue_ +-> + `Dio +(); + +52 * +vue_ + = +v8 +:: +Psit +< +T +>:: + `New +(v8:: +Boޗn +::New( +vue +)); + +53 + } +} + +55 +le +  + $S +( +i +) { + +56 +v8 +:: +HdSce + +sce +; + +58 + `TYPE_CHECK +( +T +, +v8 +:: +Numb +); + +59 +vue_ +-> + `Dio +(); + +60 * +vue_ + = +v8 +:: +Psit +< +T +>:: + `New +(v8:: +Numb +::New( +i +)); + +61 + } +} + +63 +le +  + $S +( +t32_t + +i +) { + +64 +v8 +:: +HdSce + +sce +; + +66 + `TYPE_CHECK +( +T +, +v8 +:: +Ieg +); + +67 +vue_ +-> + `Dio +(); + +68 * +vue_ + = +v8 +:: +Psit +< +T +>:: + `New +(v8:: +I32 +::New( +i +)); + +69 + } +} + +71 +le +  + $S +( +ut32_t + +i +) { + +72 +v8 +:: +HdSce + +sce +; + +74 + `TYPE_CHECK +( +T +, +v8 +:: +Ieg +); + +75 +vue_ +-> + `Dio +(); + +76 * +vue_ + = +v8 +:: +Psit +< +T +>:: + `New +(v8:: +Ut32 +:: + `NewFromUnsigd +( +i +)); + +77 + } +} + +80 +le +  + $SNu +() { + +81 +v8 +:: +HdSce + +sce +; + +83 + `TYPE_CHECK +( +T +, +v8 +:: +Primive +); + +84 +vue_ +-> + `Dio +(); + +85 * +vue_ + = +v8 +:: +Psit +< +T +>:: + `New +(v8:: + `Nu +()); + +86 + } +} + +88 +le +  + $SUndefed +() { + +89 +v8 +:: +HdSce + +sce +; + +91 + `TYPE_CHECK +( +T +, +v8 +:: +Primive +); + +92 +vue_ +-> + `Dio +(); + +93 * +vue_ + = +v8 +:: +Psit +< +T +>:: + `New +(v8:: + `Undefed +()); + +94 + } +} + +96 +le +  + $SEmySg +() { + +97 +v8 +:: +HdSce + +sce +; + +99 + `TYPE_CHECK +( +T +, +v8 +:: +Sg +); + +100 +vue_ +-> + `Dio +(); + +101 * +vue_ + = +v8 +:: +Psit +< +T +>:: + `New +(v8:: +Sg +:: + `Emy +()); + +102 + } +} + +105 +le + + gv8 +:: +Isީe + * + $GIsީe +() const { + +106  +isީe_ +; + +107 + } +} + +110 + gme +< +tyme + + gS +> + +111 +le +  + $S +( +S + * +whev +{ + `TYPE_CHECK +(S*, +v8 +:: +Primive +); + } +} + +114 + gme +< +tyme + + gT +> + +115 as + cFuniClbackInfo + { + +116 cڡ + mv8 +:: +Argumts + & +gs_ +; + +117 + mv8 +:: +Lol +< +v8 +:: +Vue +> +da_ +; + +118 + mRuVue +< + mT +> + mtu_vue_ +; + +119 + mv8 +:: +Psit +< +T +> +tv_ +; + +121 + mpublic +: + +122 +exic + +le + +FuniClbackInfo +( + +123 cڡ +v8 +:: +Argumts + & +gs + + +124 , +v8 +:: +Lol + +da +) : + +125 +gs_ +( +gs +) + +126 , +da_ +( +da +) + +127 , +tu_vue_ +( +gs +. +GIsީe +(), & +tv_ +) + +128 , +tv_ +( +v8 +:: +Psit +< +T +>:: +New +(v8:: + $Undefed +())) {} + +130 +le + ~ + $FuniClbackInfo +() { + +131 +tv_ +. + `Dio +(); + +132 +tv_ +. + `Cˬ +(); + +133 + } +} + +135 +le + + gRuVue +< + gT +> + $GRuVue +() const { + +136  +RuVue +< +T +>( +tu_vue_ +); + +137 + } +} + +139 +le + + gv8 +:: +Lol +< +v8 +:: +Funi +> + $Ce +(cڡ {  +gs_ +. + `Ce +(); + } +} + +140 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $Da +(cڡ {  +da_ +; + } +} + +141 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $Hd +(cڡ {  +gs_ +. + `Hd +(); + } +} + +142 +le + +bo + + $IsCڡruCl +(cڡ {  +gs_ +. + `IsCڡruCl +(); + } +} + +143 +le +  + $Lgth +(cڡ {  +gs_ +. + `Lgth +(); + } +} + +144 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +ݔ +[]( +i +cڡ {  +gs_ +[i]; } + +145 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $This +(cڡ {  +gs_ +. + `This +(); + } +} + +146 +le + + gv8 +:: +Isީe + * + $GIsީe +(cڡ {  +gs_ +. + `GIsީe +(); + } +} + +149 + geed +: + +150 cڡ  +kHdIndex + = 0; + +151 cڡ  + gkIsީeIndex + = 1; + +152 cڡ  + gkRuVueDeuVueIndex + = 2; + +153 cڡ  + gkRuVueIndex + = 3; + +154 cڡ  + gkDaIndex + = 4; + +155 cڡ  + gkCeIndex + = 5; + +156 cڡ  + gkCڋxtSaveIndex + = 6; + +157 cڡ  + gkArgsLgth + = 7; + +159 + give +: + +160 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +FuniClbackInfo +) + +163 + gme +< +tyme + + gT +> + +164 as + cPrݔtyClbackInfoBa + { + +165 cڡ + mv8 +:: +AcssInfo + & +fo_ +; + +166 cڡ + mv8 +:: +Lol +< +v8 +:: +Vue +> +da_ +; + +168 + mpublic +: + +169 +exic + +le + +PrݔtyClbackInfoBa +( + +170 cڡ +v8 +:: +AcssInfo + & +fo + + +171 , cڡ +v8 +:: +Lol + +da +) : + +172 +fo_ +( +fo +) + +173 , + $da_ +( +da +) {} + +175 +le + +v8 +:: +Isީe +* + $GIsީe +(cڡ {  +fo_ +. + `GIsީe +(); + } +} + +176 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> + $Da +(cڡ {  +da_ +; + } +} + +177 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $This +(cڡ {  +fo_ +. + `This +(); + } +} + +178 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $Hd +(cڡ {  +fo_ +. + `Hd +(); + } +} + +180 + geed +: + +181 cڡ  +kHdIndex + = 0; + +182 cڡ  + gkIsީeIndex + = 1; + +183 cڡ  + gkRuVueDeuVueIndex + = 2; + +184 cڡ  + gkRuVueIndex + = 3; + +185 cڡ  + gkDaIndex + = 4; + +186 cڡ  + gkThisIndex + = 5; + +187 cڡ  + gkArgsLgth + = 6; + +189 + give +: + +190 +NAN_DISALLOW_ASSIGN_COPY_MOVE +( +PrݔtyClbackInfoBa +) + +193 + gme +< +tyme + + gT +> + +194 +ass + + gPrݔtyClbackInfo + : +public + +PrݔtyClbackInfoBa +< +T +> { + +195 +RuVue +< +T +> +tu_vue_ +; + +196 + gv8 +:: +Psit +< +T +> +tv_ +; + +198 + gpublic +: + +199 +exic + +le + +PrݔtyClbackInfo +( + +200 cڡ +v8 +:: +AcssInfo + & +fo + + +201 , cڡ +v8 +:: +Lol + +da +) : + +202 +PrݔtyClbackInfoBa +< +T +>( +fo +, + gda +) + +203 , +tu_vue_ +( +fo +. +GIsީe +(), & +tv_ +) + +204 , +tv_ +( +v8 +:: +Psit +< +T +>:: +New +(v8:: +Undefed +())) {} + +206 +le + ~ +PrݔtyClbackInfo +() { + +207 +tv_ +. +Dio +(); + +208 + gtv_ +. +Cˬ +(); + +211 +le + + gRuVue +< + gT +> +GRuVue +(cڡ {  + gtu_vue_ +; } + +214 + gme +<> + +215 +ass + + gPrݔtyClbackInfo +< + gv8 +:: +Aay +> : + +216 +public + +PrݔtyClbackInfoBa +< +v8 +:: +Aay +> { + +217 +RuVue +< +v8 +:: +Aay +> +tu_vue_ +; + +218 + gv8 +:: +Psit +< +v8 +:: +Aay +> +tv_ +; + +220 + gpublic +: + +221 +exic + +le + +PrݔtyClbackInfo +( + +222 cڡ +v8 +:: +AcssInfo + & +fo + + +223 , cڡ +v8 +:: +Lol + +da +) : + +224 +PrݔtyClbackInfoBa +< +v8 +:: +Aay +>( +fo +, + gda +) + +225 , +tu_vue_ +( +fo +. +GIsީe +(), & +tv_ +) + +226 , +tv_ +( +v8 +:: +Psit +:: +New +(v8:: +Lol +())) {} + +228 +le + ~ +PrݔtyClbackInfo +() { + +229 +tv_ +. +Dio +(); + +230 + gtv_ +. +Cˬ +(); + +233 +le + + gRuVue +< + gv8 +:: +Aay +> +GRuVue +() const { + +234  +tu_vue_ +; + +238 + gme +<> + +239 +ass + + gPrݔtyClbackInfo +< + gv8 +:: +Boޗn +> : + +240 +public + +PrݔtyClbackInfoBa +< +v8 +:: +Boޗn +> { + +241 +RuVue +< +v8 +:: +Boޗn +> +tu_vue_ +; + +242 + gv8 +:: +Psit +< +v8 +:: +Boޗn +> +tv_ +; + +244 + gpublic +: + +245 +exic + +le + +PrݔtyClbackInfo +( + +246 cڡ +v8 +:: +AcssInfo + & +fo + + +247 , cڡ +v8 +:: +Lol + +da +) : + +248 +PrݔtyClbackInfoBa +< +v8 +:: +Boޗn +>( +fo +, + gda +) + +249 , +tu_vue_ +( +fo +. +GIsީe +(), & +tv_ +) + +250 , +tv_ +( +v8 +:: +Psit +:: +New +(v8:: +Lol +())) {} + +252 +le + ~ +PrݔtyClbackInfo +() { + +253 +tv_ +. +Dio +(); + +254 + gtv_ +. +Cˬ +(); + +257 +le + + gRuVue +< + gv8 +:: +Boޗn +> +GRuVue +() const { + +258  +tu_vue_ +; + +262 + gme +<> + +263 +ass + + gPrݔtyClbackInfo +< + gv8 +:: +Ieg +> : + +264 +public + +PrݔtyClbackInfoBa +< +v8 +:: +Ieg +> { + +265 +RuVue +< +v8 +:: +Ieg +> +tu_vue_ +; + +266 + gv8 +:: +Psit +< +v8 +:: +Ieg +> +tv_ +; + +268 + gpublic +: + +269 +exic + +le + +PrݔtyClbackInfo +( + +270 cڡ +v8 +:: +AcssInfo + & +fo + + +271 , cڡ +v8 +:: +Lol + +da +) : + +272 +PrݔtyClbackInfoBa +< +v8 +:: +Ieg +>( +fo +, + gda +) + +273 , +tu_vue_ +( +fo +. +GIsީe +(), & +tv_ +) + +274 , +tv_ +( +v8 +:: +Psit +:: +New +(v8:: +Lol +())) {} + +276 +le + ~ +PrݔtyClbackInfo +() { + +277 +tv_ +. +Dio +(); + +278 + gtv_ +. +Cˬ +(); + +281 +le + + gRuVue +< + gv8 +:: +Ieg +> +GRuVue +() const { + +282  +tu_vue_ +; + +286 +mea + + gimp + { + +287 + gme +< +tyme + + gT +> + +288 +ass + + gRuVueImp + : +public + +RuVue +< +T +> { + +289 +public +: + +290 +exic + +RuVueImp +( +RuVue +< +T +> +th +) : + +291 +RuVue +< +T +>( +th +) {} + +292 +le + +v8 +:: +Hd +< +T +> +Vue +() { + +293  * +RuVue +< +T +>:: +vue_ +; + +298 + gv8 +:: +Hd +< +v8 +:: +Vue +> +FuniClbackW +(cڡ v8:: +Argumts + & +gs +) { + +299 +v8 +:: +Lol + +obj + = +gs +. +Da +(). +As +(); + +300 +FuniClback + + gback + = +t_ +( + +301 +t_ +< +_t +>( + +302 +obj +-> +GIlFld +( +kFuniIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +303 + gFuniClbackInfo +< + gv8 +:: +Vue +> + +304 +cbfo +( +gs +, +obj +-> +GIlFld +( +kDaIndex +)); + +305 +back +( +cbfo +); + +306  + gRuVueImp +< + gv8 +:: +Vue +>( +cbfo +. +GRuVue +()).Value(); + +309  + gv8 +:: + tHd +< + tv8 +:: + tVue +> (* + tNiveFuni +)(cڡ v8:: + tArgumts + &); + +312 + gv8 +:: +Hd +< +v8 +:: +Vue +> +GrClbackW +( + +313 +v8 +:: +Lol + +ݔty +, cڡ v8:: +AcssInfo + & +fo +) { + +314 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +315 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +316 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +317 +GrClback + + gback + = +t_ +( + +318 +t_ +< +_t +>( + +319 +obj +-> +GIlFld +( +kGrIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +320 +back +( +ݔty +, +cbfo +); + +321  + gRuVueImp +< + gv8 +:: +Vue +>( +cbfo +. +GRuVue +()).Value(); + +324  + gv8 +:: + tHd +< + tv8 +:: + tVue +> (* + tNiveGr +) + +325 ( + tv8 +:: + tLol +, cڡ v8:: + tAcssInfo + &); + +328  +SrClbackW +( + +329 +v8 +:: +Lol + +ݔty + + +330 , +v8 +:: +Lol + +vue + + +331 , cڡ +v8 +:: +AcssInfo + & +fo +) { + +332 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +333 + gPrݔtyClbackInfo +<> + +334 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +335 +SrClback + + gback + = +t_ +( + +336 +t_ +< +_t +>( + +337 +obj +-> +GIlFld +( +kSrIndex +). +As +< +v8 +:: +Ex +>()-> +Vue +())); + +338 +back +( +ݔty +, +vue +, +cbfo +); + +341 (* + gNiveSr +) + +342 ( + tv8 +:: + tLol +, v8::Lol, cڡ v8:: + tAcssInfo + &); + +345 + gv8 +:: +Hd +< +v8 +:: +Vue +> +PrݔtyGrClbackW +( + +346 +v8 +:: +Lol + +ݔty +, cڡ v8:: +AcssInfo + & +fo +) { + +347 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +348 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +349 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +350 +PrݔtyGrClback + + gback + = +t_ +( + +351 +t_ +< +_t +>( + +352 +obj +-> +GIlFld +( +kPrݔtyGrIndex +) + +353 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +354 +back +( +ݔty +, +cbfo +); + +355  + gRuVueImp +< + gv8 +:: +Vue +>( +cbfo +. +GRuVue +()).Value(); + +358  + gv8 +:: + tHd +< + tv8 +:: + tVue +> (* + tNivePrݔtyGr +) + +359 ( + tv8 +:: + tLol +, cڡ v8:: + tAcssInfo + &); + +362 + gv8 +:: +Hd +< +v8 +:: +Vue +> +PrݔtySrClbackW +( + +363 +v8 +:: +Lol + +ݔty + + +364 , +v8 +:: +Lol + +vue + + +365 , cڡ +v8 +:: +AcssInfo + & +fo +) { + +366 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +367 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +368 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +369 +PrݔtySrClback + + gback + = +t_ +( + +370 +t_ +< +_t +>( + +371 +obj +-> +GIlFld +( +kPrݔtySrIndex +) + +372 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +373 +back +( +ݔty +, +vue +, +cbfo +); + +374  + gRuVueImp +< + gv8 +:: +Vue +>( +cbfo +. +GRuVue +()).Value(); + +377  + gv8 +:: + tHd +< + tv8 +:: + tVue +> (* + tNivePrݔtySr +) + +378 ( + tv8 +:: + tLol +, v8::Lol, cڡ v8:: + tAcssInfo + &); + +381 + gv8 +:: +Hd +< +v8 +:: +Aay +> +PrݔtyEnumClbackW +( + +382 cڡ +v8 +:: +AcssInfo + & +fo +) { + +383 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +384 + gPrݔtyClbackInfo +< + gv8 +:: +Aay +> + +385 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +386 +PrݔtyEnumClback + + gback + = + +387 +t_ +< +PrݔtyEnumClback +>et_< +_t +>( + +388 +obj +-> +GIlFld +( +kPrݔtyEnumIndex +) + +389 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +390 +back +( +cbfo +); + +391  + gRuVueImp +< + gv8 +:: +Aay +>( +cbfo +. +GRuVue +()). +Vue +(); + +394  + gv8 +:: + tHd +< + tv8 +:: + tAay +> (* + tNivePrݔtyEnum +) + +395 (cڡ + tv8 +:: + tAcssInfo + &); + +398 + gv8 +:: +Hd +< +v8 +:: +Boޗn +> +PrݔtyDClbackW +( + +399 +v8 +:: +Lol + +ݔty + + +400 , cڡ +v8 +:: +AcssInfo + & +fo +) { + +401 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +402 + gPrݔtyClbackInfo +< + gv8 +:: +Boޗn +> + +403 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +404 +PrݔtyDClback + + gback + = +t_ +( + +405 +t_ +< +_t +>( + +406 +obj +-> +GIlFld +( +kPrݔtyDIndex +) + +407 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +408 +back +( +ݔty +, +cbfo +); + +409  + gRuVueImp +< + gv8 +:: +Boޗn +>( +cbfo +. +GRuVue +()). +Vue +(); + +412  + gv8 +:: + tHd +< + tv8 +:: + tBoޗn +> ( + tNivePrݔtyD +) + +413 ( + tv8 +:: + tLol +, cڡ v8:: + tAcssInfo + &); + +416 + gv8 +:: +Hd +< +v8 +:: +Ieg +> +PrݔtyQuyClbackW +( + +417 +v8 +:: +Lol + +ݔty +, cڡ v8:: +AcssInfo + & +fo +) { + +418 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +419 + gPrݔtyClbackInfo +< + gv8 +:: +Ieg +> + +420 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +421 +PrݔtyQuyClback + + gback + = +t_ +( + +422 +t_ +< +_t +>( + +423 +obj +-> +GIlFld +( +kPrݔtyQuyIndex +) + +424 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +425 +back +( +ݔty +, +cbfo +); + +426  + gRuVueImp +< + gv8 +:: +Ieg +>( +cbfo +. +GRuVue +()). +Vue +(); + +429  + gv8 +:: + tHd +< + tv8 +:: + tIeg +> (* + tNivePrݔtyQuy +) + +430 ( + tv8 +:: + tLol +, cڡ v8:: + tAcssInfo + &); + +433 + gv8 +:: +Hd +< +v8 +:: +Vue +> +IndexGrClbackW +( + +434 +ut32_t + +dex +, cڡ +v8 +:: +AcssInfo + & +fo +) { + +435 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +436 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +437 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +438 +IndexGrClback + + gback + = +t_ +( + +439 +t_ +< +_t +>( + +440 +obj +-> +GIlFld +( +kIndexPrݔtyGrIndex +) + +441 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +442 +back +( +dex +, +cbfo +); + +443  + gRuVueImp +< + gv8 +:: +Vue +>( +cbfo +. +GRuVue +()).Value(); + +446  + gv8 +:: + tHd +< + tv8 +:: + tVue +> (* + tNiveIndexGr +) + +447 ( + tut32_t +, cڡ + tv8 +:: + tAcssInfo + &); + +450 + gv8 +:: +Hd +< +v8 +:: +Vue +> +IndexSrClbackW +( + +451 +ut32_t + +dex + + +452 , +v8 +:: +Lol + +vue + + +453 , cڡ +v8 +:: +AcssInfo + & +fo +) { + +454 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +455 + gPrݔtyClbackInfo +< + gv8 +:: +Vue +> + +456 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +457 +IndexSrClback + + gback + = +t_ +( + +458 +t_ +< +_t +>( + +459 +obj +-> +GIlFld +( +kIndexPrݔtySrIndex +) + +460 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +461 +back +( +dex +, +vue +, +cbfo +); + +462  + gRuVueImp +< + gv8 +:: +Vue +>( +cbfo +. +GRuVue +()).Value(); + +465  + gv8 +:: + tHd +< + tv8 +:: + tVue +> (* + tNiveIndexSr +) + +466 ( + tut32_t +, + tv8 +:: + tLol +, cڡ v8:: + tAcssInfo + &); + +469 + gv8 +:: +Hd +< +v8 +:: +Aay +> +IndexEnumClbackW +( + +470 cڡ +v8 +:: +AcssInfo + & +fo +) { + +471 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +472 + gPrݔtyClbackInfo +< + gv8 +:: +Aay +> + +473 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +474 +IndexEnumClback + + gback + = +t_ +( + +475 +t_ +< +_t +>( + +476 +obj +-> +GIlFld +( +kIndexPrݔtyEnumIndex +) + +477 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +478 +back +( +cbfo +); + +479  + gRuVueImp +< + gv8 +:: +Aay +>( +cbfo +. +GRuVue +()). +Vue +(); + +482  + gv8 +:: + tHd +< + tv8 +:: + tAay +> (* + tNiveIndexEnum +) + +483 (cڡ + tv8 +:: + tAcssInfo + &); + +486 + gv8 +:: +Hd +< +v8 +:: +Boޗn +> +IndexDClbackW +( + +487 +ut32_t + +dex +, cڡ +v8 +:: +AcssInfo + & +fo +) { + +488 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +489 + gPrݔtyClbackInfo +< + gv8 +:: +Boޗn +> + +490 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +491 +IndexDClback + + gback + = +t_ +( + +492 +t_ +< +_t +>( + +493 +obj +-> +GIlFld +( +kIndexPrݔtyDIndex +) + +494 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +495 +back +( +dex +, +cbfo +); + +496  + gRuVueImp +< + gv8 +:: +Boޗn +>( +cbfo +. +GRuVue +()). +Vue +(); + +499  + gv8 +:: + tHd +< + tv8 +:: + tBoޗn +> (* + tNiveIndexD +) + +500 ( + tut32_t +, cڡ + tv8 +:: + tAcssInfo + &); + +503 + gv8 +:: +Hd +< +v8 +:: +Ieg +> +IndexQuyClbackW +( + +504 +ut32_t + +dex +, cڡ +v8 +:: +AcssInfo + & +fo +) { + +505 +v8 +:: +Lol + +obj + = +fo +. +Da +(). +As +(); + +506 + gPrݔtyClbackInfo +< + gv8 +:: +Ieg +> + +507 +cbfo +( +fo +, +obj +-> +GIlFld +( +kDaIndex +)); + +508 +IndexQuyClback + + gback + = +t_ +( + +509 +t_ +< +_t +>( + +510 +obj +-> +GIlFld +( +kIndexPrݔtyQuyIndex +) + +511 . +As +< +v8 +:: +Ex +>()-> +Vue +())); + +512 +back +( +dex +, +cbfo +); + +513  + gRuVueImp +< + gv8 +:: +Ieg +>( +cbfo +. +GRuVue +()). +Vue +(); + +516  + gv8 +:: + tHd +< + tv8 +:: + tIeg +> (* + tNiveIndexQuy +) + +517 ( + tut32_t +, cڡ + tv8 +:: + tAcssInfo + &); + + @interface/node_modules/nan/nan_converters.h + +9 #ide +NAN_CONVERTERS_H_ + + +10  + #NAN_CONVERTERS_H_ + + + ) + +12 +mea + + gimp + { + +13 + gme +< +tyme + + gT +>  + sToFayBa + { + +14  + gMaybeLol +< + tT +> + ttu_t +; + +16 + gme +< +tyme + + gT +>  + sVueFayBa + {  + gMaybe +< + tT +> + ttu_t +; }; + +18 + gme +< +tyme + + gT +>  + gToFay +; + +20 + gme +<> + +21  + gToFay +< + gv8 +:: +Funi +> : +ToFayBa +< +v8 +::Function> { + +22  +le + +tu_t + +cvt +( +v8 +:: +Lol + +v +) { + +23 i( +v +. +IsEmy +(|| !v-> +IsFuni +() +MaybeLol +< +v8 +:: +Funi +>(); + +24  + gMaybeLol +< + gv8 +:: +Funi +>( +v +. +As +< +v8 +::Function>()); + +28  + #X +( +TYPE +) \ + +29 +me +<> \ + +30  +ToFay +< +v8 +:: +TYPE +> : +ToFayBa + { \ + +31  +le + +tu_t + + `cvt +( +v8 +:: +Lol + +v +); \ + +32 }; + + ) + +34 +X +( +Boޗn +) + +35 +X +( +Numb +) + +36 +X +( +Sg +) + +37 +X +( +Obje +) + +38 +X +( +Ieg +) + +39 +X +( +Ut32 +) + +40 +X +( +I32 +) + +42 #unde +X + + +44  + #X +( +TYPE +) \ + +45 +me +<> \ + +46  +ToFay +< +TYPE +> : +VueFayBa + { \ + +47  +le + +tu_t + + `cvt +( +v8 +:: +Lol + +v +); \ + +48 }; + + ) + +50 +X +( +bo +) + +51 +X +() + +52 +X +( +t64_t +) + +53 +X +( +ut32_t +) + +54 +X +( +t32_t +) + +56 #unde +X + + +59 + gme +< +tyme + + gT +> + +60 +le + + +61 +tyme + + gimp +:: +ToFay +< +T +>:: +tu_t + +To +( +v8 +:: +Lol + +v +) { + +62  +imp +:: +ToFay +< +T +>:: +cvt +( +v +); + +65 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +66 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +67  + ~"n_cvrs_43_l.h +" + +69  + ~"n_cvrs_e_43_l.h +" + + @interface/node_modules/nan/nan_converters_43_inl.h + +9 #ide +NAN_CONVERTERS_43_INL_H_ + + +10  + #NAN_CONVERTERS_43_INL_H_ + + + ) + +12  + #X +( +TYPE +) \ + +13 +imp +:: +ToFay +< +v8 +:: +TYPE +>:: +tu_t + \ + +14 +imp +:: +ToFay +< +v8 +:: +TYPE +>:: + `cvt +(v8:: +Lol + +v +) { \ + +15 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); \ + +16 +v8 +:: +EsbHdSce + + `sce +( +isީe +); \ + +17  +sce +. + `Es +( \ + +18 +v +-> +To + ## + `TYPE +( +isީe +-> + `GCutCڋxt +()) \ + +19 . + `FromMaybe +( +v8 +:: +Lol +())); \ + +20 } + + ) + +22 + $X +( +Numb +) + +23 + $X +( +Sg +) + +24 + $X +( +Obje +) + +25 + $X +( +Ieg +) + +26 + $X +( +Ut32 +) + +27 + $X +( +I32 +) + +29 #i +V8_MAJOR_VERSION + < 7 || (V8_MAJOR_VERSION =7 && +V8_MINOR_VERSION + == 0) + +30 + $X +( +Boޗn +) + +32 +imp +:: +ToFay +< +v8 +:: +Boޗn +>:: +tu_t + \ + +33 +imp +:: +ToFay +< +v8 +:: +Boޗn +>:: + `cvt +(v8:: +Lol + +v +) { \ + +34 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); \ + +35 +v8 +:: +EsbHdSce + + `sce +( +isީe +); \ + +36  +sce +. + `Es +( +v +-> + `ToBoޗn +( +isީe +)); \ + +37 + } +} + +40 #unde +X + + +42  + #X +( +TYPE +, +NAME +) \ + +43 +imp +:: +ToFay +< +TYPE +>:: +tu_t + \ + +44 +imp +:: +ToFay +< +TYPE +>:: + `cvt +( +v8 +:: +Lol + +v +) { \ + +45 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); \ + +46 +v8 +:: +HdSce + + `sce +( +isީe +); \ + +47  +v +-> +NAME + ## + `Vue +( +isީe +-> + `GCutCڋxt +()); \ + +48 } + + ) + +50 + $X +(, +Numb +) + +51 + $X +( +t64_t +, +Ieg +) + +52 + $X +( +ut32_t +, +Ut32 +) + +53 + $X +( +t32_t +, +I32 +) + +55 #i +V8_MAJOR_VERSION + < 7 || (V8_MAJOR_VERSION =7 && +V8_MINOR_VERSION + == 0) + +56 + $X +( +bo +, +Boޗn +) + +58 +imp +:: +ToFay +< +bo +>:: +tu_t + \ + +59 +imp +:: +ToFay +< +bo +>:: + `cvt +( +v8 +:: +Lol + +v +) { \ + +60 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: + `GCut +(); \ + +61 +v8 +:: +HdSce + + `sce +( +isީe +); \ + +62  +Ju +< +bo +>( +v +-> + `BoޗnVue +( +isީe +)); \ + +63 + } +} + +66 #unde +X + + + @interface/node_modules/nan/nan_converters_pre_43_inl.h + +9 #ide +NAN_CONVERTERS_PRE_43_INL_H_ + + +10  + #NAN_CONVERTERS_PRE_43_INL_H_ + + + ) + +12  + #X +( +TYPE +) \ + +13 +imp +:: +ToFay +< +v8 +:: +TYPE +>:: +tu_t + \ + +14 +imp +:: +ToFay +< +v8 +:: +TYPE +>:: + `cvt +(v8:: +Lol + +v +) { \ + +15  +v +-> +To + ## + `TYPE +(); \ + +16 } + + ) + +18 + $X +( +Boޗn +) + +19 + $X +( +Numb +) + +20 + $X +( +Sg +) + +21 + $X +( +Obje +) + +22 + $X +( +Ieg +) + +23 + $X +( +Ut32 +) + +24 + $X +( +I32 +) + +26 #unde +X + + +28  + #X +( +TYPE +, +NAME +) \ + +29 +imp +:: +ToFay +< +TYPE +>:: +tu_t + \ + +30 +imp +:: +ToFay +< +TYPE +>:: + `cvt +( +v8 +:: +Lol + +v +) { \ + +31  + `Ju +( +v +-> +NAME + ## + `Vue +()); \ + +32 + } + + ) +} + +34 + $X +( +bo +, +Boޗn +) + +35 + $X +(, +Numb +) + +36 + $X +( +t64_t +, +Ieg +) + +37 + $X +( +ut32_t +, +Ut32 +) + +38 + $X +( +t32_t +, +I32 +) + +40 #unde +X + + + @interface/node_modules/nan/nan_define_own_property_helper.h + +9 #ide +NAN_DEFINE_OWN_PROPERTY_HELPER_H_ + + +10  + #NAN_DEFINE_OWN_PROPERTY_HELPER_H_ + + + ) + +12 +mea + + gimp + { + +14 +le + + gMaybe +< + gbo +> +DefeOwnPrݔtyHr +( + +15 +v8 +:: +PrݔtyAribu + +cut + + +16 , +v8 +:: +Hd + +obj + + +17 , +v8 +:: +Hd + +key + + +18 , +v8 +:: +Hd + +vue + + +19 , +v8 +:: +PrݔtyAribu + +ibs + = v8:: +Ne +) { + +20  !( +cut + & +v8 +:: +DtDe +) || + +21 (!( +cut + & +v8 +:: +RdOy +) && + +22 !(( +ibs + ^ +cut +& ~ +v8 +:: +RdOy +)) + +23 ? +Ju +< +bo +>( +obj +-> +FS +( +key +, +vue +, +ibs +)) + +24 : +Nhg +< +bo +>(); + + @interface/node_modules/nan/nan_implementation_12_inl.h + +9 #ide +NAN_IMPLEMENTATION_12_INL_H_ + + +10  + #NAN_IMPLEMENTATION_12_INL_H_ + + + ) + +15 +mea + + gimp + { + +19 + gFay +< + gv8 +:: +Aay +>:: +tu_t + + +20 +Fay +< +v8 +:: +Aay +>:: +New +() { + +21  +v8 +:: +Aay +:: +New +(v8:: +Isީe +:: +GCut +()); + +24 + gFay +< + gv8 +:: +Aay +>:: +tu_t + + +25 +Fay +< +v8 +:: +Aay +>:: +New +( +ngth +) { + +26  +v8 +:: +Aay +:: +New +(v8:: +Isީe +:: +GCut +(), +ngth +); + +31 + gFay +< + gv8 +:: +Boޗn +>:: +tu_t + + +32 +Fay +< +v8 +:: +Boޗn +>:: +New +( +bo + +vue +) { + +33  +v8 +:: +Boޗn +:: +New +(v8:: +Isީe +:: +GCut +(), +vue +); + +38 + gFay +< + gv8 +:: +BoޗnObje +>:: +tu_t + + +39 +Fay +< +v8 +:: +BoޗnObje +>:: +New +( +bo + +vue +) { + +40 #i( +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION +) + +41  +v8 +:: +BoޗnObje +:: +New +( + +42 +v8 +:: +Isީe +:: +GCut +(), +vue +). + gAs +< + gv8 +:: +BoޗnObje +>(); + +44  + gv8 +:: +BoޗnObje +:: +New +( +vue +). +As +< +v8 +::BooleanObject>(); + +50 + gFay +< + gv8 +:: +Cڋxt +>:: +tu_t + + +51 +Fay +< +v8 +:: +Cڋxt +>:: +New +v8:: +ExnsiCfiguti +* +exnsis + + +52 , +v8 +:: +Lol + +tm + + +53 , +v8 +:: +Lol + +obj +) { + +54  +v8 +:: +Cڋxt +:: +New +(v8:: +Isީe +:: +GCut +(), +exnsis +, +tm +, +obj +); + +59 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +60 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +61 +Fay +< +v8 +:: +De +>:: +tu_t + + +62 +Fay +< +v8 +:: +De +>:: +New +( +vue +) { + +63 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +64 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +65  + gsce +. +Es +( +v8 +:: +De +:: +New +( +isީe +-> +GCutCڋxt +(), +vue +) + +66 . +FromMaybe +( +v8 +:: +Lol +()). +As +()); + +69 + gFay +< + gv8 +:: +De +>:: +tu_t + + +70 +Fay +< +v8 +:: +De +>:: +New +( +vue +) { + +71  +v8 +:: +De +:: +New +(v8:: +Isީe +:: +GCut +(), +vue +). + gAs +< + gv8 +::Date>(); + +77 + gFay +< + gv8 +:: +Ex +>:: +tu_t + + +78 +Fay +< +v8 +:: +Ex +>:: +New +(* +vue +) { + +79  +v8 +:: +Ex +:: +New +(v8:: +Isީe +:: +GCut +(), +vue +); + +84 + gFay +< + gv8 +:: +Funi +>:: +tu_t + + +85 +Fay +< +v8 +:: +Funi +>:: +New + +FuniClback + +back + + +86 , +v8 +:: +Lol + +da +) { + +87 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +88 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +89 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +l + = v8::ObjeTeme:: +New +( +isީe +); + +90 + gl +-> +SIlFldCou +( +imp +:: +kFuniFldCou +); + +91 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +NewIn +( +l +). +ToLolChecked +(); + +93 + gobj +-> +SIlFld +( + +94 +imp +:: +kFuniIndex + + +95 , +v8 +:: +Ex +:: +New +( +isީe +, +t_ +<*>( +back +))); + +97 + gv8 +:: +Lol +< +v8 +:: +Vue +> +v + = v8::Lol:: +New +( +isީe +, +da +); + +99 i(! + gv +. +IsEmy +()) { + +100 + gobj +-> +SIlFld +( +imp +:: +kDaIndex +, +v +); + +103 #i +NODE_MAJOR_VERSION + >= 10 + +104 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +105 + gv8 +:: +Lol +< +v8 +:: +Funi +> +funi + = + +106 +v8 +:: +Funi +:: +New +( +cڋxt +, +imp +:: +FuniClbackW +, +obj +) + +107 . +ToLolChecked +(); + +109 + gv8 +:: +Lol +< +v8 +:: +Funi +> +funi + = + +110 +v8 +:: +Funi +:: +New +( +isީe +, +imp +:: +FuniClbackW +, +obj +); + +113  + gsce +. +Es +( +funi +); + +118 + gFay +< + gv8 +:: +FuniTeme +>:: +tu_t + + +119 +Fay +< +v8 +:: +FuniTeme +>:: +New + +FuniClback + +back + + +120 , +v8 +:: +Lol + +da + + +121 , +v8 +:: +Lol + +sigtu +) { + +122 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +123 i( + gback +) { + +124 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +125 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +l + = v8::ObjeTeme:: +New +( +isީe +); + +126 + gl +-> +SIlFldCou +( +imp +:: +kFuniFldCou +); + +127 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +NewIn +( +l +). +ToLolChecked +(); + +129 + gobj +-> +SIlFld +( + +130 +imp +:: +kFuniIndex + + +131 , +v8 +:: +Ex +:: +New +( +isީe +, +t_ +<*>( +back +))); + +132 + gv8 +:: +Lol +< +v8 +:: +Vue +> +v + = v8::Lol:: +New +( +isީe +, +da +); + +134 i(! + gv +. +IsEmy +()) { + +135 + gobj +-> +SIlFld +( +imp +:: +kDaIndex +, +v +); + +138  + gsce +. +Es +( +v8 +:: +FuniTeme +:: +New + +isީe + + +139 , +imp +:: +FuniClbackW + + +140 , +obj + + +141 , +sigtu +)); + +143  + gv8 +:: +FuniTeme +:: +New +( +isީe +, 0, +da +, +sigtu +); + +149 + gFay +< + gv8 +:: +Numb +>:: +tu_t + + +150 +Fay +< +v8 +:: +Numb +>:: +New +( +vue +) { + +151  +v8 +:: +Numb +:: +New +(v8:: +Isީe +:: +GCut +(), +vue +); + +156 + gFay +< + gv8 +:: +NumbObje +>:: +tu_t + + +157 +Fay +< +v8 +:: +NumbObje +>:: +New +( +vue +) { + +158  +v8 +:: +NumbObje +:: +New +v8:: +Isީe +:: +GCut +() + +159 , +vue +). + gAs +< + gv8 +:: +NumbObje +>(); + +164 + gme + < +tyme + + gT +> + +165 +tyme + + gIegFay +< + gT +>:: +tu_t + + +166 +IegFay +< +T +>:: +New +( +t32_t + +vue +) { + +167  +To +< +T +>(T:: +New +( +v8 +:: +Isީe +:: +GCut +(), +vue +)); + +170 + gme + < +tyme + + gT +> + +171 +tyme + + gIegFay +< + gT +>:: +tu_t + + +172 +IegFay +< +T +>:: +New +( +ut32_t + +vue +) { + +173  +To +< +T +>(T:: +NewFromUnsigd +( +v8 +:: +Isީe +:: +GCut +(), +vue +)); + +176 + gFay +< + gv8 +:: +Ut32 +>:: +tu_t + + +177 +Fay +< +v8 +:: +Ut32 +>:: +New +( +t32_t + +vue +) { + +178  +To +< +v8 +:: +Ut32 +>( + +179 +v8 +:: +Ut32 +:: +NewFromUnsigd +(v8:: +Isީe +:: +GCut +(), +vue +)); + +182 + gFay +< + gv8 +:: +Ut32 +>:: +tu_t + + +183 +Fay +< +v8 +:: +Ut32 +>:: +New +( +ut32_t + +vue +) { + +184  +To +< +v8 +:: +Ut32 +>( + +185 +v8 +:: +Ut32 +:: +NewFromUnsigd +(v8:: +Isީe +:: +GCut +(), +vue +)); + +190 + gFay +< + gv8 +:: +Obje +>:: +tu_t + + +191 +Fay +< +v8 +:: +Obje +>:: +New +() { + +192  +v8 +:: +Obje +:: +New +(v8:: +Isީe +:: +GCut +()); + +197 + gFay +< + gv8 +:: +ObjeTeme +>:: +tu_t + + +198 +Fay +< +v8 +:: +ObjeTeme +>:: +New +() { + +199  +v8 +:: +ObjeTeme +:: +New +(v8:: +Isީe +:: +GCut +()); + +204 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +205 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +206 +Fay +< +v8 +:: +RegExp +>:: +tu_t + + +207 +Fay +< +v8 +:: +RegExp +>:: +New +( + +208 +v8 +:: +Lol + +n + + +209 , +v8 +:: +RegExp +:: +Fgs + +ags +) { + +210 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +211 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +212  + gsce +. +Es +( + +213 +v8 +:: +RegExp +:: +New +( +isީe +-> +GCutCڋxt +(), +n +, +ags +) + +214 . +FromMaybe +( +v8 +:: +Lol +())); + +217 + gFay +< + gv8 +:: +RegExp +>:: +tu_t + + +218 +Fay +< +v8 +:: +RegExp +>:: +New +( + +219 +v8 +:: +Lol + +n + + +220 , +v8 +:: +RegExp +:: +Fgs + +ags +) { + +221  +v8 +:: +RegExp +:: +New +( +n +, +ags +); + +227 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +228 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +229 +Fay +< +v8 +:: +St +>:: +tu_t + + +230 +Fay +< +v8 +:: +St +>:: +New +v8:: +Lol + +sour +) { + +231 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +232 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +233 + gv8 +:: +StComp +:: +Sour + +c +( +sour +); + +234  + gsce +. +Es +( + +235 +v8 +:: +StComp +:: +Compe +( +isީe +-> +GCutCڋxt +(), & +c +) + +236 . +FromMaybe +( +v8 +:: +Lol +())); + +239 + gFay +< + gv8 +:: +St +>:: +tu_t + + +240 +Fay +< +v8 +:: +St +>:: +New +v8:: +Lol + +sour + + +241 , +v8 +:: +StOrig + cڡ& +ig +) { + +242 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +243 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +244 + gv8 +:: +StComp +:: +Sour + +c +( +sour +, +ig +); + +245  + gsce +. +Es +( + +246 +v8 +:: +StComp +:: +Compe +( +isީe +-> +GCutCڋxt +(), & +c +) + +247 . +FromMaybe +( +v8 +:: +Lol +())); + +250 + gFay +< + gv8 +:: +St +>:: +tu_t + + +251 +Fay +< +v8 +:: +St +>:: +New +v8:: +Lol + +sour +) { + +252 +v8 +:: +StComp +:: +Sour + +c +( +sour +); + +253  + gv8 +:: +StComp +:: +Compe +( +v8 +:: +Isީe +:: +GCut +(), & +c +); + +256 + gFay +< + gv8 +:: +St +>:: +tu_t + + +257 +Fay +< +v8 +:: +St +>:: +New +v8:: +Lol + +sour + + +258 , +v8 +:: +StOrig + cڡ& +ig +) { + +259 +v8 +:: +StComp +:: +Sour + +c +( +sour +, +ig +); + +260  + gv8 +:: +StComp +:: +Compe +( +v8 +:: +Isީe +:: +GCut +(), & +c +); + +266 + gFay +< + gv8 +:: +Sigtu +>:: +tu_t + + +267 +Fay +< +v8 +:: +Sigtu +>:: +New +(Fay:: +FTH + +iv +) { + +268  +v8 +:: +Sigtu +:: +New +(v8:: +Isީe +:: +GCut +(), +iv +); + +273 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +274 +Fay +< +v8 +:: +Sg +>:: +New +() { + +275  +v8 +:: +Sg +:: +Emy +(v8:: +Isީe +:: +GCut +()); + +278 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +279 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +280 +Fay +< +v8 +:: +Sg +>:: +tu_t + + +281 +Fay +< +v8 +:: +Sg +>:: +New +(cڡ * +vue +,  +ngth +) { + +282  + gv8 +:: +Sg +:: +NewFromUtf8 +( + +283 +v8 +:: +Isީe +:: +GCut +(), +vue +, v8:: +NewSgTy +:: +kNm +, +ngth +); + +286 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +287 +Fay +< +v8 +:: +Sg +>:: +New +( +d +:: +rg + cڡ& +vue +) { + +288 +as +( +vue +. +size +(< +INT_MAX + && "stringooong"); + +289  + gv8 +:: +Sg +:: +NewFromUtf8 +( +v8 +:: +Isީe +:: +GCut +(), + +290 +vue +. +da +(), +v8 +:: +NewSgTy +:: +kNm +, +ic_ +<>(vue. +size +())); + +293 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +294 +Fay +< +v8 +:: +Sg +>:: +New +(cڡ +ut16_t + * +vue +,  +ngth +) { + +295  + gv8 +:: +Sg +:: +NewFromTwoBy +( +v8 +:: +Isީe +:: +GCut +(), +vue +, + +296 +v8 +:: +NewSgTy +:: +kNm +, +ngth +); + +299 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +300 +Fay +< +v8 +:: +Sg +>:: +New +(v8::Sg:: +ExSgResour + * +vue +) { + +301  +v8 +:: +Sg +:: +NewExTwoBy +(v8:: +Isީe +:: +GCut +(), +vue +); + +304 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +305 +Fay +< +v8 +:: +Sg +>:: +New +( +ExOBySgResour + * +vue +) { + +306  +v8 +:: +Sg +:: +NewExOBy +(v8:: +Isީe +:: +GCut +(), +vue +); + +309 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +310 +Fay +< +v8 +:: +Sg +>:: +New +(cڡ * +vue +,  +ngth +) { + +311  + gv8 +:: +Sg +:: +NewFromUtf8 +( +v8 +:: +Isީe +:: +GCut +(), +vue +, + +312 +v8 +:: +Sg +:: +kNmSg +, +ngth +); + +315 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +316 +Fay +< +v8 +:: +Sg +>:: +New +( + +317 +d +:: +rg + cڡ& +vue +) { + +318 +as +( +vue +. +size +(< +INT_MAX + && "stringooong"); + +319  + gv8 +:: +Sg +:: +NewFromUtf8 +( +v8 +:: +Isީe +:: +GCut +(), +vue +. +da +(), + +320 +v8 +:: +Sg +:: +kNmSg +, + +321 +ic_ +<>( +vue +. +size +())); + +324 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +325 +Fay +< +v8 +:: +Sg +>:: +New +(cڡ +ut16_t + * +vue +,  +ngth +) { + +326  + gv8 +:: +Sg +:: +NewFromTwoBy +( +v8 +:: +Isީe +:: +GCut +(), +vue +, + +327 +v8 +:: +Sg +:: +kNmSg +, +ngth +); + +330 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +331 +Fay +< +v8 +:: +Sg +>:: +New +(v8::Sg:: +ExSgResour + * +vue +) { + +332  +v8 +:: +Sg +:: +NewEx +(v8:: +Isީe +:: +GCut +(), +vue +); + +335 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +336 +Fay +< +v8 +:: +Sg +>:: +New +( +ExOBySgResour + * +vue +) { + +337  +v8 +:: +Sg +:: +NewEx +(v8:: +Isީe +:: +GCut +(), +vue +); + +346 + gFay +< + gv8 +:: +SgObje +>:: +tu_t + + +347 +Fay +< +v8 +:: +SgObje +>:: +New +(v8:: +Lol + +vue +) { + +349 #i +V8_MAJOR_VERSION + > 7 || (V8_MAJOR_VERSION =7 && +V8_MINOR_VERSION + > 0) + +350  +v8 +:: +SgObje +:: +New +(v8:: +Isީe +:: +GCut +(), +vue +) + +351 . + gAs +< + gv8 +:: +SgObje +>(); + +353 #ifde +_MSC_VER + + +354 #agm +wng +( +push +) + +355 #agm +wng +( +dib + : 4996) + +357 #ifde +__GNUC__ + + +358 #agm +GCC + +dgnoic + +push + + +359 #agm +GCC + +dgnoic + +igned + "-Wdeprecated-declarations" + +361  + gv8 +:: +SgObje +:: +New +( +vue +). +As +< +v8 +::StringObject>(); + +362 #ifde +__GNUC__ + + +363 #agm +GCC + +dgnoic + +p + + +365 #ifde +_MSC_VER + + +366 #agm +wng +( +p +) + +373 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +374 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +375 +Fay +< +v8 +:: +UnboundSt +>:: +tu_t + + +376 +Fay +< +v8 +:: +UnboundSt +>:: +New +(v8:: +Lol + +sour +) { + +377 +v8 +:: +StComp +:: +Sour + +c +( +sour +); + +378  + gv8 +:: +StComp +:: +CompeUnboundSt +( + +379 +v8 +:: +Isީe +:: +GCut +(), & +c +); + +382 + gFay +< + gv8 +:: +UnboundSt +>:: +tu_t + + +383 +Fay +< +v8 +:: +UnboundSt +>:: +New +v8:: +Lol + +sour + + +384 , +v8 +:: +StOrig + cڡ& +ig +) { + +385 +v8 +:: +StComp +:: +Sour + +c +( +sour +, +ig +); + +386  + gv8 +:: +StComp +:: +CompeUnboundSt +( + +387 +v8 +:: +Isީe +:: +GCut +(), & +c +); + +390 + gFay +< + gv8 +:: +UnboundSt +>:: +tu_t + + +391 +Fay +< +v8 +:: +UnboundSt +>:: +New +(v8:: +Lol + +sour +) { + +392 +v8 +:: +StComp +:: +Sour + +c +( +sour +); + +393  + gv8 +:: +StComp +:: +CompeUnbound +( +v8 +:: +Isީe +:: +GCut +(), & +c +); + +396 + gFay +< + gv8 +:: +UnboundSt +>:: +tu_t + + +397 +Fay +< +v8 +:: +UnboundSt +>:: +New +v8:: +Lol + +sour + + +398 , +v8 +:: +StOrig + cڡ& +ig +) { + +399 +v8 +:: +StComp +:: +Sour + +c +( +sour +, +ig +); + +400  + gv8 +:: +StComp +:: +CompeUnbound +( +v8 +:: +Isީe +:: +GCut +(), & +c +); + +408 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +409 + gme + < +tyme + + gT +> + +410 +le + + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Hd + +h +) { + +411  +v8 +:: +Lol +< +T +>:: +New +(v8:: +Isީe +:: +GCut +(), +h +); + +415 + gme + < +tyme + + gT +,ym + gM +> + +416 +le + + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Psit + cڡ& +p +) { + +417  + gv8 +:: +Lol +< +T +>:: +New +( +v8 +:: +Isީe +:: +GCut +(), +p +); + +420 + gme + < +tyme + + gT +,ym + gM +> + +421 +le + + gv8 +:: +Lol +< +T +> +New +( +Psit + cڡ& +p +) { + +422  + gv8 +:: +Lol +< +T +>:: +New +( +v8 +:: +Isީe +:: +GCut +(), +p +); + +425 + gme + < +tyme + + gT +> + +426 +le + + gv8 +:: +Lol +< +T +> +New +( +Glob + cڡ& +p +) { + +427  +v8 +:: +Lol +< +T +>:: +New +(v8:: +Isީe +:: +GCut +(), +p +); + + @interface/node_modules/nan/nan_implementation_pre_12_inl.h + +9 #ide +NAN_IMPLEMENTATION_PRE_12_INL_H_ + + +10  + #NAN_IMPLEMENTATION_PRE_12_INL_H_ + + + ) + +16 +mea + + gimp + { + +20 + gFay +< + gv8 +:: +Aay +>:: +tu_t + + +21 +Fay +< +v8 +:: +Aay +>:: +New +() { + +22  +v8 +:: +Aay +:: +New +(); + +25 + gFay +< + gv8 +:: +Aay +>:: +tu_t + + +26 +Fay +< +v8 +:: +Aay +>:: +New +( +ngth +) { + +27  +v8 +:: +Aay +:: +New +( +ngth +); + +32 + gFay +< + gv8 +:: +Boޗn +>:: +tu_t + + +33 +Fay +< +v8 +:: +Boޗn +>:: +New +( +bo + +vue +) { + +34  +v8 +:: +Boޗn +:: +New +( +vue +)-> +ToBoޗn +(); + +39 + gFay +< + gv8 +:: +BoޗnObje +>:: +tu_t + + +40 +Fay +< +v8 +:: +BoޗnObje +>:: +New +( +bo + +vue +) { + +41  +v8 +:: +BoޗnObje +:: +New +( +vue +). +As +(); + +46 + gFay +< + gv8 +:: +Cڋxt +>:: +tu_t + + +47 +Fay +< +v8 +:: +Cڋxt +>:: +New +v8:: +ExnsiCfiguti +* +exnsis + + +48 , +v8 +:: +Lol + +tm + + +49 , +v8 +:: +Lol + +obj +) { + +50 +v8 +:: +Psit + +x + = v8::Cڋxt:: +New +( +exnsis +, +tm +, +obj +); + +51 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +lx + = v8::Lol:: +New +( +x +); + +52 + gx +. +Dio +(); + +53  + glx +; + +58 + gFay +< + gv8 +:: +De +>:: +tu_t + + +59 +Fay +< +v8 +:: +De +>:: +New +( +vue +) { + +60  +v8 +:: +De +:: +New +( +vue +). +As +(); + +65 + gFay +< + gv8 +:: +Ex +>:: +tu_t + + +66 +Fay +< +v8 +:: +Ex +>:: +New +(* +vue +) { + +67  +v8 +:: +Ex +:: +New +( +vue +); + +72 + gFay +< + gv8 +:: +Funi +>:: +tu_t + + +73 +Fay +< +v8 +:: +Funi +>:: +New + +FuniClback + +back + + +74 , +v8 +:: +Lol + +da +) { + +75 +v8 +:: +HdSce + +sce +; + +77  + gsce +. +Clo +( +Fay +< +v8 +:: +FuniTeme +>:: +New +( + +78 +back +, +da +, +v8 +:: +Lol +()) + +79 -> +GFuni +()); + +85 + gFay +< + gv8 +:: +FuniTeme +>:: +tu_t + + +86 +Fay +< +v8 +:: +FuniTeme +>:: +New + +FuniClback + +back + + +87 , +v8 +:: +Lol + +da + + +88 , +v8 +:: +Lol + +sigtu +) { + +89 i( +back +) { + +90 +v8 +:: +HdSce + +sce +; + +92 + gv8 +:: +Lol +< +v8 +:: +ObjeTeme +> +l + = v8::ObjeTeme:: +New +(); + +93 + gl +-> +SIlFldCou +( +imp +:: +kFuniFldCou +); + +94 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj + = +l +-> +NewIn +(); + +96 + gobj +-> +SIlFld +( + +97 +imp +:: +kFuniIndex + + +98 , +v8 +:: +Ex +:: +New +( +t_ +<*>( +back +))); + +100 + gv8 +:: +Lol +< +v8 +:: +Vue +> +v + = v8::Lol:: +New +( +da +); + +102 i(! + gv +. +IsEmy +()) { + +103 + gobj +-> +SIlFld +( +imp +:: +kDaIndex +, +v +); + +108  + gsce +. +Clo +( + +109 +v8 +:: +FuniTeme +:: +New +( +imp +:: +FuniClbackW + + +110 , +obj + + +111 , +sigtu +)); + +113  + gv8 +:: +FuniTeme +:: +New +(0, +da +, +sigtu +); + +119 + gFay +< + gv8 +:: +Numb +>:: +tu_t + + +120 +Fay +< +v8 +:: +Numb +>:: +New +( +vue +) { + +121  +v8 +:: +Numb +:: +New +( +vue +); + +126 + gFay +< + gv8 +:: +NumbObje +>:: +tu_t + + +127 +Fay +< +v8 +:: +NumbObje +>:: +New +( +vue +) { + +128  +v8 +:: +NumbObje +:: +New +( +vue +). +As +(); + +133 + gme + < +tyme + + gT +> + +134 +tyme + + gIegFay +< + gT +>:: +tu_t + + +135 +IegFay +< +T +>:: +New +( +t32_t + +vue +) { + +136  +To +< +T +>(T:: +New +( +vue +)); + +139 + gme + < +tyme + + gT +> + +140 +tyme + + gIegFay +< + gT +>:: +tu_t + + +141 +IegFay +< +T +>:: +New +( +ut32_t + +vue +) { + +142  +To +< +T +>(T:: +NewFromUnsigd +( +vue +)); + +145 + gFay +< + gv8 +:: +Ut32 +>:: +tu_t + + +146 +Fay +< +v8 +:: +Ut32 +>:: +New +( +t32_t + +vue +) { + +147  +To +< +v8 +:: +Ut32 +>(v8::Ut32:: +NewFromUnsigd +( +vue +)); + +150 + gFay +< + gv8 +:: +Ut32 +>:: +tu_t + + +151 +Fay +< +v8 +:: +Ut32 +>:: +New +( +ut32_t + +vue +) { + +152  +To +< +v8 +:: +Ut32 +>(v8::Ut32:: +NewFromUnsigd +( +vue +)); + +158 + gFay +< + gv8 +:: +Obje +>:: +tu_t + + +159 +Fay +< +v8 +:: +Obje +>:: +New +() { + +160  +v8 +:: +Obje +:: +New +(); + +165 + gFay +< + gv8 +:: +ObjeTeme +>:: +tu_t + + +166 +Fay +< +v8 +:: +ObjeTeme +>:: +New +() { + +167  +v8 +:: +ObjeTeme +:: +New +(); + +172 + gFay +< + gv8 +:: +RegExp +>:: +tu_t + + +173 +Fay +< +v8 +:: +RegExp +>:: +New +( + +174 +v8 +:: +Lol + +n + + +175 , +v8 +:: +RegExp +:: +Fgs + +ags +) { + +176  +v8 +:: +RegExp +:: +New +( +n +, +ags +); + +181 + gFay +< + gv8 +:: +St +>:: +tu_t + + +182 +Fay +< +v8 +:: +St +>:: +New +v8:: +Lol + +sour +) { + +183  +v8 +:: +St +:: +New +( +sour +); + +185 + gFay +< + gv8 +:: +St +>:: +tu_t + + +186 +Fay +< +v8 +:: +St +>:: +New +v8:: +Lol + +sour + + +187 , +v8 +:: +StOrig + cڡ& +ig +) { + +188  +v8 +:: +St +:: +New +( +sour +, +cڡ_ +(& +ig +)); + +193 + gFay +< + gv8 +:: +Sigtu +>:: +tu_t + + +194 +Fay +< +v8 +:: +Sigtu +>:: +New +(Fay:: +FTH + +iv +) { + +195  +v8 +:: +Sigtu +:: +New +( +iv +); + +200 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +201 +Fay +< +v8 +:: +Sg +>:: +New +() { + +202  +v8 +:: +Sg +:: +Emy +(); + +205 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +206 +Fay +< +v8 +:: +Sg +>:: +New +(cڡ * +vue +,  +ngth +) { + +207  + gv8 +:: +Sg +:: +New +( +vue +, +ngth +); + +210 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +211 +Fay +< +v8 +:: +Sg +>:: +New +( + +212 +d +:: +rg + cڡ& +vue +) { + +213 +as +( +vue +. +size +(< +INT_MAX + && "stringooong"); + +214  + gv8 +:: +Sg +:: +New +( +vue +. +da +(), +ic_ +<>(vue. +size +())); + +217 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +218 +Fay +< +v8 +:: +Sg +>:: +New +(cڡ +ut16_t + * +vue +,  +ngth +) { + +219  + gv8 +:: +Sg +:: +New +( +vue +, +ngth +); + +222 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +223 +Fay +< +v8 +:: +Sg +>:: +New +(v8::Sg:: +ExSgResour + * +vue +) { + +224  +v8 +:: +Sg +:: +NewEx +( +vue +); + +227 + gFay +< + gv8 +:: +Sg +>:: +tu_t + + +228 +Fay +< +v8 +:: +Sg +>:: +New +(v8::Sg:: +ExAsciiSgResour + * +vue +) { + +229  +v8 +:: +Sg +:: +NewEx +( +vue +); + +234 + gFay +< + gv8 +:: +SgObje +>:: +tu_t + + +235 +Fay +< +v8 +:: +SgObje +>:: +New +(v8:: +Lol + +vue +) { + +236  +v8 +:: +SgObje +:: +New +( +vue +). +As +(); + +243 + gme + < +tyme + + gT +> + +244 +le + + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Hd + +h +) { + +245  +v8 +:: +Lol +< +T +>:: +New +( +h +); + +248 + gme + < +tyme + + gT +> + +249 +le + + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Psit + cڡ& +p +) { + +250  +v8 +:: +Lol +< +T +>:: +New +( +p +); + +253 + gme + < +tyme + + gT +,ym + gM +> + +254 +le + + gv8 +:: +Lol +< +T +> +New +( +Psit + cڡ& +p +) { + +255  + gv8 +:: +Lol +< +T +>:: +New +( +p +. +rsit +); + +258 + gme + < +tyme + + gT +> + +259 +le + + gv8 +:: +Lol +< +T +> +New +( +Glob + cڡ& +p +) { + +260  +v8 +:: +Lol +< +T +>:: +New +( +p +. +rsit +); + + @interface/node_modules/nan/nan_json.h + +9 #ide +NAN_JSON_H_ + + +10  + #NAN_JSON_H_ + + + ) + +12 #i +NODE_MODULE_VERSION + < +NODE_0_12_MODULE_VERSION + + +13  + #NAN_JSON_H_NEED_PARSE + 1 + + ) + +15  + #NAN_JSON_H_NEED_PARSE + 0 + + ) + +18 #i +NODE_MODULE_VERSION + > +NODE_7_0_MODULE_VERSION + + +19  + #NAN_JSON_H_NEED_STRINGIFY + 0 + + ) + +21  + #NAN_JSON_H_NEED_STRINGIFY + 1 + + ) + +24 as + cJSON + { + +25 + mpublic +: + +26 + $JSON +() { + +27 #i +NAN_JSON_H_NEED_PARSE + + +NAN_JSON_H_NEED_STRINGIFY + + +28 +N +:: +HdSce + +sce +; + +30 +N +:: +MaybeLol +< +v8 +:: +Vue +> +maybe_glob_js + = N:: + `G +( + +31 +N +:: + `GCutCڋxt +()-> + `Glob +(), + +32 +N +:: + `New +("JSON"). + `ToLolChecked +() + +35 + `as +(! +maybe_glob_js +. + `IsEmy +() && "global JSON ismpty"); + +36 +v8 +:: +Lol + +v_glob_js + = +maybe_glob_js +. + `ToLolChecked +(); + +38 + `as +( +v_glob_js +-> + `IsObje +() && "global JSON isotn object"); + +39 +N +:: +MaybeLol +< +v8 +:: +Obje +> +maybe_obj_glob_js + = + +40 +N +:: +To +< +v8 +:: +Obje +>( +v_glob_js +); + +42 + `as +(! +maybe_obj_glob_js +. + `IsEmy +() && "global JSON object ismpty"); + +43 +v8 +:: +Lol + +glob_js + = +maybe_obj_glob_js +. + `ToLolChecked +(); + +45 #i +NAN_JSON_H_NEED_PARSE + + +46 +N +:: +MaybeLol +< +v8 +:: +Vue +> +maybe_r_mhod + = N:: + `G +( + +47 +glob_js +, +N +:: + `New +("r"). + `ToLolChecked +() + +50 + `as +(! +maybe_r_mhod +. + `IsEmy +() && "JSON.parse ismpty"); + +51 +v8 +:: +Lol + +r_mhod + = +maybe_r_mhod +. + `ToLolChecked +(); + +53 + `as +( +r_mhod +-> + `IsFuni +() && "JSON.parse isot function"); + +54 +r_cb_ +. + `Ret +( +r_mhod +. +As +< +v8 +:: +Funi +>()); + +57 #i +NAN_JSON_H_NEED_STRINGIFY + + +58 +N +:: +MaybeLol +< +v8 +:: +Vue +> +maybe_rgify_mhod + = N:: + `G +( + +59 +glob_js +, +N +:: + `New +("rgify"). + `ToLolChecked +() + +62 + `as +(! +maybe_rgify_mhod +. + `IsEmy +() && "JSON.stringify ismpty"); + +63 +v8 +:: +Lol + +rgify_mhod + = + +64 +maybe_rgify_mhod +. + `ToLolChecked +(); + +66 + `as +( + +67 +rgify_mhod +-> + `IsFuni +() && "JSON.stringify isot function" + +69 +rgify_cb_ +. + `Ret +( +rgify_mhod +. +As +< +v8 +:: +Funi +>()); + +74 +le + + +75 +N +:: +MaybeLol +< +v8 +:: +Vue +> + `P +(v8:: +Lol + +js_rg +) { + +76 +N +:: +EsbHdSce + +sce +; + +77 #i +NAN_JSON_H_NEED_PARSE + + +78  +sce +. + `Es +( + `r +( +js_rg +)); + +80 +N +:: +MaybeLol +< +v8 +:: +Vue +> +su +; + +81 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + && \ + +82 +NODE_MODULE_VERSION + < +IOJS_2_0_MODULE_VERSION + + +83 +su + = +v8 +:: +JSON +:: + `P +( +js_rg +); + +85 #i +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION + + +86 +v8 +:: +Lol + +cڋxt__isީe + = +N +:: + `GCutCڋxt +(); + +88 +v8 +:: +Isީe +* +cڋxt__isީe + = v8::Isީe:: + `GCut +(); + +90 +su + = +v8 +:: +JSON +:: + `P +( +cڋxt__isީe +, +js_rg +); + +93 i( +su +. + `IsEmy +() +v8 +:: +Lol +(); + +94  +sce +. + `Es +( +su +. + `ToLolChecked +()); + +96 + } +} + +98 +le + + +99 + gN +:: +MaybeLol +< +v8 +:: +Sg +> +Sgify +(v8:: +Lol + +js_obje +) { + +100 +N +:: +EsbHdSce + +sce +; + +101 + gN +:: +MaybeLol +< +v8 +:: +Sg +> +su + = + +102 #i +NAN_JSON_H_NEED_STRINGIFY + + +103 +N +:: +To +< +v8 +:: +Sg +>( +rgify +( +js_obje +)); + +105 + gv8 +:: +JSON +:: +Sgify +( +N +:: +GCutCڋxt +(), +js_obje +); + +107 i( + gsu +. +IsEmy +() + gv8 +:: +Lol +< +v8 +:: +Sg +>(); + +108  + gsce +. +Es +( +su +. +ToLolChecked +()); + +111 +le + + +112 + gN +:: +MaybeLol +< +v8 +:: +Sg +> +Sgify +(v8:: +Lol + +js_obje +, + +113 +v8 +:: +Lol + +g +) { + +114 +N +:: +EsbHdSce + +sce +; + +115 + gN +:: +MaybeLol +< +v8 +:: +Sg +> +su + = + +116 #i +NAN_JSON_H_NEED_STRINGIFY + + +117 +N +:: +To +< +v8 +:: +Sg +>( +rgify +( +js_obje +, +g +)); + +119 + gv8 +:: +JSON +:: +Sgify +( +N +:: +GCutCڋxt +(), +js_obje +, +g +); + +121 i( + gsu +. +IsEmy +() + gv8 +:: +Lol +< +v8 +:: +Sg +>(); + +122  + gsce +. +Es +( +su +. +ToLolChecked +()); + +125 + give +: + +126 + $NAN_DISALLOW_ASSIGN_COPY_MOVE +( +JSON +) + +127 #i +NAN_JSON_H_NEED_PARSE + + +128 +N +:: +Clback + +r_cb_ +; + +130 #i +NAN_JSON_H_NEED_STRINGIFY + + +131 +N +:: +Clback + +rgify_cb_ +; + +134 #i +NAN_JSON_H_NEED_PARSE + + +135 +le + +v8 +:: +Lol + + `r +(v8::Lol +g +) { + +136 + `as +(! +r_cb_ +. + `IsEmy +() && "parse_cb_ ismpty"); + +137 +AsyncResour + + `sour +("nan:JSON.parse"); + +138  +r_cb_ +. + `Cl +(1, & +g +, & +sour +). + `FromMaybe +( +v8 +:: +Lol +()); + +139 + } +} + +142 #i +NAN_JSON_H_NEED_STRINGIFY + + +143 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +rgify +(v8::Lol +g +) { + +144 +as +(! +rgify_cb_ +. +IsEmy +() && "stringify_cb_ ismpty"); + +145 +AsyncResour + +sour +("nan:JSON.stringify"); + +146  + grgify_cb_ +. +Cl +(1, & +g +, & +sour +) + +147 . +FromMaybe +( +v8 +:: +Lol +()); + +150 +le + + gv8 +:: +Lol +< +v8 +:: +Vue +> +rgify +(v8::Lol +g +, + +151 +v8 +:: +Lol + +g +) { + +152 +as +(! +rgify_cb_ +. +IsEmy +() && "stringify_cb_ ismpty"); + +154 + gv8 +:: +Lol +< +v8 +:: +Vue +> +gv +[] = { + +155 +g +, + +156 +N +:: +Nu +(), + +157 +g + + +159 +AsyncResour + +sour +("nan:JSON.stringify"); + +160  + grgify_cb_ +. +Cl +(3, +gv +, & +sour +) + +161 . +FromMaybe +( +v8 +:: +Lol +()); + + @interface/node_modules/nan/nan_maybe_43_inl.h + +9 #ide +NAN_MAYBE_43_INL_H_ + + +10  + #NAN_MAYBE_43_INL_H_ + + + ) + +12 + gme +< +tyme + + gT +> + +13 +usg + + gMaybeLol + = +v8 +:: +MaybeLol +< +T +>; + +15 +le + + +16 + gMaybeLol +< + gv8 +:: +Sg +> +ToDaSg +( +v8 +:: +Lol + +v +) { + +17 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +18 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +19  + gsce +. +Es +( +v +-> +ToDaSg +( +isީe +-> +GCutCڋxt +()) + +20 . +FromMaybe +( +v8 +:: +Lol +())); + +23 +le + + +24 + gMaybeLol +< + gv8 +:: +Ut32 +> +ToAayIndex +( +v8 +:: +Lol + +v +) { + +25 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +26 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +27  + gsce +. +Es +( +v +-> +ToAayIndex +( +isީe +-> +GCutCڋxt +()) + +28 . +FromMaybe +( +v8 +:: +Lol +())); + +31 +le + + +32 + gMaybe +< + gbo +> +Equs +( +v8 +:: +Lol + +a +, v8::Lol( +b +)) { + +33 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +34 + gv8 +:: +HdSce + +sce +( +isީe +); + +35  + ga +-> +Equs +( +isީe +-> +GCutCڋxt +(), +b +); + +38 +le + + +39 + gMaybeLol +< + gv8 +:: +Obje +> +NewIn +( +v8 +:: +Lol + +h +) { + +40 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +41 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +42  + gsce +. +Es +( +h +-> +NewIn +( +isީe +-> +GCutCڋxt +()) + +43 . +FromMaybe +( +v8 +:: +Lol +())); + +46 +le + + +47 + gMaybeLol +< + gv8 +:: +Obje +> +NewIn +( + +48 +v8 +:: +Lol + +h + + +49 ,  +gc + + +50 , +v8 +:: +Lol + +gv +[]) { + +51 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +52 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +53  + gsce +. +Es +( +h +-> +NewIn +( +isީe +-> +GCutCڋxt +(), +gc +, +gv +) + +54 . +FromMaybe +( +v8 +:: +Lol +())); + +57 +le + + +58 + gMaybeLol +< + gv8 +:: +Obje +> +NewIn +( +v8 +:: +Lol + +h +) { + +59 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +60 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +61  + gsce +. +Es +( +h +-> +NewIn +( +isީe +-> +GCutCڋxt +()) + +62 . +FromMaybe +( +v8 +:: +Lol +())); + +66 +le + + gMaybeLol +< + gv8 +:: +Funi +> +GFuni +( + +67 +v8 +:: +Lol + +t +) { + +68 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +69 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +70  + gsce +. +Es +( +t +-> +GFuni +( +isީe +-> +GCutCڋxt +()) + +71 . +FromMaybe +( +v8 +:: +Lol +())); + +74 +le + + gMaybe +< + gbo +> +S +( + +75 +v8 +:: +Lol + +obj + + +76 , +v8 +:: +Lol + +key + + +77 , +v8 +:: +Lol + +vue +) { + +78 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +79 + gv8 +:: +HdSce + +sce +( +isީe +); + +80  + gobj +-> +S +( +isީe +-> +GCutCڋxt +(), +key +, +vue +); + +83 +le + + gMaybe +< + gbo +> +S +( + +84 +v8 +:: +Lol + +obj + + +85 , +ut32_t + +dex + + +86 , +v8 +:: +Lol + +vue +) { + +87 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +88 + gv8 +:: +HdSce + +sce +( +isީe +); + +89  + gobj +-> +S +( +isީe +-> +GCutCڋxt +(), +dex +, +vue +); + +92 #i +NODE_MODULE_VERSION + < +NODE_4_0_MODULE_VERSION + + +93  + ~"n_defe_own_ݔty_hr.h +" + +96 +le + + gMaybe +< + gbo +> +DefeOwnPrݔty +( + +97 +v8 +:: +Lol + +obj + + +98 , +v8 +:: +Lol + +key + + +99 , +v8 +:: +Lol + +vue + + +100 , +v8 +:: +PrݔtyAribu + +ibs + = v8:: +Ne +) { + +101 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +102 + gv8 +:: +HdSce + +sce +( +isީe +); + +103 #i +NODE_MODULE_VERSION + > +NODE_4_0_MODULE_VERSION + + +104  + gobj +-> +DefeOwnPrݔty +( +isީe +-> +GCutCڋxt +(), +key +, +vue +, + +105 +ibs +); + +107 + gMaybe +< + gv8 +:: +PrݔtyAribu +> +maybeCut + = + +108 +obj +-> +GPrݔtyAribus +( +isީe +-> +GCutCڋxt +(), +key +); + +109 i( + gmaybeCut +. +IsNhg +()) { + +110  + gNhg +< + gbo +>(); + +112 + gv8 +:: +PrݔtyAribu + +cut + = +maybeCut +. +FromJu +(); + +113  + gimp +:: +DefeOwnPrݔtyHr +( +cut +, +obj +, +key +, +vue +, +ibs +); + +117 +NAN_DEPRECATED + +le + + gMaybe +< + gbo +> +FS +( + +118 +v8 +:: +Lol + +obj + + +119 , +v8 +:: +Lol + +key + + +120 , +v8 +:: +Lol + +vue + + +121 , +v8 +:: +PrݔtyAribu + +ibs + = v8:: +Ne +) { + +122 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +123 + gv8 +:: +HdSce + +sce +( +isީe +); + +124 #i +NODE_MODULE_VERSION + > +NODE_9_0_MODULE_VERSION + + +125  + gkey +-> +IsName +() + +126 ? + gobj +-> +DefeOwnPrݔty +( +isީe +-> +GCutCڋxt +(), + +127 +key +. +As +< +v8 +:: +Name +>(), +vue +, +ibs +) + +128 : +Nhg +< +bo +>(); + +130  + gobj +-> +FS +( +isީe +-> +GCutCڋxt +(), +key +, +vue +, +ibs +); + +134 +le + + gMaybeLol +< + gv8 +:: +Vue +> +G +( + +135 +v8 +:: +Lol + +obj + + +136 , +v8 +:: +Lol + +key +) { + +137 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +138 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +139  + gsce +. +Es +( +obj +-> +G +( +isީe +-> +GCutCڋxt +(), +key +) + +140 . +FromMaybe +( +v8 +:: +Lol +())); + +143 +le + + +144 + gMaybeLol +< + gv8 +:: +Vue +> +G +( +v8 +:: +Lol + +obj +, +ut32_t + +dex +) { + +145 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +146 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +147  + gsce +. +Es +( +obj +-> +G +( +isީe +-> +GCutCڋxt +(), +dex +) + +148 . +FromMaybe +( +v8 +:: +Lol +())); + +151 +le + + gv8 +:: +PrݔtyAribu + +GPrݔtyAribus +( + +152 +v8 +:: +Lol + +obj + + +153 , +v8 +:: +Lol + +key +) { + +154 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +155 + gv8 +:: +HdSce + +sce +( +isީe +); + +156  + gobj +-> +GPrݔtyAribus +( +isީe +-> +GCutCڋxt +(), +key +) + +157 . +FromJu +(); + +160 +le + + gMaybe +< + gbo +> +Has +( + +161 +v8 +:: +Lol + +obj + + +162 , +v8 +:: +Lol + +key +) { + +163 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +164 + gv8 +:: +HdSce + +sce +( +isީe +); + +165  + gobj +-> +Has +( +isީe +-> +GCutCڋxt +(), +key +); + +168 +le + + gMaybe +< + gbo +> +Has +( +v8 +:: +Lol + +obj +, +ut32_t + +dex +) { + +169 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +170 + gv8 +:: +HdSce + +sce +( +isީe +); + +171  + gobj +-> +Has +( +isީe +-> +GCutCڋxt +(), +dex +); + +174 +le + + gMaybe +< + gbo +> +De +( + +175 +v8 +:: +Lol + +obj + + +176 , +v8 +:: +Lol + +key +) { + +177 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +178 + gv8 +:: +HdSce + +sce +( +isީe +); + +179  + gobj +-> +De +( +isީe +-> +GCutCڋxt +(), +key +); + +182 +le + + +183 + gMaybe +< + gbo +> +De +( +v8 +:: +Lol + +obj +, +ut32_t + +dex +) { + +184 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +185 + gv8 +:: +HdSce + +sce +( +isީe +); + +186  + gobj +-> +De +( +isީe +-> +GCutCڋxt +(), +dex +); + +189 +le + + +190 + gMaybeLol +< + gv8 +:: +Aay +> +GPrݔtyNames +( +v8 +:: +Lol + +obj +) { + +191 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +192 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +193  + gsce +. +Es +( +obj +-> +GPrݔtyNames +( +isީe +-> +GCutCڋxt +()) + +194 . +FromMaybe +( +v8 +:: +Lol +())); + +197 +le + + +198 + gMaybeLol +< + gv8 +:: +Aay +> +GOwnPrݔtyNames +( +v8 +:: +Lol + +obj +) { + +199 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +200 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +201  + gsce +. +Es +( +obj +-> +GOwnPrݔtyNames +( +isީe +-> +GCutCڋxt +()) + +202 . +FromMaybe +( +v8 +:: +Lol +())); + +205 +le + + gMaybe +< + gbo +> +SPry +( + +206 +v8 +:: +Lol + +obj + + +207 , +v8 +:: +Lol + +y +) { + +208 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +209 + gv8 +:: +HdSce + +sce +( +isީe +); + +210  + gobj +-> +SPry +( +isީe +-> +GCutCڋxt +(), +y +); + +213 +le + + gMaybeLol +< + gv8 +:: +Sg +> +ObjeProToSg +( + +214 +v8 +:: +Lol + +obj +) { + +215 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +216 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +217  + gsce +. +Es +( +obj +-> +ObjeProToSg +( +isީe +-> +GCutCڋxt +()) + +218 . +FromMaybe +( +v8 +:: +Lol +())); + +221 +le + + gMaybe +< + gbo +> +HasOwnPrݔty +( + +222 +v8 +:: +Lol + +obj + + +223 , +v8 +:: +Lol + +key +) { + +224 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +225 + gv8 +:: +HdSce + +sce +( +isީe +); + +226  + gobj +-> +HasOwnPrݔty +( +isީe +-> +GCutCڋxt +(), +key +); + +229 +le + + gMaybe +< + gbo +> +HasRlNamedPrݔty +( + +230 +v8 +:: +Lol + +obj + + +231 , +v8 +:: +Lol + +key +) { + +232 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +233 + gv8 +:: +HdSce + +sce +( +isީe +); + +234  + gobj +-> +HasRlNamedPrݔty +( +isީe +-> +GCutCڋxt +(), +key +); + +237 +le + + gMaybe +< + gbo +> +HasRlIndexedPrݔty +( + +238 +v8 +:: +Lol + +obj + + +239 , +ut32_t + +dex +) { + +240 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +241 + gv8 +:: +HdSce + +sce +( +isީe +); + +242  + gobj +-> +HasRlIndexedPrݔty +( +isީe +-> +GCutCڋxt +(), +dex +); + +245 +le + + gMaybe +< + gbo +> +HasRlNamedClbackPrݔty +( + +246 +v8 +:: +Lol + +obj + + +247 , +v8 +:: +Lol + +key +) { + +248 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +249 + gv8 +:: +HdSce + +sce +( +isީe +); + +250  + gobj +-> +HasRlNamedClbackPrݔty +( +isީe +-> +GCutCڋxt +(), +key +); + +253 +le + + gMaybeLol +< + gv8 +:: +Vue +> +GRlNamedPrݔtyInPryCha +( + +254 +v8 +:: +Lol + +obj + + +255 , +v8 +:: +Lol + +key +) { + +256 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +257 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +258  + gsce +. +Es +( +obj +-> +GRlNamedPrݔtyInPryCha +( + +259 +isީe +-> +GCutCڋxt +(), +key +) + +260 . +FromMaybe +( +v8 +:: +Lol +())); + +263 +le + + gMaybeLol +< + gv8 +:: +Vue +> +GRlNamedPrݔty +( + +264 +v8 +:: +Lol + +obj + + +265 , +v8 +:: +Lol + +key +) { + +266 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +267 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +268  + gsce +. +Es +( + +269 +obj +-> +GRlNamedPrݔty +( +isީe +-> +GCutCڋxt +(), +key +) + +270 . +FromMaybe +( +v8 +:: +Lol +())); + +273 +le + + gMaybeLol +< + gv8 +:: +Vue +> +ClAsFuni +( + +274 +v8 +:: +Lol + +obj + + +275 , +v8 +:: +Lol + +cv + + +276 ,  +gc + + +277 , +v8 +:: +Lol + +gv +[]) { + +278 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +279 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +280  + gsce +. +Es +( + +281 +obj +-> +ClAsFuni +( +isީe +-> +GCutCڋxt +(), +cv +, +gc +, +gv +) + +282 . +FromMaybe +( +v8 +:: +Lol +())); + +285 +le + + gMaybeLol +< + gv8 +:: +Vue +> +ClAsCڡru +( + +286 +v8 +:: +Lol + +obj + + +287 ,  +gc +, +v8 +:: +Lol + +gv +[]) { + +288 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +289 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +290  + gsce +. +Es +( + +291 +obj +-> +ClAsCڡru +( +isީe +-> +GCutCڋxt +(), +gc +, +gv +) + +292 . +FromMaybe +( +v8 +:: +Lol +())); + +295 +le + + +296 + gMaybeLol +< + gv8 +:: +Sg +> +GSourLe +( +v8 +:: +Lol + +msg +) { + +297 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +298 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +299  + gsce +. +Es +( +msg +-> +GSourLe +( +isީe +-> +GCutCڋxt +()) + +300 . +FromMaybe +( +v8 +:: +Lol +())); + +303 +le + + gMaybe +<> +GLeNumb +( +v8 +:: +Lol + +msg +) { + +304 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +305 + gv8 +:: +HdSce + +sce +( +isީe +); + +306  + gmsg +-> +GLeNumb +( +isީe +-> +GCutCڋxt +()); + +309 +le + + gMaybe +<> +GSCumn +( +v8 +:: +Lol + +msg +) { + +310 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +311 + gv8 +:: +HdSce + +sce +( +isީe +); + +312  + gmsg +-> +GSCumn +( +isީe +-> +GCutCڋxt +()); + +315 +le + + gMaybe +<> +GEndCumn +( +v8 +:: +Lol + +msg +) { + +316 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +317 + gv8 +:: +HdSce + +sce +( +isީe +); + +318  + gmsg +-> +GEndCumn +( +isީe +-> +GCutCڋxt +()); + +321 +le + + gMaybeLol +< + gv8 +:: +Obje +> +CleEmtAt +( + +322 +v8 +:: +Lol + +y + + +323 , +ut32_t + +dex +) { + +324 #i( +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION +) + +325 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +326 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +327 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +328 + gv8 +:: +Lol +< +v8 +:: +Vue +> +em +; + +329 + gv8 +:: +Lol +< +v8 +:: +Obje +> +obj +; + +330 i(! + gy +-> +G +( +cڋxt +, +dex +). +ToLol +(& +em +)) { + +331  + gsce +. +Es +( +obj +); + +333 i(! + gem +-> +ToObje +( +cڋxt +). +ToLol +(& +obj +)) { + +334  + gsce +. +Es +( +v8 +:: +Lol +()); + +336  + gsce +. +Es +( +obj +-> +Cle +()); + +338 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +339 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +340  + gsce +. +Es +( +y +-> +CleEmtAt +( +isީe +-> +GCutCڋxt +(), +dex +) + +341 . +FromMaybe +( +v8 +:: +Lol +())); + +345 +le + + gMaybeLol +< + gv8 +:: +Vue +> +Cl +( + +346 +v8 +:: +Lol + +fun + + +347 , +v8 +:: +Lol + +cv + + +348 ,  +gc + + +349 , +v8 +:: +Lol + +gv +[]) { + +350 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +351 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +352  + gsce +. +Es +( +fun +-> +Cl +( +isީe +-> +GCutCڋxt +(), +cv +, +gc +, +gv +) + +353 . +FromMaybe +( +v8 +:: +Lol +())); + + @interface/node_modules/nan/nan_maybe_pre_43_inl.h + +9 #ide +NAN_MAYBE_PRE_43_INL_H_ + + +10  + #NAN_MAYBE_PRE_43_INL_H_ + + + ) + +12 + gme +< +tyme + + gT +> + +13 as + cMaybeLol + { + +14 + mpublic +: + +15 +le + + $MaybeLol +(: + `v_ +( +v8 +:: +Lol +< +T +>()) {} + +17 +me +< +tyme + +S +> + +18 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +19 +le + + +20 + `MaybeLol +( +v8 +:: +Lol +< +S +> +th +: + $v_ +( +th +{ + } +} + +22 +le + + +23 +MaybeLol +( +v8 +:: +Lol +< +S +> +th +) : + +24 +v_ +(* +t_ +< +v8 +:: +Lol +< +T +>*>(& +th +)) {} + +27 +le + +bo + + $IsEmy +(cڡ {  +v_ +. + `IsEmy +(); + } +} + +29 + gme +< +tyme + + gS +> + +30 +le + +bo + +ToLol +( +v8 +:: +Lol +< +S +> * +out +) const { + +31 * +out + = +v_ +; + +32  ! +IsEmy +(); + +35 +le + + gv8 +:: +Lol +< +T +> + $ToLolChecked +() const { + +36 #i + `defed +( +V8_ENABLE_CHECKS +) + +37 + `as +(! + `IsEmy +() && "ToLocalChecked is Empty"); + +39  +v_ +; + +40 + } +} + +42 + gme +< +tyme + + gS +> + +43 +le + + gv8 +:: +Lol +< +S +> +FromMaybe +( +v8 +::Lol +deu_vue +) const { + +44  +IsEmy +(? +deu_vue + : +v8 +:: +Lol +< +S +>( +v_ +); + +47 + give +: + +48 +v8 +:: +Lol +< +T +> +v_ +; + +51 +le + + +52 + gMaybeLol +< + gv8 +:: +Sg +> +ToDaSg +( +v8 +:: +Hd + +v +) { + +53  +MaybeLol +< +v8 +:: +Sg +>( +v +-> +ToDaSg +()); + +56 +le + + +57 + gMaybeLol +< + gv8 +:: +Ut32 +> +ToAayIndex +( +v8 +:: +Hd + +v +) { + +58  +MaybeLol +< +v8 +:: +Ut32 +>( +v +-> +ToAayIndex +()); + +61 +le + + +62 + gMaybe +< + gbo +> +Equs +( +v8 +:: +Hd + +a +, v8::Hd( +b +)) { + +63  +Ju +< +bo +>( +a +-> +Equs +( +b +)); + +66 +le + + +67 + gMaybeLol +< + gv8 +:: +Obje +> +NewIn +( +v8 +:: +Hd + +h +) { + +68  +MaybeLol +< +v8 +:: +Obje +>( +h +-> +NewIn +()); + +71 +le + + +72 + gMaybeLol +< + gv8 +:: +Obje +> +NewIn +( + +73 +v8 +:: +Lol + +h + + +74 ,  +gc + + +75 , +v8 +:: +Lol + +gv +[]) { + +76  +MaybeLol +< +v8 +:: +Obje +>( +h +-> +NewIn +( +gc +, +gv +)); + +79 +le + + +80 + gMaybeLol +< + gv8 +:: +Obje +> +NewIn +( +v8 +:: +Hd + +h +) { + +81  +MaybeLol +< +v8 +:: +Obje +>( +h +-> +NewIn +()); + +84 +le + + +85 + gMaybeLol +< + gv8 +:: +Funi +> +GFuni +( +v8 +:: +Hd + +t +) { + +86  +MaybeLol +< +v8 +:: +Funi +>( +t +-> +GFuni +()); + +89 +le + + gMaybe +< + gbo +> +S +( + +90 +v8 +:: +Hd + +obj + + +91 , +v8 +:: +Hd + +key + + +92 , +v8 +:: +Hd + +vue +) { + +93  +Ju +< +bo +>( +obj +-> +S +( +key +, +vue +)); + +96 +le + + gMaybe +< + gbo +> +S +( + +97 +v8 +:: +Hd + +obj + + +98 , +ut32_t + +dex + + +99 , +v8 +:: +Hd + +vue +) { + +100  +Ju +< +bo +>( +obj +-> +S +( +dex +, +vue +)); + +103  + ~"n_defe_own_ݔty_hr.h +" + +105 +le + + gMaybe +< + gbo +> +DefeOwnPrݔty +( + +106 +v8 +:: +Hd + +obj + + +107 , +v8 +:: +Hd + +key + + +108 , +v8 +:: +Hd + +vue + + +109 , +v8 +:: +PrݔtyAribu + +ibs + = v8:: +Ne +) { + +110 +v8 +:: +PrݔtyAribu + +cut + = +obj +-> +GPrݔtyAribus +( +key +); + +111  + gimp +:: +DefeOwnPrݔtyHr +( +cut +, +obj +, +key +, +vue +, +ibs +); + +114 +NAN_DEPRECATED + +le + + gMaybe +< + gbo +> +FS +( + +115 +v8 +:: +Hd + +obj + + +116 , +v8 +:: +Hd + +key + + +117 , +v8 +:: +Hd + +vue + + +118 , +v8 +:: +PrݔtyAribu + +ibs + = v8:: +Ne +) { + +119  +Ju +< +bo +>( +obj +-> +FS +( +key +, +vue +, +ibs +)); + +122 +le + + gMaybeLol +< + gv8 +:: +Vue +> +G +( + +123 +v8 +:: +Hd + +obj + + +124 , +v8 +:: +Hd + +key +) { + +125  +MaybeLol +< +v8 +:: +Vue +>( +obj +-> +G +( +key +)); + +128 +le + + gMaybeLol +< + gv8 +:: +Vue +> +G +( + +129 +v8 +:: +Hd + +obj + + +130 , +ut32_t + +dex +) { + +131  + gMaybeLol +< + gv8 +:: +Vue +>( +obj +-> +G +( +dex +)); + +134 +le + + gMaybe +< + gv8 +:: +PrݔtyAribu +> +GPrݔtyAribus +( + +135 +v8 +:: +Hd + +obj + + +136 , +v8 +:: +Hd + +key +) { + +137  +Ju +< +v8 +:: +PrݔtyAribu +>( +obj +-> +GPrݔtyAribus +( +key +)); + +140 +le + + gMaybe +< + gbo +> +Has +( + +141 +v8 +:: +Hd + +obj + + +142 , +v8 +:: +Hd + +key +) { + +143  +Ju +< +bo +>( +obj +-> +Has +( +key +)); + +146 +le + + gMaybe +< + gbo +> +Has +( + +147 +v8 +:: +Hd + +obj + + +148 , +ut32_t + +dex +) { + +149  + gJu +< + gbo +>( + gobj +-> +Has +( +dex +)); + +152 +le + + gMaybe +< + gbo +> +De +( + +153 +v8 +:: +Hd + +obj + + +154 , +v8 +:: +Hd + +key +) { + +155  +Ju +< +bo +>( +obj +-> +De +( +key +)); + +158 +le + + gMaybe +< + gbo +> +De +( + +159 +v8 +:: +Hd + +obj + + +160 , +ut32_t + +dex +) { + +161  + gJu +< + gbo +>( + gobj +-> +De +( +dex +)); + +164 +le + + +165 + gMaybeLol +< + gv8 +:: +Aay +> +GPrݔtyNames +( +v8 +:: +Hd + +obj +) { + +166  +MaybeLol +< +v8 +:: +Aay +>( +obj +-> +GPrݔtyNames +()); + +169 +le + + +170 + gMaybeLol +< + gv8 +:: +Aay +> +GOwnPrݔtyNames +( +v8 +:: +Hd + +obj +) { + +171  +MaybeLol +< +v8 +:: +Aay +>( +obj +-> +GOwnPrݔtyNames +()); + +174 +le + + gMaybe +< + gbo +> +SPry +( + +175 +v8 +:: +Hd + +obj + + +176 , +v8 +:: +Hd + +y +) { + +177  +Ju +< +bo +>( +obj +-> +SPry +( +y +)); + +180 +le + + gMaybeLol +< + gv8 +:: +Sg +> +ObjeProToSg +( + +181 +v8 +:: +Hd + +obj +) { + +182  +MaybeLol +< +v8 +:: +Sg +>( +obj +-> +ObjeProToSg +()); + +185 +le + + gMaybe +< + gbo +> +HasOwnPrݔty +( + +186 +v8 +:: +Hd + +obj + + +187 , +v8 +:: +Hd + +key +) { + +188  +Ju +< +bo +>( +obj +-> +HasOwnPrݔty +( +key +)); + +191 +le + + gMaybe +< + gbo +> +HasRlNamedPrݔty +( + +192 +v8 +:: +Hd + +obj + + +193 , +v8 +:: +Hd + +key +) { + +194  +Ju +< +bo +>( +obj +-> +HasRlNamedPrݔty +( +key +)); + +197 +le + + gMaybe +< + gbo +> +HasRlIndexedPrݔty +( + +198 +v8 +:: +Hd + +obj + + +199 , +ut32_t + +dex +) { + +200  + gJu +< + gbo +>( + gobj +-> +HasRlIndexedPrݔty +( +dex +)); + +203 +le + + gMaybe +< + gbo +> +HasRlNamedClbackPrݔty +( + +204 +v8 +:: +Hd + +obj + + +205 , +v8 +:: +Hd + +key +) { + +206  +Ju +< +bo +>( +obj +-> +HasRlNamedClbackPrݔty +( +key +)); + +209 +le + + gMaybeLol +< + gv8 +:: +Vue +> +GRlNamedPrݔtyInPryCha +( + +210 +v8 +:: +Hd + +obj + + +211 , +v8 +:: +Hd + +key +) { + +212  +MaybeLol +< +v8 +:: +Vue +>( + +213 +obj +-> +GRlNamedPrݔtyInPryCha +( +key +)); + +216 +le + + gMaybeLol +< + gv8 +:: +Vue +> +GRlNamedPrݔty +( + +217 +v8 +:: +Hd + +obj + + +218 , +v8 +:: +Hd + +key +) { + +219  +MaybeLol +< +v8 +:: +Vue +>( +obj +-> +GRlNamedPrݔty +( +key +)); + +222 +le + + gMaybeLol +< + gv8 +:: +Vue +> +ClAsFuni +( + +223 +v8 +:: +Hd + +obj + + +224 , +v8 +:: +Hd + +cv + + +225 ,  +gc + + +226 , +v8 +:: +Hd + +gv +[]) { + +227  +MaybeLol +< +v8 +:: +Vue +>( +obj +-> +ClAsFuni +( +cv +, +gc +, +gv +)); + +230 +le + + gMaybeLol +< + gv8 +:: +Vue +> +ClAsCڡru +( + +231 +v8 +:: +Hd + +obj + + +232 ,  +gc + + +233 , +v8 +:: +Lol + +gv +[]) { + +234  +MaybeLol +< +v8 +:: +Vue +>( +obj +-> +ClAsCڡru +( +gc +, +gv +)); + +237 +le + + +238 + gMaybeLol +< + gv8 +:: +Sg +> +GSourLe +( +v8 +:: +Hd + +msg +) { + +239  +MaybeLol +< +v8 +:: +Sg +>( +msg +-> +GSourLe +()); + +242 +le + + gMaybe +<> +GLeNumb +( +v8 +:: +Hd + +msg +) { + +243  +Ju +<>( +msg +-> +GLeNumb +()); + +246 +le + + gMaybe +<> +GSCumn +( +v8 +:: +Hd + +msg +) { + +247  +Ju +<>( +msg +-> +GSCumn +()); + +250 +le + + gMaybe +<> +GEndCumn +( +v8 +:: +Hd + +msg +) { + +251  +Ju +<>( +msg +-> +GEndCumn +()); + +254 +le + + gMaybeLol +< + gv8 +:: +Obje +> +CleEmtAt +( + +255 +v8 +:: +Hd + +y + + +256 , +ut32_t + +dex +) { + +257  + gMaybeLol +< + gv8 +:: +Obje +>( +y +-> +CleEmtAt +( +dex +)); + +260 +le + + gMaybeLol +< + gv8 +:: +Vue +> +Cl +( + +261 +v8 +:: +Lol + +fun + + +262 , +v8 +:: +Lol + +cv + + +263 ,  +gc + + +264 , +v8 +:: +Lol + +gv +[]) { + +265  +MaybeLol +< +v8 +:: +Vue +>( +fun +-> +Cl +( +cv +, +gc +, +gv +)); + + @interface/node_modules/nan/nan_new.h + +9 #ide +NAN_NEW_H_ + + +10  + #NAN_NEW_H_ + + + ) + +12 +mea + + gimp + { + +15 + gme + < +tyme + + gT +> + gv8 +:: +Lol +< +T +> +To +( +v8 +::Lol +i +); + +17 + gme + <> + +18 +le + + +19 + gv8 +:: +Lol +< +v8 +:: +Ieg +> + +20 +To +< +v8 +:: +Ieg +>(v8:: +Lol + +i +) { + +21  +N +:: +To +< +v8 +:: +Ieg +>( +i +). +ToLolChecked +(); + +24 + gme + <> + +25 +le + + +26 + gv8 +:: +Lol +< +v8 +:: +I32 +> + +27 +To +< +v8 +:: +I32 +>(v8:: +Lol + +i +) { + +28  +N +:: +To +< +v8 +:: +I32 +>( +i +). +ToLolChecked +(); + +31 + gme + <> + +32 +le + + +33 + gv8 +:: +Lol +< +v8 +:: +Ut32 +> + +34 +To +< +v8 +:: +Ut32 +>(v8:: +Lol + +i +) { + +35  +N +:: +To +< +v8 +:: +Ut32 +>( +i +). +ToLolChecked +(); + +38 + gme + < +tyme + + gT +>  + sFayBa + { + +39  + gv8 +:: + tLol +< + tT +> + ttu_t +; + +42 + gme + < +tyme + + gT +>  + sMaybeFayBa + { + +43  + gMaybeLol +< + tT +> + ttu_t +; + +46 + gme + < +tyme + + gT +>  + gFay +; + +48 + gme + <> + +49  + gFay +< + gv8 +:: +Aay +> : +FayBa +< +v8 +::Array> { + +50  +le + +tu_t + +New +(); + +51  +le + +tu_t + +New +( +ngth +); + +54 + gme + <> + +55  + gFay +< + gv8 +:: +Boޗn +> : +FayBa +< +v8 +::Boolean> { + +56  +le + +tu_t + +New +( +bo + +vue +); + +59 + gme + <> + +60  + gFay +< + gv8 +:: +BoޗnObje +> : +FayBa +< +v8 +::BooleanObject> { + +61  +le + +tu_t + +New +( +bo + +vue +); + +64 + gme + <> + +65  + gFay +< + gv8 +:: +Cڋxt +> : +FayBa +< +v8 +::Context> { + +66  +le + + +67 +tu_t + + +68 +New + +v8 +:: +ExnsiCfiguti +* +exnsis + = +NULL + + +69 , +v8 +:: +Lol + +tm + = v8::Local() + +70 , +v8 +:: +Lol + +obj + = v8::Local()); + +73 + gme + <> + +74  + gFay +< + gv8 +:: +De +> : +MaybeFayBa +< +v8 +::Date> { + +75  +le + +tu_t + +New +( +vue +); + +78 + gme + <> + +79  + gFay +< + gv8 +:: +Ex +> : +FayBa +< +v8 +::External> { + +80  +le + +tu_t + +New +(* +vue +); + +83 + gme + <> + +84  + gFay +< + gv8 +:: +Funi +> : +FayBa +< +v8 +::Function> { + +85  +le + + +86 +tu_t + + +87 +New + +FuniClback + +back + + +88 , +v8 +:: +Lol + +da + = v8::Local()); + +91 + gme + <> + +92  + gFay +< + gv8 +:: +FuniTeme +> : +FayBa +< +v8 +::FunctionTemplate> { + +93  +le + + +94 +tu_t + + +95 +New + +FuniClback + +back + = +NULL + + +96 , +v8 +:: +Lol + +da + = v8::Local() + +97 , +v8 +:: +Lol + +sigtu + = v8::Local()); + +100 + gme + <> + +101  + gFay +< + gv8 +:: +Numb +> : +FayBa +< +v8 +::Number> { + +102  +le + +tu_t + +New +( +vue +); + +105 + gme + <> + +106  + gFay +< + gv8 +:: +NumbObje +> : +FayBa +< +v8 +::NumberObject> { + +107  +le + +tu_t + +New +( +vue +); + +110 + gme + < +tyme + + gT +> + +111  + gIegFay + : +FayBa +< +T +> { + +112  +tyme + + tFayBa +< + tT +>:: + ttu_t +eturn_t; + +113  +le + +tu_t + +New +( +t32_t + +vue +); + +114  +le + +tu_t + +New +( +ut32_t + +vue +); + +117 + gme + <> + +118  + gFay +< + gv8 +:: +Ieg +> : +IegFay +< +v8 +::Integer> {}; + +120 + gme + <> + +121  + gFay +< + gv8 +:: +I32 +> : +IegFay +< +v8 +::Int32> {}; + +123 + gme + <> + +124  + gFay +< + gv8 +:: +Ut32 +> : +FayBa +< +v8 +::Uint32> { + +125  +le + +tu_t + +New +( +t32_t + +vue +); + +126  +le + +tu_t + +New +( +ut32_t + +vue +); + +129 + gme + <> + +130  + gFay +< + gv8 +:: +Obje +> : +FayBa +< +v8 +::Object> { + +131  +le + +tu_t + +New +(); + +134 + gme + <> + +135  + gFay +< + gv8 +:: +ObjeTeme +> : +FayBa +< +v8 +::ObjectTemplate> { + +136  +le + +tu_t + +New +(); + +139 + gme + <> + +140  + gFay +< + gv8 +:: +RegExp +> : +MaybeFayBa +< +v8 +::RegExp> { + +141  +le + +tu_t + +New +( + +142 +v8 +:: +Lol + +n +, v8:: +RegExp +:: +Fgs + +ags +); + +145 + gme + <> + +146  + gFay +< + gv8 +:: +St +> : +MaybeFayBa +< +v8 +::Script> { + +147  +le + +tu_t + +New + +v8 +:: +Lol + +sour +); + +148  +le + +tu_t + +New + +v8 +:: +Lol + +sour + + +149 , +v8 +:: +StOrig + cڡ& +ig +); + +152 + gme + <> + +153  + gFay +< + gv8 +:: +Sigtu +> : +FayBa +< +v8 +::Signature> { + +154  +v8 +:: + tLol +< + tv8 +:: + tFuniTeme +> + tFTH +; + +155  +le + +tu_t + +New +( +FTH + +iv + = FTH()); + +158 + gme + <> + +159  + gFay +< + gv8 +:: +Sg +> : +MaybeFayBa +< +v8 +::String> { + +160  +le + +tu_t + +New +(); + +161  +le + +tu_t + +New +(cڡ * +vue +,  +ngth + = -1); + +162  +le + +tu_t + +New +(cڡ +ut16_t + * +vue +,  +ngth + = -1); + +163  +le + +tu_t + +New +( +d +:: +rg + cڡ& +vue +); + +165  +le + +tu_t + +New +( +v8 +:: +Sg +:: +ExSgResour + * +vue +); + +166  +le + +tu_t + +New +( +ExOBySgResour + * +vue +); + +169 + gme + <> + +170  + gFay +< + gv8 +:: +SgObje +> : +FayBa +< +v8 +::StringObject> { + +171  +le + +tu_t + +New +( +v8 +:: +Lol + +vue +); + +176 #i( +NODE_MODULE_VERSION + >= 12) + +178 +mea + + gimp + { + +180 + gme + <> + +181  + gFay +< + gv8 +:: +UnboundSt +> : +MaybeFayBa +< +v8 +::UnboundScript> { + +182  +le + +tu_t + +New + +v8 +:: +Lol + +sour +); + +183  +le + +tu_t + +New + +v8 +:: +Lol + +sour + + +184 , +v8 +:: +StOrig + cڡ& +ig +); + +189  + ~"n_imemti_12_l.h +" + +193  + ~"n_imemti_e_12_l.h +" + +199 + gme + < +tyme + + gT +> + +200 +tyme + + gimp +:: +Fay +< +T +>:: +tu_t + + +201 + $New +() { + +202  +imp +:: +Fay +< +T +>:: + `New +(); + +203 + } +} + +205 + gme + < +tyme + + gT +,ym + gA0 +> + +206 +tyme + + gimp +:: +Fay +< +T +>:: +tu_t + + +207 + $New +( +A0 + +g0 +) { + +208  +imp +:: +Fay +< +T +>:: + `New +( +g0 +); + +209 + } +} + +211 + gme + < +tyme + + gT +,ym + gA0 +,ym + gA1 +> + +212 +tyme + + gimp +:: +Fay +< +T +>:: +tu_t + + +213 + $New +( +A0 + +g0 +, +A1 + +g1 +) { + +214  +imp +:: +Fay +< +T +>:: + `New +( +g0 +, +g1 +); + +215 + } +} + +217 + gme + < +tyme + + gT +,ym + gA0 +,ym + gA1 +,ym + gA2 +> + +218 +tyme + + gimp +:: +Fay +< +T +>:: +tu_t + + +219 + $New +( +A0 + +g0 +, +A1 + +g1 +, +A2 + +g2 +) { + +220  +imp +:: +Fay +< +T +>:: + `New +( +g0 +, +g1 +, +g2 +); + +221 + } +} + +223 + gme + < +tyme + + gT +,ym + gA0 +,ym + gA1 +,ym + gA2 +,ym + gA3 +> + +224 +tyme + + gimp +:: +Fay +< +T +>:: +tu_t + + +225 + $New +( +A0 + +g0 +, +A1 + +g1 +, +A2 + +g2 +, +A3 + +g3 +) { + +226  +imp +:: +Fay +< +T +>:: + `New +( +g0 +, +g1 +, +g2 +, +g3 +); + +227 + } +} + +235 + gme + < +tyme + + gT +> + +236 +tyme + + gimp +:: +Fay +< +T +>:: +tu_t + + +237 +New + +FuniClback + +back + + +238 , +v8 +:: +Lol + +da + = v8::Local()) { + +239  +imp +:: +Fay +< +T +>:: +New +( +back +, +da +); + +243 + gme + < +tyme + + gT +,ym + gA2 +> + +244 +tyme + + gimp +:: +Fay +< +T +>:: +tu_t + + +245 +New + +FuniClback + +back + + +246 , +v8 +:: +Lol + +da + = v8::Local() + +247 , +A2 + +a2 + = + $A2 +()) { + +248  +imp +:: +Fay +< +T +>:: + `New +( +back +, +da +, +a2 +); + +249 + } +} + +253 #i +NODE_MODULE_VERSION + < +IOJS_3_0_MODULE_VERSION + + +254 + gme + < +tyme + + gT +> +le + + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Hd + +h +); + +257 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +258 + gme + < +tyme + + gT +,ym + gM +> + +259 +le + + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Psit + cڡ& +p +); + +261 + gme + < +tyme + + gT +> +le + + gv8 +:: +Lol +< +T +> +New +( +v8 +:: +Psit + cڡ& +p +); + +263 + gme + < +tyme + + gT +,ym + gM +> + +264 +le + + gv8 +:: +Lol +< +T +> +New +( +Psit + cڡ& +p +); + +265 + gme + < +tyme + + gT +> + +266 +le + + gv8 +:: +Lol +< +T +> +New +( +Glob + cڡ& +p +); + +268 +le + + +269 + gimp +:: +Fay +< +v8 +:: +Boޗn +>:: +tu_t + + +270 + $New +( +bo + +vue +) { + +271  +New +< +v8 +:: +Boޗn +>( +vue +); + +272 + } +} + +274 +le + + +275 + gimp +:: +Fay +< +v8 +:: +I32 +>:: +tu_t + + +276 + $New +( +t32_t + +vue +) { + +277  +New +< +v8 +:: +I32 +>( +vue +); + +278 + } +} + +280 +le + + +281 + gimp +:: +Fay +< +v8 +:: +Ut32 +>:: +tu_t + + +282 + $New +( +ut32_t + +vue +) { + +283  +New +< +v8 +:: +Ut32 +>( +vue +); + +284 + } +} + +286 +le + + +287 + gimp +:: +Fay +< +v8 +:: +Numb +>:: +tu_t + + +288 + $New +( +vue +) { + +289  +New +< +v8 +:: +Numb +>( +vue +); + +290 + } +} + +292 +le + + +293 + gimp +:: +Fay +< +v8 +:: +Sg +>:: +tu_t + + +294 + $New +( +d +:: +rg + cڡ& +vue +) { + +295  +New +< +v8 +:: +Sg +>( +vue +); + +296 + } +} + +298 +le + + +299 + gimp +:: +Fay +< +v8 +:: +Sg +>:: +tu_t + + +300 + $New +(cڡ * +vue +,  +ngth +) { + +301  +New +< +v8 +:: +Sg +>( +vue +, +ngth +); + +302 + } +} + +304 +le + + +305 + gimp +:: +Fay +< +v8 +:: +Sg +>:: +tu_t + + +306 + $New +(cڡ +ut16_t + * +vue +,  +ngth +) { + +307  +New +< +v8 +:: +Sg +>( +vue +, +ngth +); + +308 + } +} + +310 +le + + +311 + gimp +:: +Fay +< +v8 +:: +Sg +>:: +tu_t + + +312 + $New +(cڡ * +vue +) { + +313  +New +< +v8 +:: +Sg +>( +vue +); + +314 + } +} + +316 +le + + +317 + gimp +:: +Fay +< +v8 +:: +Sg +>:: +tu_t + + +318 + $New +(cڡ +ut16_t + * +vue +) { + +319  +New +< +v8 +:: +Sg +>( +vue +); + +320 + } +} + +322 +le + + +323 + gimp +:: +Fay +< +v8 +:: +Sg +>:: +tu_t + + +324 + $New +( +v8 +:: +Sg +:: +ExSgResour + * +vue +) { + +325  +New +< +v8 +:: +Sg +>( +vue +); + +326 + } +} + +328 +le + + +329 + gimp +:: +Fay +< +v8 +:: +Sg +>:: +tu_t + + +330 + $New +( +ExOBySgResour + * +vue +) { + +331  +New +< +v8 +:: +Sg +>( +vue +); + +332 + } +} + +334 +le + + +335 + gimp +:: +Fay +< +v8 +:: +RegExp +>:: +tu_t + + +336 +New +( +v8 +:: +Lol + +n +, v8:: +RegExp +:: +Fgs + +ags +) { + +337  +New +< +v8 +:: +RegExp +>( +n +, + gags +); + + @interface/node_modules/nan/nan_object_wrap.h + +9 #ide +NAN_OBJECT_WRAP_H_ + + +10  + #NAN_OBJECT_WRAP_H_ + + + ) + +12 as + cObjeWp + { + +13 + mpublic +: + +14 + $ObjeWp +() { + +15 +fs_ + = 0; + +19 +vtu + ~ + $ObjeWp +() { + +20 i( + `rsit +(). + `IsEmy +()) { + +24 + `rsit +(). + `CˬWk +(); + +25 + `rsit +(). + `Ret +(); + +26 + } +} + +29 + gme + < +ass + + gT +> + +30  +le + +T +* +Unwp +( +v8 +:: +Lol + +obje +) { + +31 +as +(! +obje +. +IsEmy +()); + +32 +as +( +obje +-> +IlFldCou +() > 0); + +35 * + gr + = +GIlFldPor +( +obje +, 0); + +36 +ObjeWp +* + gwp + = +ic_ +( +r +); + +37  + gic_ +< + gT +*>( + gwp +); + +41 +le + + gv8 +:: +Lol +< +v8 +:: +Obje +> + $hd +() const { + +42  + `New +( +hd_ +); + +43 + } +} + +46 +le + + gPsit +< + gv8 +:: +Obje +>& + $rsit +() { + +47  +hd_ +; + +48 + } +} + +51 + geed +: + +52 +le +  +Wp +( +v8 +:: +Lol + +obje +) { + +53 +as +( +rsit +(). +IsEmy +()); + +54 +as +( +obje +-> +IlFldCou +() > 0); + +55 +SIlFldPor +( +obje +, 0, +this +); + +56 +rsit +(). +Ret +( +obje +); + +57 +MakeWk +(); + +60 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +61 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +63 +le +  + $MakeWk +() { + +64 + `rsit +(). +v8 +:: +PsitBa +:: + `SWk +( + +65 +this +, +WkClback +, +v8 +:: +WkClbackTy +:: +kPam +); + +66 #i +NODE_MAJOR_VERSION + < 10 + +68 + `rsit +(). + `MkInddt +(); + +70 + } +} + +72 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +74 +le +  + $MakeWk +() { + +75 + `rsit +(). +v8 +:: +PsitBa +:: + `SWk +( +this +, +WkClback +); + +76 + `rsit +(). + `MkInddt +(); + +77 + } +} + +81 +le +  + $MakeWk +() { + +82 + `rsit +(). +rsit +. + `MakeWk +( +this +, +WkClback +); + +83 + `rsit +(). + `MkInddt +(); + +84 + } +} + +92 +vtu +  + $Ref +() { + +93 + `as +(! + `rsit +(). + `IsEmy +()); + +94 + `rsit +(). + `CˬWk +(); + +95 +fs_ +++; + +96 + } +} + +107 +vtu +  + $Uef +() { + +108 + `as +(! + `rsit +(). + `IsEmy +()); + +109 + `as +(! + `rsit +(). + `IsWk +()); + +110 + `as +( +fs_ + > 0); + +111 i(-- +fs_ + == 0) + +112 + `MakeWk +(); + +113 + } +} + +115  + gfs_ +; + +117 + give +: + +118 + $NAN_DISALLOW_ASSIGN_COPY_MOVE +( +ObjeWp +) + +119 #i + `defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +120 ( +V8_MAJOR_VERSION + =4 && + `defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +123 + `WkClback +( +v8 +:: +WkClbackInfo +< +ObjeWp +> cڡ& +fo +) { + +124 +ObjeWp +* +wp + = +fo +. + `GPam +(); + +125 + `as +( +wp +-> +fs_ + == 0); + +126 +wp +-> +hd_ +. + `Ret +(); + +127 +de + +wp +; + +128 + } +} + +130 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +133 +WkClback +( +v8 +:: +WkClbackDa + cڡ& +da +) { + +134 +ObjeWp +* + gwp + = +da +. +GPam +(); + +135 +as +( +wp +-> +fs_ + == 0); + +136 +as +( +wp +-> +hd_ +. +IsNrDth +()); + +137 + gwp +-> + ghd_ +. +Ret +(); + +138 +de + + gwp +; + +143  +WkClback +( +v8 +:: +Psit + +vue +, * +da +) { + +144 +ObjeWp + * + gwp + = +ic_ +( +da +); + +145 +as +( +wp +-> +fs_ + == 0); + +146 +as +( +wp +-> +hd_ +. +IsNrDth +()); + +147 + gwp +-> + ghd_ +. +Ret +(); + +148 +de + + gwp +; + +152 + gPsit +< + gv8 +:: +Obje +> +hd_ +; + + @interface/node_modules/nan/nan_persistent_12_inl.h + +9 #ide +NAN_PERSISTENT_12_INL_H_ + + +10  + #NAN_PERSISTENT_12_INL_H_ + + + ) + +12 + gme +< +tyme + + gT +,ym + gM +> +ass + + gPsit + : + +13 +public + +v8 +:: +Psit +< +T +, + gM +> { + +14 + gpublic +: + +15 +le + +Psit +(: +v8 +::Psit< +T +, + gM +>() {} + +17 + gme +< +tyme + + gS +> +le + +Psit +( +v8 +:: +Lol +< +S +> +th +) : + +18 +v8 +:: +Psit +< +T +, + gM +>( + gv8 +:: +Isީe +:: +GCut +(), + gth +) {} + +20 + gme +< +tyme + + gS +,ym + gM2 +> + +21 +le + + +22 +Psit +(cڡ +v8 +::Psit< +S +, +M2 +> & +th +) : + +23 +v8 +:: +Psit +< +T +, + gM2 +>( + gv8 +:: +Isީe +:: +GCut +(), + gth +) {} + +25 +le +  +Ret +({ + gv8 +:: +PsitBa +< +T +>::Reset(); } + +27 + gme + < +tyme + + gS +> + +28 +le +  +Ret +(cڡ +v8 +:: +Lol +< +S +> & +h +) { + +29 +v8 +:: +PsitBa +< +T +>:: +Ret +(v8:: +Isީe +:: +GCut +(), +h +); + +32 + gme + < +tyme + + gS +> + +33 +le +  +Ret +(cڡ +v8 +:: +PsitBa +< +S +> & +h +) { + +34 +v8 +:: +PsitBa +< +T +>:: +Ret +(v8:: +Isީe +:: +GCut +(), +h +); + +37 + gme +< +tyme + + gP +> + +38 +le +  +SWk +( + +39 +P + * +m + + +40 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +41 , +WkClbackTy + +ty +); + +43 + give +: + +44 +le + +T + * +ݔ +*(cڡ {  * +PsitBa +:: +rsit +; } + +46 + gme +< +tyme + + gS +,ym + gM2 +> + +47 +le +  +Cy +(cڡ +Psit +< +S +, +M2 +> & +th +) { + +48 +TYPE_CHECK +( +T +, +S +); + +50 + gthis +-> +Ret +(); + +52 i(! + gth +. +IsEmy +()) { + +53 + gthis +-> +Ret +( +th +); + +54 + gM +:: +Cy +( +th +, +this +); + +59 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +60 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +61 +me +< +tyme + +T +> + +62 +ass + +Glob + : +public + +v8 +::Glob< +T +> { + +63 +public +: + +64 +le + +Glob +(: +v8 +::Glob< +T +>() {} + +66 +me +< +tyme + +S +> +le + +Glob +( +v8 +:: +Lol + +th +) : + +67 +v8 +:: +Glob +< +T +>(v8:: +Isީe +:: +GCut +(), +th +) {} + +69 +me +< +tyme + +S +> + +70 +le + + +71 +Glob +(cڡ +v8 +:: +PsitBa +< +S +> & +th +) : + +72 +v8 +:: +Glob +< +S +>(v8:: +Isީe +:: +GCut +(), +th +) {} + +74 +le +  +Ret +({ +v8 +:: +PsitBa +< +T +>::Reset(); } + +76 + gme + < +tyme + + gS +> + +77 +le +  +Ret +(cڡ +v8 +:: +Lol +< +S +> & +h +) { + +78 +v8 +:: +PsitBa +< +T +>:: +Ret +(v8:: +Isީe +:: +GCut +(), +h +); + +81 + gme + < +tyme + + gS +> + +82 +le +  +Ret +(cڡ +v8 +:: +PsitBa +< +S +> & +h +) { + +83 +v8 +:: +PsitBa +< +T +>:: +Ret +(v8:: +Isީe +:: +GCut +(), +h +); + +86 + gme +< +tyme + + gP +> + +87 +le +  +SWk +( + +88 +P + * +m + + +89 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +90 , +WkClbackTy + +ty +) { + +91 + gt_ +< + gPsit +< + gT +>*>( + gthis +)-> +SWk +( + +92 +m +, +back +, +ty +); + +96 + gme +< +tyme + + gT +> + +97 +ass + + gGlob + : +public + +v8 +:: +UniquePsit +< +T +> { + +98 +public +: + +99 +le + +Glob +(: +v8 +:: +UniquePsit +< +T +>() {} + +101 +me +< +tyme + +S +> +le + +Glob +( +v8 +:: +Lol + +th +) : + +102 +v8 +:: +UniquePsit +< +T +>(v8:: +Isީe +:: +GCut +(), + gth +) {} + +104 + gme +< +tyme + + gS +> + +105 +le + + +106 +Glob +(cڡ +v8 +:: +PsitBa +< +S +> & +th +) : + +107 +v8 +:: +UniquePsit +< +S +>(v8:: +Isީe +:: +GCut +(), + gth +) {} + +109 +le +  +Ret +({ + gv8 +:: +PsitBa +< +T +>::Reset(); } + +111 + gme + < +tyme + + gS +> + +112 +le +  +Ret +(cڡ +v8 +:: +Lol +< +S +> & +h +) { + +113 +v8 +:: +PsitBa +< +T +>:: +Ret +(v8:: +Isީe +:: +GCut +(), +h +); + +116 + gme + < +tyme + + gS +> + +117 +le +  +Ret +(cڡ +v8 +:: +PsitBa +< +S +> & +h +) { + +118 +v8 +:: +PsitBa +< +T +>:: +Ret +(v8:: +Isީe +:: +GCut +(), +h +); + +121 + gme +< +tyme + + gP +> + +122 +le +  +SWk +( + +123 +P + * +m + + +124 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +125 , +WkClbackTy + +ty +) { + +126 + gt_ +< + gPsit +< + gT +>*>( + gthis +)-> +SWk +( + +127 +m +, +back +, +ty +); + + @interface/node_modules/nan/nan_persistent_pre_12_inl.h + +9 #ide +NAN_PERSISTENT_PRE_12_INL_H_ + + +10  + #NAN_PERSISTENT_PRE_12_INL_H_ + + + ) + +12 + gme +< +tyme + + gT +> + +13 as + cPsitBa + { + +14 + mv8 +:: +Psit +< +T +> +rsit +; + +15 + mme +< +tyme + + mU +> + +16 +nd + + mv8 +:: +Lol +< +U +> +New +(cڡ +PsitBa + & +p +); + +17 + mme +< +tyme + + mU +,ym + mM +> + +18 +nd + + mv8 +:: +Lol +< +U +> +New +(cڡ +Psit + & +p +); + +19 + mme +< +tyme + + mU +> + +20 +nd + + mv8 +:: +Lol +< +U +> +New +(cڡ +Glob + & +p +); + +21 + mme +< +tyme + + mS +> +nd + +ass + + mRuVue +; + +23 + mpublic +: + +24 +le + + $PsitBa +() : + +25 + $rsit +() {} + +27 +le +  + $Ret +() { + +28 +rsit +. + `Dio +(); + +29 +rsit +. + `Cˬ +(); + +30 + } +} + +32 + gme +< +tyme + + gS +> + +33 +le +  +Ret +(cڡ +v8 +:: +Lol +< +S +> & +h +) { + +34 +TYPE_CHECK +( +T +, +S +); + +36 i(! + grsit +. +IsEmy +()) { + +37 + grsit +. +Dio +(); + +40 i( + gh +. +IsEmy +()) { + +41 + grsit +. +Cˬ +(); + +43 + grsit + = +v8 +:: +Psit +< +T +>:: +New +( +h +); + +47 + gme +< +tyme + + gS +> + +48 +le +  +Ret +(cڡ +PsitBa +< +S +> & +h +) { + +49 +TYPE_CHECK +( +T +, +S +); + +51 i(! + grsit +. +IsEmy +()) { + +52 + grsit +. +Dio +(); + +55 i( + gh +. +IsEmy +()) { + +56 + grsit +. +Cˬ +(); + +58 + grsit + = +v8 +:: +Psit +< +T +>:: +New +( +h +. +rsit +); + +62 +le + +bo + + $IsEmy +(cڡ {  +rsit +. + `IsEmy +(); + } +} + +64 +le +  + $Emy +({ +rsit +. + `Cˬ +(); + } +} + +66 + gme +< +tyme + + gS +> + +67 +le + +bo + + gݔ +==(cڡ +PsitBa +< +S +> & +th +) const { + +68  +this +-> +rsit + = +th +.persistent; + +71 + gme +< +tyme + + gS +> + +72 +le + +bo + + gݔ +==(cڡ +v8 +:: +Lol +< +S +> & +th +) const { + +73  +this +-> +rsit + = +th +; + +76 + gme +< +tyme + + gS +> + +77 +le + +bo + + gݔ +!=(cڡ +PsitBa +< +S +> & +th +) const { + +78  ! +ݔ +==( +th +); + +81 + gme +< +tyme + + gS +> + +82 +le + +bo + + gݔ +!=(cڡ +v8 +:: +Lol +< +S +> & +th +) const { + +83  ! +ݔ +==( +th +); + +86 + gme +< +tyme + + gP +> + +87 +le +  +SWk +( + +88 +P + * +m + + +89 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +90 , +WkClbackTy + +ty +); + +92 +le +  + $CˬWk +({ +rsit +. + `CˬWk +(); + } +} + +94 +le +  + $MkInddt +({ +rsit +. + `MkInddt +(); + } +} + +96 +le + +bo + + $IsInddt +(cڡ {  +rsit +. + `IsInddt +(); + } +} + +98 +le + +bo + + $IsNrDth +(cڡ {  +rsit +. + `IsNrDth +(); + } +} + +100 +le + +bo + + $IsWk +(cڡ {  +rsit +. + `IsWk +(); + } +} + +102 + give +: + +103 +le + +exic + +PsitBa +( +v8 +:: +Psit +< +T +> +th +) : + +104 + $rsit +( +th +{ + } +} + +105 +le + +exic + + $PsitBa +( +T + * +v +: + $rsit +( +v +{ + } +} + +106 +me +< +tyme + +S +,ym + gM +> +nd + +ass + + gPsit +; + +107 + gme +< +tyme + + gS +> +nd + +ass + + gGlob +; + +108 +nd + +ass + + gObjeWp +; + +111 + gme +< +tyme + + gT +> + +112 as + cNCyabPsitTs + { + +113 + mpublic +: + +114  +Psit +< + tT +, + tNCyabPsitTs + > + +115 + tNCyabPsit +; + +116 cڡ +bo + + mkRetInDeru + = +l +; + +117 + mme +< +tyme + + mS +,ym + mM +> + +118 +le +  +Cy +(cڡ +Psit +< +S +, +M +> & +sour +, + +119 +NCyabPsit + * +de +) { + +120 + mUncompab +< + mv8 +:: +Obje +>(); + +123 + gme +< +tyme + + gO +> +le +  + $Uncompab +() { + +124 + `TYPE_CHECK +( +O +, +v8 +:: +Primive +); + +125 + } +} + +128 + gme +< +tyme + + gT +> + +129  + sCyabPsitTs + { + +130  + mPsit +< + tT +, + tCyabPsitTs + > + tCyabPsit +; + +131 cڡ +bo + + mkRetInDeru + = +ue +; + +132 + mme +< +tyme + + mS +,ym + mM +> + +133  +le +  +Cy +(cڡ +Psit +< +S +, +M +> & +sour +, + +134 +CyabPsit + * +de +) {} + +137 + gme +< +tyme + + gT +,ym + gM +> +ass + + gPsit + : + +138 +public + +PsitBa +< +T +> { + +139 +public +: + +140 +le + +Psit +() {} + +142 +me +< +tyme + +S +> +le + +Psit +( +v8 +:: +Hd + +th +) + +143 : +PsitBa +< +T +>( +v8 +:: +Psit +:: +New +( +th +)) { + +144 +TYPE_CHECK +( +T +, +S +); + +147 +le + +Psit +(cڡ Psi& +th +: +PsitBa +< +T +>() { + +148 +Cy +( +th +); + +151 + gme +< +tyme + + gS +,ym + gM2 +> + +152 +le + +Psit +(cڡ Psit< +S +, +M2 +> & +th +) : + +153 +PsitBa +< +T +>() { + +154 +Cy +( +th +); + +157 +le + + gPsit + & + gݔ +=(cڡ +Psit + & +th +) { + +158 +Cy +( +th +); + +159  * + gthis +; + +162 + gme + < +ass + + gS +, cs + gM2 +> + +163 +le + + gPsit + & + gݔ +=(cڡ +Psit +< +S +, + gM2 +> & + gth +) { + +164 +Cy +( +th +); + +165  * + gthis +; + +168 + gle + ~ +Psit +() { + +169 i( + gM +:: +kRetInDeru + +this +-> +Ret +(); + +172 + give +: + +173 +le + +T + * +ݔ +*(cڡ {  * +PsitBa +:: +rsit +; } + +175 + gme +< +tyme + + gS +,ym + gM2 +> + +176 +le +  +Cy +(cڡ +Psit +< +S +, +M2 +> & +th +) { + +177 +TYPE_CHECK +( +T +, +S +); + +179 + gthis +-> +Ret +(); + +181 i(! + gth +. +IsEmy +()) { + +182 + gthis +-> + grsit + = +v8 +:: +Psit +< +T +>:: +New +( +th +. +rsit +); + +183 + gM +:: +Cy +( +th +, +this +); + +188 + gme +< +tyme + + gT +> + +189 +ass + + gGlob + : +public + +PsitBa +< +T +> { + +190  + sRVue + { + +191 +le + +exic + +RVue +( +Glob +* +obj +: +obje +(obj) {} + +192 +Glob +* +obje +; + +195 + gpublic +: + +196 +le + +Glob +(: +PsitBa +< +T +>(0) { } + +198 +me + < +tyme + +S +> + +199 +le + +Glob +( +v8 +:: +Lol +< +S +> +th +) + +200 : +PsitBa +< +T +>( +v8 +:: +Psit +:: +New +( +th +)) { + +201 +TYPE_CHECK +( +T +, +S +); + +204 + gme + < +tyme + + gS +> + +205 +le + +Glob +(cڡ +PsitBa +< +S +> & +th +) + +206 : +PsitBa +< +T +>( +th +) { + +207 +TYPE_CHECK +( +T +, +S +); + +212 +le + +Glob +( +RVue + +rvue +) + +213 : +PsitBa +< +T +>( +rvue +. +obje +-> +rsit +) { + +214 +rvue +. +obje +-> +Ret +(); + +216 + gle + ~ +Glob +({ + gthis +-> +Ret +(); } + +220 + gme +< +tyme + + gS +> + +221 +le + + gGlob + & + gݔ +=( +Glob +< +S +> +rhs +) { + +222 +TYPE_CHECK +( +T +, +S +); + +223 + gthis +-> +Ret +( +rhs +. +rsit +); + +224 + grhs +. +Ret +(); + +225  * + gthis +; + +230 +le + +ݔ + +RVue +({  RVue( +this +); } + +234 +Glob + +Pass +({  Glob( +RVue +( +this +)); } + +236 + give +: + +237 +Glob +(Global &); + +238  + gݔ +=( +Glob + &); + +239 + gme +< +tyme + + gS +> +nd + +ass + + gRuVue +; + + @interface/node_modules/nan/nan_private.h + +9 #ide +NAN_PRIVATE_H_ + + +10  + #NAN_PRIVATE_H_ + + + ) + +12 +le + + gMaybe +< + gbo +> + +13 +HasPrive +( +v8 +:: +Lol + +obje +, v8::Lol +key +) { + +14 +HdSce + +sce +; + +15 #i +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION + + +16 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +17 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +18 + gv8 +:: +Lol +< +v8 +:: +Prive +> +ive_key + = v8::Prive:: +FApi +( +isީe +, +key +); + +19  + gobje +-> +HasPrive +( +cڋxt +, +ive_key +); + +21  +Ju +(! +obje +-> +GHiddVue +( +key +). +IsEmy +()); + +25 +le + + gMaybeLol +< + gv8 +:: +Vue +> + +26 +GPrive +( +v8 +:: +Lol + +obje +, v8::Lol +key +) { + +27 #i +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION + + +28 +v8 +:: +Isީe + * +isީe + = v8::Isީe:: +GCut +(); + +29 + gv8 +:: +EsbHdSce + +sce +( +isީe +); + +30 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +31 + gv8 +:: +Lol +< +v8 +:: +Prive +> +ive_key + = v8::Prive:: +FApi +( +isީe +, +key +); + +32 + gv8 +:: +MaybeLol +< +v8 +:: +Vue +> +v + = +obje +-> +GPrive +( +cڋxt +, +ive_key +); + +33  + gsce +. +Es +( +v +. +ToLolChecked +()); + +35 +EsbHdSce + + gsce +; + +36 + gv8 +:: +Lol +< +v8 +:: +Vue +> +v + = +obje +-> +GHiddVue +( +key +); + +37 i( + gv +. +IsEmy +()) { + +38 + gv + = +Undefed +(); + +40  + gsce +. +Es +( +v +); + +44 +le + + gMaybe +< + gbo +> +SPrive +( + +45 +v8 +:: +Lol + +obje +, + +46 +v8 +:: +Lol + +key +, + +47 +v8 +:: +Lol + +vue +) { + +48 #i +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION + + +49 +HdSce + +sce +; + +50 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +51 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +52 + gv8 +:: +Lol +< +v8 +:: +Prive +> +ive_key + = v8::Prive:: +FApi +( +isީe +, +key +); + +53  + gobje +-> +SPrive +( +cڋxt +, +ive_key +, +vue +); + +55  +Ju +( +obje +-> +SHiddVue +( +key +, +vue +)); + +59 +le + + gMaybe +< + gbo +> +DePrive +( + +60 +v8 +:: +Lol + +obje +, + +61 +v8 +:: +Lol + +key +) { + +62 #i +NODE_MODULE_VERSION + > +NODE_6_0_MODULE_VERSION + + +63 +HdSce + +sce +; + +64 + gv8 +:: +Isީe + * +isީe + = +v8 +::Isީe:: +GCut +(); + +65 + gv8 +:: +Lol +< +v8 +:: +Prive +> +ive_key + = v8::Prive:: +FApi +( +isީe +, +key +); + +66  + gobje +-> +DePrive +( +isީe +-> +GCutCڋxt +(), +ive_key +); + +68  +Ju +( +obje +-> +DeHiddVue +( +key +)); + + @interface/node_modules/nan/nan_string_bytes.h + +22 #ide +NAN_STRING_BYTES_H_ + + +23  + #NAN_STRING_BYTES_H_ + + + ) + +27 +mea + + gimp + { + +29 +usg + + gv8 +:: +Lol +; + +30 +usg + + gv8 +:: +Obje +; + +31 +usg + + gv8 +:: +Sg +; + +32 +usg + + gv8 +:: +Vue +; + +37  + #ba64_coded_size +( +size +((siz+ 2 - ((siz+ 2% 3)/ 3 * 4) + + ) + +43  +bo + +cڏs_n_ascii_ow +(cڡ * +buf +, +size_t + +n +) { + +44  +size_t + + gi + = 0; i < + gn +; ++i) { + +45 i( + gbuf +[ +i +] & 0x80 + gue +; + +47  + gl +; + +51  +bo + +cڏs_n_ascii +(cڡ * +c +, +size_t + +n +) { + +52 i( + gn + < 16) { + +53  +cڏs_n_ascii_ow +( +c +, +n +); + +56 cڡ  + gbys_r_wd + = (*); + +57 cڡ  + gign_mask + = +bys_r_wd + - 1; + +58 cڡ  + guligd + = +t_ +< +u_t +>( +c +& +ign_mask +; + +60 i( + guligd + > 0) { + +61 cڡ  + gn + = +bys_r_wd + - +uligd +; + +62 i( +cڏs_n_ascii_ow +( +c +, +n +) + gue +; + +63 + gc + + +n +; + +64 + gn + - +n +; + +68 #i +defed +( +__x86_64__ +|| defed( +_WIN64 +) + +69 cڡ +u_t + + gmask + = 0x8080808080808080ll; + +71 cڡ +u_t + + gmask + = 0x80808080l; + +74 cڡ +u_t +* + gcw + = +t_ +( +c +); + +76  +size_t + + gi + = 0, + gn + = +n + / +bys_r_wd +; i <; ++i) { + +77 i( + gcw +[ +i +] & + gmask + + gue +; + +80 cڡ  + gmad + = +n + & +ign_mask +; + +81 i( + gmad + > 0) { + +82 cڡ +size_t + + gofft + = +n + - +mad +; + +83 i( +cڏs_n_ascii_ow +( +c + + +offt +, +mad +) + gue +; + +86  + gl +; + +90  +f_ascii_ow +(cڡ * +c +, * +d +, +size_t + +n +) { + +91  +size_t + + gi + = 0; i < + gn +; ++i) { + +92 + gd +[ +i +] = +c +[i] & 0x7f; + +97  +f_ascii +(cڡ * +c +, * +d +, +size_t + +n +) { + +98 i( + gn + < 16) { + +99 +f_ascii_ow +( +c +, +d +, +n +); + +103 cڡ  + gbys_r_wd + = (*); + +104 cڡ  + gign_mask + = +bys_r_wd + - 1; + +105 cڡ  + gc_ulign + = +t_ +< +u_t +>( +c +& +ign_mask +; + +106 cڡ  + gd_ulign + = +t_ +< +u_t +>( +d +& +ign_mask +; + +108 i( + gc_ulign + > 0) { + +109 i( + gc_ulign + = +d_ulign +) { + +110 cڡ  +ulign + = +bys_r_wd + - +c_ulign +; + +111 +f_ascii_ow +( +c +, +d +, +ulign +); + +112 + gc + + +ulign +; + +113 + gd + + +ulign +; + +114 + gn + - +c_ulign +; + +116 +f_ascii_ow +( +c +, +d +, +n +); + +121 #i +defed +( +__x86_64__ +|| defed( +_WIN64 +) + +122 cڡ +u_t + + gmask + = ~0x8080808080808080ll; + +124 cڡ +u_t + + gmask + = ~0x80808080l; + +127 cڡ +u_t +* + gcw + = +t_ +( +c +); + +128 +u_t +* + gdw + = +t_ +( +d +); + +130  +size_t + + gi + = 0, + gn + = +n + / +bys_r_wd +; i <; ++i) { + +131 + gdw +[ +i +] = +cw +[i] & +mask +; + +134 cڡ  + gmad + = +n + & +ign_mask +; + +135 i( + gmad + > 0) { + +136 cڡ +size_t + + gofft + = +n + - +mad +; + +137 +f_ascii_ow +( +c + + +offt +, +d + + offt, +mad +); + +142  +size_t + +ba64_code +(cڡ * +c +, + +143 +size_t + + +, + +144 * +d +, + +145 +size_t + +dn +) { + +147 +as +( +dn + > +ba64_coded_size +( + +) && + +150 + gdn + = +ba64_coded_size +( + +); + +152  + ga +; + +153  + gb +; + +154  + gc +; + +155  + gi +; + +156  + gk +; + +157  + gn +; + +159 cڡ  + gb +[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + +163 + gi + = 0; + +164 + gk + = 0; + +165 + gn + = + + / 3 * 3; + +167  + gi + < + gn +) { + +168 + ga + = +c +[ +i + + 0] & 0xff; + +169 + gb + = +c +[ +i + + 1] & 0xff; + +170 + gc + = +c +[ +i + + 2] & 0xff; + +172 + gd +[ +k + + 0] = +b +[ +a + >> 2]; + +173 + gd +[ +k + + 1] = +b +[(( +a + & 3<< 4| ( +b + >> 4)]; + +174 + gd +[ +k + + 2] = +b +[(( +b + & 0x0f<< 2| ( +c + >> 6)]; + +175 + gd +[ +k + + 3] = +b +[ +c + & 0x3f]; + +177 + gi + += 3; + +178 + gk + += 4; + +181 i( + gn + ! + +) { + +182  + + - +n +) { + +184 +a + = +c +[ +i + + 0] & 0xff; + +185 + gd +[ +k + + 0] = +b +[ +a + >> 2]; + +186 + gd +[ +k + + 1] = +b +[( +a + & 3) << 4]; + +187 + gd +[ +k + + 2] = '='; + +188 + gd +[ +k + + 3] = '='; + +192 +a + = +c +[ +i + + 0] & 0xff; + +193 + gb + = +c +[ +i + + 1] & 0xff; + +194 + gd +[ +k + + 0] = +b +[ +a + >> 2]; + +195 + gd +[ +k + + 1] = +b +[(( +a + & 3<< 4| ( +b + >> 4)]; + +196 + gd +[ +k + + 2] = +b +[( +b + & 0x0f) << 2]; + +197 + gd +[ +k + + 3] = '='; + +202  + gdn +; + +206  +size_t + +hex_code +(cڡ * +c +, size_ + +, * +d +, size_ +dn +) { + +208 +as +( +dn + > + + * 2 && + +211 + gdn + = + + * 2; + +212  +ut32_t + + gi + = 0, + gk + = 0; k < + gdn +; i += 1, k += 2) { + +213 cڡ  +hex +[] = "0123456789abcdef"; + +214 +ut8_t + + gv + = +ic_ +( +c +[ +i +]); + +215 + gd +[ +k + + 0] = +hex +[ +v + >> 4]; + +216 + gd +[ +k + + 1] = +hex +[ +v + & 15]; + +219  + gdn +; + +224  + gLol +< + gVue +> +Encode +(cڡ * +buf +, + +225 +size_t + +bu +, + +226 +Encodg + +codg +) { + +227 +as +( +bu + < +node +:: +Bufr +:: +kMaxLgth +); + +228 i(! + gbu + && + gcodg + ! +BUFFER +) + +229  +New +(""). +ToLolChecked +(); + +231 + gLol +< + gSg +> + gv +; + +232  + gcodg +) { + +233  + gBUFFER +: + +234  +CyBufr +( +buf +, +bu +). +ToLolChecked +(); + +236  + gASCII +: + +237 i( +cڏs_n_ascii +( +buf +, +bu +)) { + +238 * + gout + = +w + [ +bu +]; + +239 +f_ascii +( +buf +, +out +, +bu +); + +240 + gv + = +New +< +Sg +>( +out +, + gbu +). +ToLolChecked +(); + +241 + gde +[] + gout +; + +243 + gv + = +New +< +Sg +>( +buf +, + gbu +). +ToLolChecked +(); + +247  + gUTF8 +: + +248 +v + = +New +< +Sg +>( +buf +, + gbu +). +ToLolChecked +(); + +251  + gBINARY +: { + +253 cڡ * +cbuf + = +t_ +( +buf +); + +254 +ut16_t + * + gtwobybuf + = +w + ut16_t[ +bu +]; + +255  +size_t + + gi + = 0; i < + gbu +; i++) { + +257 + gtwobybuf +[ +i +] = +cbuf +[i]; + +259 + gv + = +New +< +Sg +>( +twobybuf +, + gbu +). +ToLolChecked +(); + +260 + gde +[] + gtwobybuf +; + +264  + gBASE64 +: { + +265 +size_t + +dn + = +ba64_coded_size +( +bu +); + +266 * + gd + = +w + [ +dn +]; + +268 +size_t + + gwrn + = +ba64_code +( +buf +, +bu +, +d +, +dn +); + +269 +as +( +wrn + = +dn +); + +271 + gv + = +New +< +Sg +>( +d +, + gdn +). +ToLolChecked +(); + +272 + gde +[] + gd +; + +276  + gUCS2 +: { + +277 cڡ +ut16_t +* +da + = +t_ +( +buf +); + +278 + gv + = +New +< +Sg +>( +da +, + gbu + / 2). +ToLolChecked +(); + +282  + gHEX +: { + +283 +size_t + +dn + = +bu + * 2; + +284 * + gd + = +w + [ +dn +]; + +285 +size_t + + gwrn + = +hex_code +( +buf +, +bu +, +d +, +dn +); + +286 +as +( +wrn + = +dn +); + +288 + gv + = +New +< +Sg +>( +d +, + gdn +). +ToLolChecked +(); + +289 + gde +[] + gd +; + +294 +as +(0 && "unknownncoding"); + +298  + gv +; + +301 #unde +ba64_coded_size + + + @interface/node_modules/nan/nan_typedarray_contents.h + +9 #ide +NAN_TYPEDARRAY_CONTENTS_H_ + + +10  + #NAN_TYPEDARRAY_CONTENTS_H_ + + + ) + +12 + gme +< +tyme + + gT +> + +13 as + cTydAayCڋs + { + +14 + mpublic +: + +15 +le + +exic + +TydAayCڋs +( +v8 +:: +Lol + +om +) : + +16 +ngth_ +(0), + $da_ +( +NULL +) { + +17 +HdSce + +sce +; + +19 +size_t + +ngth + = 0; + +20 * +da + = +NULL +; + +22 #i + `defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +23 ( +V8_MAJOR_VERSION + =4 && + `defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +25 i( +om +-> + `IsAayBufrVw +()) { + +26 +v8 +:: +Lol + +y + = + +27 +v8 +:: +Lol +:: + `Ca +( +om +); + +29 cڡ +size_t + +by_ngth + = +y +-> + `ByLgth +(); + +30 cڡ +rdiff_t + +by_offt + = +y +-> + `ByOfft +(); + +31 +v8 +:: +Lol + +bufr + = +y +-> + `Bufr +(); + +33 +ngth + = +by_ngth + / ( +T +); + +36 #i( +V8_MAJOR_VERSION + >= 8) + +37 +da + = +ic_ +<*>( +bufr +-> + `GBackgSte +()-> + `Da +()+ +by_offt +; + +39 +da + = +ic_ +<*>( +bufr +-> + `GCڋs +(). + `Da +()+ +by_offt +; + +45 i( +om +-> + `IsObje +(&& !om-> + `IsNu +()) { + +46 +v8 +:: +Lol + +y + = v8::Lol:: + `Ca +( +om +); + +48 +MaybeLol +< +v8 +:: +Vue +> +bufr + = + `G +( +y +, + +49 +New +< +v8 +:: +Sg +>("bufr"). + `ToLolChecked +()); + +50 +MaybeLol +< +v8 +:: +Vue +> +by_ngth + = + `G +( +y +, + +51 +New +< +v8 +:: +Sg +>("byLgth"). + `ToLolChecked +()); + +52 +MaybeLol +< +v8 +:: +Vue +> +by_offt + = + `G +( +y +, + +53 +New +< +v8 +:: +Sg +>("byOfft"). + `ToLolChecked +()); + +55 i(! +bufr +. + `IsEmy +() && + +56 ! +by_ngth +. + `IsEmy +(&& by_ngth. + `ToLolChecked +()-> + `IsUt32 +() && + +57 ! +by_offt +. + `IsEmy +(&& by_offt. + `ToLolChecked +()-> + `IsUt32 +()) { + +58 +da + = +y +-> + `GIndexedPrݔtsExAayDa +(); + +59 if( +da +) { + +60 +ngth + = +by_ngth +. + `ToLolChecked +()-> + `Ut32Vue +(/ ( +T +); + +67 #i + `defed +( +_MSC_VER +&& _MSC_VER >1900 || +__lulus + >= 201103L + +68 + `as +( +t_ +< +u_t +>( +da +% + `ignof + ( +T +) == 0); + +69 #i + `defed +( +_MSC_VER +&& _MSC_VER >1600 || defed( +__GNUC__ +) + +70 + `as +( +t_ +< +u_t +>( +da +% + `__ignof +( +T +) == 0); + +72 + `as +( +t_ +< +u_t +>( +da +%  ( +T +) == 0); + +75 +ngth_ + = +ngth +; + +76 +da_ + = +ic_ +< +T +*>( +da +); + +79 +le + +size_t + + $ngth +(cڡ {  +ngth_ +; + } +} + +80 +le + +T +* + gݔ +*({  + gda_ +; } + +81 +le + cڡ +T +* + gݔ +*(cڡ {  + gda_ +; } + +83 + give +: + +84 + $NAN_DISALLOW_ASSIGN_COPY_MOVE +( +TydAayCڋs +) + +87 * +ݔ + + `w +( +size_t + +size +); + +88  +ݔ + + $de +(*, +size_t +) { + +89 + `abt +(); + +90 + } +} + +92 +size_t + + gngth_ +; + +93 +T +* + gda_ +; + + @interface/node_modules/nan/nan_weak.h + +9 #ide +NAN_WEAK_H_ + + +10  + #NAN_WEAK_H_ + + + ) + +12 cڡ  + gkIlFldsInWkClback + = 2; + +13 cڡ  + gkNoIlFldIndex + = -1; + +15 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +16 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +17  + #NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + \ + +18 +v8 +:: +WkClbackInfo + > cڡ& + + ) + +19  + #NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + \ + +20 +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + + + ) + +21  + #NAN_WEAK_PARAMETER_CALLBACK_SIG_ + +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + + + ) + +22  + #NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + + + ) + +23 #i +NODE_MODULE_VERSION + > +IOJS_1_1_MODULE_VERSION + + +24  + #NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + \ + +25 +v8 +:: +PhtomClbackDa +< +WkClbackInfo +< +T +> > cڡ& + + ) + +26  + #NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + \ + +27 +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + + + ) + +28  + #NAN_WEAK_PARAMETER_CALLBACK_SIG_ + +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + + + ) + +29  + #NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + + + ) + +30 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +31  + #NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + \ + +32 +v8 +:: +PhtomClbackDa +< +WkClbackInfo +< +T +> > cڡ& + + ) + +33  + #NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + \ + +34 +v8 +:: +IlFldsClbackDa +< +WkClbackInfo +< +T +>, > cڡ& + + ) + +35  + #NAN_WEAK_PARAMETER_CALLBACK_SIG_ + +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + + + ) + +36  + #NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + + + ) + +37 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +38  + #NAN_WEAK_CALLBACK_DATA_TYPE_ + \ + +39 +v8 +:: +WkClbackDa +< +S +, +WkClbackInfo +< +T +> > cڡ& + + ) + +40  + #NAN_WEAK_CALLBACK_SIG_ + +NAN_WEAK_CALLBACK_DATA_TYPE_ + + + ) + +42  + #NAN_WEAK_CALLBACK_DATA_TYPE_ + * + + ) + +43  + #NAN_WEAK_CALLBACK_SIG_ + \ + +44 +v8 +:: +Psit +, +NAN_WEAK_CALLBACK_DATA_TYPE_ + + + ) + +47 + gme +< +tyme + + gT +> + +48 as + cWkClbackInfo + { + +49 + mpublic +: + +50 (* + tClback +)(cڡ + tWkClbackInfo +< + tT +>& + tda +); + +51 + `WkClbackInfo +( + +52 +Psit +< +v8 +:: +Vue +> * +rsit + + +53 , +Clback + +back + + +54 , * +m + + +55 , * +fld1 + = 0 + +56 , * +fld2 + = 0) : + +57 + `back_ +( +back +), + `isީe_ +(0), + $m_ +( +m +) { + +58 +d +:: + `memy +(& +rsit_ +, +rsit +,  ( +v8 +:: +Psit +)); + +59 +_flds_ +[0] = +fld1 +; + +60 +_flds_ +[1] = +fld2 +; + +62 +le + +v8 +:: +Isީe + * + $GIsީe +(cڡ {  +isީe_ +; + } +} + +63 +le + +T + * + $GPam +(cڡ {  +ic_ +< +T +*>( +m_ +); + } +} + +64 +le + * + $GIlFld +( +dex +) const { + +65 + `as +(( +dex + == 0 || index == 1) && "internal field index out of bounds"); + +66 i( +dex + == 0) { + +67  +_flds_ +[0]; + +69  +_flds_ +[1]; + +71 + } +} + +73 + give +: + +74 + $NAN_DISALLOW_ASSIGN_COPY_MOVE +( +WkClbackInfo +) + +75 +Clback + +back_ +; + +76 +v8 +:: +Isީe + * +isީe_ +; + +77 * +m_ +; + +78 * +_flds_ +[ +kIlFldsInWkClback +]; + +79 +v8 +:: +Psit + +rsit_ +; + +80 +me +< +tyme + +S +,ym +M +> +nd + +ass + +Psit +; + +81 +me +< +tyme + +S +> +nd + +ass + +PsitBa +; + +82 #i +NODE_MODULE_VERSION + < +NODE_0_12_MODULE_VERSION + + +83 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +84 +me +< +tyme + +S +> + +85  + `voke +( +NAN_WEAK_CALLBACK_SIG_ + +da +); + +86 +me +< +tyme + +S +> + +87  +WkClbackInfo + * + `unwp +( +NAN_WEAK_CALLBACK_DATA_TYPE_ + +da +); + +89  + `voke +( +NAN_WEAK_CALLBACK_SIG_ + +da +); + +90  +WkClbackInfo + * + `unwp +( +NAN_WEAK_CALLBACK_DATA_TYPE_ + +da +); + +93 #i + `defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +94 ( +V8_MAJOR_VERSION + =4 && + `defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +95 +me +< +bo + +isFPass +> + +96  + `vokam +( +NAN_WEAK_PARAMETER_CALLBACK_SIG_ + +da +); + +97 +me +< +bo + +isFPass +> + +98  + `vokwofld +( +NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + +da +); + +100  + `vokam +( +NAN_WEAK_PARAMETER_CALLBACK_SIG_ + +da +); + +101  + `vokwofld +( +NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + +da +); + +103  +WkClbackInfo + * + `unwam +( + +104 +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + +da +); + +105  +WkClbackInfo + * + `unwwofld +( + +106 +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + +da +); + +108 + } +}; + +111 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +112 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +114 +me +< +tyme + +T +> + +115 +me +< +bo + +isFPass +> + +117 +WkClbackInfo +< +T +>:: + $vokam +( +NAN_WEAK_PARAMETER_CALLBACK_SIG_ + +da +) { + +118 +WkClbackInfo +< +T +> * +cbfo + = + `unwam +( +da +); + +119 i( +isFPass +) { + +120 +cbfo +-> +rsit_ +. + `Ret +(); + +121 +da +. + `SSecdPassClback +( +vokam +< +l +>); + +123 +cbfo +-> + `back_ +(*cbinfo); + +124 +de + +cbfo +; + +126 + } +} + +128 + gme +< +tyme + + gT +> + +129 + gme +< +bo + + gisFPass +> + +131 + gWkClbackInfo +< + gT +>:: + $vokwofld +( +NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + +da +) { + +132 +WkClbackInfo +< +T +> * +cbfo + = + `unwwofld +( +da +); + +133 i( +isFPass +) { + +134 +cbfo +-> +rsit_ +. + `Ret +(); + +135 +da +. + `SSecdPassClback +( +vokwofld +< +l +>); + +137 +cbfo +-> + `back_ +(*cbinfo); + +138 +de + +cbfo +; + +140 + } +} + +142 + gme +< +tyme + + gT +> + +143 + gWkClbackInfo +< + gT +> *WkClbackInfo:: + $unwam +( + +144 +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + +da +) { + +145 +WkClbackInfo +< +T +> * +cbfo + = + +146 +ic_ +< +WkClbackInfo +< +T +>*>( +da +. + `GPam +()); + +147 +cbfo +-> +isީe_ + = +da +. + `GIsީe +(); + +148  +cbfo +; + +149 + } +} + +151 + gme +< +tyme + + gT +> + +152 + gWkClbackInfo +< + gT +> *WkClbackInfo:: + $unwwofld +( + +153 +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + +da +) { + +154 +WkClbackInfo +< +T +> * +cbfo + = + +155 +ic_ +< +WkClbackInfo +< +T +>*>( +da +. + `GIlFld +(0)); + +156 +cbfo +-> +isީe_ + = +da +. + `GIsީe +(); + +157  +cbfo +; + +158 + } +} + +160 #unde +NAN_WEAK_PARAMETER_CALLBACK_SIG_ + + +161 #unde +NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + + +162 #unde +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + + +163 #unde +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + + +164 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +166 + gme +< +tyme + + gT +> + +168 + gWkClbackInfo +< + gT +>:: + $vokam +( +NAN_WEAK_PARAMETER_CALLBACK_SIG_ + +da +) { + +169 +WkClbackInfo +< +T +> * +cbfo + = + `unwam +( +da +); + +170 +cbfo +-> +rsit_ +. + `Ret +(); + +171 +cbfo +-> + `back_ +(*cbinfo); + +172 +de + +cbfo +; + +173 + } +} + +175 + gme +< +tyme + + gT +> + +177 + gWkClbackInfo +< + gT +>:: + $vokwofld +( +NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + +da +) { + +178 +WkClbackInfo +< +T +> * +cbfo + = + `unwwofld +( +da +); + +179 +cbfo +-> +rsit_ +. + `Ret +(); + +180 +cbfo +-> + `back_ +(*cbinfo); + +181 +de + +cbfo +; + +182 + } +} + +184 + gme +< +tyme + + gT +> + +185 + gWkClbackInfo +< + gT +> *WkClbackInfo:: + $unwam +( + +186 +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + +da +) { + +187 +WkClbackInfo +< +T +> * +cbfo + = + +188 +ic_ +< +WkClbackInfo +< +T +>*>( +da +. + `GPam +()); + +189 +cbfo +-> +isީe_ + = +da +. + `GIsީe +(); + +190  +cbfo +; + +191 + } +} + +193 + gme +< +tyme + + gT +> + +194 + gWkClbackInfo +< + gT +> *WkClbackInfo:: + $unwwofld +( + +195 +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + +da +) { + +196 +WkClbackInfo +< +T +> * +cbfo + = + +197 +ic_ +< +WkClbackInfo +< +T +>*>( +da +. + `GIlFld1 +()); + +198 +cbfo +-> +isީe_ + = +da +. + `GIsީe +(); + +199  +cbfo +; + +200 + } +} + +202 #unde +NAN_WEAK_PARAMETER_CALLBACK_SIG_ + + +203 #unde +NAN_WEAK_TWOFIELD_CALLBACK_SIG_ + + +204 #unde +NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ + + +205 #unde +NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ + + +206 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +208 + gme +< +tyme + + gT +> + +209 + gme +< +tyme + + gS +> + +210  + gWkClbackInfo +< + gT +>:: + $voke +( +NAN_WEAK_CALLBACK_SIG_ + +da +) { + +211 +WkClbackInfo +< +T +> * +cbfo + = + `unwp +( +da +); + +212 +cbfo +-> +rsit_ +. + `Ret +(); + +213 +cbfo +-> + `back_ +(*cbinfo); + +214 +de + +cbfo +; + +215 + } +} + +217 + gme +< +tyme + + gT +> + +218 + gme +< +tyme + + gS +> + +219 + gWkClbackInfo +< + gT +> *WkClbackInfo:: + $unwp +( + +220 +NAN_WEAK_CALLBACK_DATA_TYPE_ + +da +) { + +221 * +m + = +da +. + `GPam +(); + +222 +WkClbackInfo +< +T +> * +cbfo + = + +223 +ic_ +< +WkClbackInfo +< +T +>*>( +m +); + +224 +cbfo +-> +isީe_ + = +da +. + `GIsީe +(); + +225  +cbfo +; + +226 + } +} + +228 #unde +NAN_WEAK_CALLBACK_SIG_ + + +229 #unde +NAN_WEAK_CALLBACK_DATA_TYPE_ + + +232 + gme +< +tyme + + gT +> + +233  + gWkClbackInfo +< + gT +>:: + $voke +( +NAN_WEAK_CALLBACK_SIG_ + +da +) { + +234 +WkClbackInfo +< +T +> * +cbfo + = + `unwp +( +da +); + +235 +cbfo +-> +rsit_ +. + `Dio +(); + +236 +cbfo +-> +rsit_ +. + `Cˬ +(); + +237 +cbfo +-> + `back_ +(*cbinfo); + +238 +de + +cbfo +; + +239 + } +} + +241 + gme +< +tyme + + gT +> + +242 + gWkClbackInfo +< + gT +> *WkClbackInfo:: + $unwp +( + +243 +NAN_WEAK_CALLBACK_DATA_TYPE_ + +da +) { + +244 +WkClbackInfo +< +T +> * +cbfo + = + +245 +ic_ +< +WkClbackInfo +< +T +>*>( +da +); + +246 +cbfo +-> +isީe_ + = +v8 +:: +Isީe +:: + `GCut +(); + +247  +cbfo +; + +248 + } +} + +250 #unde +NAN_WEAK_CALLBACK_SIG_ + + +251 #unde +NAN_WEAK_CALLBACK_DATA_TYPE_ + + +254 #i +defed +( +V8_MAJOR_VERSION +) && (V8_MAJOR_VERSION > 4 || \ + +255 ( + gV8_MAJOR_VERSION + =4 && +defed +( +V8_MINOR_VERSION +) && V8_MINOR_VERSION >= 3)) + +256 +me +< +tyme + +T +,ym + gM +> + +257 + gme +< +tyme + + gP +> + +258 +le +  + gPsit +< + gT +, + gM +>:: +SWk +( + +259 +P + * +m + + +260 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +261 , +WkClbackTy + +ty +) { + +262 + gWkClbackInfo +< + gP +> * + gwcbd +; + +263 i( + gty + = +WkClbackTy +:: +kPam +) { + +264 +wcbd + = +w + +WkClbackInfo +< +P +>( + +265 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +266 , + gback + + +267 , + gm +); + +268 + gv8 +:: +PsitBa +< +T +>:: +SWk +( + +269 +wcbd + + +270 , +WkClbackInfo +< +P +>:: +me + +vokam +< +ue +> + +271 , +ty +); + +273 + gv8 +:: +Lol +< +v8 +:: +Vue +>* +lf_v +( +t_ +*>( +this +)); + +274 +as +((* +lf_v +)-> +IsObje +()); + +275 + gv8 +:: +Lol +< +v8 +:: +Obje +> +lf +((* +lf_v +). +As +()); + +276  + gcou + = +lf +-> +IlFldCou +(); + +277 * + g_flds +[ +kIlFldsInWkClback +] = {0, 0}; + +278  + gi + = 0; i < + gcou + && i < + gkIlFldsInWkClback +; i++) { + +279 + g_flds +[ +i +] = +lf +-> +GAligdPorFromIlFld +(i); + +281 + gwcbd + = +w + +WkClbackInfo +< +P +>( + +282 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +283 , + gback + + +285 , + g_flds +[0] + +286 , + g_flds +[1]); + +287 + glf +-> +SAligdPorInIlFld +(0, +wcbd +); + +288 + gv8 +:: +PsitBa +< +T +>:: +SWk +( + +289 +ic_ +< +WkClbackInfo +< +P +>*>(0) + +290 , +WkClbackInfo +< +P +>:: +me + +vokwofld +< +ue +> + +291 , +ty +); + +294 #i +NODE_MODULE_VERSION + > +IOJS_1_1_MODULE_VERSION + + +295 + gme +< +tyme + + gT +,ym + gM +> + +296 + gme +< +tyme + + gP +> + +297 +le +  + gPsit +< + gT +, + gM +>:: +SWk +( + +298 +P + * +m + + +299 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +300 , +WkClbackTy + +ty +) { + +301 + gWkClbackInfo +< + gP +> * + gwcbd +; + +302 i( + gty + = +WkClbackTy +:: +kPam +) { + +303 +wcbd + = +w + +WkClbackInfo +< +P +>( + +304 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +305 , + gback + + +306 , + gm +); + +307 + gv8 +:: +PsitBa +< +T +>:: +SPhtom +( + +308 +wcbd + + +309 , +WkClbackInfo +< +P +>:: +vokam +); + +311 + gv8 +:: +Lol +< +v8 +:: +Vue +>* +lf_v +( +t_ +*>( +this +)); + +312 +as +((* +lf_v +)-> +IsObje +()); + +313 + gv8 +:: +Lol +< +v8 +:: +Obje +> +lf +((* +lf_v +). +As +()); + +314  + gcou + = +lf +-> +IlFldCou +(); + +315 * + g_flds +[ +kIlFldsInWkClback +] = {0, 0}; + +316  + gi + = 0; i < + gcou + && i < + gkIlFldsInWkClback +; i++) { + +317 + g_flds +[ +i +] = +lf +-> +GAligdPorFromIlFld +(i); + +319 + gwcbd + = +w + +WkClbackInfo +< +P +>( + +320 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +321 , + gback + + +323 , + g_flds +[0] + +324 , + g_flds +[1]); + +325 + glf +-> +SAligdPorInIlFld +(0, +wcbd +); + +326 + gv8 +:: +PsitBa +< +T +>:: +SPhtom +( + +327 +ic_ +< +WkClbackInfo +< +P +>*>(0) + +328 , +WkClbackInfo +< +P +>:: +vokwofld + + +330 , +cou + > 1 ? 1 : +kNoIlFldIndex +); + +333 #i +NODE_MODULE_VERSION + > +NODE_0_12_MODULE_VERSION + + +334 + gme +< +tyme + + gT +,ym + gM +> + +335 + gme +< +tyme + + gP +> + +336 +le +  + gPsit +< + gT +, + gM +>:: +SWk +( + +337 +P + * +m + + +338 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +339 , +WkClbackTy + +ty +) { + +340 + gWkClbackInfo +< + gP +> * + gwcbd +; + +341 i( + gty + = +WkClbackTy +:: +kPam +) { + +342 +wcbd + = +w + +WkClbackInfo +< +P +>( + +343 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +344 , + gback + + +345 , + gm +); + +346 + gv8 +:: +PsitBa +< +T +>:: +SPhtom +( + +347 +wcbd + + +348 , +WkClbackInfo +< +P +>:: +vokam +); + +350 + gv8 +:: +Lol +< +v8 +:: +Vue +>* +lf_v +( +t_ +*>( +this +)); + +351 +as +((* +lf_v +)-> +IsObje +()); + +352 + gv8 +:: +Lol +< +v8 +:: +Obje +> +lf +((* +lf_v +). +As +()); + +353  + gcou + = +lf +-> +IlFldCou +(); + +354 * + g_flds +[ +kIlFldsInWkClback +] = {0, 0}; + +355  + gi + = 0; i < + gcou + && i < + gkIlFldsInWkClback +; i++) { + +356 + g_flds +[ +i +] = +lf +-> +GAligdPorFromIlFld +(i); + +358 + gwcbd + = +w + +WkClbackInfo +< +P +>( + +359 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +360 , + gback + + +362 , + g_flds +[0] + +363 , + g_flds +[1]); + +364 + glf +-> +SAligdPorInIlFld +(0, +wcbd +); + +365 + gv8 +:: +PsitBa +< +T +>:: +SPhtom +( + +366 +WkClbackInfo +< +P +>:: +vokwofld + + +368 , +cou + > 1 ? 1 : +kNoIlFldIndex +); + +371 #i +NODE_MODULE_VERSION + > +NODE_0_10_MODULE_VERSION + + +372 + gme +< +tyme + + gT +,ym + gM +> + +373 + gme +< +tyme + + gP +> + +374 +le +  + gPsit +< + gT +, + gM +>:: +SWk +( + +375 +P + * +m + + +376 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +377 , +WkClbackTy + +ty +) { + +378 + gWkClbackInfo +< + gP +> * + gwcbd +; + +379 i( + gty + = +WkClbackTy +:: +kPam +) { + +380 +wcbd + = +w + +WkClbackInfo +< +P +>( + +381 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +382 , + gback + + +383 , + gm +); + +384 + gv8 +:: +PsitBa +< +T +>:: +SWk +( +wcbd +, +WkClbackInfo +< +P +>:: +voke +); + +386 + gv8 +:: +Lol +< +v8 +:: +Vue +>* +lf_v +( +t_ +*>( +this +)); + +387 +as +((* +lf_v +)-> +IsObje +()); + +388 + gv8 +:: +Lol +< +v8 +:: +Obje +> +lf +((* +lf_v +). +As +()); + +389  + gcou + = +lf +-> +IlFldCou +(); + +390 * + g_flds +[ +kIlFldsInWkClback +] = {0, 0}; + +391  + gi + = 0; i < + gcou + && i < + gkIlFldsInWkClback +; i++) { + +392 + g_flds +[ +i +] = +lf +-> +GAligdPorFromIlFld +(i); + +394 + gwcbd + = +w + +WkClbackInfo +< +P +>( + +395 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +396 , + gback + + +398 , + g_flds +[0] + +399 , + g_flds +[1]); + +400 + gv8 +:: +PsitBa +< +T +>:: +SWk +( +wcbd +, +WkClbackInfo +< +P +>:: +voke +); + +404 + gme +< +tyme + + gT +> + +405 + gme +< +tyme + + gP +> + +406 +le +  + gPsitBa +< + gT +>:: +SWk +( + +407 +P + * +m + + +408 , +tyme + +WkClbackInfo +< +P +>:: +Clback + +back + + +409 , +WkClbackTy + +ty +) { + +410 + gWkClbackInfo +< + gP +> * + gwcbd +; + +411 i( + gty + = +WkClbackTy +:: +kPam +) { + +412 +wcbd + = +w + +WkClbackInfo +< +P +>( + +413 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +414 , + gback + + +415 , + gm +); + +416 + grsit +. +MakeWk +( +wcbd +, +WkClbackInfo +< +P +>:: +voke +); + +418 + gv8 +:: +Lol +< +v8 +:: +Vue +>* +lf_v +( +t_ +*>( +this +)); + +419 +as +((* +lf_v +)-> +IsObje +()); + +420 + gv8 +:: +Lol +< +v8 +:: +Obje +> +lf +((* +lf_v +). +As +()); + +421  + gcou + = +lf +-> +IlFldCou +(); + +422 * + g_flds +[ +kIlFldsInWkClback +] = {0, 0}; + +423  + gi + = 0; i < + gcou + && i < + gkIlFldsInWkClback +; i++) { + +424 + g_flds +[ +i +] = +lf +-> +GPorFromIlFld +(i); + +426 + gwcbd + = +w + +WkClbackInfo +< +P +>( + +427 +t_ +< +Psit +< +v8 +:: +Vue +>*>( +this +) + +428 , + gback + + +430 , + g_flds +[0] + +431 , + g_flds +[1]); + +432 + grsit +. +MakeWk +( +wcbd +, +WkClbackInfo +< +P +>:: +voke +); + + @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/fsevents.cc + +6  + ~"n.h +" + +7  + ~"uv.h +" + +8  + ~"v8.h +" + +9  + ~"CeFoundi/CeFoundi.h +" + +10  + ~"CeSvis/CeSvis.h +" + +11  + ~ + +12  + ~ + +14  + ~"c/age.cc +" + +15 +mea + + gf + { + +16 as + cFSEvts + : +public + +N +:: +ObjeWp + { + +17 +public +: + +18 +exic + +FSEvts +(cڡ * +th +); + +19 ~ +FSEvts +(); + +21 +uv_mux_t + + gmux +; + +24 +uv_async_t + + gasync +; + +25  +asyncS +(); + +26  +asyncTrigg +(); + +27  +asyncSt +(); + +30 +uv_thad_t + + gthad +; + +31 +CFRunLoRef + + gthadlo +; + +32  +thadS +(); + +33  +thadRun +(* +x +); + +34  +thadSt +(); + +37 + gN +:: +AsyncResour + +async_sour +; + +38  +emEvt +(cڡ * +th +, +UI32 + +ags +, +UI64 + +id +); + +41 +CFAayRef + + gths +; + +42 + gd +:: +ve +< +f_evt +*> +evts +; + +43  +Inlize +( +v8 +:: +Lol + +expts +); + +46  +NAN_METHOD +( +New +); + +47  +NAN_METHOD +( +St +); + +48  +NAN_METHOD +( +S +); + +53 +usg + +mea + + gf +; + +55 + gFSEvts +:: + $FSEvts +(cڡ * +th +) + +56 : + `async_sour +("fsevents:FSEvents") { + +57 +CFSgRef + +ds +[] = { + `CFSgCeWhCSg +( +NULL +, +th +, +kCFSgEncodgUTF8 +) }; + +58 +ths + = + `CFAayCe +( +NULL +, (cڡ **)& +ds +, 1, NULL); + +59 +thadlo + = +NULL +; + +60 i( + `uv_mux_ +(& +mux +) + `abt +(); + +61 + } +} + +62 + gFSEvts +::~ + $FSEvts +() { + +63 + `CFR +( +ths +); + +64 + `uv_mux_deroy +(& +mux +); + +65 + } +} + +67 #ide +kFSEvtSmEvtFgImCed + + +68  + #kFSEvtSmEvtFgImCed + 0x00000010 + + ) + +71  + ~"c/async.cc +" + +72  + ~"c/thad.cc +" + +73  + ~"c/cڡts.cc +" + +74  + ~"c/mhods.cc +" + +76  + gFSEvts +:: +Inlize +( +v8 +:: +Lol + +expts +) { + +77 +v8 +:: +Isީe +* +isީe + = +expts +-> +GIsީe +(); + +78 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +79 + gv8 +:: +Lol +< +v8 +:: +FuniTeme +> +l + = +N +:: +New +( +FSEvts +::New); + +80 + gl +-> +SCssName +( +N +:: +New +< +v8 +:: +Sg +>("FSEvts"). +ToLolChecked +()); + +81 + gl +-> +InTeme +()-> +SIlFldCou +(1); + +82 + gN +:: +SPryTeme +( +l +, "t", +N +:: +New +< +v8 +:: +FuniTeme +>( +FSEvts +:: +S +)); + +83 + gN +:: +SPryTeme +( +l +, "", +N +:: +New +< +v8 +:: +FuniTeme +>( +FSEvts +:: +St +)); + +84 + gN +:: +S +( +expts +, +N +:: +New +< +v8 +:: +Sg +>("Cڡts"). +ToLolChecked +(), +Cڡts +()); + +85 + gN +:: +S +( +expts +, +N +:: +New +< +v8 +:: +Sg +>("FSEvts"). +ToLolChecked +(), +l +-> +GFuni +( +cڋxt +).ToLocalChecked()); + +88 +NODE_MODULE +( +f +, +FSEvts +:: +Inlize +) + + @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/async.cc + +7  + $async_age +( +uv_async_t + * +async +) { + +8 i(! +async +-> +da +) ; + +9 +FSEvts + * +f + = (FSEvt*) +async +-> +da +; + +10 +CFIndex + +idx +, +t +; + +11 +f_evt + * +evt +; + +12  +thbuf +[1024]; + +13 cڡ * +thr + = +NULL +; + +14 + `uv_mux_lock +(& +f +-> +mux +); + +15 +t + = +f +-> +evts +. + `size +(); + +16  +idx +=0; idx< +t +; idx++) { + +17 +evt + = +f +-> +evts +. + ` +( +idx +); + +18 i( +evt + = +NULL +) ; + +19 +thr + = + `CFSgGCSgP +( +evt +-> +th +, +kCFSgEncodgUTF8 +); + +20 i(! +thr + + `CFSgGCSg +( +evt +-> +th +, +thbuf +, 1024, +kCFSgEncodgUTF8 +); + +21 +f +-> + `emEvt +( +thr + ?h: +thbuf +, +evt +-> +ags +,vt-> +id +); + +22 +de + +evt +; + +24 i( +t +>0 +f +-> +evts +. + `r +(); + +25 + `uv_mux_uock +(& +f +-> +mux +); + +26 + } +} + +28  + gFSEvts +:: + $asyncS +() { + +29 i( +async +. +da + = +this +) ; + +30 +async +. +da + = +this +; + +31 + `uv_async_ +( + `uv_deu_lo +(), & +async +, ( +uv_async_cb + +async_age +); + +32 + } +} + +34  + gFSEvts +:: + $asyncTrigg +() { + +35 i( +async +. +da + ! +this +) ; + +36 + `uv_async_nd +(& +async +); + +37 + } +} + +39  + gFSEvts +:: + $asyncSt +() { + +40 i( +async +. +da + ! +this +) ; + +41 +async +. +da + = +NULL +; + +42 + `uv_o +(( +uv_hd_t + *& +async +, +NULL +); + +43 + } +} + + @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/constants.cc + +7 #ide +kFSEvtSmEvtFgNe + + +8  + #kFSEvtSmEvtFgNe + 0x00000000 + + ) + +11 #ide +kFSEvtSmEvtFgMuSnSubDs + + +12  + #kFSEvtSmEvtFgMuSnSubDs + 0x00000001 + + ) + +15 #ide +kFSEvtSmEvtFgUrDrݳd + + +16  + #kFSEvtSmEvtFgUrDrݳd + 0x00000002 + + ) + +19 #ide +kFSEvtSmEvtFgKlDrݳd + + +20  + #kFSEvtSmEvtFgKlDrݳd + 0x00000004 + + ) + +23 #ide +kFSEvtSmEvtFgEvtIdsWed + + +24  + #kFSEvtSmEvtFgEvtIdsWed + 0x00000008 + + ) + +27 #ide +kFSEvtSmEvtFgHiyDe + + +28  + #kFSEvtSmEvtFgHiyDe + 0x00000010 + + ) + +31 #ide +kFSEvtSmEvtFgRoChged + + +32  + #kFSEvtSmEvtFgRoChged + 0x00000020 + + ) + +35 #ide +kFSEvtSmEvtFgMou + + +36  + #kFSEvtSmEvtFgMou + 0x00000040 + + ) + +39 #ide +kFSEvtSmEvtFgUnmou + + +40  + #kFSEvtSmEvtFgUnmou + 0x00000080 + + ) + +43 #ide +kFSEvtSmEvtFgImCed + + +44  + #kFSEvtSmEvtFgImCed + 0x00000100 + + ) + +47 #ide +kFSEvtSmEvtFgImRemoved + + +48  + #kFSEvtSmEvtFgImRemoved + 0x00000200 + + ) + +51 #ide +kFSEvtSmEvtFgImInodeMaMod + + +52  + #kFSEvtSmEvtFgImInodeMaMod + 0x00000400 + + ) + +55 #ide +kFSEvtSmEvtFgImRamed + + +56  + #kFSEvtSmEvtFgImRamed + 0x00000800 + + ) + +59 #ide +kFSEvtSmEvtFgImModifd + + +60  + #kFSEvtSmEvtFgImModifd + 0x00001000 + + ) + +63 #ide +kFSEvtSmEvtFgImFdInfoMod + + +64  + #kFSEvtSmEvtFgImFdInfoMod + 0x00002000 + + ) + +67 #ide +kFSEvtSmEvtFgImChgeOwr + + +68  + #kFSEvtSmEvtFgImChgeOwr + 0x00004000 + + ) + +71 #ide +kFSEvtSmEvtFgImXMod + + +72  + #kFSEvtSmEvtFgImXMod + 0x00008000 + + ) + +75 #ide +kFSEvtSmEvtFgImIsFe + + +76  + #kFSEvtSmEvtFgImIsFe + 0x00010000 + + ) + +79 #ide +kFSEvtSmEvtFgImIsD + + +80  + #kFSEvtSmEvtFgImIsD + 0x00020000 + + ) + +83 #ide +kFSEvtSmEvtFgImIsSymlk + + +84  + #kFSEvtSmEvtFgImIsSymlk + 0x00040000 + + ) + +87  + gv8 +:: +Lol +< +v8 +:: +Obje +> + $Cڡts +() { + +88 +v8 +:: +Lol + +obje + = +N +:: +New +(); + +89 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgNe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgNe +)); + +90 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgMuSnSubDs"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgMuSnSubDs +)); + +91 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgUrDrݳd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgUrDrݳd +)); + +92 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgKlDrݳd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgKlDrݳd +)); + +93 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgEvtIdsWed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgEvtIdsWed +)); + +94 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgHiyDe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgHiyDe +)); + +95 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgRoChged"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgRoChged +)); + +96 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgMou"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgMou +)); + +97 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgUnmou"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgUnmou +)); + +98 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImCed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImCed +)); + +99 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImRemoved"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImRemoved +)); + +100 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImInodeMaMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImInodeMaMod +)); + +101 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImRamed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImRamed +)); + +102 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImModifd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImModifd +)); + +103 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImFdInfoMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImFdInfoMod +)); + +104 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImChgeOwr"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImChgeOwr +)); + +105 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImXMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImXMod +)); + +106 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsFe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsFe +)); + +107 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsD"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsD +)); + +108 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsSymlk"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsSymlk +)); + +109  +obje +; + +110 + } +} + + @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/methods.cc + +6  + gFSEvts +:: + $emEvt +(cڡ * +th +, +UI32 + +ags +, +UI64 + +id +) { + +7 +N +:: +HdSce + +hd_sce +; + +8 +v8 +:: +Lol + +obje + = + `hd +(); + +9 +v8 +:: +Lol + +key + = +N +:: +New +("hdr"). + `ToLolChecked +(); + +10 +N +:: +Clback + + `hdr +(N:: +To +< +v8 +:: +Funi +>(N:: + `G +( +obje +, +key +). + `ToLolChecked +()).ToLocalChecked()); + +11 +v8 +:: +Lol + +gv +[] = { + +12 +N +:: +New +< +v8 +:: +Sg +>( +th +). + `ToLolChecked +(), + +13 +N +:: +New +< +v8 +:: +Numb +>( +ags +), + +14 +N +:: +New +< +v8 +:: +Numb +>( +id +) + +16 +hdr +. + `Cl +(3, +gv +, & +async_sour +); + +17 + } +} + +19 + $NAN_METHOD +( +FSEvts +:: +New +) { + +20 +N +:: +Utf8Sg + + `th +( +fo +[0]); + +22 +FSEvts + * +f + = +w + + `FSEvts +(* +th +); + +23 +f +-> + `Wp +( +fo +. + `This +()); + +24 +N +:: + `S +( +fo +. + `This +(), N:: +New +< +v8 +:: +Sg +>("hdr"). + `ToLolChecked +(), info[1]); + +26 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +27 + } +} + +29 + $NAN_METHOD +( +FSEvts +:: +St +) { + +30 +FSEvts +* +f + = +N +:: +ObjeWp +:: +Unwp +( +fo +. + `This +()); + +32 +f +-> + `thadSt +(); + +33 +f +-> + `asyncSt +(); + +35 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +36 + } +} + +38 + $NAN_METHOD +( +FSEvts +:: +S +) { + +39 +FSEvts +* +f + = +N +:: +ObjeWp +:: +Unwp +( +fo +. + `This +()); + +40 +f +-> + `asyncS +(); + +41 +f +-> + `thadS +(); + +43 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +44 + } +} + + @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/storage.cc + +6  + sf_evt + { + +7 +UI64 + + mid +; + +8 +UI32 + + mags +; + +9 +CFSgRef + + mth +; + +11 +f_evt +( +CFSgRef + +evtPh +, +UI32 + +evtFg +, +UI64 + +evtId +) { + +12 + mthis +-> + mth + = +evtPh +; + +13 + mthis +-> + mags + = +evtFg +; + +14 + mthis +-> + mid + = +evtId +; + +15 i( + mthis +-> + mth + ! +NULL +) + +16 +CFRa +( +this +-> +th +); + +19 ~ +f_evt +() { + +20 i( + mthis +-> + mth + ! +NULL +) + +21 +CFR +( +this +-> +th +); + +24 + mive +: + +25 +f_evt +(const fse_event&); + +26  + mݔ +=(cڡ +f_evt +&); + + @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/thread.cc + +7 #ide +kFSEvtSmCeFgNe + + +8  + #kFSEvtSmCeFgNe + 0x00000000 + + ) + +11 #ide +kFSEvtSmCeFgUCFTys + + +12  + #kFSEvtSmCeFgUCFTys + 0x00000001 + + ) + +15 #ide +kFSEvtSmCeFgNoDer + + +16  + #kFSEvtSmCeFgNoDer + 0x00000002 + + ) + +19 #ide +kFSEvtSmCeFgWchRo + + +20  + #kFSEvtSmCeFgWchRo + 0x00000004 + + ) + +23 #ide +kFSEvtSmCeFgIgneSf + + +24  + #kFSEvtSmCeFgIgneSf + 0x00000008 + + ) + +27 #ide +kFSEvtSmCeFgFeEvts + + +28  + #kFSEvtSmCeFgFeEvts + 0x00000010 + + ) + +31  + gFSEvts +:: + $thadS +() { + +32 i( +thadlo +) ; + +33 i( + `uv_thad_ +(& +thad +, & +FSEvts +:: +thadRun +, +this +) + `abt +(); + +34 + } +} + +36  + $HdSmEvts +( +CڡFSEvtSmRef + +am +, * +x +, +size_t + +numEvts +, * +evtPhs +, cڡ +FSEvtSmEvtFgs + +evtFgs +[], cڡ +FSEvtSmEvtId + +evtIds +[]) { + +37 +FSEvts + * +f + = (FSEvt*) +x +; + +38 +size_t + +idx +; + +39 + `uv_mux_lock +(& +f +-> +mux +); + +40  +idx +=0; idx < +numEvts +; idx++) { + +41 +f_evt + * +evt + = +w + + `f_evt +( + +42 ( +CFSgRef +) + `CFAayGVueAtIndex +(( +CFAayRef +) +evtPhs +, +idx +), + +43 +evtFgs +[ +idx +], + +44 +evtIds +[ +idx +] + +46 +f +-> +evts +. + `push_back +( +evt +); + +48 +f +-> + `asyncTrigg +(); + +49 + `uv_mux_uock +(& +f +-> +mux +); + +50 + } +} + +52  + gFSEvts +:: + $thadRun +(* +x +) { + +53 +FSEvts + * +f + = (FSEvts*) +x +; + +54 +FSEvtSmCڋxt + +cڋxt + = { 0, +x +, +NULL +, NULL, NULL }; + +55 +f +-> +thadlo + = + `CFRunLoGCut +(); + +56 +FSEvtSmRef + +am + = + `FSEvtSmCe +( +NULL +, & +HdSmEvts +, & +cڋxt +, +f +-> +ths +, +kFSEvtSmEvtIdSNow +, ( +CFAbsuTime +0.1, +kFSEvtSmCeFgNe + | +kFSEvtSmCeFgWchRo + | +kFSEvtSmCeFgFeEvts + | +kFSEvtSmCeFgUCFTys +); + +57 + `FSEvtSmScheduWhRunLo +( +am +, +f +-> +thadlo +, +kCFRunLoDeuMode +); + +58 + `FSEvtSmS +( +am +); + +59 + `CFRunLoRun +(); + +60 + `FSEvtSmSt +( +am +); + +61 + `FSEvtSmUnscheduFromRunLo +( +am +, +f +-> +thadlo +, +kCFRunLoDeuMode +); + +62 + `FSEvtSmInvide +( +am +); + +63 + `FSEvtSmR +( +am +); + +64 +f +-> +thadlo + = +NULL +; + +65 + } +} + +67  + gFSEvts +:: + $thadSt +() { + +68 i(! +thadlo +) ; + +69 + `CFRunLoSt +( +thadlo +); + +70 i( + `uv_thad_jo +(& +thad +) + `abt +(); + +71 + } +} + + @interface/node_modules/webpack-dev-server/node_modules/fsevents/fsevents.cc + +6  + ~"n.h +" + +7  + ~"uv.h +" + +8  + ~"v8.h +" + +9  + ~"CeFoundi/CeFoundi.h +" + +10  + ~"CeSvis/CeSvis.h +" + +11  + ~ + +12  + ~ + +14  + ~"c/age.cc +" + +15 +mea + + gf + { + +16 as + cFSEvts + : +public + +N +:: +ObjeWp + { + +17 +public +: + +18 +exic + +FSEvts +(cڡ * +th +); + +19 ~ +FSEvts +(); + +21 +uv_mux_t + + gmux +; + +24 +uv_async_t + + gasync +; + +25  +asyncS +(); + +26  +asyncTrigg +(); + +27  +asyncSt +(); + +30 +uv_thad_t + + gthad +; + +31 +CFRunLoRef + + gthadlo +; + +32  +thadS +(); + +33  +thadRun +(* +x +); + +34  +thadSt +(); + +37 + gN +:: +AsyncResour + +async_sour +; + +38  +emEvt +(cڡ * +th +, +UI32 + +ags +, +UI64 + +id +); + +41 +CFAayRef + + gths +; + +42 + gd +:: +ve +< +f_evt +*> +evts +; + +43  +Inlize +( +v8 +:: +Lol + +expts +); + +46  +NAN_METHOD +( +New +); + +47  +NAN_METHOD +( +St +); + +48  +NAN_METHOD +( +S +); + +53 +usg + +mea + + gf +; + +55 + gFSEvts +:: + $FSEvts +(cڡ * +th +) + +56 : + `async_sour +("fsevents:FSEvents") { + +57 +CFSgRef + +ds +[] = { + `CFSgCeWhCSg +( +NULL +, +th +, +kCFSgEncodgUTF8 +) }; + +58 +ths + = + `CFAayCe +( +NULL +, (cڡ **)& +ds +, 1, NULL); + +59 +thadlo + = +NULL +; + +60 i( + `uv_mux_ +(& +mux +) + `abt +(); + +61 + } +} + +62 + gFSEvts +::~ + $FSEvts +() { + +63 + `CFR +( +ths +); + +64 + `uv_mux_deroy +(& +mux +); + +65 + } +} + +67 #ide +kFSEvtSmEvtFgImCed + + +68  + #kFSEvtSmEvtFgImCed + 0x00000010 + + ) + +71  + ~"c/async.cc +" + +72  + ~"c/thad.cc +" + +73  + ~"c/cڡts.cc +" + +74  + ~"c/mhods.cc +" + +76  + gFSEvts +:: +Inlize +( +v8 +:: +Lol + +expts +) { + +77 +v8 +:: +Isީe +* +isީe + = +expts +-> +GIsީe +(); + +78 + gv8 +:: +Lol +< +v8 +:: +Cڋxt +> +cڋxt + = +isީe +-> +GCutCڋxt +(); + +79 + gv8 +:: +Lol +< +v8 +:: +FuniTeme +> +l + = +N +:: +New +( +FSEvts +::New); + +80 + gl +-> +SCssName +( +N +:: +New +< +v8 +:: +Sg +>("FSEvts"). +ToLolChecked +()); + +81 + gl +-> +InTeme +()-> +SIlFldCou +(1); + +82 + gN +:: +SPryTeme +( +l +, "t", +N +:: +New +< +v8 +:: +FuniTeme +>( +FSEvts +:: +S +)); + +83 + gN +:: +SPryTeme +( +l +, "", +N +:: +New +< +v8 +:: +FuniTeme +>( +FSEvts +:: +St +)); + +84 + gN +:: +S +( +expts +, +N +:: +New +< +v8 +:: +Sg +>("Cڡts"). +ToLolChecked +(), +Cڡts +()); + +85 + gN +:: +S +( +expts +, +N +:: +New +< +v8 +:: +Sg +>("FSEvts"). +ToLolChecked +(), +l +-> +GFuni +( +cڋxt +).ToLocalChecked()); + +88 +NODE_MODULE +( +f +, +FSEvts +:: +Inlize +) + + @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/async.cc + +7  + $async_age +( +uv_async_t + * +async +) { + +8 i(! +async +-> +da +) ; + +9 +FSEvts + * +f + = (FSEvt*) +async +-> +da +; + +10 +CFIndex + +idx +, +t +; + +11 +f_evt + * +evt +; + +12  +thbuf +[1024]; + +13 cڡ * +thr + = +NULL +; + +14 + `uv_mux_lock +(& +f +-> +mux +); + +15 +t + = +f +-> +evts +. + `size +(); + +16  +idx +=0; idx< +t +; idx++) { + +17 +evt + = +f +-> +evts +. + ` +( +idx +); + +18 i( +evt + = +NULL +) ; + +19 +thr + = + `CFSgGCSgP +( +evt +-> +th +, +kCFSgEncodgUTF8 +); + +20 i(! +thr + + `CFSgGCSg +( +evt +-> +th +, +thbuf +, 1024, +kCFSgEncodgUTF8 +); + +21 +f +-> + `emEvt +( +thr + ?h: +thbuf +, +evt +-> +ags +,vt-> +id +); + +22 +de + +evt +; + +24 i( +t +>0 +f +-> +evts +. + `r +(); + +25 + `uv_mux_uock +(& +f +-> +mux +); + +26 + } +} + +28  + gFSEvts +:: + $asyncS +() { + +29 i( +async +. +da + = +this +) ; + +30 +async +. +da + = +this +; + +31 + `uv_async_ +( + `uv_deu_lo +(), & +async +, ( +uv_async_cb + +async_age +); + +32 + } +} + +34  + gFSEvts +:: + $asyncTrigg +() { + +35 i( +async +. +da + ! +this +) ; + +36 + `uv_async_nd +(& +async +); + +37 + } +} + +39  + gFSEvts +:: + $asyncSt +() { + +40 i( +async +. +da + ! +this +) ; + +41 +async +. +da + = +NULL +; + +42 + `uv_o +(( +uv_hd_t + *& +async +, +NULL +); + +43 + } +} + + @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/constants.cc + +7 #ide +kFSEvtSmEvtFgNe + + +8  + #kFSEvtSmEvtFgNe + 0x00000000 + + ) + +11 #ide +kFSEvtSmEvtFgMuSnSubDs + + +12  + #kFSEvtSmEvtFgMuSnSubDs + 0x00000001 + + ) + +15 #ide +kFSEvtSmEvtFgUrDrݳd + + +16  + #kFSEvtSmEvtFgUrDrݳd + 0x00000002 + + ) + +19 #ide +kFSEvtSmEvtFgKlDrݳd + + +20  + #kFSEvtSmEvtFgKlDrݳd + 0x00000004 + + ) + +23 #ide +kFSEvtSmEvtFgEvtIdsWed + + +24  + #kFSEvtSmEvtFgEvtIdsWed + 0x00000008 + + ) + +27 #ide +kFSEvtSmEvtFgHiyDe + + +28  + #kFSEvtSmEvtFgHiyDe + 0x00000010 + + ) + +31 #ide +kFSEvtSmEvtFgRoChged + + +32  + #kFSEvtSmEvtFgRoChged + 0x00000020 + + ) + +35 #ide +kFSEvtSmEvtFgMou + + +36  + #kFSEvtSmEvtFgMou + 0x00000040 + + ) + +39 #ide +kFSEvtSmEvtFgUnmou + + +40  + #kFSEvtSmEvtFgUnmou + 0x00000080 + + ) + +43 #ide +kFSEvtSmEvtFgImCed + + +44  + #kFSEvtSmEvtFgImCed + 0x00000100 + + ) + +47 #ide +kFSEvtSmEvtFgImRemoved + + +48  + #kFSEvtSmEvtFgImRemoved + 0x00000200 + + ) + +51 #ide +kFSEvtSmEvtFgImInodeMaMod + + +52  + #kFSEvtSmEvtFgImInodeMaMod + 0x00000400 + + ) + +55 #ide +kFSEvtSmEvtFgImRamed + + +56  + #kFSEvtSmEvtFgImRamed + 0x00000800 + + ) + +59 #ide +kFSEvtSmEvtFgImModifd + + +60  + #kFSEvtSmEvtFgImModifd + 0x00001000 + + ) + +63 #ide +kFSEvtSmEvtFgImFdInfoMod + + +64  + #kFSEvtSmEvtFgImFdInfoMod + 0x00002000 + + ) + +67 #ide +kFSEvtSmEvtFgImChgeOwr + + +68  + #kFSEvtSmEvtFgImChgeOwr + 0x00004000 + + ) + +71 #ide +kFSEvtSmEvtFgImXMod + + +72  + #kFSEvtSmEvtFgImXMod + 0x00008000 + + ) + +75 #ide +kFSEvtSmEvtFgImIsFe + + +76  + #kFSEvtSmEvtFgImIsFe + 0x00010000 + + ) + +79 #ide +kFSEvtSmEvtFgImIsD + + +80  + #kFSEvtSmEvtFgImIsD + 0x00020000 + + ) + +83 #ide +kFSEvtSmEvtFgImIsSymlk + + +84  + #kFSEvtSmEvtFgImIsSymlk + 0x00040000 + + ) + +87  + gv8 +:: +Lol +< +v8 +:: +Obje +> + $Cڡts +() { + +88 +v8 +:: +Lol + +obje + = +N +:: +New +(); + +89 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgNe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgNe +)); + +90 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgMuSnSubDs"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgMuSnSubDs +)); + +91 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgUrDrݳd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgUrDrݳd +)); + +92 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgKlDrݳd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgKlDrݳd +)); + +93 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgEvtIdsWed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgEvtIdsWed +)); + +94 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgHiyDe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgHiyDe +)); + +95 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgRoChged"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgRoChged +)); + +96 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgMou"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgMou +)); + +97 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgUnmou"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgUnmou +)); + +98 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImCed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImCed +)); + +99 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImRemoved"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImRemoved +)); + +100 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImInodeMaMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImInodeMaMod +)); + +101 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImRamed"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImRamed +)); + +102 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImModifd"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImModifd +)); + +103 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImFdInfoMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImFdInfoMod +)); + +104 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImChgeOwr"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImChgeOwr +)); + +105 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImXMod"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImXMod +)); + +106 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsFe"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsFe +)); + +107 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsD"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsD +)); + +108 +N +:: + `S +( +obje +, N:: +New +< +v8 +:: +Sg +>("kFSEvtSmEvtFgImIsSymlk"). + `ToLolChecked +(), N::New( +kFSEvtSmEvtFgImIsSymlk +)); + +109  +obje +; + +110 + } +} + + @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/methods.cc + +6  + gFSEvts +:: + $emEvt +(cڡ * +th +, +UI32 + +ags +, +UI64 + +id +) { + +7 +N +:: +HdSce + +hd_sce +; + +8 +v8 +:: +Lol + +obje + = + `hd +(); + +9 +v8 +:: +Lol + +key + = +N +:: +New +("hdr"). + `ToLolChecked +(); + +10 +N +:: +Clback + + `hdr +(N:: +To +< +v8 +:: +Funi +>(N:: + `G +( +obje +, +key +). + `ToLolChecked +()).ToLocalChecked()); + +11 +v8 +:: +Lol + +gv +[] = { + +12 +N +:: +New +< +v8 +:: +Sg +>( +th +). + `ToLolChecked +(), + +13 +N +:: +New +< +v8 +:: +Numb +>( +ags +), + +14 +N +:: +New +< +v8 +:: +Numb +>( +id +) + +16 +hdr +. + `Cl +(3, +gv +, & +async_sour +); + +17 + } +} + +19 + $NAN_METHOD +( +FSEvts +:: +New +) { + +20 +N +:: +Utf8Sg + + `th +( +fo +[0]); + +22 +FSEvts + * +f + = +w + + `FSEvts +(* +th +); + +23 +f +-> + `Wp +( +fo +. + `This +()); + +24 +N +:: + `S +( +fo +. + `This +(), N:: +New +< +v8 +:: +Sg +>("hdr"). + `ToLolChecked +(), info[1]); + +26 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +27 + } +} + +29 + $NAN_METHOD +( +FSEvts +:: +St +) { + +30 +FSEvts +* +f + = +N +:: +ObjeWp +:: +Unwp +( +fo +. + `This +()); + +32 +f +-> + `thadSt +(); + +33 +f +-> + `asyncSt +(); + +35 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +36 + } +} + +38 + $NAN_METHOD +( +FSEvts +:: +S +) { + +39 +FSEvts +* +f + = +N +:: +ObjeWp +:: +Unwp +( +fo +. + `This +()); + +40 +f +-> + `asyncS +(); + +41 +f +-> + `thadS +(); + +43 +fo +. + `GRuVue +(). + `S +(fo. + `This +()); + +44 + } +} + + @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/storage.cc + +6  + sf_evt + { + +7 +UI64 + + mid +; + +8 +UI32 + + mags +; + +9 +CFSgRef + + mth +; + +11 +f_evt +( +CFSgRef + +evtPh +, +UI32 + +evtFg +, +UI64 + +evtId +) { + +12 + mthis +-> + mth + = +evtPh +; + +13 + mthis +-> + mags + = +evtFg +; + +14 + mthis +-> + mid + = +evtId +; + +15 i( + mthis +-> + mth + ! +NULL +) + +16 +CFRa +( +this +-> +th +); + +19 ~ +f_evt +() { + +20 i( + mthis +-> + mth + ! +NULL +) + +21 +CFR +( +this +-> +th +); + +24 + mive +: + +25 +f_evt +(const fse_event&); + +26  + mݔ +=(cڡ +f_evt +&); + + @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/thread.cc + +7 #ide +kFSEvtSmCeFgNe + + +8  + #kFSEvtSmCeFgNe + 0x00000000 + + ) + +11 #ide +kFSEvtSmCeFgUCFTys + + +12  + #kFSEvtSmCeFgUCFTys + 0x00000001 + + ) + +15 #ide +kFSEvtSmCeFgNoDer + + +16  + #kFSEvtSmCeFgNoDer + 0x00000002 + + ) + +19 #ide +kFSEvtSmCeFgWchRo + + +20  + #kFSEvtSmCeFgWchRo + 0x00000004 + + ) + +23 #ide +kFSEvtSmCeFgIgneSf + + +24  + #kFSEvtSmCeFgIgneSf + 0x00000008 + + ) + +27 #ide +kFSEvtSmCeFgFeEvts + + +28  + #kFSEvtSmCeFgFeEvts + 0x00000010 + + ) + +31  + gFSEvts +:: + $thadS +() { + +32 i( +thadlo +) ; + +33 i( + `uv_thad_ +(& +thad +, & +FSEvts +:: +thadRun +, +this +) + `abt +(); + +34 + } +} + +36  + $HdSmEvts +( +CڡFSEvtSmRef + +am +, * +x +, +size_t + +numEvts +, * +evtPhs +, cڡ +FSEvtSmEvtFgs + +evtFgs +[], cڡ +FSEvtSmEvtId + +evtIds +[]) { + +37 +FSEvts + * +f + = (FSEvt*) +x +; + +38 +size_t + +idx +; + +39 + `uv_mux_lock +(& +f +-> +mux +); + +40  +idx +=0; idx < +numEvts +; idx++) { + +41 +f_evt + * +evt + = +w + + `f_evt +( + +42 ( +CFSgRef +) + `CFAayGVueAtIndex +(( +CFAayRef +) +evtPhs +, +idx +), + +43 +evtFgs +[ +idx +], + +44 +evtIds +[ +idx +] + +46 +f +-> +evts +. + `push_back +( +evt +); + +48 +f +-> + `asyncTrigg +(); + +49 + `uv_mux_uock +(& +f +-> +mux +); + +50 + } +} + +52  + gFSEvts +:: + $thadRun +(* +x +) { + +53 +FSEvts + * +f + = (FSEvts*) +x +; + +54 +FSEvtSmCڋxt + +cڋxt + = { 0, +x +, +NULL +, NULL, NULL }; + +55 +f +-> +thadlo + = + `CFRunLoGCut +(); + +56 +FSEvtSmRef + +am + = + `FSEvtSmCe +( +NULL +, & +HdSmEvts +, & +cڋxt +, +f +-> +ths +, +kFSEvtSmEvtIdSNow +, ( +CFAbsuTime +0.1, +kFSEvtSmCeFgNe + | +kFSEvtSmCeFgWchRo + | +kFSEvtSmCeFgFeEvts + | +kFSEvtSmCeFgUCFTys +); + +57 + `FSEvtSmScheduWhRunLo +( +am +, +f +-> +thadlo +, +kCFRunLoDeuMode +); + +58 + `FSEvtSmS +( +am +); + +59 + `CFRunLoRun +(); + +60 + `FSEvtSmSt +( +am +); + +61 + `FSEvtSmUnscheduFromRunLo +( +am +, +f +-> +thadlo +, +kCFRunLoDeuMode +); + +62 + `FSEvtSmInvide +( +am +); + +63 + `FSEvtSmR +( +am +); + +64 +f +-> +thadlo + = +NULL +; + +65 + } +} + +67  + gFSEvts +:: + $thadSt +() { + +68 i(! +thadlo +) ; + +69 + `CFRunLoSt +( +thadlo +); + +70 i( + `uv_thad_jo +(& +thad +) + `abt +(); + +71 + } +} + + @interface/node_modules/zlib/src/node-zlib.cc + +1  + ~ + +2  + ~ + +3  + ~ + +4  + ~ + +6  + ~ + +7  + ~ + +8  + ~ + +10 +usg + +mea + + gv8 +; + +11 +usg + +mea + + gnode +; + +14 #i +NODE_VERSION_AT_LEAST +(0,3,0) + +15  + #Bufr_Da + +Bufr +:: +Da + + + ) + +16  + #Bufr_Lgth + +Bufr +:: +Lgth + + + ) + +17  + #Bufr_New + +Bufr +:: +New + + + ) + +19 +le + * +Bufr_Da +( +Hd +< +Obje +> +obj +) { + +20  ( + gObjeWp +:: +Unwp +< +Bufr +>( +obj +))-> +da +(); + +22 +le + +size_t + +Bufr_Lgth +( +Hd +< +Obje +> +obj +) { + +23  ( + gObjeWp +:: +Unwp +< +Bufr +>( +obj +))-> +ngth +(); + +25 +le + +Bufr +* + $Bufr_New +(* +da +, +size_t + +ngth +) { + +26 +Bufr +* +bufr + = Bufr:: + `New +( +ngth +); + +27 + `memy +( +bufr +-> + `da +(), +da +, +ngth +); + +28  +bufr +; + +29 + } +} + +33 +z_am + + gdee_s +; + +34 +z_am + + ge_s +; + +36 +le + + gHd +< + gVue +> + $ZLib_r +(cڡ * +msg + = +NULL +) { + +37  + `ThrowExi +( +Exi +:: + `E +( + +38 +Sg +:: + `New +( +msg + ? msg : "Unknown Error"))); + +39 + } +} + +41  + #ZLib_Xe +( +x +, + +) \ + +42 +Hd +< +Vue +> +ZLib_ +## +x +## + `e +(cڡ +Argumts +& +gs +) { \ + +43 +HdSce + +sce +; \ + +45 i( +gs +. + `Lgth +(< 1 || ! +Bufr +:: + `HasIn +(args[0])) { \ + +46  + `ZLib_r +("Expected Buffers firstrgument"); \ + +49 i(( +x +## + `eRet +(&x## +e_s +)! +Z_OK +) { \ + +50 + `as +(( +l +, "ZLib stream is beyondepair")); \ + +53 +Lol +< +Obje +> +put + = +gs +[0]-> + `ToObje +(); \ + +54 +x +## +e_s +. +xt_ + = ( +Byf +*) + `Bufr_Da +( +put +); \ + +55  +ngth + = +x +## +e_s +. +ava_ + = + `Bufr_Lgth +( +put +); \ + +57  +t +; \ + +58 * +su + = +NULL +; \ + +60  +comesd + = 0; \ + +62 +su + = (*) + `loc +esu, +comesd + + + + * +ngth +); \ + +63 i(! +su + + `ZLib_r +("Couldotllocate memory"); \ + +65 +x +## +e_s +. +ava_out + = + + * +ngth +; \ + +66 +x +## +e_s +. +xt_out + = ( +Byf +*) +su + + +comesd +; \ + +68 +t + = +x +## + `e +(&x## +e_s +, +Z_FINISH +); \ + +69 i( +t + ! +Z_STREAM_END + && ! +Z_OK + && ! +Z_BUF_ERROR +) { \ + +70 + ` +( +su +); \ + +71  + `ZLib_r +( +x +## +e_s +. +msg +); \ + +74 +comesd + +( + + * +ngth + - +x +## +e_s +. +ava_out +); \ + +75 }  +x +## +e_s +. +ava_out + == 0); \ + +77 +Bufr +* +ouut + = + `Bufr_New +( +su +, +comesd +); \ + +78 + ` +( +su +); \ + +79  +sce +. + `Clo +( +Lol +< +Vue +>:: + `New +( +ouut +-> +hd_ +)); \ + +80 } + + ) + +82 +ZLib_Xe +( +de +, 1); + +83 +ZLib_Xe +( + +, 2); + +85 "C"  + + ( +Hd +< +Obje +> +rg +) { + +86 +dee_s +. +zloc + = +e_s +.zlo +Z_NULL +; + +87 +dee_s +. +z + = +e_s +.z = +Z_NULL +; + +88 +dee_s +. +aque + = +e_s +.aqu +Z_NULL +; + +90 +deeIn +(& +dee_s +, +Z_DEFAULT_COMPRESSION +); + +91 +eIn +(& +e_s +); + +93 +NODE_SET_METHOD +( +rg +, "dee", +ZLib_dee +); + +94 +NODE_SET_METHOD +( +rg +, "e", +ZLib_e +); + + @lib/ESPAsyncWebServer/AsyncEventSource.cpp + +20  + ~"Arduo.h +" + +21  + ~"AsyncEvtSour.h +" + +23  +Sg + + $geEvtMesge +(cڡ * +mesge +, cڡ * +evt +, +ut32_t + +id +, ut32_ +c +){ + +24 +Sg + +ev +; + +26 if( +c +){ + +27 +ev + + + `F +("retry: "); + +28 +ev + + +c +; + +29 +ev + + + `F +("\r\n"); + +32 if( +id +){ + +33 +ev + + + `F +("id: "); + +34 +ev + + + `Sg +( +id +); + +35 +ev + + + `F +("\r\n"); + +38 if( +evt + ! +NULL +){ + +39 +ev + + + `F +("event: "); + +40 +ev + + + `Sg +( +evt +); + +41 +ev + + + `F +("\r\n"); + +44 if( +mesge + ! +NULL +){ + +45 +size_t + +mesgeL + = + ` +( +mesge +); + +46 * +leS + = (*) +mesge +; + +47 * +leEnd +; + +49 * +xtN + = + `rchr +( +leS +, '\n'); + +50 * +xtR + = + `rchr +( +leS +, '\r'); + +51 if( +xtN + = +NULL + && +xtR + == NULL){ + +52 +size_t + +Β + = ((*) +mesge + + +mesgeL +- +leS +; + +53 * +lda + = (*) + `mloc +( +Β ++1); + +54 if( +lda + ! +NULL +){ + +55 + `memy +( +lda +, +leS +, +Β +); + +56 +lda +[ +Β +] = 0; + +57 +ev + + + `F +("data: "); + +58 +ev + + +lda +; + +59 +ev + + + `F +("\r\n\r\n"); + +60 + ` +( +lda +); + +62 +leS + = (*) +mesge + + +mesgeL +; + +64 * +xtLe + = +NULL +; + +65 if( +xtN + ! +NULL + && +xtR + != NULL){ + +66 if( +xtR + < +xtN +){ + +67 +leEnd + = +xtR +; + +68 if( +xtN + =( +xtR + + 1)) + +69 +xtLe + = +xtN + + 1; + +71 +xtLe + = +xtR + + 1; + +73 +leEnd + = +xtN +; + +74 if( +xtR + =( +xtN + + 1)) + +75 +xtLe + = +xtR + + 1; + +77 +xtLe + = +xtN + + 1; + +79 } if( +xtN + ! +NULL +){ + +80 +leEnd + = +xtN +; + +81 +xtLe + = +xtN + + 1; + +83 +leEnd + = +xtR +; + +84 +xtLe + = +xtR + + 1; + +87 +size_t + +Β + = +leEnd + - +leS +; + +88 * +lda + = (*) + `mloc +( +Β ++1); + +89 if( +lda + ! +NULL +){ + +90 + `memy +( +lda +, +leS +, +Β +); + +91 +lda +[ +Β +] = 0; + +92 +ev + + + `F +("data: "); + +93 +ev + + +lda +; + +94 +ev + + + `F +("\r\n"); + +95 + ` +( +lda +); + +97 +leS + = +xtLe +; + +98 if( +leS + =((*) +mesge + + +mesgeL +)) + +99 +ev + + + `F +("\r\n"); + +101 }  +leS + < ((*) +mesge + + +mesgeL +)); + +104  +ev +; + +105 + } +} + +109 + gAsyncEvtSourMesge +:: + $AsyncEvtSourMesge +(cڡ * +da +, +size_t + +n +) + +110 : + `_da +( +nuαr +), + `_n +( +n +), + `_ +(0), + $_acked +(0) + +112 +_da + = ( +ut8_t +*) + `mloc +( +_n ++1); + +113 if( +_da + = +nuαr +){ + +114 +_n + = 0; + +116 + `memy +( +_da +, +da +, +n +); + +117 +_da +[ +_n +] = 0; + +119 + } +} + +121 + gAsyncEvtSourMesge +::~ + $AsyncEvtSourMesge +() { + +122 if( +_da + ! +NULL +) + +123 + ` +( +_da +); + +124 + } +} + +126 +size_t + + gAsyncEvtSourMesge +:: + $ack +( +size_t + +n +, +ut32_t + +time +) { + +127 () +time +; + +129 if( +_acked + + +n + > +_n +){ + +131 cڡ +size_t + +exa + = +_acked + + +n + - +_n +; + +132 +_acked + = +_n +; + +133  +exa +; + +136 +_acked + + +n +; + +138 + } +} + +140 +size_t + + gAsyncEvtSourMesge +:: + $nd +( +AsyncCl + * + +) { + +141 cڡ +size_t + +n + = +_n + - +_ +; + +142 if( + +-> + `a +(< +n +){ + +145 +size_t + + + = + +-> + `add +((cڡ *) +_da +, +n +); + +146 if( + +-> + `nSd +()) + +147 + +-> + `nd +(); + +148 +_ + + + +; + +149  + +; + +150 + } +} + +154 + gAsyncEvtSourCl +:: + $AsyncEvtSourCl +( +AsyncWebSvReque + * +que +, +AsyncEvtSour + * +rv +) + +155 : + `_mesgeQueue +( +LkedLi +< +AsyncEvtSourMesge + *>([](AsyncEvtSourMesg* +m +){ +de + m; + } +})) + +157 + g_ + = +que +-> + +(); + +158 + g_rv + = +rv +; + +159 + g_ϡId + = 0; + +160 if( + gque +-> +hasHd +( +F +("Last-Event-ID"))) + +161 + g_ϡId + = +oi +( +que +-> +gHd +( +F +("La-Evt-ID"))-> +vue +(). +c_r +()); + +163 + g_ +-> +tRxTimeout +(0); + +164 + g_ +-> +E +( +NULL +, NULL); + +165 + g_ +-> +Ack +([](* +r +, +AsyncCl +* +c +, +size_t + +n +, +ut32_t + +time +){ ()c; (( +AsyncEvtSourCl +*)))-> +_Ack +֒,ime); }, +this +); + +166 + g_ +-> +Pl +([](* +r +, +AsyncCl +* +c +){ ()c; (( +AsyncEvtSourCl +*)))-> +_Pl +(); }, +this +); + +167 + g_ +-> +Da +( +NULL +, NULL); + +168 + g_ +-> +Timeout +([ +this +](* +r +, +AsyncCl +* +c + +__ibu__ +(( +unud +)), +ut32_t + +time +){ (( +AsyncEvtSourCl +*)))-> +_Timeout +(time); },his); + +169 + g_ +-> +Disc +([ +this +](* +r +, +AsyncCl +* +c +){ (( +AsyncEvtSourCl +*)))-> +_Disc +(); +de + c; },his); + +171 + g_rv +-> +_addCl +( +this +); + +172 +de + + gque +; + +175 + gAsyncEvtSourCl +::~ + $AsyncEvtSourCl +(){ + +176 +_mesgeQueue +. + ` +(); + +177 + `o +(); + +178 + } +} + +180  + gAsyncEvtSourCl +:: + $_queueMesge +( +AsyncEvtSourMesge + * +daMesge +){ + +181 if( +daMesge + = +NULL +) + +183 if(! + `ced +()){ + +184 +de + +daMesge +; + +187 if( +_mesgeQueue +. + `ngth +(> +SSE_MAX_QUEUED_MESSAGES +){ + +188 + `s_tf +( + `Sg +( + `F +("ERROR: Tomy mesgequeued\n")). + `c_r +()); + +189 +de + +daMesge +; + +191 +_mesgeQueue +. + `add +( +daMesge +); + +193 if( +_ +-> + `nSd +()) + +194 + `_runQueue +(); + +195 + } +} + +197  + gAsyncEvtSourCl +:: + $_Ack +( +size_t + +n +, +ut32_t + +time +){ + +198  +n + && ! +_mesgeQueue +. + `isEmy +()){ + +199 +n + = +_mesgeQueue +. + `t +()-> + `ack +֒, +time +); + +200 if( +_mesgeQueue +. + `t +()-> + `fished +()) + +201 +_mesgeQueue +. + `move +(_mesgeQueue. + `t +()); + +204 + `_runQueue +(); + +205 + } +} + +207  + gAsyncEvtSourCl +:: + $_Pl +(){ + +208 if(! +_mesgeQueue +. + `isEmy +()){ + +209 + `_runQueue +(); + +211 + } +} + +214  + gAsyncEvtSourCl +:: +_Timeout +( +ut32_t + +time + +__ibu__ +(( +unud +))){ + +215 +_ +-> +o +( +ue +); + +218  + gAsyncEvtSourCl +:: + $_Disc +(){ + +219 +_ + = +NULL +; + +220 +_rv +-> + `_hdDisc +( +this +); + +221 + } +} + +223  + gAsyncEvtSourCl +:: + $o +(){ + +224 if( +_ + ! +NULL +) + +225 +_ +-> + `o +(); + +226 + } +} + +228  + gAsyncEvtSourCl +:: + $wre +(cڡ * +mesge +, +size_t + +n +){ + +229 + `_queueMesge +( +w + + `AsyncEvtSourMesge +( +mesge +, +n +)); + +230 + } +} + +232  + gAsyncEvtSourCl +:: + $nd +(cڡ * +mesge +, cڡ * +evt +, +ut32_t + +id +, ut32_ +c +){ + +233 +Sg + +ev + = + `geEvtMesge +( +mesge +, +evt +, +id +, +c +); + +234 + `_queueMesge +( +w + + `AsyncEvtSourMesge +( +ev +. + `c_r +(),v. + `ngth +())); + +235 + } +} + +237  + gAsyncEvtSourCl +:: + $_runQueue +(){ + +238 ! +_mesgeQueue +. + `isEmy +(&& _mesgeQueue. + `t +()-> + `fished +()){ + +239 +_mesgeQueue +. + `move +(_mesgeQueue. + `t +()); + +242 aut +i + = +_mesgeQueue +. + `beg +(); i !_mesgeQueue. + `d +(); ++i) + +244 if(!(* +i +)-> + ` +()) + +245 (* +i +)-> + `nd +( +_ +); + +247 + } +} + +252 + gAsyncEvtSour +:: + $AsyncEvtSour +(cڡ +Sg +& +u +) + +253 : + `_u +( +u +) + +254 , + `_s +( +LkedLi +< +AsyncEvtSourCl + *>([](AsyncEvtSourCl * +c +){ +de + c; + } +})) + +255 , + $_ccb +( +NULL +) + +256 { + } +} + +258 + gAsyncEvtSour +::~ + $AsyncEvtSour +(){ + +259 + `o +(); + +260 + } +} + +262  + gAsyncEvtSour +:: + $C +( +ArEvtHdrFuni + +cb +){ + +263 +_ccb + = +cb +; + +264 + } +} + +266  + gAsyncEvtSour +:: + $_addCl +( +AsyncEvtSourCl + * + +){ + +280 +_s +. + `add +( + +); + +281 if( +_ccb +) + +282 + `_ccb +( + +); + +283 + } +} + +285  + gAsyncEvtSour +:: + $_hdDisc +( +AsyncEvtSourCl + * + +){ + +286 +_s +. + `move +( + +); + +287 + } +} + +289  + gAsyncEvtSour +:: + $o +(){ + +290 cڡut& +c +: +_s +){ + +291 if( +c +-> + `ced +()) + +292 +c +-> + `o +(); + +294 + } +} + +297 +size_t + + gAsyncEvtSour +:: + $avgPacksWag +() const { + +298 if( +_s +. + `isEmy +()) + +301 +size_t + +aql +=0; + +302 +ut32_t + +nCedCls +=0; + +304 cڡut& +c +: +_s +){ + +305 if( +c +-> + `ced +()) { + +306 +aql ++= +c +-> + `cksWag +(); + +307 ++ +nCedCls +; + +311  (( +aql ++ ( +nCedCls +/2))/(nConnectedClients); + +312 + } +} + +314  + gAsyncEvtSour +:: + $nd +(cڡ * +mesge +, cڡ * +evt +, +ut32_t + +id +, ut32_ +c +){ + +317 +Sg + +ev + = + `geEvtMesge +( +mesge +, +evt +, +id +, +c +); + +318 cڡut& +c +: +_s +){ + +319 if( +c +-> + `ced +()) { + +320 +c +-> + `wre +( +ev +. + `c_r +(),v. + `ngth +()); + +323 + } +} + +325 +size_t + + gAsyncEvtSour +:: + $cou +() const { + +326  +_s +. + `cou_if +([]( +AsyncEvtSourCl + * +c +){ + +327  +c +-> + `ced +(); + +329 + } +} + +331 +bo + + gAsyncEvtSour +:: + $nHd +( +AsyncWebSvReque + * +que +){ + +332 if( +que +-> + `mhod +(! +HTTP_GET + || !que-> + `u +(). + `equs +( +_u +)) { + +333  +l +; + +335 +que +-> + `addIegHd +( + `F +("Last-Event-ID")); + +336  +ue +; + +337 + } +} + +339  + gAsyncEvtSour +:: + $hdReque +( +AsyncWebSvReque + * +que +){ + +340 if(( +_uame +. + `ngth +(&& +_sswd +.ngth()&& ! +que +-> + `authti +(_uame. + `c_r +(), _password.c_str())) { + +341  +que +-> + `queAuthtiti +(); + +343 +que +-> + `nd +( +w + + `AsyncEvtSourReڣ +( +this +)); + +344 + } +} + +348 + gAsyncEvtSourReڣ +:: + $AsyncEvtSourReڣ +( +AsyncEvtSour + * +rv +){ + +349 +_rv + = +rv +; + +350 +_code + = 200; + +351 +_cڋTy + = + `F +("text/event-stream"); + +352 +_ndCڋLgth + = +l +; + +353 + `addHd +( + `F +("Cache-Control"), F("no-cache")); + +354 + `addHd +( + `F +("Connection"), F("keep-alive")); + +355 + } +} + +357  + gAsyncEvtSourReڣ +:: + $_d +( +AsyncWebSvReque + * +que +){ + +358 +Sg + +out + = + `_asmbHd +( +que +-> + `vsi +()); + +359 +que +-> + ` +()-> + `wre +( +out +. + `c_r +(), +_hdLgth +); + +360 +_e + = +RESPONSE_WAIT_ACK +; + +361 + } +} + +363 +size_t + + gAsyncEvtSourReڣ +:: +_ack +( +AsyncWebSvReque + * +que +, size_ +n +, +ut32_t + +time + +__ibu__ +(( +unud +))){ + +364 if( + gn +){ + +365 +w + +AsyncEvtSourCl +( +que +, +_rv +); + + @lib/ESPAsyncWebServer/AsyncEventSource.h + +20 #ide +ASYNCEVENTSOURCE_H_ + + +21  + #ASYNCEVENTSOURCE_H_ + + + ) + +23  + ~ + +24 #ifde +ESP32 + + +25  + ~ + +26  + #SSE_MAX_QUEUED_MESSAGES + 32 + + ) + +28  + ~ + +29  + #SSE_MAX_QUEUED_MESSAGES + 8 + + ) + +31  + ~ + +33  + ~"AsyncWebSynchrizi.h +" + +35 #ifde +ESP8266 + + +36  + ~ + +37 #ifde +CRYPTO_HASH_h + + +38  + ~<../c/Hash.h +> + +42 #ifde +ESP32 + + +43  + #DEFAULT_MAX_SSE_CLIENTS + 8 + + ) + +45  + #DEFAULT_MAX_SSE_CLIENTS + 4 + + ) + +48 +ass + + gAsyncEvtSour +; + +49 +ass + + gAsyncEvtSourReڣ +; + +50 +ass + + gAsyncEvtSourCl +; + +51  + gd +:: + tfuni +<( + tAsyncEvtSourCl + * + t +)> + tArEvtHdrFuni +; + +53 as + cAsyncEvtSourMesge + { + +54 + mive +: + +55 +ut8_t + * +_da +; + +56 +size_t + + m_n +; + +57 +size_t + + m_ +; + +59 +size_t + + m_acked +; + +60 + mpublic +: + +61 +AsyncEvtSourMesge +(cڡ * +da +, +size_t + +n +); + +62 ~ +AsyncEvtSourMesge +(); + +63 +size_t + +ack +(size_ +n +, +ut32_t + +time + +__ibu__ +(( +unud +))); + +64 +size_t + +nd +( +AsyncCl + * + +); + +65 +bo + + $fished +(){  +_acked + = +_n +; } + +66 +bo + + $ +({  +_ + = +_n +; + } +} + +69 as + cAsyncEvtSourCl + { + +70 + mive +: + +71 +AsyncCl + * +_ +; + +72 +AsyncEvtSour + * + m_rv +; + +73 +ut32_t + + m_ϡId +; + +74 + mLkedLi +< + mAsyncEvtSourMesge + *> + m_mesgeQueue +; + +75  +_queueMesge +( +AsyncEvtSourMesge + * +daMesge +); + +76  +_runQueue +(); + +78 + mpublic +: + +80 +AsyncEvtSourCl +( +AsyncWebSvReque + * +que +, +AsyncEvtSour + * +rv +); + +81 ~ +AsyncEvtSourCl +(); + +83 +AsyncCl +* + $ +(){  +_ +; } + +84  + `o +(); + +85  + `wre +(cڡ * +mesge +, +size_t + +n +); + +86  + `nd +(cڡ * +mesge +, cڡ * +evt += +NULL +, +ut32_t + +id +=0, ut32_ +c +=0); + +87 +bo + + $ced +(cڡ {  ( +_ + ! +NULL +&& _-> + `ced +(); + } +} + +88 +ut32_t + + $ϡId +(cڡ {  +_ϡId +; + } +} + +89 +size_t + + $cksWag +(cڡ {  +_mesgeQueue +. + `ngth +(); + } +} + +92  +_Ack +( +size_t + +n +, +ut32_t + +time +); + +93  +_Pl +(); + +94  +_Timeout +( +ut32_t + +time +); + +95  +_Disc +(); + +98 as + cAsyncEvtSour +: +public + +AsyncWebHdr + { + +99 +ive +: + +100 +Sg + +_u +; + +101 + mLkedLi +< + mAsyncEvtSourCl + *> + m_s +; + +102 +ArEvtHdrFuni + + m_ccb +; + +103 + mpublic +: + +104 +AsyncEvtSour +(cڡ +Sg +& +u +); + +105 ~ +AsyncEvtSour +(); + +107 cڡ * + $u +(cڡ {  +_u +. + `c_r +(); } + +108  + `o +(); + +109  + `C +( +ArEvtHdrFuni + +cb +); + +110  + `nd +(cڡ * +mesge +, cڡ * +evt += +NULL +, +ut32_t + +id +=0, ut32_ +c +=0); + +111 +size_t + + $cou +() const; + +112 +size_t + + $avgPacksWag +() const; + +115  + `_addCl +( +AsyncEvtSourCl + * + +); + +116  + `_hdDisc +( +AsyncEvtSourCl + * + +); + +117 +vtu + +bo + + $nHd +( +AsyncWebSvReque + * +que + +ovride + +f +; + +118 +vtu +  + $hdReque +( +AsyncWebSvReque + * +que + +ovride + +f +; + +119 + } +}; + +121 as + cAsyncEvtSourReڣ +: +public + +AsyncWebSvReڣ + { + +122 +ive +: + +123 +Sg + +_cڋ +; + +124 +AsyncEvtSour + * + m_rv +; + +125 + mpublic +: + +126 +AsyncEvtSourReڣ +( +AsyncEvtSour + * +rv +); + +127  +_d +( +AsyncWebSvReque + * +que +); + +128 +size_t + +_ack +( +AsyncWebSvReque + * +que +, size_ +n +, +ut32_t + +time +); + +129 +bo + + $_sourVid +(cڡ {  +ue +; } + +130 + } +}; + + @lib/ESPAsyncWebServer/AsyncJson.h + +35 #ide +ASYNC_JSON_H_ + + +36  + #ASYNC_JSON_H_ + + + ) + +37  + ~ + +38  + ~ + +39  + ~ + +41 #i +ARDUINOJSON_VERSION_MAJOR + == 5 + +42  + #ARDUINOJSON_5_COMPATIBILITY + + + ) + +44  + #DYNAMIC_JSON_DOCUMENT_SIZE + 1024 + + ) + +47 +cڡex + cڡ * + gJSON_MIMETYPE + = "application/json"; + +53 as + cChunkPrt + : +public + +Prt + { + +54 +ive +: + +55 +ut8_t +* +_dei +; + +56 +size_t + + m_to_sk +; + +57 +size_t + + m_to_wre +; + +58 +size_t + + m_pos +; + +59 + mpublic +: + +60 + $ChunkPrt +( +ut8_t +* +dei +, +size_t + +om +, size_ +n +) + +61 : + `_dei +( +dei +), + `_to_sk +( +om +), + `_to_wre +( +n +), +_pos +{0} { + } +} + +62 + gvtu + ~ + $ChunkPrt +(){ + } +} + +63 +size_t + + $wre +( +ut8_t + +c +){ + +64 i( +_to_sk + > 0) { + +65 +_to_sk +--; + +67 } i( +_to_wre + > 0) { + +68 +_to_wre +--; + +69 +_dei +[ +_pos +++] = +c +; + +73 + } +} + +74 +size_t + + $wre +(cڡ +ut8_t + * +bufr +, +size_t + +size +) + +76  +this +-> +Prt +:: + `wre +( +bufr +, +size +); + +77 + } +} + +80 as + cAsyncJsReڣ +: +public + +AsyncAbReڣ + { + +81 +eed +: + +83 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +84 +DymicJsBufr + +_jsBufr +; + +86 +DymicJsDocumt + + m_jsBufr +; + +89 +JsV + + m_ro +; + +90 +bo + + m_isVid +; + +92 + mpublic +: + +94 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +95 + $AsyncJsReڣ +( +bo + +isAay += +l +): +_isVid +{false} { + +96 +_code + = 200; + +97 +_cڋTy + = +JSON_MIMETYPE +; + +98 if( +isAay +) + +99 +_ro + = +_jsBufr +. + `Aay +(); + +101 +_ro + = +_jsBufr +. + `Obje +(); + +102 + } +} + +104 + $AsyncJsReڣ +( +bo + +isAay += +l +, +size_t + +maxJsBufrSize + = +DYNAMIC_JSON_DOCUMENT_SIZE +: + `_jsBufr +(maxJsBufrSize), +_isVid +{ + } +false} { + +105 + g_code + = 200; + +106 + g_cڋTy + = +JSON_MIMETYPE +; + +107 if( + gisAay +) + +108 + g_ro + = +_jsBufr +. +NeedAay +(); + +110 + g_ro + = +_jsBufr +. +NeedObje +(); + +114 ~ + $AsyncJsReڣ +({ + } +} + +115 + gJsV + & + $gRo +({  +_ro +; + } +} + +116 +bo + + $_sourVid +(cڡ {  +_isVid +; + } +} + +117 +size_t + + $tLgth +() { + +119 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +120 +_cڋLgth + = +_ro +. + `msuLgth +(); + +122 +_cڋLgth + = + `msuJs +( +_ro +); + +125 i( +_cڋLgth +{ +_isVid + = +ue +; } + +126  +_cڋLgth +; + +127 + } +} + +129 +size_t + + $gSize +({  +_jsBufr +. + `size +(); + } +} + +131 +size_t + + $_flBufr +( +ut8_t + * +da +, +size_t + +n +){ + +132 +ChunkPrt + + `de +( +da +, +_Lgth +, +n +); + +134 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +135 +_ro +. + `tTo + +de + ) ; + +137 + `rlizeJs +( +_ro +, +de +); + +139  +n +; + +140 + } +} + +143 as + cPyAsyncJsReڣ +: +public + +AsyncJsReڣ + { + +144 +public +: + +145 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +146 + $PyAsyncJsReڣ + ( +bo + +isAay += +l +: +AsyncJsReڣ +{isAay} { + } +} + +148 + $PyAsyncJsReڣ + ( +bo + +isAay += +l +, +size_t + +maxJsBufrSize + = +DYNAMIC_JSON_DOCUMENT_SIZE +: +AsyncJsReڣ +{isAay, + } +maxJsonBufferSize} {} + +150 +size_t + + $tLgth + () { + +151 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +152 +_cڋLgth + = +_ro +. + `msuPyLgth + (); + +154 +_cڋLgth + = + `msuJsPy +( +_ro +); + +156 i( +_cڋLgth +{ +_isVid + = +ue +;} + +157  +_cڋLgth +; + +158 + } +} + +159 +size_t + + $_flBufr + ( +ut8_t + * +da +, +size_t + +n +) { + +160 +ChunkPrt + + `de + ( +da +, +_Lgth +, +n +); + +161 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +162 +_ro +. + `tyPrtTo + ( +de +); + +164 + `rlizeJsPy +( +_ro +, +de +); + +166  +n +; + +167 + } +} + +170  + gd +:: + tfuni +<( + tAsyncWebSvReque + * + tque +, + tJsV + & + tjs +)> + tArJsRequeHdrFuni +; + +172 as + cAsyncClbackJsWebHdr +: +public + +AsyncWebHdr + { + +173 +ive +: + +174 +eed +: + +175 cڡ +Sg + +_uri +; + +176 +WebRequeMhodCompose + + m_mhod +; + +177 +ArJsRequeHdrFuni + + m_Reque +; + +178 +size_t + + m_cڋLgth +; + +179 #ide +ARDUINOJSON_5_COMPATIBILITY + + +180 cڡ +size_t + + mmaxJsBufrSize +; + +182 +size_t + + m_maxCڋLgth +; + +183 + mpublic +: + +184 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +185 + $AsyncClbackJsWebHdr +(cڡ +Sg +& +uri +, +ArJsRequeHdrFuni + +Reque +) + +186 : + `_uri +( +uri +), + `_mhod +( +HTTP_POST +| +HTTP_PUT +| +HTTP_PATCH +), + `_Reque +( +Reque +), + $_maxCڋLgth +(16384) {} + +188 + $AsyncClbackJsWebHdr +(cڡ +Sg +& +uri +, +ArJsRequeHdrFuni + +Reque +, +size_t + +maxJsBufrSize += +DYNAMIC_JSON_DOCUMENT_SIZE +) + +189 : + `_uri +( +uri +), + `_mhod +( +HTTP_POST +| +HTTP_PUT +| +HTTP_PATCH +), + `_Reque +( +Reque +), + `maxJsBufrSize +( +maxJsBufrSize +), + $_maxCڋLgth +(16384{ + } +} + +192  + $tMhod +( +WebRequeMhodCompose + +mhod +){ +_mhod + = mhod; + } +} + +193  + $tMaxCڋLgth +( +maxCڋLgth +){ +_maxCڋLgth + = maxCڋLgth; + } +} + +194  + $Reque +( +ArJsRequeHdrFuni + + +){ +_Reque + = fn; + } +} + +196 +vtu + +bo + + $nHd +( +AsyncWebSvReque + * +que + +ovride + +f +{ + +197 if(! +_Reque +) + +198  +l +; + +200 if(!( +_mhod + & +que +-> + `mhod +())) + +201  +l +; + +203 if( +_uri +. + `ngth +(&& (_ur! +que +-> + `u +(&& !que->u(). + `tsWh +(_uri+"/"))) + +204  +l +; + +206 i! +que +-> + `cڋTy +(). + `equsIgneCa +( +JSON_MIMETYPE +) ) + +207  +l +; + +209 +que +-> + `addIegHd +("ANY"); + +210  +ue +; + +211 + } +} + +213 +vtu +  + $hdReque +( +AsyncWebSvReque + * +que + +ovride + +f + { + +214 if( +_Reque +) { + +215 i( +que +-> +_mpObje + ! +NULL +) { + +217 #ifde +ARDUINOJSON_5_COMPATIBILITY + + +218 +DymicJsBufr + +jsBufr +; + +219 +JsV + +js + = +jsBufr +. + `r +(( +ut8_t +*)( +que +-> +_mpObje +)); + +220 i( +js +. + `sucss +()) { + +222 +DymicJsDocumt + + `jsBufr +( +this +-> +maxJsBufrSize +); + +223 +DerliziE + +r + = + `derlizeJs +( +jsBufr +, ( +ut8_t +*)( +que +-> +_mpObje +)); + +224 if(! +r +) { + +225 +JsV + +js + = +jsBufr +. +as +(); + +228 + `_Reque +( +que +, +js +); + +232 +que +-> + `nd +( +_cڋLgth + > +_maxCڋLgth + ? 413 : 400); + +234 +que +-> + `nd +(500); + +236 + } +} + +237 +vtu +  + $hdUd +( +AsyncWebSvReque + * +que +, cڡ +Sg +& +fame +, +size_t + +dex +, +ut8_t + * +da +, size_ +n +, +bo + +f + +ovride + final { + +238 + } +} + +239 +vtu +  + $hdBody +( +AsyncWebSvReque + * +que +, +ut8_t + * +da +, +size_t + +n +, size_ +dex +, size_ +tٮ + +ovride + +f + { + +240 i( +_Reque +) { + +241 +_cڋLgth + = +tٮ +; + +242 i( +tٮ + > 0 && +que +-> +_mpObje + = +NULL + &&ٮ < +_maxCڋLgth +) { + +243 +que +-> +_mpObje + = + `mloc +( +tٮ +); + +245 i( +que +-> +_mpObje + ! +NULL +) { + +246 + `memy +(( +ut8_t +*)( +que +-> +_mpObje ++ +dex +, +da +, +n +); + +249 + } +} + +250 +vtu + +bo + + $isRequeHdrTrivl +( +ovride + +f + { +_Reque + ? +l + : +ue +; + } +} + + @lib/ESPAsyncWebServer/AsyncWebSocket.cpp + +21  + ~"Arduo.h +" + +22  + ~"AsyncWebSock.h +" + +24  + ~ + +26 #ide +ESP8266 + + +29 +ut32_t + +e +[5]; + +30 +ut32_t + +cou +[2]; + +31  +bufr +[64]; + +32 } + tSHA1_CTX +; + +34  +SHA1Tnsfm +( +ut32_t + +e +[5], cڡ  +bufr +[64]); + +35  +SHA1In +( +SHA1_CTX +* +cڋxt +); + +36  +SHA1Upde +( +SHA1_CTX +* +cڋxt +, cڡ * +da +, +ut32_t + +n +); + +37  +SHA1F +( +dige +[20], +SHA1_CTX +* +cڋxt +); + +40  + ~ + +43  + #MAX_PRINTF_LEN + 64 + + ) + +45 +size_t + +AsyncWebSockMesgeBufrLkedLi +:: +_tٮCou + = 0; + +46 +size_t + + gAsyncWebSockMesgeBufrLkedLi +:: +_tٮSize + = 0; + +48 +size_t + + $webSockSdFmeWdow +( +AsyncCl + * + +){ + +49 if(! + +-> + `nSd +()) + +51 +size_t + +a + = + +-> + `a +(); + +52 if( +a + < 9) + +54  +a + - 8; + +55 + } +} + +57 +size_t + + $webSockSdFme +( +AsyncCl + * + +, +bo + +f +, +ut8_t + +code +, bo +mask +, ut8_* +da +, +size_t + +n +){ + +58 if(! + +-> + `nSd +()) + +60 +size_t + +a + = + +-> + `a +(); + +61 if( +a + < 2) + +63 +ut8_t + +mbuf +[4] = {0,0,0,0}; + +64 +ut8_t + +hdL + = 2; + +65 if( +n + && +mask +){ + +66 +hdL + += 4; + +67 +mbuf +[0] = + `nd +() % 0xFF; + +68 +mbuf +[1] = + `nd +() % 0xFF; + +69 +mbuf +[2] = + `nd +() % 0xFF; + +70 +mbuf +[3] = + `nd +() % 0xFF; + +72 if( +n + > 125) + +73 +hdL + += 2; + +74 if( +a + < +hdL +) + +76 +a + - +hdL +; + +78 if( +n + > +a +)en = space; + +80 +ut8_t + * +buf + = (ut8_t*) + `mloc +( +hdL +); + +81 if( +buf + = +NULL +){ + +86 +buf +[0] = +code + & 0x0F; + +87 if( +f +) + +88 +buf +[0] |= 0x80; + +89 if( +n + < 126) + +90 +buf +[1] = +n + & 0x7F; + +92 +buf +[1] = 126; + +93 +buf +[2] = ( +ut8_t +)(( +n + >> 8) & 0xFF); + +94 +buf +[3] = ( +ut8_t +)( +n + & 0xFF); + +96 if( +n + && +mask +){ + +97 +buf +[1] |= 0x80; + +98 + `memy +( +buf + + ( +hdL + - 4), +mbuf +, 4); + +100 if( + +-> + `add +((cڡ *) +buf +, +hdL +) != headLen){ + +102 + ` +( +buf +); + +105 + ` +( +buf +); + +107 if( +n +){ + +108 if( +n + && +mask +){ + +109 +size_t + +i +; + +110  +i +=0;i< +n +;i++) + +111 +da +[ +i +] = da[i] ^ +mbuf +[i%4]; + +113 if( + +-> + `add +((cڡ *) +da +, +n +) !=en){ + +118 if(! + +-> + `nd +()){ + +122  +n +; + +123 + } +} + +132 + gAsyncWebSockMesgeBufr +:: + $AsyncWebSockMesgeBufr +() + +133 : + `_da +( +nuαr +) + +134 , + `_n +(0) + +135 , + `_lock +( +l +) + +136 , + $_cou +(0) + +139 + } +} + +141 + gAsyncWebSockMesgeBufr +:: + $AsyncWebSockMesgeBufr +( +ut8_t + * +da +, +size_t + +size +) + +142 : + `_da +( +nuαr +) + +143 , + `_n +( +size +) + +144 , + `_lock +( +l +) + +145 , + $_cou +(0) + +148 i(! +da +) { + +152 +_da + = +w + +ut8_t +[ +_n + + 1]; + +154 i( +_da +) { + +155 + `memy +( +_da +, +da +, +_n +); + +156 +_da +[ +_n +] = 0; + +158 + } +} + +161 + gAsyncWebSockMesgeBufr +:: + $AsyncWebSockMesgeBufr +( +size_t + +size +) + +162 : + `_da +( +nuαr +) + +163 , + `_n +( +size +) + +164 , + `_lock +( +l +) + +165 , + $_cou +(0) + +167 +_da + = +w + +ut8_t +[ +_n + + 1]; + +169 i( +_da +) { + +170 +_da +[ +_n +] = 0; + +173 + } +} + +175 + gAsyncWebSockMesgeBufr +:: + $AsyncWebSockMesgeBufr +(cڡ +AsyncWebSockMesgeBufr + & +cy +) + +176 : + `_da +( +nuαr +) + +177 , + `_n +(0) + +178 , + `_lock +( +l +) + +179 , + $_cou +(0) + +181 +_n + = +cy +._len; + +182 +_lock + = +cy +._lock; + +183 +_cou + = 0; + +185 i( +_n +) { + +186 +_da + = +w + +ut8_t +[ +_n + + 1]; + +187 +_da +[ +_n +] = 0; + +190 i( +_da +) { + +191 + `memy +( +_da +, +cy +._da, +_n +); + +192 +_da +[ +_n +] = 0; + +195 + } +} + +197 + gAsyncWebSockMesgeBufr +:: + $AsyncWebSockMesgeBufr +( +AsyncWebSockMesgeBufr + && +cy +) + +198 : + `_da +( +nuαr +) + +199 , + `_n +(0) + +200 , + `_lock +( +l +) + +201 , + $_cou +(0) + +203 +_n + = +cy +._len; + +204 +_lock + = +cy +._lock; + +205 +_cou + = 0; + +207 i( +cy +. +_da +) { + +208 +_da + = +cy +._data; + +209 +cy +. +_da + = +nuαr +; + +212 + } +} + +214 + gAsyncWebSockMesgeBufr +::~ + $AsyncWebSockMesgeBufr +() + +216 i( +_da +) { + +217 +de +[] +_da +; + +219 + } +} + +221 +bo + + gAsyncWebSockMesgeBufr +:: + $rve +( +size_t + +size +) + +223 +_n + = +size +; + +225 i( +_da +) { + +226 +de +[] +_da +; + +227 +_da + = +nuαr +; + +230 +_da + = +w + +ut8_t +[ +_n + + 1]; + +232 i( +_da +) { + +233 +_da +[ +_n +] = 0; + +234  +ue +; + +236  +l +; + +239 + } +} + +247 as + cAsyncWebSockCڌ + { + +248 + mive +: + +249 +ut8_t + +_code +; + +250 +ut8_t + * + m_da +; + +251 +size_t + + m_n +; + +252 +bo + + m_mask +; + +253 +bo + + m_fished +; + +254 + mpublic +: + +255 + $AsyncWebSockCڌ +( +ut8_t + +code +, ut8_* +da += +NULL +, +size_t + +n +=0, +bo + +mask += +l +) + +256 : + `_code +( +code +) + +257 , + `_n +( +n +) + +258 , + `_mask +( +n + && +mask +) + +259 , + $_fished +( +l +) + +261 if( +da + = +NULL +) + +262 +_n + = 0; + +263 if( +_n +){ + +264 if( +_n + > 125) + +265 +_n + = 125; + +266 +_da + = ( +ut8_t +*) + `mloc +( +_n +); + +267 if( +_da + = +NULL +) + +268 +_n + = 0; + +269 + `memy_P +( +_da +, +da +, +n +); + +270 } +_da + = +NULL +; + +272 +vtu + ~ + $AsyncWebSockCڌ +(){ + +273 if( +_da + ! +NULL +) + +274 + ` +( +_da +); + +275 + } +} + +276 +vtu + +bo + + $fished +(cڡ {  +_fished +; + } +} + +277 +ut8_t + + $code +(){  +_code +; + } +} + +278 +ut8_t + + $n +(){  +_n + + 2; + } +} + +279 +size_t + + $nd +( +AsyncCl + * + +){ + +280 +_fished + = +ue +; + +281  + `webSockSdFme +( + +, +ue +, +_code + & 0x0F, +_mask +, +_da +, +_n +); + +282 + } +} + +290 + gAsyncWebSockBasicMesge +:: + $AsyncWebSockBasicMesge +(cڡ * +da +, +size_t + +n +, +ut8_t + +code +, +bo + +mask +) + +291 : + `_n +( +n +) + +292 , + `_ +(0) + +293 , + `_ack +(0) + +294 , + $_acked +(0) + +296 +_code + = +code + & 0x07; + +297 +_mask + = +mask +; + +298 +_da + = ( +ut8_t +*) + `mloc +( +_n ++1); + +299 if( +_da + = +NULL +){ + +300 +_n + = 0; + +301 +_us + = +WS_MSG_ERROR +; + +303 +_us + = +WS_MSG_SENDING +; + +304 + `memy +( +_da +, +da +, +_n +); + +305 +_da +[ +_n +] = 0; + +307 + } +} + +308 + gAsyncWebSockBasicMesge +:: + $AsyncWebSockBasicMesge +( +ut8_t + +code +, +bo + +mask +) + +309 : + `_n +(0) + +310 , + `_ +(0) + +311 , + `_ack +(0) + +312 , + `_acked +(0) + +313 , + $_da +( +NULL +) + +315 +_code + = +code + & 0x07; + +316 +_mask + = +mask +; + +318 + } +} + +321 + gAsyncWebSockBasicMesge +::~ + $AsyncWebSockBasicMesge +() { + +322 if( +_da + ! +NULL +) + +323 + ` +( +_da +); + +324 + } +} + +326  + gAsyncWebSockBasicMesge +:: + $ack +( +size_t + +n +, +ut32_t + +time +) { + +327 () +time +; + +328 +_acked + + +n +; + +329 if( +_ + = +_n + && +_acked + = +_ack +){ + +330 +_us + = +WS_MSG_SENT +; + +332 + } +} + +333 +size_t + + gAsyncWebSockBasicMesge +:: + $nd +( +AsyncCl + * + +) { + +334 if( +_us + ! +WS_MSG_SENDING +) + +336 if( +_acked + < +_ack +){ + +339 if( +_ + = +_n +){ + +340 if( +_acked + = +_ack +) + +341 +_us + = +WS_MSG_SENT +; + +344 if( +_ + > +_n +){ + +345 +_us + = +WS_MSG_ERROR +; + +349 +size_t + +toSd + = +_n + - +_ +; + +350 +size_t + +wdow + = + `webSockSdFmeWdow +( + +); + +352 if( +wdow + < +toSd +) { + +353 +toSd + = +wdow +; + +356 +_ + + +toSd +; + +357 +_ack + + +toSd + + (oSd < 126)?2:4+ ( +_mask + * 4); + +359 +bo + +f + = ( +_ + = +_n +); + +360 +ut8_t +* +dP + = (ut8_t*)( +_da + + ( +_ + - +toSd +)); + +361 +ut8_t + +Code + = ( +toSd + && +_ + =toSd)? +_code +:(ut8_t) +WS_CONTINUATION +; + +363 +size_t + + + = + `webSockSdFme +( + +, +f +, +Code +, +_mask +, +dP +, +toSd +); + +364 +_us + = +WS_MSG_SENDING +; + +365 if( +toSd + && + + !=oSend){ + +366 +_ + -( +toSd + - + +); + +367 +_ack + -( +toSd + - + +); + +369  + +; + +370 + } +} + +391 + gAsyncWebSockMuiMesge +:: + $AsyncWebSockMuiMesge +( +AsyncWebSockMesgeBufr + * +bufr +, +ut8_t + +code +, +bo + +mask +) + +392 : + `_n +(0) + +393 , + `_ +(0) + +394 , + `_ack +(0) + +395 , + `_acked +(0) + +396 , + $_WSbufr +( +nuαr +) + +399 +_code + = +code + & 0x07; + +400 +_mask + = +mask +; + +402 i( +bufr +) { + +403 +_WSbufr + = +bufr +; + +404 (* +_WSbufr +)++; + +405 +_da + = +bufr +-> + `g +(); + +406 +_n + = +bufr +-> + `ngth +(); + +407 +_us + = +WS_MSG_SENDING +; + +410 +_us + = +WS_MSG_ERROR +; + +413 + } +} + +416 + gAsyncWebSockMuiMesge +::~ + $AsyncWebSockMuiMesge +() { + +417 i( +_WSbufr +) { + +418 (* +_WSbufr +)--; + +420 + } +} + +422  + gAsyncWebSockMuiMesge +:: + $ack +( +size_t + +n +, +ut32_t + +time +) { + +423 () +time +; + +424 +_acked + + +n +; + +425 if( +_ + > +_n + && +_acked + > +_ack +){ + +426 +_us + = +WS_MSG_SENT +; + +429 + } +} + +430 +size_t + + gAsyncWebSockMuiMesge +:: + $nd +( +AsyncCl + * + +) { + +431 if( +_us + ! +WS_MSG_SENDING +) + +433 if( +_acked + < +_ack +){ + +436 if( +_ + = +_n +){ + +437 +_us + = +WS_MSG_SENT +; + +440 if( +_ + > +_n +){ + +441 +_us + = +WS_MSG_ERROR +; + +446 +size_t + +toSd + = +_n + - +_ +; + +447 +size_t + +wdow + = + `webSockSdFmeWdow +( + +); + +449 if( +wdow + < +toSd +) { + +450 +toSd + = +wdow +; + +453 +_ + + +toSd +; + +454 +_ack + + +toSd + + (oSd < 126)?2:4+ ( +_mask + * 4); + +458 +bo + +f + = ( +_ + = +_n +); + +459 +ut8_t +* +dP + = (ut8_t*)( +_da + + ( +_ + - +toSd +)); + +460 +ut8_t + +Code + = ( +toSd + && +_ + =toSd)? +_code +:(ut8_t) +WS_CONTINUATION +; + +462 +size_t + + + = + `webSockSdFme +( + +, +f +, +Code +, +_mask +, +dP +, +toSd +); + +463 +_us + = +WS_MSG_SENDING +; + +464 if( +toSd + && + + !=oSend){ + +466 +_ + -( +toSd + - + +); + +467 +_ack + -( +toSd + - + +); + +470  + +; + +471 + } +} + +477 cڡ * + gAWSC_PING_PAYLOAD +[] + gPROGMEM + = { "ESPAsyncWebServer-PING" }; + +478 cڡ +size_t + + gAWSC_PING_PAYLOAD_LEN + = 22; + +480 + gAsyncWebSockCl +:: + $AsyncWebSockCl +( +AsyncWebSvReque + * +que +, +AsyncWebSock + * +rv +) + +481 : + `_cڌQueue +( +LkedLi +< +AsyncWebSockCڌ + *>([](AsyncWebSockCڌ * +c +){ +de + c; + } +})) + +482 , +_mesgeQueue +( +LkedLi +< +AsyncWebSockMesge + *>([](AsyncWebSockMesg* +m +){ +de + m; })) + +483 , + $_mpObje +( +NULL +) + +485 +_ + = +que +-> + ` +(); + +486 +_rv + = +rv +; + +487 +_Id + = +_rv +-> + `_gNextId +(); + +488 +_us + = +WS_CONNECTED +; + +489 +_pe + = 0; + +490 +_ϡMesgeTime + = + `mlis +(); + +491 +_kpAlivePiod + = 0; + +492 +_ +-> + `tRxTimeout +(0); + +493 +_ +-> + `E +([](* +r +, +AsyncCl +* +c +, +t8_t + +r +){ ()c; (( +AsyncWebSockCl +*)))-> + `_E +Ӽ); }, +this +); + +494 +_ +-> + `Ack +([](* +r +, +AsyncCl +* +c +, +size_t + +n +, +ut32_t + +time +){ ()c; (( +AsyncWebSockCl +*)))-> + `_Ack +֒,ime); }, +this +); + +495 +_ +-> + `Disc +([](* +r +, +AsyncCl +* +c +){ (( +AsyncWebSockCl +*)))-> + `_Disc +(); +de + c; }, +this +); + +496 +_ +-> + `Timeout +([](* +r +, +AsyncCl +* +c +, +ut32_t + +time +){ ()c; (( +AsyncWebSockCl +*)))-> + `_Timeout +ime); }, +this +); + +497 +_ +-> + `Da +([](* +r +, +AsyncCl +* +c +, * +buf +, +size_t + +n +){ ()c; (( +AsyncWebSockCl +*)))-> + `_Da +(buf,); }, +this +); + +498 +_ +-> + `Pl +([](* +r +, +AsyncCl +* +c +){ ()c; (( +AsyncWebSockCl +*)))-> + `_Pl +(); }, +this +); + +499 +_rv +-> + `_addCl +( +this +); + +500 +_rv +-> + `_hdEvt +( +this +, +WS_EVT_CONNECT +, +que +, +NULL +, 0); + +501 +de + +que +; + +502 + } +} + +504 + gAsyncWebSockCl +::~ + $AsyncWebSockCl +(){ + +505 +_mesgeQueue +. + ` +(); + +506 +_cڌQueue +. + ` +(); + +507 +_rv +-> + `_hdEvt +( +this +, +WS_EVT_DISCONNECT +, +NULL +, NULL, 0); + +508 + } +} + +510  + gAsyncWebSockCl +:: + $_Ack +( +size_t + +n +, +ut32_t + +time +){ + +511 +_ϡMesgeTime + = + `mlis +(); + +512 if(! +_cڌQueue +. + `isEmy +()){ + +513 aut +hd + = +_cڌQueue +. + `t +(); + +514 if( +hd +-> + `fished +()){ + +515 +n + - +hd +-> + `n +(); + +516 if( +_us + = +WS_DISCONNECTING + && +hd +-> + `code +(= +WS_DISCONNECT +){ + +517 +_cڌQueue +. + `move +( +hd +); + +518 +_us + = +WS_DISCONNECTED +; + +519 +_ +-> + `o +( +ue +); + +522 +_cڌQueue +. + `move +( +hd +); + +525 if( +n + && ! +_mesgeQueue +. + `isEmy +()){ + +526 +_mesgeQueue +. + `t +()-> + `ack +( +n +, +time +); + +528 +_rv +-> + `_nBufrs +(); + +529 + `_runQueue +(); + +530 + } +} + +532  + gAsyncWebSockCl +:: + $_Pl +(){ + +533 if( +_ +-> + `nSd +(&& (! +_cڌQueue +. + `isEmy +(|| ! +_mesgeQueue +.isEmpty())){ + +534 + `_runQueue +(); + +535 } if( +_kpAlivePiod + > 0 && +_cڌQueue +. + `isEmy +(&& +_mesgeQueue +.isEmy(&& ( + `mlis +(- +_ϡMesgeTime +) >= _keepAlivePeriod){ + +536 + `pg +(( +ut8_t + *) +AWSC_PING_PAYLOAD +, +AWSC_PING_PAYLOAD_LEN +); + +538 + } +} + +540  + gAsyncWebSockCl +:: + $_runQueue +(){ + +541 ! +_mesgeQueue +. + `isEmy +(&& _mesgeQueue. + `t +()-> + `fished +()){ + +542 +_mesgeQueue +. + `move +(_mesgeQueue. + `t +()); + +545 if(! +_cڌQueue +. + `isEmy +(&& ( +_mesgeQueue +.isEmy(|| _mesgeQueue. + `t +()-> + `bwnFmes +()&& + `webSockSdFmeWdow +( +_ +> ( +size_t +)(_cڌQueue.t()-> + `n +() - 1)){ + +546 +_cڌQueue +. + `t +()-> + `nd +( +_ +); + +547 } if(! +_mesgeQueue +. + `isEmy +(&& _mesgeQueue. + `t +()-> + `bwnFmes +(&& + `webSockSdFmeWdow +( +_ +)){ + +548 +_mesgeQueue +. + `t +()-> + `nd +( +_ +); + +550 + } +} + +552 +bo + + gAsyncWebSockCl +:: + $queueIsFu +(){ + +553 if( + `_queueIsFu +(|| ( +_us + ! +WS_CONNECTED + +ue +; + +554  +l +; + +555 + } +} + +557 +bo + + gAsyncWebSockCl +:: + $_queueIsFu +() const { + +559 ( +_rv +-> + `gQueuedMesgeCou +(> +WS_MAX_QUEUED_MESSAGES +) || + +560 ( +_rv +-> + `gQueuedMesgeSize +(> +WS_MAX_QUEUED_MESSAGES_SIZE +) + +561 #i +WS_MAX_QUEUED_MESSAGES_MIN_HEAP + + +562 || ( +ESP +. + `gFeHp +(< +WS_MAX_QUEUED_MESSAGES_MIN_HEAP +) + +565 + } +} + +567  + gAsyncWebSockCl +:: + $_queueMesge +( +AsyncWebSockMesge + * +daMesge +){ + +568 if( +daMesge + = +NULL +) + +570 if( +_us + ! +WS_CONNECTED +){ + +571 +de + +daMesge +; + +574 if( + `_queueIsFu +()){ + +575 #i +DEBUG + + +576 :: + `tf +( + `PSTR +("AsyncWebSocketClient: Too many messages queued\n")); + +578 +de + +daMesge +; + +580 +_mesgeQueue +. + `add +( +daMesge +); + +582 if( +_ +-> + `nSd +()) + +583 + `_runQueue +(); + +584 + } +} + +586  + gAsyncWebSockCl +:: + $_queueCڌ +( +AsyncWebSockCڌ + * +cڌMesge +){ + +587 if( +cڌMesge + = +NULL +) + +589 +_cڌQueue +. + `add +( +cڌMesge +); + +590 if( +_ +-> + `nSd +()) + +591 + `_runQueue +(); + +592 + } +} + +594  + gAsyncWebSockCl +:: + $o +( +ut16_t + +code +, cڡ * +mesge +){ + +595 if( +_us + ! +WS_CONNECTED +) + +597 if( +code +){ + +598 +ut8_t + +ckL + = 2; + +599 if( +mesge + ! +NULL +){ + +600 +size_t + +mn + = + ` +( +mesge +); + +601 if( +mn + > 123) mlen = 123; + +602 +ckL + + +mn +; + +604 * +buf + = (*) + `mloc +( +ckL +); + +605 if( +buf + ! +NULL +){ + +606 +buf +[0] = ( +ut8_t +)( +code + >> 8); + +607 +buf +[1] = ( +ut8_t +)( +code + & 0xFF); + +608 if( +mesge + ! +NULL +){ + +609 + `memy +( +buf ++2, +mesge +, +ckL + -2); + +611 + `_queueCڌ +( +w + + `AsyncWebSockCڌ +( +WS_DISCONNECT +,( +ut8_t +*) +buf +, +ckL +)); + +612 + ` +( +buf +); + +616 + `_queueCڌ +( +w + + `AsyncWebSockCڌ +( +WS_DISCONNECT +)); + +617 + } +} + +619  + gAsyncWebSockCl +:: + $pg +( +ut8_t + * +da +, +size_t + +n +){ + +620 if( +_us + = +WS_CONNECTED +) + +621 + `_queueCڌ +( +w + + `AsyncWebSockCڌ +( +WS_PING +, +da +, +n +)); + +622 + } +} + +624  + gAsyncWebSockCl +:: + $_E +( +t8_t +){ + } +} + +626  +AsyncWebSockCl +:: + $_Timeout +( +ut32_t + +time +){ + +627 () +time +; + +628 +_ +-> + `o +( +ue +); + +629 + } +} + +631  + gAsyncWebSockCl +:: + $_Disc +(){ + +632 +_ + = +NULL +; + +633 +_rv +-> + `_hdDisc +( +this +); + +634 + } +} + +636  + gAsyncWebSockCl +:: + $_Da +(* +pbuf +, +size_t + + +){ + +637 +_ϡMesgeTime + = + `mlis +(); + +638 +ut8_t + * +da + = (ut8_t*) +pbuf +; + +639  + + > 0){ + +640 if(! +_pe +){ + +641 cڡ +ut8_t + * +fda + = +da +; + +642 +_pfo +. +dex + = 0; + +643 +_pfo +. +f + = ( +fda +[0] & 0x80) != 0; + +644 +_pfo +. +code + = +fda +[0] & 0x0F; + +645 +_pfo +. +masked + = ( +fda +[1] & 0x80) != 0; + +646 +_pfo +. +n + = +fda +[1] & 0x7F; + +647 +da + += 2; + +648 + + -= 2; + +649 if( +_pfo +. +n + == 126){ + +650 +_pfo +. +n + = +fda +[3] | ( +ut16_t +)(fdata[2]) << 8; + +651 +da + += 2; + +652 + + -= 2; + +653 } if( +_pfo +. +n + == 127){ + +654 +_pfo +. +n + = +fda +[9] | ( +ut16_t +)(fda[8]<< 8 | ( +ut32_t +)(fda[7]<< 16 | (ut32_t)(fda[6]<< 24 | ( +ut64_t +)(fdata[5]) << 32 | (uint64_t)(fdata[4]) << 40 | (uint64_t)(fdata[3]) << 48 | (uint64_t)(fdata[2]) << 56; + +655 +da + += 8; + +656 + + -= 8; + +659 if( +_pfo +. +masked +){ + +660 + `memy +( +_pfo +. +mask +, +da +, 4); + +661 +da + += 4; + +662 + + -= 4; + +666 cڡ +size_t + +d + = +d +:: + `m +((size_t)( +_pfo +. +n + - _pfo. +dex +), + +); + +667 cڡut +da + = +da +[ +d +]; + +669 if( +_pfo +. +masked +){ + +670  +size_t + +i +=0;i< +d +;i++) + +671 +da +[ +i +] ^ +_pfo +. +mask +[(_pfo. +dex ++i)%4]; + +674 if(( +d + + +_pfo +. +dex +< _pfo. +n +){ + +675 +_pe + = 1; + +677 if( +_pfo +. +dex + == 0){ + +678 if( +_pfo +. +code +){ + +679 +_pfo +. +mesge_code + = _pfo. +code +; + +680 +_pfo +. +num + = 0; + +681 } +_pfo +. +num + += 1; + +683 +_rv +-> + `_hdEvt +( +this +, +WS_EVT_DATA +, (*)& +_pfo +, ( +ut8_t +*) +da +, +d +); + +685 +_pfo +. +dex + + +d +; + +686 } if(( +d + + +_pfo +. +dex +=_pfo. +n +){ + +687 +_pe + = 0; + +688 if( +_pfo +. +code + = +WS_DISCONNECT +){ + +689 if( +d +){ + +690 +ut16_t + +asCode + = (ut16_t)( +da +[0] << 8) + data[1]; + +691 * +asSg + = (*)( +da ++2); + +692 if( +asCode + > 1001){ + +693 +_rv +-> + `_hdEvt +( +this +, +WS_EVT_ERROR +, (*)& +asCode +, ( +ut8_t +*) +asSg +, + ` +(reasonString)); + +696 if( +_us + = +WS_DISCONNECTING +){ + +697 +_us + = +WS_DISCONNECTED +; + +698 +_ +-> + `o +( +ue +); + +700 +_us + = +WS_DISCONNECTING +; + +701 +_ +-> + `ackL +(); + +702 + `_queueCڌ +( +w + + `AsyncWebSockCڌ +( +WS_DISCONNECT +, +da +, +d +)); + +704 } if( +_pfo +. +code + = +WS_PING +){ + +705 + `_queueCڌ +( +w + + `AsyncWebSockCڌ +( +WS_PONG +, +da +, +d +)); + +706 } if( +_pfo +. +code + = +WS_PONG +){ + +707 if( +d + ! +AWSC_PING_PAYLOAD_LEN + || + `memcmp_P +( +da +, +AWSC_PING_PAYLOAD +, AWSC_PING_PAYLOAD_LEN) != 0) + +708 +_rv +-> + `_hdEvt +( +this +, +WS_EVT_PONG +, +NULL +, +da +, +d +); + +709 } if( +_pfo +. +code + < 8){ + +710 +_rv +-> + `_hdEvt +( +this +, +WS_EVT_DATA +, (*)& +_pfo +, +da +, +d +); + +719 i( +d + > 0) + +720 +da +[ +d +] = +da +; + +722 +da + + +d +; + +723 + + - +d +; + +725 + } +} + +727 +size_t + + gAsyncWebSockCl +:: + $tf +(cڡ * +fm +, ...) { + +728 +va_li + +g +; + +729 + `va_t +( +g +, +fm +); + +730 * +mp + = +w + [ +MAX_PRINTF_LEN +]; + +731 if(! +mp +){ + +732 + `va_d +( +g +); + +735 * +bufr + = +mp +; + +736 +size_t + +n + = + `vtf +( +mp +, +MAX_PRINTF_LEN +, +fm +, +g +); + +737 + `va_d +( +g +); + +739 i( +n + > ( +MAX_PRINTF_LEN + - 1)) { + +740 +bufr + = +w + [ +n + + 1]; + +741 i(! +bufr +) { + +742 +de +[] +mp +; + +745 + `va_t +( +g +, +fm +); + +746 + `vtf +( +bufr +, +n + + 1, +fm +, +g +); + +747 + `va_d +( +g +); + +749 + `xt +( +bufr +, +n +); + +750 i( +bufr + ! +mp +) { + +751 +de +[] +bufr +; + +753 +de +[] +mp +; + +754  +n +; + +755 + } +} + +757 #ide +ESP32 + + +758 +size_t + + gAsyncWebSockCl +:: + $tf_P +( +PGM_P + +fmP +, ...) { + +759 +va_li + +g +; + +760 + `va_t +( +g +, +fmP +); + +761 * +mp + = +w + [ +MAX_PRINTF_LEN +]; + +762 if(! +mp +){ + +763 + `va_d +( +g +); + +766 * +bufr + = +mp +; + +767 +size_t + +n + = + `vtf_P +( +mp +, +MAX_PRINTF_LEN +, +fmP +, +g +); + +768 + `va_d +( +g +); + +770 i( +n + > ( +MAX_PRINTF_LEN + - 1)) { + +771 +bufr + = +w + [ +n + + 1]; + +772 i(! +bufr +) { + +773 +de +[] +mp +; + +776 + `va_t +( +g +, +fmP +); + +777 + `vtf_P +( +bufr +, +n + + 1, +fmP +, +g +); + +778 + `va_d +( +g +); + +780 + `xt +( +bufr +, +n +); + +781 i( +bufr + ! +mp +) { + +782 +de +[] +bufr +; + +784 +de +[] +mp +; + +785  +n +; + +786 + } +} + +789  + gAsyncWebSockCl +:: + $xt +(cڡ * +mesge +, +size_t + +n +){ + +790 + `_queueMesge +( +w + + `AsyncWebSockBasicMesge +( +mesge +, +n +)); + +791 + } +} + +792  + gAsyncWebSockCl +:: + $xt +(cڡ * +mesge +){ + +793 + `xt +( +mesge +, + ` +(message)); + +794 + } +} + +795  + gAsyncWebSockCl +:: + $xt +( +ut8_t + * +mesge +, +size_t + +n +){ + +796 + `xt +((cڡ *) +mesge +, +n +); + +797 + } +} + +798  + gAsyncWebSockCl +:: + $xt +(* +mesge +){ + +799 + `xt +( +mesge +, + ` +(message)); + +800 + } +} + +801  + gAsyncWebSockCl +:: + $xt +(cڡ +Sg + & +mesge +){ + +802 + `xt +( +mesge +. + `c_r +(), mesge. + `ngth +()); + +803 + } +} + +804  + gAsyncWebSockCl +:: + $xt +(cڡ +__FshSgHr + * +da +){ + +805 + `xt +( + `Sg +( +da +)); + +806 + } +} + +807  + gAsyncWebSockCl +:: + $xt +( +AsyncWebSockMesgeBufr + * +bufr +) + +809 + `_queueMesge +( +w + + `AsyncWebSockMuiMesge +( +bufr +)); + +810 + } +} + +812  + gAsyncWebSockCl +:: + $by +(cڡ * +mesge +, +size_t + +n +){ + +813 + `_queueMesge +( +w + + `AsyncWebSockBasicMesge +( +mesge +, +n +, +WS_BINARY +)); + +814 + } +} + +815  + gAsyncWebSockCl +:: + $by +(cڡ * +mesge +){ + +816 + `by +( +mesge +, + ` +(message)); + +817 + } +} + +818  + gAsyncWebSockCl +:: + $by +( +ut8_t + * +mesge +, +size_t + +n +){ + +819 + `by +((cڡ *) +mesge +, +n +); + +820 + } +} + +821  + gAsyncWebSockCl +:: + $by +(* +mesge +){ + +822 + `by +( +mesge +, + ` +(message)); + +823 + } +} + +824  + gAsyncWebSockCl +:: + $by +(cڡ +Sg + & +mesge +){ + +825 + `by +( +mesge +. + `c_r +(), mesge. + `ngth +()); + +826 + } +} + +827  + gAsyncWebSockCl +:: + $by +(cڡ +__FshSgHr + * +da +, +size_t + +n +){ + +828 +PGM_P + +p + = +t_ +( +da +); + +829 * +mesge + = (* + `mloc +( +n +); + +830 if( +mesge +){ + +831 + `memy_P +( +mesge +, +p +, +n +); + +832 + `by +( +mesge +, +n +); + +833 + ` +( +mesge +); + +836 + } +} + +837  + gAsyncWebSockCl +:: + $by +( +AsyncWebSockMesgeBufr + * +bufr +) + +839 + `_queueMesge +( +w + + `AsyncWebSockMuiMesge +( +bufr +, +WS_BINARY +)); + +840 + } +} + +842 +IPAddss + + gAsyncWebSockCl +:: + $meIP +() { + +843 if(! +_ +) { + +844  + `IPAddss +(0U); + +846  +_ +-> + `meIP +(); + +847 + } +} + +849 +ut16_t + + gAsyncWebSockCl +:: + $mePt +() { + +850 if(! +_ +) { + +853  +_ +-> + `mePt +(); + +854 + } +} + +862 + gAsyncWebSock +:: + $AsyncWebSock +(cڡ +Sg +& +u +) + +863 : + `_u +( +u +) + +864 , + `_s +( +LkedLi +< +AsyncWebSockCl + *>([](AsyncWebSockCl * +c +){ +de + c; + } +})) + +865 , +_cNextId +(1) + +866 , + $_abd +( +ue +) + +868 +_evtHdr + = +NULL +; + +869 + } +} + +871 + gAsyncWebSock +::~ + $AsyncWebSock +(){ + } +} + +873  +AsyncWebSock +:: + $_hdEvt +( +AsyncWebSockCl + * + +, +AwsEvtTy + +ty +, * +g +, +ut8_t + * +da +, +size_t + +n +){ + +874 if( +_evtHdr + ! +NULL +){ + +875 + `_evtHdr +( +this +, + +, +ty +, +g +, +da +, +n +); + +877 + } +} + +879  + gAsyncWebSock +:: + $_addCl +( +AsyncWebSockCl + * + +){ + +880 +_s +. + `add +( + +); + +881 + } +} + +883  + gAsyncWebSock +:: + $_hdDisc +( +AsyncWebSockCl + * + +){ + +885 +_s +. + `move_f +([=]( +AsyncWebSockCl + * +c +){ + +886  +c +-> + `id +(= + +->id(); + +888 + } +} + +890 +bo + + gAsyncWebSock +:: + $avaabFWreA +(){ + +891 cڡuto& +c +: +_s +){ + +892 if( +c +-> + `queueIsFu +() +l +; + +894  +ue +; + +895 + } +} + +897 +bo + + gAsyncWebSock +:: + $avaabFWre +( +ut32_t + +id +){ + +898 cڡuto& +c +: +_s +){ + +899 if( +c +-> + `queueIsFu +(&& (c-> + `id +(= +id + ) +l +; + +901  +ue +; + +902 + } +} + +904 +size_t + + gAsyncWebSock +:: + $cou +() const { + +905  +_s +. + `cou_if +([]( +AsyncWebSockCl + * +c +){ + +906  +c +-> + `us +(= +WS_CONNECTED +; + +908 + } +} + +910 +AsyncWebSockCl + * + gAsyncWebSock +:: + $ +( +ut32_t + +id +){ + +911 cڡut& +c +: +_s +){ + +912 if( +c +-> + `id +(= +id + && c-> + `us +(= +WS_CONNECTED +){ + +913  +c +; + +916  +nuαr +; + +917 + } +} + +920  + gAsyncWebSock +:: + $o +( +ut32_t + +id +, +ut16_t + +code +, cڡ * +mesge +){ + +921 +AsyncWebSockCl + * +c + = + ` +( +id +); + +922 if( +c +) + +923 +c +-> + `o +( +code +, +mesge +); + +924 + } +} + +926  + gAsyncWebSock +:: + $oA +( +ut16_t + +code +, cڡ * +mesge +){ + +927 cڡuto& +c +: +_s +){ + +928 if( +c +-> + `us +(= +WS_CONNECTED +) + +929 +c +-> + `o +( +code +, +mesge +); + +931 + } +} + +933  + gAsyncWebSock +:: + $nupCls +( +ut16_t + +maxCls +) + +935 i( + `cou +(> +maxCls +){ + +936 +_s +. + `t +()-> + `o +(); + +938 + } +} + +940  + gAsyncWebSock +:: + $pg +( +ut32_t + +id +, +ut8_t + * +da +, +size_t + +n +){ + +941 +AsyncWebSockCl + * +c + = + ` +( +id +); + +942 if( +c +) + +943 +c +-> + `pg +( +da +, +n +); + +944 + } +} + +946  + gAsyncWebSock +:: + $pgA +( +ut8_t + * +da +, +size_t + +n +){ + +947 cڡuto& +c +: +_s +){ + +948 if( +c +-> + `us +(= +WS_CONNECTED +) + +949 +c +-> + `pg +( +da +, +n +); + +951 + } +} + +953  + gAsyncWebSock +:: + $xt +( +ut32_t + +id +, cڡ * +mesge +, +size_t + +n +){ + +954 +AsyncWebSockCl + * +c + = + ` +( +id +); + +955 if( +c +) + +956 +c +-> + `xt +( +mesge +, +n +); + +957 + } +} + +959  + gAsyncWebSock +:: + $xtA +( +AsyncWebSockMesgeBufr + * +bufr +){ + +960 i(! +bufr +) ; + +961 +bufr +-> + `lock +(); + +962 cڡuto& +c +: +_s +){ + +963 if( +c +-> + `us +(= +WS_CONNECTED +){ + +964 +c +-> + `xt +( +bufr +); + +967 +bufr +-> + `uock +(); + +968 + `_nBufrs +(); + +969 + } +} + +972  + gAsyncWebSock +:: + $xtA +(cڡ * +mesge +, +size_t + +n +){ + +973 +AsyncWebSockMesgeBufr + * +WSBufr + = + `makeBufr +(( +ut8_t + *) +mesge +, +n +); + +974 + `xtA +( +WSBufr +); + +975 + } +} + +977  + gAsyncWebSock +:: + $by +( +ut32_t + +id +, cڡ * +mesge +, +size_t + +n +){ + +978 +AsyncWebSockCl + * +c + = + ` +( +id +); + +979 if( +c +) + +980 +c +-> + `by +( +mesge +, +n +); + +981 + } +} + +983  + gAsyncWebSock +:: + $byA +(cڡ * +mesge +, +size_t + +n +){ + +984 +AsyncWebSockMesgeBufr + * +bufr + = + `makeBufr +(( +ut8_t + *) +mesge +, +n +); + +985 + `byA +( +bufr +); + +986 + } +} + +988  + gAsyncWebSock +:: + $byA +( +AsyncWebSockMesgeBufr + * +bufr +) + +990 i(! +bufr +) ; + +991 +bufr +-> + `lock +(); + +992 cڡuto& +c +: +_s +){ + +993 if( +c +-> + `us +(= +WS_CONNECTED +) + +994 +c +-> + `by +( +bufr +); + +996 +bufr +-> + `uock +(); + +997 + `_nBufrs +(); + +998 + } +} + +1000  + gAsyncWebSock +:: + $mesge +( +ut32_t + +id +, +AsyncWebSockMesge + * +mesge +){ + +1001 +AsyncWebSockCl + * +c + = + ` +( +id +); + +1002 if( +c +) + +1003 +c +-> + `mesge +( +mesge +); + +1004 + } +} + +1006  + gAsyncWebSock +:: + $mesgeA +( +AsyncWebSockMuiMesge + * +mesge +){ + +1007 cڡuto& +c +: +_s +){ + +1008 if( +c +-> + `us +(= +WS_CONNECTED +) + +1009 +c +-> + `mesge +( +mesge +); + +1011 + `_nBufrs +(); + +1012 + } +} + +1014 +size_t + + gAsyncWebSock +:: + $tf +( +ut32_t + +id +, cڡ * +fm +, ...){ + +1015 +AsyncWebSockCl + * +c + = + ` +( +id +); + +1016 if( +c +){ + +1017 +va_li + +g +; + +1018 + `va_t +( +g +, +fm +); + +1019 +size_t + +n + = +c +-> + `tf +( +fm +, +g +); + +1020 + `va_d +( +g +); + +1021  +n +; + +1024 + } +} + +1026 +size_t + + gAsyncWebSock +:: + $tfA +(cڡ * +fm +, ...) { + +1027 +va_li + +g +; + +1028 * +mp + = +w + [ +MAX_PRINTF_LEN +]; + +1029 if(! +mp +){ + +1032 + `va_t +( +g +, +fm +); + +1033 +size_t + +n + = + `vtf +( +mp +, +MAX_PRINTF_LEN +, +fm +, +g +); + +1034 + `va_d +( +g +); + +1035 +de +[] +mp +; + +1037 +AsyncWebSockMesgeBufr + * +bufr + = + `makeBufr +( +n +); + +1038 i(! +bufr +) { + +1042 + `va_t +( +g +, +fm +); + +1043 + `vtf +(*) +bufr +-> + `g +(), +n + + 1, +fm +, +g +); + +1044 + `va_d +( +g +); + +1046 + `xtA +( +bufr +); + +1047  +n +; + +1048 + } +} + +1050 #ide +ESP32 + + +1051 +size_t + + gAsyncWebSock +:: + $tf_P +( +ut32_t + +id +, +PGM_P + +fmP +, ...){ + +1052 +AsyncWebSockCl + * +c + = + ` +( +id +); + +1053 if( +c + ! +NULL +){ + +1054 +va_li + +g +; + +1055 + `va_t +( +g +, +fmP +); + +1056 +size_t + +n + = +c +-> + `tf_P +( +fmP +, +g +); + +1057 + `va_d +( +g +); + +1058  +n +; + +1061 + } +} + +1064 +size_t + + gAsyncWebSock +:: + $tfA_P +( +PGM_P + +fmP +, ...) { + +1065 +va_li + +g +; + +1066 * +mp + = +w + [ +MAX_PRINTF_LEN +]; + +1067 if(! +mp +){ + +1070 + `va_t +( +g +, +fmP +); + +1071 +size_t + +n + = + `vtf_P +( +mp +, +MAX_PRINTF_LEN +, +fmP +, +g +); + +1072 + `va_d +( +g +); + +1073 +de +[] +mp +; + +1075 +AsyncWebSockMesgeBufr + * +bufr + = + `makeBufr +( +n + + 1); + +1076 i(! +bufr +) { + +1080 + `va_t +( +g +, +fmP +); + +1081 + `vtf_P +((*) +bufr +-> + `g +(), +n + + 1, +fmP +, +g +); + +1082 + `va_d +( +g +); + +1084 + `xtA +( +bufr +); + +1085  +n +; + +1086 + } +} + +1088  + gAsyncWebSock +:: + $xt +( +ut32_t + +id +, cڡ * +mesge +){ + +1089 + `xt +( +id +, +mesge +, + ` +(message)); + +1090 + } +} + +1091  + gAsyncWebSock +:: + $xt +( +ut32_t + +id +, +ut8_t + * +mesge +, +size_t + +n +){ + +1092 + `xt +( +id +, (cڡ *) +mesge +, +n +); + +1093 + } +} + +1094  + gAsyncWebSock +:: + $xt +( +ut32_t + +id +, * +mesge +){ + +1095 + `xt +( +id +, +mesge +, + ` +(message)); + +1096 + } +} + +1097  + gAsyncWebSock +:: + $xt +( +ut32_t + +id +, cڡ +Sg + & +mesge +){ + +1098 + `xt +( +id +, +mesge +. + `c_r +(), mesge. + `ngth +()); + +1099 + } +} + +1100  + gAsyncWebSock +:: + $xt +( +ut32_t + +id +, cڡ +__FshSgHr + * +mesge +){ + +1101 +AsyncWebSockCl + * +c + = + ` +( +id +); + +1102 if( +c + ! +NULL +) + +1103 +c +-> + `xt +( +mesge +); + +1104 + } +} + +1105  + gAsyncWebSock +:: + $xtA +(cڡ * +mesge +){ + +1106 + `xtA +( +mesge +, + ` +(message)); + +1107 + } +} + +1108  + gAsyncWebSock +:: + $xtA +( +ut8_t + * +mesge +, +size_t + +n +){ + +1109 + `xtA +((cڡ *) +mesge +, +n +); + +1110 + } +} + +1111  + gAsyncWebSock +:: + $xtA +(* +mesge +){ + +1112 + `xtA +( +mesge +, + ` +(message)); + +1113 + } +} + +1114  + gAsyncWebSock +:: + $xtA +(cڡ +Sg + & +mesge +){ + +1115 + `xtA +( +mesge +. + `c_r +(), mesge. + `ngth +()); + +1116 + } +} + +1117  + gAsyncWebSock +:: + $xtA +(cڡ +__FshSgHr + * +mesge +){ + +1118 cڡuto& +c +: +_s +){ + +1119 if( +c +-> + `us +(= +WS_CONNECTED +) + +1120 +c +-> + `xt +( +mesge +); + +1122 + } +} + +1123  + gAsyncWebSock +:: + $by +( +ut32_t + +id +, cڡ * +mesge +){ + +1124 + `by +( +id +, +mesge +, + ` +(message)); + +1125 + } +} + +1126  + gAsyncWebSock +:: + $by +( +ut32_t + +id +, +ut8_t + * +mesge +, +size_t + +n +){ + +1127 + `by +( +id +, (cڡ *) +mesge +, +n +); + +1128 + } +} + +1129  + gAsyncWebSock +:: + $by +( +ut32_t + +id +, * +mesge +){ + +1130 + `by +( +id +, +mesge +, + ` +(message)); + +1131 + } +} + +1132  + gAsyncWebSock +:: + $by +( +ut32_t + +id +, cڡ +Sg + & +mesge +){ + +1133 + `by +( +id +, +mesge +. + `c_r +(), mesge. + `ngth +()); + +1134 + } +} + +1135  + gAsyncWebSock +:: + $by +( +ut32_t + +id +, cڡ +__FshSgHr + * +mesge +, +size_t + +n +){ + +1136 +AsyncWebSockCl + * +c + = + ` +( +id +); + +1137 if( +c + ! +NULL +) + +1138 +c +-> + `by +( +mesge +, +n +); + +1139 + } +} + +1140  + gAsyncWebSock +:: + $byA +(cڡ * +mesge +){ + +1141 + `byA +( +mesge +, + ` +(message)); + +1142 + } +} + +1143  + gAsyncWebSock +:: + $byA +( +ut8_t + * +mesge +, +size_t + +n +){ + +1144 + `byA +((cڡ *) +mesge +, +n +); + +1145 + } +} + +1146  + gAsyncWebSock +:: + $byA +(* +mesge +){ + +1147 + `byA +( +mesge +, + ` +(message)); + +1148 + } +} + +1149  + gAsyncWebSock +:: + $byA +(cڡ +Sg + & +mesge +){ + +1150 + `byA +( +mesge +. + `c_r +(), mesge. + `ngth +()); + +1151 + } +} + +1152  + gAsyncWebSock +:: + $byA +(cڡ +__FshSgHr + * +mesge +, +size_t + +n +){ + +1153 cڡuto& +c +: +_s +){ + +1154 if( +c +-> + `us +(= +WS_CONNECTED +) + +1155 +c +-> + `by +( +mesge +, +n +); + +1157 + } +} + +1159 cڡ  + g__WS_STR_CONNECTION +[] + gPROGMEM + = { "Connection" }; + +1160 cڡ  + g__WS_STR_UPGRADE +[] + gPROGMEM + = { "Upgrade" }; + +1161 cڡ  + g__WS_STR_ORIGIN +[] + gPROGMEM + = { "Origin" }; + +1162 cڡ  + g__WS_STR_VERSION +[] + gPROGMEM + = { "Sec-WebSocket-Version" }; + +1163 cڡ  + g__WS_STR_KEY +[] + gPROGMEM + = { "Sec-WebSocket-Key" }; + +1164 cڡ  + g__WS_STR_PROTOCOL +[] + gPROGMEM + = { "Sec-WebSocket-Protocol" }; + +1165 cڡ  + g__WS_STR_ACCEPT +[] + gPROGMEM + = { "Sec-WebSocket-Accept" }; + +1166 cڡ  + g__WS_STR_UUID +[] + gPROGMEM + = { "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" }; + +1168  + #WS_STR_CONNECTION + + `FPSTR +( +__WS_STR_CONNECTION +) + + ) + +1169  + #WS_STR_UPGRADE + + `FPSTR +( +__WS_STR_UPGRADE +) + + ) + +1170  + #WS_STR_ORIGIN + + `FPSTR +( +__WS_STR_ORIGIN +) + + ) + +1171  + #WS_STR_VERSION + + `FPSTR +( +__WS_STR_VERSION +) + + ) + +1172  + #WS_STR_KEY + + `FPSTR +( +__WS_STR_KEY +) + + ) + +1173  + #WS_STR_PROTOCOL + + `FPSTR +( +__WS_STR_PROTOCOL +) + + ) + +1174  + #WS_STR_ACCEPT + + `FPSTR +( +__WS_STR_ACCEPT +) + + ) + +1175  + #WS_STR_UUID + + `FPSTR +( +__WS_STR_UUID +) + + ) + +1177 +bo + + gAsyncWebSock +:: + $nHd +( +AsyncWebSvReque + * +que +){ + +1178 if(! +_abd +) + +1179  +l +; + +1181 if( +que +-> + `mhod +(! +HTTP_GET + || !que-> + `u +(). + `equs +( +_u +|| !que-> + `isExedRequeedCnTy +( +RCT_WS +)) + +1182  +l +; + +1184 +que +-> + `addIegHd +( +WS_STR_CONNECTION +); + +1185 +que +-> + `addIegHd +( +WS_STR_UPGRADE +); + +1186 +que +-> + `addIegHd +( +WS_STR_ORIGIN +); + +1187 +que +-> + `addIegHd +( +WS_STR_VERSION +); + +1188 +que +-> + `addIegHd +( +WS_STR_KEY +); + +1189 +que +-> + `addIegHd +( +WS_STR_PROTOCOL +); + +1190  +ue +; + +1191 + } +} + +1193  + gAsyncWebSock +:: + $hdReque +( +AsyncWebSvReque + * +que +){ + +1194 if(! +que +-> + `hasHd +( +WS_STR_VERSION +|| !que->hasHd( +WS_STR_KEY +)){ + +1195 +que +-> + `nd +(400); + +1198 if(( +_uame +. + `ngth +(&& +_sswd +.ngth()&& ! +que +-> + `authti +(_uame. + `c_r +(), _password.c_str())){ + +1199  +que +-> + `queAuthtiti +(); + +1201 +AsyncWebHd +* +vsi + = +que +-> + `gHd +( +WS_STR_VERSION +); + +1202 if( +vsi +-> + `vue +(). + `toI +() != 13){ + +1203 +AsyncWebSvReڣ + * +ڣ + = +que +-> + `begReڣ +(400); + +1204 +ڣ +-> + `addHd +( +WS_STR_VERSION +, + `F +("13")); + +1205 +que +-> + `nd +( +ڣ +); + +1208 +AsyncWebHd +* +key + = +que +-> + `gHd +( +WS_STR_KEY +); + +1209 +AsyncWebSvReڣ + * +ڣ + = +w + + `AsyncWebSockReڣ +( +key +-> + `vue +(), +this +); + +1210 if( +que +-> + `hasHd +( +WS_STR_PROTOCOL +)){ + +1211 +AsyncWebHd +* +oc + = +que +-> + `gHd +( +WS_STR_PROTOCOL +); + +1213 +ڣ +-> + `addHd +( +WS_STR_PROTOCOL +, +oc +-> + `vue +()); + +1215 +que +-> + `nd +( +ڣ +); + +1216 + } +} + +1218 +AsyncWebSockMesgeBufr + * + gAsyncWebSock +:: + $makeBufr +( +size_t + +size +) + +1220 +AsyncWebSockMesgeBufr + * +bufr + = +w + + `AsyncWebSockMesgeBufr +( +size +); + +1221 i( +bufr +) { + +1222 +AsyncWebLockGud + + `l +( +_lock +); + +1223 +_bufrs +. + `add +( +bufr +); + +1225  +bufr +; + +1226 + } +} + +1228 +AsyncWebSockMesgeBufr + * + gAsyncWebSock +:: + $makeBufr +( +ut8_t + * +da +, +size_t + +size +) + +1230 +AsyncWebSockMesgeBufr + * +bufr + = +w + + `AsyncWebSockMesgeBufr +( +da +, +size +); + +1232 i( +bufr +) { + +1233 +AsyncWebLockGud + + `l +( +_lock +); + +1234 +_bufrs +. + `add +( +bufr +); + +1237  +bufr +; + +1238 + } +} + +1240  + gAsyncWebSock +:: + $_nBufrs +() + +1242 +AsyncWebLockGud + + `l +( +_lock +); + +1244  +AsyncWebSockMesgeBufr + * +c +: +_bufrs +){ + +1245 if( +c + && c-> + `nDe +()){ + +1246 +_bufrs +. + `move +( +c +); + +1249 + } +} + +1251 + gAsyncWebSock +:: +AsyncWebSockClLkedLi + +AsyncWebSock +:: + $gCls +() const { + +1252  +_s +; + +1253 + } +} + +1260 + gAsyncWebSockReڣ +:: + $AsyncWebSockReڣ +(cڡ +Sg +& +key +, +AsyncWebSock + * +rv +){ + +1261 +_rv + = +rv +; + +1262 +_code + = 101; + +1263 +_ndCڋLgth + = +l +; + +1265 +ut8_t + * +hash + = (ut8_t*) + `mloc +(20); + +1266 if( +hash + = +NULL +){ + +1267 +_e + = +RESPONSE_FAILED +; + +1270 * +bufr + = (* + `mloc +(33); + +1271 if( +bufr + = +NULL +){ + +1272 + ` +( +hash +); + +1273 +_e + = +RESPONSE_FAILED +; + +1276 #ifde +ESP8266 + + +1277 + `sha1 +( +key + + +WS_STR_UUID +, +hash +); + +1279 ( +Sg +&) +key + + +WS_STR_UUID +; + +1280 +SHA1_CTX + +x +; + +1281 + `SHA1In +(& +x +); + +1282 + `SHA1Upde +(& +x +, (cڡ *) +key +. + `c_r +(), key. + `ngth +()); + +1283 + `SHA1F +( +hash +, & +x +); + +1285 +ba64_codee + +_e +; + +1286 + `ba64__codee +(& +_e +); + +1287  +n + = + `ba64_code_block +((cڡ * +hash +, 20, +bufr +, & +_e +); + +1288 +n + = + `ba64_code_blockd +(( +bufr + +), & +_e +); + +1289 + `addHd +( +WS_STR_CONNECTION +, +WS_STR_UPGRADE +); + +1290 + `addHd +( +WS_STR_UPGRADE +, + `F +("websocket")); + +1291 + `addHd +( +WS_STR_ACCEPT +, +bufr +); + +1292 + ` +( +bufr +); + +1293 + ` +( +hash +); + +1294 + } +} + +1296  + gAsyncWebSockReڣ +:: + $_d +( +AsyncWebSvReque + * +que +){ + +1297 if( +_e + = +RESPONSE_FAILED +){ + +1298 +que +-> + ` +()-> + `o +( +ue +); + +1301 +Sg + +out + = + `_asmbHd +( +que +-> + `vsi +()); + +1302 +que +-> + ` +()-> + `wre +( +out +. + `c_r +(), +_hdLgth +); + +1303 +_e + = +RESPONSE_WAIT_ACK +; + +1304 + } +} + +1306 +size_t + + gAsyncWebSockReڣ +:: + $_ack +( +AsyncWebSvReque + * +que +, +size_t + +n +, +ut32_t + +time +){ + +1307 () +time +; + +1308 if( +n +){ + +1309 +w + + `AsyncWebSockCl +( +que +, +_rv +); + +1312 + } +} + + @lib/ESPAsyncWebServer/AsyncWebSocket.h + +21 #ide +ASYNCWEBSOCKET_H_ + + +22  + #ASYNCWEBSOCKET_H_ + + + ) + +24  + ~ + +25 #ifde +ESP32 + + +26  + ~ + +27 #ide +WS_MAX_QUEUED_MESSAGES + + +28  + #WS_MAX_QUEUED_MESSAGES + 32 + + ) + +30 #ide +WS_MAX_QUEUED_MESSAGES_SIZE + + +31  + #WS_MAX_QUEUED_MESSAGES_SIZE + 65535 + + ) + +34  + ~ + +35 #ide +WS_MAX_QUEUED_MESSAGES + + +36  + #WS_MAX_QUEUED_MESSAGES + 8 + + ) + +38 #ide +WS_MAX_QUEUED_MESSAGES_SIZE + + +39  + #WS_MAX_QUEUED_MESSAGES_SIZE + 8192 + + ) + +42  + ~ + +45 #ide +WS_MAX_QUEUED_MESSAGES_MIN_HEAP + + +46  + #WS_MAX_QUEUED_MESSAGES_MIN_HEAP + 0 + + ) + +49  + ~"AsyncWebSynchrizi.h +" + +51 #ifde +ESP8266 + + +52  + ~ + +53 #ifde +CRYPTO_HASH_h + + +54  + ~<../c/Hash.h +> + +58 #ifde +ESP32 + + +59  + #DEFAULT_MAX_WS_CLIENTS + 8 + + ) + +61  + #DEFAULT_MAX_WS_CLIENTS + 4 + + ) + +64 +ass + + gAsyncWebSock +; + +65 +ass + + gAsyncWebSockReڣ +; + +66 +ass + + gAsyncWebSockCl +; + +67 +ass + + gAsyncWebSockCڌ +; + +73 +ut8_t + + mmesge_code +; + +75 +ut32_t + + mnum +; + +77 +ut8_t + + mf +; + +79 +ut8_t + + mmasked +; + +83 +ut8_t + + mcode +; + +86 +ut64_t + + mn +; + +88 +ut8_t + + mmask +[4]; + +90 +ut64_t + + mdex +; + +91 } + tAwsFmeInfo +; + +93 um { + mWS_DISCONNECTED +, + mWS_CONNECTED +, + mWS_DISCONNECTING + } + tAwsClStus +; + +94 um { + mWS_CONTINUATION +, + mWS_TEXT +, + mWS_BINARY +, + mWS_DISCONNECT + = 0x08, + mWS_PING +, + mWS_PONG + } + tAwsFmeTy +; + +95 um { + mWS_MSG_SENDING +, + mWS_MSG_SENT +, + mWS_MSG_ERROR + } + tAwsMesgeStus +; + +96 um { + mWS_EVT_CONNECT +, + mWS_EVT_DISCONNECT +, + mWS_EVT_PONG +, + mWS_EVT_ERROR +, + mWS_EVT_DATA + } + tAwsEvtTy +; + +98 as + cAsyncWebSockMesgeBufr + { + +99 + mive +: + +100 +ut8_t + * +_da +; + +101 +size_t + + m_n +; + +102 +bo + + m_lock +; + +103 +ut32_t + + m_cou +; + +105 + mpublic +: + +106 +AsyncWebSockMesgeBufr +(); + +107 +AsyncWebSockMesgeBufr +( +size_t + +size +); + +108 +AsyncWebSockMesgeBufr +( +ut8_t + * +da +, +size_t + +size +); + +109 +AsyncWebSockMesgeBufr +(const AsyncWebSocketMessageBuffer &); + +110 +AsyncWebSockMesgeBufr +(AsyncWebSocketMessageBuffer &&); + +111 ~ +AsyncWebSockMesgeBufr +(); + +112  + mݔ + ++( + mi +{ ()i; + m_cou +++; } + +113  + gݔ + --( + gi +{ ()i; i( + g_cou + > 0) { _count--; } ; } + +114 +bo + +rve +( +size_t + +size +); + +115  + $lock +({ +_lock + = +ue +; + } +} + +116  + $uock +({ +_lock + = +l +; + } +} + +117 +ut8_t + * + $g +({  +_da +; + } +} + +118 +size_t + + $ngth +({  +_n +; + } +} + +119 +ut32_t + + $cou +({  +_cou +; + } +} + +120 +bo + + $nDe +({  (! +_cou + && ! +_lock +); + } +} + +122 +nd + + gAsyncWebSock +; + +126 as + cAsyncWebSockMesge + { + +127 + meed +: + +128 +ut8_t + +_code +; + +129 +bo + + m_mask +; + +130 +AwsMesgeStus + + m_us +; + +131 + mpublic +: + +132 + $AsyncWebSockMesge +(): + `_code +( +WS_TEXT +), + `_mask +( +l +), + $_us +( +WS_MSG_ERROR +){} + +133 +vtu + ~ + $AsyncWebSockMesge +(){ + } +} + +134 +vtu +  +ack +( +size_t + +n + +__ibu__ +(( +unud +)), +ut32_t + +time + __attribute__((unused))){} + +135 +vtu + +size_t + +nd +( +AsyncCl + * + + +__ibu__ +(( +unud +))){  0; } + +136 +vtu + +bo + + $fished +(){  +_us + ! +WS_MSG_SENDING +; + } +} + +137 +vtu + +bo + + $bwnFmes +(cڡ {  +l +; + } +} + +140 as + cAsyncWebSockBasicMesge +: +public + +AsyncWebSockMesge + { + +141 +ive +: + +142 +size_t + +_n +; + +143 +size_t + + m_ +; + +144 +size_t + + m_ack +; + +145 +size_t + + m_acked +; + +146 +ut8_t + * + m_da +; + +147 + mpublic +: + +148 +AsyncWebSockBasicMesge +(cڡ * +da +, +size_t + +n +, +ut8_t + +code += +WS_TEXT +, +bo + +mask += +l +); + +149 +AsyncWebSockBasicMesge +( +ut8_t + +code += +WS_TEXT +, +bo + +mask += +l +); + +150 + mvtu + ~ + $AsyncWebSockBasicMesge +( +ovride +; + +151 +vtu + +bo + + $bwnFmes +(cڡ +ovride + {  +_acked + = +_ack +; } + +152 +vtu +  + $ack +( +size_t + +n +, +ut32_t + +time + +ovride + ; + +153 +vtu + +size_t + + $nd +( +AsyncCl + * + + +ovride + ; + +154 + } +}; + +156 as + cAsyncWebSockMuiMesge +: +public + +AsyncWebSockMesge + { + +157 +ive +: + +158 +ut8_t + * +_da +; + +159 +size_t + + m_n +; + +160 +size_t + + m_ +; + +161 +size_t + + m_ack +; + +162 +size_t + + m_acked +; + +163 +AsyncWebSockMesgeBufr + * + m_WSbufr +; + +164 + mpublic +: + +165 +AsyncWebSockMuiMesge +( +AsyncWebSockMesgeBufr + * +bufr +, +ut8_t + +code += +WS_TEXT +, +bo + +mask += +l +); + +166 + mvtu + ~ + $AsyncWebSockMuiMesge +( +ovride +; + +167 +vtu + +bo + + $bwnFmes +(cڡ +ovride + {  +_acked + = +_ack +; } + +168 +vtu +  + $ack +( +size_t + +n +, +ut32_t + +time + +ovride + ; + +169 +vtu + +size_t + + $nd +( +AsyncCl + * + + +ovride + ; + +170 + } +}; + +172 +ass + + gAsyncWebSockMesgeBufrLkedLi + : +public + +LkedLi +< +AsyncWebSockMesgeBufr + *> { + +173 +public +: + +174 +usg + +T + = +AsyncWebSockMesgeBufr + *; + +175 +usg + + gLT + = +LkedLi +< +T +>; + +177 + give +: + +178  +Remove +( +AsyncWebSockMesgeBufr + * +t +) { + +179 +_tٮSize + - +t +-> +ngth +(); + +180 + g_tٮCou +--; + +181 +de + + gt +; + +184 + gpublic +: + +185 +AsyncWebSockMesgeBufrLkedLi +(: +LT +([ +this +]( +AsyncWebSockMesgeBufr + * +b +){his-> +Remove +(b); }) { + +188  +add +(cڡ +T +& +t +){ + +189 + g_tٮSize + + +t +-> +ngth +(); + +190 + g_tٮCou +++; + +191 + gLT +:: +add +( +t +); + +194 + give +: + +195 +nd + +ass + +AsyncWebSock +; + +198  +size_t + + g_tٮCou +; + +199  +size_t + + g_tٮSize +; + +202 as + cAsyncWebSockCl + { + +203 + mive +: + +204 +AsyncCl + * +_ +; + +205 +AsyncWebSock + * + m_rv +; + +206 +ut32_t + + m_Id +; + +207 +AwsClStus + + m_us +; + +209 + mLkedLi +< + mAsyncWebSockCڌ + *> + m_cڌQueue +; + +210 + mLkedLi +< + mAsyncWebSockMesge + *> + m_mesgeQueue +; + +212 +ut8_t + + m_pe +; + +213 +AwsFmeInfo + + m_pfo +; + +215 +ut32_t + + m_ϡMesgeTime +; + +216 +ut32_t + + m_kpAlivePiod +; + +218  +_queueMesge +( +AsyncWebSockMesge + * +daMesge +); + +219  +_queueCڌ +( +AsyncWebSockCڌ + * +cڌMesge +); + +220  +_runQueue +(); + +222 + mpublic +: + +223 * +_mpObje +; + +225 +AsyncWebSockCl +( +AsyncWebSvReque + * +que +, +AsyncWebSock + * +rv +); + +226 ~ +AsyncWebSockCl +(); + +229 +ut32_t + + $id +(){  +_Id +; } + +230 +AwsClStus + + $us +(){  +_us +; + } +} + +231 +AsyncCl +* + $ +(){  +_ +; + } +} + +232 +AsyncWebSock + * + $rv +(){  +_rv +; + } +} + +233 +AwsFmeInfo + cڡ & + $pfo +(cڡ {  +_pfo +; + } +} + +235 +IPAddss + +meIP +(); + +236 +ut16_t + +mePt +(); + +239  +o +( +ut16_t + +code +=0, cڡ * +mesge += +NULL +); + +240  +pg +( +ut8_t + * +da += +NULL +, +size_t + +n +=0); + +243  + $kpAlivePiod +( +ut16_t + +cds +){ + +244 +_kpAlivePiod + = +cds + * 1000; + +245 + } +} + +246 +ut16_t + + $kpAlivePiod +(){ + +247  ( +ut16_t +)( +_kpAlivePiod + / 1000); + +248 + } +} + +251  + $mesge +( +AsyncWebSockMesge + * +mesge +){ + `_queueMesge +(mesge); + } +} + +252 +bo + +queueIsFu +(); + +254 +size_t + + $tf +(cڡ * +fm +, ... + `__ibu__ + (( + `fm + ( +tf +, 2, 3))); + +255 #ide +ESP32 + + +256 +size_t + + $tf_P +( +PGM_P + +fmP +, ... + `__ibu__ + (( + `fm + ( +tf +, 2, 3))); + +258  + `xt +(cڡ * +mesge +, +size_t + +n +); + +259  + `xt +(cڡ * +mesge +); + +260  + `xt +( +ut8_t + * +mesge +, +size_t + +n +); + +261  + `xt +(* +mesge +); + +262  + `xt +(cڡ +Sg + & +mesge +); + +263  + `xt +(cڡ +__FshSgHr + * +da +); + +264  + `xt +( +AsyncWebSockMesgeBufr + * +bufr +); + +266  + `by +(cڡ * +mesge +, +size_t + +n +); + +267  + `by +(cڡ * +mesge +); + +268  + `by +( +ut8_t + * +mesge +, +size_t + +n +); + +269  + `by +(* +mesge +); + +270  + `by +(cڡ +Sg + & +mesge +); + +271  + `by +(cڡ +__FshSgHr + * +da +, +size_t + +n +); + +272  + `by +( +AsyncWebSockMesgeBufr + * +bufr +); + +274 +bo + + $nSd +({  ! + `_queueIsFu +(); + } +} + +276 +bo + + $_queueIsFu +() const; + +279  + `_Ack +( +size_t + +n +, +ut32_t + +time +); + +280  + `_E +( +t8_t +); + +281  + `_Pl +(); + +282  + `_Timeout +( +ut32_t + +time +); + +283  + `_Disc +(); + +284  + `_Da +(* +pbuf +, +size_t + + +); + +285 + } +}; + +287  + gd +:: + tfuni +<( + tAsyncWebSock + * + trv +, + tAsyncWebSockCl + * + t +, + tAwsEvtTy + + tty +, * + tg +, + tut8_t + * + tda +, + tsize_t + + tn +)> + tAwsEvtHdr +; + +290 as + cAsyncWebSock +: +public + +AsyncWebHdr + { + +291 +public +: + +292  +LkedLi +< + tAsyncWebSockCl + *> + tAsyncWebSockClLkedLi +; + +293 + mive +: + +294 +Sg + +_u +; + +295 +AsyncWebSockClLkedLi + + m_s +; + +296 +ut32_t + + m_cNextId +; + +297 +AwsEvtHdr + + m_evtHdr +; + +298 +bo + + m_abd +; + +299 +AsyncWebLock + + m_lock +; + +301 + mpublic +: + +302 +AsyncWebSock +(cڡ +Sg +& +u +); + +303 ~ +AsyncWebSock +(); + +304 cڡ * + $u +(cڡ {  +_u +. + `c_r +(); } + +305  + $ab +( +bo + +e +){ +_abd + =; + } +} + +306 +bo + + $abd +(cڡ {  +_abd +; + } +} + +307 +bo + +avaabFWreA +(); + +308 +bo + +avaabFWre +( +ut32_t + +id +); + +310 +size_t + + $cou +() const; + +311 +AsyncWebSockCl + * + ` +( +ut32_t + +id +); + +312 +bo + + $hasCl +( +ut32_t + +id +){  + ` +(id! +NULL +; + } +} + +314  +o +( +ut32_t + +id +, +ut16_t + +code +=0, cڡ * +mesge += +NULL +); + +315  +oA +( +ut16_t + +code +=0, cڡ * +mesge += +NULL +); + +316  +nupCls +( +ut16_t + +maxCls + = +DEFAULT_MAX_WS_CLIENTS +); + +318  +pg +( +ut32_t + +id +, +ut8_t + * +da += +NULL +, +size_t + +n +=0); + +319  +pgA +( +ut8_t + * +da += +NULL +, +size_t + +n +=0); + +321  +xt +( +ut32_t + +id +, cڡ * +mesge +, +size_t + +n +); + +322  +xt +( +ut32_t + +id +, cڡ * +mesge +); + +323  +xt +( +ut32_t + +id +, +ut8_t + * +mesge +, +size_t + +n +); + +324  +xt +( +ut32_t + +id +, * +mesge +); + +325  +xt +( +ut32_t + +id +, cڡ +Sg + & +mesge +); + +326  +xt +( +ut32_t + +id +, cڡ +__FshSgHr + * +mesge +); + +328  +xtA +(cڡ * +mesge +, +size_t + +n +); + +329  +xtA +(cڡ * +mesge +); + +330  +xtA +( +ut8_t + * +mesge +, +size_t + +n +); + +331  +xtA +(* +mesge +); + +332  +xtA +(cڡ +Sg + & +mesge +); + +333  +xtA +(cڡ +__FshSgHr + * +mesge +); + +334  +xtA +( +AsyncWebSockMesgeBufr + * +bufr +); + +336  +by +( +ut32_t + +id +, cڡ * +mesge +, +size_t + +n +); + +337  +by +( +ut32_t + +id +, cڡ * +mesge +); + +338  +by +( +ut32_t + +id +, +ut8_t + * +mesge +, +size_t + +n +); + +339  +by +( +ut32_t + +id +, * +mesge +); + +340  +by +( +ut32_t + +id +, cڡ +Sg + & +mesge +); + +341  +by +( +ut32_t + +id +, cڡ +__FshSgHr + * +mesge +, +size_t + +n +); + +343  +byA +(cڡ * +mesge +, +size_t + +n +); + +344  +byA +(cڡ * +mesge +); + +345  +byA +( +ut8_t + * +mesge +, +size_t + +n +); + +346  +byA +(* +mesge +); + +347  +byA +(cڡ +Sg + & +mesge +); + +348  +byA +(cڡ +__FshSgHr + * +mesge +, +size_t + +n +); + +349  +byA +( +AsyncWebSockMesgeBufr + * +bufr +); + +351  +mesge +( +ut32_t + +id +, +AsyncWebSockMesge + *message); + +352  +mesgeA +( +AsyncWebSockMuiMesge + * +mesge +); + +354 +size_t + + $tf +( +ut32_t + +id +, cڡ * +fm +, ... + `__ibu__ + (( + `fm + ( +tf +, 3, 4))); + +355 +size_t + + $tfA +(cڡ * +fm +, ... + `__ibu__ + (( + `fm + ( +tf +, 2, 3))); + +356 #ide +ESP32 + + +357 +size_t + + $tf_P +( +ut32_t + +id +, +PGM_P + +fmP +, ... + `__ibu__ + (( + `fm + ( +tf +, 3, 4))); + +359 +size_t + + $tfA_P +( +PGM_P + +fmP +, ... + `__ibu__ + (( + `fm + ( +tf +, 2, 3))); + +362  + $Evt +( +AwsEvtHdr + +hdr +){ + +363 +_evtHdr + = +hdr +; + +364 + } +} + +367 +ut32_t + + $_gNextId +(){  +_cNextId +++; + } +} + +368  +_addCl +( +AsyncWebSockCl + * + +); + +369  +_hdDisc +( +AsyncWebSockCl + * + +); + +370  +_hdEvt +( +AsyncWebSockCl + * + +, +AwsEvtTy + +ty +, * +g +, +ut8_t + * +da +, +size_t + +n +); + +371 +vtu + +bo + + $nHd +( +AsyncWebSvReque + * +que + +ovride + +f +; + +372 +vtu +  + $hdReque +( +AsyncWebSvReque + * +que + +ovride + +f +; + +376 +AsyncWebSockMesgeBufr + * + `makeBufr +( +size_t + +size + = 0); + +377 +AsyncWebSockMesgeBufr + * + `makeBufr +( +ut8_t + * +da +, +size_t + +size +); + +378 +AsyncWebSockMesgeBufrLkedLi + +_bufrs +; + +379  + `_nBufrs +(); + +381 +AsyncWebSockClLkedLi + + $gCls +() const; + +383 +public +: + +384 #ide +DEBUG_AWS_QUEUE_COUNTERS + + +385  + #DEBUG_AWS_QUEUE_COUNTERS + 0 + + ) + +388 #i +DEBUG_AWS_QUEUE_COUNTERS + + +390 +size_t + + $gQueuedMesgeCou +() const { + +391 + `_vifyCous +(); + +392  +AsyncWebSockMesgeBufrLkedLi +:: +_tٮCou +; + +393 + } +} + +394 +size_t + + $gQueuedMesgeSize +() const { + +395 + `_vifyCous +(); + +396  +AsyncWebSockMesgeBufrLkedLi +:: +_tٮSize +; + +397 + } +} + +399  +size_t + + $_gQueuedMesgeCou +() { + +400  +AsyncWebSockMesgeBufrLkedLi +:: +_tٮCou +; + +401 + } +} + +402  +size_t + + $_gQueuedMesgeSize +() { + +403  +AsyncWebSockMesgeBufrLkedLi +:: +_tٮSize +; + +404 + } +} + +405 + give +: + +406  + $_vifyCous +() const { + +407 +size_t + +t +=0, +c +=0; + +408 cڡut +b +: +_bufrs +) { + +409 +t ++= +b +-> + `ngth +(); + +410 +c +++; + +412 i( +AsyncWebSockMesgeBufrLkedLi +:: +_tٮSize +!= +t + || AsyncWebSockMesgeBufrLkedLi:: +_tٮCou +!= +c +) { + +413 :: + `tf +( + `PSTR +("AsyncWebSockMesgeBufrLkedLi siz%u=%u c %u=%u\n"), +AsyncWebSockMesgeBufrLkedLi +:: +_tٮSize +, +t +,AsyncWebSockMesgeBufrLkedLi:: +_tٮCou +, +c +); + +414 + `nic +(); + +416 + } +} + +418 +size_t + + $gQueuedMesgeCou +() const { + +419  + `_gQueuedMesgeCou +(); + +420 + } +} + +421 +size_t + + $gQueuedMesgeSize +() const { + +422  + `_gQueuedMesgeSize +(); + +423 + } +} + +425  +size_t + + $_gQueuedMesgeCou +() { + +426  +AsyncWebSockMesgeBufrLkedLi +:: +_tٮCou +; + +427 + } +} + +428  +size_t + + $_gQueuedMesgeSize +() { + +429  +AsyncWebSockMesgeBufrLkedLi +:: +_tٮSize +; + +430 + } +} + +436 as + cAsyncWebSockReڣ +: +public + +AsyncWebSvReڣ + { + +437 +ive +: + +438 +Sg + +_cڋ +; + +439 +AsyncWebSock + * + m_rv +; + +440 + mpublic +: + +441 +AsyncWebSockReڣ +(cڡ +Sg +& +key +, +AsyncWebSock + * +rv +); + +442  +_d +( +AsyncWebSvReque + * +que +); + +443 +size_t + +_ack +( +AsyncWebSvReque + * +que +, size_ +n +, +ut32_t + +time +); + +444 +bo + + $_sourVid +(cڡ {  +ue +; } + +445 + } +}; + + @lib/ESPAsyncWebServer/AsyncWebSynchronization.h + +1 #ide +ASYNCWEBSYNCHRONIZATION_H_ + + +2  + #ASYNCWEBSYNCHRONIZATION_H_ + + + ) + +6  + ~ + +8 #ifde +ESP32 + + +11 as + cAsyncWebLock + + +13 + mive +: + +14 +SemheHd_t + +_lock +; + +15 +mub + * + m_lockedBy +; + +17 + mpublic +: + +18 + $AsyncWebLock +() { + +19 +_lock + = + `xSemheCeBy +(); + +20 +_lockedBy + = +NULL +; + +21 + `xSemheGive +( +_lock +); + +24 ~ + $AsyncWebLock +() { + +25 + `vSemheDe +( +_lock +); + +26 + } +} + +28 +bo + + $lock +() const { + +29 * +pxCutTCB +; + +30 i( +_lockedBy + ! +pxCutTCB +) { + +31 + `xSemheTake +( +_lock +, +ptMAX_DELAY +); + +32 +_lockedBy + = +pxCutTCB +; + +33  +ue +; + +35  +l +; + +36 + } +} + +38  + $uock +() const { + +39 +_lockedBy + = +NULL +; + +40 + `xSemheGive +( +_lock +); + +41 + } +} + +47 as + cAsyncWebLock + + +50 + mpublic +: + +51 + $AsyncWebLock +() { + +54 ~ + $AsyncWebLock +() { + +55 + } +} + +57 +bo + + $lock +() const { + +58  +l +; + +59 + } +} + +61  + $uock +() const { + +62 + } +} + +66 as + cAsyncWebLockGud + + +68 + mive +: + +69 cڡ +AsyncWebLock + * +_lock +; + +71 + mpublic +: + +72 + $AsyncWebLockGud +(cڡ +AsyncWebLock + & +l +) { + +73 i( +l +. + `lock +()) { + +74 +_lock + = & +l +; + +76 +_lock + = +NULL +; + +80 ~ + $AsyncWebLockGud +() { + +81 i( +_lock +) { + +82 +_lock +-> + `uock +(); + +84 + } +} + + @lib/ESPAsyncWebServer/ESPAsyncWebServer.h + +21 #ide +_ESPAsyncWebSv_H_ + + +22  + #_ESPAsyncWebSv_H_ + + + ) + +24  + ~"Arduo.h +" + +26  + ~ + +27  + ~"FS.h +" + +29  + ~"SgAay.h +" + +31 #ifde +ESP32 + + +32  + ~ + +33  + ~ + +34 #i +defed +( +ESP8266 +) + +35  + ~ + +36  + ~ + +38 #r +Ptfm + +n + +su܋d + + +41 #ifde +ASYNCWEBSERVER_REGEX + + +42  + #ASYNCWEBSERVER_REGEX_ATTRIBUTE + + + ) + +44  + #ASYNCWEBSERVER_REGEX_ATTRIBUTE + + `__ibu__ +(( + `wng +("ASYNCWEBSERVER_REGEX defed"))) + + ) + +47  + #DEBUGF +(...) + +48 + + ) + +49 +ass + + gAsyncWebSv +; + +50 +ass + + gAsyncWebSvReque +; + +51 +ass + + gAsyncWebSvReڣ +; + +52 +ass + + gAsyncWebHd +; + +53 +ass + + gAsyncWebPam +; + +54 +ass + + gAsyncWebRewre +; + +55 +ass + + gAsyncWebHdr +; + +56 +ass + + gAsyncSticWebHdr +; + +57 +ass + + gAsyncClbackWebHdr +; + +58 +ass + + gAsyncReڣSm +; + +60 #ide +WEBSERVER_H + + +62 + mHTTP_GET + = 0b00000001, + +63 + mHTTP_POST + = 0b00000010, + +64 + mHTTP_DELETE + = 0b00000100, + +65 + mHTTP_PUT + = 0b00001000, + +66 + mHTTP_PATCH + = 0b00010000, + +67 + mHTTP_HEAD + = 0b00100000, + +68 + mHTTP_OPTIONS + = 0b01000000, + +69 + mHTTP_ANY + = 0b01111111, + +70 } + tWebRequeMhod +; + +73 #ide +HAVE_FS_FILE_OPEN_MODE + + +74 +mea + + gfs + { + +75 as + cFeOnMode + { + +76 + gpublic +: + +77 cڡ * +ad +; + +78 cڡ * + gwre +; + +79 cڡ * + gnd +; + +83  + ~"FeOnMode.h +" + +87  + #RESPONSE_TRY_AGAIN + 0xFFFFFFFF + + ) + +89  +ut8_t + + tWebRequeMhodCompose +; + +90  + gd +:: + tfuni +<()> + tArDiscHdr +; + +96 as + cAsyncWebPam + { + +97 + mive +: + +98 +Sg + +_me +; + +99 +Sg + + m_vue +; + +100 +size_t + + m_size +; + +101 +bo + + m_isFm +; + +102 +bo + + m_isFe +; + +104 + mpublic +: + +106 + $AsyncWebPam +(cڡ +Sg +& +me +, cڡ Sg& +vue +, +bo + +fm += +l +, bo +fe +=l, +size_t + +size +=0): + `_me +ame), + `_vue +(vue), + `_size +(size), + `_isFm +(fm), + $_isFe +( +fe +){} + +107 cڡ +Sg +& + $me +(cڡ {  +_me +; + } +} + +108 cڡ + gSg +& + $vue +(cڡ {  +_vue +; + } +} + +109 +size_t + + $size +(cڡ {  +_size +; + } +} + +110 +bo + + $isPo +(cڡ {  +_isFm +; + } +} + +111 +bo + + $isFe +(cڡ {  +_isFe +; + } +} + +118 as + cAsyncWebHd + { + +119 + mive +: + +120 +Sg + +_me +; + +121 +Sg + + m_vue +; + +123 + mpublic +: + +124 + $AsyncWebHd +(cڡ +Sg +& +me +, cڡ Sg& +vue +): + `_me +ame), + $_vue +( +vue +){} + +125 + $AsyncWebHd +(cڡ +Sg +& +da +): + `_me +(), + $_vue +(){ + +126 if(! +da +) ; + +127  +dex + = +da +. + `dexOf +(':'); + +128 i( +dex + < 0) ; + +129 +_me + = +da +. + `subrg +(0, +dex +); + +130 +_vue + = +da +. + `subrg +( +dex + + 2); + +131 + } +} + +132 ~ + $AsyncWebHd +(){ + } +} + +133 cڡ + gSg +& + $me +(cڡ {  +_me +; + } +} + +134 cڡ + gSg +& + $vue +(cڡ {  +_vue +; + } +} + +135 +Sg + + $toSg +(cڡ {  + `Sg +( +_me + + + `F +(": "+ +_vue + + F("\r\n")); + } +} + +142 um { + mRCT_NOT_USED + = -1, + mRCT_DEFAULT + = 0, + mRCT_HTTP +, + mRCT_WS +, + mRCT_EVENT +, + mRCT_MAX + } + tRequeedCiTy +; + +144  + gd +:: + tfuni +< + tsize_t +( + tut8_t +*, size_t, size_t)> + tAwsReڣFr +; + +145  + gd +:: + tfuni +< + tSg +(cڡ Sg&)> + tAwsTemePross +; + +147 as + cAsyncWebSvReque + { + +148 +usg + + mFe + = +fs +:: +Fe +; + +149 +usg + + mFS + = +fs +:: +FS +; + +150 +nd + +ass + + mAsyncWebSv +; + +151 +nd + +ass + + mAsyncClbackWebHdr +; + +152 +nd + +ass + + mHpCookHd +; + +153 + mive +: + +154 +AsyncCl +* +_ +; + +155 +AsyncWebSv +* + m_rv +; + +156 +AsyncWebHdr +* + m_hdr +; + +157 +AsyncWebSvReڣ +* + m_ڣ +; + +158 +SgAay + + m_gHds +; + +159 +ArDiscHdr + + m_Disc +; + +161 +Sg + + m_mp +; + +162 +ut8_t + + m_rS +; + +164 +ut8_t + + m_vsi +; + +165 +WebRequeMhodCompose + + m_mhod +; + +166 +Sg + + m_u +; + +167 +Sg + + m_ho +; + +168 +Sg + + m_cڋTy +; + +169 +Sg + + m_boundy +; + +170 +Sg + + m_authizi +; + +171 +RequeedCiTy + + m_qcy +; + +172  +_moveNIegHds +(); + +173 +bo + + m_isDige +; + +174 +bo + + m_isMuɝt +; + +175 +bo + + m_isPϚPo +; + +176 +bo + + m_exgCtue +; + +177 +size_t + + m_cڋLgth +; + +178 +size_t + + m_rdLgth +; + +180 + mLkedLi +< + mAsyncWebHd + *> + m_hds +; + +181 + mLkedLi +< + mAsyncWebPam + *> + m_ms +; + +182 + mLkedLi +< + mSg + *> + m_thPams +; + +184 +ut8_t + + m_muiPS +; + +185 +ut8_t + + m_boundyPosi +; + +186 +size_t + + m_emSIndex +; + +187 +size_t + + m_emSize +; + +188 +Sg + + m_emName +; + +189 +Sg + + m_emFame +; + +190 +Sg + + m_emTy +; + +191 +Sg + + m_emVue +; + +192 +ut8_t + * + m_emBufr +; + +193 +size_t + + m_emBufrIndex +; + +194 +bo + + m_emIsFe +; + +196  +_Pl +(); + +197  +_Ack +( +size_t + +n +, +ut32_t + +time +); + +198  +_E +( +t8_t + +r +); + +199  +_Timeout +( +ut32_t + +time +); + +200  +_Disc +(); + +201  +_Da +(* +buf +, +size_t + +n +); + +203  +_addPam +( +AsyncWebPam +*); + +204  +_addPhPam +(cڡ * +m +); + +206 +bo + +_rReqHd +(); + +207 +bo + +_rReqHd +(); + +208  +_rLe +(); + +209  +_rPϚPoCh +( +ut8_t + +da +); + +210  +_rMuɝtPoBy +( +ut8_t + +da +, +bo + +ϡ +); + +211  +_addGPams +(cڡ +Sg +& +ms +); + +213  +_hdUdS +(); + +214  +_hdUdBy +( +ut8_t + +da +, +bo + +ϡ +); + +215  +_hdUdEnd +(); + +217 + mpublic +: + +218 +Fe + +_mpFe +; + +219 * + m_mpObje +; + +221 +AsyncWebSvReque +( +AsyncWebSv +*, +AsyncCl +*); + +222 ~ +AsyncWebSvReque +(); + +224 +AsyncCl +* + $ +(){  +_ +; } + +225 +ut8_t + + $vsi +(cڡ {  +_vsi +; + } +} + +226 +WebRequeMhodCompose + + $mhod +(cڡ {  +_mhod +; + } +} + +227 cڡ + gSg +& + $u +(cڡ {  +_u +; + } +} + +228 cڡ + gSg +& + $ho +(cڡ {  +_ho +; + } +} + +229 cڡ + gSg +& + $cڋTy +(cڡ {  +_cڋTy +; + } +} + +230 +size_t + + $cڋLgth +(cڡ {  +_cڋLgth +; + } +} + +231 +bo + + $muɝt +(cڡ {  +_isMuɝt +; + } +} + +232 cڡ +__FshSgHr + * + $mhodToSg +() const; + +233 cڡ +__FshSgHr + * + $queedCnTyToSg +() const; + +234 +RequeedCiTy + + $queedCnTy +(cڡ {  +_qcy +; + } +} + +235 +bo + +isExedRequeedCnTy +( +RequeedCiTy + +1 +, RequeedCiTy +2 + = +RCT_NOT_USED +, RequeedCiTy +3 + = RCT_NOT_USED); + +236  +Disc + ( +ArDiscHdr + + +); + +241 +bo + +authti +(cڡ * +hash +); + +242 +bo + +authti +(cڡ * +uame +, cڡ * +sswd +, cڡ * +m + = +NULL +, bo +sswdIsHash + = +l +); + +243  +queAuthtiti +(cڡ * +m + = +NULL +, +bo + +isDige + = +ue +); + +245  + $tHdr +( +AsyncWebHdr + * +hdr +){ +_hdr + = hdr; + } +} + +246  +addIegHd +(cڡ +Sg +& +me +); + +248  +de +(cڡ +Sg +& +u +); + +250  +nd +( +AsyncWebSvReڣ + * +ڣ +); + +251  +nd +( +code +, cڡ +Sg +& +cڋTy +=Sg(), cڡ Sg& +cڋ +=String()); + +252  +nd +( +FS + & +fs +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +=Sg(), +bo + +dowd += +l +, +AwsTemePross + +back += +nuαr +); + +253  +nd +( +Fe + +cڋ +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +=Sg(), +bo + +dowd += +l +, +AwsTemePross + +back += +nuαr +); + +254  +nd +( +Sm + & +am +, cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsTemePross + +back += +nuαr +); + +255  +nd +(cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsReڣFr + +back +, +AwsTemePross + +meClback += +nuαr +); + +256  +ndChunked +(cڡ +Sg +& +cڋTy +, +AwsReڣFr + +back +, +AwsTemePross + +meClback += +nuαr +); + +257  +nd_P +( +code +, cڡ +Sg +& +cڋTy +, cڡ +ut8_t + * +cڋ +, +size_t + +n +, +AwsTemePross + +back += +nuαr +); + +258  +nd_P +( +code +, cڡ +Sg +& +cڋTy +, +PGM_P + +cڋ +, +AwsTemePross + +back += +nuαr +); + +260 +AsyncWebSvReڣ + * +begReڣ +( +code +, cڡ +Sg +& +cڋTy +=Sg(), cڡ Sg& +cڋ +=String()); + +261 +AsyncWebSvReڣ + * +begReڣ +( +FS + & +fs +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +=Sg(), +bo + +dowd += +l +, +AwsTemePross + +back += +nuαr +); + +262 +AsyncWebSvReڣ + * +begReڣ +( +Fe + +cڋ +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +=Sg(), +bo + +dowd += +l +, +AwsTemePross + +back += +nuαr +); + +263 +AsyncWebSvReڣ + * +begReڣ +( +Sm + & +am +, cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsTemePross + +back += +nuαr +); + +264 +AsyncWebSvReڣ + * +begReڣ +(cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsReڣFr + +back +, +AwsTemePross + +meClback += +nuαr +); + +265 +AsyncWebSvReڣ + * +begChunkedReڣ +(cڡ +Sg +& +cڋTy +, +AwsReڣFr + +back +, +AwsTemePross + +meClback += +nuαr +); + +266 +AsyncReڣSm + * +begReڣSm +(cڡ +Sg +& +cڋTy +, +size_t + +bufrSize +=1460); + +267 +AsyncWebSvReڣ + * +begReڣ_P +( +code +, cڡ +Sg +& +cڋTy +, cڡ +ut8_t + * +cڋ +, +size_t + +n +, +AwsTemePross + +back += +nuαr +); + +268 +AsyncWebSvReڣ + * +begReڣ_P +( +code +, cڡ +Sg +& +cڋTy +, +PGM_P + +cڋ +, +AwsTemePross + +back += +nuαr +); + +270 +size_t + + $hds +() const; + +271 +bo + + $hasHd +(cڡ +Sg +& +me +) const; + +272 +bo + + $hasHd +(cڡ +__FshSgHr + * +da +) const; + +274 +AsyncWebHd +* + $gHd +(cڡ +Sg +& +me +) const; + +275 +AsyncWebHd +* + $gHd +(cڡ +__FshSgHr + * +da +) const; + +276 +AsyncWebHd +* + $gHd +( +size_t + +num +) const; + +278 +size_t + + $ms +() const; + +279 +bo + + $hasPam +(cڡ +Sg +& +me +, +bo + +po += +l +, bo +fe +=false) const; + +280 +bo + + $hasPam +(cڡ +__FshSgHr + * +da +, +bo + +po += +l +, bo +fe +=false) const; + +282 +AsyncWebPam +* + $gPam +(cڡ +Sg +& +me +, +bo + +po += +l +, bo +fe +=false) const; + +283 +AsyncWebPam +* + $gPam +(cڡ +__FshSgHr + * +da +, +bo + +po +, bo +fe +) const; + +284 +AsyncWebPam +* + $gPam +( +size_t + +num +) const; + +286 +size_t + + $gs +(cڡ {  + `ms +(); + } +} + +287 cڡ + gSg +& + $g +(cڡ +Sg +& +me +) const; + +288 cڡ +Sg +& + $g +(cڡ +__FshSgHr + * +da +) const; + +289 cڡ +Sg +& + $g +( +size_t + +i +) const; + +290 cڡ +Sg +& + $gName +( +size_t + +i +) const; + +291 +bo + + $hasArg +(cڡ * +me +) const; + +292 +bo + + $hasArg +(cڡ +__FshSgHr + * +da +) const; + +294 cڡ +Sg +& +ASYNCWEBSERVER_REGEX_ATTRIBUTE + + $thArg +( +size_t + +i +) const; + +296 cڡ +Sg +& + $hd +(cڡ * +me +) const; + +297 cڡ +Sg +& + $hd +(cڡ +__FshSgHr + * +da +) const; + +298 cڡ +Sg +& + $hd +( +size_t + +i +) const; + +299 cڡ +Sg +& + $hdName +( +size_t + +i +) const; + +300 +Sg + + $uDecode +(cڡ +Sg +& +xt +) const; + +301 + } +}; + +307  + gd +:: + tfuni +< + tbo +( + tAsyncWebSvReque + * + tque +)> + tArRequeFrFuni +; + +309 +bo + +ON_STA_FILTER +( +AsyncWebSvReque + * +que +); + +311 +bo + +ON_AP_FILTER +( +AsyncWebSvReque + * +que +); + +317 as + cAsyncWebRewre + { + +318 + meed +: + +319 +Sg + +_om +; + +320 +Sg + + m_toU +; + +321 +Sg + + m_ms +; + +322 +ArRequeFrFuni + + m_fr +; + +323 + mpublic +: + +324 + $AsyncWebRewre +(cڡ * +om +, cڡ * +to +): + `_om +(om), + `_toU +o), + `_ms +( + `Sg +()), + $_fr +( +NULL +){ + +325  +dex + = +_toU +. + `dexOf +('?'); + +326 i( +dex + > 0) { + +327 +_ms + = +_toU +. + `subrg +( +dex + +1); + +328 +_toU + = _toU. + `subrg +(0, +dex +); + +331 +vtu + ~ + $AsyncWebRewre +(){ + } +} + +332 + gAsyncWebRewre +& + $tFr +( +ArRequeFrFuni + + +{ +_fr + = fn;  * +this +; + } +} + +333 +bo + + $fr +( +AsyncWebSvReque + * +que +cڡ {  +_fr + = +NULL + || + `_fr +eque); + } +} + +334 cڡ + gSg +& + $om +(cڡ {  +_om +; + } +} + +335 cڡ + gSg +& + $toU +(cڡ {  +_toU +; + } +} + +336 cڡ + gSg +& + $ms +(cڡ {  +_ms +; + } +} + +337 +vtu + +bo + + $mch +( +AsyncWebSvReque + * +que +{  + `om +(=que-> + `u +(&& + `fr +eque); + } +} + +344 as + cAsyncWebHdr + { + +345 + meed +: + +346 +ArRequeFrFuni + +_fr +; + +347 +Sg + + m_uame +; + +348 +Sg + + m_sswd +; + +349 + mpublic +: + +350 + $AsyncWebHdr +(): + `_uame +(""), + `_sswd +(""){} + +351 +AsyncWebHdr +& + $tFr +( +ArRequeFrFuni + + +{ +_fr + = fn;  * +this +; + } +} + +352 + gAsyncWebHdr +& + $tAuthtiti +(cڡ * +uame +, cڡ * +sswd +){ +_uame + = + `Sg +(uame); +_sswd + = Sgasswd);  * +this +; + } +}; + +353 +bo + + $fr +( +AsyncWebSvReque + * +que +){  +_fr + = +NULL + || + `_fr +eque); + } +} + +354 + gvtu + ~ + $AsyncWebHdr +(){ + } +} + +355 +vtu + +bo + +nHd +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +))){ + +356  + gl +; + +358 +vtu +  +hdReque +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +))){} + +359 +vtu +  +hdUd +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +)), cڡ +Sg +& +fame + __ibu__((unud)), +size_t + +dex + __ibu__((unud)), +ut8_t + * +da + __ibu__((unud)), size_ +n + __ibu__((unud)), +bo + +f + __attribute__((unused))){} + +360 +vtu +  +hdBody +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +)), +ut8_t + * +da + __ibu__((unud)), +size_t + +n + __ibu__((unud)), size_ +dex + __ibu__((unud)), size_ +tٮ + __attribute__((unused))){} + +361 +vtu + +bo + + $isRequeHdrTrivl +(){ +ue +; + } +} + +369 + mRESPONSE_SETUP +, + mRESPONSE_HEADERS +, + mRESPONSE_CONTENT +, + mRESPONSE_WAIT_ACK +, + mRESPONSE_END +, + mRESPONSE_FAILED + + +370 } + tWebReڣS +; + +372 as + cAsyncWebSvReڣ + { + +373 + meed +: + +374  +_code +; + +375 + mLkedLi +< + mAsyncWebHd + *> + m_hds +; + +376 +Sg + + m_cڋTy +; + +377 +size_t + + m_cڋLgth +; + +378 +bo + + m_ndCڋLgth +; + +379 +bo + + m_chunked +; + +380 +size_t + + m_hdLgth +; + +381 +size_t + + m_Lgth +; + +382 +size_t + + m_ackedLgth +; + +383 +size_t + + m_wrnLgth +; + +384 +WebReڣS + + m_e +; + +385 cڡ * +_ڣCodeToSg +( +code +); + +386 + mpublic +: + +387 cڡ +__FshSgHr + * +ڣCodeToSg +( +code +); + +389 + mpublic +: + +390 +AsyncWebSvReڣ +(); + +391 + mvtu + ~ +AsyncWebSvReڣ +(); + +392 +vtu +  +tCode +( +code +); + +393 +vtu +  +tCڋLgth +( +size_t + +n +); + +394 +vtu +  +tCڋTy +(cڡ +Sg +& +ty +); + +395 +vtu +  +addHd +(cڡ +Sg +& +me +, cڡ Sg& +vue +); + +396 +vtu + +Sg + +_asmbHd +( +ut8_t + +vsi +); + +397 +vtu + +bo + + $_d +() const; + +398 +vtu + +bo + + $_fished +() const; + +399 +vtu + +bo + + $_ed +() const; + +400 +vtu + +bo + + $_sourVid +() const; + +401 +vtu +  + `_d +( +AsyncWebSvReque + * +que +); + +402 +vtu + +size_t + + `_ack +( +AsyncWebSvReque + * +que +, size_ +n +, +ut32_t + +time +); + +409  +d +:: + tfuni +<( + tAsyncWebSvReque + * + tque +)> + tArRequeHdrFuni +; + +410  +d +:: + tfuni +<( + tAsyncWebSvReque + * + tque +, cڡ + tSg +& + tfame +, + tsize_t + + tdex +, + tut8_t + * + tda +, size_ + tn +, + tbo + + tf +)> + tArUdHdrFuni +; + +411  +d +:: + tfuni +<( + tAsyncWebSvReque + * + tque +, + tut8_t + * + tda +, + tsize_t + + tn +, size_ + tdex +, size_ + ttٮ +)> + tArBodyHdrFuni +; + +413 as + cAsyncWebSv + { + +414 +eed +: + +415 +AsyncSv + +_rv +; + +416 +LkedLi +< +AsyncWebRewre +*> +_wres +; + +417 +LkedLi +< +AsyncWebHdr +*> +_hdrs +; + +418 +AsyncClbackWebHdr +* +_tchAHdr +; + +420 +public +: + +421 + `AsyncWebSv +( +ut16_t + +pt +); + +422 ~ + `AsyncWebSv +(); + +424  + `beg +(); + +425  + `d +(); + +427 #i +ASYNC_TCP_SSL_ENABLED + + +428  + `SFeReque +( +AcSSlFeHdr + +cb +, * +g +); + +429  + `begSecu +(cڡ * + +, cڡ * +ive_key_fe +, cڡ * +sswd +); + +432 +AsyncWebRewre +& + `addRewre +(AsyncWebRewre* +wre +); + +433 +bo + + `moveRewre +( +AsyncWebRewre +* +wre +); + +434 +AsyncWebRewre +& + `wre +(cڡ * +om +, cڡ * +to +); + +436 +AsyncWebHdr +& + `addHdr +(AsyncWebHdr* +hdr +); + +437 +bo + + `moveHdr +( +AsyncWebHdr +* +hdr +); + +439 +AsyncClbackWebHdr +& + ` +(cڡ * +uri +, +ArRequeHdrFuni + +Reque +); + +440 +AsyncClbackWebHdr +& + ` +(cڡ * +uri +, +WebRequeMhodCompose + +mhod +, +ArRequeHdrFuni + +Reque +); + +441 +AsyncClbackWebHdr +& + ` +(cڡ * +uri +, +WebRequeMhodCompose + +mhod +, +ArRequeHdrFuni + +Reque +, +ArUdHdrFuni + +Ud +); + +442 +AsyncClbackWebHdr +& + ` +(cڡ * +uri +, +WebRequeMhodCompose + +mhod +, +ArRequeHdrFuni + +Reque +, +ArUdHdrFuni + +Ud +, +ArBodyHdrFuni + +Body +); + +444 +AsyncSticWebHdr +& + `rveStic +(cڡ * +uri +, +fs +:: +FS +& fs, cڡ * +th +, cڡ * +che_cڌ + = +NULL +); + +446  + `NFound +( +ArRequeHdrFuni + + +); + +447  + `FeUd +( +ArUdHdrFuni + + +); + +448  + `RequeBody +( +ArBodyHdrFuni + + +); + +450  + `t +(); + +452  + `_hdDisc +( +AsyncWebSvReque + * +que +); + +453  + `_chHdr +( +AsyncWebSvReque + * +que +); + +454  + `_wreReque +( +AsyncWebSvReque + * +que +); + +457 as + cDeuHds + { + +458 +usg + +hds_t + = +LkedLi +< +AsyncWebHd + *>; + +459 +hds_t + +_hds +; + +461 + $DeuHds +() + +462 : + `_hds +( + `hds_t +([]( +AsyncWebHd + * +h +){ +de + h; })) + +463 { + } +} + +464 + gpublic +: + +465 +usg + +CڡIt + = +hds_t +::ConstIterator; + +467  + $addHd +(cڡ +Sg +& +me +, cڡ Sg& +vue +){ + +468 +_hds +. + `add +( +w + + `AsyncWebHd +( +me +, +vue +)); + +469 + } +} + +471 +CڡIt + + $beg +(cڡ {  +_hds +. + `beg +(); + } +} + +472 +CڡIt + + $d +(cڡ {  +_hds +. + `d +(); + } +} + +474 +DeuHds +(DeuHdcڡ & +de +; + +475 + gDeuHds + & + gݔ +=( +DeuHds + cڡ & +de +; + +476  + gDeuHds + & + $In +() { + +477  +DeuHds + + +; + +478  + +; + +479 + } +} + +482  + ~"WebReڣIm.h +" + +483  + ~"WebHdrIm.h +" + +484  + ~"AsyncWebSock.h +" + +485  + ~"AsyncEvtSour.h +" + + @lib/ESPAsyncWebServer/SPIFFSEditor.cpp + +1  + ~"SPIFFSEd.h +" + +2  + ~ + +5  + #ed_htm_gz_n + 4151 + + ) + +6 cڡ +ut8_t + + ged_htm_gz +[] + gPROGMEM + = { + +269  + #SPIFFS_MAXLENGTH_FILEPATH + 32 + + ) + +270 cڡ * + gexudeLiFe + = "/.exclude.files"; + +272  + sExudeLiS + { + +273 * + mem +; + +274 +ExudeLiS + * + mxt +; + +275 } + tExudeLi +; + +277  +ExudeLi + * + gexudes + = +NULL +; + +279  +bo + + $mchWd +(cڡ * +n +, cڡ * + +) { + +280 cڡ * +nxP + = +NULL +, * +nxT + = NULL; + +282 * + +) { + +283 i(* +n + ='?' ) || (*=* + +)){ + +284 +n +++; + +++; + +287 i(* +n +=='*'){ + +288 +nxP += +n +++; +nxT += + +; + +291 i( +nxP +){ + +292 +n + = +nxP ++1; + +=++ +nxT +; + +295  +l +; + +297 * +n +=='*'){pattern++;} + +298  (* +n + == 0); + +299 + } +} + +301  +bo + + $addExude +(cڡ * +em +){ + +302 +size_t + +n + = + ` +( +em +); + +303 if(! +n +){ + +304  +l +; + +306 +ExudeLi + * +e + = (ExudeLi *) + `mloc +((ExcludeList)); + +307 if(! +e +){ + +308  +l +; + +310 +e +-> +em + = (*) + `mloc +( +n ++1); + +311 if(! +e +-> +em +){ + +312 + ` +( +e +); + +313  +l +; + +315 + `memy +( +e +-> +em +, im, +n ++1); + +316 +e +-> +xt + = +exudes +; + +317 +exudes + = +e +; + +318  +ue +; + +319 + } +} + +321  + $ldExudeLi +( +fs +:: +FS + & +_fs +, cڡ * +fame +){ + +322  +lebuf +[ +SPIFFS_MAXLENGTH_FILEPATH +]; + +323 +fs +:: +Fe + +exudeFe += +_fs +. + `ݒ +( +fame +, "r"); + +324 if(! +exudeFe +){ + +328 #ifde +ESP32 + + +329 if( +exudeFe +. + `isDey +()){ + +330 +exudeFe +. + `o +(); + +334 i( +exudeFe +. + `size +() > 0){ + +335 +ut8_t + +idx +; + +336 +bo + +isOvowed + = +l +; + +337  +exudeFe +. + `avaab +()){ + +338 +lebuf +[0] = '\0'; + +339 +idx + = 0; + +340  +ϡCh +; + +342 +ϡCh + = +exudeFe +. + `ad +(); + +343 if( +ϡCh + != '\r'){ + +344 +lebuf +[ +idx +++] = ( +ϡCh +; + +346 } ( +ϡCh + >0&& (ϡCh !'\n'&& ( +idx + < +SPIFFS_MAXLENGTH_FILEPATH +)); + +348 if( +isOvowed +){ + +349 +isOvowed + = ( +ϡCh + != '\n'); + +352 +isOvowed + = ( +idx + > +SPIFFS_MAXLENGTH_FILEPATH +); + +353 +lebuf +[ +idx +-1] = '\0'; + +354 if(! + `addExude +( +lebuf +)){ + +355 +exudeFe +. + `o +(); + +360 +exudeFe +. + `o +(); + +361 + } +} + +363  +bo + + $isExuded +( +fs +:: +FS + & +_fs +, cڡ * +fame +) { + +364 if( +exudes + = +NULL +){ + +365 + `ldExudeLi +( +_fs +, +exudeLiFe +); + +367 +ExudeLi + * +e + = +exudes +; + +368  +e +){ + +369 i( + `mchWd +( +e +-> +em +, +fame +)){ + +370  +ue +; + +372 +e + =-> +xt +; + +374  +l +; + +375 + } +} + +379 #ifde +ESP32 + + +380 + gSPIFFSEd +:: + $SPIFFSEd +(cڡ +fs +:: +FS +& fs, cڡ +Sg +& +uame +, cڡ Sg& +sswd +) + +382 +SPIFFSEd +:: + $SPIFFSEd +(cڡ +Sg +& +uame +, cڡ Sg& +sswd +, cڡ +fs +:: +FS +& fs) + +384 : + `_fs +( +fs +) + +385 , + `_uame +( +uame +) + +386 , + `_sswd +( +sswd +) + +387 , + `_authtid +( +l +) + +388 , + $_tTime +(0) + +389 { + } +} + +391 +bo + + gSPIFFSEd +:: + $nHd +( +AsyncWebSvReque + * +que +){ + +392 if( +que +-> + `u +(). + `equsIgneCa +("/edit")){ + +393 if( +que +-> + `mhod +(= +HTTP_GET +){ + +394 if( +que +-> + `hasPam +("list")) + +395  +ue +; + +396 if( +que +-> + `hasPam +("edit")){ + +397 +que +-> +_mpFe + = +_fs +. + `ݒ +eque-> + `g +("edit"), "r"); + +398 if(! +que +-> +_mpFe +){ + +399  +l +; + +401 #ifde +ESP32 + + +402 if( +que +-> +_mpFe +. + `isDey +()){ + +403 +que +-> +_mpFe +. + `o +(); + +404  +l +; + +408 if( +que +-> + `hasPam +("download")){ + +409 +que +-> +_mpFe + = +_fs +. + `ݒ +eque-> + `g +("download"), "r"); + +410 if(! +que +-> +_mpFe +){ + +411  +l +; + +413 #ifde +ESP32 + + +414 if( +que +-> +_mpFe +. + `isDey +()){ + +415 +que +-> +_mpFe +. + `o +(); + +416  +l +; + +420 +que +-> + `addIegHd +("If-Modified-Since"); + +421  +ue +; + +423 if( +que +-> + `mhod +(= +HTTP_POST +) + +424  +ue +; + +425 if( +que +-> + `mhod +(= +HTTP_DELETE +) + +426  +ue +; + +427 if( +que +-> + `mhod +(= +HTTP_PUT +) + +428  +ue +; + +431  +l +; + +432 + } +} + +435  + gSPIFFSEd +:: + $hdReque +( +AsyncWebSvReque + * +que +){ + +436 if( +_uame +. + `ngth +(&& +_sswd +.ngth(&& ! +que +-> + `authti +(_uame. + `c_r +(), _password.c_str())) + +437  +que +-> + `queAuthtiti +(); + +439 if( +que +-> + `mhod +(= +HTTP_GET +){ + +440 if( +que +-> + `hasPam +("list")){ + +441 +Sg + +th + = +que +-> + `gPam +("li")-> + `vue +(); + +442 #ifde +ESP32 + + +443 +Fe + +d + = +_fs +. + `ݒ +( +th +); + +445 +D + +d + = +_fs +. + `ݒD +( +th +); + +447 +th + = + `Sg +(); + +448 +Sg + +ouut + = "["; + +449 #ifde +ESP32 + + +450 +Fe + +y + = +d +. + `ݒNextFe +(); + +451  +y +){ + +453  +d +. + `xt +()){ + +454 +fs +:: +Fe + +y + = +d +. + `ݒFe +("r"); + +456 i( + `isExuded +( +_fs +, +y +. + `me +())) { + +457 #ifde +ESP32 + + +458 +y + = +d +. + `ݒNextFe +(); + +462 i( +ouut + != "[") output += ','; + +463 +ouut + += "{\"type\":\""; + +464 +ouut + += "file"; + +465 +ouut + += "\",\"name\":\""; + +466 +ouut + + + `Sg +( +y +. + `me +()); + +467 +ouut + += "\",\"size\":"; + +468 +ouut + + + `Sg +( +y +. + `size +()); + +469 +ouut + += "}"; + +470 #ifde +ESP32 + + +471 +y + = +d +. + `ݒNextFe +(); + +473 +y +. + `o +(); + +476 #ifde +ESP32 + + +477 +d +. + `o +(); + +479 +ouut + += "]"; + +480 +que +-> + `nd +(200, "iti/js", +ouut +); + +481 +ouut + = + `Sg +(); + +483 if( +que +-> + `hasPam +("edit") ||equest->hasParam("download")){ + +484 +que +-> + `nd +eque-> +_mpFe +,eque->_mpFe. + `me +(), + `Sg +(),eque-> + `hasPam +("download")); + +487 cڡ * +budTime + = +__DATE__ + " " +__TIME__ + " GMT"; + +488 i( +que +-> + `hd +("If-Modifd-S"). + `equs +( +budTime +)) { + +489 +que +-> + `nd +(304); + +491 +AsyncWebSvReڣ + * +ڣ + = +que +-> + `begReڣ_P +(200, "xt/html", +ed_htm_gz +, +ed_htm_gz_n +); + +492 +ڣ +-> + `addHd +("Content-Encoding", "gzip"); + +493 +ڣ +-> + `addHd +("La-Modifd", +budTime +); + +494 +que +-> + `nd +( +ڣ +); + +497 } if( +que +-> + `mhod +(= +HTTP_DELETE +){ + +498 if( +que +-> + `hasPam +("th", +ue +)){ + +499 +_fs +. + `move +( +que +-> + `gPam +("th", +ue +)-> + `vue +()); + +500 +que +-> + `nd +(200, "", "DELETE: "+que-> + `gPam +("th", +ue +)-> + `vue +()); + +502 +que +-> + `nd +(404); + +503 } if( +que +-> + `mhod +(= +HTTP_POST +){ + +504 if( +que +-> + `hasPam +("da", +ue +,rue&& +_fs +. + `exis +eque-> + `gPam +("da",rue,rue)-> + `vue +())) + +505 +que +-> + `nd +(200, "", "UPLOADED: "+que-> + `gPam +("da", +ue +,rue)-> + `vue +()); + +507 +que +-> + `nd +(500); + +508 } if( +que +-> + `mhod +(= +HTTP_PUT +){ + +509 if( +que +-> + `hasPam +("th", +ue +)){ + +510 +Sg + +fame + = +que +-> + `gPam +("th", +ue +)-> + `vue +(); + +511 if( +_fs +. + `exis +( +fame +)){ + +512 +que +-> + `nd +(200); + +514 +fs +:: +Fe + +f + = +_fs +. + `ݒ +( +fame +, "w"); + +515 if( +f +){ + +516 +f +. + `wre +(( +ut8_t +)0x00); + +517 +f +. + `o +(); + +518 +que +-> + `nd +(200, "", "CREATE: "+ +fame +); + +520 +que +-> + `nd +(500); + +524 +que +-> + `nd +(400); + +526 + } +} + +528  + gSPIFFSEd +:: + $hdUd +( +AsyncWebSvReque + * +que +, cڡ +Sg +& +fame +, +size_t + +dex +, +ut8_t + * +da +, size_ +n +, +bo + +f +){ + +529 if(! +dex +){ + +530 if(! +_uame +. + `ngth +(|| +que +-> + `authti +(_uame. + `c_r +(), +_sswd +.c_str())){ + +531 +_authtid + = +ue +; + +532 +que +-> +_mpFe + = +_fs +. + `ݒ +( +fame +, "w"); + +533 +_tTime + = + `mlis +(); + +536 if( +_authtid + && +que +-> +_mpFe +){ + +537 if( +n +){ + +538 +que +-> +_mpFe +. + `wre +( +da +, +n +); + +540 if( +f +){ + +541 +que +-> +_mpFe +. + `o +(); + +544 + } +} + + @lib/ESPAsyncWebServer/SPIFFSEditor.h + +1 #ide +SPIFFSEd_H_ + + +2  + #SPIFFSEd_H_ + + + ) + +3  + ~ + +5 as + cSPIFFSEd + : +public + +AsyncWebHdr + { + +6 +ive +: + +7 +fs +:: +FS + +_fs +; + +8 +Sg + + m_uame +; + +9 +Sg + + m_sswd +; + +10 +bo + + m_authtid +; + +11 +ut32_t + + m_tTime +; + +13 + mpublic +: + +14 #ifde +ESP32 + + +15 +SPIFFSEd +(cڡ +fs +:: +FS + & fs, cڡ +Sg + & +uame + = Sg(), cڡ Sg & +sswd + = String()); + +17 #agm +GCC + +dgnoic + +push + + +18 #agm +GCC + +dgnoic + +igned + "-Wdeprecated-declarations" + +19 +SPIFFSEd +(cڡ +Sg + & +uame + = Sg(), cڡ Sg & +sswd + = Sg(), cڡ +fs +:: +FS + & f +SPIFFS +); + +20 #agm +GCC + +dgnoic + +p + + +22 +vtu + +bo + + $nHd +( +AsyncWebSvReque + * +que + +ovride + +f +; + +23 +vtu +  + $hdReque +( +AsyncWebSvReque + * +que + +ovride + +f +; + +24 +vtu +  + $hdUd +( +AsyncWebSvReque + * +que +, cڡ +Sg + & +fame +, +size_t + +dex +, +ut8_t + * +da +, size_ +n +, +bo + +f + +ovride + final; + +25 +vtu + +bo + + $isRequeHdrTrivl +( +ovride + +f + { + +26  +l +; + +28 + } +}; + + @lib/ESPAsyncWebServer/StringArray.h + +21 #ide +STRINGARRAY_H_ + + +22  + #STRINGARRAY_H_ + + + ) + +24  + ~"ddef.h +" + +25  + ~"WSg.h +" + +27 + gme + < +tyme + + gT +> + +28 as + cLkedLiNode + { + +29 +T + + m_vue +; + +30 + mpublic +: + +31 +LkedLiNode +< +T +>* +xt +; + +32 + $LkedLiNode +(cڡ +T + +v +): + `_vue +(v), + $xt +( +nuαr +) {} + +33 ~ + $LkedLiNode +(){ + } +} + +34 cڡ + gT +& + $vue +(cڡ {  +_vue +; + } +}; + +35 + gT +& + $vue +(){  +_vue +; + } +} + +38 + gme + < +tyme + + gT +,eme< + gtyme +> +ass + + gIm + = +LkedLiNode +> + +39 as + cLkedLi + { + +40 +public +: + +41  +Im +< + tT +> + tImTy +; + +42  + md +:: + tfuni +<(cڡ + tT +&)> + tOnRemove +; + +43  + md +:: + tfuni +< + tbo +(cڡ + tT +&)> + tPdi +; + +44 + mive +: + +45 +ImTy +* +_ro +; + +46 +OnRemove + + m_Remove +; + +48 as + cIt + { + +49 +ImTy +* + m_node +; + +50 + mpublic +: + +51 +It +( +ImTy +* +cut + = +nuαr +: +_node +(current) {} + +52 +It +(cڡ It& +i +: +_node +(i._node) {} + +53 +It +& +ݔ + ++({ +_node + = _node-> +xt +;  * + mthis +; } + +54 +bo + + mݔ + !(cڡ +It +& +i +cڡ {  +_node + != i._node; } + +55 cڡ + mT +& + mݔ + * (cڡ {  + m_node +-> +vue +(); } + +56 cڡ +T +* + mݔ + -> (cڡ {  & + m_node +-> +vue +(); } + +59 + gpublic +: + +60 cڡ + tIt + + tCڡIt +; + +61 +CڡIt + + $beg +(cڡ {  + `CڡIt +( +_ro +); + } +} + +62 +CڡIt + + $d +(cڡ {  + `CڡIt +( +nuαr +); + } +} + +64 + $LkedLi +( +OnRemove + +Remove +: + `_ro +( +nuαr +), + $_Remove +( +Remove +{ + } +} + +65 ~ + $LkedLi +(){ + } +} + +66  + $add +(cڡ +T +& +t +){ + +67 aut + + = +w + + `ImTy +( +t +); + +68 if(! +_ro +){ + +69 +_ro + = + +; + +71 aut +i + = +_ro +; + +72  +i +-> +xt +) i = i->next; + +73 +i +-> +xt + = + +; + +75 + } +} + +76 + gT +& + $t +() const { + +77  +_ro +-> + `vue +(); + +78 + } +} + +80 +bo + + $isEmy +() const { + +81  +_ro + = +nuαr +; + +82 + } +} + +83 +size_t + + $ngth +() const { + +84 +size_t + +i + = 0; + +85 aut + + = +_ro +; + +86  + +){ + +87 +i +++; + +88 + + = it-> +xt +; + +90  +i +; + +91 + } +} + +92 +size_t + + $cou_if +( +Pdi + +edi +) const { + +93 +size_t + +i + = 0; + +94 aut + + = +_ro +; + +95  + +){ + +96 i(! +edi +){ + +97 +i +++; + +99 i( + `edi +( + +-> + `vue +())) { + +100 +i +++; + +102 + + = it-> +xt +; + +104  +i +; + +105 + } +} + +106 cڡ +T +* + $h +( +size_t + +N +) const { + +107 +size_t + +i + = 0; + +108 aut + + = +_ro +; + +109  + +){ + +110 if( +i +++ = +N +) + +111  &( + +-> + `vue +()); + +112 + + = it-> +xt +; + +114  +nuαr +; + +115 + } +} + +116 +bo + + $move +(cڡ +T +& +t +){ + +117 aut + + = +_ro +; + +118 aut +p + = +_ro +; + +119  + +){ + +120 if( + +-> + `vue +(= +t +){ + +121 if( + + = +_ro +){ + +122 +_ro + = _ro-> +xt +; + +124 +p +-> +xt + = + +->next; + +127 i( +_Remove +) { + +128 + `_Remove +( + +-> + `vue +()); + +131 +de + + +; + +132  +ue +; + +134 +p + = + +; + +135 + + = it-> +xt +; + +137  +l +; + +138 + } +} + +139 +bo + + $move_f +( +Pdi + +edi +){ + +140 aut + + = +_ro +; + +141 aut +p + = +_ro +; + +142  + +){ + +143 if( + `edi +( + +-> + `vue +())){ + +144 if( + + = +_ro +){ + +145 +_ro + = _ro-> +xt +; + +147 +p +-> +xt + = + +->next; + +149 i( +_Remove +) { + +150 + `_Remove +( + +-> + `vue +()); + +152 +de + + +; + +153  +ue +; + +155 +p + = + +; + +156 + + = it-> +xt +; + +158  +l +; + +159 + } +} + +161  + $ +(){ + +162  +_ro + ! +nuαr +){ + +163 aut + + = +_ro +; + +164 +_ro + = _ro-> +xt +; + +165 i( +_Remove +) { + +166 + `_Remove +( + +-> + `vue +()); + +168 +de + + +; + +170 +_ro + = +nuαr +; + +171 + } +} + +175 +ass + + gSgAay + : +public + +LkedLi +< +Sg +> { + +176 +public +: + +178 +SgAay +(: +LkedLi +( +nuαr +) {} + +180 +bo + +cڏsIgneCa +(cڡ +Sg +& +r +){ + +181 cڡuto& +s + : * +this +) { + +182 i( +r +. +equsIgneCa +( +s +)) { + +183  +ue +; + +186  + gl +; + + @lib/ESPAsyncWebServer/WebAuthentication.cpp + +21  + ~"WebAuthtiti.h +" + +22  + ~ + +23 #ifde +ESP32 + + +24  + ~"mbeds/md5.h +" + +26  + ~"md5.h +" + +32 +bo + + $checkBasicAuthtiti +(cڡ * +hash +, cڡ * +uame +, cڡ * +sswd +){ + +33 if( +uame + = +NULL + || +sswd + =NULL || +hash + == NULL) + +34  +l +; + +36 +size_t + +tncodeL + = + ` +( +uame +)+( +sswd +)+1; + +37 +size_t + +codedL + = + `ba64_code_exed_n +( +tncodeL +); + +38 if( + ` +( +hash +! +codedL +) + +39  +l +; + +41 * +tncode + = +w + [ +tncodeL ++1]; + +42 if( +tncode + = +NULL +){ + +43  +l +; + +45 * +coded + = +w + [ + `ba64_code_exed_n +( +tncodeL +)+1]; + +46 if( +coded + = +NULL +){ + +47 +de +[] +tncode +; + +48  +l +; + +50 + `rtf_P +( +tncode +, + `PSTR +("%s:%s"), +uame +, +sswd +); + +51 if( + `ba64_code_chs +( +tncode +, +tncodeL +, +coded +> 0 && + `memcmp +( +hash +,ncoded, +codedL +) == 0){ + +52 +de +[] +tncode +; + +53 +de +[] +coded +; + +54  +ue +; + +56 +de +[] +tncode +; + +57 +de +[] +coded +; + +58  +l +; + +59 + } +} + +61  +bo + + $gMD5 +( +ut8_t + * +da +, +ut16_t + +n +, * +ouut +){ + +62 #ifde +ESP32 + + +63 +mbeds_md5_cڋxt + +_x +; + +65 +md5_cڋxt_t + +_x +; + +67 +ut8_t + +i +; + +68 +ut8_t + * +_buf + = (ut8_t*) + `mloc +(16); + +69 if( +_buf + = +NULL +) + +70  +l +; + +71 + `memt +( +_buf +, 0x00, 16); + +72 #ifde +ESP32 + + +73 + `mbeds_md5_ +(& +_x +); + +74 + `mbeds_md5_ts +(& +_x +); + +75 + `mbeds_md5_upde +(& +_x +, +da +, +n +); + +76 + `mbeds_md5_fish +(& +_x +, +_buf +); + +78 + `MD5In +(& +_x +); + +79 + `MD5Upde +(& +_x +, +da +, +n +); + +80 + `MD5F +( +_buf +, & +_x +); + +82  +i + = 0; i < 16; i++) { + +83 + `rtf_P +( +ouut + + ( +i + * 2), + `PSTR +("%02x"), +_buf +[i]); + +85 + ` +( +_buf +); + +86  +ue +; + +87 + } +} + +89  +Sg + + $gRdomMD5 +(){ + +90 #ifde +ESP8266 + + +91 +ut32_t + +r + = +RANDOM_REG32 +; + +93 +ut32_t + +r + = + `nd +(); + +95 * +out + = (*) + `mloc +(33); + +96 if( +out + = +NULL + || ! + `gMD5 +(( +ut8_t +*)(& +r +), 4, out)) + +97  +emySg +; + +98 +Sg + +s + = + `Sg +( +out +); + +99 + ` +( +out +); + +100  +s +; + +101 + } +} + +103  +Sg + + $rgMD5 +(cڡ +Sg +& + +){ + +104 * +out + = (*) + `mloc +(33); + +105 if( +out + = +NULL + || ! + `gMD5 +(( +ut8_t +*)( + +. + `c_r +()), in. + `ngth +(), out)) + +106  +emySg +; + +107 +Sg + +s + = + `Sg +( +out +); + +108 + ` +( +out +); + +109  +s +; + +110 + } +} + +112 +Sg + + $geDigeHash +(cڡ * +uame +, cڡ * +sswd +, cڡ * +m +){ + +113 if( +uame + = +NULL + || +sswd + =NULL || +m + == NULL){ + +114  +emySg +; + +116 * +out + = (*) + `mloc +(33); + +117 +Sg + +s + = + `Sg +( +uame +); + +118 +s + += ':'; + +119 +s +. + `ct +( +m +); + +120 +s + += ':'; + +121 +Sg + + + = +s +; + +122 + +. + `ct +( +sswd +); + +123 if( +out + = +NULL + || ! + `gMD5 +(( +ut8_t +*)( + +. + `c_r +()), in. + `ngth +(), out)) + +124  +emySg +; + +125 +s +. + `ct +( +out +); + +126 + ` +( +out +); + +127  +s +; + +128 + } +} + +130 +Sg + + $queDigeAuthtiti +(cڡ * +m +){ + +131 +Sg + +hd + = + `F +("realm=\""); + +132 if( +m + = +NULL +) + +133 +hd +. + `ct +( + `F +("asyncesp")); + +135 +hd +. + `ct +( +m +); + +136 +hd +. + `ct +( + `F +("\", qop=\"auth\",once=\"")); + +137 +hd +. + `ct +( + `gRdomMD5 +()); + +138 +hd +. + `ct +( + `F +("\", opaque=\"")); + +139 +hd +. + `ct +( + `gRdomMD5 +()); + +140 +hd + += '"'; + +141  +hd +; + +142 + } +} + +144 +bo + + $checkDigeAuthtiti +(cڡ * +hd +, cڡ +__FshSgHr + * +mhod +, cڡ * +uame +, cڡ * +sswd +, cڡ * +m +, +bo + +sswdIsHash +, cڡ * +n +, cڡ * +aque +, cڡ * +uri +){ + +145 if( +uame + = +NULL + || +sswd + =NULL || +hd + =NULL || +mhod + == NULL){ + +147  +l +; + +150 +Sg + +myHd + = + `Sg +( +hd +); + +151  +xtBak + = +myHd +. + `dexOf +(','); + +152 if( +xtBak + < 0){ + +154  +l +; + +157 +Sg + +myUame + = + `Sg +(); + +158 +Sg + +myRlm + = + `Sg +(); + +159 +Sg + +myN + = + `Sg +(); + +160 +Sg + +myUri + = + `Sg +(); + +161 +Sg + +myReڣ + = + `Sg +(); + +162 +Sg + +myQ + = + `Sg +(); + +163 +Sg + +myNc + = + `Sg +(); + +164 +Sg + +myCn + = + `Sg +(); + +166 +myHd + + + `F +(", "); + +168 +Sg + +avLe + = +myHd +. + `subrg +(0, +xtBak +); + +169 +avLe +. + `im +(); + +170 +myHd + = myHd. + `subrg +( +xtBak ++1); + +171 +xtBak + = +myHd +. + `dexOf +(','); + +173  +eqSign + = +avLe +. + `dexOf +('='); + +174 if( +eqSign + < 0){ + +176  +l +; + +178 +Sg + +vName + = +avLe +. + `subrg +(0, +eqSign +); + +179 +avLe + =vLe. + `subrg +( +eqSign + + 1); + +180 if( +avLe +. + `tsWh +( + `Sg +('"'))){ + +181 +avLe + =vLe. + `subrg +(1,vLe. + `ngth +() - 1); + +184 if( +vName +. + `equs +( + `F +("username"))){ + +185 if(! +avLe +. + `equs +( +uame +)){ + +187  +l +; + +189 +myUame + = +avLe +; + +190 } if( +vName +. + `equs +( + `F +("realm"))){ + +191 if( +m + ! +NULL + && ! +avLe +. + `equs +(realm)){ + +193  +l +; + +195 +myRlm + = +avLe +; + +196 } if( +vName +. + `equs +( + `F +("nonce"))){ + +197 if( +n + ! +NULL + && ! +avLe +. + `equs +(nonce)){ + +199  +l +; + +201 +myN + = +avLe +; + +202 } if( +vName +. + `equs +( + `F +("opaque"))){ + +203 if( +aque + ! +NULL + && ! +avLe +. + `equs +(opaque)){ + +205  +l +; + +207 } if( +vName +. + `equs +( + `F +("uri"))){ + +208 if( +uri + ! +NULL + && ! +avLe +. + `equs +(uri)){ + +210  +l +; + +212 +myUri + = +avLe +; + +213 } if( +vName +. + `equs +( + `F +("response"))){ + +214 +myReڣ + = +avLe +; + +215 } if( +vName +. + `equs +( + `F +("qop"))){ + +216 +myQ + = +avLe +; + +217 } if( +vName +. + `equs +( + `F +("nc"))){ + +218 +myNc + = +avLe +; + +219 } if( +vName +. + `equs +( + `F +("cnonce"))){ + +220 +myCn + = +avLe +; + +222 }  +xtBak + > 0); + +224 +Sg + +ha1 + = ( +sswdIsHash +? + `Sg +( +sswd +: + `rgMD5 +( +myUame + + ':' + +myRlm + + ':' + String(password)); + +225 +Sg + +ha2 + = + `Sg +( +mhod ++ ':' + +myUri +; + +226 +Sg + +ڣ + = +ha1 + + ':' + +myN + + ':' + +myNc + + ':' + +myCn + + ':' + +myQ + + ':' + + `rgMD5 +( +ha2 +); + +228 if( +myReڣ +. + `equs +( + `rgMD5 +( +ڣ +))){ + +230  +ue +; + +234  +l +; + +235 + } +} + + @lib/ESPAsyncWebServer/WebAuthentication.h + +22 #ide +WEB_AUTHENTICATION_H_ + + +23  + #WEB_AUTHENTICATION_H_ + + + ) + +25  + ~"Arduo.h +" + +27 +bo + +checkBasicAuthtiti +(cڡ * +hd +, cڡ * +uame +, cڡ * +sswd +); + +28 +Sg + +queDigeAuthtiti +(cڡ * +m +); + +29 +bo + +checkDigeAuthtiti +(cڡ * +hd +, cڡ +__FshSgHr + * +mhod +, cڡ * +uame +, cڡ * +sswd +, cڡ * +m +, bo +sswdIsHash +, cڡ * +n +, cڡ * +aque +, cڡ * +uri +); + +32 +Sg + +geDigeHash +(cڡ * +uame +, cڡ * +sswd +, cڡ * +m +); + + @lib/ESPAsyncWebServer/WebHandlerImpl.h + +21 #ide +ASYNCWEBSERVERHANDLERIMPL_H_ + + +22  + #ASYNCWEBSERVERHANDLERIMPL_H_ + + + ) + +24  + ~ + +25 #ifde +ASYNCWEBSERVER_REGEX + + +26  + ~ + +29  + ~"ddef.h +" + +30  + ~ + +32 as + cAsyncSticWebHdr +: +public + +AsyncWebHdr + { + +33 +usg + +Fe + = +fs +::File; + +34 +usg + + mFS + = +fs +:: +FS +; + +35 + mive +: + +36 +bo + +_gFe +( +AsyncWebSvReque + * +que +); + +37 +bo + +_feExis +( +AsyncWebSvReque + * +que +, cڡ +Sg +& +th +); + +38 +ut8_t + + $_couBs +(cڡ +ut8_t + +vue +) const; + +39 +eed +: + +40 +FS + +_fs +; + +41 +Sg + +_uri +; + +42 +Sg + +_th +; + +43 +Sg + +_deu_fe +; + +44 +Sg + +_che_cڌ +; + +45 +Sg + +_ϡ_modifd +; + +46 +AwsTemePross + +_back +; + +47 +bo + +_isD +; + +48 +bo + +_gzF +; + +49 +ut8_t + +_gzSts +; + +50 +public +: + +51 + `AsyncSticWebHdr +(cڡ * +uri +, +FS +& +fs +, cڡ * +th +, cڡ * +che_cڌ +); + +52 +vtu + +bo + + $nHd +( +AsyncWebSvReque + * +que + +ovride + +f +; + +53 +vtu +  + $hdReque +( +AsyncWebSvReque + * +que + +ovride + +f +; + +54 +AsyncSticWebHdr +& + `tIsD +( +bo + +isD +); + +55 +AsyncSticWebHdr +& + `tDeuFe +(cڡ * +fame +); + +56 +AsyncSticWebHdr +& + `tCacheCڌ +(cڡ * +che_cڌ +); + +57 +AsyncSticWebHdr +& + `tLaModifd +(cڡ * +ϡ_modifd +); + +58 +AsyncSticWebHdr +& + `tLaModifd +( +tm +* +ϡ_modifd +); + +59 #ifde +ESP8266 + + +60 +AsyncSticWebHdr +& + `tLaModifd +( +time_t + +ϡ_modifd +); + +61 +AsyncSticWebHdr +& + `tLaModifd +(); + +63 +AsyncSticWebHdr +& + $tTemePross +( +AwsTemePross + +wClback +{ +_back + =ewClback;  * +this +;} + +64 + } +}; + +66 as + cAsyncClbackWebHdr +: +public + +AsyncWebHdr + { + +67 +ive +: + +68 +eed +: + +69 +Sg + +_uri +; + +70 +WebRequeMhodCompose + + m_mhod +; + +71 +ArRequeHdrFuni + + m_Reque +; + +72 +ArUdHdrFuni + + m_Ud +; + +73 +ArBodyHdrFuni + + m_Body +; + +74 +bo + + m_isRegex +; + +75 + mpublic +: + +76 + $AsyncClbackWebHdr +(: + `_uri +(), + `_mhod +( +HTTP_ANY +), + `_Reque +( +NULL +), + `_Ud +(NULL), + `_Body +(NULL), + $_isRegex +( +l +) {} + +77  + $tUri +(cڡ +Sg +& +uri +){ + +78 +_uri + = +uri +; + +79 +_isRegex + = +uri +. + `tsWh +("^"&& uri. + `dsWh +("$"); + +80 + } +} + +81  + $tMhod +( +WebRequeMhodCompose + +mhod +){ +_mhod + = mhod; + } +} + +82  + $Reque +( +ArRequeHdrFuni + + +){ +_Reque + = fn; + } +} + +83  + $Ud +( +ArUdHdrFuni + + +){ +_Ud + = fn; + } +} + +84  + $Body +( +ArBodyHdrFuni + + +){ +_Body + = fn; + } +} + +86 +vtu + +bo + + $nHd +( +AsyncWebSvReque + * +que + +ovride + +f +{ + +88 if(! +_Reque +) + +89  +l +; + +91 if(!( +_mhod + & +que +-> + `mhod +())) + +92  +l +; + +94 #ifde +ASYNCWEBSERVER_REGEX + + +95 i( +_isRegex +) { + +96 +d +:: +gex + + `n +( +_uri +. + `c_r +()); + +97 +d +:: +smch + +mches +; + +98 +d +:: +rg + + `s +( +que +-> + `u +(). + `c_r +()); + +99 if( +d +:: + `gex_ch +( +s +, +mches +, +n +)) { + +100  +size_t + +i + = 1; i < +mches +. + `size +(); ++i) { + +101 +que +-> + `_addPhPam +( +mches +[ +i +]. + `r +(). + `c_r +()); + +104  +l +; + +108 i( +_uri +. + `ngth +(&& _uri. + `dsWh +("*")) { + +109 +Sg + +uriTeme + = + `Sg +( +_uri +); + +110 +uriTeme + = uriTeme. + `subrg +(0, uriTeme. + `ngth +() - 1); + +111 i(! +que +-> + `u +(). + `tsWh +( +uriTeme +)) + +112  +l +; + +114 if( +_uri +. + `ngth +(&& (_ur! +que +-> + `u +(&& !que->u(). + `tsWh +(_uri+"/"))) + +115  +l +; + +117 +que +-> + `addIegHd +("ANY"); + +118  +ue +; + +119 + } +} + +121 +vtu +  + $hdReque +( +AsyncWebSvReque + * +que + +ovride + +f + { + +122 if( +_Reque +) + +123 + `_Reque +( +que +); + +125 +que +-> + `nd +(500); + +126 + } +} + +127 +vtu +  + $hdUd +( +AsyncWebSvReque + * +que +, cڡ +Sg +& +fame +, +size_t + +dex +, +ut8_t + * +da +, size_ +n +, +bo + +f + +ovride + final { + +128 if( +_Ud +) + +129 + `_Ud +( +que +, +fame +, +dex +, +da +, +n +, +f +); + +130 + } +} + +131 +vtu +  + $hdBody +( +AsyncWebSvReque + * +que +, +ut8_t + * +da +, +size_t + +n +, size_ +dex +, size_ +tٮ + +ovride + +f + { + +132 if( +_Body +) + +133 + `_Body +( +que +, +da +, +n +, +dex +, +tٮ +); + +134 + } +} + +135 +vtu + +bo + + $isRequeHdrTrivl +( +ovride + +f + { +_Reque + ? +l + : +ue +; + } +} + + @lib/ESPAsyncWebServer/WebHandlers.cpp + +21  + ~"ESPAsyncWebSv.h +" + +22  + ~"WebHdrIm.h +" + +24 + gAsyncSticWebHdr +:: + $AsyncSticWebHdr +(cڡ * +uri +, +FS +& +fs +, cڡ * +th +, cڡ * +che_cڌ +) + +25 : + `_fs +( +fs +), + `_uri +( +uri +), + `_th +( +th +), + `_deu_fe +( + `F +("dex.htm")), + `_che_cڌ +( +che_cڌ +), + `_ϡ_modifd +(), + $_back +( +nuαr +) + +28 i( +_uri +. + `ngth +(=0 || _uri[0] !'/'_ur + `Sg +('/') + _uri; + +29 i( +_th +. + `ngth +(=0 || _th[0] !'/'_th = + `Sg +('/') + _path; + +33 +_isD + = +_th +[_th. + `ngth +()-1] == '/'; + +37 i( +_uri +[_uri. + `ngth +()-1] ='/'_ur_uri. + `subrg +(0, _uri.length()-1); + +38 i( +_th +[_th. + `ngth +()-1] ='/'_th = _th. + `subrg +(0, _path.length()-1); + +41 +_gzF + = +l +; + +42 +_gzSts + = 0xF8; + +43 + } +} + +45 + gAsyncSticWebHdr +& AsyncSticWebHdr:: + $tIsD +( +bo + +isD +){ + +46 +_isD + = +isD +; + +47  * +this +; + +48 + } +} + +50 + gAsyncSticWebHdr +& AsyncSticWebHdr:: + $tDeuFe +(cڡ * +fame +){ + +51 +_deu_fe + = + `Sg +( +fame +); + +52  * +this +; + +53 + } +} + +55 + gAsyncSticWebHdr +& AsyncSticWebHdr:: + $tCacheCڌ +(cڡ * +che_cڌ +){ + +56 +_che_cڌ + = + `Sg +( +che_cڌ +); + +57  * +this +; + +58 + } +} + +60 + gAsyncSticWebHdr +& AsyncSticWebHdr:: + $tLaModifd +(cڡ * +ϡ_modifd +){ + +61 +_ϡ_modifd + = + `Sg +( +ϡ_modifd +); + +62  * +this +; + +63 + } +} + +65 + gAsyncSticWebHdr +& AsyncSticWebHdr:: + $tLaModifd +( +tm +* +ϡ_modifd +){ + +66 aut +fmP + = + `PSTR +("%a, %d %b %Y %H:%M:%S %Z"); + +67  +fm +[ + `_P +( +fmP +) + 1]; + +68 + `ry_P +( +fm +, +fmP +); + +70  +su +[30]; + +71 + `rime +( +su +, esu), +fm +, +ϡ_modifd +); + +72  + `tLaModifd +((cڡ *) +su +); + +73 + } +} + +75 #ifde +ESP8266 + + +76 + gAsyncSticWebHdr +& AsyncSticWebHdr:: + $tLaModifd +( +time_t + +ϡ_modifd +){ + +77  + `tLaModifd +(( +tm + *) + `gmtime +(& +ϡ_modifd +)); + +78 + } +} + +80 + gAsyncSticWebHdr +& AsyncSticWebHdr:: + $tLaModifd +(){ + +81 +time_t + +ϡ_modifd +; + +82 if( + `time +(& +ϡ_modifd +) == 0) + +83  * +this +; + +84  + `tLaModifd +( +ϡ_modifd +); + +85 + } +} + +87 +bo + + gAsyncSticWebHdr +:: + $nHd +( +AsyncWebSvReque + * +que +){ + +88 if( +que +-> + `mhod +(! +HTTP_GET + + +89 || ! +que +-> + `u +(). + `tsWh +( +_uri +) + +90 || ! +que +-> + `isExedRequeedCnTy +( +RCT_DEFAULT +, +RCT_HTTP +) + +92  +l +; + +94 i( + `_gFe +( +que +)) { + +96 i( +_ϡ_modifd +. + `ngth +()) + +97 +que +-> + `addIegHd +( + `F +("If-Modified-Since")); + +99 if( +_che_cڌ +. + `ngth +()) + +100 +que +-> + `addIegHd +( + `F +("If-None-Match")); + +102 + `DEBUGF +("[AsyncStaticWebHandler::canHandle] TRUE\n"); + +103  +ue +; + +106  +l +; + +107 + } +} + +109 +bo + + gAsyncSticWebHdr +:: + $_gFe +( +AsyncWebSvReque + * +que +) + +112 +Sg + +th + = +que +-> + `u +(). + `subrg +( +_uri +. + `ngth +()); + +115 +bo + +nSkFeCheck + = ( +_isD + && +th +. + `ngth +() == 0) || (path.length() &&ath[path.length()-1] == '/'); + +117 +th + = +_th + +ath; + +120 i(! +nSkFeCheck + && + `_feExis +( +que +, +th +)) + +121  +ue +; + +124 i( +_deu_fe +. + `ngth +() == 0) + +125  +l +; + +128 i( +th +. + `ngth +() == 0 ||ath[path.length()-1] != '/') + +129 +th + + + `Sg +('/'); + +130 +th + + +_deu_fe +; + +132  + `_feExis +( +que +, +th +); + +133 + } +} + +135 #ifde +ESP32 + + +136  + #FILE_IS_REAL +( +f +(= +ue + && !f. + `isDey +()) + + ) + +138  + #FILE_IS_REAL +( +f +(= +ue +) + + ) + +141 +bo + + gAsyncSticWebHdr +:: + $_feExis +( +AsyncWebSvReque + * +que +, cڡ +Sg +& +th +) + +143 +bo + +feFound + = +l +; + +144 +bo + +gzFound + = +l +; + +146 +Sg + +gz + = +th + + + `F +(".gz"); + +148 i( +_gzF +) { + +149 +que +-> +_mpFe + = +_fs +. + `ݒ +( +gz +, +fs +:: +FeOnMode +:: +ad +); + +150 +gzFound + = + `FILE_IS_REAL +( +que +-> +_mpFe +); + +151 i(! +gzFound +){ + +152 +que +-> +_mpFe + = +_fs +. + `ݒ +( +th +, +fs +:: +FeOnMode +:: +ad +); + +153 +feFound + = + `FILE_IS_REAL +( +que +-> +_mpFe +); + +156 +que +-> +_mpFe + = +_fs +. + `ݒ +( +th +, +fs +:: +FeOnMode +:: +ad +); + +157 +feFound + = + `FILE_IS_REAL +( +que +-> +_mpFe +); + +158 i(! +feFound +){ + +159 +que +-> +_mpFe + = +_fs +. + `ݒ +( +gz +, +fs +:: +FeOnMode +:: +ad +); + +160 +gzFound + = + `FILE_IS_REAL +( +que +-> +_mpFe +); + +164 +bo + +found + = +feFound + || +gzFound +; + +166 i( +found +) { + +168 +size_t + +thL + = +th +. + `ngth +(); + +169 * +_mpPh + = (*) + `mloc +( +thL ++1); + +170 + `tf_P +( +_mpPh +, +thL ++1, + `PSTR +("%s"), +th +. + `c_r +()); + +171 +que +-> +_mpObje + = (*) +_mpPh +; + +174 +_gzSts + = (_gzSt<< 1+ ( +gzFound + ? 1 : 0); + +175 i( +_gzSts + =0x00 +_gzF + = +l +; + +176 i( +_gzSts + =0xFF +_gzF + = +ue +; + +177 +_gzF + = + `_couBs +( +_gzSts +) > 4; + +180  +found +; + +181 + } +} + +183 +ut8_t + + gAsyncSticWebHdr +:: + $_couBs +(cڡ +ut8_t + +vue +) const + +185 +ut8_t + +w + = +vue +; + +186 +ut8_t + +n +; + +187  +n +=0; +w +!=0;++) w&=w-1; + +188  +n +; + +189 + } +} + +191  + gAsyncSticWebHdr +:: + $hdReque +( +AsyncWebSvReque + * +que +) + +194 +Sg + +fame + = + `Sg +((*) +que +-> +_mpObje +); + +195 + ` +( +que +-> +_mpObje +); + +196 +que +-> +_mpObje + = +NULL +; + +197 if(( +_uame +. + `ngth +(&& +_sswd +.ngth()&& ! +que +-> + `authti +(_uame. + `c_r +(), _password.c_str())) + +198  +que +-> + `queAuthtiti +(); + +200 i( +que +-> +_mpFe + = +ue +) { + +201 +Sg + +ag + = + `Sg +( +que +-> +_mpFe +. + `size +()); + +202 i( +_ϡ_modifd +. + `ngth +(&& _ϡ_modifd = +que +-> + `hd +( + `F +("If-Modified-Since"))) { + +203 +que +-> +_mpFe +. + `o +(); + +204 +que +-> + `nd +(304); + +205 } i( +_che_cڌ +. + `ngth +(&& +que +-> + `hasHd +( + `F +("If-Ne-Mch")&&eque-> + `hd +(F("If-Ne-Mch")). + `equs +( +ag +)) { + +206 +que +-> +_mpFe +. + `o +(); + +207 +AsyncWebSvReڣ + * +ڣ + = +w + + `AsyncBasicReڣ +(304); + +208 +ڣ +-> + `addHd +( + `F +("Cache-Cڌ"), +_che_cڌ +); + +209 +ڣ +-> + `addHd +( + `F +("ETag"), +ag +); + +210 +que +-> + `nd +( +ڣ +); + +212 +AsyncWebSvReڣ + * +ڣ + = +w + + `AsyncFeReڣ +( +que +-> +_mpFe +, +fame +, + `Sg +(), +l +, +_back +); + +213 i( +_ϡ_modifd +. + `ngth +()) + +214 +ڣ +-> + `addHd +( + `F +("La-Modifd"), +_ϡ_modifd +); + +215 i( +_che_cڌ +. + `ngth +()){ + +216 +ڣ +-> + `addHd +( + `F +("Cache-Cڌ"), +_che_cڌ +); + +217 +ڣ +-> + `addHd +( + `F +("ETag"), +ag +); + +219 +que +-> + `nd +( +ڣ +); + +222 +que +-> + `nd +(404); + +224 + } +} + + @lib/ESPAsyncWebServer/WebRequest.cpp + +21  + ~"ESPAsyncWebSv.h +" + +22  + ~"WebReڣIm.h +" + +23  + ~"WebAuthtiti.h +" + +25 #ide +ESP8266 + + +26  + #os_ + + + + + ) + +29  + #__is_m_ch +( +c +((c&& ((c!'{'&& ((c!'['&& ((c!'&'&& ((c!'=')) + + ) + +31 um { + mPARSE_REQ_START +, + mPARSE_REQ_HEADERS +, + mPARSE_REQ_BODY +, + mPARSE_REQ_END +, + mPARSE_REQ_FAIL + }; + +33 + gAsyncWebSvReque +:: + $AsyncWebSvReque +( +AsyncWebSv +* +s +, +AsyncCl +* +c +) + +34 : + `_ +( +c +) + +35 , + `_rv +( +s +) + +36 , + `_hdr +( +NULL +) + +37 , + `_ڣ +( +NULL +) + +38 , + `_mp +() + +39 , + `_rS +(0) + +40 , + `_vsi +(0) + +41 , + `_mhod +( +HTTP_ANY +) + +42 , + `_u +() + +43 , + `_ho +() + +44 , + `_cڋTy +() + +45 , + `_boundy +() + +46 , + `_authizi +() + +47 , + `_qcy +( +RCT_HTTP +) + +48 , + `_isDige +( +l +) + +49 , + `_isMuɝt +( +l +) + +50 , + `_isPϚPo +( +l +) + +51 , + `_exgCtue +( +l +) + +52 , + `_cڋLgth +(0) + +53 , + `_rdLgth +(0) + +54 , + `_hds +( +LkedLi +< +AsyncWebHd + *>([](AsyncWebHd * +h +){ +de + h; + } +})) + +55 , +_ms +( +LkedLi +< +AsyncWebPam + *>([](AsyncWebPam * +p +){ +de +; })) + +56 , +_thPams +( +LkedLi +< +Sg + *>([](Sg * +p +){ +de +; })) + +57 , +_muiPS +(0) + +58 , +_boundyPosi +(0) + +59 , +_emSIndex +(0) + +60 , +_emSize +(0) + +61 , +_emName +() + +62 , +_emFame +() + +63 , +_emTy +() + +64 , +_emVue +() + +65 , +_emBufr +(0) + +66 , +_emBufrIndex +(0) + +67 , +_emIsFe +( +l +) + +68 , + $_mpObje +( +NULL +) + +70 +c +-> + `E +([](* +r +, +AsyncCl +* c, +t8_t + +r +){ ()c; +AsyncWebSvReque + * +q + = (AsyncWebSvReque*;eq-> + `_E +Ӽ); }, +this +); + +71 +c +-> + `Ack +([](* +r +, +AsyncCl +* c, +size_t + +n +, +ut32_t + +time +){ ()c; +AsyncWebSvReque + * +q + = (AsyncWebSvReque*;eq-> + `_Ack +֒,ime); }, +this +); + +72 +c +-> + `Disc +([](* +r +, +AsyncCl +* c){ +AsyncWebSvReque + * +q + = (AsyncWebSvReque*;eq-> + `_Disc +(); +de + c; }, +this +); + +73 +c +-> + `Timeout +([](* +r +, +AsyncCl +* c, +ut32_t + +time +){ ()c; +AsyncWebSvReque + * +q + = (AsyncWebSvReque*;eq-> + `_Timeout +ime); }, +this +); + +74 +c +-> + `Da +([](* +r +, +AsyncCl +* c, * +buf +, +size_t + +n +){ ()c; +AsyncWebSvReque + * +q + = (AsyncWebSvReque*;eq-> + `_Da +(buf,); }, +this +); + +75 +c +-> + `Pl +([](* +r +, +AsyncCl +* c){ ()c; +AsyncWebSvReque + * +q + = ( AsyncWebSvReque*;eq-> + `_Pl +(); }, +this +); + +76 + } +} + +78 + gAsyncWebSvReque +::~ + $AsyncWebSvReque +(){ + +79 +_hds +. + ` +(); + +81 +_ms +. + ` +(); + +82 +_thPams +. + ` +(); + +84 +_gHds +. + ` +(); + +86 if( +_ڣ + ! +NULL +){ + +87 +de + +_ڣ +; + +90 if( +_mpObje + ! +NULL +){ + +91 + ` +( +_mpObje +); + +94 if( +_mpFe +){ + +95 +_mpFe +. + `o +(); + +97 + } +} + +99  + gAsyncWebSvReque +:: + $_Da +(* +buf +, +size_t + +n +){ + +100 +size_t + +i + = 0; + +101  +ue +) { + +103 if( +_rS + < +PARSE_REQ_BODY +){ + +105 * +r + = (*) +buf +; + +106  +i + = 0; i < +n +; i++) { + +107 i( +r +[ +i +] == '\n') { + +111 i( +i + = +n +) { + +112  +ch + = +r +[ +n +-1]; + +113 +r +[ +n +-1] = 0; + +114 +_mp +. + `rve +(_mp. + `ngth +()+ +n +); + +115 +_mp +. + `ct +( +r +); + +116 +_mp +. + `ct +( +ch +); + +118 +r +[ +i +] = 0; + +119 +_mp +. + `ct +( +r +); + +120 +_mp +. + `im +(); + +121 + `_rLe +(); + +122 i(++ +i + < +n +) { + +124 +buf + = +r ++ +i +; + +125 +n +- +i +; + +129 } if( +_rS + = +PARSE_REQ_BODY +){ + +132 cڡ +bo + +edP + = +_hdr + && !_hdr-> + `isRequeHdrTrivl +(); + +133 if( +_isMuɝt +){ + +134 if( +edP +){ + +135 +size_t + +i +; + +136  +i +=0; i< +n +; i++){ + +137 + `_rMuɝtPoBy +((( +ut8_t +*) +buf +)[ +i +], i = +n + - 1); + +138 +_rdLgth +++; + +141 +_rdLgth + + +n +; + +143 if( +_rdLgth + == 0){ + +144 if( +_cڋTy +. + `tsWh +( + `F +("application/x-www-form-urlencoded"))){ + +145 +_isPϚPo + = +ue +; + +146 } if( +_cڋTy + = + `F +("xt/a"&& + `__is_m_ch +(((*) +buf +)[0])){ + +147 +size_t + +i + = 0; + +148  +i +< +n + && + `__is_m_ch +(((*) +buf +)[i++])); + +149 if( +i + < +n + && ((*) +buf +)[i-1] == '='){ + +150 +_isPϚPo + = +ue +; + +154 if(! +_isPϚPo +) { + +156 if( +_hdr +_hdr-> + `hdBody +( +this +, ( +ut8_t +*) +buf +, +n +, +_rdLgth +, +_cڋLgth +); + +157 +_rdLgth + + +n +; + +158 } if( +edP +) { + +159 +size_t + +i +; + +160  +i +=0; i< +n +; i++){ + +161 +_rdLgth +++; + +162 + `_rPϚPoCh +((( +ut8_t +*) +buf +)[ +i +]); + +165 +_rdLgth + + +n +; + +168 if( +_rdLgth + = +_cڋLgth +){ + +169 +_rS + = +PARSE_REQ_END +; + +171 if( +_hdr +_hdr-> + `hdReque +( +this +); + +172 + `nd +(501); + +177 + } +} + +179  + gAsyncWebSvReque +:: + $_moveNIegHds +(){ + +180 i( +_gHds +. + `cڏsIgneCa +( + `F +("ANY"))) ; + +181 cڡuto& +hd +: +_hds +){ + +182 if(! +_gHds +. + `cڏsIgneCa +( +hd +-> + `me +(). + `c_r +())){ + +183 +_hds +. + `move +( +hd +); + +186 + } +} + +188  + gAsyncWebSvReque +:: + $_Pl +(){ + +190 if( +_ڣ + ! +NULL + && +_ + !NULL && _-> + `nSd +(&& !_ڣ-> + `_fished +()){ + +191 +_ڣ +-> + `_ack +( +this +, 0, 0); + +193 + } +} + +195  + gAsyncWebSvReque +:: + $_Ack +( +size_t + +n +, +ut32_t + +time +){ + +197 if( +_ڣ + ! +NULL +){ + +198 if(! +_ڣ +-> + `_fished +()){ + +199 +_ڣ +-> + `_ack +( +this +, +n +, +time +); + +201 +AsyncWebSvReڣ +* +r + = +_ڣ +; + +202 +_ڣ + = +NULL +; + +203 +de + +r +; + +206 + } +} + +208  + gAsyncWebSvReque +:: + $_E +( +t8_t + +r +){ + +209 () +r +; + +210 + } +} + +212  + gAsyncWebSvReque +:: + $_Timeout +( +ut32_t + +time +){ + +213 () +time +; + +215 +_ +-> + `o +(); + +216 + } +} + +218  + gAsyncWebSvReque +:: + $Disc + ( +ArDiscHdr + + +){ + +219 +_Disc += + +; + +220 + } +} + +222  + gAsyncWebSvReque +:: + $_Disc +(){ + +224 if( +_Disc +) { + +225 + `_Disc +(); + +227 +_rv +-> + `_hdDisc +( +this +); + +228 + } +} + +230  + gAsyncWebSvReque +:: + $_addPam +( +AsyncWebPam + * +p +){ + +231 +_ms +. + `add +( +p +); + +232 + } +} + +234  + gAsyncWebSvReque +:: + $_addPhPam +(cڡ * +p +){ + +235 +_thPams +. + `add +( +w + + `Sg +( +p +)); + +236 + } +} + +238  + gAsyncWebSvReque +:: + $_addGPams +(cڡ +Sg +& +ms +){ + +239 +size_t + +t + = 0; + +240  +t + < +ms +. + `ngth +()){ + +241  +d + = +ms +. + `dexOf +('&', +t +); + +242 i( +d + < 0d = +ms +. + `ngth +(); + +243  +equ + = +ms +. + `dexOf +('=', +t +); + +244 i( +equ + < 0 ||qu > +d +)qual =nd; + +245 +Sg + +me + = +ms +. + `subrg +( +t +, +equ +); + +246 +Sg + +vue + = +equ + + 1 < +d + ? +ms +. + `subrg +qu + 1,nd: + `Sg +(); + +247 + `_addPam +( +w + + `AsyncWebPam +( + `uDecode +( +me +), uDecode( +vue +))); + +248 +t + = +d + + 1; + +250 + } +} + +252 +bo + + gAsyncWebSvReque +:: + $_rReqHd +(){ + +254  +dex + = +_mp +. + `dexOf +(' '); + +255 +Sg + +m + = +_mp +. + `subrg +(0, +dex +); + +256 +dex + = +_mp +. + `dexOf +(' ', index+1); + +257 +Sg + +u + = +_mp +. + `subrg +( +m +. + `ngth +()+1, +dex +); + +258 +_mp + = _mp. + `subrg +( +dex ++1); + +260 if( +m + = + `F +("GET")){ + +261 +_mhod + = +HTTP_GET +; + +262 } if( +m + = + `F +("POST")){ + +263 +_mhod + = +HTTP_POST +; + +264 } if( +m + = + `F +("DELETE")){ + +265 +_mhod + = +HTTP_DELETE +; + +266 } if( +m + = + `F +("PUT")){ + +267 +_mhod + = +HTTP_PUT +; + +268 } if( +m + = + `F +("PATCH")){ + +269 +_mhod + = +HTTP_PATCH +; + +270 } if( +m + = + `F +("HEAD")){ + +271 +_mhod + = +HTTP_HEAD +; + +272 } if( +m + = + `F +("OPTIONS")){ + +273 +_mhod + = +HTTP_OPTIONS +; + +276 +Sg + +g +; + +277 +dex + = +u +. + `dexOf +('?'); + +278 if( +dex + > 0){ + +279 +g + = +u +. + `subrg +( +dex + +1); + +280 +u + = u. + `subrg +(0, +dex +); + +282 +_u + = + `uDecode +( +u +); + +283 + `_addGPams +( +g +); + +285 if(! +_mp +. + `tsWh +( + `F +("HTTP/1.0"))) + +286 +_vsi + = 1; + +288 +_mp + = + `Sg +(); + +289  +ue +; + +290 + } +} + +292 +bo + + $rCڏs +(cڡ +Sg + & +c +, cڡ Sg & +fd +, +bo + +md + = +ue +) { + +293  +pos +=0, +i +=0; + +294 cڡ  + + = +c +. + `ngth +(); + +295 cڡ  + + = +fd +. + `ngth +(); + +297 i( + + < + + +l +; + +298  +pos + <( + + - + +)) { + +299  +i +=0; i < + +; i++) { + +300 i( +md +) { + +301 i( +c +[ +pos ++ +i +] ! +fd +[i] + + + 1; + +303 i( + `tow +( +c +[ +pos ++ +i +]!tow( +fd +[i])) { + +304 +i + = + + + 1; + +307 i( +i + = + + +ue +; + +308 +pos +++; + +310  +l +; + +311 + } +} + +313 +bo + + gAsyncWebSvReque +:: + $_rReqHd +(){ + +314  +dex + = +_mp +. + `dexOf +(':'); + +315 if( +dex +){ + +316 +Sg + +me + = +_mp +. + `subrg +(0, +dex +); + +317 +Sg + +vue + = +_mp +. + `subrg +( +dex + + 2); + +318 if( +me +. + `equsIgneCa +("Host")){ + +319 +_ho + = +vue +; + +320 } if( +me +. + `equsIgneCa +( + `F +("Content-Type"))){ + +321 +_cڋTy + = +vue +. + `subrg +(0, vue. + `dexOf +(';')); + +322 i( +vue +. + `tsWh +( + `F +("multipart/"))){ + +323 +_boundy + = +vue +. + `subrg +(vue. + `dexOf +('=')+1); + +324 +_boundy +. + `a +( + `Sg +('"'), String()); + +325 +_isMuɝt + = +ue +; + +327 } if( +me +. + `equsIgneCa +( + `F +("Content-Length"))){ + +328 +_cڋLgth + = + `oi +( +vue +. + `c_r +()); + +329 } if( +me +. + `equsIgneCa +( + `F +("Ex")&& +vue + == F("100-continue")){ + +330 +_exgCtue + = +ue +; + +331 } if( +me +. + `equsIgneCa +( + `F +("Authorization"))){ + +332 if( +vue +. + `ngth +(> 5 && vue. + `subrg +(0,5). + `equsIgneCa +( + `F +("Basic"))){ + +333 +_authizi + = +vue +. + `subrg +(6); + +334 } if( +vue +. + `ngth +(> 6 && vue. + `subrg +(0,6). + `equsIgneCa +( + `F +("Digest"))){ + +335 +_isDige + = +ue +; + +336 +_authizi + = +vue +. + `subrg +(7); + +339 if( +me +. + `equsIgneCa +( + `F +("Upgde")&& +vue +.equalsIgnoreCase(F("websocket"))){ + +341 +_qcy + = +RCT_WS +; + +343 if( +me +. + `equsIgneCa +( + `F +("Ac")&& + `rCڏs +( +vue +, F("xt/evt-am"), +l +)){ + +345 +_qcy + = +RCT_EVENT +; + +349 +_hds +. + `add +( +w + + `AsyncWebHd +( +me +, +vue +)); + +351 +_mp + = + `Sg +(); + +352  +ue +; + +353 + } +} + +355  + gAsyncWebSvReque +:: + $_rPϚPoCh +( +ut8_t + +da +){ + +356 if( +da + && ()data != '&') + +357 +_mp + +() +da +; + +358 if(! +da + || ()d='&' || +_rdLgth + = +_cڋLgth +){ + +359 +Sg + +me + = + `F +("body"); + +360 +Sg + +vue + = +_mp +; + +361 if(! +_mp +. + `tsWh +( + `Sg +('{')&& !_mp.tsWh(Sg('[')&& _mp. + `dexOf +('=') > 0){ + +362 +me + = +_mp +. + `subrg +(0, _mp. + `dexOf +('=')); + +363 +vue + = +_mp +. + `subrg +(_mp. + `dexOf +('=') + 1); + +365 + `_addPam +( +w + + `AsyncWebPam +( + `uDecode +( +me +), uDecode( +vue +), +ue +)); + +366 +_mp + = + `Sg +(); + +368 + } +} + +370  + gAsyncWebSvReque +:: + $_hdUdBy +( +ut8_t + +da +, +bo + +ϡ +){ + +371 +_emBufr +[ +_emBufrIndex +++] = +da +; + +373 if( +ϡ + || +_emBufrIndex + == 1460){ + +375 if( +_hdr +) + +376 +_hdr +-> + `hdUd +( +this +, +_emFame +, +_emSize + - +_emBufrIndex +, +_emBufr +, _emBufrIndex, +l +); + +377 +_emBufrIndex + = 0; + +379 + } +} + +382 + mEXPECT_BOUNDARY +, + +383 + mPARSE_HEADERS +, + +384 + mWAIT_FOR_RETURN1 +, + +385 + mEXPECT_FEED1 +, + +386 + mEXPECT_DASH1 +, + +387 + mEXPECT_DASH2 +, + +388 + mBOUNDARY_OR_DATA +, + +389 + mDASH3_OR_RETURN2 +, + +390 + mEXPECT_FEED2 +, + +391 + mPARSING_FINISHED +, + +392 + mPARSE_ERROR + + +395  + gAsyncWebSvReque +:: + $_rMuɝtPoBy +( +ut8_t + +da +, +bo + +ϡ +){ + +396  + #emWreBy +( +b +d{ +_emSize +++; if( +_emIsFe + + `_hdUdBy +(b, +ϡ +); +_emVue ++=()(b); } 0) + + ) + +398 if(! +_rdLgth +){ + +399 +_muiPS + = +EXPECT_BOUNDARY +; + +400 +_mp + = + `Sg +(); + +401 +_emName + = + `Sg +(); + +402 +_emFame + = + `Sg +(); + +403 +_emTy + = + `Sg +(); + +406 if( +_muiPS + = +WAIT_FOR_RETURN1 +){ + +407 if( +da + != '\r'){ + +408 + `emWreBy +( +da +); + +410 +_muiPS + = +EXPECT_FEED1 +; + +412 } if( +_muiPS + = +EXPECT_BOUNDARY +){ + +413 if( +_rdLgth + < 2 && +da + != '-'){ + +414 +_muiPS + = +PARSE_ERROR +; + +416 } if( +_rdLgth + - 2 < +_boundy +. + `ngth +(&& _boundy. + `c_r +()[_rdLgth - 2] ! +da +){ + +417 +_muiPS + = +PARSE_ERROR +; + +419 } if( +_rdLgth + - 2 = +_boundy +. + `ngth +(&& +da + != '\r'){ + +420 +_muiPS + = +PARSE_ERROR +; + +422 } if( +_rdLgth + - 3 = +_boundy +. + `ngth +()){ + +423 if( +da + != '\n'){ + +424 +_muiPS + = +PARSE_ERROR +; + +427 +_muiPS + = +PARSE_HEADERS +; + +428 +_emIsFe + = +l +; + +430 } if( +_muiPS + = +PARSE_HEADERS +){ + +431 if(() +da + != '\r' && ()data != '\n') + +432 +_mp + +() +da +; + +433 if(() +da + == '\n'){ + +434 if( +_mp +. + `ngth +()){ + +435 if( +_mp +. + `ngth +(> 12 && _mp. + `subrg +(0, 12). + `equsIgneCa +( + `F +("Content-Type"))){ + +436 +_emTy + = +_mp +. + `subrg +(14); + +437 +_emIsFe + = +ue +; + +438 } if( +_mp +. + `ngth +(> 19 && _mp. + `subrg +(0, 19). + `equsIgneCa +( + `F +("Content-Disposition"))){ + +439 +_mp + = _mp. + `subrg +(_mp. + `dexOf +(';') + 2); + +440  +_mp +. + `dexOf +(';') > 0){ + +441 +Sg + +me + = +_mp +. + `subrg +(0, _mp. + `dexOf +('=')); + +442 +Sg + +meV + = +_mp +. + `subrg +(_mp. + `dexOf +('=') + 2, _temp.indexOf(';') - 1); + +443 if( +me + = + `F +("name")){ + +444 +_emName + = +meV +; + +445 } if( +me + = + `F +("filename")){ + +446 +_emFame + = +meV +; + +447 +_emIsFe + = +ue +; + +449 +_mp + = _mp. + `subrg +(_mp. + `dexOf +(';') + 2); + +451 +Sg + +me + = +_mp +. + `subrg +(0, _mp. + `dexOf +('=')); + +452 +Sg + +meV + = +_mp +. + `subrg +(_mp. + `dexOf +('='+ 2, _mp. + `ngth +() - 1); + +453 if( +me + = + `F +("name")){ + +454 +_emName + = +meV +; + +455 } if( +me + = + `F +("filename")){ + +456 +_emFame + = +meV +; + +457 +_emIsFe + = +ue +; + +460 +_mp + = + `Sg +(); + +462 +_muiPS + = +WAIT_FOR_RETURN1 +; + +464 +_emSize + = 0; + +465 +_emSIndex + = +_rdLgth +; + +466 +_emVue + = + `Sg +(); + +467 if( +_emIsFe +){ + +468 if( +_emBufr +) + +469 + ` +( +_emBufr +); + +470 +_emBufr + = ( +ut8_t +*) + `mloc +(1460); + +471 if( +_emBufr + = +NULL +){ + +472 +_muiPS + = +PARSE_ERROR +; + +475 +_emBufrIndex + = 0; + +479 } if( +_muiPS + = +EXPECT_FEED1 +){ + +480 if( +da + != '\n'){ + +481 +_muiPS + = +WAIT_FOR_RETURN1 +; + +482 + `emWreBy +('\r'); + `_rMuɝtPoBy +( +da +, +ϡ +); + +484 +_muiPS + = +EXPECT_DASH1 +; + +486 } if( +_muiPS + = +EXPECT_DASH1 +){ + +487 if( +da + != '-'){ + +488 +_muiPS + = +WAIT_FOR_RETURN1 +; + +489 + `emWreBy +('\r'); imWreBy('\n'); + `_rMuɝtPoBy +( +da +, +ϡ +); + +491 +_muiPS + = +EXPECT_DASH2 +; + +493 } if( +_muiPS + = +EXPECT_DASH2 +){ + +494 if( +da + != '-'){ + +495 +_muiPS + = +WAIT_FOR_RETURN1 +; + +496 + `emWreBy +('\r'); imWreBy('\n'); imWreBy('-'); + `_rMuɝtPoBy +( +da +, +ϡ +); + +498 +_muiPS + = +BOUNDARY_OR_DATA +; + +499 +_boundyPosi + = 0; + +501 } if( +_muiPS + = +BOUNDARY_OR_DATA +){ + +502 if( +_boundyPosi + < +_boundy +. + `ngth +(&& _boundy. + `c_r +()[_boundyPosi] ! +da +){ + +503 +_muiPS + = +WAIT_FOR_RETURN1 +; + +504 + `emWreBy +('\r'); itemWriteByte('\n'); itemWriteByte('-'); itemWriteByte('-'); + +505 +ut8_t + +i +; + +506  +i +=0; i< +_boundyPosi +; i++) + +507 + `emWreBy +( +_boundy +. + `c_r +()[ +i +]); + +508 + `_rMuɝtPoBy +( +da +, +ϡ +); + +509 } if( +_boundyPosi + = +_boundy +. + `ngth +() - 1){ + +510 +_muiPS + = +DASH3_OR_RETURN2 +; + +511 if(! +_emIsFe +){ + +512 + `_addPam +( +w + + `AsyncWebPam +( +_emName +, +_emVue +, +ue +)); + +514 if( +_emSize +){ + +516 if( +_hdr +_hdr-> + `hdUd +( +this +, +_emFame +, +_emSize + - +_emBufrIndex +, +_emBufr +, _emBufrIndex, +ue +); + +517 +_emBufrIndex + = 0; + +518 + `_addPam +( +w + + `AsyncWebPam +( +_emName +, +_emFame +, +ue +,rue, +_emSize +)); + +520 + ` +( +_emBufr +); + +521 +_emBufr + = +NULL +; + +525 +_boundyPosi +++; + +527 } if( +_muiPS + = +DASH3_OR_RETURN2 +){ + +528 if( +da + ='-' && ( +_cڋLgth + - +_rdLgth + - 4) != 0){ + +530 +_cڋLgth + = +_rdLgth + + 4; + +532 if( +da + == '\r'){ + +533 +_muiPS + = +EXPECT_FEED2 +; + +534 } if( +da + ='-' && +_cڋLgth + =( +_rdLgth + + 4)){ + +535 +_muiPS + = +PARSING_FINISHED +; + +537 +_muiPS + = +WAIT_FOR_RETURN1 +; + +538 + `emWreBy +('\r'); itemWriteByte('\n'); itemWriteByte('-'); itemWriteByte('-'); + +539 +ut8_t + +i +; i=0; i< +_boundy +. + `ngth +(); i++ + `emWreBy +(_boundy. + `c_r +()[i]); + +540 + `_rMuɝtPoBy +( +da +, +ϡ +); + +542 } if( +_muiPS + = +EXPECT_FEED2 +){ + +543 if( +da + == '\n'){ + +544 +_muiPS + = +PARSE_HEADERS +; + +545 +_emIsFe + = +l +; + +547 +_muiPS + = +WAIT_FOR_RETURN1 +; + +548 + `emWreBy +('\r'); itemWriteByte('\n'); itemWriteByte('-'); itemWriteByte('-'); + +549 +ut8_t + +i +; i=0; i< +_boundy +. + `ngth +(); i++ + `emWreBy +(_boundy. + `c_r +()[i]); + +550 + `emWreBy +('\r'); + `_rMuɝtPoBy +( +da +, +ϡ +); + +553 + } +} + +555  + gAsyncWebSvReque +:: + $_rLe +(){ + +556 if( +_rS + = +PARSE_REQ_START +){ + +557 if(! +_mp +. + `ngth +()){ + +558 +_rS + = +PARSE_REQ_FAIL +; + +559 +_ +-> + `o +(); + +561 + `_rReqHd +(); + +562 +_rS + = +PARSE_REQ_HEADERS +; + +567 if( +_rS + = +PARSE_REQ_HEADERS +){ + +568 if(! +_mp +. + `ngth +()){ + +570 +_rv +-> + `_wreReque +( +this +); + +571 +_rv +-> + `_chHdr +( +this +); + +572 + `_moveNIegHds +(); + +573 if( +_exgCtue +){ + +574 +Sg + +ڣ + = + `F +("HTTP/1.1 100 Continue\r\n\r\n"); + +575 +_ +-> + `wre +( +ڣ +. + `c_r +(),eڣ. + `ngth +()); + +578 if( +_cڋLgth +){ + +579 +_rS + = +PARSE_REQ_BODY +; + +581 +_rS + = +PARSE_REQ_END +; + +582 if( +_hdr +_hdr-> + `hdReque +( +this +); + +583 + `nd +(501); + +585 } + `_rReqHd +(); + +587 + } +} + +589 +size_t + + gAsyncWebSvReque +:: + $hds +() const{ + +590  +_hds +. + `ngth +(); + +591 + } +} + +593 +bo + + gAsyncWebSvReque +:: + $hasHd +(cڡ +Sg +& +me +) const { + +594 cڡuto& +h +: +_hds +){ + +595 if( +h +-> + `me +(). + `equsIgneCa +( +me +)){ + +596  +ue +; + +599  +l +; + +600 + } +} + +602 +bo + + gAsyncWebSvReque +:: + $hasHd +(cڡ +__FshSgHr + * +da +) const { + +603  + `hasHd +( + `Sg +( +da +)); + +604 + } +} + +606 +AsyncWebHd +* + gAsyncWebSvReque +:: + $gHd +(cڡ +Sg +& +me +) const { + +607 cڡuto& +h +: +_hds +){ + +608 if( +h +-> + `me +(). + `equsIgneCa +( +me +)){ + +609  +h +; + +612  +nuαr +; + +613 + } +} + +615 +AsyncWebHd +* + gAsyncWebSvReque +:: + $gHd +(cڡ +__FshSgHr + * +da +) const { + +616  + `gHd +( + `Sg +( +da +)); + +617 + } +} + +619 +AsyncWebHd +* + gAsyncWebSvReque +:: + $gHd +( +size_t + +num +) const { + +620 aut +hd + = +_hds +. + `h +( +num +); + +621  +hd + ? *hd : +nuαr +; + +622 + } +} + +624 +size_t + + gAsyncWebSvReque +:: + $ms +() const { + +625  +_ms +. + `ngth +(); + +626 + } +} + +628 +bo + + gAsyncWebSvReque +:: + $hasPam +(cڡ +Sg +& +me +, +bo + +po +, bo +fe +) const { + +629 cڡuto& +p +: +_ms +){ + +630 if( +p +-> + `me +(= +me + &&-> + `isPo +(= +po + &&-> + `isFe +(= +fe +){ + +631  +ue +; + +634  +l +; + +635 + } +} + +637 +bo + + gAsyncWebSvReque +:: + $hasPam +(cڡ +__FshSgHr + * +da +, +bo + +po +, bo +fe +) const { + +638  + `hasPam +( + `Sg +( +da +). + `c_r +(), +po +, +fe +); + +639 + } +} + +641 +AsyncWebPam +* + gAsyncWebSvReque +:: + $gPam +(cڡ +Sg +& +me +, +bo + +po +, bo +fe +) const { + +642 cڡuto& +p +: +_ms +){ + +643 if( +p +-> + `me +(= +me + &&-> + `isPo +(= +po + &&-> + `isFe +(= +fe +){ + +644  +p +; + +647  +nuαr +; + +648 + } +} + +650 +AsyncWebPam +* + gAsyncWebSvReque +:: + $gPam +(cڡ +__FshSgHr + * +da +, +bo + +po +, bo +fe +) const { + +651  + `gPam +( + `Sg +( +da +). + `c_r +(), +po +, +fe +); + +652 + } +} + +654 +AsyncWebPam +* + gAsyncWebSvReque +:: + $gPam +( +size_t + +num +) const { + +655 aut +m + = +_ms +. + `h +( +num +); + +656  +m + ? *m : +nuαr +; + +657 + } +} + +659  + gAsyncWebSvReque +:: + $addIegHd +(cڡ +Sg +& +me +){ + +660 if(! +_gHds +. + `cڏsIgneCa +( +me +)) + +661 +_gHds +. + `add +( +me +); + +662 + } +} + +664  + gAsyncWebSvReque +:: + $nd +( +AsyncWebSvReڣ + * +ڣ +){ + +665 +_ڣ + = +ڣ +; + +666 if( +_ڣ + = +NULL +){ + +667 +_ +-> + `o +( +ue +); + +668 + `_Disc +(); + +671 if(! +_ڣ +-> + `_sourVid +()){ + +672 +de + +ڣ +; + +673 +_ڣ + = +NULL +; + +674 + `nd +(500); + +677 +_ +-> + `tRxTimeout +(0); + +678 +_ڣ +-> + `_d +( +this +); + +680 + } +} + +682 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begReڣ +( +code +, cڡ +Sg +& +cڋTy +, cڡ Sg& +cڋ +){ + +683  +w + + `AsyncBasicReڣ +( +code +, +cڋTy +, +cڋ +); + +684 + } +} + +686 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begReڣ +( +FS + & +fs +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +, +bo + +dowd +, +AwsTemePross + +back +){ + +687 if( +fs +. + `exis +( +th +|| (! +dowd + && fs.exisթh+ + `F +(".gz")))) + +688  +w + + `AsyncFeReڣ +( +fs +, +th +, +cڋTy +, +dowd +, +back +); + +689  +NULL +; + +690 + } +} + +692 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begReڣ +( +Fe + +cڋ +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +, +bo + +dowd +, +AwsTemePross + +back +){ + +693 if( +cڋ + = +ue +) + +694  +w + + `AsyncFeReڣ +( +cڋ +, +th +, +cڋTy +, +dowd +, +back +); + +695  +NULL +; + +696 + } +} + +698 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begReڣ +( +Sm + & +am +, cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsTemePross + +back +){ + +699  +w + + `AsyncSmReڣ +( +am +, +cڋTy +, +n +, +back +); + +700 + } +} + +702 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begReڣ +(cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsReڣFr + +back +, +AwsTemePross + +meClback +){ + +703  +w + + `AsyncClbackReڣ +( +cڋTy +, +n +, +back +, +meClback +); + +704 + } +} + +706 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begChunkedReڣ +(cڡ +Sg +& +cڋTy +, +AwsReڣFr + +back +, +AwsTemePross + +meClback +){ + +707 if( +_vsi +) + +708  +w + + `AsyncChunkedReڣ +( +cڋTy +, +back +, +meClback +); + +709  +w + + `AsyncClbackReڣ +( +cڋTy +, 0, +back +, +meClback +); + +710 + } +} + +712 +AsyncReڣSm + * + gAsyncWebSvReque +:: + $begReڣSm +(cڡ +Sg +& +cڋTy +, +size_t + +bufrSize +){ + +713  +w + + `AsyncReڣSm +( +cڋTy +, +bufrSize +); + +714 + } +} + +716 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begReڣ_P +( +code +, cڡ +Sg +& +cڋTy +, cڡ +ut8_t + * +cڋ +, +size_t + +n +, +AwsTemePross + +back +){ + +717  +w + + `AsyncProgmemReڣ +( +code +, +cڋTy +, +cڋ +, +n +, +back +); + +718 + } +} + +720 +AsyncWebSvReڣ + * + gAsyncWebSvReque +:: + $begReڣ_P +( +code +, cڡ +Sg +& +cڋTy +, +PGM_P + +cڋ +, +AwsTemePross + +back +){ + +721  + `begReڣ_P +( +code +, +cڋTy +, (cڡ +ut8_t + *) +cڋ +, + `_P +(cڋ), +back +); + +722 + } +} + +724  + gAsyncWebSvReque +:: + $nd +( +code +, cڡ +Sg +& +cڋTy +, cڡ Sg& +cڋ +){ + +725 + `nd +( + `begReڣ +( +code +, +cڋTy +, +cڋ +)); + +726 + } +} + +728  + gAsyncWebSvReque +:: + $nd +( +FS + & +fs +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +, +bo + +dowd +, +AwsTemePross + +back +){ + +729 if( +fs +. + `exis +( +th +|| (! +dowd + && fs.exisթh+ + `F +(".gz")))){ + +730 + `nd +( + `begReڣ +( +fs +, +th +, +cڋTy +, +dowd +, +back +)); + +731 } + `nd +(404); + +732 + } +} + +734  + gAsyncWebSvReque +:: + $nd +( +Fe + +cڋ +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +, +bo + +dowd +, +AwsTemePross + +back +){ + +735 if( +cڋ + = +ue +){ + +736 + `nd +( + `begReڣ +( +cڋ +, +th +, +cڋTy +, +dowd +, +back +)); + +737 } + `nd +(404); + +738 + } +} + +740  + gAsyncWebSvReque +:: + $nd +( +Sm + & +am +, cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsTemePross + +back +){ + +741 + `nd +( + `begReڣ +( +am +, +cڋTy +, +n +, +back +)); + +742 + } +} + +744  + gAsyncWebSvReque +:: + $nd +(cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsReڣFr + +back +, +AwsTemePross + +meClback +){ + +745 + `nd +( + `begReڣ +( +cڋTy +, +n +, +back +, +meClback +)); + +746 + } +} + +748  + gAsyncWebSvReque +:: + $ndChunked +(cڡ +Sg +& +cڋTy +, +AwsReڣFr + +back +, +AwsTemePross + +meClback +){ + +749 + `nd +( + `begChunkedReڣ +( +cڋTy +, +back +, +meClback +)); + +750 + } +} + +752  + gAsyncWebSvReque +:: + $nd_P +( +code +, cڡ +Sg +& +cڋTy +, cڡ +ut8_t + * +cڋ +, +size_t + +n +, +AwsTemePross + +back +){ + +753 + `nd +( + `begReڣ_P +( +code +, +cڋTy +, +cڋ +, +n +, +back +)); + +754 + } +} + +756  + gAsyncWebSvReque +:: + $nd_P +( +code +, cڡ +Sg +& +cڋTy +, +PGM_P + +cڋ +, +AwsTemePross + +back +){ + +757 + `nd +( + `begReڣ_P +( +code +, +cڋTy +, +cڋ +, +back +)); + +758 + } +} + +760  + gAsyncWebSvReque +:: + $de +(cڡ +Sg +& +u +){ + +761 +AsyncWebSvReڣ + * +ڣ + = + `begReڣ +(302); + +762 +ڣ +-> + `addHd +( + `F +("Loti"), +u +); + +763 + `nd +( +ڣ +); + +764 + } +} + +766 +bo + + gAsyncWebSvReque +:: + $authti +(cڡ * +uame +, cڡ * +sswd +, cڡ * +m +, +bo + +sswdIsHash +){ + +767 if( +_authizi +. + `ngth +()){ + +768 if( +_isDige +) + +769  + `checkDigeAuthtiti +( +_authizi +. + `c_r +(), + `mhodToSg +(), +uame +, +sswd +, +m +, +sswdIsHash +, +NULL +, NULL, NULL); + +770 if(! +sswdIsHash +) + +771  + `checkBasicAuthtiti +( +_authizi +. + `c_r +(), +uame +, +sswd +); + +773  +_authizi +. + `equs +( +sswd +); + +775  +l +; + +776 + } +} + +778 +bo + + gAsyncWebSvReque +:: + $authti +(cڡ * +hash +){ + +779 if(! +_authizi +. + `ngth +(|| +hash + = +NULL +) + +780  +l +; + +782 if( +_isDige +){ + +783 +Sg + +hS + = + `Sg +( +hash +); + +784  +t + = +hS +. + `dexOf +(':'); + +785 if( +t + <= 0) + +786  +l +; + +787 +Sg + +uame + = +hS +. + `subrg +(0, +t +); + +788 +hS + = hS. + `subrg +( +t + + 1); + +789 +t + = +hS +. + `dexOf +(':'); + +790 if( +t + <= 0) + +791  +l +; + +792 +Sg + +m + = +hS +. + `subrg +(0, +t +); + +793 +hS + = hS. + `subrg +( +t + + 1); + +794  + `checkDigeAuthtiti +( +_authizi +. + `c_r +(), + `mhodToSg +(), +uame +.c_r(), +hS +.c_r(), +m +.c_r(), +ue +, +NULL +, NULL, NULL); + +797  ( +_authizi +. + `equs +( +hash +)); + +798 + } +} + +800  + gAsyncWebSvReque +:: + $queAuthtiti +(cڡ * +m +, +bo + +isDige +){ + +801 +AsyncWebSvReڣ + * +r + = + `begReڣ +(401); + +802 if(! +isDige + && +m + = +NULL +){ + +803 +r +-> + `addHd +( + `F +("WWW-Authenticate"), F("Basicealm=\"Login Required\"")); + +804 } if(! +isDige +){ + +805 +Sg + +hd + = + `F +("Basicealm=\""); + +806 +hd +. + `ct +( +m +); + +807 +hd + += '"'; + +808 +r +-> + `addHd +( + `F +("WWW-Authti"), +hd +); + +810 +Sg + +hd + = + `F +("Digest "); + +811 +hd +. + `ct +( + `queDigeAuthtiti +( +m +)); + +812 +r +-> + `addHd +( + `F +("WWW-Authti"), +hd +); + +814 + `nd +( +r +); + +815 + } +} + +817 +bo + + gAsyncWebSvReque +:: + $hasArg +(cڡ * +me +) const { + +818 cڡuto& +g +: +_ms +){ + +819 if( +g +-> + `me +(= +me +){ + +820  +ue +; + +823  +l +; + +824 + } +} + +826 +bo + + gAsyncWebSvReque +:: + $hasArg +(cڡ +__FshSgHr + * +da +) const { + +827  + `hasArg +( + `Sg +( +da +). + `c_r +()); + +828 + } +} + +831 cڡ + gSg +& + gAsyncWebSvReque +:: + $g +(cڡ +Sg +& +me +) const { + +832 cڡuto& +g +: +_ms +){ + +833 if( +g +-> + `me +(= +me +){ + +834  +g +-> + `vue +(); + +837  +emySg +; + +838 + } +} + +840 cڡ + gSg +& + gAsyncWebSvReque +:: + $g +(cڡ +__FshSgHr + * +da +) const { + +841  + `g +( + `Sg +( +da +). + `c_r +()); + +842 + } +} + +844 cڡ + gSg +& + gAsyncWebSvReque +:: + $g +( +size_t + +i +) const { + +845  + `gPam +( +i +)-> + `vue +(); + +846 + } +} + +848 cڡ + gSg +& + gAsyncWebSvReque +:: + $gName +( +size_t + +i +) const { + +849  + `gPam +( +i +)-> + `me +(); + +850 + } +} + +852 cڡ + gSg +& + gAsyncWebSvReque +:: + $thArg +( +size_t + +i +) const { + +853 aut +m + = +_thPams +. + `h +( +i +); + +854  +m + ? **m : +emySg +; + +855 + } +} + +857 cڡ + gSg +& + gAsyncWebSvReque +:: + $hd +(cڡ * +me +) const { + +858 +AsyncWebHd +* +h + = + `gHd +( + `Sg +( +me +)); + +859  +h + ? h-> + `vue +(: +emySg +; + +860 + } +} + +862 cڡ + gSg +& + gAsyncWebSvReque +:: + $hd +(cڡ +__FshSgHr + * +da +) const { + +863  + `hd +( + `Sg +( +da +). + `c_r +()); + +864 + } +}; + +867 cڡ + gSg +& + gAsyncWebSvReque +:: + $hd +( +size_t + +i +) const { + +868 +AsyncWebHd +* +h + = + `gHd +( +i +); + +869  +h + ? h-> + `vue +(: +emySg +; + +870 + } +} + +872 cڡ + gSg +& + gAsyncWebSvReque +:: + $hdName +( +size_t + +i +) const { + +873 +AsyncWebHd +* +h + = + `gHd +( +i +); + +874  +h + ? h-> + `me +(: +emySg +; + +875 + } +} + +877 +Sg + + gAsyncWebSvReque +:: + $uDecode +(cڡ +Sg +& +xt +) const { + +878  +mp +[] = "0x00"; + +879  +n + = +xt +. + `ngth +(); + +880  +i + = 0; + +881 +Sg + +decoded + = + `Sg +(); + +882 +decoded +. + `rve +( +n +); + +883  +i + < +n +){ + +884  +decodedCh +; + +885  +codedCh + = +xt +. + `chAt +( +i +++); + +886 i(( +codedCh + ='%'&& ( +i + + 1 < +n +)){ + +887 +mp +[2] = +xt +. + `chAt +( +i +++); + +888 +mp +[3] = +xt +. + `chAt +( +i +++); + +889 +decodedCh + = + ` +( +mp +, +NULL +, 16); + +890 } i( +codedCh + == '+') { + +891 +decodedCh + = ' '; + +893 +decodedCh + = +codedCh +; + +895 +decoded +. + `ct +( +decodedCh +); + +897  +decoded +; + +898 + } +} + +901 cڡ +__FshSgHr + * + gAsyncWebSvReque +:: + $mhodToSg +() const { + +902 if( +_mhod + = +HTTP_ANY + + `F +("ANY"); + +903 if( +_mhod + & +HTTP_GET + + `F +("GET"); + +904 if( +_mhod + & +HTTP_POST + + `F +("POST"); + +905 if( +_mhod + & +HTTP_DELETE + + `F +("DELETE"); + +906 if( +_mhod + & +HTTP_PUT + + `F +("PUT"); + +907 if( +_mhod + & +HTTP_PATCH + + `F +("PATCH"); + +908 if( +_mhod + & +HTTP_HEAD + + `F +("HEAD"); + +909 if( +_mhod + & +HTTP_OPTIONS + + `F +("OPTIONS"); + +910  + `F +("UNKNOWN"); + +911 + } +} + +913 cڡ +__FshSgHr + * + gAsyncWebSvReque +:: + $queedCnTyToSg +() const { + +914  +_qcy +) { + +915  +RCT_NOT_USED +:  + `F +("RCT_NOT_USED"); + +916  +RCT_DEFAULT +:  + `F +("RCT_DEFAULT"); + +917  +RCT_HTTP +:  + `F +("RCT_HTTP"); + +918  +RCT_WS +:  + `F +("RCT_WS"); + +919  +RCT_EVENT +:  + `F +("RCT_EVENT"); + +920 :  + `F +("ERROR"); + +922 + } +} + +924 +bo + + gAsyncWebSvReque +:: + $isExedRequeedCnTy +( +RequeedCiTy + +1 +, RequeedCiTy +2 +, RequeedCiTy +3 +) { + +925 +bo + +s + = +l +; + +926 i(( +1 + ! +RCT_NOT_USED +&& (1 = +_qcy +) +s + = +ue +; + +927 i(( +2 + ! +RCT_NOT_USED +&& (2 = +_qcy +) +s + = +ue +; + +928 i(( +3 + ! +RCT_NOT_USED +&& (3 = +_qcy +) +s + = +ue +; + +929  +s +; + +930 + } +} + + @lib/ESPAsyncWebServer/WebResponseImpl.h + +21 #ide +ASYNCWEBSERVERRESPONSEIMPL_H_ + + +22  + #ASYNCWEBSERVERRESPONSEIMPL_H_ + + + ) + +24 #ifde +Arduo_h + + +26 #unde +m + + +27 #unde +max + + +29  + ~ + +32 as + cAsyncBasicReڣ +: +public + +AsyncWebSvReڣ + { + +33 +ive +: + +34 +Sg + +_cڋ +; + +35 + mpublic +: + +36 +AsyncBasicReڣ +( +code +, cڡ +Sg +& +cڋTy +=Sg(), cڡ Sg& +cڋ +=String()); + +37  +_d +( +AsyncWebSvReque + * +que +); + +38 +size_t + +_ack +( +AsyncWebSvReque + * +que +, size_ +n +, +ut32_t + +time +); + +39 +bo + + $_sourVid +(cڡ {  +ue +; } + +40 + } +}; + +42 as + cAsyncAbReڣ +: +public + +AsyncWebSvReڣ + { + +43 +ive +: + +44 +Sg + +_hd +; + +49 + md +:: +ve +< +ut8_t +> +_che +; + +50 +size_t + +_adDaFromCacheOrCڋ +( +ut8_t +* +da +, cڡ size_ +n +); + +51 +size_t + +_flBufrAndProssTemes +( +ut8_t +* +buf +, size_ +maxL +); + +52 + meed +: + +53 +AwsTemePross + +_back +; + +54 + mpublic +: + +55 +AsyncAbReڣ +( +AwsTemePross + +back += +nuαr +); + +56  +_d +( +AsyncWebSvReque + * +que +); + +57 +size_t + +_ack +( +AsyncWebSvReque + * +que +, size_ +n +, +ut32_t + +time +); + +58 +bo + + $_sourVid +(cڡ {  +l +; } + +59 +vtu + +size_t + + `_flBufr +( +ut8_t + * +buf + + `__ibu__ +(( +unud +)), size_ +maxL + __ibu__((unud)){  0; + } +} + +62 #ide +TEMPLATE_PLACEHOLDER + + +63  + #TEMPLATE_PLACEHOLDER + '%' + + ) + +66  + #TEMPLATE_PARAM_NAME_LENGTH + 32 + + ) + +67 as + cAsyncFeReڣ +: +public + +AsyncAbReڣ + { + +68 +usg + +Fe + = +fs +::File; + +69 +usg + + mFS + = +fs +:: +FS +; + +70 + mive +: + +71 +Fe + +_cڋ +; + +72 +Sg + + m_th +; + +73  +_tCڋTy +(cڡ +Sg +& +th +); + +74 + mpublic +: + +75 +AsyncFeReڣ +( +FS + & +fs +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +=Sg(), +bo + +dowd += +l +, +AwsTemePross + +back += +nuαr +); + +76 +AsyncFeReڣ +( +Fe + +cڋ +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +=Sg(), +bo + +dowd += +l +, +AwsTemePross + +back += +nuαr +); + +77 ~ +AsyncFeReڣ +(); + +78 +bo + + $_sourVid +(cڡ {  !!( +_cڋ +); } + +79 +vtu + +size_t + + $_flBufr +( +ut8_t + * +buf +, +size_t + +maxL + +ovride +; + +80 + } +}; + +82 as + cAsyncSmReڣ +: +public + +AsyncAbReڣ + { + +83 +ive +: + +84 +Sm + * +_cڋ +; + +85 + mpublic +: + +86 +AsyncSmReڣ +( +Sm + & +am +, cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsTemePross + +back += +nuαr +); + +87 +bo + + $_sourVid +(cڡ {  !!( +_cڋ +); } + +88 +vtu + +size_t + + $_flBufr +( +ut8_t + * +buf +, +size_t + +maxL + +ovride +; + +89 + } +}; + +91 as + cAsyncClbackReڣ +: +public + +AsyncAbReڣ + { + +92 +ive +: + +93 +AwsReڣFr + +_cڋ +; + +94 +size_t + + m_fdLgth +; + +95 + mpublic +: + +96 +AsyncClbackReڣ +(cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsReڣFr + +back +, +AwsTemePross + +meClback += +nuαr +); + +97 +bo + + $_sourVid +(cڡ {  !!( +_cڋ +); } + +98 +vtu + +size_t + + $_flBufr +( +ut8_t + * +buf +, +size_t + +maxL + +ovride +; + +99 + } +}; + +101 as + cAsyncChunkedReڣ +: +public + +AsyncAbReڣ + { + +102 +ive +: + +103 +AwsReڣFr + +_cڋ +; + +104 +size_t + + m_fdLgth +; + +105 + mpublic +: + +106 +AsyncChunkedReڣ +(cڡ +Sg +& +cڋTy +, +AwsReڣFr + +back +, +AwsTemePross + +meClback += +nuαr +); + +107 +bo + + $_sourVid +(cڡ {  !!( +_cڋ +); } + +108 +vtu + +size_t + + $_flBufr +( +ut8_t + * +buf +, +size_t + +maxL + +ovride +; + +109 + } +}; + +111 as + cAsyncProgmemReڣ +: +public + +AsyncAbReڣ + { + +112 +ive +: + +113 cڡ +ut8_t + * +_cڋ +; + +114 +size_t + + m_adLgth +; + +115 + mpublic +: + +116 +AsyncProgmemReڣ +( +code +, cڡ +Sg +& +cڋTy +, cڡ +ut8_t + * +cڋ +, +size_t + +n +, +AwsTemePross + +back += +nuαr +); + +117 +bo + + $_sourVid +(cڡ {  +ue +; } + +118 +vtu + +size_t + + $_flBufr +( +ut8_t + * +buf +, +size_t + +maxL + +ovride +; + +119 + } +}; + +121 +ass + + gcbuf +; + +123 +ass + + gAsyncReڣSm +: +public + +AsyncAbReڣ +,ubli + gPrt + { + +124 + give +: + +125 +cbuf + * +_cڋ +; + +126 + gpublic +: + +127 +AsyncReڣSm +(cڡ +Sg +& +cڋTy +, +size_t + +bufrSize +); + +128 ~ +AsyncReڣSm +(); + +129 +bo + +_sourVid +(cڡ {  ( + g_e + < + gRESPONSE_END +); } + +130 +vtu + +size_t + +_flBufr +( +ut8_t + * +buf +, size_ +maxL + + govride +; + +131 +size_t + +wre +(cڡ +ut8_t + * +da +, size_ +n +); + +132 +size_t + +wre +( +ut8_t + +da +); + +133 +usg + + gPrt +:: +wre +; + + @lib/ESPAsyncWebServer/WebResponses.cpp + +21  + ~"ESPAsyncWebSv.h +" + +22  + ~"WebReڣIm.h +" + +23  + ~"cbuf.h +" + +26 * + $memchr +(* +r +,  +ch +, +size_t + +cou +) + +28 * +p + = +ic_ +<*>( +r +); + +29  +cou +--) + +30 if(* +p +++ = +ic_ +<>( +ch +)) + +31  -- +p +; + +32  +nuαr +; + +33 + } +} + +39 cڡ * + gAsyncWebSvReڣ +:: + $_ڣCodeToSg +( +code +) { + +40  +t_ +( + `ڣCodeToSg +( +code +)); + +41 + } +} + +43 cڡ +__FshSgHr + * + gAsyncWebSvReڣ +:: + $ڣCodeToSg +( +code +) { + +44  +code +) { + +45 100:  + `F +("Continue"); + +46 101:  + `F +("Switching Protocols"); + +47 200:  + `F +("OK"); + +48 201:  + `F +("Created"); + +49 202:  + `F +("Accepted"); + +50 203:  + `F +("Non-Authoritative Information"); + +51 204:  + `F +("No Content"); + +52 205:  + `F +("Reset Content"); + +53 206:  + `F +("Partial Content"); + +54 300:  + `F +("Multiple Choices"); + +55 301:  + `F +("Moved Permanently"); + +56 302:  + `F +("Found"); + +57 303:  + `F +("See Other"); + +58 304:  + `F +("Not Modified"); + +59 305:  + `F +("Use Proxy"); + +60 307:  + `F +("Temporary Redirect"); + +61 400:  + `F +("Bad Request"); + +62 401:  + `F +("Unauthorized"); + +63 402:  + `F +("Payment Required"); + +64 403:  + `F +("Forbidden"); + +65 404:  + `F +("Not Found"); + +66 405:  + `F +("Method Not Allowed"); + +67 406:  + `F +("Not Acceptable"); + +68 407:  + `F +("Proxy Authentication Required"); + +69 408:  + `F +("Request Time-out"); + +70 409:  + `F +("Conflict"); + +71 410:  + `F +("Gone"); + +72 411:  + `F +("Length Required"); + +73 412:  + `F +("Precondition Failed"); + +74 413:  + `F +("Request Entity Too Large"); + +75 414:  + `F +("Request-URI Too Large"); + +76 415:  + `F +("Unsupported Media Type"); + +77 416:  + `F +("Requestedangeot satisfiable"); + +78 417:  + `F +("Expectation Failed"); + +79 500:  + `F +("Internal Server Error"); + +80 501:  + `F +("Not Implemented"); + +81 502:  + `F +("Bad Gateway"); + +82 503:  + `F +("Service Unavailable"); + +83 504:  + `F +("Gateway Time-out"); + +84 505:  + `F +("HTTP Versionot supported"); + +85 :  + `F +(""); + +87 + } +} + +89 + gAsyncWebSvReڣ +:: + $AsyncWebSvReڣ +() + +90 : + `_code +(0) + +91 , + `_hds +( +LkedLi +< +AsyncWebHd + *>([](AsyncWebHd * +h +){ +de + h; + } +})) + +92 , +_cڋTy +() + +93 , +_cڋLgth +(0) + +94 , +_ndCڋLgth +( +ue +) + +95 , +_chunked +( +l +) + +96 , +_hdLgth +(0) + +97 , +_Lgth +(0) + +98 , +_ackedLgth +(0) + +99 , +_wrnLgth +(0) + +100 , + $_e +( +RESPONSE_SETUP +) + +102 aut +hd +: +DeuHds +:: + `In +()) { + +103 +_hds +. + `add +( +w + + `AsyncWebHd +( +hd +-> + `me +(), hd-> + `vue +())); + +105 + } +} + +107 + gAsyncWebSvReڣ +::~ + $AsyncWebSvReڣ +(){ + +108 +_hds +. + ` +(); + +109 + } +} + +111  + gAsyncWebSvReڣ +:: + $tCode +( +code +){ + +112 if( +_e + = +RESPONSE_SETUP +) + +113 +_code + = +code +; + +114 + } +} + +116  + gAsyncWebSvReڣ +:: + $tCڋLgth +( +size_t + +n +){ + +117 if( +_e + = +RESPONSE_SETUP +) + +118 +_cڋLgth + = +n +; + +119 + } +} + +121  + gAsyncWebSvReڣ +:: + $tCڋTy +(cڡ +Sg +& +ty +){ + +122 if( +_e + = +RESPONSE_SETUP +) + +123 +_cڋTy + = +ty +; + +124 + } +} + +126  + gAsyncWebSvReڣ +:: + $addHd +(cڡ +Sg +& +me +, cڡ Sg& +vue +){ + +127 +_hds +. + `add +( +w + + `AsyncWebHd +( +me +, +vue +)); + +128 + } +} + +130 +Sg + + gAsyncWebSvReڣ +:: + $_asmbHd +( +ut8_t + +vsi +){ + +131 if( +vsi +){ + +132 + `addHd +( + `F +("Accept-Ranges"), F("none")); + +133 if( +_chunked +) + +134 + `addHd +( + `F +("Transfer-Encoding"), F("chunked")); + +136 +Sg + +out + = + `Sg +(); + +137  +bufSize + = 300; + +138  +buf +[ +bufSize +]; + +140 + `tf_P +( +buf +, +bufSize +, + `PSTR +("HTTP/1.%d %d %s\r\n"), +vsi +, +_code +, + `_ڣCodeToSg +(_code)); + +141 +out +. + `ct +( +buf +); + +143 if( +_ndCڋLgth +) { + +144 + `tf_P +( +buf +, +bufSize +, + `PSTR +("Cڋ-Lgth: %d\r\n"), +_cڋLgth +); + +145 +out +. + `ct +( +buf +); + +147 if( +_cڋTy +. + `ngth +()) { + +148 + `tf_P +( +buf +, +bufSize +, + `PSTR +("Cڋ-Ty: %s\r\n"), +_cڋTy +. + `c_r +()); + +149 +out +. + `ct +( +buf +); + +152 cڡuto& +hd +: +_hds +){ + +153 + `tf_P +( +buf +, +bufSize +, + `PSTR +("%s: %s\r\n"), +hd +-> + `me +(). + `c_r +(), hd-> + `vue +().c_str()); + +154 +out +. + `ct +( +buf +); + +156 +_hds +. + ` +(); + +158 +out +. + `ct +( + `F +("\r\n")); + +159 +_hdLgth + = +out +. + `ngth +(); + +160  +out +; + +161 + } +} + +163 +bo + + gAsyncWebSvReڣ +:: + $_d +(cڡ {  +_e + > +RESPONSE_SETUP +; + } +} + +164 +bo + + gAsyncWebSvReڣ +:: + $_fished +(cڡ {  +_e + > +RESPONSE_WAIT_ACK +; + } +} + +165 +bo + + gAsyncWebSvReڣ +:: + $_ed +(cڡ {  +_e + = +RESPONSE_FAILED +; + } +} + +166 +bo + + gAsyncWebSvReڣ +:: + $_sourVid +(cڡ {  +l +; + } +} + +167  + gAsyncWebSvReڣ +:: + $_d +( +AsyncWebSvReque + * +que +){ +_e + = +RESPONSE_END +;eque-> + ` +()-> + `o +(); + } +} + +168 +size_t + + gAsyncWebSvReڣ +:: + $_ack +( +AsyncWebSvReque + * +que +, +size_t + +n +, +ut32_t + +time +){ (eque; (; (ime;  0; + } +} + +173 + gAsyncBasicReڣ +:: + $AsyncBasicReڣ +( +code +, cڡ +Sg +& +cڋTy +, cڡ Sg& +cڋ +){ + +174 +_code + = +code +; + +175 +_cڋ + = +cڋ +; + +176 +_cڋTy + = +cڋTy +; + +177 if( +_cڋ +. + `ngth +()){ + +178 +_cڋLgth + = +_cڋ +. + `ngth +(); + +179 if(! +_cڋTy +. + `ngth +()) + +180 +_cڋTy + = + `F +("text/plain"); + +182 + `addHd +( + `F +("Connection"), F("close")); + +183 + } +} + +185  + gAsyncBasicReڣ +:: + $_d +( +AsyncWebSvReque + * +que +){ + +186 +_e + = +RESPONSE_HEADERS +; + +187 +Sg + +out + = + `_asmbHd +( +que +-> + `vsi +()); + +188 +size_t + +outL + = +out +. + `ngth +(); + +189 +size_t + +a + = +que +-> + ` +()-> + `a +(); + +190 if(! +_cڋLgth + && +a + > +outL +){ + +191 +_wrnLgth + + +que +-> + ` +()-> + `wre +( +out +. + `c_r +(), +outL +); + +192 +_e + = +RESPONSE_WAIT_ACK +; + +193 } if( +_cڋLgth + && +a + > +outL + + _contentLength){ + +194 +out + + +_cڋ +; + +195 +outL + + +_cڋLgth +; + +196 +_wrnLgth + + +que +-> + ` +()-> + `wre +( +out +. + `c_r +(), +outL +); + +197 +_e + = +RESPONSE_WAIT_ACK +; + +198 } if( +a + && s < +outL +){ + +199 +Sg + +l + = +out +. + `subrg +(0, +a +); + +200 +_cڋ + = +out +. + `subrg +( +a +) + _content; + +201 +_cڋLgth + + +outL + - +a +; + +202 +_wrnLgth + + +que +-> + ` +()-> + `wre +( +l +. + `c_r +(),tl. + `ngth +()); + +203 +_e + = +RESPONSE_CONTENT +; + +204 } if( +a + > +outL + && s < (outL + +_cڋLgth +)){ + +205 +size_t + +shi + = +a + - +outL +; + +206 +outL + + +shi +; + +207 +_Lgth + + +shi +; + +208 +out + + +_cڋ +. + `subrg +(0, +shi +); + +209 +_cڋ + = _cڋ. + `subrg +( +shi +); + +210 +_wrnLgth + + +que +-> + ` +()-> + `wre +( +out +. + `c_r +(), +outL +); + +211 +_e + = +RESPONSE_CONTENT +; + +213 +_cڋ + = +out + + _content; + +214 +_cڋLgth + + +outL +; + +215 +_e + = +RESPONSE_CONTENT +; + +217 + } +} + +219 +size_t + + gAsyncBasicReڣ +:: + $_ack +( +AsyncWebSvReque + * +que +, +size_t + +n +, +ut32_t + +time +){ + +220 () +time +; + +221 +_ackedLgth + + +n +; + +222 if( +_e + = +RESPONSE_CONTENT +){ + +223 +size_t + +avaab + = +_cڋLgth + - +_Lgth +; + +224 +size_t + +a + = +que +-> + ` +()-> + `a +(); + +226 if( +a + > +avaab +){ + +227 +_wrnLgth + + +que +-> + ` +()-> + `wre +( +_cڋ +. + `c_r +(), +avaab +); + +228 +_cڋ + = + `Sg +(); + +229 +_e + = +RESPONSE_WAIT_ACK +; + +230  +avaab +; + +233 +Sg + +out + = +_cڋ +. + `subrg +(0, +a +); + +234 +_cڋ + = _cڋ. + `subrg +( +a +); + +235 +_Lgth + + +a +; + +236 +_wrnLgth + + +que +-> + ` +()-> + `wre +( +out +. + `c_r +(), +a +); + +237  +a +; + +238 } if( +_e + = +RESPONSE_WAIT_ACK +){ + +239 if( +_ackedLgth + > +_wrnLgth +){ + +240 +_e + = +RESPONSE_END +; + +244 + } +} + +251 + gAsyncAbReڣ +:: + $AsyncAbReڣ +( +AwsTemePross + +back +): + $_back +( +back +) + +254 if( +back +) { + +255 +_cڋLgth + = 0; + +256 +_ndCڋLgth + = +l +; + +257 +_chunked + = +ue +; + +259 + } +} + +261  + gAsyncAbReڣ +:: + $_d +( +AsyncWebSvReque + * +que +){ + +262 + `addHd +( + `F +("Connection"), F("close")); + +263 +_hd + = + `_asmbHd +( +que +-> + `vsi +()); + +264 +_e + = +RESPONSE_HEADERS +; + +265 + `_ack +( +que +, 0, 0); + +266 + } +} + +268 +size_t + + gAsyncAbReڣ +:: + $_ack +( +AsyncWebSvReque + * +que +, +size_t + +n +, +ut32_t + +time +){ + +269 () +time +; + +270 if(! + `_sourVid +()){ + +271 +_e + = +RESPONSE_FAILED +; + +272 +que +-> + ` +()-> + `o +(); + +275 +_ackedLgth + + +n +; + +276 +size_t + +a + = +que +-> + ` +()-> + `a +(); + +278 +size_t + +hdL + = +_hd +. + `ngth +(); + +279 if( +_e + = +RESPONSE_HEADERS +){ + +280 if( +a + > +hdL +){ + +281 +_e + = +RESPONSE_CONTENT +; + +282 +a + - +hdL +; + +284 +Sg + +out + = +_hd +. + `subrg +(0, +a +); + +285 +_hd + = _hd. + `subrg +( +a +); + +286 +_wrnLgth + + +que +-> + ` +()-> + `wre +( +out +. + `c_r +(), out. + `ngth +()); + +287  +out +. + `ngth +(); + +291 if( +_e + = +RESPONSE_CONTENT +){ + +292 +size_t + +outL +; + +293 if( +_chunked +){ + +294 if( +a + <= 8){ + +297 +outL + = +a +; + +298 } if(! +_ndCڋLgth +){ + +299 +outL + = +a +; + +301 +outL + = (( +_cڋLgth + - +_Lgth +> +a +)?space:(_contentLength - _sentLength); + +304 +ut8_t + * +buf + = (ut8_*) + `mloc +( +outL ++ +hdL +); + +305 i(! +buf +) { + +310 if( +hdL +){ + +311 + `memy +( +buf +, +_hd +. + `c_r +(), _hd. + `ngth +()); + +314 +size_t + +adL + = 0; + +316 if( +_chunked +){ + +319 +adL + = + `_flBufrAndProssTemes +( +buf ++ +hdL ++6, +outL + - 8); + +320 if( +adL + = +RESPONSE_TRY_AGAIN +){ + +321 + ` +( +buf +); + +324 +outL + = + `rtf_P +((*) +buf ++ +hdL +, + `PSTR +("%x"), +adL +) + headLen; + +325  +outL + < +hdL + + 4 +buf +[outLen++] = ' '; + +326 +buf +[ +outL +++] = '\r'; + +327 +buf +[ +outL +++] = '\n'; + +328 +outL + + +adL +; + +329 +buf +[ +outL +++] = '\r'; + +330 +buf +[ +outL +++] = '\n'; + +332 +adL + = + `_flBufrAndProssTemes +( +buf ++ +hdL +, +outL +); + +333 if( +adL + = +RESPONSE_TRY_AGAIN +){ + +334 + ` +( +buf +); + +337 +outL + = +adL + + +hdL +; + +340 if( +hdL +){ + +341 +_hd + = + `Sg +(); + +344 if( +outL +){ + +345 +_wrnLgth + + +que +-> + ` +()-> + `wre +((cڡ *) +buf +, +outL +); + +348 if( +_chunked +){ + +349 +_Lgth + + +adL +; + +351 +_Lgth + + +outL + - +hdL +; + +354 + ` +( +buf +); + +356 if(( +_chunked + && +adL + =0|| (! +_ndCڋLgth + && +outL + =0|| (!_chunked && +_Lgth + = +_cڋLgth +)){ + +357 +_e + = +RESPONSE_WAIT_ACK +; + +359  +outL +; + +361 } if( +_e + = +RESPONSE_WAIT_ACK +){ + +362 if(! +_ndCڋLgth + || +_ackedLgth + > +_wrnLgth +){ + +363 +_e + = +RESPONSE_END +; + +364 if(! +_chunked + && ! +_ndCڋLgth +) + +365 +que +-> + ` +()-> + `o +( +ue +); + +369 + } +} + +371 +size_t + + gAsyncAbReڣ +:: + $_adDaFromCacheOrCڋ +( +ut8_t +* +da +, cڡ +size_t + +n +) + +374 cڡ +size_t + +adFromCache + = +d +:: + `m +( +n +, +_che +. + `size +()); + +375 if( +adFromCache +) { + +376 + `memy +( +da +, +_che +. + `da +(), +adFromCache +); + +377 +_che +. + `a +(_che. + `beg +(), _che.beg(+ +adFromCache +); + +380 cڡ +size_t + +edFromFe + = +n + - +adFromCache +; + +381 cڡ +size_t + +adFromCڋ + = + `_flBufr +( +da + + +adFromCache +, +edFromFe +); + +382  +adFromCache + + +adFromCڋ +; + +383 + } +} + +385 +size_t + + gAsyncAbReڣ +:: + $_flBufrAndProssTemes +( +ut8_t +* +da +, +size_t + +n +) + +387 if(! +_back +) + +388  + `_flBufr +( +da +, +n +); + +390 cڡ +size_t + +igL + = +n +; + +391 +n + = + `_adDaFromCacheOrCڋ +( +da +,en); + +394 +ut8_t +* +pTemeS + = +da +; + +395 ( +pTemeS + < & +da +[ +n +]&& (pTemeS = ( +ut8_t +*) + `memchr +TemeS, +TEMPLATE_PLACEHOLDER +, &data[len - 1] -TemplateStart + 1))) { + +396 +ut8_t +* +pTemeEnd + = ( +pTemeS + < & +da +[ +n + - 1]? (ut8_t*) + `memchr +TemeS + 1, +TEMPLATE_PLACEHOLDER +, &da[- 1] -TemeS: +nuαr +; + +398 +ut8_t + +buf +[ +TEMPLATE_PARAM_NAME_LENGTH + + 1]; + +399 +Sg + +mName +; + +401 if( +pTemeEnd +) { + +403 cڡ +size_t + +mNameLgth + = +d +:: + `m +((size_t)( +buf +- 1, (size_t)( +pTemeEnd + - +pTemeS + - 1)); + +404 if( +mNameLgth +) { + +405 + `memy +( +buf +, +pTemeS + + 1, +mNameLgth +); + +406 +buf +[ +mNameLgth +] = 0; + +407 +mName + = + `Sg +( +t_ +<*>( +buf +)); + +410 + `memmove +( +pTemeEnd +,TemeEnd + 1, & +da +[ +n +] -TemplateEnd - 1); + +411 +n + + + `_adDaFromCacheOrCڋ +(& +da +[len - 1], 1) - 1; + +412 ++ +pTemeS +; + +414 } if(& +da +[ +n + - 1] - +pTemeS + + 1 < +TEMPLATE_PARAM_NAME_LENGTH + + 2) { + +415 + `memy +( +buf +, +pTemeS + + 1, & +da +[ +n + - 1] -TemplateStart); + +416 cڡ +size_t + +adFromCacheOrCڋ + = + `_adDaFromCacheOrCڋ +( +buf + + (& +da +[ +n + - 1] - +pTemeS +), +TEMPLATE_PARAM_NAME_LENGTH + + 2 - (&data[len - 1] -TemplateStart + 1)); + +417 if( +adFromCacheOrCڋ +) { + +418 +pTemeEnd + = ( +ut8_t +*) + `memchr +( +buf + + (& +da +[ +n + - 1] - +pTemeS +), +TEMPLATE_PLACEHOLDER +, +adFromCacheOrCڋ +); + +419 if( +pTemeEnd +) { + +421 * +pTemeEnd + = 0; + +422 +mName + = + `Sg +( +t_ +<*>( +buf +)); + +424 +_che +. + ` +(_che. + `beg +(), +pTemeEnd + + 1, +buf + + (& +da +[ +n + - 1] - +pTemeS ++ +adFromCacheOrCڋ +); + +425 +pTemeEnd + = & +da +[ +n + - 1]; + +430 +_che +. + ` +(_che. + `beg +(), +buf + + (& +da +[ +n + - 1] - +pTemeS +), bu+ (&da[- 1] -TemeS+ +adFromCacheOrCڋ +); + +431 ++ +pTemeS +; + +435 ++ +pTemeS +; + +438 ++ +pTemeS +; + +439 if( +mName +. + `ngth +()) { + +445 cڡ +Sg + + `mVue +( + `_back +( +mName +)); + +446 cڡ * +pvr + = +mVue +. + `c_r +(); + +447 cڡ  +pvn + = +mVue +. + `ngth +(); + +448 cڡ +size_t + +numBysCݛd + = +d +:: + `m +( +pvn +, +ic_ +<>(& +da +[ +igL + - 1] - +pTemeS + + 1)); + +451 if(( +pTemeEnd + + 1 < +pTemeS + + +numBysCݛd +&& ( +igL + - (pTemeS +umBysCݛd -TemeEnd - 1< +n +)) { + +452 +_che +. + ` +(_che. + `beg +(), & +da +[ +igL + - ( +pTemeS + + +numBysCݛd + - +pTemeEnd + - 1)], &da[ +n +]); + +454 + `memmove +( +pTemeS + + +numBysCݛd +, +pTemeEnd + + 1, & +da +[ +igL +] -TemplateStart -umBytesCopied); + +455 +n + = +igL +; + +456 } if( +pTemeEnd + + 1 ! +pTemeS + + +numBysCݛd +) + +459 + `memmove +( +pTemeS + + +numBysCݛd +, +pTemeEnd + + 1, & +da +[ +n +] -TemplateEnd - 1); + +461 + `memy +( +pTemeS +, +pvr +, +numBysCݛd +); + +463 if( +numBysCݛd + < +pvn +) { + +464 +_che +. + ` +(_che. + `beg +(), +pvr + + +numBysCݛd +,v+ +pvn +); + +465 } if( +pTemeS + + +numBysCݛd + < +pTemeEnd + + 1) { + +467 cڡ +size_t + +roomFed + = +pTemeEnd + + 1 - +pTemeS + - +numBysCݛd +; + +468 cڡ +size_t + +tٮFeRoom + = +igL + - +n + + +roomFed +; + +469 +n + + + `_adDaFromCacheOrCڋ +(& +da +[- +roomFed +], +tٮFeRoom +) -oomFreed; + +471 cڡ +size_t + +roomTak + = +pTemeS + + +numBysCݛd + - +pTemeEnd + - 1; + +472 +n + = +d +:: + `m +֒ + +roomTak +, +igL +); + +476  +n +; + +477 + } +} + +484 + gAsyncFeReڣ +::~ + $AsyncFeReڣ +(){ + +485 if( +_cڋ +) + +486 +_cڋ +. + `o +(); + +487 + } +} + +489  + gAsyncFeReڣ +:: + $_tCڋTy +(cڡ +Sg +& +th +){ + +490 #i +HAVE_EXTERN_GET_CONTENT_TYPE_FUNCTION + + +491 cڡ +__FshSgHr + * + `gCڋTy +(cڡ +Sg + & +th +); + +492 +_cڋTy + = + `gCڋTy +( +th +); + +494 i( +th +. + `dsWh +( + `F +(".html")) +_cڋTy + = F("text/html"); + +495 i( +th +. + `dsWh +( + `F +(".htm")) +_cڋTy + = F("text/html"); + +496 i( +th +. + `dsWh +( + `F +(".css")) +_cڋTy + = F("text/css"); + +497 i( +th +. + `dsWh +( + `F +(".js")) +_cڋTy + = F("application/json"); + +498 i( +th +. + `dsWh +( + `F +(".js")) +_cڋTy + = F("application/javascript"); + +499 i( +th +. + `dsWh +( + `F +(".g")) +_cڋTy + = F("image/png"); + +500 i( +th +. + `dsWh +( + `F +(".gif")) +_cڋTy + = F("image/gif"); + +501 i( +th +. + `dsWh +( + `F +(".jpg")) +_cڋTy + = F("image/jpeg"); + +502 i( +th +. + `dsWh +( + `F +(".ico")) +_cڋTy + = F("image/x-icon"); + +503 i( +th +. + `dsWh +( + `F +(".svg")) +_cڋTy + = F("image/svg+xml"); + +504 i( +th +. + `dsWh +( + `F +(".e")) +_cڋTy + = F("font/eot"); + +505 i( +th +. + `dsWh +( + `F +(".woff")) +_cڋTy + = F("font/woff"); + +506 i( +th +. + `dsWh +( + `F +(".woff2")) +_cڋTy + = F("font/woff2"); + +507 i( +th +. + `dsWh +( + `F +(".f")) +_cڋTy + = F("font/ttf"); + +508 i( +th +. + `dsWh +( + `F +(".xml")) +_cڋTy + = F("text/xml"); + +509 i( +th +. + `dsWh +( + `F +(".pdf")) +_cڋTy + = F("application/pdf"); + +510 i( +th +. + `dsWh +( + `F +(".z")) +_cڋTy + = F("application/zip"); + +511 if( +th +. + `dsWh +( + `F +(".gz")) +_cڋTy + = F("application/x-gzip"); + +512 +_cڋTy + = + `F +("text/plain"); + +514 + } +} + +516 + gAsyncFeReڣ +:: + $AsyncFeReڣ +( +FS + & +fs +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +, +bo + +dowd +, +AwsTemePross + +back +): + $AsyncAbReڣ +( +back +){ + +517 +_code + = 200; + +518 +_th + = +th +; + +520 if(! +dowd + && ! +fs +. + `exis +( +_th +&& fs.exis(_th + + `F +(".gz"))){ + +521 +_th + = _th + + `F +(".gz"); + +522 + `addHd +( + `F +("Content-Encoding"), F("gzip")); + +523 +_back + = +nuαr +; + +524 +_ndCڋLgth + = +ue +; + +525 +_chunked + = +l +; + +528 +_cڋ + = +fs +. + `ݒ +( +_th +, fs:: +FeOnMode +:: +ad +); + +529 +_cڋLgth + = +_cڋ +. + `size +(); + +531 if( +cڋTy +. + `ngth +() == 0) + +532 + `_tCڋTy +( +th +); + +534 +_cڋTy + = +cڋTy +; + +536  +fameS + = +th +. + `ϡIndexOf +('/') + 1; + +537  +buf +[26+ +th +. + `ngth +()- +fameS +]; + +538 * +fame + = (*) +th +. + `c_r +(+ +fameS +; + +540 if( +dowd +) { + +542 + `tf_P +( +buf +,  (buf), + `PSTR +("chmt; fame=\"%s\""), +fame +); + +545 + `tf_P +( +buf +,  (buf), + `PSTR +("le; fame=\"%s\""), +fame +); + +547 + `addHd +( + `F +("Cڋ-Diosi"), +buf +); + +548 + } +} + +550 + gAsyncFeReڣ +:: + $AsyncFeReڣ +( +Fe + +cڋ +, cڡ +Sg +& +th +, cڡ Sg& +cڋTy +, +bo + +dowd +, +AwsTemePross + +back +): + $AsyncAbReڣ +( +back +){ + +551 +_code + = 200; + +552 +_th + = +th +; + +554 if(! +dowd + && + `Sg +( +cڋ +. + `me +()). + `dsWh +( + `F +(".gz")&& ! +th +.endsWith(F(".gz"))){ + +555 + `addHd +( + `F +("Content-Encoding"), F("gzip")); + +556 +_back + = +nuαr +; + +557 +_ndCڋLgth + = +ue +; + +558 +_chunked + = +l +; + +561 +_cڋ + = +cڋ +; + +562 +_cڋLgth + = +_cڋ +. + `size +(); + +564 if( +cڋTy +. + `ngth +() == 0) + +565 + `_tCڋTy +( +th +); + +567 +_cڋTy + = +cڋTy +; + +569  +fameS + = +th +. + `ϡIndexOf +('/') + 1; + +570  +buf +[26+ +th +. + `ngth +()- +fameS +]; + +571 * +fame + = (*) +th +. + `c_r +(+ +fameS +; + +573 if( +dowd +) { + +574 + `tf_P +( +buf +,  (buf), + `PSTR +("chmt; fame=\"%s\""), +fame +); + +576 + `tf_P +( +buf +,  (buf), + `PSTR +("le; fame=\"%s\""), +fame +); + +578 + `addHd +( + `F +("Cڋ-Diosi"), +buf +); + +579 + } +} + +581 +size_t + + gAsyncFeReڣ +:: + $_flBufr +( +ut8_t + * +da +, +size_t + +n +){ + +582  +_cڋ +. + `ad +( +da +, +n +); + +583 + } +} + +589 + gAsyncSmReڣ +:: + $AsyncSmReڣ +( +Sm + & +am +, cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsTemePross + +back +): + $AsyncAbReڣ +( +back +) { + +590 +_code + = 200; + +591 +_cڋ + = & +am +; + +592 +_cڋLgth + = +n +; + +593 +_cڋTy + = +cڋTy +; + +594 + } +} + +596 +size_t + + gAsyncSmReڣ +:: + $_flBufr +( +ut8_t + * +da +, +size_t + +n +){ + +597 +size_t + +avaab + = +_cڋ +-> + `avaab +(); + +598 +size_t + +outL + = ( +avaab + > +n +)?len:available; + +599 +size_t + +i +; + +600  +i +=0;i< +outL +;i++) + +601 +da +[ +i +] = +_cڋ +-> + `ad +(); + +602  +outL +; + +603 + } +} + +609 + gAsyncClbackReڣ +:: + $AsyncClbackReڣ +(cڡ +Sg +& +cڋTy +, +size_t + +n +, +AwsReڣFr + +back +, +AwsTemePross + +meClback +): + $AsyncAbReڣ +( +meClback +) { + +610 +_code + = 200; + +611 +_cڋ + = +back +; + +612 +_cڋLgth + = +n +; + +613 if(! +n +) + +614 +_ndCڋLgth + = +l +; + +615 +_cڋTy + = +cڋTy +; + +616 +_fdLgth + = 0; + +617 + } +} + +619 +size_t + + gAsyncClbackReڣ +:: + $_flBufr +( +ut8_t + * +da +, +size_t + +n +){ + +620 +size_t + +t + = + `_cڋ +( +da +, +n +, +_fdLgth +); + +621 if( +t + ! +RESPONSE_TRY_AGAIN +){ + +622 +_fdLgth + + +t +; + +624  +t +; + +625 + } +} + +631 + gAsyncChunkedReڣ +:: + $AsyncChunkedReڣ +(cڡ +Sg +& +cڋTy +, +AwsReڣFr + +back +, +AwsTemePross + +ossClback +): + $AsyncAbReڣ +( +ossClback +) { + +632 +_code + = 200; + +633 +_cڋ + = +back +; + +634 +_cڋLgth + = 0; + +635 +_cڋTy + = +cڋTy +; + +636 +_ndCڋLgth + = +l +; + +637 +_chunked + = +ue +; + +638 +_fdLgth + = 0; + +639 + } +} + +641 +size_t + + gAsyncChunkedReڣ +:: + $_flBufr +( +ut8_t + * +da +, +size_t + +n +){ + +642 +size_t + +t + = + `_cڋ +( +da +, +n +, +_fdLgth +); + +643 if( +t + ! +RESPONSE_TRY_AGAIN +){ + +644 +_fdLgth + + +t +; + +646  +t +; + +647 + } +} + +653 + gAsyncProgmemReڣ +:: + $AsyncProgmemReڣ +( +code +, cڡ +Sg +& +cڋTy +, cڡ +ut8_t + * +cڋ +, +size_t + +n +, +AwsTemePross + +back +): + $AsyncAbReڣ +( +back +) { + +654 +_code + = +code +; + +655 +_cڋ + = +cڋ +; + +656 +_cڋTy + = +cڋTy +; + +657 +_cڋLgth + = +n +; + +658 +_adLgth + = 0; + +659 + } +} + +661 +size_t + + gAsyncProgmemReڣ +:: + $_flBufr +( +ut8_t + * +da +, +size_t + +n +){ + +662 +size_t + + + = +_cڋLgth + - +_adLgth +; + +663 i( + + > +n +) { + +664 + `memy_P +( +da +, +_cڋ + + +_adLgth +, +n +); + +665 +_adLgth + + +n +; + +666  +n +; + +668 + `memy_P +( +da +, +_cڋ + + +_adLgth +, + +); + +669 +_adLgth + + + +; + +670  + +; + +671 + } +} + +678 + gAsyncReڣSm +:: + $AsyncReڣSm +(cڡ +Sg +& +cڋTy +, +size_t + +bufrSize +){ + +679 +_code + = 200; + +680 +_cڋLgth + = 0; + +681 +_cڋTy + = +cڋTy +; + +682 +_cڋ + = +w + + `cbuf +( +bufrSize +); + +683 + } +} + +685 + gAsyncReڣSm +::~ + $AsyncReڣSm +(){ + +686 +de + +_cڋ +; + +687 + } +} + +689 +size_t + + gAsyncReڣSm +:: + $_flBufr +( +ut8_t + * +buf +, +size_t + +maxL +){ + +690  +_cڋ +-> + `ad +((*) +buf +, +maxL +); + +691 + } +} + +693 +size_t + + gAsyncReڣSm +:: + $wre +(cڡ +ut8_t + * +da +, +size_t + +n +){ + +694 if( + `_d +()) + +697 if( +n + > +_cڋ +-> + `room +()){ + +698 +size_t + +eded + = +n + - +_cڋ +-> + `room +(); + +699 +_cڋ +-> + `sizeAdd +( +eded +); + +701 +size_t + +wrn + = +_cڋ +-> + `wre +((cڡ *) +da +, +n +); + +702 +_cڋLgth + + +wrn +; + +703  +wrn +; + +704 + } +} + +706 +size_t + + gAsyncReڣSm +:: + $wre +( +ut8_t + +da +){ + +707  + `wre +(& +da +, 1); + +708 + } +} + + @lib/ESPAsyncWebServer/WebServer.cpp + +21  + ~"ESPAsyncWebSv.h +" + +22  + ~"WebHdrIm.h +" + +24 +bo + + $ON_STA_FILTER +( +AsyncWebSvReque + * +que +) { + +25  +WiFi +. + `lolIP +(= +que +-> + ` +()->localIP(); + +26 + } +} + +28 +bo + + $ON_AP_FILTER +( +AsyncWebSvReque + * +que +) { + +29  +WiFi +. + `lolIP +(! +que +-> + ` +()->localIP(); + +30 + } +} + +32 #ide +HAVE_FS_FILE_OPEN_MODE + + +33 cڡ * + gfs +:: +FeOnMode +:: +ad + = "r"; + +34 cڡ * + gfs +:: +FeOnMode +:: +wre + = "w"; + +35 cڡ * + gfs +:: +FeOnMode +:: +nd + = "a"; + +38 + gAsyncWebSv +:: + $AsyncWebSv +( +ut16_t + +pt +) + +39 : + `_rv +( +pt +) + +40 , + `_wres +( +LkedLi +< +AsyncWebRewre +*>([](AsyncWebRewre* +r +){ +de +; + } +})) + +41 , +_hdrs +( +LkedLi +< +AsyncWebHdr +*>([](AsyncWebHdr* +h +){ +de + h; })) + +43 + g_tchAHdr + = +w + +AsyncClbackWebHdr +(); + +44 if( + g_tchAHdr + = +NULL +) + +46 + g_rv +. +Cl +([](* +s +, +AsyncCl +* +c +){ + +47 if( +c + = +NULL +) + +49 +c +-> +tRxTimeout +(3); + +50 +AsyncWebSvReque + * +r + = +w + AsyncWebSvReque(( +AsyncWebSv +*) +s +, +c +); + +51 if( +r + = +NULL +){ + +52 +c +-> +o +( +ue +); + +53 +c +-> + +(); + +54 +de + +c +; + +56 }, +this +); + +59 + gAsyncWebSv +::~ + $AsyncWebSv +(){ + +60 + `t +(); + +61 + `d +(); + +62 if( +_tchAHdr + +de + _catchAllHandler; + +63 + } +} + +65 + gAsyncWebRewre +& + gAsyncWebSv +:: + $addRewre +( +AsyncWebRewre +* +wre +){ + +66 +_wres +. + `add +( +wre +); + +67  * +wre +; + +68 + } +} + +70 +bo + + gAsyncWebSv +:: + $moveRewre +( +AsyncWebRewre + * +wre +){ + +71  +_wres +. + `move +( +wre +); + +72 + } +} + +74 + gAsyncWebRewre +& + gAsyncWebSv +:: + $wre +(cڡ * +om +, cڡ * +to +){ + +75  + `addRewre +( +w + + `AsyncWebRewre +( +om +, +to +)); + +76 + } +} + +78 + gAsyncWebHdr +& + gAsyncWebSv +:: + $addHdr +( +AsyncWebHdr +* +hdr +){ + +79 +_hdrs +. + `add +( +hdr +); + +80  * +hdr +; + +81 + } +} + +83 +bo + + gAsyncWebSv +:: + $moveHdr +( +AsyncWebHdr + * +hdr +){ + +84  +_hdrs +. + `move +( +hdr +); + +85 + } +} + +87  + gAsyncWebSv +:: + $beg +(){ + +88 +_rv +. + `tNoDay +( +ue +); + +89 +_rv +. + `beg +(); + +90 + } +} + +92  + gAsyncWebSv +:: + $d +(){ + +93 +_rv +. + `d +(); + +94 + } +} + +96 #i +ASYNC_TCP_SSL_ENABLED + + +97  + gAsyncWebSv +:: + $SFeReque +( +AcSSlFeHdr + +cb +, * +g +){ + +98 +_rv +. + `SFeReque +( +cb +, +g +); + +99 + } +} + +101  + gAsyncWebSv +:: + $begSecu +(cڡ * + +, cڡ * +key +, cڡ * +sswd +){ + +102 +_rv +. + `begSecu +( + +, +key +, +sswd +); + +103 + } +} + +106  + gAsyncWebSv +:: + $_hdDisc +( +AsyncWebSvReque + * +que +){ + +107 +de + +que +; + +108 + } +} + +110  + gAsyncWebSv +:: + $_wreReque +( +AsyncWebSvReque + * +que +){ + +111 cڡuto& +r +: +_wres +){ + +112 i( +r +-> + `mch +( +que +)){ + +113 +que +-> +_u + = +r +-> + `toU +(); + +114 +que +-> + `_addGPams +( +r +-> + `ms +()); + +117 + } +} + +119  + gAsyncWebSv +:: + $_chHdr +( +AsyncWebSvReque + * +que +){ + +120 cڡuto& +h +: +_hdrs +){ + +121 i( +h +-> + `fr +( +que +&& h-> + `nHd +(request)){ + +122 +que +-> + `tHdr +( +h +); + +127 +que +-> + `addIegHd +( + `F +("ANY")); + +128 +que +-> + `tHdr +( +_tchAHdr +); + +129 + } +} + +132 + gAsyncClbackWebHdr +& + gAsyncWebSv +:: + $ +(cڡ * +uri +, +WebRequeMhodCompose + +mhod +, +ArRequeHdrFuni + +Reque +, +ArUdHdrFuni + +Ud +, +ArBodyHdrFuni + +Body +){ + +133 +AsyncClbackWebHdr +* +hdr + = +w + + `AsyncClbackWebHdr +(); + +134 +hdr +-> + `tUri +( +uri +); + +135 +hdr +-> + `tMhod +( +mhod +); + +136 +hdr +-> + `Reque +( +Reque +); + +137 +hdr +-> + `Ud +( +Ud +); + +138 +hdr +-> + `Body +( +Body +); + +139 + `addHdr +( +hdr +); + +140  * +hdr +; + +141 + } +} + +143 + gAsyncClbackWebHdr +& + gAsyncWebSv +:: + $ +(cڡ * +uri +, +WebRequeMhodCompose + +mhod +, +ArRequeHdrFuni + +Reque +, +ArUdHdrFuni + +Ud +){ + +144 +AsyncClbackWebHdr +* +hdr + = +w + + `AsyncClbackWebHdr +(); + +145 +hdr +-> + `tUri +( +uri +); + +146 +hdr +-> + `tMhod +( +mhod +); + +147 +hdr +-> + `Reque +( +Reque +); + +148 +hdr +-> + `Ud +( +Ud +); + +149 + `addHdr +( +hdr +); + +150  * +hdr +; + +151 + } +} + +153 + gAsyncClbackWebHdr +& + gAsyncWebSv +:: + $ +(cڡ * +uri +, +WebRequeMhodCompose + +mhod +, +ArRequeHdrFuni + +Reque +){ + +154 +AsyncClbackWebHdr +* +hdr + = +w + + `AsyncClbackWebHdr +(); + +155 +hdr +-> + `tUri +( +uri +); + +156 +hdr +-> + `tMhod +( +mhod +); + +157 +hdr +-> + `Reque +( +Reque +); + +158 + `addHdr +( +hdr +); + +159  * +hdr +; + +160 + } +} + +162 + gAsyncClbackWebHdr +& + gAsyncWebSv +:: + $ +(cڡ * +uri +, +ArRequeHdrFuni + +Reque +){ + +163 +AsyncClbackWebHdr +* +hdr + = +w + + `AsyncClbackWebHdr +(); + +164 +hdr +-> + `tUri +( +uri +); + +165 +hdr +-> + `Reque +( +Reque +); + +166 + `addHdr +( +hdr +); + +167  * +hdr +; + +168 + } +} + +170 + gAsyncSticWebHdr +& + gAsyncWebSv +:: + $rveStic +(cڡ * +uri +, +fs +:: +FS +& fs, cڡ * +th +, cڡ * +che_cڌ +){ + +171 +AsyncSticWebHdr +* +hdr + = +w + + `AsyncSticWebHdr +( +uri +, +fs +, +th +, +che_cڌ +); + +172 + `addHdr +( +hdr +); + +173  * +hdr +; + +174 + } +} + +176  + gAsyncWebSv +:: + $NFound +( +ArRequeHdrFuni + + +){ + +177 +_tchAHdr +-> + `Reque +( + +); + +178 + } +} + +180  + gAsyncWebSv +:: + $FeUd +( +ArUdHdrFuni + + +){ + +181 +_tchAHdr +-> + `Ud +( + +); + +182 + } +} + +184  + gAsyncWebSv +:: + $RequeBody +( +ArBodyHdrFuni + + +){ + +185 +_tchAHdr +-> + `Body +( + +); + +186 + } +} + +188  + gAsyncWebSv +:: + $t +(){ + +189 +_wres +. + ` +(); + +190 +_hdrs +. + ` +(); + +192 i( +_tchAHdr + ! +NULL +){ + +193 +_tchAHdr +-> + `Reque +( +NULL +); + +194 +_tchAHdr +-> + `Ud +( +NULL +); + +195 +_tchAHdr +-> + `Body +( +NULL +); + +197 + } +} + + @lib/OneWire/OneWire.cpp + +142  + ~ + +143  + ~"OWe.h +" + +144  + ~"OWe_de_gpio.h +" + +146 #agm +GCC + +dgnoic + +push + + +147 #agm +GCC + +dgnoic + +igned + "-Wunused-variable" + +149  + gOWe +:: + $beg +( +ut8_t + +p +) { + +150 + `pMode +( +p +, +INPUT +); + +151 +bmask + = + `PIN_TO_BITMASK +( +p +); + +152 +baReg + = + `PIN_TO_BASEREG +( +p +); + +153 #i +ONEWIRE_SEARCH + + +154 + `t_ch +(); + +156 + } +} + +164 #ifde +ARDUINO_ARCH_ESP32 + + +165 +ut8_t + +IRAM_ATTR + + gOWe +:: + $t +() { + +167 +ut8_t + +OWe +:: + $t +() { + +169 +IO_REG_TYPE + +mask + +IO_REG_MASK_ATTR + = +bmask +; + +170 vީ +IO_REG_TYPE + * +g + +IO_REG_BASE_ATTR + = +baReg +; + +171 +ut8_t + +r +; + +172 +ut8_t + +s + = 125; + +174 + `noIrus +(); + +175 + `DIRECT_MODE_INPUT +( +g +, +mask +); + +176 + `us +(); + +179 i(-- +s + == 0) + +181 + `dayMiocds +(2); + +182 } ! + `DIRECT_READ +( +g +, +mask +)); + +184 + `noIrus +(); + +185 + `DIRECT_WRITE_LOW +( +g +, +mask +); + +186 + `DIRECT_MODE_OUTPUT +( +g +, +mask +); + +187 + `us +(); + +188 + `dayMiocds +(480); + +189 + `noIrus +(); + +190 + `DIRECT_MODE_INPUT +( +g +, +mask +); + +191 + `dayMiocds +(70); + +192 +r + = ! + `DIRECT_READ +( +g +, +mask +); + +193 + `us +(); + +194 + `dayMiocds +(410); + +195  +r +; + +196 + } +} + +202 #ifde +ARDUINO_ARCH_ESP32 + + +203  +IRAM_ATTR + + gOWe +:: + $wre_b +( +ut8_t + +v +) { + +205  +OWe +:: + $wre_b +( +ut8_t + +v +) { + +207 +IO_REG_TYPE + +mask + +IO_REG_MASK_ATTR + = +bmask +; + +208 vީ +IO_REG_TYPE + * +g + +IO_REG_BASE_ATTR + = +baReg +; + +210 i( +v + & 1) { + +211 + `noIrus +(); + +212 + `DIRECT_WRITE_LOW +( +g +, +mask +); + +213 + `DIRECT_MODE_OUTPUT +( +g +, +mask +); + +214 + `dayMiocds +(10); + +215 + `DIRECT_WRITE_HIGH +( +g +, +mask +); + +216 + `us +(); + +217 + `dayMiocds +(55); + +219 + `noIrus +(); + +220 + `DIRECT_WRITE_LOW +( +g +, +mask +); + +221 + `DIRECT_MODE_OUTPUT +( +g +, +mask +); + +222 + `dayMiocds +(65); + +223 + `DIRECT_WRITE_HIGH +( +g +, +mask +); + +224 + `us +(); + +225 + `dayMiocds +(5); + +227 + } +} + +233 #ifde +ARDUINO_ARCH_ESP32 + + +234 +ut8_t + +IRAM_ATTR + + gOWe +:: + $ad_b +() { + +236 +ut8_t + +OWe +:: + $ad_b +() { + +238 +IO_REG_TYPE + +mask + +IO_REG_MASK_ATTR + = +bmask +; + +239 vީ +IO_REG_TYPE + * +g + +IO_REG_BASE_ATTR + = +baReg +; + +240 +ut8_t + +r +; + +242 + `noIrus +(); + +243 + `DIRECT_MODE_OUTPUT +( +g +, +mask +); + +244 + `DIRECT_WRITE_LOW +( +g +, +mask +); + +245 + `dayMiocds +(3); + +246 + `DIRECT_MODE_INPUT +( +g +, +mask +); + +247 + `dayMiocds +(10); + +248 +r + = + `DIRECT_READ +( +g +, +mask +); + +249 + `us +(); + +250 + `dayMiocds +(53); + +251  +r +; + +252 + } +} + +261  + gOWe +:: + $wre +( +ut8_t + +v +, ut8_ +pow + ) { + +262 +ut8_t + +bMask +; + +264  +bMask + = 0x01; bitMask; bitMask <<= 1) { + +265 +OWe +:: + `wre_b +(( +bMask + & +v +) ? 1 : 0); + +267 i(! +pow +) { + +268 + `noIrus +(); + +269 + `DIRECT_MODE_INPUT +( +baReg +, +bmask +); + +270 + `DIRECT_WRITE_LOW +( +baReg +, +bmask +); + +271 + `us +(); + +273 + } +} + +275  + gOWe +:: + $wre_bys +(cڡ +ut8_t + * +buf +, +ut16_t + +cou +, +bo + +pow + ) { + +276  +ut16_t + +i + = 0; i < +cou +; i++) + +277 + `wre +( +buf +[ +i +]); + +278 i(! +pow +) { + +279 + `noIrus +(); + +280 + `DIRECT_MODE_INPUT +( +baReg +, +bmask +); + +281 + `DIRECT_WRITE_LOW +( +baReg +, +bmask +); + +282 + `us +(); + +284 + } +} + +289 +ut8_t + + gOWe +:: + $ad +() { + +290 +ut8_t + +bMask +; + +291 +ut8_t + +r + = 0; + +293  +bMask + = 0x01; bitMask; bitMask <<= 1) { + +294 i( +OWe +:: + `ad_b +()) + +295 +r + | +bMask +; + +297  +r +; + +298 + } +} + +300  + gOWe +:: + $ad_bys +( +ut8_t + * +buf +, +ut16_t + +cou +) { + +301  +ut16_t + +i + = 0; i < +cou +; i++) + +302 +buf +[ +i +] = + `ad +(); + +303 + } +} + +308  + gOWe +:: + $ +(cڡ +ut8_t + +rom +[8]) { + +309 +ut8_t + +i +; + +311 + `wre +(0x55); + +313  +i + = 0; i < 8; i++) + +314 + `wre +( +rom +[ +i +]); + +315 + } +} + +320  + gOWe +:: + $sk +() { + +321 + `wre +(0xCC); + +322 + } +} + +324  + gOWe +:: + $dow +() { + +325 + `noIrus +(); + +326 + `DIRECT_MODE_INPUT +( +baReg +, +bmask +); + +327 + `us +(); + +328 + } +} + +330 #i +ONEWIRE_SEARCH + + +336  + gOWe +:: + $t_ch +() { + +338 +LaDiscy + = 0; + +339 +LaDeviFg + = +l +; + +340 +LaFamyDiscy + = 0; + +341  +i + = 7;; i--) { + +342 +ROM_NO +[ +i +] = 0; + +343 i( +i + == 0) + +346 + } +} + +351  + gOWe +:: + $rg_ch +( +ut8_t + +my_code +) { + +353 +ROM_NO +[0] = +my_code +; + +354  +ut8_t + +i + = 1; i < 8; i++) + +355 +ROM_NO +[ +i +] = 0; + +356 +LaDiscy + = 64; + +357 +LaFamyDiscy + = 0; + +358 +LaDeviFg + = +l +; + +359 + } +} + +377 +bo + + gOWe +:: + $ch +( +ut8_t + * +wAddr +, +bo + +ch_mode + ) { + +378 +ut8_t + +id_b_numb +; + +379 +ut8_t + +ϡ_zo +, +rom_by_numb +; + +380 +bo + +ch_su +; + +381 +ut8_t + +id_b +, +cmp_id_b +; + +383  +rom_by_mask +, +ch_dei +; + +386 +id_b_numb + = 1; + +387 +ϡ_zo + = 0; + +388 +rom_by_numb + = 0; + +389 +rom_by_mask + = 1; + +390 +ch_su + = +l +; + +393 i(! +LaDeviFg +) { + +395 i(! + `t +()) { + +397 +LaDiscy + = 0; + +398 +LaDeviFg + = +l +; + +399 +LaFamyDiscy + = 0; + +400  +l +; + +404 i( +ch_mode + = +ue +) { + +405 + `wre +(0xF0); + +407 + `wre +(0xEC); + +413 +id_b + = + `ad_b +(); + +414 +cmp_id_b + = + `ad_b +(); + +417 i(( +id_b + =1&& ( +cmp_id_b + == 1)) { + +421 i( +id_b + ! +cmp_id_b +) { + +422 +ch_dei + = +id_b +; + +426 i( +id_b_numb + < +LaDiscy +) { + +427 +ch_dei + = (( +ROM_NO +[ +rom_by_numb +] & +rom_by_mask +) > 0); + +430 +ch_dei + = ( +id_b_numb + = +LaDiscy +); + +433 i( +ch_dei + == 0) { + +434 +ϡ_zo + = +id_b_numb +; + +437 i( +ϡ_zo + < 9) + +438 +LaFamyDiscy + = +ϡ_zo +; + +444 i( +ch_dei + == 1) + +445 +ROM_NO +[ +rom_by_numb +] | +rom_by_mask +; + +447 +ROM_NO +[ +rom_by_numb +] &~ +rom_by_mask +; + +450 + `wre_b +( +ch_dei +); + +454 +id_b_numb +++; + +455 +rom_by_mask + <<= 1; + +458 i( +rom_by_mask + == 0) { + +459 +rom_by_numb +++; + +460 +rom_by_mask + = 1; + +463 }  +rom_by_numb + < 8); + +466 i(!( +id_b_numb + < 65)) { + +468 +LaDiscy + = +ϡ_zo +; + +471 i( +LaDiscy + == 0) { + +472 +LaDeviFg + = +ue +; + +474 +ch_su + = +ue +; + +479 i(! +ch_su + || ! +ROM_NO +[0]) { + +480 +LaDiscy + = 0; + +481 +LaDeviFg + = +l +; + +482 +LaFamyDiscy + = 0; + +483 +ch_su + = +l +; + +485  +i + = 0; i < 8; i++) + +486 +wAddr +[ +i +] = +ROM_NO +[i]; + +489  +ch_su +; + +490 + } +} + +494 #i +ONEWIRE_CRC + + +499 #i +ONEWIRE_CRC8_TABLE + + +503 cڡ +ut8_t + +PROGMEM + + gdsc2x16_b +[] = {0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83, 0xC2, 0x9C, 0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41, + +508 +ut8_t + + gOWe +:: + $c8 +(cڡ +ut8_t + * +addr +, ut8_ +n +) { + +509 +ut8_t + +c + = 0; + +511  +n +--) { + +512 +c + = * +addr +++ ^ crc; + +513 +c + = + `pgm_ad_by +( +dsc2x16_b + + (crc & 0x0f)) ^gm_read_byte(dscrc2x16_table + 16 + ((crc >> 4) & 0x0f)); + +516  +c +; + +517 + } +} + +523 +ut8_t + + gOWe +:: + $c8 +(cڡ +ut8_t + * +addr +, ut8_ +n +) { + +524 +ut8_t + +c + = 0; + +526  +n +--) { + +527 #i + `defed +( +__AVR__ +) + +528 +c + = + `_c_ibu_upde +(c, * +addr +++); + +530 +ut8_t + +by + = * +addr +++; + +531  +ut8_t + +i + = 8; i; i--) { + +532 +ut8_t + +mix + = ( +c + ^ +by +) & 0x01; + +533 +c + >>= 1; + +534 i( +mix +) + +535 +c + ^= 0x8C; + +536 +by + >>= 1; + +540  +c +; + +541 + } +} + +544 #i +ONEWIRE_CRC16 + + +545 +bo + + gOWe +:: + $check_c16 +(cڡ +ut8_t + * +put +, +ut16_t + +n +, cڡ ut8_* +vd_c +, ut16_ +c +) { + +546 +c + = ~ + `c16 +( +put +, +n +, crc); + +547  ( +c + & 0xFF= +vd_c +[0] && (crc >> 8) == inverted_crc[1]; + +548 + } +} + +550 +ut16_t + + gOWe +:: + $c16 +(cڡ +ut8_t + * +put +, +ut16_t + +n +, ut16_ +c +) { + +551 #i + `defed +( +__AVR__ +) + +552  +ut16_t + +i + = 0; i < +n +; i++) { + +553 +c + = + `_c16_upde +(c, +put +[ +i +]); + +556 cڡ +ut8_t + +oddry +[16] = {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0}; + +558  +ut16_t + +i + = 0; i < +n +; i++) { + +561 +ut16_t + +cda + = +put +[ +i +]; + +562 +cda + = (cd^ +c +) & 0xff; + +563 +c + >>= 8; + +565 i( +oddry +[ +cda + & 0x0F] ^ oddparity[cdata >> 4]) + +566 +c + ^= 0xC001; + +568 +cda + <<= 6; + +569 +c + ^ +cda +; + +570 +cda + <<= 1; + +571 +c + ^ +cda +; + +574  +c +; + +575 + } +} + +581 #agm +GCC + +dgnoic +op + + @lib/OneWire/OneWire.h + +1 #ide +OWe_h + + +2  + #OWe_h + + + ) + +4 #ifde +__lulus + + +6  + ~ + +8 #i +defed +( +__AVR__ +) + +9  + ~ + +12 #i +ARDUINO + >= 100 + +13  + ~ + +15  + ~"WProgm.h +" + +16  + ~"ps_duo.h +" + +30 #ide +ONEWIRE_SEARCH + + +31  + #ONEWIRE_SEARCH + 1 + + ) + +35 #ide +ONEWIRE_CRC + + +36  + #ONEWIRE_CRC + 1 + + ) + +44 #ide +ONEWIRE_CRC8_TABLE + + +45  + #ONEWIRE_CRC8_TABLE + 1 + + ) + +50 #ide +ONEWIRE_CRC16 + + +51  + #ONEWIRE_CRC16 + 1 + + ) + +55  + ~"OWe_de_gty.h +" + +57 as + cOWe + { + +58 + mive +: + +59 +IO_REG_TYPE + +bmask +; + +60 vީ +IO_REG_TYPE + * + mbaReg +; + +62 #i +ONEWIRE_SEARCH + + +64  + mROM_NO +[8]; + +65 +ut8_t + + mLaDiscy +; + +66 +ut8_t + + mLaFamyDiscy +; + +67 +bo + + mLaDeviFg +; + +70 + mpublic +: + +71 + $OWe +() { + +73 + $OWe +( +ut8_t + +p +) { + +74 + `beg +( +p +); + +75 + } +} + +76  +beg +( +ut8_t + +p +); + +81 #ifde +ARDUINO_ARCH_ESP32 + + +82 +ut8_t + +IRAM_ATTR + +t +(); + +84 +ut8_t + +t +(); + +88  + +(cڡ +ut8_t + +rom +[8]); + +91  +sk +(); + +97  +wre +( +ut8_t + +v +, ut8_ +pow + = 0); + +99  +wre_bys +(cڡ +ut8_t + * +buf +, +ut16_t + +cou +, +bo + +pow + = 0); + +102 +ut8_t + +ad +(); + +104  +ad_bys +( +ut8_t + * +buf +, +ut16_t + +cou +); + +108 #ifde +ARDUINO_ARCH_ESP32 + + +109  +IRAM_ATTR + +wre_b +( +ut8_t + +v +); + +111  +wre_b +( +ut8_t + +v +); + +115 #ifde +ARDUINO_ARCH_ESP32 + + +116 +ut8_t + +IRAM_ATTR + +ad_b +(); + +118 +ut8_t + +ad_b +(); + +125  +dow +(); + +127 #i +ONEWIRE_SEARCH + + +129  +t_ch +(); + +133  +rg_ch +( +ut8_t + +my_code +); + +141 +bo + +ch +( +ut8_t + * +wAddr +, bo +ch_mode + = +ue +); + +144 #i +ONEWIRE_CRC + + +147  +ut8_t + +c8 +(cڡ ut8_* +addr +, ut8_ +n +); + +149 #i +ONEWIRE_CRC16 + + +170  +bo + +check_c16 +(cڡ +ut8_t + * +put +, +ut16_t + +n +, cڡ ut8_* +vd_c +, ut16_ +c + = 0); + +184  +ut16_t + +c16 +(cڡ +ut8_t + * +put +, ut16_ +n +, ut16_ +c + = 0); + +190 #ifde +IO_REG_TYPE + + +191 #unde +IO_REG_TYPE + + + @lib/OneWire/OneWire_direct_gpio.h + +1 #ide +OWe_De_GPIO_h + + +2  + #OWe_De_GPIO_h + + + ) + +8  + ~ + +12 #i +defed +( +__AVR__ +) + +13  + #PIN_TO_BASEREG +( +p +( + `ptIutRegi +( + `digPToPt +՚))) + + ) + +14  + #PIN_TO_BITMASK +( +p +( + `digPToBMask +՚)) + + ) + +15  + #IO_REG_TYPE + +ut8_t + + + ) + +16  + #IO_REG_BASE_ATTR + + `asm +("r30") + + ) + +17  + #IO_REG_MASK_ATTR + + + ) + +18 #i +defed +( +__AVR_ATmega4809__ +) + +19  + #DIRECT_READ +( +ba +, +mask +(((*(ba)& (mask)? 1 : 0) + + ) + +20  + #DIRECT_MODE_INPUT +( +ba +, +mask +((*((ba)-8)&~(mask)) + + ) + +21  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +((*((ba)-8)|(mask)) + + ) + +22  + #DIRECT_WRITE_LOW +( +ba +, +mask +((*((ba)-4)&~(mask)) + + ) + +23  + #DIRECT_WRITE_HIGH +( +ba +, +mask +((*((ba)-4)|(mask)) + + ) + +25  + #DIRECT_READ +( +ba +, +mask +(((*(ba)& (mask)? 1 : 0) + + ) + +26  + #DIRECT_MODE_INPUT +( +ba +, +mask +((*((ba+ 1)&~(mask)) + + ) + +27  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +((*((ba+ 1)|(mask)) + + ) + +28  + #DIRECT_WRITE_LOW +( +ba +, +mask +((*((ba+ 2)&~(mask)) + + ) + +29  + #DIRECT_WRITE_HIGH +( +ba +, +mask +((*((ba+ 2)|(mask)) + + ) + +32 #i +defed +( +__MK20DX128__ +|| defed( +__MK20DX256__ +|| defed( +__MK66FX1M0__ +|| defed( +__MK64FX512__ +) + +33  + #PIN_TO_BASEREG +( +p +( + `ptOuutRegi +՚)) + + ) + +34  + #PIN_TO_BITMASK +( +p +(1) + + ) + +35  + #IO_REG_TYPE + +ut8_t + + + ) + +36  + #IO_REG_BASE_ATTR + + + ) + +37  + #IO_REG_MASK_ATTR + + `__ibu__ +(( +unud +)) + + ) + +38  + #DIRECT_READ +( +ba +, +mask +(*((ba+ 512)) + + ) + +39  + #DIRECT_MODE_INPUT +( +ba +, +mask +(*((ba+ 6400) + + ) + +40  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +(*((ba+ 6401) + + ) + +41  + #DIRECT_WRITE_LOW +( +ba +, +mask +(*((ba+ 2561) + + ) + +42  + #DIRECT_WRITE_HIGH +( +ba +, +mask +(*((ba+ 1281) + + ) + +44 #i +defed +( +__MKL26Z64__ +) + +45  + #PIN_TO_BASEREG +( +p +( + `ptOuutRegi +՚)) + + ) + +46  + #PIN_TO_BITMASK +( +p +( + `digPToBMask +՚)) + + ) + +47  + #IO_REG_TYPE + +ut8_t + + + ) + +48  + #IO_REG_BASE_ATTR + + + ) + +49  + #IO_REG_MASK_ATTR + + + ) + +50  + #DIRECT_READ +( +ba +, +mask +((*((ba+ 16& (mask)? 1 : 0) + + ) + +51  + #DIRECT_MODE_INPUT +( +ba +, +mask +(*((ba+ 20&~(mask)) + + ) + +52  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +(*((ba+ 20|(mask)) + + ) + +53  + #DIRECT_WRITE_LOW +( +ba +, +mask +(*((ba+ 8(mask)) + + ) + +54  + #DIRECT_WRITE_HIGH +( +ba +, +mask +(*((ba+ 4(mask)) + + ) + +56 #i +defed +( +__IMXRT1052__ +|| defed( +__IMXRT1062__ +) + +57  + #PIN_TO_BASEREG +( +p +( + `ptOuutRegi +՚)) + + ) + +58  + #PIN_TO_BITMASK +( +p +( + `digPToBMask +՚)) + + ) + +59  + #IO_REG_TYPE + +ut32_t + + + ) + +60  + #IO_REG_BASE_ATTR + + + ) + +61  + #IO_REG_MASK_ATTR + + + ) + +62  + #DIRECT_READ +( +ba +, +mask +((*((ba+ 2& (mask)? 1 : 0) + + ) + +63  + #DIRECT_MODE_INPUT +( +ba +, +mask +(*((ba+ 1&~(mask)) + + ) + +64  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +(*((ba+ 1|(mask)) + + ) + +65  + #DIRECT_WRITE_LOW +( +ba +, +mask +(*((ba+ 34(mask)) + + ) + +66  + #DIRECT_WRITE_HIGH +( +ba +, +mask +(*((ba+ 33(mask)) + + ) + +68 #i +defed +( +__SAM3X8E__ +|| defed( +__SAM3A8C__ +|| defed( +__SAM3A4C__ +) + +73  + #PIN_TO_BASEREG +( +p +(&( + `digPToPt +՚)-> +PIO_PER +)) + + ) + +74  + #PIN_TO_BITMASK +( +p +( + `digPToBMask +՚)) + + ) + +75  + #IO_REG_TYPE + +ut32_t + + + ) + +76  + #IO_REG_BASE_ATTR + + + ) + +77  + #IO_REG_MASK_ATTR + + + ) + +78  + #DIRECT_READ +( +ba +, +mask +(((*((ba+ 15)& (mask)? 1 : 0) + + ) + +79  + #DIRECT_MODE_INPUT +( +ba +, +mask +((*((ba+ 5)(mask)) + + ) + +80  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +((*((ba+ 4)(mask)) + + ) + +81  + #DIRECT_WRITE_LOW +( +ba +, +mask +((*((ba+ 13)(mask)) + + ) + +82  + #DIRECT_WRITE_HIGH +( +ba +, +mask +((*((ba+ 12)(mask)) + + ) + +83 #ide +PROGMEM + + +84  + #PROGMEM + + + ) + +86 #ide +pgm_ad_by + + +87  + #pgm_ad_by +( +addr +(*(cڡ +ut8_t + *)ddr)) + + ) + +90 #i +defed +( +__PIC32MX__ +) + +91  + #PIN_TO_BASEREG +( +p +( + `ptModeRegi +( + `digPToPt +՚))) + + ) + +92  + #PIN_TO_BITMASK +( +p +( + `digPToBMask +՚)) + + ) + +93  + #IO_REG_TYPE + +ut32_t + + + ) + +94  + #IO_REG_BASE_ATTR + + + ) + +95  + #IO_REG_MASK_ATTR + + + ) + +96  + #DIRECT_READ +( +ba +, +mask +) (((*(base + 4)) & (mask)) ? 1 : 0) + +97  + #DIRECT_MODE_INPUT +( +ba +, +mask +) ((*(base + 2)) = (mask)) + +98  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +) ((*(base + 1)) = (mask)) + +99  + #DIRECT_WRITE_LOW +( +ba +, +mask +) ((*(base + 8 + 1)) = (mask)) + +100  + #DIRECT_WRITE_HIGH +( +ba +, +mask +) ((*(base + 8 + 2)) = (mask)) + +101 + + ) + +102 #i +defed +( +ARDUINO_ARCH_ESP8266 +) + +108  + #PIN_TO_BASEREG +( +p +((vީ +ut32_t + *) +GPO +) + + ) + +109  + #PIN_TO_BITMASK +( +p +(1 <<) + + ) + +110  + #IO_REG_TYPE + +ut32_t + + + ) + +111  + #IO_REG_BASE_ATTR + + + ) + +112  + #IO_REG_MASK_ATTR + + + ) + +113  + #DIRECT_READ +( +ba +, +mask +(( +GPI + & (mask)) ? 1 : 0) + +114  + #DIRECT_MODE_INPUT +( +ba +, +mask +( +GPE + &= ~(mask)) + +115  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +( +GPE + |= (mask)) + +116  + #DIRECT_WRITE_LOW +( +ba +, +mask +( +GPOC + = (mask)) + +117  + #DIRECT_WRITE_HIGH +( +ba +, +mask +( +GPOS + = (mask)) + +118 + + ) + +119 #i +defed +( +ARDUINO_ARCH_ESP32 +) + +120  + ~ + +121  + #PIN_TO_BASEREG +( +p +(0) + + ) + +122  + #PIN_TO_BITMASK +( +p +՚) + + ) + +123  + #IO_REG_TYPE + +ut32_t + + + ) + +124  + #IO_REG_BASE_ATTR + + + ) + +125  + #IO_REG_MASK_ATTR + + + ) + +127  +le + +__ibu__ +(( +ways_le +) +IO_REG_TYPE + + $deRd +( +IO_REG_TYPE + +p +) { + +128 i( +p + < 32) + +129  ( +GPIO +. + + >> +p +) & 0x1; + +130 i( +p + < 40) + +131  ( +GPIO +. +1 +. +v + >> ( +p + - 32)) & 0x1; + +134 + } +} + +136  +le + +__ibu__ +(( +ways_le +) + $deWreLow +( +IO_REG_TYPE + +p +) { + +137 i( +p + < 32) + +138 +GPIO +. +out_w1tc + = (( +ut32_t +)1 << +p +); + +139 i( +p + < 34) + +140 +GPIO +. +out1_w1tc +. +v + = (( +ut32_t +)1 << ( +p + - 32)); + +141 + } +} + +143  +le + +__ibu__ +(( +ways_le +) + $deWreHigh +( +IO_REG_TYPE + +p +) { + +144 i( +p + < 32) + +145 +GPIO +. +out_w1ts + = (( +ut32_t +)1 << +p +); + +146 i( +p + < 34) + +147 +GPIO +. +out1_w1ts +. +v + = (( +ut32_t +)1 << ( +p + - 32)); + +148 + } +} + +150  +le + +__ibu__ +(( +ways_le +) + $deModeIut +( +IO_REG_TYPE + +p +) { + +151 i( + `digPIsVid +( +p +)) { + +152 +ut32_t + + `c_g +( +c_gpio_desc +[ +p +]. +g +); + +154 i( +c_g +) + +156 + `ESP_REG +( +c_g +ESP_REGtc_g& ~( +c_gpio_desc +[ +p +]. +mux +); + +157 + `ESP_REG +( +c_g +ESP_REGtc_g& ~( +c_gpio_desc +[ +p +]. +puup + |tc_gpio_desc[p]. +pudown +); + +160 i( +p + < 32) + +161 +GPIO +. +ab_w1tc + = (( +ut32_t +)1 << +p +); + +163 +GPIO +. +ab1_w1tc +. +v + = (( +ut32_t +)1 << ( +p + - 32)); + +165 +ut32_t + + `pFuni +((ut32_t)2 << +FUN_DRV_S +); + +166 +pFuni + | +FUN_IE +; + +167 +pFuni + |(( +ut32_t +)2 << +MCU_SEL_S +); + +169 + `ESP_REG +( +DR_REG_IO_MUX_BASE + + +e32_gpioMux +[ +p +]. +g + +pFuni +; + +171 +GPIO +. +p +[p]. +v + = 0; + +173 + } +} + +175  +le + +__ibu__ +(( +ways_le +) + $deModeOuut +( +IO_REG_TYPE + +p +) { + +176 i( + `digPIsVid +( +p +) &&in <= 33) + +178 +ut32_t + + `c_g +( +c_gpio_desc +[ +p +]. +g +); + +180 i( +c_g +) + +182 + `ESP_REG +( +c_g +ESP_REGtc_g& ~( +c_gpio_desc +[ +p +]. +mux +); + +183 + `ESP_REG +( +c_g +ESP_REGtc_g& ~( +c_gpio_desc +[ +p +]. +puup + |tc_gpio_desc[p]. +pudown +); + +186 i( +p + < 32) + +187 +GPIO +. +ab_w1ts + = (( +ut32_t +)1 << +p +); + +189 +GPIO +. +ab1_w1ts +. +v + = (( +ut32_t +)1 << ( +p + - 32)); + +191 +ut32_t + + `pFuni +((ut32_t)2 << +FUN_DRV_S +); + +192 +pFuni + | +FUN_IE +; + +193 +pFuni + |(( +ut32_t +)2 << +MCU_SEL_S +); + +195 + `ESP_REG +( +DR_REG_IO_MUX_BASE + + +e32_gpioMux +[ +p +]. +g + +pFuni +; + +197 +GPIO +. +p +[p]. +v + = 0; + +199 + } +} + +201  + #DIRECT_READ +( +ba +, +p + + `deRd +՚) + + ) + +202  + #DIRECT_WRITE_LOW +( +ba +, +p + + `deWreLow +՚) + + ) + +203  + #DIRECT_WRITE_HIGH +( +ba +, +p + + `deWreHigh +՚) + + ) + +204  + #DIRECT_MODE_INPUT +( +ba +, +p + + `deModeIut +՚) + + ) + +205  + #DIRECT_MODE_OUTPUT +( +ba +, +p + + `deModeOuut +՚) + + ) + +208 #ifde +us + + +209 #unde +us + + +211 #ifde +noIrus + + +212 #unde +noIrus + + +214  + #noIrus +() \ + +216 +ptMUX_TYPE + +mux + = +ptMUX_INITIALIZER_UNLOCKED +; \ + +217 + `ptENTER_CRITICAL +(& +mux +) + + ) + +218  + #us +() \ + +219 + `ptEXIT_CRITICAL +(& +mux +); \ + +220 } + + ) + +223 #i +defed +( +ARDUINO_ARCH_STM32 +) + +224  + #PIN_TO_BASEREG +( +p +(0) + + ) + +225  + #PIN_TO_BITMASK +( +p +(( +ut32_t +) + `digPToPName +՚)) + + ) + +226  + #IO_REG_TYPE + +ut32_t + + + ) + +227  + #IO_REG_BASE_ATTR + + + ) + +228  + #IO_REG_MASK_ATTR + + + ) + +229  + #DIRECT_READ +( +ba +, +p + + `digRdFa +(( +PName +) + + ) + +230  + #DIRECT_WRITE_LOW +( +ba +, +p + + `digWreFa +(( +PName +, +LOW +) + + ) + +231  + #DIRECT_WRITE_HIGH +( +ba +, +p + + `digWreFa +(( +PName +, +HIGH +) + + ) + +232  + #DIRECT_MODE_INPUT +( +ba +, +p + + `p_funi +(( +PName +, + `STM_PIN_DATA +( +STM_MODE_INPUT +, +GPIO_NOPULL +, 0)) + + ) + +233  + #DIRECT_MODE_OUTPUT +( +ba +, +p + + `p_funi +(( +PName +, + `STM_PIN_DATA +( +STM_MODE_OUTPUT_PP +, +GPIO_NOPULL +, 0)) + + ) + +235 #i +defed +( +__SAMD21G18A__ +) + +236  + #PIN_TO_BASEREG +( +p + + `ptModeRegi +( + `digPToPt +՚)) + + ) + +237  + #PIN_TO_BITMASK +( +p +( + `digPToBMask +՚)) + + ) + +238  + #IO_REG_TYPE + +ut32_t + + + ) + +239  + #IO_REG_BASE_ATTR + + + ) + +240  + #IO_REG_MASK_ATTR + + + ) + +241  + #DIRECT_READ +( +ba +, +mask +(((*((ba+ 8)& (mask)? 1 : 0) + + ) + +242  + #DIRECT_MODE_INPUT +( +ba +, +mask +((*((ba+ 1)(mask)) + + ) + +243  + #DIRECT_MODE_OUTPUT +( +ba +, +mask +((*((ba+ 2)(mask)) + + ) + +244  + #DIRECT_WRITE_LOW +( +ba +, +mask +((*((ba+ 5)(mask)) + + ) + +245  + #DIRECT_WRITE_HIGH +( +ba +, +mask +((*((ba+ 6)(mask)) + + ) + +247 #i +defed +( +__ASR6501__ +) + +248  + #PIN_IN_PORT +( +p +՚ % +PIN_NUMBER_IN_PORT +) + + ) + +249  + #PORT_FROM_PIN +( +p +՚ / +PIN_NUMBER_IN_PORT +) + + ) + +250  + #PORT_OFFSET +( +pt +( +PORT_REG_SHFIT + *t) + + ) + +251  + #PORT_ADDRESS +( +p +( +CYDEV_GPIO_BASE + + + `PORT_OFFSET +( + `PORT_FROM_PIN +՚))) + + ) + +253  + #PIN_TO_BASEREG +( +p +(0) + + ) + +254  + #PIN_TO_BITMASK +( +p +՚) + + ) + +255  + #IO_REG_TYPE + +ut32_t + + + ) + +256  + #IO_REG_BASE_ATTR + + + ) + +257  + #IO_REG_MASK_ATTR + + + ) + +258  + #DIRECT_READ +( +ba +, +p + + `CY_SYS_PINS_READ_PIN +( + `PORT_ADDRESS +՚+ 4, + `PIN_IN_PORT +՚)) + + ) + +259  + #DIRECT_WRITE_LOW +( +ba +, +p + + `CY_SYS_PINS_CLEAR_PIN +( + `PORT_ADDRESS +՚), + `PIN_IN_PORT +՚)) + + ) + +260  + #DIRECT_WRITE_HIGH +( +ba +, +p + + `CY_SYS_PINS_SET_PIN +( + `PORT_ADDRESS +՚), + `PIN_IN_PORT +՚)) + + ) + +261  + #DIRECT_MODE_INPUT +( +ba +, +p + + `CY_SYS_PINS_SET_DRIVE_MODE +( + `PORT_ADDRESS +՚+ 8, + `PIN_IN_PORT +՚), +CY_SYS_PINS_DM_DIG_HIZ +) + + ) + +262  + #DIRECT_MODE_OUTPUT +( +ba +, +p + + `CY_SYS_PINS_SET_DRIVE_MODE +( + `PORT_ADDRESS +՚+ 8, + `PIN_IN_PORT +՚), +CY_SYS_PINS_DM_STRONG +) + + ) + +264 #i +defed +( +RBL_NRF51822 +) + +265  + #PIN_TO_BASEREG +( +p +(0) + + ) + +266  + #PIN_TO_BITMASK +( +p +՚) + + ) + +267  + #IO_REG_TYPE + +ut32_t + + + ) + +268  + #IO_REG_BASE_ATTR + + + ) + +269  + #IO_REG_MASK_ATTR + + + ) + +270  + #DIRECT_READ +( +ba +, +p + + `f_gpio_p_ad +՚) + + ) + +271  + #DIRECT_WRITE_LOW +( +ba +, +p + + `f_gpio_p_r +՚) + + ) + +272  + #DIRECT_WRITE_HIGH +( +ba +, +p + + `f_gpio_p_t +՚) + + ) + +273  + #DIRECT_MODE_INPUT +( +ba +, +p + + `f_gpio_cfg_put +՚, +NRF_GPIO_PIN_NOPULL +) + + ) + +274  + #DIRECT_MODE_OUTPUT +( +ba +, +p + + `f_gpio_cfg_ouut +՚) + + ) + +276 #i +defed +( +__c__ +) + +278  + ~"scss_gis.h +" + +279  + ~"p܏b.h +" + +280  + ~"avr/pgma.h +" + +282  + #GPIO_ID +( +p +( +g_APDesti +[p]. +ulGPIOId +) + + ) + +283  + #GPIO_TYPE +( +p +( +g_APDesti +[p]. +ulGPIOTy +) + + ) + +284  + #GPIO_BASE +( +p +( +g_APDesti +[p]. +ulGPIOBa +) + + ) + +285  + #DIR_OFFSET_SS + 0x01 + + ) + +286  + #DIR_OFFSET_SOC + 0x04 + + ) + +287  + #EXT_PORT_OFFSET_SS + 0x0A + + ) + +288  + #EXT_PORT_OFFSET_SOC + 0x50 + + ) + +291  + #PIN_TO_BASEREG +( +p +((vީ +ut32_t + *) +g_APDesti +[p]. +ulGPIOBa +) + + ) + +292  + #PIN_TO_BITMASK +( +p + + ) +pin + +293  + #IO_REG_TYPE + +ut32_t + + + ) + +294  + #IO_REG_BASE_ATTR + + + ) + +295  + #IO_REG_MASK_ATTR + + + ) + +297  +le + +__ibu__ +(( +ways_le +) +IO_REG_TYPE + + $deRd +(vީ +IO_REG_TYPE + * +ba +, IO_REG_TYPE +p +) { + +298 +IO_REG_TYPE + +t +; + +299 i( +SS_GPIO + = + `GPIO_TYPE +( +p +)) { + +300 +t + = + `READ_ARC_REG +((( +IO_REG_TYPE +) +ba + + +EXT_PORT_OFFSET_SS +)); + +302 +t + = + `MMIO_REG_VAL_FROM_BASE +(( +IO_REG_TYPE +) +ba +, +EXT_PORT_OFFSET_SOC +); + +304  (( +t + >> + `GPIO_ID +( +p +)) & 0x01); + +305 + } +} + +307  +le + +__ibu__ +(( +ways_le +) + $deModeIut +(vީ +IO_REG_TYPE + * +ba +, IO_REG_TYPE +p +) { + +308 i( +SS_GPIO + = + `GPIO_TYPE +( +p +)) { + +309 + `WRITE_ARC_REG +( + `READ_ARC_REG +(((( +IO_REG_TYPE +) +ba ++ +DIR_OFFSET_SS +)& ~(0x01 << + `GPIO_ID +( +p +)), ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); + +311 + `MMIO_REG_VAL_FROM_BASE +(( +IO_REG_TYPE +) +ba +, +DIR_OFFSET_SOC +&~(0x01 << + `GPIO_ID +( +p +)); + +313 + } +} + +315  +le + +__ibu__ +(( +ways_le +) + $deModeOuut +(vީ +IO_REG_TYPE + * +ba +, IO_REG_TYPE +p +) { + +316 i( +SS_GPIO + = + `GPIO_TYPE +( +p +)) { + +317 + `WRITE_ARC_REG +( + `READ_ARC_REG +((( +IO_REG_TYPE +)( +ba ++ +DIR_OFFSET_SS +)| (0x01 << + `GPIO_ID +( +p +)), ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); + +319 + `MMIO_REG_VAL_FROM_BASE +(( +IO_REG_TYPE +) +ba +, +DIR_OFFSET_SOC +|(0x01 << + `GPIO_ID +( +p +)); + +321 + } +} + +323  +le + +__ibu__ +(( +ways_le +) + $deWreLow +(vީ +IO_REG_TYPE + * +ba +, IO_REG_TYPE +p +) { + +324 i( +SS_GPIO + = + `GPIO_TYPE +( +p +)) { + +325 + `WRITE_ARC_REG +( + `READ_ARC_REG +( +ba +& ~(0x01 << + `GPIO_ID +( +p +)), base); + +327 + `MMIO_REG_VAL +( +ba +&~(0x01 << + `GPIO_ID +( +p +)); + +329 + } +} + +331  +le + +__ibu__ +(( +ways_le +) + $deWreHigh +(vީ +IO_REG_TYPE + * +ba +, IO_REG_TYPE +p +) { + +332 i( +SS_GPIO + = + `GPIO_TYPE +( +p +)) { + +333 + `WRITE_ARC_REG +( + `READ_ARC_REG +( +ba +| (0x01 << + `GPIO_ID +( +p +)), base); + +335 + `MMIO_REG_VAL +( +ba +|(0x01 << + `GPIO_ID +( +p +)); + +337 + } +} + +339  + #DIRECT_READ +( +ba +, +p + + `deRd +(ba,) + + ) + +340  + #DIRECT_MODE_INPUT +( +ba +, +p + + `deModeIut +(ba,) + + ) + +341  + #DIRECT_MODE_OUTPUT +( +ba +, +p + + `deModeOuut +(ba,) + + ) + +342  + #DIRECT_WRITE_LOW +( +ba +, +p + + `deWreLow +(ba,) + + ) + +343  + #DIRECT_WRITE_HIGH +( +ba +, +p + + `deWreHigh +(ba,) + + ) + +345 #i +defed +( +__riscv +) + +354  + #PIN_TO_BASEREG +( +p +(0) + + ) + +355  + #PIN_TO_BITMASK +( +p + + `digPToBMask +՚) + + ) + +356  + #IO_REG_TYPE + +ut32_t + + + ) + +357  + #IO_REG_BASE_ATTR + + + ) + +358  + #IO_REG_MASK_ATTR + + + ) + +360  +le + +__ibu__ +(( +ways_le +) +IO_REG_TYPE + + $deRd +( +IO_REG_TYPE + +mask +) { + +361  (( + `GPIO_REG +( +GPIO_INPUT_VAL +& +mask +) != 0) ? 1 : 0; + +362 + } +} + +364  +le + +__ibu__ +(( +ways_le +) + $deModeIut +( +IO_REG_TYPE + +mask +) { + +365 + `GPIO_REG +( +GPIO_OUTPUT_XOR +&~ +mask +; + +366 + `GPIO_REG +( +GPIO_IOF_EN +&~ +mask +; + +368 + `GPIO_REG +( +GPIO_INPUT_EN +| +mask +; + +369 + `GPIO_REG +( +GPIO_OUTPUT_EN +&~ +mask +; + +370 + } +} + +372  +le + +__ibu__ +(( +ways_le +) + $deModeOuut +( +IO_REG_TYPE + +mask +) { + +373 + `GPIO_REG +( +GPIO_OUTPUT_XOR +&~ +mask +; + +374 + `GPIO_REG +( +GPIO_IOF_EN +&~ +mask +; + +376 + `GPIO_REG +( +GPIO_INPUT_EN +&~ +mask +; + +377 + `GPIO_REG +( +GPIO_OUTPUT_EN +| +mask +; + +378 + } +} + +380  +le + +__ibu__ +(( +ways_le +) + $deWreLow +( +IO_REG_TYPE + +mask +) { + +381 + `GPIO_REG +( +GPIO_OUTPUT_VAL +&~ +mask +; + +382 + } +} + +384  +le + +__ibu__ +(( +ways_le +) + $deWreHigh +( +IO_REG_TYPE + +mask +) { + +385 + `GPIO_REG +( +GPIO_OUTPUT_VAL +| +mask +; + +386 + } +} + +388  + #DIRECT_READ +( +ba +, +mask + + `deRd +(mask) + + ) + +389  + #DIRECT_WRITE_LOW +( +ba +, +mask + + `deWreLow +(mask) + + ) + +390  + #DIRECT_WRITE_HIGH +( +ba +, +mask + + `deWreHigh +(mask) + + ) + +391  + #DIRECT_MODE_INPUT +( +ba +, +mask + + `deModeIut +(mask) + + ) + +392  + #DIRECT_MODE_OUTPUT +( +ba +, +mask + + `deModeOuut +(mask) + + ) + +395  + #PIN_TO_BASEREG +( +p +(0) + + ) + +396  + #PIN_TO_BITMASK +( +p +՚) + + ) + +397  + #IO_REG_TYPE +  + + ) + +398  + #IO_REG_BASE_ATTR + + + ) + +399  + #IO_REG_MASK_ATTR + + + ) + +400  + #DIRECT_READ +( +ba +, +p + + `digRd +՚) + + ) + +401  + #DIRECT_WRITE_LOW +( +ba +, +p + + `digWre +՚, +LOW +) + + ) + +402  + #DIRECT_WRITE_HIGH +( +ba +, +p + + `digWre +՚, +HIGH +) + + ) + +403  + #DIRECT_MODE_INPUT +( +ba +, +p + + `pMode +՚, +INPUT +) + + ) + +404  + #DIRECT_MODE_OUTPUT +( +ba +, +p + + `pMode +՚, +OUTPUT +) + + ) + + @lib/OneWire/OneWire_direct_regtype.h + +1 #ide +OWe_De_RegTy_h + + +2  + #OWe_De_RegTy_h + + + ) + +4  + ~ + +8 #i +defed +( +__AVR__ +) + +9  + #IO_REG_TYPE + +ut8_t + + + ) + +11 #i +defed +( +__MK20DX128__ +|| defed( +__MK20DX256__ +|| defed( +__MK66FX1M0__ +|| defed( +__MK64FX512__ +) + +12  + #IO_REG_TYPE + +ut8_t + + + ) + +14 #i +defed +( +__IMXRT1052__ +|| defed( +__IMXRT1062__ +) + +15  + #IO_REG_TYPE + +ut32_t + + + ) + +17 #i +defed +( +__MKL26Z64__ +) + +18  + #IO_REG_TYPE + +ut8_t + + + ) + +20 #i +defed +( +__SAM3X8E__ +|| defed( +__SAM3A8C__ +|| defed( +__SAM3A4C__ +) + +21  + #IO_REG_TYPE + +ut32_t + + + ) + +23 #i +defed +( +__PIC32MX__ +) + +24  + #IO_REG_TYPE + +ut32_t + + + ) + +26 #i +defed +( +ARDUINO_ARCH_ESP8266 +) + +27  + #IO_REG_TYPE + +ut32_t + + + ) + +29 #i +defed +( +ARDUINO_ARCH_ESP32 +) + +30  + #IO_REG_TYPE + +ut32_t + + + ) + +31  + #IO_REG_MASK_ATTR + + + ) + +33 #i +defed +( +ARDUINO_ARCH_STM32 +) + +34  + #IO_REG_TYPE + +ut32_t + + + ) + +36 #i +defed +( +__SAMD21G18A__ +) + +37  + #IO_REG_TYPE + +ut32_t + + + ) + +39 #i +defed +( +__ASR6501__ +) + +40  + #IO_REG_TYPE + +ut32_t + + + ) + +42 #i +defed +( +RBL_NRF51822 +) + +43  + #IO_REG_TYPE + +ut32_t + + + ) + +45 #i +defed +( +__c__ +) + +46  + #IO_REG_TYPE + +ut32_t + + + ) + +48 #i +defed +( +__riscv +) + +49  + #IO_REG_TYPE + +ut32_t + + + ) + +52  + #IO_REG_TYPE +  + + ) + + @lib/framework/APSettingsService.cpp + +1  + ~ + +3 + gAPStgsSvi +:: + $APStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +) : + +4 + `_hpEndpot +( +APStgs +:: +ad +, APStgs:: +upde +, +this +, +rv +, +AP_SETTINGS_SERVICE_PATH +, +curyMag +), + +5 + `_fsPsi +( +APStgs +:: +ad +, APStgs:: +upde +, +this +, +fs +, +AP_SETTINGS_FILE +), + +6 + `_dnsSv +( +nuαr +), + +7 + `_ϡMaged +(0), + +8 + $_cfiguAp +( +l +) { + +9 + `addUpdeHdr +([&](cڡ +Sg +& +igId +{ + `cfiguAP +(); }, +l +); + +10 + } +} + +12  + gAPStgsSvi +:: + $beg +() { + +13 +_fsPsi +. + `adFromFS +(); + +14 + `cfiguAP +(); + +15 + } +} + +17  + gAPStgsSvi +:: + $cfiguAP +() { + +18 +_ϡMaged + = +uuid +:: + `g_uime +(- +MANAGE_NETWORK_DELAY +; + +19 +_cfiguAp + = +ue +; + +20 + } +} + +22  + gAPStgsSvi +:: + $lo +() { + +23  +cutMlis + = +uuid +:: + `g_uime +(); + +24  +mageEpd + = ()( +cutMlis + - +_ϡMaged +); + +25 i( +mageEpd + > +MANAGE_NETWORK_DELAY +) { + +26 +_ϡMaged + = +cutMlis +; + +27 + `mageAP +(); + +29 + `hdDNS +(); + +30 + } +} + +32  + gAPStgsSvi +:: + $mageAP +() { + +33 +WiFiMode_t + +cutWiFiMode + = +WiFi +. + `gMode +(); + +34 i( +_e +. +ovisiMode + = +AP_MODE_ALWAYS + || + +35 ( +_e +. +ovisiMode + = +AP_MODE_DISCONNECTED + && +WiFi +. + `us +(! +WL_CONNECTED +)) { + +36 i( +_cfiguAp + || +cutWiFiMode + = +WIFI_OFF + || cutWiFiMod= +WIFI_STA +) { + +37 + `tAP +(); + +39 } i(( +cutWiFiMode + = +WIFI_AP + || cutWiFiMod= +WIFI_AP_STA +) && + +40 ( +_cfiguAp + || ! +WiFi +. + `soAPgStiNum +())) { + +41 + `AP +(); + +43 +_cfiguAp + = +l +; + +44 + } +} + +46  + gAPStgsSvi +:: + $tAP +() { + +48 +WiFi +. + `soAPCfig +( +_e +. +lolIP +, _e. +gewayIP +, _e. +subtMask +); + +49 +WiFi +. + `soAP +( +_e +. +ssid +. + `c_r +(), _e. +sswd +.c_str()); + +50 i(! +_dnsSv +) { + +51 +IPAddss + +Ip + = +WiFi +. + `soAPIP +(); + +54 +_dnsSv + = +w + +DNSSv +; + +55 +_dnsSv +-> + `t +( +DNS_PORT +, "*", +Ip +); + +57 + } +} + +59  + gAPStgsSvi +:: + $AP +() { + +60 i( +_dnsSv +) { + +62 +_dnsSv +-> + ` +(); + +63 +de + +_dnsSv +; + +64 +_dnsSv + = +nuαr +; + +67 +WiFi +. + `soAPdisc +( +ue +); + +68 + } +} + +70  + gAPStgsSvi +:: + $hdDNS +() { + +71 i( +_dnsSv +) { + +72 +_dnsSv +-> + `ossNextReque +(); + +74 + } +} + +76 +APNwkStus + + gAPStgsSvi +:: + $gAPNwkStus +() { + +77 +WiFiMode_t + +cutWiFiMode + = +WiFi +. + `gMode +(); + +78 +bo + +Aive + = +cutWiFiMode + = +WIFI_AP + || cutWiFiMod= +WIFI_AP_STA +; + +79 i( +Aive + && +_e +. +ovisiMode + ! +AP_MODE_ALWAYS + && +WiFi +. + `us +(= +WL_CONNECTED +) { + +80  +APNwkStus +:: +LINGERING +; + +82  +Aive + ? +APNwkStus +:: +ACTIVE + : APNwkStus:: +INACTIVE +; + +83 + } +} + + @lib/framework/APSettingsService.h + +1 #ide +APStgsCfig_h + + +2  + #APStgsCfig_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +13  + #MANAGE_NETWORK_DELAY + 10000 + + ) + +15  + #AP_MODE_ALWAYS + 0 + + ) + +16  + #AP_MODE_DISCONNECTED + 1 + + ) + +17  + #AP_MODE_NEVER + 2 + + ) + +19  + #DNS_PORT + 53 + + ) + +21 #ide +FACTORY_AP_PROVISION_MODE + + +22  + #FACTORY_AP_PROVISION_MODE + +AP_MODE_DISCONNECTED + + + ) + +25 #ide +FACTORY_AP_SSID + + +26  + #FACTORY_AP_SSID + "ems-e" + + ) + +29 #ide +FACTORY_AP_PASSWORD + + +30  + #FACTORY_AP_PASSWORD + "e-a" + + ) + +33 #ide +FACTORY_AP_LOCAL_IP + + +34  + #FACTORY_AP_LOCAL_IP + "192.168.4.1" + + ) + +37 #ide +FACTORY_AP_GATEWAY_IP + + +38  + #FACTORY_AP_GATEWAY_IP + "192.168.4.1" + + ) + +41 #ide +FACTORY_AP_SUBNET_MASK + + +42  + #FACTORY_AP_SUBNET_MASK + "255.255.255.0" + + ) + +45  + #AP_SETTINGS_FILE + "/cfig/Stgs.js" + + ) + +46  + #AP_SETTINGS_SERVICE_PATH + "//Stgs" + + ) + +48 + eAPNwkStus + { + mACTIVE + = 0, + mINACTIVE +, + mLINGERING + }; + +50 as + cAPStgs + { + +51 + mpublic +: + +52 +ut8_t + +ovisiMode +; + +53 +Sg + + mssid +; + +54 +Sg + + msswd +; + +55 +IPAddss + + mlolIP +; + +56 +IPAddss + + mgewayIP +; + +57 +IPAddss + + msubtMask +; + +59 +bo + + mݔ +==(cڡ +APStgs +& +gs +) const { + +60  +ovisiMode + = +gs +.ovisiMod&& +ssid + =𣉚gs.ssid && +sswd + == settings.password && + +61 +lolIP + = +gs +.lolIP && +gewayIP + =𣉚gs.gewayIP && +subtMask + == settings.subnetMask; + +64  + $ad +( +APStgs +& +gs +, +JsObje +& +ro +) { + +65 +ro +["ovisi_mode"] = +gs +. +ovisiMode +; + +66 +ro +["ssid"] = +gs +. +ssid +; + +67 +ro +["sswd"] = +gs +. +sswd +; + +68 +ro +["lol_"] = +gs +. +lolIP +. + `toSg +(); + +69 +ro +["geway_"] = +gs +. +gewayIP +. + `toSg +(); + +70 +ro +["subt_mask"] = +gs +. +subtMask +. + `toSg +(); + +71 + } +} + +73  +SUpdeResu + + $upde +( +JsObje +& +ro +, +APStgs +& +gs +) { + +74 +APStgs + +wStgs + = {}; + +75 +wStgs +. +ovisiMode + = +ro +["ovisi_mode"] | +FACTORY_AP_PROVISION_MODE +; + +76  +gs +. +ovisiMode +) { + +77  +AP_MODE_ALWAYS +: + +78  +AP_MODE_DISCONNECTED +: + +79  +AP_MODE_NEVER +: + +82 +wStgs +. +ovisiMode + = +AP_MODE_ALWAYS +; + +84 +wStgs +. +ssid + = +ro +["ssid"] | +FACTORY_AP_SSID +; + +85 +wStgs +. +sswd + = +ro +["sswd"] | +FACTORY_AP_PASSWORD +; + +87 +JsUts +:: + `adIP +( +ro +, "lol_", +wStgs +. +lolIP +, +FACTORY_AP_LOCAL_IP +); + +88 +JsUts +:: + `adIP +( +ro +, "geway_", +wStgs +. +gewayIP +, +FACTORY_AP_GATEWAY_IP +); + +89 +JsUts +:: + `adIP +( +ro +, "subt_mask", +wStgs +. +subtMask +, +FACTORY_AP_SUBNET_MASK +); + +91 i( +wStgs + = +gs +) { + +92  +SUpdeResu +:: +UNCHANGED +; + +94 +gs + = +wStgs +; + +95  +SUpdeResu +:: +CHANGED +; + +96 + } +} + +99 +ass + + gAPStgsSvi + : +public + +SfulSvi +< +APStgs +> { + +100 +public +: + +101 +APStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +); + +103  +beg +(); + +104  +lo +(); + +105 +APNwkStus + +gAPNwkStus +(); + +107 + give +: + +108 +HpEndpot +< +APStgs +> +_hpEndpot +; + +109 + gFSPsi +< + gAPStgs +> + g_fsPsi +; + +112 +DNSSv +* + g_dnsSv +; + +115 vީ + g_ϡMaged +; + +116 vީ +boޗn + + g_cfiguAp +; + +118  +cfiguAP +(); + +119  +mageAP +(); + +120  +tAP +(); + +121  +AP +(); + +122  +hdDNS +(); + + @lib/framework/APStatus.cpp + +1  + ~ + +3 + gAPStus +:: + $APStus +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +, +APStgsSvi +* +StgsSvi +) : + +4 + $_StgsSvi +( +StgsSvi +) { + +5 +rv +-> + ` +( +AP_STATUS_SERVICE_PATH +, + +6 +HTTP_GET +, + +7 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +APStus +:: +Stus +, +this +, std:: +ahds +:: +_1 +), + +8 +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +9 + } +} + +11  + gAPStus +:: + $Stus +( +AsyncWebSvReque +* +que +) { + +12 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_AP_STATUS_SIZE +); + +13 +JsObje + +ro + = +ڣ +-> + `gRo +(); + +15 +ro +["us"] = +_StgsSvi +-> + `gAPNwkStus +(); + +16 +ro +["_addss"] = +WiFi +. + `soAPIP +(). + `toSg +(); + +17 +ro +["mac_addss"] = +WiFi +. + `soAPmacAddss +(); + +18 +ro +["i_num"] = +WiFi +. + `soAPgStiNum +(); + +20 +ڣ +-> + `tLgth +(); + +21 +que +-> + `nd +( +ڣ +); + +22 + } +} + + @lib/framework/APStatus.h + +1 #ide +APStus_h + + +2  + #APStus_h + + + ) + +4 #ifde +ESP32 + + +5  + ~ + +6  + ~ + +7 #i +defed +( +ESP8266 +) + +8  + ~ + +9  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +17  + ~ + +19  + #MAX_AP_STATUS_SIZE + 1024 + + ) + +20  + #AP_STATUS_SERVICE_PATH + "//Stus" + + ) + +22 as + cAPStus + { + +23 + mpublic +: + +24 +APStus +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +, +APStgsSvi +* +StgsSvi +); + +26 + mive +: + +27 +APStgsSvi +* +_StgsSvi +; + +28  +Stus +( +AsyncWebSvReque +* +que +); + + @lib/framework/ArduinoJsonJWT.cpp + +1  + ~"ArduoJsJWT.h +" + +3 + gArduoJsJWT +:: + $ArduoJsJWT +( +Sg + + +: + $_ +( + +) { + +4 + } +} + +6  +ArduoJsJWT +:: + $tSe +( +Sg + + +) { + +7 +_ + = + +; + +8 + } +} + +10 +Sg + + gArduoJsJWT +:: + $gSe +() { + +11  +_ +; + +12 + } +} + +21 +Sg + + gArduoJsJWT +:: + $sign +( +Sg +& +yld +) { + +22  +hmacResu +[32]; + +24 #ifde +ESP32 + + +25 +mbeds_md_cڋxt_t + +x +; + +26 +mbeds_md_ty_t + +md_ty + = +MBEDTLS_MD_SHA256 +; + +27 + `mbeds_md_ +(& +x +); + +28 + `mbeds_md_tup +(& +x +, + `mbeds_md_fo_om_ty +( +md_ty +), 1); + +29 + `mbeds_md_hmac_ts +(& +x +, (*) +_ +. + `c_r +(), _. + `ngth +()); + +30 + `mbeds_md_hmac_upde +(& +x +, (*) +yld +. + `c_r +(),ayld. + `ngth +()); + +31 + `mbeds_md_hmac_fish +(& +x +, +hmacResu +); + +32 + `mbeds_md_ +(& +x +); + +33 #i + `defed +( +ESP8266 +) + +34 +br_hmac_key_cڋxt + +keyCtx +; + +35 + `br_hmac_key_ +(& +keyCtx +, & +br_sha256_vb +, +_ +. + `c_r +(), _. + `ngth +()); + +36 +br_hmac_cڋxt + +hmacCtx +; + +37 + `br_hmac_ +(& +hmacCtx +, & +keyCtx +, 0); + +38 + `br_hmac_upde +(& +hmacCtx +, +yld +. + `c_r +(),ayld. + `ngth +()); + +39 + `br_hmac_out +(& +hmacCtx +, +hmacResu +); + +42  + `code +((*) +hmacResu +, 32); + +43 + } +} + +45 +Sg + + gArduoJsJWT +:: + $budJWT +( +JsObje +& +yld +) { + +47 +Sg + +jwt +; + +48 + `rlizeJs +( +yld +, +jwt +); + +49 +jwt + = + `code +(jwt. + `c_r +(), jwt. + `ngth +()); + +52 +jwt + = +JWT_HEADER + + '.' + jwt; + +55 +jwt + +'.' + + `sign +(jwt); + +57  +jwt +; + +58 + } +} + +60  + gArduoJsJWT +:: + $rJWT +( +Sg + +jwt +, +JsDocumt +& +jsDocumt +) { + +62 +jsDocumt +. + `r +(); + +65 i(! +jwt +. + `tsWh +( +JWT_HEADER +|| jwt. + `dexOf +('.'! +JWT_HEADER_SIZE +) { + +70  +sigtuDimIndex + = +jwt +. + `ϡIndexOf +('.'); + +71 i( +sigtuDimIndex + = +JWT_HEADER_SIZE +) { + +76 +Sg + +sigtu + = +jwt +. + `subrg +( +sigtuDimIndex + + 1); + +77 +jwt + = jwt. + `subrg +(0, +sigtuDimIndex +); + +78 i( + `sign +( +jwt +! +sigtu +) { + +83 +jwt + = jwt. + `subrg +( +JWT_HEADER_SIZE + + 1); + +84 +jwt + = + `decode +(jwt); + +87 +DerliziE + +r + = + `derlizeJs +( +jsDocumt +, +jwt +); + +88 i( +r + ! +DerliziE +:: +Ok + || ! +jsDocumt +. +is +< +JsObje +>()) { + +89 +jsDocumt +. + `r +(); + +91 + } +} + +93 +Sg + + gArduoJsJWT +:: + $code +(cڡ * +cr +,  +putL +) { + +95 +ba64_codee + +_e +; + +96 #ifde +ESP32 + + +97 + `ba64__codee +(& +_e +); + +98 +size_t + +codedLgth + = + `ba64_code_exed_n +( +putL +) + 1; + +99 #i + `defed +( +ESP8266 +) + +100 + `ba64__codee_newles +(& +_e +); + +101 +size_t + +codedLgth + = + `ba64_code_exed_n_newles +( +putL +) + 1; + +104 * +bufr + = (*) + `mloc +( +codedLgth + * ()); + +105 i( +bufr + = +nuαr +) { + +110  +n + = + `ba64_code_block +( +cr +, +putL +, & +bufr +[0], & +_e +); + +111 +n + + + `ba64_code_blockd +(& +bufr +[n], & +_e +); + +112 +bufr +[ +n +] = 0; + +115 +Sg + +vue + = + `Sg +( +bufr +); + +116 + ` +( +bufr +); + +117 +bufr + = +nuαr +; + +120  +vue +. + `ngth +(> 0 && vue. + `chAt +(value.length() - 1) == '=') { + +121 +vue +. + `move +(vue. + `ngth +() - 1); + +123 +vue +. + `a +('+', '-'); + +124 +vue +. + `a +('/', '_'); + +127  +vue +; + +128 + } +} + +130 +Sg + + gArduoJsJWT +:: + $decode +( +Sg + +vue +) { + +132 +vue +. + `a +('-', '+'); + +133 +vue +. + `a +('_', '/'); + +136  +bufr +[ + `ba64_decode_exed_n +( +vue +. + `ngth +()) + 1]; + +139  +n + = + `ba64_decode_chs +( +vue +. + `c_r +(), vue. + `ngth +(), & +bufr +[0]); + +140 +bufr +[ +n +] = 0; + +143  + `Sg +( +bufr +); + +144 + } +} + + @lib/framework/ArduinoJsonJWT.h + +1 #ide +ArduoJsJWT_H + + +2  + #ArduoJsJWT_H + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +9 #ifde +ESP32 + + +10  + ~ + +11 #i +defed +( +ESP8266 +) + +12  + ~ + +15 as + cArduoJsJWT + { + +16 + mive +: + +17 +Sg + +_ +; + +19 cڡ +Sg + + mJWT_HEADER + = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"; + +20 cڡ  + mJWT_HEADER_SIZE + = +JWT_HEADER +. +ngth +(); + +22 +Sg + +sign +(Sg& +vue +); + +24  +Sg + +code +(cڡ * +cr +,  +n +); + +25  +Sg + +decode +(Sg +vue +); + +27 + mpublic +: + +28 +ArduoJsJWT +( +Sg + + +); + +30  +tSe +( +Sg + + +); + +31 +Sg + +gSe +(); + +33 +Sg + +budJWT +( +JsObje +& +yld +); + +34  +rJWT +( +Sg + +jwt +, +JsDocumt +& +jsDocumt +); + + @lib/framework/AuthenticationService.cpp + +1  + ~ + +3 #i +FT_ENABLED +( +FT_SECURITY +) + +5 + gAuthtitiSvi +:: + $AuthtitiSvi +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +) : + +6 + `_curyMag +( +curyMag +), + +7 + `_signInHdr +( +SIGN_IN_PATH +, + +8 +d +:: + $bd +(& +AuthtitiSvi +:: +signIn +, +this +, +d +:: +ahds +:: +_1 +, std::ahds:: +_2 +)) { + +9 +rv +-> + ` +( +VERIFY_AUTHORIZATION_PATH +, + +10 +HTTP_GET +, + +11 +d +:: + `bd +(& +AuthtitiSvi +:: +vifyAuthizi +, +this +, std:: +ahds +:: +_1 +)); + +12 +_signInHdr +. + `tMhod +( +HTTP_POST +); + +13 +_signInHdr +. + `tMaxCڋLgth +( +MAX_AUTHENTICATION_SIZE +); + +14 +rv +-> + `addHdr +(& +_signInHdr +); + +15 + } +} + +20  + gAuthtitiSvi +:: + $vifyAuthizi +( +AsyncWebSvReque +* +que +) { + +21 +Authtiti + +authtiti + = +_curyMag +-> + `authtiReque +( +que +); + +22 +que +-> + `nd +( +authtiti +. +authtid + ? 200 : 401); + +23 + } +} + +29  + gAuthtitiSvi +:: + $signIn +( +AsyncWebSvReque +* +que +, +JsV +& +js +) { + +30 i( +js +. +is +< +JsObje +>()) { + +31 +Sg + +uame + = +js +["username"]; + +32 +Sg + +sswd + = +js +["password"]; + +33 +Authtiti + +authtiti + = +_curyMag +-> + `authti +( +uame +, +sswd +); + +34 i( +authtiti +. +authtid +) { + +35 +Ur +* +ur + = +authtiti +.user; + +36 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_AUTHENTICATION_SIZE +); + +37 +JsObje + +jsObje + = +ڣ +-> + `gRo +(); + +38 +jsObje +["acss_tok"] = +_curyMag +-> + `geJWT +( +ur +); + +39 +ڣ +-> + `tLgth +(); + +40 +que +-> + `nd +( +ڣ +); + +44 +AsyncWebSvReڣ +* +ڣ + = +que +-> + `begReڣ +(401); + +45 +que +-> + `nd +( +ڣ +); + +46 + } +} + + @lib/framework/AuthenticationService.h + +1 #ide +AuthtitiSvi_H_ + + +2  + #AuthtitiSvi_H_ + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +9  + #VERIFY_AUTHORIZATION_PATH + "//vifyAuthizi" + + ) + +10  + #SIGN_IN_PATH + "//signIn" + + ) + +12  + #MAX_AUTHENTICATION_SIZE + 256 + + ) + +14 #i +FT_ENABLED +( +FT_SECURITY +) + +16 as + cAuthtitiSvi + { + +17 + mpublic +: + +18 +AuthtitiSvi +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +); + +20 + mive +: + +21 +SecuryMag +* +_curyMag +; + +22 +AsyncClbackJsWebHdr + + m_signInHdr +; + +25  +signIn +( +AsyncWebSvReque +* +que +, +JsV +& +js +); + +26  +vifyAuthizi +( +AsyncWebSvReque +* +que +); + + @lib/framework/ESP8266React.cpp + +1  + ~ + +3 + gESP8266R +:: + $ESP8266R +( +AsyncWebSv + * +rv +, +FS + * +fs +) + +4 : + `_uSvi +( +rv +) + +5 , + `_curyStgsSvi +( +rv +, +fs +) + +6 , + `_wifiStgsSvi +( +rv +, +fs +, & +_curyStgsSvi +) + +7 , + `_wifiS” +( +rv +, & +_curyStgsSvi +) + +8 , + `_wifiStus +( +rv +, & +_curyStgsSvi +) + +9 , + `_StgsSvi +( +rv +, +fs +, & +_curyStgsSvi +) + +10 , + `_Stus +( +rv +, & +_curyStgsSvi +, & +_StgsSvi +) + +12 #i + `FT_ENABLED +( +FT_NTP +) + +13 + `_pStgsSvi +( +rv +, +fs +, & +_curyStgsSvi +) + +14 , + `_pStus +( +rv +, & +_curyStgsSvi +) + +17 #i + `FT_ENABLED +( +FT_OTA +) + +18 + `_aStgsSvi +( +rv +, +fs +, & +_curyStgsSvi +) + +21 #i + `FT_ENABLED +( +FT_UPLOAD_FIRMWARE +) + +22 + `_udFmweSvi +( +rv +, & +_curyStgsSvi +) + +25 #i + `FT_ENABLED +( +FT_MQTT +) + +26 + `_mqStgsSvi +( +rv +, +fs +, & +_curyStgsSvi +) + +27 , + `_mqStus +( +rv +, & +_mqStgsSvi +, & +_curyStgsSvi +) + +30 #i + `FT_ENABLED +( +FT_SECURITY +) + +31 + `_authtitiSvi +( +rv +, & +_curyStgsSvi +) + +34 + `_tSvi +( +rv +, & +_curyStgsSvi +) + +35 , + `_yRetSvi +( +rv +, +fs +, & +_curyStgsSvi +) + +36 , + $_syemStus +( +rv +, & +_curyStgsSvi +) { + +37 #ifde +PROGMEM_WWW + + +39 +WWWDa +:: + `giRous +([ +rv +, +this +](cڡ +Sg + & +uri +, cڡ Sg & +cڋTy +, cڡ +ut8_t + * +cڋ +, +size_t + +n +) { + +40 +ArRequeHdrFuni + +queHdr + = [ +cڋTy +, +cڋ +, +n +]( +AsyncWebSvReque + * +que +) { + +41 +AsyncWebSvReڣ + * +ڣ + = +que +-> + `begReڣ_P +(200, +cڋTy +, +cڋ +, +n +); + +42 +ڣ +-> + `addHd +("Content-Encoding", "gzip"); + +43 +que +-> + `nd +( +ڣ +); + +45 +rv +-> + ` +( +uri +. + `c_r +(), +HTTP_GET +, +queHdr +); + +48 i( +uri +. + `equs +("/index.html")) { + +49 +rv +-> + `NFound +([ +queHdr +]( +AsyncWebSvReque + * +que +) { + +50 i( +que +-> + `mhod +(= +HTTP_GET +) { + +51 + `queHdr +( +que +); + +52 } i( +que +-> + `mhod +(= +HTTP_OPTIONS +) { + +53 +que +-> + `nd +(200); + +55 +que +-> + `nd +(404); + +62 +rv +-> + `rveStic +("/js/", * +fs +, "/www/js/"); + +63 +rv +-> + `rveStic +("/css/", * +fs +, "/www/css/"); + +64 +rv +-> + `rveStic +("/fts/", * +fs +, "/www/fonts/"); + +65 +rv +-> + `rveStic +("/p/", * +fs +, "/www/app/"); + +66 +rv +-> + `rveStic +("/vic.ico", * +fs +, "/www/favicon.ico"); + +69 +rv +-> + `NFound +([]( +AsyncWebSvReque + * +que +) { + +70 i( +que +-> + `mhod +(= +HTTP_GET +) { + +71 #ifde +ESP32 + + +72 +que +-> + `nd +( +SPIFFS +, "/www/index.html"); + +74 +que +-> + `nd +( +LeFS +, "/www/index.html"); + +77 } i( +que +-> + `mhod +(= +HTTP_OPTIONS +) { + +78 +que +-> + `nd +(200); + +80 +que +-> + `nd +(404); + +86 #i + `defed +( +ENABLE_CORS +) + +87 +DeuHds +:: + `In +(). + `addHd +("Acss-Cڌ-Aow-Orig", +CORS_ORIGIN +); + +88 +DeuHds +:: + `In +(). + `addHd +("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization"); + +89 +DeuHds +:: + `In +(). + `addHd +("Access-Control-Allow-Credentials", "true"); + +91 + } +} + +93  + gESP8266R +:: + $beg +() { + +94 +_wifiStgsSvi +. + `beg +(); + +95 +_StgsSvi +. + `beg +(); + +96 #i + `FT_ENABLED +( +FT_NTP +) + +97 +_pStgsSvi +. + `beg +(); + +99 #i + `FT_ENABLED +( +FT_OTA +) + +100 +_aStgsSvi +. + `beg +(); + +102 #i + `FT_ENABLED +( +FT_MQTT +) + +103 +_mqStgsSvi +. + `beg +(); + +105 #i + `FT_ENABLED +( +FT_SECURITY +) + +106 +_curyStgsSvi +. + `beg +(); + +108 + } +} + +110  + gESP8266R +:: + $lo +() { + +111 +_wifiStgsSvi +. + `lo +(); + +112 +_StgsSvi +. + `lo +(); + +113 #i + `FT_ENABLED +( +FT_OTA +) + +114 +_aStgsSvi +. + `lo +(); + +116 #i + `FT_ENABLED +( +FT_MQTT +) + +117 +_mqStgsSvi +. + `lo +(); + +119 + } +} + + @lib/framework/ESP8266React.h + +1 #ide +ESP8266R_h + + +2  + #ESP8266R_h + + + ) + +4  + ~ + +6 #ifde +ESP32 + + +7  + ~ + +8  + ~ + +9 #i +defed +( +ESP8266 +) + +10  + ~ + +11  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +21  + ~ + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +32 #ifde +PROGMEM_WWW + + +33  + ~ + +36 as + cESP8266R + { + +37 + mpublic +: + +38 +ESP8266R +( +AsyncWebSv +* +rv +, +FS +* +fs +); + +40  +beg +(); + +41  +lo +(); + +43 +SecuryMag +* + $gSecuryMag +() { + +44  & +_curyStgsSvi +; + +47 #i + $FT_ENABLED +( +FT_SECURITY +) + +48 +SfulSvi +< +SecuryStgs +>* + $gSecuryStgsSvi +() { + +49  & +_curyStgsSvi +; + +50 + } +} + +53 + gSfulSvi +< + gWiFiStgs +>* + $gWiFiStgsSvi +() { + +54  & +_wifiStgsSvi +; + +55 + } +} + +57 + gSfulSvi +< + gAPStgs +>* + $gAPStgsSvi +() { + +58  & +_StgsSvi +; + +59 + } +} + +61 #i + $FT_ENABLED +( +FT_NTP +) + +62 +SfulSvi +< +NTPStgs +>* + $gNTPStgsSvi +() { + +63  & +_pStgsSvi +; + +64 + } +} + +67 #i + $FT_ENABLED +( +FT_OTA +) + +68 +SfulSvi +< +OTAStgs +>* + $gOTAStgsSvi +() { + +69  & +_aStgsSvi +; + +70 + } +} + +73 #i + $FT_ENABLED +( +FT_MQTT +) + +74 +SfulSvi +< +MqStgs +>* + $gMqStgsSvi +() { + +75  & +_mqStgsSvi +; + +76 + } +} + +78 +AsyncMqCl +* + $gMqCl +() { + +79  +_mqStgsSvi +. + `gMqCl +(); + +80 + } +} + +83  + $yRet +() { + +84 +_yRetSvi +. + `yRet +(); + +85 + } +} + +87 + give +: + +88 +FtusSvi + +_uSvi +; + +89 +SecuryStgsSvi + + g_curyStgsSvi +; + +90 +WiFiStgsSvi + + g_wifiStgsSvi +; + +91 +WiFiS” + + g_wifiS” +; + +92 +WiFiStus + + g_wifiStus +; + +93 +APStgsSvi + + g_StgsSvi +; + +94 +APStus + + g_Stus +; + +95 #i + $FT_ENABLED +( +FT_NTP +) + +96 +NTPStgsSvi + +_pStgsSvi +; + +97 +NTPStus + +_pStus +; + +99 #i + $FT_ENABLED +( +FT_OTA +) + +100 +OTAStgsSvi + +_aStgsSvi +; + +102 #i + $FT_ENABLED +( +FT_UPLOAD_FIRMWARE +) + +103 +UdFmweSvi + +_udFmweSvi +; + +105 #i + $FT_ENABLED +( +FT_MQTT +) + +106 +MqStgsSvi + +_mqStgsSvi +; + +107 +MqStus + +_mqStus +; + +109 #i + $FT_ENABLED +( +FT_SECURITY +) + +110 +AuthtitiSvi + +_authtitiSvi +; + +112 +RetSvi + +_tSvi +; + +113 +FayRetSvi + +_yRetSvi +; + +114 +SyemStus + +_syemStus +; + +115 + } +}; + + @lib/framework/ESPUtils.h + +1 #ide +ESPUts_h + + +2  + #ESPUts_h + + + ) + +4  + ~ + +6 as + cESPUts + { + +7 + mpublic +: + +8  +Sg + +deuDeviVue +(Sg +efix + = "") { + +9 #ifde +ESP32 + + +10  +efix + + +Sg +(() +ESP +. +gEfuMac +(), +HEX +); + +11 #i +defed +( +ESP8266 +) + +12  + mefix + + +Sg +( +ESP +. +gChId +(), +HEX +); + + @lib/framework/FSPersistence.h + +1 #ide +FSPsi_h + + +2  + #FSPsi_h + + + ) + +4  + ~ + +5  + ~ + +7 + gme + < +ass + + gT +> + +8 as + cFSPsi + { + +9 + mpublic +: + +10 +FSPsi +( +JsSRd +< +T +> +eRd +, + +11 +JsSUpd +< +T +> +eUpd +, + +12 +SfulSvi +< +T +> * +efulSvi +, + +13 +FS + * +fs +, + +14 cڡ * +fePh +, + +15 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) + +16 : +_eRd +( +eRd +) + +17 , +_eUpd +( +eUpd +) + +18 , +_efulSvi +( +efulSvi +) + +19 , +_fs +( +fs +) + +20 , +_fePh +( +fePh +) + +21 , +_bufrSize +( +bufrSize +) + +22 , + $_updeHdrId +(0) { + +23 + `abUpdeHdr +(); + +26  + $adFromFS +() { + +27 +Fe + +gsFe + = +_fs +-> + `ݒ +( +_fePh +, "r"); + +29 i( +gsFe +) { + +30 +DymicJsDocumt + +jsDocumt + = + `DymicJsDocumt +( +_bufrSize +); + +31 +DerliziE + +r + = + `derlizeJs +( +jsDocumt +, +gsFe +); + +32 i( +r + = +DerliziE +:: +Ok + && +jsDocumt +. +is +< +JsObje +>()) { + +33 +JsObje + +jsObje + = +jsDocumt +. +as +(); + +40 +_efulSvi +-> + `updeWhoutPragi +( +jsObje +, +_eUpd +); + +41 +gsFe +. + `o +(); + +44 +gsFe +. + `o +(); + +49 + `yDeus +(); + +50 + } +} + +52 +bo + + $wreToFS +() { + +54 +DymicJsDocumt + +jsDocumt + = + `DymicJsDocumt +( +_bufrSize +); + +55 +JsObje + +jsObje + = +jsDocumt +. +to +(); + +56 +_efulSvi +-> + `ad +( +jsObje +, +_eRd +); + +59 +Fe + +gsFe + = +_fs +-> + `ݒ +( +_fePh +, "w"); + +62 i(! +gsFe +) { + +63  +l +; + +67 #i + `defed +( +EMSESP_DEBUG +) + +68 +Sl +. + `tf +("WrFe: %s: ", +_fePh +); + +69 + `rlizeJs +( +jsDocumt +, +Sl +); + +70 +Sl +. + `n +(); + +74 + `rlizeJs +( +jsDocumt +, +gsFe +); + +75 +gsFe +. + `o +(); + +76  +ue +; + +77 + } +} + +79  + $dibUpdeHdr +() { + +80 i( +_updeHdrId +) { + +81 +_efulSvi +-> + `moveUpdeHdr +( +_updeHdrId +); + +82 +_updeHdrId + = 0; + +84 + } +} + +86  + $abUpdeHdr +() { + +87 i(! +_updeHdrId +) { + +88 +_updeHdrId + = +_efulSvi +-> + `addUpdeHdr +([&](cڡ +Sg + & +igId +{ + `wreToFS +(); }); + +90 + } +} + +92 + give +: + +93 +JsSRd +< +T +> +_eRd +; + +94 + gJsSUpd +< + gT +> + g_eUpd +; + +95 + gSfulSvi +< + gT +> * + g_efulSvi +; + +96 +FS + * + g_fs +; + +97 cڡ * + g_fePh +; + +98 +size_t + + g_bufrSize +; + +99 +upde_hdr_id_t + + g_updeHdrId +; + +101 + geed +: + +104 +vtu +  + $yDeus +() { + +105 +DymicJsDocumt + +jsDocumt + = + `DymicJsDocumt +( +_bufrSize +); + +106 +JsObje + +jsObje + = +jsDocumt +. +as +(); + +107 +_efulSvi +-> + `updeWhoutPragi +( +jsObje +, +_eUpd +); + +108 + } +} + + @lib/framework/FactoryResetService.cpp + +1  + ~ + +3 +usg + +mea + + gd +:: +ahds +; + +5 + gFayRetSvi +:: + $FayRetSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +: + $fs +( +fs +) { + +6 +rv +-> + ` +( +FACTORY_RESET_SERVICE_PATH +, + +7 +HTTP_POST +, + +8 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +FayRetSvi +:: +hdReque +, +this +, +_1 +), + +9 +AuthtitiPdis +:: +IS_ADMIN +)); + +10 + } +} + +12  + gFayRetSvi +:: + $hdReque +( +AsyncWebSvReque +* +que +) { + +13 +que +-> + `Disc +( +d +:: + `bd +(& +FayRetSvi +:: +yRet +, +this +)); + +14 +que +-> + `nd +(200); + +15 + } +} + +20  + gFayRetSvi +:: + $yRet +() { + +21 #ifde +ESP32 + + +22 +Fe + +ro + = +fs +-> + `ݒ +( +FS_CONFIG_DIRECTORY +); + +23 +Fe + +fe +; + +24  +fe + = +ro +. + `ݒNextFe +()) { + +25 +fs +-> + `move +( +fe +. + `me +()); + +27 #i + `defed +( +ESP8266 +) + +28 +D + +cfigDey + = +fs +-> + `ݒD +( +FS_CONFIG_DIRECTORY +); + +29  +cfigDey +. + `xt +()) { + +30 +Sg + +th + = +FS_CONFIG_DIRECTORY +; + +31 +th +. + `ct +("/"); + +32 +th +. + `ct +( +cfigDey +. + `feName +()); + +33 +fs +-> + `move +( +th +); + +36 +RetSvi +:: + `tNow +(); + +37 + } +} + + @lib/framework/FactoryResetService.h + +1 #ide +FayRetSvi_h + + +2  + #FayRetSvi_h + + + ) + +4 #ifde +ESP32 + + +5  + ~ + +6  + ~ + +7 #i +defed +( +ESP8266 +) + +8  + ~ + +9  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +17  + #FS_CONFIG_DIRECTORY + "/cfig" + + ) + +18  + #FACTORY_RESET_SERVICE_PATH + "//yRet" + + ) + +20 as + cFayRetSvi + { + +21 +FS +* + mfs +; + +23 + mpublic +: + +24 +FayRetSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +); + +26  +yRet +(); + +28 + mive +: + +29  +hdReque +( +AsyncWebSvReque +* +que +); + + @lib/framework/Features.h + +1 #ide +Ftus_h + + +2  + #Ftus_h + + + ) + +4  + #FT_ENABLED +( +u + + ) +feature + +7 #ide +FT_PROJECT + + +8  + #FT_PROJECT + 0 + + ) + +12 #ide +FT_SECURITY + + +13  + #FT_SECURITY + 1 + + ) + +17 #ide +FT_MQTT + + +18  + #FT_MQTT + 1 + + ) + +22 #ide +FT_NTP + + +23  + #FT_NTP + 1 + + ) + +27 #ide +FT_OTA + + +28  + #FT_OTA + 1 + + ) + +32 #ide +FT_UPLOAD_FIRMWARE + + +33  + #FT_UPLOAD_FIRMWARE + 0 + + ) + + @lib/framework/FeaturesService.cpp + +1  + ~ + +3 + gFtusSvi +:: + $FtusSvi +( +AsyncWebSv +* +rv +) { + +4 +rv +-> + ` +( +FEATURES_SERVICE_PATH +, +HTTP_GET +, +d +:: + `bd +(& +FtusSvi +:: +us +, +this +, std:: +ahds +:: +_1 +)); + +5 + } +} + +7  + gFtusSvi +:: + $us +( +AsyncWebSvReque +* +que +) { + +8 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_FEATURES_SIZE +); + +9 +JsObje + +ro + = +ڣ +-> + `gRo +(); + +10 #i + `FT_ENABLED +( +FT_PROJECT +) + +11 +ro +["oje"] = +ue +; + +13 +ro +["oje"] = +l +; + +15 #i + `FT_ENABLED +( +FT_SECURITY +) + +16 +ro +["cury"] = +ue +; + +18 +ro +["cury"] = +l +; + +20 #i + `FT_ENABLED +( +FT_MQTT +) + +21 +ro +["mq"] = +ue +; + +23 +ro +["mq"] = +l +; + +25 #i + `FT_ENABLED +( +FT_NTP +) + +26 +ro +["p"] = +ue +; + +28 +ro +["p"] = +l +; + +30 #i + `FT_ENABLED +( +FT_OTA +) + +31 +ro +["a"] = +ue +; + +33 +ro +["a"] = +l +; + +35 #i + `FT_ENABLED +( +FT_UPLOAD_FIRMWARE +) + +36 +ro +["ud_fmwe"] = +ue +; + +38 +ro +["ud_fmwe"] = +l +; + +40 +ڣ +-> + `tLgth +(); + +41 +que +-> + `nd +( +ڣ +); + +42 + } +} + + @lib/framework/FeaturesService.h + +1 #ide +FtusSvi_h + + +2  + #FtusSvi_h + + + ) + +4  + ~ + +6 #ifde +ESP32 + + +7  + ~ + +8  + ~ + +9 #i +defed +( +ESP8266 +) + +10  + ~ + +11  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +18  + #MAX_FEATURES_SIZE + 256 + + ) + +19  + #FEATURES_SERVICE_PATH + "//us" + + ) + +21 as + cFtusSvi + { + +22 + mpublic +: + +23 +FtusSvi +( +AsyncWebSv +* +rv +); + +25 + mive +: + +26  +us +( +AsyncWebSvReque +* +que +); + + @lib/framework/HttpEndpoint.h + +1 #ide +HpEndpot_h + + +2  + #HpEndpot_h + + + ) + +4  + ~ + +6  + ~ + +7  + ~ + +9  + ~ + +10  + ~ + +12  + #HTTP_ENDPOINT_ORIGIN_ID + "hp" + + ) + +14 + gme + < +ass + + gT +> + +15 as + cHpGEndpot + { + +16 + mpublic +: + +17 +HpGEndpot +( +JsSRd +< +T +> +eRd +, + +18 +SfulSvi +< +T +>* +efulSvi +, + +19 +AsyncWebSv +* +rv +, + +20 cڡ +Sg +& +rviPh +, + +21 +SecuryMag +* +curyMag +, + +22 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +23 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +24 +_eRd +( +eRd +), +_efulSvi +( +efulSvi +), + $_bufrSize +( +bufrSize +) { + +25 +rv +-> + ` +( +rviPh +. + `c_r +(), + +26 +HTTP_GET +, + +27 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +HpGEndpot +:: +tchStgs +, +this +, std:: +ahds +:: +_1 +), + +28 +authtitiPdi +)); + +31 + `HpGEndpot +( +JsSRd +< +T +> +eRd +, + +32 +SfulSvi +< +T +>* +efulSvi +, + +33 +AsyncWebSv +* +rv +, + +34 cڡ +Sg +& +rviPh +, + +35 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +36 + `_eRd +( +eRd +), + `_efulSvi +( +efulSvi +), + $_bufrSize +( +bufrSize +) { + +37 +rv +-> + ` +( +rviPh +. + `c_r +(), +HTTP_GET +, +d +:: + `bd +(& +HpGEndpot +:: +tchStgs +, +this +, std:: +ahds +:: +_1 +)); + +38 + } +} + +40 + geed +: + +41 +JsSRd +< +T +> +_eRd +; + +42 + gSfulSvi +< + gT +>* + g_efulSvi +; + +43 +size_t + + g_bufrSize +; + +45  + $tchStgs +( +AsyncWebSvReque +* +que +) { + +46 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +_bufrSize +); + +47 +JsObje + +jsObje + = +ڣ +-> + `gRo +(). +to +(); + +48 +_efulSvi +-> + `ad +( +jsObje +, +_eRd +); + +50 +ڣ +-> + `tLgth +(); + +51 +que +-> + `nd +( +ڣ +); + +52 + } +} + +55 + gme + < +ass + + gT +> + +56 as + cHpPoEndpot + { + +57 + mpublic +: + +58 +HpPoEndpot +( +JsSRd +< +T +> +eRd +, + +59 +JsSUpd +< +T +> +eUpd +, + +60 +SfulSvi +< +T +>* +efulSvi +, + +61 +AsyncWebSv +* +rv +, + +62 cڡ +Sg +& +rviPh +, + +63 +SecuryMag +* +curyMag +, + +64 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +65 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +66 +_eRd +( +eRd +), + +67 +_eUpd +( +eUpd +), + +68 +_efulSvi +( +efulSvi +), + +69 +_updeHdr +( + +70 +rviPh +, + +71 +curyMag +-> +wpClback +( + +72 +d +:: +bd +(& +HpPoEndpot +:: +updeStgs +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), + +73 +authtitiPdi +), + +74 +bufrSize +), + +75 + $_bufrSize +( +bufrSize +) { + +76 +_updeHdr +. + `tMhod +( +HTTP_POST +); + +77 +rv +-> + `addHdr +(& +_updeHdr +); + +80 + `HpPoEndpot +( +JsSRd +< +T +> +eRd +, + +81 +JsSUpd +< +T +> +eUpd +, + +82 +SfulSvi +< +T +>* +efulSvi +, + +83 +AsyncWebSv +* +rv +, + +84 cڡ +Sg +& +rviPh +, + +85 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +86 + `_eRd +( +eRd +), + +87 + `_eUpd +( +eUpd +), + +88 + `_efulSvi +( +efulSvi +), + +89 + `_updeHdr +( +rviPh +, + +90 +d +:: + `bd +(& +HpPoEndpot +:: +updeStgs +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), + +91 +bufrSize +), + +92 + $_bufrSize +( +bufrSize +) { + +93 +_updeHdr +. + `tMhod +( +HTTP_POST +); + +94 +rv +-> + `addHdr +(& +_updeHdr +); + +95 + } +} + +97 + geed +: + +98 +JsSRd +< +T +> +_eRd +; + +99 + gJsSUpd +< + gT +> + g_eUpd +; + +100 + gSfulSvi +< + gT +>* + g_efulSvi +; + +101 +AsyncClbackJsWebHdr + + g_updeHdr +; + +102 +size_t + + g_bufrSize +; + +104  + $updeStgs +( +AsyncWebSvReque +* +que +, +JsV +& +js +) { + +105 i(! +js +. +is +< +JsObje +>()) { + +106 +que +-> + `nd +(400); + +109 +JsObje + +jsObje + = +js +. +as +(); + +110 +SUpdeResu + +outcome + = +_efulSvi +-> + `updeWhoutPragi +( +jsObje +, +_eUpd +); + +111 i( +outcome + = +SUpdeResu +:: +ERROR +) { + +112 +que +-> + `nd +(400); + +115 i( +outcome + = +SUpdeResu +:: +CHANGED +) { + +116 +que +-> + `Disc +([ +this +]({ +_efulSvi +-> + `UpdeHdrs +( +HTTP_ENDPOINT_ORIGIN_ID +); }); + +118 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +_bufrSize +); + +119 +jsObje + = +ڣ +-> + `gRo +(). +to +< +JsObje +>(); + +120 +_efulSvi +-> + `ad +( +jsObje +, +_eRd +); + +121 +ڣ +-> + `tLgth +(); + +122 +que +-> + `nd +( +ڣ +); + +123 + } +} + +126 + gme + < +ass + + gT +> + +127 +ass + + gHpEndpot + : +public + +HpGEndpot +< +T +>,ubli + gHpPoEndpot +< + gT +> { + +128 + gpublic +: + +129 +HpEndpot +( +JsSRd +< +T +> +eRd +, + +130 +JsSUpd +< +T +> +eUpd +, + +131 +SfulSvi +< +T +>* +efulSvi +, + +132 +AsyncWebSv +* +rv +, + +133 cڡ +Sg +& +rviPh +, + +134 +SecuryMag +* +curyMag +, + +135 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +136 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +137 +HpGEndpot +< +T +>( +eRd +, + +138 + gefulSvi +, + +139 + grv +, + +140 + grviPh +, + +141 + gcuryMag +, + +142 + gauthtitiPdi +, + +143 + gbufrSize +), + +144 + gHpPoEndpot +< + gT +>( + geRd +, + +145 + geUpd +, + +146 + gefulSvi +, + +147 + grv +, + +148 + grviPh +, + +149 + gcuryMag +, + +150 + gauthtitiPdi +, + +151 + gbufrSize +) { + +154 +HpEndpot +( +JsSRd +< +T +> +eRd +, + +155 +JsSUpd +< +T +> +eUpd +, + +156 +SfulSvi +< +T +>* +efulSvi +, + +157 +AsyncWebSv +* +rv +, + +158 cڡ +Sg +& +rviPh +, + +159 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +160 +HpGEndpot +< +T +>( +eRd +, + gefulSvi +, + grv +, + grviPh +, + gbufrSize +), + +161 + gHpPoEndpot +< + gT +>( + geRd +, + geUpd +, + gefulSvi +, + grv +, + grviPh +, + gbufrSize +) { + + @lib/framework/JsonUtils.h + +1 #ide +JsUts_h + + +2  + #JsUts_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +8 as + cJsUts + { + +9 + mpublic +: + +10  + $adIP +( +JsObje +& +ro +, cڡ +Sg +& +key +, +IPAddss +& + +, cڡ Sg& +def +) { + +11 +IPAddss + +deuIp + = {}; + +12 i(! +deuIp +. + `omSg +( +def +)) { + +13 +deuIp + = +INADDR_NONE +; + +15 + `adIP +( +ro +, +key +, + +, +deuIp +); + +17  + $adIP +( +JsObje +& +ro +, cڡ +Sg +& +key +, +IPAddss +& + +, cڡ IPAddss& +deuIp + = +INADDR_NONE +) { + +18 i(! +ro +[ +key +]. +is +< +Sg +>(|| ! + +. + `omSg +o[key]. +as +())) { + +19 + + = +deuIp +; + +21 + } +} + +22  + $wreIP +( +JsObje +& +ro +, cڡ +Sg +& +key +, cڡ +IPAddss +& + +) { + +23 i( + + ! +INADDR_NONE +) { + +24 +ro +[ +key +] = + +. + `toSg +(); + +26 + } +} + + @lib/framework/MqttPubSub.h + +1 #ide +MqPubSub_h + + +2  + #MqPubSub_h + + + ) + +4  + ~ + +5  + ~ + +7  + #MQTT_ORIGIN_ID + "mq" + + ) + +9 + gme + < +ass + + gT +> + +10 as + cMqC + { + +11 + meed +: + +12 +SfulSvi +< +T +>* +_efulSvi +; + +13 +AsyncMqCl +* + m_mqCl +; + +14 +size_t + + m_bufrSize +; + +16 +MqC +( +SfulSvi +< +T +>* +efulSvi +, +AsyncMqCl +* +mqCl +, +size_t + +bufrSize +) : + +17 +_efulSvi +( +efulSvi +), +_mqCl +( +mqCl +), + $_bufrSize +( +bufrSize +) { + +18 +_mqCl +-> + `C +( +d +:: + `bd +(& +MqC +:: +C +, +this +)); + +21 +vtu +  + `C +() = 0; + +23 +public +: + +24 +le + +AsyncMqCl +* + $gMqCl +() const { + +25  +_mqCl +; + +26 + } +} + +29 + gme + < +ass + + gT +> + +30 +ass + + gMqPub + : +vtu + +public + +MqC +< +T +> { + +31 +public +: + +32 +MqPub +( +JsSRd +< +T +> +eRd +, + +33 +SfulSvi +< +T +>* +efulSvi +, + +34 +AsyncMqCl +* +mqCl +, + +35 cڡ +Sg +& +pubTic + = "", + +36 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +37 +MqC +< +T +>( +efulSvi +, + gmqCl +, + gbufrSize +), +_eRd +( +eRd +), +_pubTic +( +pubTic +) { + +38 + gMqC +< + gT +>:: +_efulSvi +-> +addUpdeHdr +([&](cڡ +Sg +& +igId +{ +publish +(); }, +l +); + +41  +tPubTic +(cڡ +Sg +& +pubTic +) { + +42 + g_pubTic + = +pubTic +; + +43 +publish +(); + +46 + geed +: + +47 +vtu +  +C +() { + +48 +publish +(); + +51 + give +: + +52 +JsSRd +< +T +> +_eRd +; + +53 +Sg + + g_pubTic +; + +55  +publish +() { + +56 i( + g_pubTic +. +ngth +(> 0 && + gMqC +< + gT +>:: +_mqCl +-> +ced +()) { + +58 +DymicJsDocumt + +js +( +MqC +< +T +>:: +_bufrSize +); + +59 +JsObje + + gjsObje + = +js +. +to +(); + +60 + gMqC +< + gT +>:: +_efulSvi +-> +ad +( +jsObje +, +_eRd +); + +63 +Sg + + gyld +; + +64 +rlizeJs +( +js +, +yld +); + +67 + gMqC +< + gT +>:: +_mqCl +-> +publish +( +_pubTic +. +c_r +(), 0, +l +, +yld +.c_str()); + +72 + gme + < +ass + + gT +> + +73 +ass + + gMqSub + : +vtu + +public + +MqC +< +T +> { + +74 +public +: + +75 +MqSub +( +JsSUpd +< +T +> +eUpd +, + +76 +SfulSvi +< +T +>* +efulSvi +, + +77 +AsyncMqCl +* +mqCl +, + +78 cڡ +Sg +& +subTic + = "", + +79 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +80 +MqC +< +T +>( +efulSvi +, + gmqCl +, + gbufrSize +), +_eUpd +( +eUpd +), +_subTic +( +subTic +) { + +81 + gMqC +< + gT +>:: +_mqCl +-> +Mesge +( +d +:: +bd +(& +MqSub +:: +MqMesge +, + +82 +this +, + +83 +d +:: +ahds +:: +_1 +, + +84 +d +:: +ahds +:: +_2 +, + +85 +d +:: +ahds +:: +_3 +, + +86 +d +:: +ahds +:: +_4 +, + +87 +d +:: +ahds +:: +_5 +, + +88 +d +:: +ahds +:: +_6 +)); + +91  +tSubTic +(cڡ +Sg +& +subTic +) { + +92 i(! + g_subTic +. +equs +( +subTic +)) { + +94 i( + g_subTic +. +ngth +() > 0) { + +95 + gMqC +< + gT +>:: +_mqCl +-> +unsubsibe +( +_subTic +. +c_r +()); + +98 + g_subTic + = +subTic +; + +99 +subsibe +(); + +103 + geed +: + +104 +vtu +  +C +() { + +105 +subsibe +(); + +108 + give +: + +109 +JsSUpd +< +T +> +_eUpd +; + +110 +Sg + + g_subTic +; + +112  +subsibe +() { + +113 i( + g_subTic +. +ngth +() > 0) { + +114 + gMqC +< + gT +>:: +_mqCl +-> +subsibe +( +_subTic +. +c_r +(), 2); + +118  +MqMesge +(* +tic +, + +119 * +yld +, + +120 +AsyncMqClMesgePrݔts + +ݔts +, + +121 +size_t + +n +, + +122 +size_t + +dex +, + +123 +size_t + +tٮ +) { + +125 i( +rcmp +( +_subTic +. +c_r +(), +tic +)) { + +130 +DymicJsDocumt + +js +( +MqC +< +T +>:: +_bufrSize +); + +131 +DerliziE + + gr + = +derlizeJs +( +js +, +yld +, +n +); + +132 i(! + gr + && + gjs +. + gis +< + gJsObje +>()) { + +133 +JsObje + + gjsObje + = +js +. +as +(); + +134 + gMqC +< + gT +>:: +_efulSvi +-> +upde +( +jsObje +, +_eUpd +, +MQTT_ORIGIN_ID +); + +139 + gme + < +ass + + gT +> + +140 +ass + + gMqPubSub + : +public + +MqPub +< +T +>,ubli + gMqSub +< + gT +> { + +141 + gpublic +: + +142 +MqPubSub +( +JsSRd +< +T +> +eRd +, + +143 +JsSUpd +< +T +> +eUpd +, + +144 +SfulSvi +< +T +>* +efulSvi +, + +145 +AsyncMqCl +* +mqCl +, + +146 cڡ +Sg +& +pubTic + = "", + +147 cڡ +Sg +& +subTic + = "", + +148 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +149 +MqC +< +T +>( +efulSvi +, + gmqCl +, + gbufrSize +), + +150 + gMqPub +< + gT +>( + geRd +, + gefulSvi +, + gmqCl +, + gpubTic +, + gbufrSize +), + +151 + gMqSub +< + gT +>( + geUpd +, + gefulSvi +, + gmqCl +, + gsubTic +, + gbufrSize +) { + +154 + gpublic +: + +155  +cfiguTics +(cڡ +Sg +& +pubTic +, cڡ Sg& +subTic +) { + +156 + gMqSub +< + gT +>:: +tSubTic +( +subTic +); + +157 + gMqPub +< + gT +>:: +tPubTic +( +pubTic +); + +160 + geed +: + +161  +C +() { + +162 +MqSub +< +T +>:: +C +(); + +163 + gMqPub +< + gT +>:: +C +(); + + @lib/framework/MqttSettingsService.cpp + +1  + ~ + +4 +mea + + gem + { + +5 as + cEMSESP + { + +6 + gpublic +: + +7  +Syem + +syem_ +; + +8  +Mq + + gmq_ +; + +9  +Sss + + gnss_ +; + +18 * + $Cr +(cڡ * +cr +, ** +r +) { + +20 + ` +(* +r +); + +21 * +r + = +nuαr +; + +24 i( +cr + ! +nuαr +) { + +25 * +r + = (*) + `mloc +( + ` +( +cr +) + 1); + +26 + `ry +(* +r +, +cr +); + +30  * +r +; + +31 + } +} + +33 + gMqStgsSvi +:: + $MqStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +) + +34 : + `_hpEndpot +( +MqStgs +:: +ad +, MqStgs:: +upde +, +this +, +rv +, +MQTT_SETTINGS_SERVICE_PATH +, +curyMag +) + +35 , + `_fsPsi +( +MqStgs +:: +ad +, MqStgs:: +upde +, +this +, +fs +, +MQTT_SETTINGS_FILE +) + +36 , + `_edHo +( +nuαr +) + +37 , + `_edClId +( +nuαr +) + +38 , + `_edUame +( +nuαr +) + +39 , + `_edPasswd +( +nuαr +) + +40 , + `_cfiguMq +( +l +) + +41 , + `_discedAt +(0) + +42 , + `_discRs +( +AsyncMqClDiscRs +:: +TCP_DISCONNECTED +) + +43 , + $_mqCl +() { + +44 #ifde +ESP32 + + +45 +WiFi +. + `Evt +( +d +:: + `bd +(& +MqStgsSvi +:: +StiModeDisced +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), + +46 +WiFiEvt_t +:: +SYSTEM_EVENT_STA_DISCONNECTED +); + +47 +WiFi +. + `Evt +( +d +:: + `bd +(& +MqStgsSvi +:: +StiModeGIP +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), +WiFiEvt_t +:: +SYSTEM_EVENT_STA_GOT_IP +); + +48 #i + `defed +( +ESP8266 +) + +49 +_StiModeDiscedHdr + = +WiFi +. + `StiModeDisced +( +d +:: + `bd +(& +MqStgsSvi +:: +StiModeDisced +, +this +, std:: +ahds +:: +_1 +)); + +50 +_StiModeGIPHdr + = +WiFi +. + `StiModeGIP +( +d +:: + `bd +(& +MqStgsSvi +:: +StiModeGIP +, +this +, std:: +ahds +:: +_1 +)); + +52 +_mqCl +. + `C +( +d +:: + `bd +(& +MqStgsSvi +:: +MqC +, +this +, std:: +ahds +:: +_1 +)); + +53 +_mqCl +. + `Disc +( +d +:: + `bd +(& +MqStgsSvi +:: +MqDisc +, +this +, std:: +ahds +:: +_1 +)); + +54 + `addUpdeHdr +([&](cڡ +Sg + & +igId +{ + `CfigUpded +(); }, +l +); + +55 + } +} + +57 + gMqStgsSvi +::~ + $MqStgsSvi +() { + +58 + } +} + +60  +MqStgsSvi +:: + $beg +() { + +61 +_fsPsi +. + `adFromFS +(); + +62 + } +} + +64  + gMqStgsSvi +:: + $lo +() { + +65 i( +_cfiguMq + || ( +_discedAt + && ()( +uuid +:: + `g_uime +(- _discedAt> +MQTT_RECONNECTION_DELAY +)) { + +67 + `cfiguMq +(); + +70 +_cfiguMq + = +l +; + +71 +_discedAt + = 0; + +73 + } +} + +75 +bo + + gMqStgsSvi +:: + $isEbd +() { + +76  +_e +. +abd +; + +77 + } +} + +79 +bo + + gMqStgsSvi +:: + $isCed +() { + +80  +_mqCl +. + `ced +(); + +81 + } +} + +83 cڡ * + gMqStgsSvi +:: + $gClId +() { + +84  +_mqCl +. + `gClId +(); + +85 + } +} + +87 +AsyncMqClDiscRs + + gMqStgsSvi +:: + $gDiscRs +() { + +88  +_discRs +; + +89 + } +} + +91 +AsyncMqCl + * + gMqStgsSvi +:: + $gMqCl +() { + +92  & +_mqCl +; + +93 + } +} + +95  + gMqStgsSvi +:: + $MqC +( +bo + +ssiP +) { + +104 + } +} + +106  +MqStgsSvi +:: + $MqDisc +( +AsyncMqClDiscRs + +as +) { + +109 +_discRs + = +as +; + +110 +_discedAt + = +uuid +:: + `g_uime +(); + +111 + } +} + +113  + gMqStgsSvi +:: + $CfigUpded +() { + +114 +_cfiguMq + = +ue +; + +115 +_discedAt + = 0; + +119 + } +} + +121 #ifde +ESP32 + + +122  + gMqStgsSvi +:: + $StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +123 i( +_e +. +abd +) { + +125 + `CfigUpded +(); + +127 + } +} + +129  + gMqStgsSvi +:: + $StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +130 i( +_e +. +abd +) { + +132 + `CfigUpded +(); + +134 + } +} + +135 #i +defed +( +ESP8266 +) + +136  + gMqStgsSvi +:: + $StiModeGIP +(cڡ +WiFiEvtStiModeGIP + & +evt +) { + +137 i( +_e +. +abd +) { + +139 + `CfigUpded +(); + +141 + } +} + +143  + gMqStgsSvi +:: + $StiModeDisced +(cڡ +WiFiEvtStiModeDisced + & +evt +) { + +144 i( +_e +. +abd +) { + +146 + `CfigUpded +(); + +148 + } +} + +151  + gMqStgsSvi +:: + $cfiguMq +() { + +153 +_mqCl +. + `disc +(); + +156 i( +_e +. +abd + && +WiFi +. + `isCed +()) { + +158 +_mqCl +. + `tSv +( + `Cr +( +_e +. +ho +. + `c_r +(), & +_edHo +), _e. +pt +); + +159 i( +_e +. +uame +. + `ngth +() > 0) { + +160 +_mqCl +. + `tCdtls +( + `Cr +( +_e +. +uame +. + `c_r +(), & +_edUame +), + +161 + `Cr +( +_e +. +sswd +. + `ngth +(> 0 ? _e.sswd. + `c_r +(: +nuαr +, & +_edPasswd +)); + +163 +_mqCl +. + `tCdtls +( + `Cr +( +nuαr +, & +_edUame +),aCruαr, & +_edPasswd +)); + +165 +_mqCl +. + `tClId +( + `Cr +( +_e +. +Id +. + `c_r +(), & +_edClId +)); + +166 +_mqCl +. + `tKpAlive +( +_e +. +kpAlive +); + +167 +_mqCl +. + `tC˪Sessi +( +_e +. +nSessi +); + +168 +_mqCl +. + `tMaxTicLgth +( +_e +. +maxTicLgth +); + +169 +_mqCl +. + `c +(); + +172 +em +:: +EMSESP +:: +nss_ +. + `ld +(); + +173 + } +} + +175  + gMqStgs +:: + $ad +( +MqStgs + & +gs +, +JsObje + & +ro +) { + +176 +ro +["abd"] = +gs +. +abd +; + +177 +ro +["ho"] = +gs +. +ho +; + +178 +ro +["pt"] = +gs +. +pt +; + +179 +ro +["uame"] = +gs +. +uame +; + +180 +ro +["sswd"] = +gs +. +sswd +; + +181 +ro +["_id"] = +gs +. +Id +; + +182 +ro +["kp_ive"] = +gs +. +kpAlive +; + +183 +ro +["n_ssi"] = +gs +. +nSessi +; + +184 +ro +["max_tic_ngth"] = +gs +. +maxTicLgth +; + +187 +ro +["syem_hbt"] = +gs +. +syem_hbt +; + +188 +ro +["publish_time_bo"] = +gs +. +publish_time_bo +; + +189 +ro +["publish_time_thmo"] = +gs +. +publish_time_thmo +; + +190 +ro +["publish_time_sެ"] = +gs +. +publish_time_sެ +; + +191 +ro +["publish_time_mixg"] = +gs +. +publish_time_mixg +; + +192 +ro +["publish_time_h"] = +gs +. +publish_time_h +; + +193 +ro +["publish_time_ns"] = +gs +. +publish_time_ns +; + +194 +ro +["mq_fm"] = +gs +. +mq_fm +; + +195 +ro +["mq_qos"] = +gs +. +mq_qos +; + +196 + } +} + +198 +SUpdeResu + + gMqStgs +:: + $upde +( +JsObje + & +ro +, +MqStgs + & +gs +) { + +199 +MqStgs + +wStgs + = {}; + +201 +wStgs +. +abd + = +ro +["abd"] | +FACTORY_MQTT_ENABLED +; + +202 +wStgs +. +ho + = +ro +["ho"] | +FACTORY_MQTT_HOST +; + +203 +wStgs +. +pt + = +ro +["pt"] | +FACTORY_MQTT_PORT +; + +204 +wStgs +. +uame + = +ro +["uame"] | +FACTORY_MQTT_USERNAME +; + +205 +wStgs +. +sswd + = +ro +["sswd"] | +FACTORY_MQTT_PASSWORD +; + +206 +wStgs +. +Id + = +ro +["_id"] | +FACTORY_MQTT_CLIENT_ID +; + +207 +wStgs +. +kpAlive + = +ro +["kp_ive"] | +FACTORY_MQTT_KEEP_ALIVE +; + +208 +wStgs +. +nSessi + = +ro +["n_ssi"] | +FACTORY_MQTT_CLEAN_SESSION +; + +209 +wStgs +. +maxTicLgth + = +ro +["max_tic_ngth"] | +FACTORY_MQTT_MAX_TOPIC_LENGTH +; + +211 +wStgs +. +syem_hbt + = +ro +["syem_hbt"] | +EMSESP_DEFAULT_SYSTEM_HEARTBEAT +; + +212 +wStgs +. +publish_time_bo + = +ro +["publish_time_bo"] | +EMSESP_DEFAULT_PUBLISH_TIME +; + +213 +wStgs +. +publish_time_thmo + = +ro +["publish_time_thmo"] | +EMSESP_DEFAULT_PUBLISH_TIME +; + +214 +wStgs +. +publish_time_sެ + = +ro +["publish_time_sެ"] | +EMSESP_DEFAULT_PUBLISH_TIME +; + +215 +wStgs +. +publish_time_mixg + = +ro +["publish_time_mixg"] | +EMSESP_DEFAULT_PUBLISH_TIME +; + +216 +wStgs +. +publish_time_h + = +ro +["publish_time_h"] | +EMSESP_DEFAULT_PUBLISH_TIME +; + +217 +wStgs +. +publish_time_ns + = +ro +["publish_time_ns"] | +EMSESP_DEFAULT_PUBLISH_TIME +; + +218 +wStgs +. +mq_fm + = +ro +["mq_fm"] | +EMSESP_DEFAULT_MQTT_FORMAT +; + +219 +wStgs +. +mq_qos + = +ro +["mq_qos"] | +EMSESP_DEFAULT_MQTT_QOS +; + +221 i( +wStgs +. +syem_hbt + ! +gs +.system_heartbeat) { + +222 +em +:: +EMSESP +:: +syem_ +. + `t_hbt +( +wStgs +. +syem_hbt +); + +225 i( +wStgs +. +mq_qos + ! +gs +.mqtt_qos) { + +226 +em +:: +EMSESP +:: +mq_ +. + `t_qos +( +wStgs +. +mq_qos +); + +229 i( +wStgs +. +publish_time_bo + ! +gs +.publish_time_boiler) { + +230 +em +:: +EMSESP +:: +mq_ +. + `t_publish_time_bo +( +wStgs +. +publish_time_bo +); + +232 i( +wStgs +. +publish_time_thmo + ! +gs +.publish_time_thermostat) { + +233 +em +:: +EMSESP +:: +mq_ +. + `t_publish_time_thmo +( +wStgs +. +publish_time_thmo +); + +235 i( +wStgs +. +publish_time_sެ + ! +gs +.publish_time_solar) { + +236 +em +:: +EMSESP +:: +mq_ +. + `t_publish_time_sެ +( +wStgs +. +publish_time_sެ +); + +238 i( +wStgs +. +publish_time_mixg + ! +gs +.publish_time_mixing) { + +239 +em +:: +EMSESP +:: +mq_ +. + `t_publish_time_mixg +( +wStgs +. +publish_time_mixg +); + +241 i( +wStgs +. +publish_time_h + ! +gs +.publish_time_other) { + +242 +em +:: +EMSESP +:: +mq_ +. + `t_publish_time_h +( +wStgs +. +publish_time_h +); + +244 i( +wStgs +. +publish_time_ns + ! +gs +.publish_time_sensor) { + +245 +em +:: +EMSESP +:: +mq_ +. + `t_publish_time_ns +( +wStgs +. +publish_time_ns +); + +248 +em +:: +EMSESP +:: +mq_ +. + `t_publish_s +(); + +250 +gs + = +wStgs +; + +252  +SUpdeResu +:: +CHANGED +; + +253 + } +} + + @lib/framework/MqttSettingsService.h + +1 #ide +MqStgsSvi_h + + +2  + #MqStgsSvi_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +8  + ~ + +9  + ~ + +11  + ~"../../c/syem.h +" + +12  + ~"../../c/mq.h +" + +13  + ~"../../c/nss.h +" + +15  + #MQTT_RECONNECTION_DELAY + 1000 + + ) + +17  + #MQTT_SETTINGS_FILE + "/cfig/mqStgs.js" + + ) + +18  + #MQTT_SETTINGS_SERVICE_PATH + "//mqStgs" + + ) + +20 #ide +FACTORY_MQTT_ENABLED + + +21  + #FACTORY_MQTT_ENABLED + +l + + + ) + +24 #ide +FACTORY_MQTT_HOST + + +25  + #FACTORY_MQTT_HOST + ".mosquto.g" + + ) + +28 #ide +FACTORY_MQTT_PORT + + +29  + #FACTORY_MQTT_PORT + 1883 + + ) + +32 #ide +FACTORY_MQTT_USERNAME + + +33  + #FACTORY_MQTT_USERNAME + "" + + ) + +36 #ide +FACTORY_MQTT_PASSWORD + + +37  + #FACTORY_MQTT_PASSWORD + "" + + ) + +40 #ide +FACTORY_MQTT_CLIENT_ID + + +41  + #FACTORY_MQTT_CLIENT_ID + + `geClId +() + + ) + +42  +Sg + + $geClId +() { + +43 #ifde +ESP32 + + +44  +ESPUts +:: + `deuDeviVue +("esp32-"); + +45 #i + `defed +( +ESP8266 +) + +46  +ESPUts +:: + `deuDeviVue +("esp8266-"); + +48 + } +} + +51 #ide +FACTORY_MQTT_KEEP_ALIVE + + +52  + #FACTORY_MQTT_KEEP_ALIVE + 16 + + ) + +55 #ide +FACTORY_MQTT_CLEAN_SESSION + + +56  + #FACTORY_MQTT_CLEAN_SESSION + +ue + + + ) + +59 #ide +FACTORY_MQTT_MAX_TOPIC_LENGTH + + +60  + #FACTORY_MQTT_MAX_TOPIC_LENGTH + 128 + + ) + +63  + #EMSESP_DEFAULT_SYSTEM_HEARTBEAT + +ue + + + ) + +64  + #EMSESP_DEFAULT_MQTT_FORMAT + 2 + +65  + #EMSESP_DEFAULT_MQTT_QOS + 0 + + ) + +66  + #EMSESP_DEFAULT_PUBLISH_TIME + 10 + + ) + +69 as + cMqStgs + { + +70 + mpublic +: + +72 +bo + +abd +; + +73 +Sg + + mho +; + +74 +ut16_t + + mpt +; + +77 +Sg + + muame +; + +78 +Sg + + msswd +; + +81 +Sg + + mId +; + +84 +ut16_t + + mkpAlive +; + +85 +bo + + mnSessi +; + +86 +ut16_t + + mmaxTicLgth +; + +89 +ut16_t + + mpublish_time_bo +; + +90 +ut16_t + + mpublish_time_thmo +; + +91 +ut16_t + + mpublish_time_sެ +; + +92 +ut16_t + + mpublish_time_mixg +; + +93 +ut16_t + + mpublish_time_h +; + +94 +ut16_t + + mpublish_time_ns +; + +95 +ut8_t + + mmq_fm +; + +96 +ut8_t + + mmq_qos +; + +97 +bo + + msyem_hbt +; + +99  +ad +( +MqStgs + & +gs +, +JsObje + & +ro +); + +100  +SUpdeResu + +upde +( +JsObje + & +ro +, +MqStgs + & +gs +); + +103 +ass + + gMqStgsSvi + : +public + +SfulSvi +< +MqStgs +> { + +104 +public +: + +105 +MqStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +); + +106 ~ +MqStgsSvi +(); + +108  +beg +(); + +109  +lo +(); + +110 +bo + +isEbd +(); + +111 +bo + +isCed +(); + +112 cڡ * +gClId +(); + +113 +AsyncMqClDiscRs + +gDiscRs +(); + +114 +AsyncMqCl + * +gMqCl +(); + +116 + geed +: + +117  +CfigUpded +(); + +119 + give +: + +120 +HpEndpot +< +MqStgs +> +_hpEndpot +; + +121 + gFSPsi +< + gMqStgs +> + g_fsPsi +; + +125 * + g_edHo +; + +126 * + g_edClId +; + +127 * + g_edUame +; + +128 * + g_edPasswd +; + +131 +bo + + g_cfiguMq +; + +132  + g_discedAt +; + +135 +AsyncMqClDiscRs + + g_discRs +; + +138 +AsyncMqCl + + g_mqCl +; + +140 #ifde +ESP32 + + +141  +StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +142  +StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +143 #i +defed +( +ESP8266 +) + +144 +WiFiEvtHdr + + g_StiModeDiscedHdr +; + +145 +WiFiEvtHdr + + g_StiModeGIPHdr +; + +146  +StiModeGIP +(cڡ +WiFiEvtStiModeGIP + & +evt +); + +147  +StiModeDisced +(cڡ +WiFiEvtStiModeDisced + & +evt +); + +150  +MqC +( +bo + +ssiP +); + +151  +MqDisc +( +AsyncMqClDiscRs + +as +); + +152  +cfiguMq +(); + + @lib/framework/MqttStatus.cpp + +1  + ~ + +3 + gMqStus +:: + $MqStus +( +AsyncWebSv + * +rv +, +MqStgsSvi + * +mqStgsSvi +, +SecuryMag + * +curyMag +) + +4 : + $_mqStgsSvi +( +mqStgsSvi +) { + +5 +rv +-> + ` +( +MQTT_STATUS_SERVICE_PATH +, + +6 +HTTP_GET +, + +7 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +MqStus +:: +mqStus +, +this +, std:: +ahds +:: +_1 +), +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +8 + } +} + +10  + gMqStus +:: + $mqStus +( +AsyncWebSvReque + * +que +) { + +11 +AsyncJsReڣ + * +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_MQTT_STATUS_SIZE +); + +12 +JsObje + +ro + = +ڣ +-> + `gRo +(); + +14 +ro +["abd"] = +_mqStgsSvi +-> + `isEbd +(); + +15 +ro +["ced"] = +_mqStgsSvi +-> + `isCed +(); + +16 +ro +["_id"] = +_mqStgsSvi +-> + `gClId +(); + +17 +ro +["disc_as"] = ( +ut8_t +) +_mqStgsSvi +-> + `gDiscRs +(); + +19 +ro +["mq_s"] = +em +:: +Mq +:: + `publish_s +(); + +21 +ڣ +-> + `tLgth +(); + +22 +que +-> + `nd +( +ڣ +); + +23 + } +} + + @lib/framework/MqttStatus.h + +1 #ide +MqStus_h + + +2  + #MqStus_h + + + ) + +4 #ifde +ESP32 + + +5  + ~ + +6  + ~ + +7 #i +defed +( +ESP8266 +) + +8  + ~ + +9  + ~ + +12  + ~"../../c/mq.h +" + +14  + ~ + +15  + ~ + +16  + ~ + +17  + ~ + +18  + ~ + +20  + #MAX_MQTT_STATUS_SIZE + 1024 + + ) + +21  + #MQTT_STATUS_SERVICE_PATH + "//mqStus" + + ) + +23 as + cMqStus + { + +24 + mpublic +: + +25 +MqStus +( +AsyncWebSv + * +rv +, +MqStgsSvi + * +mqStgsSvi +, +SecuryMag + * +curyMag +); + +27 + mive +: + +28 +MqStgsSvi + * +_mqStgsSvi +; + +30  +mqStus +( +AsyncWebSvReque + * +que +); + + @lib/framework/NTPSettingsService.cpp + +1  + ~ + +3 + gNTPStgsSvi +:: + $NTPStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +) : + +4 + `_hpEndpot +( +NTPStgs +:: +ad +, NTPStgs:: +upde +, +this +, +rv +, +NTP_SETTINGS_SERVICE_PATH +, +curyMag +), + +5 + `_fsPsi +( +NTPStgs +:: +ad +, NTPStgs:: +upde +, +this +, +fs +, +NTP_SETTINGS_FILE +), + +6 + `_timeHdr +( +TIME_PATH +, + +7 +curyMag +-> + `wpClback +( + +8 +d +:: + `bd +(& +NTPStgsSvi +:: +cfiguTime +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), + +9 +AuthtitiPdis +:: +IS_ADMIN +)) { + +10 +_timeHdr +. + `tMhod +( +HTTP_POST +); + +11 +_timeHdr +. + `tMaxCڋLgth +( +MAX_TIME_SIZE +); + +12 +rv +-> + `addHdr +(& +_timeHdr +); + +13 #ifde +ESP32 + + +14 +WiFi +. + `Evt +( + +15 +d +:: + `bd +(& +NTPStgsSvi +:: +StiModeDisced +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), + +16 +WiFiEvt_t +:: +SYSTEM_EVENT_STA_DISCONNECTED +); + +17 +WiFi +. + `Evt +( +d +:: + `bd +(& +NTPStgsSvi +:: +StiModeGIP +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), + +18 +WiFiEvt_t +:: +SYSTEM_EVENT_STA_GOT_IP +); + +19 #i + `defed +( +ESP8266 +) + +20 +_StiModeDiscedHdr + = +WiFi +. + `StiModeDisced +( + +21 +d +:: + `bd +(& +NTPStgsSvi +:: +StiModeDisced +, +this +, std:: +ahds +:: +_1 +)); + +22 +_StiModeGIPHdr + = + +23 +WiFi +. + `StiModeGIP +( +d +:: + `bd +(& +NTPStgsSvi +:: +StiModeGIP +, +this +, std:: +ahds +:: +_1 +)); + +25 + `addUpdeHdr +([&](cڡ +Sg +& +igId +{ + `cfiguNTP +(); }, +l +); + +26 + } +} + +28  + gNTPStgsSvi +:: + $beg +() { + +29 +_fsPsi +. + `adFromFS +(); + +30 + `cfiguNTP +(); + +31 + } +} + +33 #ifde +ESP32 + + +34  + gNTPStgsSvi +:: + $StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +36 + `cfiguNTP +(); + +37 + } +} + +39  + gNTPStgsSvi +:: + $StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +41 + `cfiguNTP +(); + +42 + } +} + +43 #i +defed +( +ESP8266 +) + +44  + gNTPStgsSvi +:: + $StiModeGIP +(cڡ +WiFiEvtStiModeGIP +& +evt +) { + +46 + `cfiguNTP +(); + +47 + } +} + +49  + gNTPStgsSvi +:: + $StiModeDisced +(cڡ +WiFiEvtStiModeDisced +& +evt +) { + +51 + `cfiguNTP +(); + +52 + } +} + +55  + gNTPStgsSvi +:: + $cfiguNTP +() { + +56 i( +WiFi +. + `isCed +(&& +_e +. +abd +) { + +58 #ifde +ESP32 + + +59 + `cfigTzTime +( +_e +. +tzFm +. + `c_r +(), _e. +rv +.c_str()); + +60 #i + `defed +( +ESP8266 +) + +61 + `cfigTime +( +_e +. +tzFm +. + `c_r +(), _e. +rv +.c_str()); + +64 #ifde +ESP32 + + +65 + `nv +("TZ", +_e +. +tzFm +. + `c_r +(), 1); + +66 + `tzt +(); + +67 #i + `defed +( +ESP8266 +) + +68 + `tTZ +( +_e +. +tzFm +. + `c_r +()); + +70 + `_ +(); + +72 + } +} + +74  + gNTPStgsSvi +:: + $cfiguTime +( +AsyncWebSvReque +* +que +, +JsV +& +js +) { + +75 i(! + `_abd +(&& +js +. +is +< +JsObje +>()) { + +76 +Sg + +timeUtc + = +js +["time_utc"]; + +77  +tm +m = {0}; + +78 * +s + = + `time +( +timeUtc +. + `c_r +(), "%Y-%m-%dT%H:%M:%SZ", & +tm +); + +79 i( +s + ! +nuαr +) { + +80 +time_t + +time + = + `mktime +(& +tm +); + +81  +timev + +now + = {. +tv_c + = +time +}; + +82 + `imeofday +(& +now +, +nuαr +); + +83 +AsyncWebSvReڣ +* +ڣ + = +que +-> + `begReڣ +(200); + +84 +que +-> + `nd +( +ڣ +); + +88 +AsyncWebSvReڣ +* +ڣ + = +que +-> + `begReڣ +(400); + +89 +que +-> + `nd +( +ڣ +); + +90 + } +} + + @lib/framework/NTPSettingsService.h + +1 #ide +NTPStgsSvi_h + + +2  + #NTPStgsSvi_h + + + ) + +4  + ~ + +5  + ~ + +7  + ~ + +8 #ifde +ESP32 + + +9  + ~ + +10 #i +defed +( +ESP8266 +) + +11  + ~<.h +> + +14 #ide +FACTORY_NTP_ENABLED + + +15  + #FACTORY_NTP_ENABLED + +ue + + + ) + +18 #ide +FACTORY_NTP_TIME_ZONE_LABEL + + +19  + #FACTORY_NTP_TIME_ZONE_LABEL + "Eure/Ld" + + ) + +22 #ide +FACTORY_NTP_TIME_ZONE_FORMAT + + +23  + #FACTORY_NTP_TIME_ZONE_FORMAT + "GMT0BST,M3.5.0/1,M10.5.0" + + ) + +26 #ide +FACTORY_NTP_SERVER + + +27  + #FACTORY_NTP_SERVER + "time.goog.com" + + ) + +30  + #NTP_SETTINGS_FILE + "/cfig/pStgs.js" + + ) + +31  + #NTP_SETTINGS_SERVICE_PATH + "//pStgs" + + ) + +33  + #MAX_TIME_SIZE + 256 + + ) + +34  + #TIME_PATH + "//time" + + ) + +36 as + cNTPStgs + { + +37 + mpublic +: + +38 +bo + +abd +; + +39 +Sg + + mtzLab +; + +40 +Sg + + mtzFm +; + +41 +Sg + + mrv +; + +43  + $ad +( +NTPStgs +& +gs +, +JsObje +& +ro +) { + +44 +ro +["abd"] = +gs +. +abd +; + +45 +ro +["rv"] = +gs +. +rv +; + +46 +ro +["tz_b"] = +gs +. +tzLab +; + +47 +ro +["tz_fm"] = +gs +. +tzFm +; + +50  +SUpdeResu + + $upde +( +JsObje +& +ro +, +NTPStgs +& +gs +) { + +51 +gs +. +abd + = +ro +["abd"] | +FACTORY_NTP_ENABLED +; + +52 +gs +. +rv + = +ro +["rv"] | +FACTORY_NTP_SERVER +; + +53 +gs +. +tzLab + = +ro +["tz_b"] | +FACTORY_NTP_TIME_ZONE_LABEL +; + +54 +gs +. +tzFm + = +ro +["tz_fm"] | +FACTORY_NTP_TIME_ZONE_FORMAT +; + +55  +SUpdeResu +:: +CHANGED +; + +56 + } +} + +59 +ass + + gNTPStgsSvi + : +public + +SfulSvi +< +NTPStgs +> { + +60 +public +: + +61 +NTPStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +); + +63  +beg +(); + +65 + give +: + +66 +HpEndpot +< +NTPStgs +> +_hpEndpot +; + +67 + gFSPsi +< + gNTPStgs +> + g_fsPsi +; + +68 +AsyncClbackJsWebHdr + + g_timeHdr +; + +70 #ifde +ESP32 + + +71  +StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +72  +StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +73 #i +defed +( +ESP8266 +) + +74 +WiFiEvtHdr + + g_StiModeDiscedHdr +; + +75 +WiFiEvtHdr + + g_StiModeGIPHdr +; + +77  +StiModeGIP +(cڡ +WiFiEvtStiModeGIP +& +evt +); + +78  +StiModeDisced +(cڡ +WiFiEvtStiModeDisced +& +evt +); + +80  +cfiguNTP +(); + +81  +cfiguTime +( +AsyncWebSvReque +* +que +, +JsV +& +js +); + + @lib/framework/NTPStatus.cpp + +1  + ~ + +3 + gNTPStus +:: + $NTPStus +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +) { + +4 +rv +-> + ` +( +NTP_STATUS_SERVICE_PATH +, + +5 +HTTP_GET +, + +6 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +NTPStus +:: +pStus +, +this +, std:: +ahds +:: +_1 +), + +7 +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +8 + } +} + +10 +Sg + + $toISOSg +( +tm +* +time +, +bo + +cOfft +) { + +11  +time_rg +[25]; + +12 + `rime +( +time_rg +, 25, +cOfft + ? "%FT%T%z" : "%FT%TZ", +time +); + +13  + `Sg +( +time_rg +); + +14 + } +} + +16  + gNTPStus +:: + $pStus +( +AsyncWebSvReque +* +que +) { + +17 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_NTP_STATUS_SIZE +); + +18 +JsObje + +ro + = +ڣ +-> + `gRo +(); + +21 +time_t + +now + = + `time +( +nuαr +); + +24 +ro +["us"] = + `_abd +() ? 1 : 0; + +27 +ro +["time_utc"] = + `toISOSg +( + `gmtime +(& +now +), +l +); + +30 +ro +["time_lol"] = + `toISOSg +( + `loime +(& +now +), +ue +); + +33 +ro +["rv"] = + `_grvme +(0); + +36 +ro +["uime"] = +uuid +:: + `g_uime +() / 1000; + +38 +ڣ +-> + `tLgth +(); + +39 +que +-> + `nd +( +ڣ +); + +40 + } +} + + @lib/framework/NTPStatus.h + +1 #ide +NTPStus_h + + +2  + #NTPStus_h + + + ) + +4  + ~ + +5 #ifde +ESP32 + + +6  + ~ + +7  + ~ + +8  + ~ + +9 #i +defed +( +ESP8266 +) + +10  + ~ + +11  + ~ + +12  + ~<.h +> + +15  + ~ + +16  + ~ + +17  + ~ + +18  + ~ + +19  + ~ + +22  + #MAX_NTP_STATUS_SIZE + 1024 + + ) + +23  + #NTP_STATUS_SERVICE_PATH + "//pStus" + + ) + +25 as + cNTPStus + { + +26 + mpublic +: + +27 +NTPStus +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +); + +29 + mive +: + +30  +pStus +( +AsyncWebSvReque +* +que +); + + @lib/framework/OTASettingsService.cpp + +1  + ~ + +3 + gOTAStgsSvi +:: + $OTAStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +) + +4 : + `_hpEndpot +( +OTAStgs +:: +ad +, OTAStgs:: +upde +, +this +, +rv +, +OTA_SETTINGS_SERVICE_PATH +, +curyMag +) + +5 , + `_fsPsi +( +OTAStgs +:: +ad +, OTAStgs:: +upde +, +this +, +fs +, +OTA_SETTINGS_FILE +) + +6 , + $_duoOTA +( +nuαr +) { + +7 #ifde +ESP32 + + +8 +WiFi +. + `Evt +( +d +:: + `bd +(& +OTAStgsSvi +:: +StiModeGIP +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), +WiFiEvt_t +:: +SYSTEM_EVENT_STA_GOT_IP +); + +9 #i + `defed +( +ESP8266 +) + +10 +_StiModeGIPHdr + = +WiFi +. + `StiModeGIP +( +d +:: + `bd +(& +OTAStgsSvi +:: +StiModeGIP +, +this +, std:: +ahds +:: +_1 +)); + +12 + `addUpdeHdr +([&](cڡ +Sg + & +igId +{ + `cfiguArduoOTA +(); }, +l +); + +13 + } +} + +15  + gOTAStgsSvi +:: + $beg +() { + +16 +_fsPsi +. + `adFromFS +(); + +17 + `cfiguArduoOTA +(); + +18 + } +} + +20  + gOTAStgsSvi +:: + $lo +() { + +21 i( +_e +. +abd + && +_duoOTA +) { + +22 +_duoOTA +-> + `hd +(); + +24 + } +} + +26  + gOTAStgsSvi +:: + $cfiguArduoOTA +() { + +27 i( +_duoOTA +) { + +28 #ifde +ESP32 + + +29 +_duoOTA +-> + `d +(); + +31 +de + +_duoOTA +; + +32 +_duoOTA + = +nuαr +; + +34 i( +_e +. +abd +) { + +36 +_duoOTA + = +w + +ArduoOTACss +; + +37 +_duoOTA +-> + `tPt +( +_e +. +pt +); + +38 +_duoOTA +-> + `tPasswd +( +_e +. +sswd +. + `c_r +()); + +40 +_duoOTA +-> + `S +([]() { + +42 +em +:: +Syem +:: + `ud_us +( +ue +); + +44 +_duoOTA +-> + `End +([]() { + +46 +em +:: +Syem +:: + `ud_us +( +l +); + +67 +_duoOTA +-> + `beg +(); + +69 + } +} + +71 #ifde +ESP32 + + +72  + gOTAStgsSvi +:: + $StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +73 + `cfiguArduoOTA +(); + +74 + } +} + +75 #i +defed +( +ESP8266 +) + +76  + gOTAStgsSvi +:: + $StiModeGIP +(cڡ +WiFiEvtStiModeGIP + & +evt +) { + +77 + `cfiguArduoOTA +(); + +78 + } +} + + @lib/framework/OTASettingsService.h + +1 #ide +OTAStgsSvi_h + + +2  + #OTAStgsSvi_h + + + ) + +4  + ~ + +5  + ~ + +7 #ifde +ESP32 + + +8  + ~ + +9 #i +defed +( +ESP8266 +) + +10  + ~ + +13  + ~ + +14  + ~ + +16  + ~"../../c/syem.h +" + +18 #ide +FACTORY_OTA_PORT + + +19  + #FACTORY_OTA_PORT + 8266 + + ) + +22 #ide +FACTORY_OTA_PASSWORD + + +23  + #FACTORY_OTA_PASSWORD + "e-a" + + ) + +26 #ide +FACTORY_OTA_ENABLED + + +27  + #FACTORY_OTA_ENABLED + +ue + + + ) + +30  + #OTA_SETTINGS_FILE + "/cfig/aStgs.js" + + ) + +31  + #OTA_SETTINGS_SERVICE_PATH + "//aStgs" + + ) + +33 as + cOTAStgs + { + +34 + mpublic +: + +35 +bo + +abd +; + +36  + mpt +; + +37 +Sg + + msswd +; + +39  + $ad +( +OTAStgs +& +gs +, +JsObje +& +ro +) { + +40 +ro +["abd"] = +gs +. +abd +; + +41 +ro +["pt"] = +gs +. +pt +; + +42 +ro +["sswd"] = +gs +. +sswd +; + +45  +SUpdeResu + + $upde +( +JsObje +& +ro +, +OTAStgs +& +gs +) { + +46 +gs +. +abd + = +ro +["abd"] | +FACTORY_OTA_ENABLED +; + +47 +gs +. +pt + = +ro +["pt"] | +FACTORY_OTA_PORT +; + +48 +gs +. +sswd + = +ro +["sswd"] | +FACTORY_OTA_PASSWORD +; + +49  +SUpdeResu +:: +CHANGED +; + +50 + } +} + +53 +ass + + gOTAStgsSvi + : +public + +SfulSvi +< +OTAStgs +> { + +54 +public +: + +55 +OTAStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +); + +57  +beg +(); + +58  +lo +(); + +60 + give +: + +61 +HpEndpot +< +OTAStgs +> +_hpEndpot +; + +62 + gFSPsi +< + gOTAStgs +> + g_fsPsi +; + +63 +ArduoOTACss +* + g_duoOTA +; + +65  +cfiguArduoOTA +(); + +66 #ifde +ESP32 + + +67  +StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +68 #i +defed +( +ESP8266 +) + +69 +WiFiEvtHdr + + g_StiModeGIPHdr +; + +70  +StiModeGIP +(cڡ +WiFiEvtStiModeGIP +& +evt +); + + @lib/framework/RestartService.cpp + +1  + ~ + +3 + gRetSvi +:: + $RetSvi +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +) { + +4 +rv +-> + ` +( +RESTART_SERVICE_PATH +, + +5 +HTTP_POST +, + +6 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +RetSvi +:: +t +, +this +, std:: +ahds +:: +_1 +), + +7 +AuthtitiPdis +:: +IS_ADMIN +)); + +8 + } +} + +10  + gRetSvi +:: + $t +( +AsyncWebSvReque +* +que +) { + +11 +que +-> + `Disc +( +RetSvi +:: +tNow +); + +12 +que +-> + `nd +(200); + +13 + } +} + + @lib/framework/RestartService.h + +1 #ide +RetSvi_h + + +2  + #RetSvi_h + + + ) + +4 #ifde +ESP32 + + +5  + ~ + +6  + ~ + +7 #i +defed +( +ESP8266 +) + +8  + ~ + +9  + ~ + +12  + ~ + +13  + ~ + +15  + #RESTART_SERVICE_PATH + "//t" + + ) + +17 as + cRetSvi + { + +18 + mpublic +: + +19 +RetSvi +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +); + +21  + $tNow +() { + +22 +WiFi +. + `disc +( +ue +); + +23 + `day +(500); + +24 +ESP +. + `t +(); + +27 +ive +: + +28  + `t +( +AsyncWebSvReque +* +que +); + +29 + } +}; + + @lib/framework/SecurityManager.h + +1 #ide +SecuryMag_h + + +2  + #SecuryMag_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +8  + ~ + +9  + ~
  • + +11 #ide +FACTORY_JWT_SECRET + + +12  + #FACTORY_JWT_SECRET + +ESPUts +:: + `deuDeviVue +() + + ) + +15  + #ACCESS_TOKEN_PARAMATER + "acss_tok" + + ) + +17  + #AUTHORIZATION_HEADER + "Authizi" + + ) + +18  + #AUTHORIZATION_HEADER_PREFIX + "B" + + ) + +19  + #AUTHORIZATION_HEADER_PREFIX_LEN + 7 + + ) + +21  + #MAX_JWT_SIZE + 128 + + ) + +23 as + cUr + { + +24 + mpublic +: + +25 +Sg + +uame +; + +26 +Sg + + msswd +; + +27 +bo + + madm +; + +29 + mpublic +: + +30 + $Ur +( +Sg + +uame +, Sg +sswd +, +bo + +adm +: + `uame +(uame), + `sswd +asswd), + $adm +( +adm +) { + +32 + } +}; + +34 as + cAuthtiti + { + +35 + mpublic +: + +36 +Ur +* +ur +; + +37 +boޗn + + mauthtid +; + +39 + mpublic +: + +40 + $Authtiti +( +Ur +& +ur +: + `ur +( +w + + `Ur +(ur)), + $authtid +( +ue +) { + +42 + $Authtiti +(: + `ur +( +nuαr +), + $authtid +( +l +) { + +43 + } +} + +44 ~ + $Authtiti +() { + +45 + `de + ( +ur +); + +46 + } +} + +49  + gd +:: + tfuni +< + tboޗn +( + tAuthtiti +& + tauthtiti +)> + tAuthtitiPdi +; + +51 as + cAuthtitiPdis + { + +52 + mpublic +: + +53  +bo + + $NONE_REQUIRED +( +Authtiti +& +authtiti +) { + +54  +ue +; + +56  +bo + + $IS_AUTHENTICATED +( +Authtiti +& +authtiti +) { + +57  +authtiti +. +authtid +; + +58 + } +}; + +59  +bo + + $IS_ADMIN +( +Authtiti +& +authtiti +) { + +60  +authtiti +. +authtid + &&uthtiti. +ur +-> +adm +; + +61 + } +}; + +64 as + cSecuryMag + { + +65 + mpublic +: + +66 #i + $FT_ENABLED +( +FT_SECURITY +) + +70 +vtu + +Authtiti + + `authti +(cڡ +Sg +& +uame +, cڡ Sg& +sswd +) = 0; + +75 +vtu + +Sg + + `geJWT +( +Ur +* +ur +) = 0; + +82 +vtu + +Authtiti + + `authtiReque +( +AsyncWebSvReque +* +que +) = 0; + +87 +vtu + +ArRequeFrFuni + + `frReque +( +AuthtitiPdi + +edi +) = 0; + +92 +vtu + +ArRequeHdrFuni + + `wpReque +(ArRequeHdrFuni +Reque +, + +93 +AuthtitiPdi + +edi +) = 0; + +98 +vtu + +ArJsRequeHdrFuni + + `wpClback +(ArJsRequeHdrFuni +Reque +, + +99 +AuthtitiPdi + +edi +) = 0; + + @lib/framework/SecuritySettingsService.cpp + +1  + ~ + +3 #i +FT_ENABLED +( +FT_SECURITY +) + +5 + gSecuryStgsSvi +:: + $SecuryStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +) : + +6 + `_hpEndpot +( +SecuryStgs +:: +ad +, SecuryStgs:: +upde +, +this +, +rv +, +SECURITY_SETTINGS_PATH +,his), + +7 + `_fsPsi +( +SecuryStgs +:: +ad +, SecuryStgs:: +upde +, +this +, +fs +, +SECURITY_SETTINGS_FILE +), + +8 + $_jwtHdr +( +FACTORY_JWT_SECRET +) { + +9 + `addUpdeHdr +([&](cڡ +Sg +& +igId +{ + `cfiguJWTHdr +(); }, +l +); + +10 + } +} + +12  + gSecuryStgsSvi +:: + $beg +() { + +13 +_fsPsi +. + `adFromFS +(); + +14 + `cfiguJWTHdr +(); + +15 + } +} + +17 +Authtiti + + gSecuryStgsSvi +:: + $authtiReque +( +AsyncWebSvReque +* +que +) { + +18 +AsyncWebHd +* +authiziHd + = +que +-> + `gHd +( +AUTHORIZATION_HEADER +); + +19 i( +authiziHd +) { + +20 +Sg + +vue + = +authiziHd +-> + `vue +(); + +21 i( +vue +. + `tsWh +( +AUTHORIZATION_HEADER_PREFIX +)) { + +22 +vue + = vue. + `subrg +( +AUTHORIZATION_HEADER_PREFIX_LEN +); + +23  + `authtiJWT +( +vue +); + +25 } i( +que +-> + `hasPam +( +ACCESS_TOKEN_PARAMATER +)) { + +26 +AsyncWebPam +* +tokPam + = +que +-> + `gPam +( +ACCESS_TOKEN_PARAMATER +); + +27 +Sg + +vue + = +tokPam +-> + `vue +(); + +28  + `authtiJWT +( +vue +); + +30  + `Authtiti +(); + +31 + } +} + +33  + gSecuryStgsSvi +:: + $cfiguJWTHdr +() { + +34 +_jwtHdr +. + `tSe +( +_e +. +jwtSe +); + +35 + } +} + +37 +Authtiti + + gSecuryStgsSvi +:: + $authtiJWT +( +Sg +& +jwt +) { + +38 +DymicJsDocumt + + `yldDocumt +( +MAX_JWT_SIZE +); + +39 +_jwtHdr +. + `rJWT +( +jwt +, +yldDocumt +); + +40 i( +yldDocumt +. +is +< +JsObje +>()) { + +41 +JsObje + +rdPayld + = +yldDocumt +. +as +(); + +42 +Sg + +uame + = +rdPayld +["username"]; + +43  +Ur + +_ur + : +_e +. +urs +) { + +44 i( +_ur +. +uame + =uam&& + `videPayld +( +rdPayld +, &_user)) { + +45  + `Authtiti +( +_ur +); + +49  + `Authtiti +(); + +50 + } +} + +52 +Authtiti + + gSecuryStgsSvi +:: + $authti +(cڡ +Sg +& +uame +, cڡ Sg& +sswd +) { + +53  +Ur + +_ur + : +_e +. +urs +) { + +54 i( +_ur +. +uame + =uam&& _ur. +sswd + ==assword) { + +55  + `Authtiti +( +_ur +); + +58  + `Authtiti +(); + +59 + } +} + +61 +le +  + $puϋJWTPayld +( +JsObje +& +yld +, +Ur +* +ur +) { + +62 +yld +["uame"] = +ur +-> +uame +; + +63 +yld +["adm"] = +ur +-> +adm +; + +64 +yld +["vsi"] = +EMSESP_APP_VERSION +; + +65 + } +} + +67 +boޗn + + gSecuryStgsSvi +:: + $videPayld +( +JsObje +& +rdPayld +, +Ur +* +ur +) { + +68 +DymicJsDocumt + + `jsDocumt +( +MAX_JWT_SIZE +); + +69 +JsObje + +yld + = +jsDocumt +. +to +(); + +70 + `puϋJWTPayld +( +yld +, +ur +); + +71  +yld + = +rdPayld +; + +72 + } +} + +74 +Sg + + gSecuryStgsSvi +:: + $geJWT +( +Ur +* +ur +) { + +75 +DymicJsDocumt + + `jsDocumt +( +MAX_JWT_SIZE +); + +76 +JsObje + +yld + = +jsDocumt +. +to +(); + +77 + `puϋJWTPayld +( +yld +, +ur +); + +78  +_jwtHdr +. + `budJWT +( +yld +); + +79 + } +} + +81 +ArRequeFrFuni + + gSecuryStgsSvi +:: + $frReque +( +AuthtitiPdi + +edi +) { + +82  [ +this +, +edi +]( +AsyncWebSvReque +* +que +) { + +83 +Authtiti + +authtiti + = + `authtiReque +( +que +); + +84  + `edi +( +authtiti +); + +86 + } +} + +88 +ArRequeHdrFuni + + gSecuryStgsSvi +:: + $wpReque +( +ArRequeHdrFuni + +Reque +, + +89 +AuthtitiPdi + +edi +) { + +90  [ +this +, +Reque +, +edi +]( +AsyncWebSvReque +* +que +) { + +91 +Authtiti + +authtiti + = + `authtiReque +( +que +); + +92 i(! + `edi +( +authtiti +)) { + +93 +que +-> + `nd +(401); + +96 + `Reque +( +que +); + +98 + } +} + +100 +ArJsRequeHdrFuni + + gSecuryStgsSvi +:: + $wpClback +( +ArJsRequeHdrFuni + +Reque +, + +101 +AuthtitiPdi + +edi +) { + +102  [ +this +, +Reque +, +edi +]( +AsyncWebSvReque +* +que +, +JsV +& +js +) { + +103 +Authtiti + +authtiti + = + `authtiReque +( +que +); + +104 i(! + `edi +( +authtiti +)) { + +105 +que +-> + `nd +(401); + +108 + `Reque +( +que +, +js +); + +110 + } +} + +114 +Ur + + gADMIN_USER + = Ur( +FACTORY_ADMIN_USERNAME +, +FACTORY_ADMIN_PASSWORD +, +ue +); + +116 + gSecuryStgsSvi +:: + $SecuryStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +: + $SecuryMag +() { + +117 + } +} + +118 +SecuryStgsSvi +::~ + $SecuryStgsSvi +() { + +119 + } +} + +121 +ArRequeFrFuni + +SecuryStgsSvi +:: + $frReque +( +AuthtitiPdi + +edi +) { + +122  [ +this +, +edi +]( +AsyncWebSvReque +* +que +{  +ue +; }; + +123 + } +} + +126 +Authtiti + + gSecuryStgsSvi +:: + $authtiReque +( +AsyncWebSvReque +* +que +) { + +127  + `Authtiti +( +ADMIN_USER +); + +128 + } +} + +131 +ArRequeHdrFuni + + gSecuryStgsSvi +:: + $wpReque +( +ArRequeHdrFuni + +Reque +, + +132 +AuthtitiPdi + +edi +) { + +133  +Reque +; + +134 + } +} + +136 +ArJsRequeHdrFuni + + gSecuryStgsSvi +:: + $wpClback +( +ArJsRequeHdrFuni + +Reque +, + +137 +AuthtitiPdi + +edi +) { + +138  +Reque +; + +139 + } +} + + @lib/framework/SecuritySettingsService.h + +1 #ide +SecuryStgsSvi_h + + +2  + #SecuryStgsSvi_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +9  + ~"../../c/vsi.h +" + +11 #ide +FACTORY_ADMIN_USERNAME + + +12  + #FACTORY_ADMIN_USERNAME + "adm" + + ) + +15 #ide +FACTORY_ADMIN_PASSWORD + + +16  + #FACTORY_ADMIN_PASSWORD + "adm" + + ) + +19 #ide +FACTORY_GUEST_USERNAME + + +20  + #FACTORY_GUEST_USERNAME + "gue" + + ) + +23 #ide +FACTORY_GUEST_PASSWORD + + +24  + #FACTORY_GUEST_PASSWORD + "gue" + + ) + +27  + #SECURITY_SETTINGS_FILE + "/cfig/curyStgs.js" + + ) + +28  + #SECURITY_SETTINGS_PATH + "//curyStgs" + + ) + +30 #i +FT_ENABLED +( +FT_SECURITY +) + +32 as + cSecuryStgs + { + +33 + mpublic +: + +34 +Sg + +jwtSe +; + +35 + md +:: +li +< +Ur +> +urs +; + +37  + $ad +( +SecuryStgs +& +gs +, +JsObje +& +ro +) { + +39 +ro +["jwt_"] = +gs +. +jwtSe +; + +42 +JsAay + +urs + = +ro +. + `NeedAay +("users"); + +43  +Ur + +ur + : +gs +. +urs +) { + +44 +JsObje + +urRo + = +urs +. + `NeedObje +(); + +45 +urRo +["uame"] = +ur +. +uame +; + +46 +urRo +["sswd"] = +ur +. +sswd +; + +47 +urRo +["adm"] = +ur +. +adm +; + +51  +SUpdeResu + + $upde +( +JsObje +& +ro +, +SecuryStgs +& +gs +) { + +53 +gs +. +jwtSe + = +ro +["jwt_"] | +FACTORY_JWT_SECRET +; + +56 +gs +. +urs +. + `r +(); + +57 i( +ro +["urs"]. +is +< +JsAay +>()) { + +58  +JsV + +ur + : +ro +["urs"]. +as +< +JsAay +>()) { + +59 +gs +. +urs +. + `push_back +( + `Ur +( +ur +["username"], user["password"], user["admin"])); + +62 +gs +. +urs +. + `push_back +( + `Ur +( +FACTORY_ADMIN_USERNAME +, +FACTORY_ADMIN_PASSWORD +, +ue +)); + +63 +gs +. +urs +. + `push_back +( + `Ur +( +FACTORY_GUEST_USERNAME +, +FACTORY_GUEST_PASSWORD +, +l +)); + +65  +SUpdeResu +:: +CHANGED +; + +66 + } +} + +69 +ass + + gSecuryStgsSvi + : +public + +SfulSvi +< +SecuryStgs +>,ubli + gSecuryMag + { + +70 + gpublic +: + +71 +SecuryStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +); + +73  +beg +(); + +76 +Authtiti + +authti +(cڡ +Sg +& +uame +, cڡ Sg& +sswd +); + +77 +Authtiti + +authtiReque +( +AsyncWebSvReque +* +que +); + +78 +Sg + +geJWT +( +Ur +* +ur +); + +79 +ArRequeFrFuni + +frReque +( +AuthtitiPdi + +edi +); + +80 +ArRequeHdrFuni + +wpReque +(ArRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +); + +81 +ArJsRequeHdrFuni + +wpClback +(ArJsRequeHdrFuni +back +, +AuthtitiPdi + +edi +); + +83 + give +: + +84 +HpEndpot +< +SecuryStgs +> +_hpEndpot +; + +85 + gFSPsi +< + gSecuryStgs +> + g_fsPsi +; + +86 +ArduoJsJWT + + g_jwtHdr +; + +88  +cfiguJWTHdr +(); + +93 +Authtiti + +authtiJWT +( +Sg +& +jwt +); + +98 +boޗn + +videPayld +( +JsObje +& +rdPayld +, +Ur +* +ur +); + +103 as + cSecuryStgsSvi + : +public + +SecuryMag + { + +104 +public +: + +105 +SecuryStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +); + +106 ~ +SecuryStgsSvi +(); + +109 +Authtiti + +authtiReque +( +AsyncWebSvReque +* +que +); + +110 +ArRequeFrFuni + +frReque +( +AuthtitiPdi + +edi +); + +111 +ArRequeHdrFuni + +wpReque +(ArRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +); + +112 +ArJsRequeHdrFuni + +wpClback +(ArJsRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +); + + @lib/framework/StatefulService.cpp + +1  + ~ + +3 +upde_hdr_id_t + + gSUpdeHdrInfo +:: +cutUpdedHdrId + = 0; + + @lib/framework/StatefulService.h + +1 #ide +SfulSvi_h + + +2  + #SfulSvi_h + + + ) + +4  + ~ + +5  + ~ + +7  + ~
  • + +8  + ~ + +9 #ifde +ESP32 + + +10  + ~<䓹os/FeRTOS.h +> + +11  + ~<䓹os/mphr.h +> + +14 #ide +DEFAULT_BUFFER_SIZE + + +15  + #DEFAULT_BUFFER_SIZE + 1024 + + ) + +18 as + cSUpdeResu + { + +19 + mCHANGED + = 0, + +20 + mUNCHANGED +, + +21 + mERROR + + +24 + gme + < +tyme + + gT +> + +25 +usg + + gJsSUpd + = +d +:: +funi +< +SUpdeResu +( +JsObje +& +ro +, +T +& +gs +)>; + +27 + gme + < +tyme + + gT +> + +28 +usg + + gJsSRd + = +d +:: +funi +<( +T +& +gs +, + gJsObje +& + gro +)>; + +30  +size_t + + tupde_hdr_id_t +; + +31  + gd +:: + tfuni +<(cڡ + tSg +& + tigId +)> + tSUpdeClback +; + +33  + sSUpdeHdrInfo + { + +34  +upde_hdr_id_t + + mcutUpdedHdrId +; + +35 +upde_hdr_id_t + + m_id +; + +36 +SUpdeClback + + m_cb +; + +37 +bo + + m_lowRemove +; + +38 +SUpdeHdrInfo +( +SUpdeClback + +cb +, +bo + +lowRemove +) : + +39 +_id +(++ +cutUpdedHdrId +), +_cb +( +cb +), +_lowRemove +( +lowRemove +){}; + +40 } + tSUpdeHdrInfo_t +; + +42 + gme + < +ass + + gT +> + +43 as + cSfulSvi + { + +44 + mpublic +: + +45 +me + < +tyme +... +Args +> + +46 #ifde +ESP32 + + +47 + $SfulSvi +( +Args +&&... +gs +) : + +48 + `_e +( +d +:: +fwd +< +Args +>( +gs +)...), + `_acssMux +( + $xSemheCeRecursiveMux +()) { + +51 + $SfulSvi +( +Args +&&... +gs +: + `_e +( +d +:: +fwd +(args)...) { + +52 + } +} + +55 +upde_hdr_id_t + + $addUpdeHdr +( +SUpdeClback + +cb +, +bo + +lowRemove + = +ue +) { + +56 i(! +cb +) { + +59 +SUpdeHdrInfo_t + + `updeHdr +( +cb +, +lowRemove +); + +60 +_updeHdrs +. + `push_back +( +updeHdr +); + +61  +updeHdr +. +_id +; + +62 + } +} + +64  + $moveUpdeHdr +( +upde_hdr_id_t + +id +) { + +65 aut +i + = +_updeHdrs +. + `beg +(); i !_updeHdrs. + `d +();) { + +66 i((* +i +). +_lowRemove + && (*i). +_id + = +id +) { + +67 +i + = +_updeHdrs +. + `a +(i); + +69 ++ +i +; + +72 + } +} + +74 +SUpdeResu + +upde +( +d +:: +funi + +eUpd +, cڡ +Sg +& +igId +) { + +75 +begTni +(); + +76 +SUpdeResu + + gsu + = +eUpd +( +_e +); + +77 +dTni +(); + +78 i( + gsu + = +SUpdeResu +:: +CHANGED +) { + +79 +UpdeHdrs +( +igId +); + +81  + gsu +; + +84 +SUpdeResu + +updeWhoutPragi +( +d +:: +funi + +eUpd +) { + +85 +begTni +(); + +86 +SUpdeResu + + gsu + = +eUpd +( +_e +); + +87 +dTni +(); + +88  + gsu +; + +91 +SUpdeResu + +upde +( +JsObje +& +jsObje +, +JsSUpd +< +T +> +eUpd +, cڡ +Sg +& +igId +) { + +92 +begTni +(); + +93 +SUpdeResu + + gsu + = +eUpd +( +jsObje +, +_e +); + +94 +dTni +(); + +95 i( + gsu + = +SUpdeResu +:: +CHANGED +) { + +96 +UpdeHdrs +( +igId +); + +98  + gsu +; + +101 +SUpdeResu + +updeWhoutPragi +( +JsObje +& +jsObje +, +JsSUpd +< +T +> +eUpd +) { + +102 +begTni +(); + +103 +SUpdeResu + + gsu + = +eUpd +( +jsObje +, +_e +); + +104 +dTni +(); + +105  + gsu +; + +108  +ad +( +d +:: +funi +<( +T +&)> +eRd +) { + +109 +begTni +(); + +110 +eRd +( +_e +); + +111 +dTni +(); + +114  +ad +( +JsObje +& +jsObje +, +JsSRd +< +T +> +eRd +) { + +115 +begTni +(); + +116 +eRd +( +_e +, +jsObje +); + +117 +dTni +(); + +120  + $UpdeHdrs +(cڡ +Sg +& +igId +) { + +121 cڡ +SUpdeHdrInfo_t +& +updeHdr + : +_updeHdrs +) { + +122 +updeHdr +. + `_cb +( +igId +); + +124 + } +} + +126 + geed +: + +127 +T + +_e +; + +129 +le +  + $begTni +() { + +130 #ifde +ESP32 + + +131 + `xSemheTakeRecursive +( +_acssMux +, +ptMAX_DELAY +); + +133 + } +} + +135 +le +  + $dTni +() { + +136 #ifde +ESP32 + + +137 + `xSemheGiveRecursive +( +_acssMux +); + +139 + } +} + +141 + give +: + +142 #ifde +ESP32 + + +143 +SemheHd_t + +_acssMux +; + +145 + gd +:: +li +< +SUpdeHdrInfo_t +> +_updeHdrs +; + + @lib/framework/SystemStatus.cpp + +1  + ~ + +3 + gSyemStus +:: + $SyemStus +( +AsyncWebSv + * +rv +, +SecuryMag + * +curyMag +) { + +4 +rv +-> + ` +( +SYSTEM_STATUS_SERVICE_PATH +, + +5 +HTTP_GET +, + +6 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +SyemStus +:: +syemStus +, +this +, std:: +ahds +:: +_1 +), +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +7 + } +} + +9  + gSyemStus +:: + $syemStus +( +AsyncWebSvReque + * +que +) { + +10 +ut8_t + +_mem_r + = +em +:: +Syem +:: + `_mem +(); + +12 +AsyncJsReڣ + * +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_ESP_STATUS_SIZE +); + +13 +JsObje + +ro + = +ڣ +-> + `gRo +(); + +14 #ifde +ESP32 + + +15 +ro +["esp_platform"] = "esp32"; + +16 +ro +["max_loc_hp"] = +ESP +. + `gMaxAocHp +(); + +17 +ro +["pam_size"] = +ESP +. + `gPamSize +(); + +18 +ro +["_pam"] = +ESP +. + `gFePam +(); + +19 #i + `defed +( +ESP8266 +) + +20 +ro +["esp_platform"] = "esp8266"; + +21 +ro +["max_loc_hp"] = +ESP +. + `gMaxFeBlockSize +(); + +22 +ro +["hp_agmti"] = +ESP +. + `gHpFgmti +(); + +24 +ro +["u_eq_mhz"] = +ESP +. + `gCpuFqMHz +(); + +25 +ro +["_hp"] = +ESP +. + `gFeHp +(); + +26 +ro +["skch_size"] = +ESP +. + `gSkchSize +(); + +27 +ro +["_skch_a"] = +ESP +. + `gFeSkchS +(); + +28 +ro +["sdk_vsi"] = +ESP +. + `gSdkVsi +(); + +29 +ro +["ash_ch_size"] = +ESP +. + `gFshChSize +(); + +30 +ro +["ash_ch_d"] = +ESP +. + `gFshChSed +(); + +33 #ifde +ESP32 + + +34 +ro +["fs_tٮ"] = +SPIFFS +. + `tٮBys +(); + +35 +ro +["fs_ud"] = +SPIFFS +. + `udBys +(); + +36 #i + `defed +( +ESP8266 +) + +37 +FSInfo + +fs_fo +; + +38 +LeFS +. + `fo +( +fs_fo +); + +39 +ro +["fs_tٮ"] = +fs_fo +. +tٮBys +; + +40 +ro +["fs_ud"] = +fs_fo +. +udBys +; + +43 +ro +["uime"] = +uuid +:: +log +:: + `fm_timeamp_ms +(uuid:: + `g_uime_ms +(), 3); + +44 +ro +["_mem"] = +_mem_r +; + +46 +ڣ +-> + `tLgth +(); + +47 +que +-> + `nd +( +ڣ +); + +48 + } +} + + @lib/framework/SystemStatus.h + +1 #ide +SyemStus_h + + +2  + #SyemStus_h + + + ) + +4 #ifde +ESP32 + + +5  + ~ + +6  + ~ + +7  + ~ + +8 #i +defed +( +ESP8266 +) + +9  + ~ + +10  + ~ + +12  + ~ + +15  + ~ + +16  + ~ + +17  + ~ + +18  + ~ + +20  + ~ + +21  + ~"../../c/syem.h +" + +23  + #MAX_ESP_STATUS_SIZE + 1024 + + ) + +24  + #SYSTEM_STATUS_SERVICE_PATH + "//syemStus" + + ) + +26 as + cSyemStus + { + +27 + mpublic +: + +28 +SyemStus +( +AsyncWebSv + * +rv +, +SecuryMag + * +curyMag +); + +30 + mive +: + +31  +syemStus +( +AsyncWebSvReque + * +que +); + + @lib/framework/UploadFirmwareService.cpp + +1  + ~ + +3 + gUdFmweSvi +:: + $UdFmweSvi +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +) : + +4 + $_curyMag +( +curyMag +) { + +5 +rv +-> + ` +( +UPLOAD_FIRMWARE_PATH +, + +6 +HTTP_POST +, + +7 +d +:: + `bd +(& +UdFmweSvi +:: +udCome +, +this +, std:: +ahds +:: +_1 +), + +8 +d +:: + `bd +(& +UdFmweSvi +:: +hdUd +, + +9 +this +, + +10 +d +:: +ahds +:: +_1 +, + +11 +d +:: +ahds +:: +_2 +, + +12 +d +:: +ahds +:: +_3 +, + +13 +d +:: +ahds +:: +_4 +, + +14 +d +:: +ahds +:: +_5 +, + +15 +d +:: +ahds +:: +_6 +)); + +16 #ifde +ESP8266 + + +17 +Upde +. + `runAsync +( +ue +); + +19 + } +} + +21  + gUdFmweSvi +:: + $hdUd +( +AsyncWebSvReque +* +que +, + +22 cڡ +Sg +& +fame +, + +23 +size_t + +dex +, + +24 +ut8_t +* +da +, + +25 +size_t + +n +, + +26 +bo + +f +) { + +27 i(! +dex +) { + +28 +Authtiti + +authtiti + = +_curyMag +-> + `authtiReque +( +que +); + +29 i( +AuthtitiPdis +:: + `IS_ADMIN +( +authtiti +)) { + +30 i( +Upde +. + `beg +( +que +-> + `cڋLgth +())) { + +32 +que +-> + `Disc +( +UdFmweSvi +:: +hdElyDisc +); + +35 +Upde +. + `tE +( +Sl +); + +36 + `hdE +( +que +, 500); + +40 + `hdE +( +que +, 403); + +45 i(! +que +-> +_mpObje +) { + +46 i( +Upde +. + `wre +( +da +, +n +) !=en) { + +47 +Upde +. + `tE +( +Sl +); + +48 + `hdE +( +que +, 500); + +50 i( +f +) { + +51 i(! +Upde +. + `d +( +ue +)) { + +52 +Upde +. + `tE +( +Sl +); + +53 + `hdE +( +que +, 500); + +57 + } +} + +59  + gUdFmweSvi +:: + $udCome +( +AsyncWebSvReque +* +que +) { + +61 i(! +que +-> +_mpObje +) { + +62 +que +-> + `Disc +( +RetSvi +:: +tNow +); + +63 +AsyncWebSvReڣ +* +ڣ + = +que +-> + `begReڣ +(200); + +64 +que +-> + `nd +( +ڣ +); + +66 + } +} + +68  + gUdFmweSvi +:: + $hdE +( +AsyncWebSvReque +* +que +,  +code +) { + +70 i( +que +-> +_mpObje +) { + +74 +que +-> +_mpObje + = +w + ( +code +); + +75 +AsyncWebSvReڣ +* +ڣ + = +que +-> + `begReڣ +( +code +); + +76 +que +-> + `nd +( +ڣ +); + +77 + } +} + +79  + gUdFmweSvi +:: + $hdElyDisc +() { + +80 #ifde +ESP32 + + +81 +Upde +. + `abt +(); + +82 #i + `defed +( +ESP8266 +) + +83 +Upde +. + `d +(); + +85 + } +} + + @lib/framework/UploadFirmwareService.h + +1 #ide +UdFmweSvi_h + + +2  + #UdFmweSvi_h + + + ) + +4  + ~ + +6 #ifde +ESP32 + + +7  + ~ + +8  + ~ + +9  + ~ + +10 #i +defed +( +ESP8266 +) + +11  + ~ + +12  + ~ + +15  + ~ + +16  + ~ + +17  + ~ + +19  + #UPLOAD_FIRMWARE_PATH + "//udFmwe" + + ) + +21 as + cUdFmweSvi + { + +22 + mpublic +: + +23 +UdFmweSvi +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +); + +25 + mive +: + +26 +SecuryMag +* +_curyMag +; + +27  +hdUd +( +AsyncWebSvReque +* +que +, + +28 cڡ +Sg +& +fame +, + +29 +size_t + +dex +, + +30 +ut8_t +* +da +, + +31 +size_t + +n +, + +32 +bo + +f +); + +33  +udCome +( +AsyncWebSvReque +* +que +); + +34  +hdE +( +AsyncWebSvReque +* +que +,  +code +); + +35  +hdElyDisc +(); + + @lib/framework/WWWData.h + +1  + ~ + +3 cڡ +ut8_t + + gESP_REACT_DATA_0 +[] + gPROGMEM + = { + +414 cڡ +ut8_t + + gESP_REACT_DATA_1 +[] + gPROGMEM + = { + +426 cڡ +ut8_t + + gESP_REACT_DATA_2 +[] + gPROGMEM + = { + +445 cڡ +ut8_t + + gESP_REACT_DATA_3 +[] + gPROGMEM + = { + +480 cڡ +ut8_t + + gESP_REACT_DATA_4 +[] + gPROGMEM + = { + +1257 cڡ +ut8_t + + gESP_REACT_DATA_5 +[] + gPROGMEM + = { + +2039 cڡ +ut8_t + + gESP_REACT_DATA_6 +[] + gPROGMEM + = { + +2811 cڡ +ut8_t + + gESP_REACT_DATA_7 +[] + gPROGMEM + = { + +4044 cڡ +ut8_t + + gESP_REACT_DATA_8 +[] + gPROGMEM + = { + +4084 cڡ +ut8_t + + gESP_REACT_DATA_9 +[] + gPROGMEM + = { + +12266 cڡ +ut8_t + + gESP_REACT_DATA_10 +[] + gPROGMEM + = { + +12321 cڡ +ut8_t + + gESP_REACT_DATA_11 +[] + gPROGMEM + = { + +12340  + gd +:: + tfuni +<(cڡ + tSg +& + turi +, cڡ Sg& + tcڋTy +, cڡ + tut8_t + * + tcڋ +, + tsize_t + + tn +)> + tRouRegitiHdr +; + +12342 as + cWWWDa + { + +12343 + mpublic +: + +12344  + $giRous +( +RouRegitiHdr + +hdr +) { + +12345 + `hdr +("/p/ic.g", "image/g", +ESP_REACT_DATA_0 +, 8148); + +12346 + `hdr +("/p/mi.js", "iti/js", +ESP_REACT_DATA_1 +, 168); + +12347 + `hdr +("/css/robo.css", "xt/css", +ESP_REACT_DATA_2 +, 306); + +12348 + `hdr +("/vic.ico", "image/vnd.mioso.ic", +ESP_REACT_DATA_3 +, 628); + +12349 + `hdr +("/fts/li.woff2", "ft/woff2", +ESP_REACT_DATA_4 +, 15463); + +12350 + `hdr +("/fts/me.woff2", "ft/woff2", +ESP_REACT_DATA_5 +, 15575); + +12351 + `hdr +("/fts/.woff2", "ft/woff2", +ESP_REACT_DATA_6 +, 15367); + +12352 + `hdr +("/js/0.a9.js", "iti/javast", +ESP_REACT_DATA_7 +, 24581); + +12353 + `hdr +("/js/1.b30b.js", "iti/javast", +ESP_REACT_DATA_8 +, 735); + +12354 + `hdr +("/js/2.8e22.js", "iti/javast", +ESP_REACT_DATA_9 +, 163600); + +12355 + `hdr +("/js/2.8e22.js.LICENSE.txt", "xt/a", +ESP_REACT_DATA_10 +, 1023); + +12356 + `hdr +("/dex.html", "xt/html", +ESP_REACT_DATA_11 +, 301); + +12358 + } +}; + + @lib/framework/WebSocketTxRx.h + +1 #ide +WebSockTxRx_h + + +2  + #WebSockTxRx_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +8  + #WEB_SOCKET_CLIENT_ID_MSG_SIZE + 128 + + ) + +10  + #WEB_SOCKET_ORIGIN + "websock" + + ) + +11  + #WEB_SOCKET_ORIGIN_CLIENT_ID_PREFIX + "websock:" + + ) + +13 + gme + < +ass + + gT +> + +14 as + cWebSockC + { + +15 + meed +: + +16 +SfulSvi +< +T +>* +_efulSvi +; + +17 +AsyncWebSv +* + m_rv +; + +18 +AsyncWebSock + + m_webSock +; + +19 +size_t + + m_bufrSize +; + +21 +WebSockC +( +SfulSvi +< +T +>* +efulSvi +, + +22 +AsyncWebSv +* +rv +, + +23 cڡ* +webSockPh +, + +24 +SecuryMag +* +curyMag +, + +25 +AuthtitiPdi + +authtitiPdi +, + +26 +size_t + +bufrSize +) : + +27 +_efulSvi +( +efulSvi +), +_rv +( +rv +), +_webSock +( +webSockPh +), + $_bufrSize +( +bufrSize +) { + +28 +_webSock +. + `tFr +( +curyMag +-> + `frReque +( +authtitiPdi +)); + +29 +_webSock +. + `Evt +( +d +:: + `bd +(& +WebSockC +:: +WSEvt +, + +30 +this +, + +31 +d +:: +ahds +:: +_1 +, + +32 +d +:: +ahds +:: +_2 +, + +33 +d +:: +ahds +:: +_3 +, + +34 +d +:: +ahds +:: +_4 +, + +35 +d +:: +ahds +:: +_5 +, + +36 +d +:: +ahds +:: +_6 +)); + +37 +_rv +-> + `addHdr +(& +_webSock +); + +38 +_rv +-> + ` +( +webSockPh +, +HTTP_GET +, +d +:: + `bd +(& +WebSockC +:: +fbidd +, +this +, std:: +ahds +:: +_1 +)); + +41 + `WebSockC +( +SfulSvi +< +T +>* +efulSvi +, + +42 +AsyncWebSv +* +rv +, + +43 cڡ* +webSockPh +, + +44 +size_t + +bufrSize +) : + +45 + `_efulSvi +( +efulSvi +), + `_rv +( +rv +), + `_webSock +( +webSockPh +), + $_bufrSize +( +bufrSize +) { + +46 +_webSock +. + `Evt +( +d +:: + `bd +(& +WebSockC +:: +WSEvt +, + +47 +this +, + +48 +d +:: +ahds +:: +_1 +, + +49 +d +:: +ahds +:: +_2 +, + +50 +d +:: +ahds +:: +_3 +, + +51 +d +:: +ahds +:: +_4 +, + +52 +d +:: +ahds +:: +_5 +, + +53 +d +:: +ahds +:: +_6 +)); + +54 +_rv +-> + `addHdr +(& +_webSock +); + +55 + } +} + +57 +vtu +  +WSEvt +( +AsyncWebSock +* +rv +, + +58 +AsyncWebSockCl +* + +, + +59 +AwsEvtTy + +ty +, + +60 * +g +, + +61 +ut8_t +* +da +, + +62 +size_t + +n +) = 0; + +64 +Sg + + $Id +( +AsyncWebSockCl +* + +) { + +65  +WEB_SOCKET_ORIGIN_CLIENT_ID_PREFIX + + + `Sg +( + +-> + `id +()); + +66 + } +} + +68 + give +: + +69  + $fbidd +( +AsyncWebSvReque +* +que +) { + +70 +que +-> + `nd +(403); + +71 + } +} + +74 + gme + < +ass + + gT +> + +75 +ass + + gWebSockTx + : +vtu + +public + +WebSockC +< +T +> { + +76 +public +: + +77 +WebSockTx +( +JsSRd +< +T +> +eRd +, + +78 +SfulSvi +< +T +>* +efulSvi +, + +79 +AsyncWebSv +* +rv +, + +80 cڡ* +webSockPh +, + +81 +SecuryMag +* +curyMag +, + +82 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +83 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +84 +WebSockC +< +T +>( +efulSvi +, + +85 + grv +, + +86 + gwebSockPh +, + +87 + gcuryMag +, + +88 + gauthtitiPdi +, + +89 + gbufrSize +), + +90 +_eRd +( +eRd +) { + +91 + gWebSockC +< + gT +>:: +_efulSvi +-> +addUpdeHdr +( + +92 [&](cڡ +Sg +& +igId +{ +smDa +( +nuαr +, origId); }, +l +); + +95 +WebSockTx +( +JsSRd +< +T +> +eRd +, + +96 +SfulSvi +< +T +>* +efulSvi +, + +97 +AsyncWebSv +* +rv +, + +98 cڡ* +webSockPh +, + +99 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +100 +WebSockC +< +T +>( +efulSvi +, + grv +, + gwebSockPh +, + gbufrSize +), +_eRd +( +eRd +) { + +101 + gWebSockC +< + gT +>:: +_efulSvi +-> +addUpdeHdr +( + +102 [&](cڡ +Sg +& +igId +{ +smDa +( +nuαr +, origId); }, +l +); + +105 + geed +: + +106 +vtu +  +WSEvt +( +AsyncWebSock +* +rv +, + +107 +AsyncWebSockCl +* + +, + +108 +AwsEvtTy + +ty +, + +109 * +g +, + +110 +ut8_t +* +da +, + +111 +size_t + +n +) { + +112 i( + gty + = +WS_EVT_CONNECT +) { + +114 +smId +( + +); + +115 +smDa +( + +, +WEB_SOCKET_ORIGIN +); + +119 + give +: + +120 +JsSRd +< +T +> +_eRd +; + +122  +smId +( +AsyncWebSockCl +* + +) { + +123 +DymicJsDocumt + + gjsDocumt + = DymicJsDocumt( +WEB_SOCKET_CLIENT_ID_MSG_SIZE +); + +124 +JsObje + + gro + = +jsDocumt +. +to +(); + +125 + gro +["type"] = "id"; + +126 + gro +["id"] = +WebSockC +< +T +>:: +Id +( + +); + +127 +size_t + + gn + = +msuJs +( +jsDocumt +); + +128 +AsyncWebSockMesgeBufr +* + gbufr + = +WebSockC +< +T +>:: +_webSock +. +makeBufr +( +n +); + +129 i( + gbufr +) { + +130 +rlizeJs +( +jsDocumt +, (*) +bufr +-> +g +(), +n + + 1); + +131 + g +-> +xt +( +bufr +); + +142  +smDa +( +AsyncWebSockCl +* + +, cڡ +Sg +& +igId +) { + +143 +DymicJsDocumt + + gjsDocumt + = DymicJsDocumt( +WebSockC +< +T +>:: +_bufrSize +); + +144 +JsObje + + gro + = +jsDocumt +. +to +(); + +145 + gro +["type"] = "payload"; + +146 + gro +["ig_id"] = +igId +; + +147 +JsObje + + gyld + = +ro +. +NeedObje +("payload"); + +148 + gWebSockC +< + gT +>:: +_efulSvi +-> +ad +( +yld +, +_eRd +); + +150 +size_t + + gn + = +msuJs +( +jsDocumt +); + +151 +AsyncWebSockMesgeBufr +* + gbufr + = +WebSockC +< +T +>:: +_webSock +. +makeBufr +( +n +); + +152 i( + gbufr +) { + +153 +rlizeJs +( +jsDocumt +, (*) +bufr +-> +g +(), +n + + 1); + +154 i( + g +) { + +155 + g +-> +xt +( +bufr +); + +157 + gWebSockC +< + gT +>:: +_webSock +. +xtA +( +bufr +); + +163 + gme + < +ass + + gT +> + +164 +ass + + gWebSockRx + : +vtu + +public + +WebSockC +< +T +> { + +165 +public +: + +166 +WebSockRx +( +JsSUpd +< +T +> +eUpd +, + +167 +SfulSvi +< +T +>* +efulSvi +, + +168 +AsyncWebSv +* +rv +, + +169 cڡ* +webSockPh +, + +170 +SecuryMag +* +curyMag +, + +171 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +172 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +173 +WebSockC +< +T +>( +efulSvi +, + +174 + grv +, + +175 + gwebSockPh +, + +176 + gcuryMag +, + +177 + gauthtitiPdi +, + +178 + gbufrSize +), + +179 +_eUpd +( +eUpd +) { + +182 +WebSockRx +( +JsSUpd +< +T +> +eUpd +, + +183 +SfulSvi +< +T +>* +efulSvi +, + +184 +AsyncWebSv +* +rv +, + +185 cڡ* +webSockPh +, + +186 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +187 +WebSockC +< +T +>( +efulSvi +, + grv +, + gwebSockPh +, + gbufrSize +), +_eUpd +( +eUpd +) { + +190 + geed +: + +191 +vtu +  +WSEvt +( +AsyncWebSock +* +rv +, + +192 +AsyncWebSockCl +* + +, + +193 +AwsEvtTy + +ty +, + +194 * +g +, + +195 +ut8_t +* +da +, + +196 +size_t + +n +) { + +197 i( + gty + = +WS_EVT_DATA +) { + +198 +AwsFmeInfo +* +fo + = (AwsFmeInfo*) +g +; + +199 i( + gfo +-> + gf + && info-> + gdex + =0 && +fo +-> +n + ==en) { + +200 i( +fo +-> +code + = +WS_TEXT +) { + +201 +DymicJsDocumt + +jsDocumt + = DymicJsDocumt( +WebSockC +< +T +>:: +_bufrSize +); + +202 +DerliziE + + gr + = +derlizeJs +( +jsDocumt +, (*) +da +); + +203 i(! + gr + && + gjsDocumt +. + gis +< + gJsObje +>()) { + +204 +JsObje + + gjsObje + = +jsDocumt +. +as +(); + +205 + gWebSockC +< + gT +>:: +_efulSvi +-> +upde +( + +206 +jsObje +, +_eUpd +, +WebSockC +< +T +>:: +Id +( + +)); + +213 + give +: + +214 +JsSUpd +< +T +> +_eUpd +; + +217 + gme + < +ass + + gT +> + +218 +ass + + gWebSockTxRx + : +public + +WebSockTx +< +T +>,ubli + gWebSockRx +< + gT +> { + +219 + gpublic +: + +220 +WebSockTxRx +( +JsSRd +< +T +> +eRd +, + +221 +JsSUpd +< +T +> +eUpd +, + +222 +SfulSvi +< +T +>* +efulSvi +, + +223 +AsyncWebSv +* +rv +, + +224 cڡ* +webSockPh +, + +225 +SecuryMag +* +curyMag +, + +226 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +227 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +228 +WebSockC +< +T +>( +efulSvi +, + +229 + grv +, + +230 + gwebSockPh +, + +231 + gcuryMag +, + +232 + gauthtitiPdi +, + +233 + gbufrSize +), + +234 + gWebSockTx +< + gT +>( + geRd +, + +235 + gefulSvi +, + +236 + grv +, + +237 + gwebSockPh +, + +238 + gcuryMag +, + +239 + gauthtitiPdi +, + +240 + gbufrSize +), + +241 + gWebSockRx +< + gT +>( + geUpd +, + +242 + gefulSvi +, + +243 + grv +, + +244 + gwebSockPh +, + +245 + gcuryMag +, + +246 + gauthtitiPdi +, + +247 + gbufrSize +) { + +250 +WebSockTxRx +( +JsSRd +< +T +> +eRd +, + +251 +JsSUpd +< +T +> +eUpd +, + +252 +SfulSvi +< +T +>* +efulSvi +, + +253 +AsyncWebSv +* +rv +, + +254 cڡ* +webSockPh +, + +255 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +256 +WebSockC +< +T +>( +efulSvi +, + grv +, + gwebSockPh +, + gbufrSize +), + +257 + gWebSockTx +< + gT +>( + geRd +, + gefulSvi +, + grv +, + gwebSockPh +, + gbufrSize +), + +258 + gWebSockRx +< + gT +>( + geUpd +, + gefulSvi +, + grv +, + gwebSockPh +, + gbufrSize +) { + +261 + geed +: + +262  +WSEvt +( +AsyncWebSock +* +rv +, + +263 +AsyncWebSockCl +* + +, + +264 +AwsEvtTy + +ty +, + +265 * +g +, + +266 +ut8_t +* +da +, + +267 +size_t + +n +) { + +268 + gWebSockRx +< + gT +>:: +WSEvt +( +rv +, + +, +ty +, +g +, +da +, +n +); + +269 + gWebSockTx +< + gT +>:: +WSEvt +( +rv +, + +, +ty +, +g +, +da +, +n +); + + @lib/framework/WiFiScanner.cpp + +1  + ~ + +3 + gWiFiS” +:: + $WiFiS” +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +) { + +4 +rv +-> + ` +( +SCAN_NETWORKS_SERVICE_PATH +, + +5 +HTTP_GET +, + +6 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +WiFiS” +:: +snNwks +, +this +, std:: +ahds +:: +_1 +), + +7 +AuthtitiPdis +:: +IS_ADMIN +)); + +8 +rv +-> + ` +( +LIST_NETWORKS_SERVICE_PATH +, + +9 +HTTP_GET +, + +10 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +WiFiS” +:: +liNwks +, +this +, std:: +ahds +:: +_1 +), + +11 +AuthtitiPdis +:: +IS_ADMIN +)); + +12 + } +}; + +14  + gWiFiS” +:: + $snNwks +( +AsyncWebSvReque +* +que +) { + +15 i( +WiFi +. + `snCome +() != -1) { + +16 +WiFi +. + `snDe +(); + +17 +WiFi +. + `snNwks +( +ue +); + +19 +que +-> + `nd +(202); + +20 + } +} + +22  + gWiFiS” +:: + $liNwks +( +AsyncWebSvReque +* +que +) { + +23  +numNwks + = +WiFi +. + `snCome +(); + +24 i( +numNwks + > -1) { + +25 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_WIFI_SCANNER_SIZE +); + +26 +JsObje + +ro + = +ڣ +-> + `gRo +(); + +27 +JsAay + +twks + = +ro +. + `NeedAay +("networks"); + +28  +i + = 0; i < +numNwks +; i++) { + +29 +JsObje + +twk + = +twks +. + `NeedObje +(); + +30 +twk +["rssi"] = +WiFi +. + `RSSI +( +i +); + +31 +twk +["ssid"] = +WiFi +. + `SSID +( +i +); + +32 +twk +["bssid"] = +WiFi +. + `BSSIDr +( +i +); + +33 +twk +["chl"] = +WiFi +. + `chl +( +i +); + +34 #ifde +ESP32 + + +35 +twk +["yi_ty"] = ( +ut8_t +) +WiFi +. + `yiTy +( +i +); + +36 #i + `defed +( +ESP8266 +) + +37 +twk +["yi_ty"] = + `cvtEnyiTy +( +WiFi +. + `yiTy +( +i +)); + +40 +ڣ +-> + `tLgth +(); + +41 +que +-> + `nd +( +ڣ +); + +42 } i( +numNwks + == -1) { + +43 +que +-> + `nd +(202); + +45 + `snNwks +( +que +); + +47 + } +} + +49 #ifde +ESP8266 + + +55 +ut8_t + + gWiFiS” +:: + $cvtEnyiTy +( +ut8_t + +yiTy +) { + +56  +yiTy +) { + +57  +ENC_TYPE_NONE +: + +58  +AUTH_OPEN +; + +59  +ENC_TYPE_WEP +: + +60  +AUTH_WEP +; + +61  +ENC_TYPE_TKIP +: + +62  +AUTH_WPA_PSK +; + +63  +ENC_TYPE_CCMP +: + +64  +AUTH_WPA2_PSK +; + +65  +ENC_TYPE_AUTO +: + +66  +AUTH_WPA_WPA2_PSK +; + +69 + } +} + + @lib/framework/WiFiScanner.h + +1 #ide +WiFiS”_h + + +2  + #WiFiS”_h + + + ) + +4 #ifde +ESP32 + + +5  + ~ + +6  + ~ + +7 #i +defed +( +ESP8266 +) + +8  + ~ + +9  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +17  + #SCAN_NETWORKS_SERVICE_PATH + "//snNwks" + + ) + +18  + #LIST_NETWORKS_SERVICE_PATH + "//liNwks" + + ) + +20  + #MAX_WIFI_SCANNER_SIZE + 1024 + + ) + +22 as + cWiFiS” + { + +23 + mpublic +: + +24 +WiFiS” +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +); + +26 + mive +: + +27  +snNwks +( +AsyncWebSvReque +* +que +); + +28  +liNwks +( +AsyncWebSvReque +* +que +); + +30 #ifde +ESP8266 + + +31 +ut8_t + +cvtEnyiTy +(ut8_ +yiTy +); + + @lib/framework/WiFiSettingsService.cpp + +1  + ~ + +3 + gWiFiStgsSvi +:: + $WiFiStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +) + +4 : + `_hpEndpot +( +WiFiStgs +:: +ad +, WiFiStgs:: +upde +, +this +, +rv +, +WIFI_SETTINGS_SERVICE_PATH +, +curyMag +) + +5 , + `_fsPsi +( +WiFiStgs +:: +ad +, WiFiStgs:: +upde +, +this +, +fs +, +WIFI_SETTINGS_FILE +) + +6 , + $_ϡCiAem +(0) { + +9 i( +WiFi +. + `gMode +(! +WIFI_OFF +) { + +10 +WiFi +. + `mode +( +WIFI_OFF +); + +14 +WiFi +. + `rsit +( +l +); + +15 +WiFi +. + `tAutoRec +( +l +); + +16 #ifde +ESP32 + + +18 +WiFi +. + `mode +( +WIFI_MODE_MAX +); + +19 +WiFi +. + `mode +( +WIFI_MODE_NULL +); + +20 +WiFi +. + `Evt +( +d +:: + `bd +(& +WiFiStgsSvi +:: +StiModeDisced +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), + +21 +WiFiEvt_t +:: +SYSTEM_EVENT_STA_DISCONNECTED +); + +22 +WiFi +. + `Evt +( +d +:: + `bd +(& +WiFiStgsSvi +:: +StiModeSt +, +this +, std:: +ahds +:: +_1 +, std::ahds:: +_2 +), +WiFiEvt_t +:: +SYSTEM_EVENT_STA_STOP +); + +23 #i + `defed +( +ESP8266 +) + +32 +_StiModeDiscedHdr + = +WiFi +. + `StiModeDisced +( +d +:: + `bd +(& +WiFiStgsSvi +:: +StiModeDisced +, +this +, std:: +ahds +:: +_1 +)); + +35 + `addUpdeHdr +([&](cڡ +Sg + & +igId +{ + `cfiguWiFiCi +(); }, +l +); + +36 + } +} + +38  + gWiFiStgsSvi +:: + $beg +() { + +39 +_fsPsi +. + `adFromFS +(); + +40 + `cfiguWiFiCi +(); + +41 + } +} + +43  + gWiFiStgsSvi +:: + $cfiguWiFiCi +() { + +45 +_ϡCiAem + = 0; + +48 #ifde +ESP32 + + +49 i( +WiFi +. + `disc +( +ue +)) { + +50 +_pg + = +ue +; + +52 #i + `defed +( +ESP8266 +) + +53 +WiFi +. + `disc +( +ue +); + +55 + } +} + +57  + gWiFiStgsSvi +:: + $lo +() { + +58  +cutMlis + = + `mlis +(); + +59 i(! +_ϡCiAem + || ()( +cutMlis + - _ϡCiAem> +WIFI_RECONNECTION_DELAY +) { + +60 +_ϡCiAem + = +cutMlis +; + +61 + `mageSTA +(); + +63 + } +} + +65  + gWiFiStgsSvi +:: + $mageSTA +() { + +67 i( +WiFi +. + `isCed +(|| +_e +. +ssid +. + `ngth +() == 0) { + +71 i(( +WiFi +. + `gMode +(& +WIFI_STA +) == 0) { + +73 i( +_e +. +icIPCfig +) { + +75 +WiFi +. + `cfig +( +_e +. +lolIP +, _e. +gewayIP +, _e. +subtMask +, _e. +dnsIP1 +, _e. +dnsIP2 +); + +78 #ifde +ESP32 + + +79 +WiFi +. + `cfig +( +INADDR_NONE +, INADDR_NONE, INADDR_NONE); + +80 #i + `defed +( +ESP8266 +) + +81 +WiFi +. + `cfig +( +INADDR_ANY +, INADDR_ANY, INADDR_ANY); + +85 #ifde +ESP32 + + +86 +WiFi +. + `tHome +( +_e +. +home +. + `c_r +()); + +87 #i + `defed +( +ESP8266 +) + +88 +WiFi +. + `home +( +_e +. +home +); + +91 +WiFi +. + `beg +( +_e +. +ssid +. + `c_r +(), _e. +sswd +.c_str()); + +93 + } +} + +95 #ifde +ESP32 + + +96  + gWiFiStgsSvi +:: + $StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +97 +WiFi +. + `disc +( +ue +); + +98 + } +} + +99  + gWiFiStgsSvi +:: + $StiModeSt +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +100 i( +_pg +) { + +101 +_ϡCiAem + = 0; + +102 +_pg + = +l +; + +104 + } +} + +105 #i +defed +( +ESP8266 +) + +106  + gWiFiStgsSvi +:: + $StiModeDisced +(cڡ +WiFiEvtStiModeDisced + & +evt +) { + +107 +WiFi +. + `disc +( +ue +); + +108 + } +} + + @lib/framework/WiFiSettingsService.h + +1 #ide +WiFiStgsSvi_h + + +2  + #WiFiStgsSvi_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +9  + #WIFI_SETTINGS_FILE + "/cfig/wifiStgs.js" + + ) + +10  + #WIFI_SETTINGS_SERVICE_PATH + "//wifiStgs" + + ) + +11  + #WIFI_RECONNECTION_DELAY + 1000 * 30 + + ) + +13 #ide +FACTORY_WIFI_SSID + + +14  + #FACTORY_WIFI_SSID + "" + + ) + +17 #ide +FACTORY_WIFI_PASSWORD + + +18  + #FACTORY_WIFI_PASSWORD + "" + + ) + +21 #ide +FACTORY_WIFI_HOSTNAME + + +22  + #FACTORY_WIFI_HOSTNAME + "" + + ) + +25 as + cWiFiStgs + { + +26 + mpublic +: + +28 +Sg + +ssid +; + +29 +Sg + + msswd +; + +30 +Sg + + mhome +; + +31 +bo + + micIPCfig +; + +34 +IPAddss + + mlolIP +; + +35 +IPAddss + + mgewayIP +; + +36 +IPAddss + + msubtMask +; + +37 +IPAddss + + mdnsIP1 +; + +38 +IPAddss + + mdnsIP2 +; + +40  + $ad +( +WiFiStgs +& +gs +, +JsObje +& +ro +) { + +42 +ro +["ssid"] = +gs +. +ssid +; + +43 +ro +["sswd"] = +gs +. +sswd +; + +44 +ro +["home"] = +gs +. +home +; + +45 +ro +["ic__cfig"] = +gs +. +icIPCfig +; + +48 +JsUts +:: + `wreIP +( +ro +, "lol_", +gs +. +lolIP +); + +49 +JsUts +:: + `wreIP +( +ro +, "geway_", +gs +. +gewayIP +); + +50 +JsUts +:: + `wreIP +( +ro +, "subt_mask", +gs +. +subtMask +); + +51 +JsUts +:: + `wreIP +( +ro +, "dns__1", +gs +. +dnsIP1 +); + +52 +JsUts +:: + `wreIP +( +ro +, "dns__2", +gs +. +dnsIP2 +); + +55  +SUpdeResu + + $upde +( +JsObje +& +ro +, +WiFiStgs +& +gs +) { + +57 +gs +. +ssid + = +ro +["ssid"] | +FACTORY_WIFI_SSID +; + +58 +gs +. +sswd + = +ro +["sswd"] | +FACTORY_WIFI_PASSWORD +; + +59 +gs +. +home + = +ro +["home"] | +FACTORY_WIFI_HOSTNAME +; + +60 +gs +. +icIPCfig + = +ro +["ic__cfig"] | +l +; + +63 +JsUts +:: + `adIP +( +ro +, "lol_", +gs +. +lolIP +); + +64 +JsUts +:: + `adIP +( +ro +, "geway_", +gs +. +gewayIP +); + +65 +JsUts +:: + `adIP +( +ro +, "subt_mask", +gs +. +subtMask +); + +66 +JsUts +:: + `adIP +( +ro +, "dns__1", +gs +. +dnsIP1 +); + +67 +JsUts +:: + `adIP +( +ro +, "dns__2", +gs +. +dnsIP2 +); + +70 i( +gs +. +dnsIP1 + = +INADDR_NONE + && stgs. +dnsIP2 + != INADDR_NONE) { + +71 +gs +. +dnsIP1 + = stgs. +dnsIP2 +; + +72 +gs +. +dnsIP2 + = +INADDR_NONE +; + +78 i( +gs +. +icIPCfig + && + +79 ( +gs +. +lolIP + = +INADDR_NONE + || stgs. +gewayIP + =INADDR_NONE || stgs. +subtMask + == INADDR_NONE)) { + +80 +gs +. +icIPCfig + = +l +; + +82  +SUpdeResu +:: +CHANGED +; + +83 + } +} + +86 +ass + + gWiFiStgsSvi + : +public + +SfulSvi +< +WiFiStgs +> { + +87 +public +: + +88 +WiFiStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +, +SecuryMag +* +curyMag +); + +90  +beg +(); + +91  +lo +(); + +93 + give +: + +94 +HpEndpot +< +WiFiStgs +> +_hpEndpot +; + +95 + gFSPsi +< + gWiFiStgs +> + g_fsPsi +; + +96  + g_ϡCiAem +; + +98 #ifde +ESP32 + + +99 +bo + + g_pg +; + +100  +StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +101  +StiModeSt +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +102 #i +defed +( +ESP8266 +) + +103 +WiFiEvtHdr + + g_StiModeDiscedHdr +; + +104  +StiModeDisced +(cڡ +WiFiEvtStiModeDisced +& +evt +); + +107  +cfiguWiFiCi +(); + +108  +mageSTA +(); + + @lib/framework/WiFiStatus.cpp + +1  + ~ + +3 + gWiFiStus +:: + $WiFiStus +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +) { + +4 +rv +-> + ` +( +WIFI_STATUS_SERVICE_PATH +, + +5 +HTTP_GET +, + +6 +curyMag +-> + `wpReque +( +d +:: + `bd +(& +WiFiStus +:: +wifiStus +, +this +, std:: +ahds +:: +_1 +), + +7 +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +8 #ifde +ESP32 + + +9 +WiFi +. + `Evt +( +StiModeCed +, +WiFiEvt_t +:: +SYSTEM_EVENT_STA_CONNECTED +); + +10 +WiFi +. + `Evt +( +StiModeDisced +, +WiFiEvt_t +:: +SYSTEM_EVENT_STA_DISCONNECTED +); + +11 +WiFi +. + `Evt +( +StiModeGIP +, +WiFiEvt_t +:: +SYSTEM_EVENT_STA_GOT_IP +); + +12 #i + `defed +( +ESP8266 +) + +13 +_StiModeCedHdr + = +WiFi +. + `StiModeCed +( +StiModeCed +); + +14 +_StiModeDiscedHdr + = +WiFi +. + `StiModeDisced +( +StiModeDisced +); + +15 +_StiModeGIPHdr + = +WiFi +. + `StiModeGIP +( +StiModeGIP +); + +17 + } +} + +19 #ifde +ESP32 + + +20  + gWiFiStus +:: + $StiModeCed +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +22 + } +} + +24  + gWiFiStus +:: + $StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +27 + } +} + +29  + gWiFiStus +:: + $StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +31 + } +} + +32 #i +defed +( +ESP8266 +) + +33  + gWiFiStus +:: + $StiModeCed +(cڡ +WiFiEvtStiModeCed +& +evt +) { + +36 + } +} + +38  +WiFiStus +:: + $StiModeDisced +(cڡ +WiFiEvtStiModeDisced +& +evt +) { + +41 + } +} + +43  +WiFiStus +:: + $StiModeGIP +(cڡ +WiFiEvtStiModeGIP +& +evt +) { + +45 + } +} + +48  +WiFiStus +:: + $wifiStus +( +AsyncWebSvReque +* +que +) { + +49 +AsyncJsReڣ +* +ڣ + = +w + + `AsyncJsReڣ +( +l +, +MAX_WIFI_STATUS_SIZE +); + +50 +JsObje + +ro + = +ڣ +-> + `gRo +(); + +51 +wl_us_t + +us + = +WiFi +. + `us +(); + +52 +ro +["us"] = ( +ut8_t +) +us +; + +53 i( +us + = +WL_CONNECTED +) { + +54 +ro +["lol_"] = +WiFi +. + `lolIP +(). + `toSg +(); + +55 +ro +["mac_addss"] = +WiFi +. + `macAddss +(); + +56 +ro +["rssi"] = +WiFi +. + `RSSI +(); + +57 +ro +["ssid"] = +WiFi +. + `SSID +(); + +58 +ro +["bssid"] = +WiFi +. + `BSSIDr +(); + +59 +ro +["chl"] = +WiFi +. + `chl +(); + +60 +ro +["subt_mask"] = +WiFi +. + `subtMask +(). + `toSg +(); + +61 +ro +["geway_"] = +WiFi +. + `gewayIP +(). + `toSg +(); + +62 +IPAddss + +dnsIP1 + = +WiFi +. + `dnsIP +(0); + +63 +IPAddss + +dnsIP2 + = +WiFi +. + `dnsIP +(1); + +64 i( +dnsIP1 + ! +INADDR_NONE +) { + +65 +ro +["dns__1"] = +dnsIP1 +. + `toSg +(); + +67 i( +dnsIP2 + ! +INADDR_NONE +) { + +68 +ro +["dns__2"] = +dnsIP2 +. + `toSg +(); + +71 +ڣ +-> + `tLgth +(); + +72 +que +-> + `nd +( +ڣ +); + +73 + } +} + + @lib/framework/WiFiStatus.h + +1 #ide +WiFiStus_h + + +2  + #WiFiStus_h + + + ) + +4 #ifde +ESP32 + + +5  + ~ + +6  + ~ + +7 #i +defed +( +ESP8266 +) + +8  + ~ + +9  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +18  + #MAX_WIFI_STATUS_SIZE + 1024 + + ) + +19  + #WIFI_STATUS_SERVICE_PATH + "//wifiStus" + + ) + +21 as + cWiFiStus + { + +22 + mpublic +: + +23 +WiFiStus +( +AsyncWebSv +* +rv +, +SecuryMag +* +curyMag +); + +25 + mive +: + +26 #ifde +ESP32 + + +28  +StiModeCed +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +29  +StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +30  +StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +31 #i + $defed +( +ESP8266 +) + +33 +WiFiEvtHdr + +_StiModeCedHdr +; + +34 +WiFiEvtHdr + +_StiModeDiscedHdr +; + +35 +WiFiEvtHdr + +_StiModeGIPHdr +; + +37  + `StiModeCed +(cڡ +WiFiEvtStiModeCed +& +evt +); + +38  + `StiModeDisced +(cڡ +WiFiEvtStiModeDisced +& +evt +); + +39  + `StiModeGIP +(cڡ +WiFiEvtStiModeGIP +& +evt +); + +42  + `wifiStus +( +AsyncWebSvReque +* +que +); + + @lib/uuid-common/src/common.cpp + +19  + ~ + + @lib/uuid-common/src/get_uptime_ms.cpp + +19  + ~ + +21  + ~ + +23 +mea + + guuid + { + +25  + #UPTIME_OVERFLOW + 4294967295 + +26 + + ) + +28 +ut32_t + +g_uime_c +() { + +29  +ut32_t + + gϡ_uime + = 0; + +30  +ut8_t + + guime_ovows + = 0; + +32 i( +mlis +(< + gϡ_uime +) { + +33 ++ + guime_ovows +; + +35 + gϡ_uime + = +mlis +(); + +36 +ut32_t + + guime_cds + = +uime_ovows + * ( +UPTIME_OVERFLOW + / 1000+ ( +ϡ_uime + / 1000); + +38  + guime_cds +; + +41 +ut64_t + +g_uime_ms +() { + +42  +ut32_t + + ghigh_mlis + = 0; + +43  +ut32_t + + glow_mlis + = 0; + +45 i( +g_uime +(< + glow_mlis +) { + +46 + ghigh_mlis +++; + +49 + glow_mlis + = +g_uime +(); + +51  (( + gut64_t +) + ghigh_mlis + << 32| + glow_mlis +; + +55  +ut32_t + + gnow_mlis +; + +57  +t_uime +() { + +58 + gnow_mlis + = :: +mlis +(); + +61 +ut32_t + +g_uime +() { + +62  + gnow_mlis +; + + @lib/uuid-common/src/loop.cpp + +19  + ~ + +21 +mea + + guuid + { + +23  +lo +() { + +24 +t_uime +(); + +25 +g_uime_ms +(); + + @lib/uuid-common/src/printable_to_string.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 as + cPrbSg + : +public + :: +Prt + { + +28 +public +: + +29 +exic + +PrbSg +( +d +:: +rg + & +ouut +) + +30 : +ouut_ +( +ouut +) { + +32 ~ +PrbSg +() = ; + +34 +size_t + +wre +( +ut8_t + +da + +f + + govride + { + +35 + gouut_ +. +nd +(1, +t_ +<>( +da +)); + +39 +size_t + +wre +(cڡ +ut8_t + * +bufr +, size_ +size + +f + + govride + { + +40 + gouut_ +. +nd +( +t_ +( +bufr +), +size +); + +41  + gsize +; + +44 + give +: + +45 +d +:: +rg + & +ouut_ +; + +48 +size_t + + $t_to_rg +(cڡ +Prb + & +b +, +d +:: +rg + & +ouut +) { + +49 +PrbSg + +pr +{ +ouut +}; + +51  +b +. + `tTo +( +pr +); + +52 + } +} + +54 + gd +:: +rg + + $b_to_rg +(cڡ +Prb + & +b +) { + +55 +d +:: +rg + +r +; + +57 + `t_to_rg +( +b +, +r +); + +59  +r +; + +60 + } +} + + @lib/uuid-common/src/read_flash_string.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 + gd +:: +rg + +ad_ash_rg +(cڡ +__FshSgHr + * +ash_r +) { + +28 +d +:: +rg + +r +(:: +_P +( +t_ +< +PGM_P +>( +ash_r +)), '\0'); + +30 :: +y_P +(& +r +[0], +t_ +< +PGM_P +>( +ash_r +), s. +cy +() + 1); + +32  + gr +; + + @lib/uuid-common/src/uuid/common.h + +19 #ide +UUID_COMMON_H_ + + +20  + #UUID_COMMON_H_ + + + ) + +22  + ~ + +24  + ~ + +25  + ~ + +33 +mea + + guuid + { + +45 + gd +:: +rg + +ad_ash_rg +(cڡ +__FshSgHr + * +ash_r +); + +55 +size_t + +t_to_rg +(cڡ +Prb + & +b +, +d +:: +rg + & +ouut +); + +64 + gd +:: +rg + +b_to_rg +(cڡ +Prb + & +b +); + +71 +usg + + gash_rg_ve + = +d +:: +ve +; + +79  +lo +(); + +87 +ut64_t + +g_uime_ms +(); + +89 +ut32_t + +g_uime +(); + +90 +ut32_t + +g_uime_c +(); + +92  +t_uime +(); + + @lib/uuid-console/src/command_line.cpp + +19  + ~ + +21  + ~ + +22  + ~ + +24 +mea + + guuid + { + +26 +mea + + gcse + { + +28 + gCommdLe +:: +CommdLe +(cڡ +d +:: +rg + & +le +) { + +29 +bo + +rg_es_doub + = +l +; + +30 +bo + + grg_es_sg + = +l +; + +31 +bo + + gch_es + = +l +; + +32 +bo + + gqued_gumt + = +l +; + +34 i(! + gle +. +emy +()) { + +35 + gms_ +. +ema_back +( +d +:: +rg +{}); + +38  + gc + : +le +) { + +39  +c +) { + +41 i( +rg_es_doub + || +rg_es_sg +) { + +42 i( +ch_es +) { + +43 +ms_ +. +back +(). +push_back +('\\'); + +44 + gch_es + = +l +; + +46 + gms_ +. +back +(). +push_back +(' '); + +47 } i( + gch_es +) { + +48 + gms_ +. +back +(). +push_back +(' '); + +49 + gch_es + = +l +; + +53 i( + gqued_gumt + || ! + gms_ +. +back +(). +emy +()) { + +54 + gms_ +. +ema_back +( +d +:: +rg +{}); + +56 + gqued_gumt + = +l +; + +61 i( +ch_es + || +rg_es_sg +) { + +62 +ms_ +. +back +(). +push_back +('"'); + +63 + gch_es + = +l +; + +65 + grg_es_doub + = ! +rg_es_doub +; + +66 + gqued_gumt + = +ue +; + +71 i( +ch_es + || +rg_es_doub +) { + +72 +ms_ +. +back +(). +push_back +('\''); + +73 + gch_es + = +l +; + +75 + grg_es_sg + = ! +rg_es_sg +; + +76 + gqued_gumt + = +ue +; + +81 i( +ch_es +) { + +82 +ms_ +. +back +(). +push_back +('\\'); + +83 + gch_es + = +l +; + +85 + gch_es + = +ue +; + +90 i( +ch_es +) { + +91 +ms_ +. +back +(). +push_back +('\\'); + +92 + gch_es + = +l +; + +94 + gms_ +. +back +(). +push_back +( +c +); + +99 i(! + gms_ +. +emy +(&&ams_. +back +().emy(&& ! + gqued_gumt +) { + +100 + gms_ +. +p_back +(); + +101 i(! + gms_ +. +emy +()) { + +102 + gag_a + = +ue +; + +107 + gCommdLe +:: +CommdLe +( +d +:: +liz_li +> +gumts +) { + +108 aut& +gumt + : +gumts +) { + +109 +ms_ +. + +լams_. +d +(), +gumt +. +beg +(),rgument.end()); + +113 + gd +:: +rg + +CommdLe +:: +to_rg +( +size_t + +rve +) const { + +114 +d +:: +rg + +le +; + +115 +size_t + + ges + = +es_ms_ +; + +117 + gle +. +rve +(reserve); + +119 aut& + gem + : +ms_ +) { + +120 i(! +le +. +emy +()) { + +121 +le + += ' '; + +124 i( + gem +. +emy +()) { + +125 + gle + += '\"'; + +126 + gle + += '\"'; + +127  + gxt +; + +130  + gc + : +em +) { + +131  +c +) { + +136 i( +es + > 0) { + +137 +le + += '\\'; + +142 + gle + + +c +; + +145 + gxt +: + +146 i( +es + > 0) { + +147 +es +--; + +151 i( + gag_a + && ! + gle +. +emy +()) { + +152 + gle + += ' '; + +155  + gle +; + +158  + gCommdLe +:: +t +() { + +159 +ms_ +. +r +(); + +160 +es_l_ms +(); + +161 + gag_a + = +l +; + + @lib/uuid-console/src/commands.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +30 #ide +__p_lib_make_unique + + +31 +mea + + gd + { + +33 + gme + < +tyme + + g_Tp +, + gtyme +... + g_Args +> + +34 +le + + gunique_r +< + g_Tp +> +make_unique +( +_Args + &&... +__gs +) { + +35  + gunique_r +< + g_Tp +>( +w + +_Tp +( +d +:: +fwd +< +_Args +>( +__gs +)...)); + +41 +mea + + guuid + { + +43 +mea + + gcse + { + +45  + gCommds +:: +add_commd +(cڡ +ash_rg_ve + & +me +, +commd_funi + +funi +) { + +46 +add_commd +(0, 0, +me +, +ash_rg_ve +{}, +funi +, +nuαr +); + +49  + gCommds +:: +add_commd +(cڡ +ash_rg_ve + & +me +, cڡ fsh_rg_ve & +gumts +, +commd_funi + +funi +) { + +50 +add_commd +(0, 0, +me +, +gumts +, +funi +, +nuαr +); + +53  + gCommds +:: +add_commd +(cڡ +ash_rg_ve + & +me +, + +54 cڡ +ash_rg_ve + & +gumts +, + +55 +commd_funi + +funi +, + +56 +gumt_comi_funi + +g_funi +) { + +57 +add_commd +(0, 0, +me +, +gumts +, +funi +, +g_funi +); + +60  + gCommds +:: +add_commd +( +cڋxt +,  +ags +, cڡ +ash_rg_ve + & +me +, +commd_funi + +funi +) { + +61 +add_commd +( +cڋxt +, +ags +, +me +, +ash_rg_ve +{}, +funi +, +nuαr +); + +64  + gCommds +:: +add_commd +( +cڋxt +, + +65  +ags +, + +66 cڡ +ash_rg_ve + & +me +, + +67 cڡ +ash_rg_ve + & +gumts +, + +68 +commd_funi + +funi +) { + +69 +add_commd +( +cڋxt +, +ags +, +me +, +gumts +, +funi +, +nuαr +); + +72  + gCommds +:: +add_commd +( +cڋxt +, + +73  +ags +, + +74 cڡ +ash_rg_ve + & +me +, + +75 cڡ +ash_rg_ve + & +gumts +, + +76 +commd_funi + +funi +, + +77 +gumt_comi_funi + +g_funi +) { + +78 + gcommds_ +. +ema +( +d +:: +pwi_cڡru +, std:: +fwd_as_tue +( +cڋxt +), std::fwd_as_tue( +ags +, +me +, +gumts +, +funi +, +g_funi +)); + +83  + gCommds +:: +move_l_commds +() { + +84 +commds_ +. +r +(); + +89  + gCommds +:: +move_cڋxt_commds +( +cڋxt +) { + +90 +commds_ +. +a +( +cڋxt +); + +107 + gCommds +:: +Executi + +Commds +:: +execu_commd +( +Shl + & +shl +, +CommdLe + && +commd_le +) { + +108 aut + gcommds + = +fd_commd +( +shl +, +commd_le +); + +109 aut + glge + = +commds +. +exa +. +beg +(); + +110 +Executi + + gsu +; + +112 + gsu +. + gr + = +nuαr +; + +114 i( + gcommds +. + gexa +. +emy +()) { + +115 + gsu +. + gr + = +F +("Commandot found"); + +116 } i( + gcommds +. + gexa +. +cou +( +lge +-> +f +) == 1) { + +117 aut& +commd + = +lge +-> +cd +; + +118 + gd +:: +ve +< +d +:: +rg +> +gumts +; + +120 aut + g + = +d +:: +xt +( +commd_le +-> +cbeg +(), +commd +-> +me_ +. +size +()); i!commd_le-> +nd +(); it++) { + +121 + ggumts +. +push_back +( +d +:: +move +(* + +)); + +123 + gcommd_le +. +t +(); + +125 i( + gcommds +. + gl +. +u_bound +( +lge +-> +f +! +commds +. +l +. +d +(&& ! +gumts +. +emy +()) { + +126 +su +. +r + = +F +("Commandot found"); + +127 } i( + ggumts +. +size +(< + gcommd +-> +mimum_gumts +()) { + +128 + gsu +. + gr + = +F +("Notnoughrguments for command"); + +129 } i( + ggumts +. +size +(> + gcommd +-> +maximum_gumts +()) { + +130 + gsu +. + gr + = +F +("Too manyrguments for command"); + +132 + gcommd +-> +funi_ +( +shl +, +gumts +); + +135 + gsu +. + gr + = +F +("Fatalrror (multiple commands found)"); + +138  + gsu +; + +141 +bo + + gCommds +:: +fd_lge_comm_efix +(cڡ +d +:: +muim +< +size_t +, cڡ +Commd + *> & +commds +, std:: +ve + & +lge_me +) { + +142 +size_t + +compڒt_efix + = 0; + +143 +size_t + + gsh܋_mch + = +commds +. +beg +()-> +f +; + +145 + glge_me +. +rve +( +sh܋_mch +); + +149 aut& + gf + = +commds +. +beg +()-> +cd +-> +me_ +; + +150 +bo + + gl_mch + = +ue +; + +152  +size_t + + gngth + = 0; + gl_mch + &>h < + gsh܋_mch +;ength++) { + +153 aut + gcommd_ + = +d +:: +xt +( +commds +. +beg +()); commd_ !commds. +d +(); command_it++) { + +154 i( +ad_ash_rg +(* +d +:: +xt +( +f +. +beg +(), +ngth +)!ad_ash_rg(*d::xt( +commd_ +-> +cd +-> +me_ +.begin(),ength))) { + +155 + gl_mch + = +l +; + +160 i( + gl_mch +) { + +161 + gcompڒt_efix + = +ngth + + 1; + +165 aut + gme_ + = +f +. +beg +(); + +166  +size_t + + gi + = 0; i < + gcompڒt_efix +; i++) { + +167 + glge_me +. +push_back +( +d +:: +move +( +ad_ash_rg +(* +me_ +))); + +168 + gme_ +++; + +172 i( + gcompڒt_efix + < + gsh܋_mch +) { + +174 aut + gf + = * +d +:: +xt +( +commds +. +beg +()-> +cd +-> +me_ +.beg(), +compڒt_efix +); + +175 +bo + + gl_mch + = +ue +; + +176 +size_t + + gchs_efix + = 0; + +178  +size_t + + gngth + = 0; + gl_mch +;ength++) { + +179 aut + gcommd_ + = +d +:: +xt +( +commds +. +beg +()); commd_ !commds. +d +(); command_it++) { + +182 i( +pgm_ad_by +( +t_ +< +PGM_P +>( +f ++ +ngth +) + +183 ! +pgm_ad_by +( +t_ +< +PGM_P +>(* +d +:: +xt +( +commd_ +-> +cd +-> +me_ +. +beg +(), +compڒt_efix +)+ +ngth +)) { + +184 + gl_mch + = +l +; + +189 i( + gl_mch +) { + +190 + gchs_efix + = +ngth + + 1; + +194 i( + gchs_efix + > 0) { + +195 + glge_me +. +push_back +( +d +:: +move +( +ad_ash_rg +( +f +). +subr +(0, +chs_efix +))); + +196  + gl +; + +200  + gue +; + +203 + gd +:: +rg + +Commds +:: +fd_lge_comm_efix +(cڡ +d +:: +ve + & +gumts +) { + +204 aut& +f + = * +gumts +. +beg +(); + +205 +bo + + gl_mch + = +ue +; + +206 +size_t + + gchs_efix + = 0; + +208  +size_t + + gngth + = 0; + gl_mch +;ength++) { + +209 aut + ggumt_ + = +d +:: +xt +( +gumts +. +beg +());rgumt_ !gumts. +d +();rgument_it++) { + +212 i( + gf +[ +ngth +] !(* +gumt_ +)[length]) { + +213 +l_mch + = +l +; + +218 i( + gl_mch +) { + +219 + gchs_efix + = +ngth + + 1; + +223  + ggumts +. +beg +()-> +subr +(0, +chs_efix +); + +226 + gCommds +:: +Comi + +Commds +:: +come_commd +( +Shl + & +shl +, cڡ +CommdLe + & +commd_le +) { + +227 aut + gcommds + = +fd_commd +( +shl +, +commd_le +); + +228 +Comi + + gsu +; + +230 aut + gmch + = +commds +. +l +. +beg +(); + +231 +size_t + + gcou +; + +232 i( + gmch + ! +commds +. +l +. +d +()) { + +233 +cou + = +commds +. +l +.cou( +mch +-> +f +); + +234 } i(! + gcommds +. + gexa +. +emy +()) { + +236 + gmch + = +d +:: +ev +( +commds +. +exa +. +d +()); + +237 + gcou + = +commds +. +exa +. +cou +( +mch +-> +f +); + +239  + gsu +; + +242 + gd +:: +unique_r +< +Commd +> +mp_commd +; + +243 + gd +:: +ve +< +d +:: +rg +> +mp_commd_me +; + +244 + gd +:: +muim +< +size_t +, cڡ + gCommd + *>:: + + +mp_commd_ +; + +246 i( + gcommds +. + gl +. +size +(> 1 && (commds. + gexa +. +emy +(|| + gcommd_le +. +tٮ_size +(> commds.exa. +beg +()-> + gcd +-> + gme_ +.size())) { + +248 +bo + + gwhe_compڒts + = +fd_lge_comm_efix +( +commds +. +l +, +mp_commd_me +); + +250 i( + gcou + =1 && +whe_compڒts + && +mp_commd_me +. +size +(= +mch +-> +f +) { + +254 +mp_commd_me +. +r +(); + +255 + gsu +. + gamt +. + gag_a + = +ue +; + +258 i(! + gmp_commd_me +. +emy +(&& + gcommd_le +. +tٮ_size +(< +mp_commd_me +. +size +()) { + +259 +mp_commd + = +d +:: +make_unique +< +Commd +>(0, + gash_rg_ve +{}, fsh_rg_ve{}, + gnuαr +,ullptr); + +260 + gcou + = 1; + +261 + gmch + = +commds +. +l +. +d +(); + +262 + gsu +. + gamt +. + gag_a + = +whe_compڒts +; + +264 aut& + gme + : +mp_commd_me +) { + +265 +su +. +amt +-> +ema_back +( +me +); + +270 i( + gcou + =1 && ! +mp_commd +) { + +272 aut& +mchg_commd + = +mch +-> +cd +; + +274 aut& + gme + : +mchg_commd +-> +me_ +) { + +275 +su +. +amt +-> +push_back +( +d +:: +move +( +ad_ash_rg +( +me +))); + +278 i( + gcommd_le +. +tٮ_size +(> + gsu +. + gamt +-> +size +() + +279 && + gcommd_le +. +tٮ_size +(< +mchg_commd +-> +me_ +. +size +(+ mchg_commd-> +maximum_gumts +()) { + +281 +d +:: +ve + +gumts +{d:: +xt +( +commd_le +-> +cbeg +(), +su +. +amt +-> +size +()), commd_le-> +nd +()}; + +283 + gsu +. + gamt +-> + +( +su +. +amt +-> +d +(), +gumts +. +cbeg +(),rgumts. +nd +()); + +284 + gsu +. + gamt +. + gag_a + = +commd_le +. +ag_a +; + +286 aut + gcut_gs_cou + = +gumts +. +size +(); + +287 + gd +:: +rg + +ϡ_gumt +; + +289 i(! + gcommd_le +. + gag_a +) { + +291 + gϡ_gumt + = +d +:: +move +( +su +. +amt +-> +back +()); + +292 + gsu +. + gamt +-> +p_back +(); + +293 i(! + ggumts +. +emy +()) { + +294 + ggumts +. +p_back +(); + +295 + gcut_gs_cou +--; + +299 aut + gpْtl_gumts + = +mchg_commd +-> +g_funi_ + ? mchg_commd->g_funi_( +shl +, +gumts +: +d +:: +ve +{}; + +302 i(! + gcommd_le +. + gag_a +) { + +303 aut + g + = +pْtl_gumts +. +beg +(); i!pْtl_gumts. +d +();) { + +304 i( + g +-> +rfd +( +ϡ_gumt +, 0= +d +:: +rg +:: +os +) { + +305 + + = +pْtl_gumts +. +a +(it); + +307 + g +++; + +314 i(! + gcommd_le +. + gag_a +) { + +315 i( + gpْtl_gumts +. +size +() == 1) { + +316 i( +ϡ_gumt + =* +pْtl_gumts +. +beg +()) { + +317 i( +su +. +amt +-> +size +(+ 1 < +mchg_commd +-> +me_ +.size(+ mchg_commd-> +maximum_gumts +()) { + +319 +su +. +amt +. +ag_a + = +ue +; + +323 + gϡ_gumt + = * +pْtl_gumts +. +beg +(); + +324 + gpْtl_gumts +. +r +(); + +327 + gcut_gs_cou +++; + +328 } i( + gpْtl_gumts +. +size +() > 1) { + +329 + gϡ_gumt + = +fd_lge_comm_efix +( +pْtl_gumts +); + +334 i(! + gcommd_le +. + gag_a +) { + +335 + gsu +. + gamt +-> +push_back +( +d +:: +move +( +ϡ_gumt +)); + +338 +CommdLe + + gmag_hp +; + +340 i(! + gpْtl_gumts +. +emy +()) { + +342 + gcut_gs_cou +++; + +345 i( + gcut_gs_cou + < + gmchg_commd +-> +maximum_gumts +()) { + +346 + gmag_hp +. +es_l_ms +(); + +348 aut + g + = +d +:: +xt +( +mchg_commd +-> +gumts_ +. +cbeg +(), +cut_gs_cou +); i!mchg_commd->gumts_. +nd +(); it++) { + +349 + gmag_hp +-> +push_back +( +d +:: +move +( +ad_ash_rg +(* + +))); + +353 i( + gpْtl_gumts +. +emy +()) { + +354 i(! + gmag_hp +-> +emy +()) { + +355 + gsu +. + ghp +. +push_back +( +d +:: +move +( +mag_hp +)); + +358 aut + gpْtl_gumt + : +pْtl_gumts +) { + +359 +CommdLe + +hp +; + +361 + ghp +-> +ema_back +( +pْtl_gumt +); + +363 i(! + gmag_hp +-> +emy +()) { + +364 + ghp +. +es_l_ms +(); + +365 + ghp +-> + +( +hp +-> +d +(), +mag_hp +-> +beg +(),emaining_help->end()); + +368 + gsu +. + ghp +. +push_back +( +d +:: +move +( +hp +)); + +371 } i( + gsu +. + gamt +-> +size +(< + gmchg_commd +-> + gme_ +.size(+ mchg_commd-> +maximum_gumts +()) { + +373 + gsu +. + gamt +. + gag_a + = +ue +; + +375 } i( + gcou + > 1 || + gmp_commd +) { + +377 aut + gcommd_ + = +commds +. +l +. +beg +(); commd_ !commds.l. +d +(); command_it++) { + +378 +CommdLe + + ghp +; + +380 aut + gle_ + = +commd_le +-> +cbeg +(); + +381 aut + gash_me_ + = +commd_ +-> +cd +-> +me_ +. +cbeg +(); + +383 i( + gmp_commd +) { + +385 +size_t + + gsk + = +mp_commd_me +. +size +(); + +386 i(! + gsu +. + gamt +. + gag_a +) { + +387 + gsk +--; + +390 + gash_me_ + + +sk +; + +391  + gle_ + ! +commd_le +-> +nd +()) { + +392 +le_ +++; + +396 ; + gash_me_ + ! +commd_ +-> +cd +-> +me_ +. +nd +(); flash_name_it++) { + +397 + gd +:: +rg + +me + = +ad_ash_rg +(* +ash_me_ +); + +400 i( + gle_ + ! +commd_le +-> +nd +()) { + +401 i( +me + =* +le_ +++) { + +404 + gle_ + = +commd_le +-> +nd +(); + +408 + ghp +-> +ema_back +( +me +); + +411 + ghp +. +es_l_ms +(); + +413 aut + ggumt + : +commd_ +-> +cd +-> +gumts_ +) { + +415 i( +le_ + ! +commd_le +-> +nd +()) { + +416 +le_ +++; + +420 + ghp +-> +push_back +( +d +:: +move +( +ad_ash_rg +( +gumt +))); + +423 + gsu +. + ghp +. +push_back +( +d +:: +move +( +hp +)); + +427 i( + gcou + > 1 && ! + gcommds +. + gexa +. +emy +()) { + +429 aut + glge + = +commds +. +exa +. +beg +(); + +431 i( + gcommds +. + gexa +. +cou +( +lge +-> +f +) == 1) { + +432 aut& +me + : +lge +-> +cd +-> +me_ +) { + +433 +su +. +amt +-> +push_back +( +d +:: +move +( +ad_ash_rg +( +me +))); + +437 + gsu +. + gamt +. + gag_a + = +ue +; + +442 i( + gcommd_le +. +tٮ_size +(> + gsu +. + gamt +.tٮ_size(||esu.am= +commd_le +) { + +443 +su +. +amt +. +t +(); + +446  + gsu +; + +449 + gCommds +:: +Mch + +Commds +:: +fd_commd +( +Shl + & +shl +, cڡ +CommdLe + & +commd_le +) { + +450 +Mch + + gcommds +; + +451 aut + gcڋxt_commds + = +commds_ +. +equ_nge +( +shl +. +cڋxt +()); + +453 aut + g + = +cڋxt_commds +. +f +; i!cڋxt_commds. +cd +; it++) { + +454 aut& + gcommd + = + +-> +cd +; + +455 +bo + + gmch + = +ue +; + +456 +bo + + gexa + = +ue +; + +458 i(! + gshl +. +has_ags +( +commd +. +ags_ +)) { + +462 aut + gme_ + = +commd +. +me_ +. +cbeg +(); + +463 aut + gle_ + = +commd_le +-> +cbeg +(); + +465 ; + gme_ + ! +commd +. +me_ +. +nd +(&& +le_ + ! +commd_le +->nd();ame_++, + gle_ +++) { + +466 + gd +:: +rg + +me + = +ad_ash_rg +(* +me_ +); + +467 +size_t + + gfound + = +me +. +rfd +(* +le_ +, 0); + +469 i( + gfound + = +d +:: +rg +:: +os +) { + +470 +mch + = +l +; + +472 } i( + gle_ +-> +ngth +(! +me +.length()) { + +473 aut +le_check_ + = +d +:: +xt +( +le_ +); + gle_check_ + ! +commd_le +-> +nd +();ine_check_it++) { + +474 i(! + gle_check_ +-> +emy +()) { + +476 + gmch + = +l +; + +480 i( + gcommd_le +. + gag_a +) { + +482 + gmch + = +l +; + +490 i( + gme_ + ! +commd +. +me_ +. +nd +()) { + +491 +exa + = +l +; + +494 i( + gmch +) { + +495 i( + gexa +) { + +496 + gcommds +. + gexa +. +ema +( +commd +. +me_ +. +size +(), &command); + +498 + gcommds +. + gl +. +ema +( +commd +. +me_ +. +size +(), &command); + +503  + gcommds +; + +506  + gCommds +:: +f_ch_avaab_commd +( +Shl + & +shl +, +y_funi + +f +) const { + +507 aut + gcommds + = +commds_ +. +equ_nge +( +shl +. +cڋxt +()); + +509 aut + gcommd_ + = +commds +. +f +; commd_ !commds. +cd +; command_it++) { + +510 i( + gshl +. +has_ags +( +commd_ +-> +cd +. +ags_ +)) { + +511 + gd +:: +ve +< +d +:: +rg +> +me +; + +512 + gd +:: +ve +< +d +:: +rg +> +gumts +; + +514 + gme +. +rve +( +commd_ +-> +cd +. +me_ +. +size +()); + +515 aut + gash_me + : +commd_ +-> +cd +. +me_ +) { + +516 +me +. +push_back +( +d +:: +move +( +ad_ash_rg +( +ash_me +))); + +519 + ggumts +. +rve +( +commd_ +-> +cd +. +gumts_ +. +size +()); + +520 aut + gash_gumt + : +commd_ +-> +cd +. +gumts_ +) { + +521 +gumts +. +push_back +( +d +:: +move +( +ad_ash_rg +( +ash_gumt +))); + +524 +f +( +me +, +gumts +); + +529 + gCommds +:: +Commd +::Commd( +ags +, + +530 cڡ +ash_rg_ve + +me +, + +531 cڡ +ash_rg_ve + +gumts +, + +532 +commd_funi + +funi +, + +533 +gumt_comi_funi + +g_funi +) + +534 : +ags_ +( +ags +) + +535 , +me_ +( +me +) + +536 , +gumts_ +( +gumts +) + +537 , +funi_ +( +funi +) + +538 , +g_funi_ +( +g_funi +) { + +541 + gCommds +:: +Commd +::~Command() { + +544 +size_t + +Commds +:: +Commd +:: +mimum_gumts +() const { + +545  +d +:: +cou_if +( +gumts_ +. +cbeg +(),rgumts_. +nd +(), [](cڡ +__FshSgHr + * +gumt +{  +pgm_ad_by +(argument) == '<'; }); + + @lib/uuid-console/src/console.cpp + +19  + ~ + + @lib/uuid-console/src/shell.cpp + +19  + ~ + +21  + ~ + +22  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +30  + ~ + +31  + ~ + +33 #ide +__p_lib_make_unique + + +34 +mea + + gd + { + +36 + gme + < +tyme + + g_Tp +, + gtyme +... + g_Args +> + +37 +le + + gunique_r +< + g_Tp +> +make_unique +( +_Args + &&... +__gs +) { + +38  + gunique_r +< + g_Tp +>( +w + +_Tp +( +d +:: +fwd +< +_Args +>( +__gs +)...)); + +44 +mea + + guuid + { + +46 +mea + + gcse + { + +49 + gShl +:: +Shl +( +d +:: +shed_r +< +Commds +> +commds +,  +cڋxt +,  +ags +) + +50 : +commds_ +( +d +:: +move +( +commds +)) + +51 , +ags_ +( +ags +) { + +52 +r_cڋxt +( +cڋxt +); + +55 + gShl +::~ +Shl +() { + +56 +uuid +:: +log +:: +Logg +:: +uegi_hdr +( +this +); + +59  + gShl +:: +t +() { + +60 #ifde +EMSESP_DEBUG + + +61 +uuid +:: +log +:: +Logg +:: +gi_hdr +( +this +, uuid::log:: +Lev +:: +DEBUG +); + +64 + guuid +:: +log +:: +Logg +:: +gi_hdr +( +this +, +uuid +::log:: +Lev +:: +NOTICE +); + +67 + gle_bufr_ +. +rve +( +maximum_commd_le_ngth_ +); + +68 +diy_br +(); + +69 +diy_om +(); + +70 + gshls_ +. + +( +shed_om_this +()); + +71 + gid_time_ + = +uuid +:: +g_uime_ms +(); + +72 +d +(); + +75  + gShl +:: +d +() { + +78 +bo + +Shl +:: +rušg +() const { + +79  ! +ݳd_ +; + +82  + gShl +:: + +() { + +83 i( +mode_ + = +Mode +:: +BLOCKING +) { + +84 aut* +blockg_da + = +t_ +< +Shl +:: +BlockgDa + *>( +mode_da_ +. +g +()); + +86 + gblockg_da +-> + g_ + = +ue +; + +88 i( +rušg +()) { + +89 + gݳd_ + = +ue +; + +90 +ݳd +(); + +95  + gShl +:: +ݳd +() { + +98 +bo + +Shl +:: +ex_cڋxt +() { + +99 i( +cڋxt_ +. +size +() > 1) { + +100 +cڋxt_ +. +p_back +(); + +101  + gue +; + +103  + gl +; + +107  + gShl +:: +lo_e +() { + +108 i(! +rušg +()) { + +112  + gmode_ +) { + +113  + gMode +:: +NORMAL +: + +114 +ouut_logs +(); + +115 +lo_nm +(); + +118  + gMode +:: +PASSWORD +: + +119 +ouut_logs +(); + +120 +lo_sswd +(); + +123  + gMode +:: +DELAY +: + +124 +ouut_logs +(); + +125 +lo_day +(); + +128  + gMode +:: +BLOCKING +: + +129 +lo_blockg +(); + +134  + gShl +:: +lo_nm +() { + +135 cڡ  +put + = +ad_e_ch +(); + +137 i( + gput + < 0) { + +138 +check_id_timeout +(); + +142 cڡ  + gc + = +put +; + +144  + gc +) { + +147 +le_bufr_ +. +r +(); + +148 +n +(); + +149 + gom_diyed_ + = +l +; + +150 +diy_om +(); + +155 i( +le_bufr_ +. +emy +()) { + +156 +d_of_smissi +(); + +164 i(! +le_bufr_ +. +emy +()) { + +165 +a_chas +(1); + +166 + gle_bufr_ +. +p_back +(); + +172 +oss_comi +(); + +177 i( +evious_ + != '\x0D') { + +178 +oss_commd +(); + +184 +a_cut_le +(); + +185 + gom_diyed_ + = +l +; + +186 +diy_om +(); + +191 +oss_commd +(); + +196 +a_cut_le +(); + +197 + gom_diyed_ + = +l +; + +198 + gle_bufr_ +. +r +(); + +199 +diy_om +(); + +204 +de_bufr_wd +( +ue +); + +208 i( +c + >= '\x20' && c <= '\x7E') { + +210 i( +le_bufr_ +. +ngth +(< +maximum_commd_le_ngth_ +) { + +211 +le_bufr_ +. +push_back +( +c +); + +212 +wre +(( +ut8_t +) +c +); + +218 + gevious_ + = +c +; + +222 +avaab_ch +(); + +224 + gid_time_ + = +uuid +:: +g_uime_ms +(); + +227 + gShl +:: +PasswdDa +::PasswdDa(cڡ +__FshSgHr + * +sswd_om +, +sswd_funi + &&assword_function) + +228 : +sswd_om_ +( +sswd_om +) + +229 , +sswd_funi_ +( +d +:: +move +( +sswd_funi +)) { + +232  +Shl +:: +lo_sswd +() { + +233 cڡ  +put + = +ad_e_ch +(); + +235 i( + gput + < 0) { + +236 +check_id_timeout +(); + +240 cڡ  + gc + = +put +; + +242  + gc +) { + +245 +oss_sswd +( +l +); + +252 i(! +le_bufr_ +. +emy +()) { + +253 +le_bufr_ +. +p_back +(); + +259 i( +evious_ + != '\x0D') { + +260 +oss_sswd +( +ue +); + +266 +a_cut_le +(); + +267 + gom_diyed_ + = +l +; + +268 +diy_om +(); + +273 +oss_sswd +( +ue +); + +278 +le_bufr_ +. +r +(); + +283 +de_bufr_wd +( +l +); + +287 i( +c + >= '\x20' && c <= '\x7E') { + +289 i( +le_bufr_ +. +ngth +(< +maximum_commd_le_ngth_ +) { + +290 +le_bufr_ +. +push_back +( +c +); + +296 + gevious_ + = +c +; + +300 +avaab_ch +(); + +302 + gid_time_ + = +uuid +:: +g_uime_ms +(); + +305 + gShl +:: +DayDa +::DayDa( +ut64_t + +day_time +, +day_funi + && delay_function) + +306 : +day_time_ +( +day_time +) + +307 , +day_funi_ +( +d +:: +move +( +day_funi +)) { + +310  +Shl +:: +lo_day +() { + +311 aut* +day_da + = +t_ +< +Shl +:: +DayDa + *>( +mode_da_ +. +g +()); + +313 i( + guuid +:: +g_uime_ms +(> +day_da +-> +day_time_ +) { + +314 aut +funi_cy + = +day_da +-> +day_funi_ +; + +316 + gmode_ + = +Mode +:: +NORMAL +; + +317 + gmode_da_ +. +t +(); + +319 +funi_cy +(* +this +); + +321 i( +rušg +()) { + +322 +diy_om +(); + +325 + gid_time_ + = +uuid +:: +g_uime_ms +(); + +329 + gShl +:: +BlockgDa +::BlockgDa( +blockg_funi + && blocking_function) + +330 : +blockg_funi_ +( +d +:: +move +( +blockg_funi +)) { + +333  +Shl +:: +lo_blockg +() { + +334 aut* +blockg_da + = +t_ +< +Shl +:: +BlockgDa + *>( +mode_da_ +. +g +()); + +341 i( + gblockg_da +-> +blockg_funi_ +(* +this +, +blockg_da +-> +_ +)) { + +342 +bo + + g_ndg + = +blockg_da +-> +_ +; + +344 + gmode_ + = +Mode +:: +NORMAL +; + +345 + gmode_da_ +. +t +(); + +347 i( + g_ndg +) { + +348 + +(); + +351 i( +rušg +()) { + +352 +diy_om +(); + +355 + gid_time_ + = +uuid +:: +g_uime_ms +(); + +359  + gShl +:: +r_sswd +(cڡ +__FshSgHr + * +om +, +sswd_funi + +funi +) { + +360 i( + gmode_ + = +Mode +:: +NORMAL +) { + +361 +mode_ + = +Mode +:: +PASSWORD +; + +362 + gmode_da_ + = +d +:: +make_unique +< +Shl +:: +PasswdDa +>( +om +, + gd +:: +move +( +funi +)); + +366  + gShl +:: +day_f +( +ms +, +day_funi + +funi +) { + +367 +day_u +( +uuid +:: +g_uime_ms +(+ +ms +, +d +:: +move +( +funi +)); + +370  + gShl +:: +day_u +( +ut64_t + +ms +, +day_funi + +funi +) { + +371 i( + gmode_ + = +Mode +:: +NORMAL +) { + +372 +mode_ + = +Mode +:: +DELAY +; + +373 + gmode_da_ + = +d +:: +make_unique +< +Shl +:: +DayDa +>( +ms +, + gd +:: +move +( +funi +)); + +377  + gShl +:: +block_wh +( +blockg_funi + +funi +) { + +378 i( +mode_ + = +Mode +:: +NORMAL +) { + +379 +mode_ + = +Mode +:: +BLOCKING +; + +380 + gmode_da_ + = +d +:: +make_unique +< +Shl +:: +BlockgDa +>(d:: +move +( +funi +)); + +384  + gShl +:: +de_bufr_wd +( +bo + +diy +) { + +385 +size_t + +pos + = +le_bufr_ +. +fd_ϡ_of +(' '); + +387 i( + gpos + = +d +:: +rg +:: +os +) { + +388 +le_bufr_ +. +r +(); + +389 i( + gdiy +) { + +390 +a_cut_le +(); + +391 + gom_diyed_ + = +l +; + +392 +diy_om +(); + +395 i( + gdiy +) { + +396 +a_chas +( +le_bufr_ +. +ngth +(- +pos +); + +398 + gle_bufr_ +. +size +( +pos +); + +402 +size_t + + gShl +:: +maximum_commd_le_ngth +() const { + +403  +maximum_commd_le_ngth_ +; + +406  + gShl +:: +maximum_commd_le_ngth +( +size_t + +ngth +) { + +407 +maximum_commd_le_ngth_ + = +d +:: +max +(( +size_t +)1, +ngth +); + +408 + gle_bufr_ +. +rve +( +maximum_commd_le_ngth_ +); + +411  + gShl +:: +oss_commd +() { + +412 +CommdLe + +commd_le +{ +le_bufr_ +}; + +414 + gle_bufr_ +. +r +(); + +415 +n +(); + +416 + gom_diyed_ + = +l +; + +418 i(! + gcommd_le +-> +emy +()) { + +419 i( + gcommds_ +) { + +420 aut + gexecuti + = +commds_ +-> +execu_commd +(* +this +, +d +:: +move +( +commd_le +)); + +422 i( + gexecuti +. + gr + ! +nuαr +) { + +423 +n +( +executi +. +r +); + +426 +n +( +F +("No commands configured")); + +430 i( +rušg +()) { + +431 +diy_om +(); + +433 :: +yld +(); + +436  + gShl +:: +oss_comi +() { + +437 +CommdLe + +commd_le +{ +le_bufr_ +}; + +439 i(! + gcommd_le +-> +emy +(&& + gcommds_ +) { + +440 aut + gcomi + = +commds_ +-> +come_commd +(* +this +, +commd_le +); + +441 +bo + + gdiy + = +l +; + +443 i(! + gcomi +. + ghp +. +emy +()) { + +444 +n +(); + +445 + gdiy + = +ue +; + +447 aut& + ghp + : +comi +. +hp +) { + +448 +d +:: +rg + +hp_le + = +hp +. +to_rg +( +maximum_commd_le_ngth_ +); + +450 +n +( +hp_le +); + +454 i(! + gcomi +. + gamt +-> +emy +()) { + +455 i(! + gdiy +) { + +456 +a_cut_le +(); + +457 + gom_diyed_ + = +l +; + +458 + gdiy + = +ue +; + +461 + gle_bufr_ + = +comi +. +amt +. +to_rg +( +maximum_commd_le_ngth_ +); + +464 i( + gdiy +) { + +465 +diy_om +(); + +469 :: +yld +(); + +472  + gShl +:: +oss_sswd +( +bo + +comed +) { + +473 +n +(); + +475 aut* + gsswd_da + = +t_ +< +Shl +:: +PasswdDa + *>( +mode_da_ +. +g +()); + +476 aut + gfuni_cy + = +sswd_da +-> +sswd_funi_ +; + +478 + gmode_ + = +Mode +:: +NORMAL +; + +479 + gmode_da_ +. +t +(); + +481 +funi_cy +(* +this +, +comed +, +le_bufr_ +); + +482 + gle_bufr_ +. +r +(); + +484 i( +rušg +()) { + +485 +diy_om +(); + +489  + gShl +:: +voke_commd +(cڡ +d +:: +rg + & +le +) { + +490 i(! +le_bufr_ +. +emy +()) { + +491 +n +(); + +492 + gom_diyed_ + = +l +; + +494 i(! + gom_diyed_ +) { + +495 +diy_om +(); + +497 + gle_bufr_ + = +le +; + +498 +t +( +le_bufr_ +); + +499 +oss_commd +(); + +502  + gShl +:: +id_timeout +() const { + +503  +id_timeout_ + / 1000; + +506  + gShl +:: +id_timeout +( +timeout +) { + +507 +id_timeout_ + = ( +ut64_t +) +timeout + * 1000; + +510  + gShl +:: +check_id_timeout +() { + +511 i( +id_timeout_ + > 0 && +uuid +:: +g_uime_ms +(- +id_time_ + >= idle_timeout_) { + +512 +n +(); + +513 + +(); + + @lib/uuid-console/src/shell_log.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +27  + ~ + +29 +mea + + guuid + { + +31 +mea + + gcse + { + +33 cڡ  + g__pr__logg_me +[] +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "shell"; + +34 cڡ + guuid +:: +log +:: +Logg + +Shl +:: +logg_ +{ +t_ +( +__pr__logg_me +), uuid::log:: +Facy +:: +LPR +}; + +36 + gShl +:: +QueuedLogMesge +::QueuedLogMesge( +id +, +d +:: +shed_r +< +uuid +:: +log +:: +Mesge +> && +cڋ +) + +37 : +id_ +( +id +) + +38 , +cڋ_ +( +d +:: +move +( +cڋ +)) { + +41  +Shl +:: +ݔ +<<( +d +:: +shed_r +< +uuid +:: +log +:: +Mesge +> +mesge +) { + +42 i( +log_mesges_ +. +size +(> +maximum_log_mesges_ +) { + +43 +log_mesges_ +. +p_t +(); + +46 + glog_mesges_ +. +ema_back +( +log_mesge_id_ +++, +d +:: +move +( +mesge +)); + +49 + guuid +:: +log +:: +Lev + +Shl +:: +log_v +() const { + +50  +uuid +:: +log +:: +Logg +:: +g_log_v +( +this +); + +53  + gShl +:: +log_v +( +uuid +:: +log +:: +Lev + +v +) { + +54 +uuid +:: +log +:: +Logg +:: +gi_hdr +( +this +, +v +); + +57 +size_t + + gShl +:: +maximum_log_mesges +() const { + +58  +maximum_log_mesges_ +; + +61  + gShl +:: +maximum_log_mesges +( +size_t + +cou +) { + +62 +maximum_log_mesges_ + = +d +:: +max +(( +size_t +)1, +cou +); + +63  + glog_mesges_ +. +size +(> + gmaximum_log_mesges_ +) { + +64 + glog_mesges_ +. +p_t +(); + +68  + gShl +:: +ouut_logs +() { + +69 i(! +log_mesges_ +. +emy +()) { + +70 i( +mode_ + ! +Mode +:: +DELAY +) { + +71 +a_cut_le +(); + +72 + gom_diyed_ + = +l +; + +75 ! + glog_mesges_ +. +emy +()) { + +76 aut + gmesge + = +d +:: +move +( +log_mesges_ +. +t +()); + +77 + glog_mesges_ +. +p_t +(); + +79 +t +( +uuid +:: +log +:: +fm_timeamp_ms +( +mesge +. +cڋ_ +-> +uime_ms +, 3)); + +80 +tf +( +F +(" %%lu: [%S] "), +uuid +:: +log +:: +fm_v_ch +( +mesge +. +cڋ_ +-> +v +), mesge. +id_ +, mesge.cڋ_-> +me +); + +82 i(( + gmesge +. + gcڋ_ +-> + gv + = +uuid +:: +log +:: +Lev +:: +ERR +|| ( +mesge +. +cڋ_ +-> +v + =uuid::log::Lev:: +WARNING +)) { + +83 +t +( +COLOR_RED +); + +84 +n +( +mesge +. +cڋ_ +-> +xt +); + +85 +t +( +COLOR_RESET +); + +86 } i( + gmesge +. + gcڋ_ +-> + gv + = +uuid +:: +log +:: +Lev +:: +INFO +) { + +87 +t +( +COLOR_YELLOW +); + +88 +n +( +mesge +. +cڋ_ +-> +xt +); + +89 +t +( +COLOR_RESET +); + +90 } i( + gmesge +. + gcڋ_ +-> + gv + = +uuid +:: +log +:: +Lev +:: +DEBUG +) { + +91 +t +( +COLOR_CYAN +); + +92 +n +( +mesge +. +cڋ_ +-> +xt +); + +93 +t +( +COLOR_RESET +); + +95 +n +( +mesge +. +cڋ_ +-> +xt +); + +98 :: +yld +(); + +101 +diy_om +(); + + @lib/uuid-console/src/shell_loop_all.cpp + +19  + ~ + +21  + ~ + +22  + ~ + +24 +mea + + guuid + { + +26 +mea + + gcse + { + +28 + gd +:: +t +< +d +:: +shed_r +< +Shl +>> Shl:: +shls_ +; + +30  + gShl +:: +lo_l +() { + +31 aut +shl + = +shls_ +. +beg +(); + gshl + !shls_. +d +();) { + +32 + gshl +-> +g +()-> +lo_e +(); + +35 i(! + gshl +-> +g +()-> +rušg +()) { + +36 + gshl + = +shls_ +. +a +( +shl +); + +38 + gshl +++; + + @lib/uuid-console/src/shell_print.cpp + +19  + ~ + +21  + ~ + +22  + ~ + +24  + ~ + +26 +mea + + guuid + { + +28 +mea + + gcse + { + +30 +size_t + + gShl +:: +t +(cڡ +d +:: +rg + & +da +) { + +31 i( +da +. +emy +()) { + +34  +wre +( +t_ +( +da +. +c_r +()), da. +ngth +()); + +38 +size_t + + gShl +:: +n +(cڡ +d +:: +rg + & +da +) { + +39 +size_t + +n + = +t +( +da +); + +40 + gn + + +n +(); + +41  + gn +; + +44 +size_t + + gShl +:: +tf +(cڡ * +fm +, ...) { + +45 +va_li + + g +; + +47 +va_t +( + +, +fm +); + +48 +size_t + + gn + = +vtf +( +fm +, + +); + +49 +va_d +( + +); + +51  + gn +; + +54 +size_t + + gShl +:: +tf +(cڡ +__FshSgHr + * +fm +, ...) { + +55 +va_li + + g +; + +57 +va_t +( + +, +fm +); + +58 +size_t + + gn + = +vtf +( +fm +, + +); + +59 +va_d +( + +); + +61  + gn +; + +64 +size_t + + gShl +:: +tn +(cڡ * +fm +, ...) { + +65 +va_li + + g +; + +67 +va_t +( + +, +fm +); + +68 +size_t + + gn + = +vtf +( +fm +, + +); + +69 +va_d +( + +); + +71 + gn + + +n +(); + +72  + gn +; + +75 +size_t + + gShl +:: +tn +(cڡ +__FshSgHr + * +fm +, ...) { + +76 +va_li + + g +; + +78 +va_t +( + +, +fm +); + +79 +size_t + + gn + = +vtf +( +fm +, + +); + +80 +va_d +( + +); + +82 + gn + + +n +(); + +83  + gn +; + +86 +size_t + + gShl +:: +vtf +(cڡ * +fm +, +va_li + + +) { + +87 +size_t + + gt_n + = 0; + +88 +va_li + + gcy_ +; + +90 +va_cy +( +cy_ +, + +); + +92  + gfm_n + = :: +vtf +( +nuαr +, 0, +fm +, + +); + +93 i( + gfm_n + > 0) { + +94 + gd +:: +rg + +xt +( +ic_ +< +d +::rg:: +size_ty +>( +fm_n +), '\0'); + +96 :: +vtf +(& +xt +[0],ext. +cy +(+ 1, +fm +, +cy_ +); + +97 + gt_n + = +t +( +xt +); + +100 +va_d +( +cy_ +); + +101  + gt_n +; + +104 +size_t + + gShl +:: +vtf +(cڡ +__FshSgHr + * +fm +, +va_li + + +) { + +105 +size_t + + gt_n + = 0; + +106 +va_li + + gcy_ +; + +108 +va_cy +( +cy_ +, + +); + +110  + gfm_n + = :: +vtf_P +( +nuαr +, 0, +t_ +< +PGM_P +>( +fm +), + +); + +111 i( + gfm_n + > 0) { + +112 + gd +:: +rg + +xt +( +ic_ +< +d +::rg:: +size_ty +>( +fm_n +), '\0'); + +114 :: +vtf_P +(& +xt +[0],ext. +cy +(+ 1, +t_ +< +PGM_P +>( +fm +), +cy_ +); + +115 + gt_n + = +t +( +xt +); + +118 +va_d +( +cy_ +); + +119  + gt_n +; + +123  + gShl +:: +t_l_avaab_commds +() { + +136 +d +:: +li + +s܋d_cmds +; + +138 + gcommds_ +-> +f_ch_avaab_commd +(* +this +, [&]( +d +:: +ve + & +me +, std::ve & +gumts +) { + +139 +CommdLe + +commd_le +{ +me +, +gumts +}; + +140 +commd_le +. +es_l_ms +( +me +. +size +()); + +141 +me +. +r +(); + +142 +gumts +. +r +(); + +143 +s܋d_cmds +. +push_back +( +commd_le +. +to_rg +( +maximum_commd_le_ngth +())); + +146 + gs܋d_cmds +. +st +(); + +147 aut& + g + : +s܋d_cmds +) { + +149 +n +( + +); + +153  + gShl +:: +a_cut_le +() { + +154 +t +( +F +("\033[0G\033[K")); + +157  + gShl +:: +a_chas +( +size_t + +cou +) { + +158 +t +( +d +:: +rg +( +cou +, '\x08')); + +159 +t +( +F +("\033[K")); + + @lib/uuid-console/src/shell_prompt.cpp + +19  + ~ + +21  + ~ + +23 +mea + + guuid + { + +25 +mea + + gcse + { + +27  + gShl +:: +diy_br +() { + +30 +d +:: +rg + +Shl +:: +home_xt +() { + +31  +d +:: +rg +{}; + +34 + gd +:: +rg + +Shl +:: +cڋxt_xt +() { + +35  +d +:: +rg +{}; + +38 + gd +:: +rg + +Shl +:: +om_efix +() { + +39  +d +:: +rg +{}; + +42 + gd +:: +rg + +Shl +:: +om_suffix +() { + +43  +d +:: +rg +{'$'}; + +46  + gShl +:: +d_of_smissi +() { + +47 i( +id_timeout_ + > 0) { + +48 +n +(); + +49 + +(); + +53  + gShl +:: +diy_om +() { + +54  +mode_ +) { + +55  +Mode +:: +DELAY +: + +56  +Mode +:: +BLOCKING +: + +59  + gMode +:: +PASSWORD +: + +60 +t +( +t_ +< +Shl +:: +PasswdDa + *>( +mode_da_ +. +g +())-> +sswd_om_ +); + +63  + gMode +:: +NORMAL +: + +64 +d +:: +rg + +home + = +home_xt +(); + +65 + gd +:: +rg + +cڋxt + = +cڋxt_xt +(); + +67 +t +( +om_efix +()); + +69 i(! + ghome +. +emy +()) { + +70 +t +( +COLOR_BRIGHT_GREEN +); + +71 +t +( +COLOR_BOLD_ON +); + +72 +t +( +home +); + +73 +t +( +COLOR_RESET +); + +74 +t +(':'); + +76 i(! + gcڋxt +. +emy +()) { + +77 +t +( +COLOR_BRIGHT_BLUE +); + +78 +t +( +COLOR_BOLD_ON +); + +79 +t +( +cڋxt +); + +80 +t +( +COLOR_RESET +); + +83 +t +( +om_suffix +()); + +84 +t +(' '); + +85 +t +( +le_bufr_ +); + +86 + gom_diyed_ + = +ue +; + + @lib/uuid-console/src/shell_stream.cpp + +19  + ~ + +21  + ~ + +23 +mea + + guuid + { + +25 +mea + + gcse + { + +27  + gShl +:: +avaab +() { + +28 i( +mode_ + = +Mode +:: +BLOCKING +) { + +29 aut* +blockg_da + = +t_ +< +Shl +:: +BlockgDa + *>( +mode_da_ +. +g +()); + +31 i(! +avaab_ch +()) { + +35 i( + gblockg_da +-> + gcsume_le_ed_ +) { + +36 cڡ  + gput + = +ek_e_ch +(); + +38 i( + gput + >= 0) { + +39 cڡ  +c + = +put +; + +41 + gblockg_da +-> + gcsume_le_ed_ + = +l +; + +43 i( + gevious_ + ='\x0D' && +c + == '\x0A') { + +45 +ad_e_ch +(); + +46 + gevious_ + = +c +; + +47  +avaab +(); + +62  + gShl +:: +ad +() { + +63 i( +mode_ + = +Mode +:: +BLOCKING +) { + +64 aut* +blockg_da + = +t_ +< +Shl +:: +BlockgDa + *>( +mode_da_ +. +g +()); + +65 cڡ  + gput + = +ad_e_ch +(); + +67 i( + gput + >= 0) { + +68 cڡ  +c + = +put +; + +70 i( + gblockg_da +-> + gcsume_le_ed_ +) { + +71 + gblockg_da +-> + gcsume_le_ed_ + = +l +; + +73 i( + gevious_ + ='\x0D' && +c + == '\x0A') { + +75 +evious_ + = +c +; + +76  +ad +(); + +81 + gevious_ + = +c +; + +84  + gput +; + +90  + gShl +:: +ek +() { + +91 i( +mode_ + = +Mode +:: +BLOCKING +) { + +92 aut* +blockg_da + = +t_ +< +Shl +:: +BlockgDa + *>( +mode_da_ +. +g +()); + +93 cڡ  + gput + = +ek_e_ch +(); + +95 i( + gblockg_da +-> + gcsume_le_ed_ +) { + +96 i( + gput + >= 0) { + +97 cڡ  +c + = +put +; + +99 + gblockg_da +-> + gcsume_le_ed_ + = +l +; + +101 i( + gevious_ + ='\x0D' && +c + == '\x0A') { + +103 +ad_e_ch +(); + +104 + gevious_ + = +c +; + +105  +ek +(); + +110  + gput +; + +116  + gShl +:: +ush +() { + + @lib/uuid-console/src/stream_console.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +26 +mea + + guuid + { + +28 +mea + + gcse + { + +30 + gSmCse +:: +SmCse +( +Sm + & +am +) + +31 : +Shl +() + +32 , +am_ +( +am +) { + +36 + gSmCse +:: +SmCse +( +d +:: +shed_r +< +Commds +> +commds +, +Sm + & +am +,  +cڋxt +,  +ags +) + +37 : +Shl +( +d +:: +move +( +commds +), +cڋxt +, +ags +) + +38 , +am_ +( +am +) { + +41 +size_t + + gSmCse +:: +wre +( +ut8_t + +da +) { + +42  +am_ +. +wre +( +da +); + +45 +size_t + + gSmCse +:: +wre +(cڡ +ut8_t + * +bufr +, size_ +size +) { + +46  + gam_ +. +wre +( +bufr +, +size +); + +49 +bo + + gSmCse +:: +avaab_ch +() { + +50  +am_ +. +avaab +() > 0; + +53  + gSmCse +:: +ad_e_ch +() { + +54  +am_ +. +ad +(); + +57  + gSmCse +:: +ek_e_ch +() { + +58  +am_ +. +ek +(); + + @lib/uuid-console/src/uuid/console.h + +19 #ide +UUID_CONSOLE_H_ + + +20  + #UUID_CONSOLE_H_ + + + ) + +22  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~
  • + +30  + ~ + +31  + ~ + +32  + ~ + +33  + ~ + +34  + ~ + +36  + ~ + +37  + ~ + +39 +mea + + guuid + { + +47 +mea + + gcse + { + +49 +ass + + gCommds +; + +62 +ass + + gShl + : +public + +d +:: +ab_shed_om_this +< +Shl +>,ubli + guuid +:: +log +:: +Hdr +, + gpublic + :: +Sm + { + +63 +public +: + +64  +cڡex + +size_t + +MAX_COMMAND_LINE_LENGTH + = 80; + +65  +cڡex + +size_t + + gMAX_LOG_MESSAGES + = 20; + +78 +usg + + gsswd_funi + = +d +:: +funi +<( +Shl + & +shl +, +bo + + gcomed +, cڡ + gd +:: +rg + & +sswd +)>; + +85 +usg + + gday_funi + = +d +:: +funi +<( +Shl + & +shl +)>; + +96 +usg + + gblockg_funi + = +d +:: +funi +< +bo +( +Shl + & +shl +, bo + +)>; + +98 ~ +Shl +( + govride +; + +108  +lo_l +(); + +124  +t +(); + +133  +lo_e +(); + +141 +bo + +rušg +() const; + +153  + +(); + +161  +le + cڡ + guuid +:: +log +:: +Logg + & +logg +() { + +162  +logg_ +; + +174 +vtu +  + gݔ +<<( + gd +:: +shed_r +< +uuid +:: +log +:: +Mesge +> +mesge + +ovride +; + +184 + guuid +:: +log +:: +Lev + +log_v +() const; + +195  +log_v +( +uuid +:: +log +:: +Lev + +v +); + +203 +size_t + +maximum_commd_le_ngth +() const; + +212  +maximum_commd_le_ngth +( +size_t + +ngth +); + +219 +size_t + +maximum_log_mesges +() const; + +228  +maximum_log_mesges +( +size_t + +cou +); + +235  +id_timeout +() const; + +244  +id_timeout +( +timeout +); + +254 +le +  +cڋxt +() const { + +255 i(! + gcڋxt_ +. +emy +()) { + +256  + gcڋxt_ +. +back +(); + +269 +le +  +r_cڋxt +( +cڋxt +) { + +270 + gcڋxt_ +. +ema_back +( +cڋxt +); + +281 +vtu + +bo + +ex_cڋxt +(); + +292 +le +  +add_ags +( +ags +) { + +293 + gags_ + | +ags +; + +306 +le + +bo + +has_ags +( +ags +) const { + +307  ( + gags_ + & + gags += +ags +; + +318 +le +  +move_ags +( +ags +) { + +319 + gags_ + &~ +ags +; + +337  +r_sswd +(cڡ +__FshSgHr + * +om +, +sswd_funi + +funi +); + +352  +day_f +( +ms +, +day_funi + +funi +); + +371  +day_u +( +ut64_t + +ms +, +day_funi + +funi +); + +385  +block_wh +( +blockg_funi + +funi +); + +396  +avaab +( +f + + govride +; + +406  +ad +( +f + + govride +; + +417  +ek +( +f + + govride +; + +426 +size_t + +wre +( +ut8_t + +da + + govride + = 0; + +435 +size_t + +wre +(cڡ +ut8_t + * +bufr +, size_ +size + + govride + = 0; + +446  +ush +( + govride +; + +448 + gusg + :: +Prt +:: +t +; + +456 +size_t + +t +(cڡ +d +:: +rg + & +da +); + +457 + gusg + :: +Prt +:: +n +; + +465 +size_t + +n +(cڡ +d +:: +rg + & +da +); + +474 +size_t + +tf +(cڡ * +fm +, ...) ; + +483 +size_t + +tf +(cڡ +__FshSgHr + * +fm +, ...) ; + +492 +size_t + +tn +(cڡ * +fm +, ...) ; + +501 +size_t + +tn +(cڡ +__FshSgHr + * +fm +, ...) ; + +508  +t_l_avaab_commds +(); + +522  +voke_commd +(cڡ +d +:: +rg + & +le +); + +524 + geed +: + +535 +Shl +() = ; + +547 +Shl +( +d +:: +shed_r +< +Commds +> +commds +,  +cڋxt + = 0,  +ags + = 0); + +554 +vtu +  +a_cut_le +(); + +561 +vtu +  +a_chas +( +size_t + +cou +); + +569 +vtu +  +d +(); + +576 +vtu +  +diy_br +(); + +586 +vtu + + gd +:: +rg + +home_xt +(); + +597 +vtu + + gd +:: +rg + +cڋxt_xt +(); + +608 +vtu + + gd +:: +rg + +om_efix +(); + +618 +vtu + + gd +:: +rg + +om_suffix +(); + +631 +vtu +  +d_of_smissi +(); + +638 +vtu +  +ݳd +(); + +640 + give +: + +646 as + cMode + : +ut8_t + { + +647 +NORMAL +, + +648 + gPASSWORD +, + +649 + gDELAY +, + +650 + gBLOCKING +, + +658 as + cModeDa + { + +659 + gpublic +: + +660 +vtu + ~ +ModeDa +() = ; + +662 + geed +: + +663 +ModeDa +() = ; + +671 as + cPasswdDa + : +public + +ModeDa + { + +672 +public +: + +684 +PasswdDa +(cڡ +__FshSgHr + * +sswd_om +, +sswd_funi + &&assword_function); + +685 ~ +PasswdDa +( + govride + = ; + +687 cڡ +__FshSgHr + * + gsswd_om_ +; + +688 +sswd_funi + + gsswd_funi_ +; + +696 as + cDayDa + : +public + +ModeDa + { + +697 +public +: + +708 +DayDa +( +ut64_t + +day_time +, +day_funi + && delay_function); + +709 ~ +DayDa +( + govride + = ; + +711 +ut64_t + + gday_time_ +; + +712 +day_funi + + gday_funi_ +; + +720 as + cBlockgDa + : +public + +ModeDa + { + +721 +public +: + +730 +exic + +BlockgDa +( +blockg_funi + && blocking_function); + +731 ~ +BlockgDa +( + govride + = ; + +733 +blockg_funi + + gblockg_funi_ +; + +734 +bo + + gcsume_le_ed_ + = +ue +; + +735 +bo + + g_ + = +l +; + +747 as + cQueuedLogMesge + { + +748 + gpublic +: + +756 +QueuedLogMesge +( +id +, +d +:: +shed_r +< +uuid +:: +log +:: +Mesge +> && +cڋ +); + +757 ~ +QueuedLogMesge +() = ; + +759 cڡ  + gid_ +; + +760 cڡ + gd +:: +shed_r + +cڋ_ +; + +763 +Shl +(cڡ Sh& +de +; + +764 + gShl + & + gݔ +=(cڡ +Shl + & +de +; + +773  +lo_nm +(); + +781  +lo_sswd +(); + +789  +lo_day +(); + +797  +lo_blockg +(); + +805 +vtu + +bo + +avaab_ch +() = 0; + +812 +vtu +  +ad_e_ch +() = 0; + +820 +vtu +  +ek_e_ch +() = 0; + +831  +diy_om +(); + +837  +ouut_logs +(); + +843  +oss_commd +(); + +849  +oss_comi +(); + +859  +oss_sswd +( +bo + +comed +); + +866  +check_id_timeout +(); + +875  +de_bufr_wd +( +bo + +diy +); + +885 +size_t + +vtf +(cڡ * +fm +, +va_li + + +); + +894 +size_t + +vtf +(cڡ +__FshSgHr + * +fm +, +va_li + + +); + +896 cڡ + guuid +:: +log +:: +Logg + +logg_ +; + +897  + gd +:: +t +< +d +:: +shed_r +< +Shl +>> +shls_ +; + +899 + gd +:: +shed_r +< +Commds +> +commds_ +; + +900 + gd +:: +deque +<> +cڋxt_ +; + +901  + gags_ + = 0; + +902  + glog_mesge_id_ + = 0; + +903 + gd +:: +li +< +QueuedLogMesge +> +log_mesges_ +; + +904 +size_t + + gmaximum_log_mesges_ + = +MAX_LOG_MESSAGES +; + +905 + gd +:: +rg + +le_bufr_ +; + +906 +size_t + + gmaximum_commd_le_ngth_ + = +MAX_COMMAND_LINE_LENGTH +; + +907  + gevious_ + = 0; + +908 +Mode + + gmode_ + = Mode:: +NORMAL +; + +909 + gd +:: +unique_r +< +ModeDa +> +mode_da_ + = +nuαr +; + +910 +bo + + gݳd_ + = +l +; + +911 +bo + + gom_diyed_ + = +l +; + +912 +ut64_t + + gid_time_ + = 0; + +913 +ut64_t + + gid_timeout_ + = 0; + +922 as + cCommdLe + { + +923 + gpublic +: + +929 +CommdLe +() = ; + +938 +exic + +CommdLe +(cڡ +d +:: +rg + & +le +); + +947 +exic + +CommdLe +( +d +:: +liz_li +> +gumts +); + +949 ~ +CommdLe +() = ; + +951 #ifde +UNIT_TEST + + +952 +CommdLe +(CommandLine &&) = ; + +953 + gCommdLe + & + gݔ +=( +CommdLe + &&) = ; + +954 +CommdLe +(cڡ CommdL& +__ibu__ +(( +dd +)) = ; + +955 + gCommdLe + & + gݔ +=(cڡ +CommdLe + & +__ibu__ +(( +dd +)) = ; + +968 + gd +:: +rg + +to_rg +( +size_t + +rve + = +Shl +:: +MAX_COMMAND_LINE_LENGTH +) const; + +978 +le + +size_t + +tٮ_size +() const { + +979  + gms_ +. +size +(+ ( + gag_a + ? 1 : 0); + +988  +t +(); + +998 +le +  +es_l_ms +() { + +999 + ges_ms_ + = +d +:: +numic_lims +< +size_t +>:: +max +(); + +1012 +le +  +es_l_ms +() { + +1013 + ges_ms_ + = +ms_ +. +size +(); + +1026 +le +  +es_l_ms +( +size_t + +cou +) { + +1027 + ges_ms_ + = +cou +; + +1036 +le + + gd +:: +ve +< +d +:: +rg +> & +ݔ +*() { + +1037  +ms_ +; + +1045 +le + cڡ + gd +:: +ve +< +d +:: +rg +> & +ݔ +*() const { + +1046  +ms_ +; + +1054 +le + + gd +:: +ve +< +d +:: +rg +> * +ݔ +->() { + +1055  & +ms_ +; + +1063 +le + cڡ + gd +:: +ve +< +d +:: +rg +> * +ݔ +->() const { + +1064  & +ms_ +; + +1075 +nd + +le + +bo + + gݔ +==(cڡ +CommdLe + & +lhs +, cڡ + gCommdLe + & + grhs +) { + +1076  ( + glhs +. + gag_a + = +rhs +. +ag_a +&& ( +lhs +. +ms_ + ==hs.parameters_); + +1086 +nd + +le + +bo + + gݔ +!=(cڡ +CommdLe + & +lhs +, cڡ + gCommdLe + & + grhs +) { + +1087  !( + glhs + = +rhs +); + +1090 +bo + + gag_a + = +l +; + +1092 + give +: + +1093 +d +:: +ve + +ms_ +; + +1094 +size_t + + ges_ms_ + = +d +:: +numic_lims +:: +max +(); + +1104 as + cCommds + { + +1105 + gpublic +: + +1113  + sComi + { + +1114 +d +:: +li +< +CommdLe +> +hp +; + +1115 +CommdLe + + gamt +; + +1123  + sExecuti + { + +1124 cڡ +__FshSgHr + * + gr +; + +1134 +usg + + gcommd_funi + = +d +:: +funi +<( +Shl + & +shl +, + gd +:: +ve + & +gumts +)>; + +1150 +usg + + ggumt_comi_funi + = +d +:: +funi +( +Shl + & +shl +, cڡ + gd +::ve & +gumts +)>; + +1160 +usg + + gy_funi + = +d +:: +funi +<(d:: +ve + & +me +, + gd +::ve & +gumts +)>; + +1169 +Commds +() = ; + +1170 ~ +Commds +() = ; + +1185  +add_commd +(cڡ +ash_rg_ve + & +me +, +commd_funi + +funi +); + +1202  +add_commd +(cڡ +ash_rg_ve + & +me +, cڡ fsh_rg_ve & +gumts +, +commd_funi + +funi +); + +1221  +add_commd +(cڡ +ash_rg_ve + & +me +, cڡ fsh_rg_ve & +gumts +, +commd_funi + +funi +, +gumt_comi_funi + +g_funi +); + +1236  +add_commd +( +cڋxt +,  +ags +, cڡ +ash_rg_ve + & +me +, +commd_funi + +funi +); + +1254  +add_commd +( +cڋxt +,  +ags +, cڡ +ash_rg_ve + & +me +, cڡ fsh_rg_ve & +gumts +, +commd_funi + +funi +); + +1274  +add_commd +( +cڋxt +, + +1275  +ags +, + +1276 cڡ +ash_rg_ve + & +me +, + +1277 cڡ +ash_rg_ve + & +gumts +, + +1278 +commd_funi + +funi +, + +1279 +gumt_comi_funi + +g_funi +); + +1291 +Executi + +execu_commd +( +Shl + & +shl +, +CommdLe + && +commd_le +); + +1303 +Comi + +come_commd +( +Shl + & +shl +, cڡ +CommdLe + & +commd_le +); + +1313  +f_ch_avaab_commd +( +Shl + & +shl +, +y_funi + +f +) const; + +1315  +move_cڋxt_commds +( +cڋxt +); + +1316  +move_l_commds +(); + +1318 + give +: + +1323 as + cCommd + { + +1324 +public +: + +1341 +Commd +( +ags +, + +1342 cڡ +ash_rg_ve + +me +, + +1343 cڡ +ash_rg_ve + +gumts +, + +1344 +commd_funi + +funi +, + +1345 +gumt_comi_funi + +g_funi +); + +1346 ~ +Commd +(); + +1356 +size_t + +mimum_gumts +() const; + +1364 +le + +size_t + +maximum_gumts +() const { + +1365  + ggumts_ +. +size +(); + +1368  + gags_ +; + +1369 cڡ +ash_rg_ve + + gme_ +; + +1370 cڡ +ash_rg_ve + + ggumts_ +; + +1371 +commd_funi + + gfuni_ +; + +1372 +gumt_comi_funi + + gg_funi_ +; + +1374 + give +: + +1375 +Commd +(cڡ Commd & +de +; + +1376 + gCommd + & + gݔ +=(cڡ +Commd + & +de +; + +1385  + sMch + { + +1386 + gd +:: +muim +< +size_t +, cڡ + gCommd + *> + gexa +; + +1387 + gd +:: +muim +< +size_t +, cڡ + gCommd + *> + gl +; + +1399 +Mch + +fd_commd +( +Shl + & +shl +, cڡ +CommdLe + & +commd_le +); + +1412  +bo + +fd_lge_comm_efix +(cڡ +d +:: +muim +< +size_t +, cڡ +Commd + *> & +commds +, std:: +ve + & +lge_me +); + +1421  + gd +:: +rg + +fd_lge_comm_efix +(cڡ +d +:: +ve + & +gumts +); + +1423 + gd +:: +muim +<, + gCommd +> + gcommds_ +; + +1435 as + cSmCse + : +vtu + +public + +Shl + { + +1436 +public +: + +1449 +SmCse +( +d +:: +shed_r +< +Commds +> +commds +, +Sm + & +am +,  +cڋxt + = 0,  +ags + = 0); + +1450 ~ +SmCse +( + govride + = ; + +1459 +size_t + +wre +( +ut8_t + +da + + govride +; + +1468 +size_t + +wre +(cڡ +ut8_t + * +bufr +, size_ +size + + govride +; + +1470 + geed +: + +1481 +exic + +SmCse +( +Sm + & +am +); + +1483 + give +: + +1484 +SmCse +(cڡ SmCsސ& +de +; + +1485 + gSmCse + & + gݔ +=(cڡ +SmCse + & +de +; + +1493 +bo + +avaab_ch +( + govride +; + +1500  +ad_e_ch +( + govride +; + +1508  +ek_e_ch +( + govride +; + +1510 + gSm + & + gam_ +; + + @lib/uuid-log/src/format_level_char.cpp + +19  + ~ + +21 +mea + + guuid + { + +23 +mea + + glog + { + +25  +fm_v_ch +( +Lev + +v +) { + +26 +cڡex +  + glog_v_chs +[() +Lev +:: +ALL + - ()Lev:: +OFF + + 1] = {' ', 'P', 'A', 'C', 'E', 'W', 'N', 'I', 'D', 'T', ' '}; + +27  + glog_v_chs +[() +v + + 1]; + + @lib/uuid-log/src/format_level_lowercase.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 +mea + + glog + { + +29  +cڡex + cڡ * +pr_v_low_off + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "off"; + +30  +cڡex + cڡ * +pr_v_low_emg + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "emerg"; + +31  +cڡex + cڡ * +pr_v_low_ + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "crit"; + +32  +cڡex + cڡ * +pr_v_low_t + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "alert"; + +33  +cڡex + cڡ * +pr_v_low_r + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "err"; + +34  +cڡex + cڡ * +pr_v_low_wng + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "warning"; + +35  +cڡex + cڡ * +pr_v_low_ni + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "notice"; + +36  +cڡex + cڡ * +pr_v_low_fo + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "info"; + +37  +cڡex + cڡ * +pr_v_low_debug + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "debug"; + +38  +cڡex + cڡ * +pr_v_low_a + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "trace"; + +39  +cڡex + cڡ * +pr_v_low_l + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "all"; + +41 cڡ +__FshSgHr + * + glog_v_low +[() +Lev +:: +ALL + - ()Lev:: +OFF + + 1] +__ibu__ +(( +__igd__ +(()))) + +42 +PROGMEM + = { +t_ +( +pr_v_low_off +), + +43 +t_ +( +pr_v_low_emg +), + +44 +t_ +( +pr_v_low_ +), + +45 +t_ +( +pr_v_low_t +), + +46 +t_ +( +pr_v_low_r +), + +47 +t_ +( +pr_v_low_wng +), + +48 +t_ +( +pr_v_low_ni +), + +49 +t_ +( +pr_v_low_fo +), + +50 +t_ +( +pr_v_low_debug +), + +51 +t_ +( +pr_v_low_a +), + +52 +t_ +( +pr_v_low_l +)}; + +54 cڡ +__FshSgHr + * +fm_v_low +( +Lev + +v +) { + +55  + glog_v_low +[() +v + + 1]; + + @lib/uuid-log/src/format_level_uppercase.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 +mea + + glog + { + +29  +cڡex + cڡ * +pr_v_u_off + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "OFF"; + +30  +cڡex + cڡ * +pr_v_u_emg + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "EMERG"; + +31  +cڡex + cڡ * +pr_v_u_ + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "CRIT"; + +32  +cڡex + cڡ * +pr_v_u_t + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "ALERT"; + +33  +cڡex + cڡ * +pr_v_u_r + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "ERR"; + +34  +cڡex + cڡ * +pr_v_u_wng + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "WARNING"; + +35  +cڡex + cڡ * +pr_v_u_ni + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "NOTICE"; + +36  +cڡex + cڡ * +pr_v_u_fo + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "INFO"; + +37  +cڡex + cڡ * +pr_v_u_debug + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "DEBUG"; + +38  +cڡex + cڡ * +pr_v_u_a + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "TRACE"; + +39  +cڡex + cڡ * +pr_v_u_l + +__ibu__ +(( +__igd__ +(())) + gPROGMEM + = "ALL"; + +41 cڡ +__FshSgHr + * + glog_v_u +[() +Lev +:: +ALL + - ()Lev:: +OFF + + 1] +__ibu__ +(( +__igd__ +(()))) + +42 +PROGMEM + = { +t_ +( +pr_v_u_off +), + +43 +t_ +( +pr_v_u_emg +), + +44 +t_ +( +pr_v_u_ +), + +45 +t_ +( +pr_v_u_t +), + +46 +t_ +( +pr_v_u_r +), + +47 +t_ +( +pr_v_u_wng +), + +48 +t_ +( +pr_v_u_ni +), + +49 +t_ +( +pr_v_u_fo +), + +50 +t_ +( +pr_v_u_debug +), + +51 +t_ +( +pr_v_u_a +), + +52 +t_ +( +pr_v_u_l +)}; + +54 cڡ +__FshSgHr + * +fm_v_u +( +Lev + +v +) { + +55  + glog_v_u +[() +v + + 1]; + + @lib/uuid-log/src/format_timestamp_ms.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +26 +mea + + guuid + { + +28 +mea + + glog + { + +30 + gd +:: +rg + +fm_timeamp_ms +( +ut64_t + +timeamp_ms +,  +days_width +) { + +31  + gdays +; + +32  + ghours +, + gmus +, + gcds +, + gmlicds +; + +34 + gdays + = +timeamp_ms + / 86400000UL; + +35 + gtimeamp_ms + %= 86400000UL; + +37 + ghours + = +timeamp_ms + / 3600000UL; + +38 + gtimeamp_ms + %= 3600000UL; + +40 + gmus + = +timeamp_ms + / 60000UL; + +41 + gtimeamp_ms + %= 60000UL; + +43 + gcds + = +timeamp_ms + / 1000UL; + +44 + gtimeamp_ms + %= 1000UL; + +46 + gmlicds + = +timeamp_ms +; + +48 + gd +:: +ve +<> +xt +(10 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 3 + 1); + +50 +tf_P +( +xt +. +da +(),ext. +size +(), +PSTR +("%0*lu+%02u:%02u:%02u.%03u"), +d +:: +m +( +days_width +, 10U), +days +, +hours +, +mus +, +cds +, +mlicds +); + +52  + gxt +. +da +(); + + @lib/uuid-log/src/levels.cpp + +19  + ~ + +21  + ~ + +23 +mea + + guuid + { + +25 +mea + + glog + { + +27 + gd +:: +ve +< +Lev +> +vs +() { + +28  { +Lev +:: +OFF +, + +29 + gLev +:: +EMERG +, + +30 + gLev +:: +ALERT +, + +31 + gLev +:: +CRIT +, + +32 + gLev +:: +ERR +, + +33 + gLev +:: +WARNING +, + +34 + gLev +:: +NOTICE +, + +35 + gLev +:: +INFO +, + +36 + gLev +:: +DEBUG +, + +37 + gLev +:: +TRACE +, + +38 + gLev +:: +ALL +}; + + @lib/uuid-log/src/levels_lowercase.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 +mea + + glog + { + +29 + gd +:: +ve +< +d +:: +rg +> +vs_low +() { + +30  { +uuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +OFF +)), + +31 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +EMERG +)), + +32 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +ALERT +)), + +33 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +CRIT +)), + +34 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +ERR +)), + +35 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +WARNING +)), + +36 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +NOTICE +)), + +37 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +INFO +)), + +38 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +DEBUG +)), + +39 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +TRACE +)), + +40 + guuid +:: +ad_ash_rg +( +fm_v_low +( +Lev +:: +ALL +))}; + + @lib/uuid-log/src/levels_uppercase.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 +mea + + glog + { + +29 + gd +:: +ve +< +d +:: +rg +> +vs_u +() { + +30  { +uuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +OFF +)), + +31 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +EMERG +)), + +32 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +ALERT +)), + +33 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +CRIT +)), + +34 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +ERR +)), + +35 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +WARNING +)), + +36 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +NOTICE +)), + +37 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +INFO +)), + +38 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +DEBUG +)), + +39 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +TRACE +)), + +40 + guuid +:: +ad_ash_rg +( +fm_v_u +( +Lev +:: +ALL +))}; + + @lib/uuid-log/src/log.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~
  • + +26  + ~ + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +32 +mea + + guuid + { + +34 +mea + + glog + { + +36 + gd +:: +m +< +Hdr + *, + gLev +> + gLogg +:: +hdrs_ +; + +37 +Lev + + gLogg +:: +v_ + = Lev:: +OFF +; + +39 + gMesge +:: +Mesge +( +ut64_t + +uime_ms +, +Lev + +v +, +Facy + +cy +, cڡ +__FshSgHr + * +me +, cڡ +d +:: +rg + && +xt +) + +40 : +uime_ms +(uptime_ms) + +41 , +v +(level) + +42 , +cy +(facility) + +43 , +me +(name) + +44 , +xt +( +d +:: +move +(text)) { + +47 +Logg +::Logg(cڡ +__FshSgHr + * +me +, +Facy + +cy +) + +48 : +me_ +( +me +) + +49 , +cy_ +( +cy +){ + +53  + gLogg +:: +gi_hdr +( +Hdr + * +hdr +, +Lev + +v +) { + +54 + ghdrs_ +[ +hdr +] = +v +; + +55 +esh_log_v +(); + +58  + gLogg +:: +uegi_hdr +( +Hdr + * +hdr +) { + +59 +hdrs_ +. +a +( +hdr +); + +60 +esh_log_v +(); + +63 +Lev + + gLogg +:: +g_log_v +(cڡ +Hdr + * +hdr +) { + +64 cڡut +v + = +hdrs_ +. +fd +( +cڡ_ +< +Hdr + *>( +hdr +)); + +66 i( + gv + ! +hdrs_ +. +d +()) { + +67  +v +-> +cd +; + +70  + gLev +:: +OFF +; + +73  + gLogg +:: +emg +(cڡ * +fm +, ...) const { + +74 i( +abd +( +Lev +:: +EMERG +)) { + +75 +va_li + + +; + +77 +va_t +( + +, +fm +); + +78 +vlog +( +Lev +:: +EMERG +, +fm +, + +); + +79 +va_d +( + +); + +83  + gLogg +:: +emg +(cڡ +__FshSgHr + * +fm +, ...) const { + +84 i( +abd +( +Lev +:: +EMERG +)) { + +85 +va_li + + +; + +87 +va_t +( + +, +fm +); + +88 +vlog +( +Lev +:: +EMERG +, +fm +, + +); + +89 +va_d +( + +); + +93  + gLogg +:: + +(cڡ * +fm +, ...) const { + +94 i( +abd +( +Lev +:: +CRIT +)) { + +95 +va_li + + +; + +97 +va_t +( + +, +fm +); + +98 +vlog +( +Lev +:: +CRIT +, +fm +, + +); + +99 +va_d +( + +); + +103  + gLogg +:: + +(cڡ +__FshSgHr + * +fm +, ...) const { + +104 i( +abd +( +Lev +:: +CRIT +)) { + +105 +va_li + + +; + +107 +va_t +( + +, +fm +); + +108 +vlog +( +Lev +:: +CRIT +, +fm +, + +); + +109 +va_d +( + +); + +113  + gLogg +:: +t +(cڡ * +fm +, ...) const { + +114 i( +abd +( +Lev +:: +ALERT +)) { + +115 +va_li + + +; + +117 +va_t +( + +, +fm +); + +118 +vlog +( +Lev +:: +ALERT +, +fm +, + +); + +119 +va_d +( + +); + +123  + gLogg +:: +t +(cڡ +__FshSgHr + * +fm +, ...) const { + +124 i( +abd +( +Lev +:: +ALERT +)) { + +125 +va_li + + +; + +127 +va_t +( + +, +fm +); + +128 +vlog +( +Lev +:: +ALERT +, +fm +, + +); + +129 +va_d +( + +); + +132  + gLogg +:: +r +(cڡ * +fm +, ...) const { + +133 i( +abd +( +Lev +:: +ERR +)) { + +134 +va_li + + +; + +136 +va_t +( + +, +fm +); + +137 +vlog +( +Lev +:: +ERR +, +fm +, + +); + +138 +va_d +( + +); + +142  + gLogg +:: +r +(cڡ +__FshSgHr + * +fm +, ...) const { + +143 i( +abd +( +Lev +:: +ERR +)) { + +144 +va_li + + +; + +146 +va_t +( + +, +fm +); + +147 +vlog +( +Lev +:: +ERR +, +fm +, + +); + +148 +va_d +( + +); + +152  + gLogg +:: +wng +(cڡ * +fm +, ...) const { + +153 i( +abd +( +Lev +:: +WARNING +)) { + +154 +va_li + + +; + +156 +va_t +( + +, +fm +); + +157 +vlog +( +Lev +:: +WARNING +, +fm +, + +); + +158 +va_d +( + +); + +162  + gLogg +:: +wng +(cڡ +__FshSgHr + * +fm +, ...) const { + +163 i( +abd +( +Lev +:: +WARNING +)) { + +164 +va_li + + +; + +166 +va_t +( + +, +fm +); + +167 +vlog +( +Lev +:: +WARNING +, +fm +, + +); + +168 +va_d +( + +); + +172  + gLogg +:: +ni +(cڡ * +fm +, ...) const { + +173 i( +abd +( +Lev +:: +NOTICE +)) { + +174 +va_li + + +; + +176 +va_t +( + +, +fm +); + +177 +vlog +( +Lev +:: +NOTICE +, +fm +, + +); + +178 +va_d +( + +); + +182  + gLogg +:: +ni +(cڡ +__FshSgHr + * +fm +, ...) const { + +183 i( +abd +( +Lev +:: +NOTICE +)) { + +184 +va_li + + +; + +186 +va_t +( + +, +fm +); + +187 +vlog +( +Lev +:: +NOTICE +, +fm +, + +); + +188 +va_d +( + +); + +192  + gLogg +:: +fo +(cڡ * +fm +, ...) const { + +193 i( +abd +( +Lev +:: +INFO +)) { + +194 +va_li + + +; + +196 +va_t +( + +, +fm +); + +197 +vlog +( +Lev +:: +INFO +, +fm +, + +); + +198 +va_d +( + +); + +202  + gLogg +:: +fo +(cڡ +__FshSgHr + * +fm +, ...) const { + +203 i( +abd +( +Lev +:: +INFO +)) { + +204 +va_li + + +; + +206 +va_t +( + +, +fm +); + +207 +vlog +( +Lev +:: +INFO +, +fm +, + +); + +208 +va_d +( + +); + +212  + gLogg +:: +debug +(cڡ * +fm +, ...) const { + +213 i( +abd +( +Lev +:: +DEBUG +)) { + +214 +va_li + + +; + +216 +va_t +( + +, +fm +); + +217 +vlog +( +Lev +:: +DEBUG +, +fm +, + +); + +218 +va_d +( + +); + +222  + gLogg +:: +debug +(cڡ +__FshSgHr + * +fm +, ...) const { + +223 i( +abd +( +Lev +:: +DEBUG +)) { + +224 +va_li + + +; + +226 +va_t +( + +, +fm +); + +227 +vlog +( +Lev +:: +DEBUG +, +fm +, + +); + +228 +va_d +( + +); + +232  + gLogg +:: +a +(cڡ * +fm +, ...) const { + +233 i( +abd +( +Lev +:: +TRACE +)) { + +234 +va_li + + +; + +236 +va_t +( + +, +fm +); + +237 +vlog +( +Lev +:: +TRACE +, +fm +, + +); + +238 +va_d +( + +); + +242  + gLogg +:: +a +(cڡ +__FshSgHr + * +fm +, ...) const { + +243 i( +abd +( +Lev +:: +TRACE +)) { + +244 +va_li + + +; + +246 +va_t +( + +, +fm +); + +247 +vlog +( +Lev +:: +TRACE +, +fm +, + +); + +248 +va_d +( + +); + +252  + gLogg +:: +log +( +Lev + +v +, +Facy + +cy +, cڡ * +fm +, ...) const { + +253 i( + gv + < + gLev +:: +EMERG +) { + +254 +v + = +Lev +:: +EMERG +; + +255 } i( + gv + > + gLev +:: +TRACE +) { + +256 +v + = +Lev +:: +TRACE +; + +259 i( +abd +( +v +)) { + +260 +va_li + + g +; + +262 +va_t +( + +, +fm +); + +263 +vlog +( +v +, +cy +, +fm +, + +); + +264 +va_d +( + +); + +268  + gLogg +:: +log +( +Lev + +v +, +Facy + +cy +, cڡ +__FshSgHr + * +fm +, ...) const { + +269 i( + gv + < + gLev +:: +EMERG +) { + +270 +v + = +Lev +:: +EMERG +; + +271 } i( + gv + > + gLev +:: +TRACE +) { + +272 +v + = +Lev +:: +TRACE +; + +275 i( +abd +( +v +)) { + +276 +va_li + + g +; + +278 +va_t +( + +, +fm +); + +279 +vlog +( +v +, +cy +, +fm +, + +); + +280 +va_d +( + +); + +284  + gLogg +:: +vlog +( +Lev + +v +, cڡ * +fm +, +va_li + + +) const { + +285 +vlog +( +v +, +cy_ +, +fm +, + +); + +288  + gLogg +:: +vlog +( +Lev + +v +, +Facy + +cy +, cڡ * +fm +, +va_li + + +) const { + +289 + gd +:: +ve +<> +xt +( +MAX_LOG_LENGTH + + 1); + +291 i( +vtf +( +xt +. +da +(),ext. +size +(), +fm +, + +) <= 0) { + +295 +dich +( +v +, +cy +, +xt +); + +298  + gLogg +:: +vlog +( +Lev + +v +, cڡ +__FshSgHr + * +fm +, +va_li + + +) const { + +299 +vlog +( +v +, +cy_ +, +fm +, + +); + +302  + gLogg +:: +vlog +( +Lev + +v +, +Facy + +cy +, cڡ +__FshSgHr + * +fm +, +va_li + + +) const { + +303 + gd +:: +ve +<> +xt +( +MAX_LOG_LENGTH + + 1); + +305 i( +vtf_P +( +xt +. +da +(),ext. +size +(), +t_ +< +PGM_P +>( +fm +), + +) <= 0) { + +309 +dich +( +v +, +cy +, +xt +); + +312  + gLogg +:: +dich +( +Lev + +v +, +Facy + +cy +, +d +:: +ve +<> & +xt +) const { + +313 +d +:: +shed_r +< +Mesge +> +mesge + = std:: +make_shed +( +g_uime_ms +(), + gv +, + gcy +, + gme_ +, + gxt +. +da +()); + +314 + gxt +. +size +(0); + +316 aut& + ghdr + : +hdrs_ +) { + +317 i( +v + < +hdr +. +cd +) { + +318 * +hdr +. +f + << +mesge +; + +323  + gLogg +:: +esh_log_v +() { + +324 +v_ + = +Lev +:: +OFF +; + +326 aut& + ghdr + : +hdrs_ +) { + +327 i( +v_ + < +hdr +. +cd +) { + +328 +v_ + = +hdr +. +cd +; + + @lib/uuid-log/src/parse_level_lowercase.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 +mea + + glog + { + +29 +bo + +r_v_low +(cڡ +d +:: +rg + & +me +, +Lev + & +v +) { + +30 aut + gvue + : +vs +()) { + +31 i(! +rcmp_P +( +me +. +c_r +(), +t_ +< +PGM_P +>( +fm_v_low +( +vue +)))) { + +32 + gv + = +vue +; + +33  + gue +; + +36  + gl +; + + @lib/uuid-log/src/parse_level_uppercase.cpp + +19  + ~ + +21  + ~ + +23  + ~ + +25 +mea + + guuid + { + +27 +mea + + glog + { + +29 +bo + +r_v_u +(cڡ +d +:: +rg + & +me +, +Lev + & +v +) { + +30 aut + gvue + : +vs +()) { + +31 i(! +rcmp_P +( +me +. +c_r +(), +t_ +< +PGM_P +>( +fm_v_u +( +vue +)))) { + +32 + gv + = +vue +; + +33  + gue +; + +36  + gl +; + + @lib/uuid-log/src/uuid/log.h + +19 #ide +UUID_LOG_H_ + + +20  + #UUID_LOG_H_ + + + ) + +22  + ~ + +24  + ~ + +25  + ~ + +26  + ~
  • + +27  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +32  + ~ + +34 +mea + + guuid + { + +49  + #COLOR_RESET + "\x1B[0m" + + ) + +50  + #COLOR_BLACK + "\x1B[0;30m" + + ) + +51  + #COLOR_RED + "\x1B[0;31m" + + ) + +52  + #COLOR_GREEN + "\x1B[0;32m" + + ) + +53  + #COLOR_YELLOW + "\x1B[0;33m" + + ) + +54  + #COLOR_BLUE + "\x1B[0;34m" + + ) + +55  + #COLOR_MAGENTA + "\x1B[0;35m" + + ) + +56  + #COLOR_CYAN + "\x1B[0;36m" + + ) + +57  + #COLOR_WHITE + "\x1B[0;37m" + + ) + +58  + #COLOR_BOLD_ON + "\x1B[1m" + + ) + +59  + #COLOR_BOLD_OFF + "\x1B[22m" + + ) + +60  + #COLOR_BRIGHT_BLACK + "\x1B[0;90m" + + ) + +61  + #COLOR_BRIGHT_RED + "\x1B[0;91m" + + ) + +62  + #COLOR_BRIGHT_GREEN + "\x1B[0;92m" + + ) + +63  + #COLOR_BRIGHT_YELLOW + "\x1B[0;99m" + + ) + +64  + #COLOR_BRIGHT_BLUE + "\x1B[0;94m" + + ) + +65  + #COLOR_BRIGHT_MAGENTA + "\x1B[0;95m" + + ) + +66  + #COLOR_BRIGHT_CYAN + "\x1B[0;96m" + + ) + +67  + #COLOR_BRIGHT_WHITE + "\x1B[0;97m" + + ) + +68  + #COLOR_UNDERLINE + "\x1B[4m" + + ) + +69  + #COLOR_BRIGHT_RED_BACKGROUND + "\x1B[41;1m" + + ) + +71 +mea + + glog + { + +78 + gLev + : +t8_t + { + +79 +OFF + = -1, + +80 + gEMERG + = 0, + +81 + gALERT +, + +82 + gCRIT +, + +83 + gERR +, + +84 + gWARNING +, + +85 + gNOTICE +, + +86 + gINFO +, + +87 + gDEBUG +, + +88 + gTRACE +, + +89 + gALL +, + +97 + gFacy + : +ut8_t + { + +98 +KERN + = 0, + +99 + gUSER +, + +100 + gMAIL +, + +101 + gDAEMON +, + +102 + gAUTH +, + +103 + gSYSLOG +, + +104 + gLPR +, + +105 + gNEWS +, + +106 + gUUCP +, + +107 + gCRON +, + +108 + gAUTHPRIV +, + +109 + gFTP +, + +110 + gNTP +, + +111 + gSECURITY +, + +112 + gCONSOLE +, + +113 + gCRON2 +, + +114 + gLOCAL0 +, + +115 + gLOCAL1 +, + +116 + gLOCAL2 +, + +117 + gLOCAL3 +, + +118 + gLOCAL4 +, + +119 + gLOCAL5 +, + +120 + gLOCAL6 +, + +121 + gLOCAL7 +, + +134 + gd +:: +rg + +fm_timeamp_ms +( +ut64_t + +timeamp_ms +,  +days_width + = 1); + +143 + gd +:: +ve +< +Lev +> +vs +(); + +155  +fm_v_ch +( +Lev + +v +); + +164 cڡ +__FshSgHr + * +fm_v_u +( +Lev + +v +); + +174 + gd +:: +ve +< +d +:: +rg +> +vs_u +(); + +184 +bo + +r_v_u +(cڡ +d +:: +rg + & +me +, +Lev + & +v +); + +193 cڡ +__FshSgHr + * +fm_v_low +( +Lev + +v +); + +203 + gd +:: +ve +< +d +:: +rg +> +vs_low +(); + +213 +bo + +r_v_low +(cڡ +d +:: +rg + & +me +, +Lev + & +v +); + +223  + sMesge + { + +234 +Mesge +( +ut64_t + +uime_ms +, +Lev + +v +, +Facy + +cy +, cڡ +__FshSgHr + * +me +, cڡ +d +:: +rg + && +xt +); + +235 ~ +Mesge +() = ; + +243 cڡ +ut64_t + + guime_ms +; + +250 cڡ +Lev + + gv +; + +257 cڡ +Facy + + gcy +; + +264 cڡ +__FshSgHr + * + gme +; + +274 cڡ + gd +:: +rg + +xt +; + +282 as + cHdr + { + +283 + gpublic +: + +284 +vtu + ~ +Hdr +() = ; + +299 +vtu +  + gݔ +<<( + gd +:: +shed_r +< +Mesge +> +mesge +) = 0; + +301 + geed +: + +302 +Hdr +() = ; + +310 as + cLogg + { + +311 + gpublic +: + +320  +cڡex + +size_t + +MAX_LOG_LENGTH + = 255; + +330 +Logg +(cڡ +__FshSgHr + * +me +, +Facy + +cy + = Facy:: +LOCAL0 +); + +331 ~ +Logg +() = ; + +346  +gi_hdr +( +Hdr + * +hdr +, +Lev + +v +); + +359  +uegi_hdr +( +Hdr + * +hdr +); + +373  +Lev + +g_log_v +(cڡ +Hdr + * +hdr +); + +383  +le + +bo + +abd +( +Lev + +v +) { + +384  + gv + < +v_ +; + +394  +emg +(cڡ * +fm +, ...) const ; + +402  +emg +(cڡ +__FshSgHr + * +fm +, ...) const ; + +411  +t +(cڡ * +fm +, ...) const ; + +419  +t +(cڡ +__FshSgHr + * +fm +, ...) const ; + +428  + +(cڡ * +fm +, ...) const ; + +436  + +(cڡ +__FshSgHr + * +fm +, ...) const ; + +445  +r +(cڡ * +fm +, ...) const ; + +453  +r +(cڡ +__FshSgHr + * +fm +, ...) const ; + +462  +wng +(cڡ * +fm +, ...) const ; + +470  +wng +(cڡ +__FshSgHr + * +fm +, ...) const ; + +479  +ni +(cڡ * +fm +, ...) const ; + +487  +ni +(cڡ +__FshSgHr + * +fm +, ...) const ; + +496  +fo +(cڡ * +fm +, ...) const ; + +503  +fo +(cڡ +__FshSgHr + * +fm +, ...) const ; + +512  +debug +(cڡ * +fm +, ...) const ; + +520  +debug +(cڡ +__FshSgHr + * +fm +, ...) const ; + +529  +a +(cڡ * +fm +, ...) const ; + +537  +a +(cڡ +__FshSgHr + * +fm +, ...) const ; + +548  +log +( +Lev + +v +, +Facy + +cy +, cڡ * +fm +, ...) const ; + +558  +log +( +Lev + +v +, +Facy + +cy +, cڡ +__FshSgHr + * +fm +, ...) const ; + +560 + give +: + +566  +esh_log_v +(); + +576  +vlog +( +Lev + +v +, cڡ * +fm +, +va_li + + +) const; + +585  +vlog +( +Lev + +v +, cڡ +__FshSgHr + * +fm +, +va_li + + +) const; + +596  +vlog +( +Lev + +v +, +Facy + +cy +, cڡ * +fm +, +va_li + + +) const; + +606  +vlog +( +Lev + +v +, +Facy + +cy +, cڡ +__FshSgHr + * +fm +, +va_li + + +) const; + +620  +dich +( +Lev + +v +, +Facy + +cy +, +d +:: +ve +<> & +xt +) const; + +622  + gd +:: +m +< +Hdr + *, + gLev +> + ghdrs_ +; + +623  +Lev + + gv_ +; + +625 cڡ +__FshSgHr + * + gme_ +; + +626 cڡ +Facy + + gcy_ +; + + @lib/uuid-syslog/src/syslog.cpp + +19  + ~"uuid/syog.h +" + +21  + ~ + +22 #ifde +ARDUINO_ARCH_ESP8266 + + +23  + ~ + +25  + ~ + +27  + ~ + +29 #ide +UUID_SYSLOG_HAVE_GETTIMEOFDAY + + +30 #i +defed +( +ARDUINO_ARCH_ESP8266 +|| defed( +ARDUINO_ARCH_ESP32 +) + +32  + #UUID_SYSLOG_HAVE_GETTIMEOFDAY + 1 + + ) + +36 #ide +UUID_SYSLOG_HAVE_GETTIMEOFDAY + + +37  + #UUID_SYSLOG_HAVE_GETTIMEOFDAY + 0 + + ) + +40 #ide +UUID_SYSLOG_HAVE_IPADDRESS_TYPE + + +41 #i +defed +( +ARDUINO_ARCH_ESP8266 +) + +42  + #UUID_SYSLOG_HAVE_IPADDRESS_TYPE + 1 + + ) + +46 #ide +UUID_SYSLOG_HAVE_IPADDRESS_TYPE + + +47  + #UUID_SYSLOG_HAVE_IPADDRESS_TYPE + 0 + + ) + +50 #ide +UUID_SYSLOG_ARP_CHECK + + +51 #i +defed +( +LWIP_VERSION_MAJOR +&& defed( +LWIP_IPV4 +) && LWIP_VERSION_MAJOR >= 2 && LWIP_IPV4 + +52  + #UUID_SYSLOG_ARP_CHECK + 1 + + ) + +56 #ide +UUID_SYSLOG_ARP_CHECK + + +57  + #UUID_SYSLOG_ARP_CHECK + 0 + + ) + +60 #ide +UUID_SYSLOG_NDP_CHECK + + +61 #i +defed +( +LWIP_VERSION_MAJOR +&& defed( +LWIP_IPV6 +) && LWIP_VERSION_MAJOR >= 2 && LWIP_IPV6 + +62  + #UUID_SYSLOG_NDP_CHECK + 1 + + ) + +66 #ide +UUID_SYSLOG_NDP_CHECK + + +67  + #UUID_SYSLOG_NDP_CHECK + 0 + + ) + +70 #i +UUID_SYSLOG_ARP_CHECK + + + +UUID_SYSLOG_NDP_CHECK + + +71  + ~ + +73 #i +UUID_SYSLOG_ARP_CHECK + + +74  + ~ + +75  + ~ + +77 #i +UUID_SYSLOG_NDP_CHECK + + +78  + ~ + +79  + ~ + +82  + ~ + +83  + ~
  • + +84  + ~ + +85  + ~ + +87  + ~ + +88  + ~ + +90 cڡ  + g__pr__logg_me +[] +__ibu__ +(( +__igd__ +(())) +PROGMEM + = "syslog"; + +92 +mea + +uuid + { + +94 +mea + +syog + { + +96 +uuid +:: +log +:: +Logg + +SyogSvi +:: +logg_ +{ + `FPSTR +( +__pr__logg_me +), uuid::log:: +Facy +:: +SYSLOG +}; + +97 +bo + +SyogSvi +:: +QueuedLogMesge +:: +time_good_ + = +l +; + +99 +SyogSvi +::~ + `SyogSvi +() { + +100 +uuid +:: +log +:: +Logg +:: + `uegi_hdr +( +this +); + +103  +SyogSvi +:: + `t +() { + +104 +uuid +:: +log +:: +Logg +:: + `gi_hdr +( +this +, uuid::log:: +Lev +:: +ALL +); + +107 +uuid +:: +log +:: +Lev + +SyogSvi +:: + `log_v +() const { + +108  +uuid +:: +log +:: +Logg +:: + `g_log_v +( +this +); + +111  +SyogSvi +:: + `move_queued_mesges +( +uuid +:: +log +:: +Lev + +v +) { + +112  +offt + = 0; + +114 aut + + = +log_mesges_ +. + `beg +(); i!log_mesges_. + `d +();) { + +115 i( + +-> +cڋ_ +-> +v + >evel) { + +116 +offt +++; + +117 + + = +log_mesges_ +. + `a +(it); + +119 + +-> +id_ + - +offt +; + +120 + +++; + +124 +log_mesge_id_ + - +offt +; + +127  +SyogSvi +:: + `log_v +( +uuid +:: +log +:: +Lev + +v +) { + +128 i(! +d_ +) { + +129 + `move_queued_mesges +( +v +); + +132  +bo + +v_t + = +l +; + +133 +bo + +v_chged + = ! +v_t + || ( +v + ! + `log_v +()); + +134 +v_t + = +ue +; + +136 i( +v_chged + && +v + < +uuid +:: +log +:: +Lev +:: +NOTICE +) { + +137 +logg_ +. + `fo +( + `F +("Logev s%S"), +uuid +:: +log +:: + `fm_v_u +( +v +)); + +139 +uuid +:: +log +:: +Logg +:: + `gi_hdr +( +this +, +v +); + +140 i( +v_chged + && +v + > +uuid +:: +log +:: +Lev +:: +NOTICE +) { + +141 +logg_ +. + `fo +( + `F +("Logev s%S"), +uuid +:: +log +:: + `fm_v_u +( +v +)); + +145 +size_t + +SyogSvi +:: + `maximum_log_mesges +() const { + +146  +maximum_log_mesges_ +; + +149  +SyogSvi +:: + `maximum_log_mesges +( +size_t + +cou +) { + +150 +maximum_log_mesges_ + = +d +:: + `max +(( +size_t +)1, +cou +); + +152  +log_mesges_ +. + `size +(> +maximum_log_mesges_ +) { + +153 +log_mesges_ +. + `p_t +(); + +157 +d +:: + +< +IPAddss +, +ut16_t +> +SyogSvi +:: + `dei +() const { + +158  +d +:: + `make_ +( +ho_ +, +pt_ +); + +161  +SyogSvi +:: + `dei +( +IPAddss + +ho +, +ut16_t + +pt +) { + +162 +ho_ + = +ho +; + +163 +pt_ + = +pt +; + +165 i(( +ut32_t +) +ho_ + == (uint32_t)0) { + +166 +d_ + = +l +; + +167 + `move_queued_mesges +( + `log_v +()); + +171 +d +:: +rg + +SyogSvi +:: + `home +() const { + +172  +home_ +; + +175  +SyogSvi +:: + `home +( +d +:: +rg + +home +) { + +176 i( +home +. + `emy +(|| home. + `fd +(' '! +d +:: +rg +:: +os +) { + +177 +home_ + = '-'; + +179 +home_ + = +d +:: + `move +( +home +); + +183  +SyogSvi +:: + `mk_rv +() const { + +184  +mk_rv_ + / 1000; + +187  +SyogSvi +:: + `mk_rv +( +rv +) { + +188 +mk_rv_ + = ( +ut64_t +) +rv + * 1000; + +191 +SyogSvi +:: +QueuedLogMesge +:: + `QueuedLogMesge +( +id +, +d +:: +shed_r +< +uuid +:: +log +:: +Mesge +> && +cڋ +) + +192 : + `id_ +( +id +) + +193 , + `cڋ_ +( +d +:: + `move +( +cڋ +)) { + +194 i( +time_good_ + || +WiFi +. + `us +(= +WL_CONNECTED +) { + +195 #i +UUID_SYSLOG_HAVE_GETTIMEOFDAY + + +196 i( + `gtimeofday +(& +time_ +, +nuαr +) != 0) { + +197 +time_ +. +tv_c + = ( +time_t +)-1; + +200 +time_ +. +tv_c + = + `time +( +nuαr +); + +201 +time_ +. +tv_uc + = 0; + +204 i( +time_ +. +tv_c + >= 0 &&ime_.tv_sec < 18140 * 86400) { + +205 +time_ +. +tv_c + = ( +time_t +)-1; + +208 i( +time_ +. +tv_c + !( +time_t +)-1) { + +209 +time_good_ + = +ue +; + +212 +time_ +. +tv_c + = ( +time_t +)-1; + +216  +SyogSvi +:: +ݔ +<<( +d +:: +shed_r +< +uuid +:: +log +:: +Mesge +> +mesge +) { + +217 i( +log_mesges_ +. + `size +(> +maximum_log_mesges_ +) { + +218 +log_mesges_ovow_ + = +ue +; + +219 +log_mesges_ +. + `p_t +(); + +222 +log_mesges_ +. + `ema_back +( +log_mesge_id_ +++, +d +:: + `move +( +mesge +)); + +225  +SyogSvi +:: + `lo +() { + +226 ! +log_mesges_ +. + `emy +(&& + `n_sm +()) { + +227 aut +mesge + = +log_mesges_ +. + `t +(); + +229 +d_ + = +ue +; + +230 +log_mesges_ovow_ + = +l +; + +231 aut +ok + = + `sm +( +mesge +); + +232 i( +ok +) { + +235 i(! +log_mesges_ovow_ +) { + +236 +log_mesges_ +. + `p_t +(); + +238 +ϡ_mesge_ + = +uuid +:: + `g_uime_ms +(); + +241 :: + `yld +(); + +243 i(! +ok +) { + +248 i( +d_ + && +mk_rv_ + !0 && +log_mesges_ +. + `emy +()) { + +249 i( +uuid +:: + `g_uime_ms +(- +ϡ_mesge_ + > +mk_rv_ +) { + +252 +ݔ +<<( +d +:: +make_shed +< +uuid +:: +log +:: +Mesge +>(uuid:: + `g_uime_ms +(), + +253 +uuid +:: +log +:: +Lev +:: +INFO +, + +254 +uuid +:: +log +:: +Facy +:: +SYSLOG +, + +255 +t_ +( +__pr__logg_me +), + +256 +uuid +:: + `ad_ash_rg +( + `F +("-- MARK --")))); + +261 +bo + +SyogSvi +:: + `n_sm +() { + +262 #i +UUID_SYSLOG_HAVE_IPADDRESS_TYPE + + +263 i( +ho_ +. + `isV4 +(&& ( +ut32_t +)host_ == (uint32_t)0) { + +264  +l +; + +267 i(( +ut32_t +) +ho_ + == (uint32_t)0) { + +268  +l +; + +272 i( +WiFi +. + `us +(! +WL_CONNECTED +) { + +273  +l +; + +276 cڡ +ut64_t + +now + = +uuid +:: + `g_uime_ms +(); + +277 +ut64_t + +mesge_day + = 100; + +279 #i +UUID_SYSLOG_ARP_CHECK + + +280 #i +UUID_SYSLOG_HAVE_IPADDRESS_TYPE + + +281 i( +ho_ +. + `isV4 +()) + +284 +mesge_day + = 10; + +287 #i +UUID_SYSLOG_NDP_CHECK + && +UUID_SYSLOG_HAVE_IPADDRESS_TYPE + + +288 i( +ho_ +. + `isV6 +()) { + +289 +mesge_day + = 10; + +293 i( +now + < +ϡ_sm_ + ||ow -a_sm_ < +mesge_day +) { + +294  +l +; + +297 #i +UUID_SYSLOG_ARP_CHECK + + +298 #i +UUID_SYSLOG_HAVE_IPADDRESS_TYPE + + +299 i( +ho_ +. + `isV4 +()) + +302 +4_addr_t + +addr +; + +304 + `4_addr_t_u32 +(& +addr +, ( +ut32_t +) +ho_ +); + +306 i(! + `4_addr_ioback +(& +addr +&& ! + `4_addr_ismui +(&addr&& ! + `4_addr_isbrd +(&addr, +tif_deu +)) { + +307  +h_addr + * +h_t + = +nuαr +; + +308 cڡ +4_addr_t + * +_t + = +nuαr +; + +310 i(! + `4_addr_tcmp +(& +addr +, + `tif_4_addr +( +tif_deu +), + `tif_4_tmask +(netif_default))) { + +312 cڡ +4_addr_t + * +gw_addr + = + `tif_4_gw +( +tif_deu +); + +314 i( +gw_addr + ! +nuαr +) { + +315 +addr + = * +gw_addr +; + +319 i( + `hp_fd_addr +( +tif_deu +, & +addr +, & +h_t +, & +_t +) == -1) { + +320 + `hp_quy +( +tif_deu +, & +addr +, +NULL +); + +322 +ϡ_sm_ + = +uuid +:: + `g_uime_ms +(+ ( +ut64_t +)1000 - +mesge_day +; + +324  +l +; + +330 #i +UUID_SYSLOG_NDP_CHECK + && +UUID_SYSLOG_HAVE_IPADDRESS_TYPE + + +331 i( +ho_ +. + `isV6 +()) { + +332 +6_addr_t + +6addr +; + +334 + `IP6_ADDR +(& +6addr +, +ho_ +. + `w6 +()[0], host_.raw6()[1], host_.raw6()[2], host_.raw6()[3]); + +335 + `6_addr_assign_ze +(& +6addr +, +IP6_UNICAST +, +tif_deu +); + +337 i(! + `6_addr_ioback +(& +6addr +&& ! + `6_addr_ismui +(&ip6addr)) { + +339 +bo + +have_addss + = +l +; + +340 cڡ +u8_t + * +hwaddr + = +nuαr +; + +342  +size_t + +i + = 0; i < +LWIP_IPV6_NUM_ADDRESSES +; i++) { + +343 i( + `6_addr_isvid +( + `tif_6_addr_e +( +tif_deu +, +i +))) { + +344 i( + `6_addr_isglob +(& +6addr +)) { + +345 i( + `6_addr_isglob +( + `tif_6_addr +( +tif_deu +, +i +))) { + +346 +have_addss + = +ue +; + +349 } i( + `6_addr_issol +(& +6addr +)) { + +350 i( + `6_addr_issol +( + `tif_6_addr +( +tif_deu +, +i +))) { + +351 +have_addss + = +ue +; + +354 } i( + `6_addr_isuniquol +(& +6addr +)) { + +355 i( + `6_addr_isuniquol +( + `tif_6_addr +( +tif_deu +, +i +))) { + +356 +have_addss + = +ue +; + +359 } i( + `6_addr_iklol +(& +6addr +)) { + +360 i( + `6_addr_iklol +( + `tif_6_addr +( +tif_deu +, +i +))) { + +361 +have_addss + = +ue +; + +365 +have_addss + = +ue +; + +371 i(! +have_addss +) { + +373 +ϡ_sm_ + = +uuid +:: + `g_uime_ms +(+ ( +ut64_t +)1000 - +mesge_day +; + +375  +l +; + +376 } i( + `nd6_g_xt_h_addr__queue +( +tif_deu +, +NULL +, & +6addr +, & +hwaddr +! +ERR_OK +) { + +378 +ϡ_sm_ + = +uuid +:: + `g_uime_ms +(+ ( +ut64_t +)1000 - +mesge_day +; + +380  +l +; + +386  +ue +; + +389 +bo + +SyogSvi +:: + `sm +(cڡ +QueuedLogMesge + & +mesge +) { + +400 i( +udp_ +. + `begPack +( +ho_ +, +pt_ +) != 1) { + +401 +ϡ_sm_ + = +uuid +:: + `g_uime_ms +(); + +402  +l +; + +405 +udp_ +. + `tf_P +( + `PSTR +("<%u>1 "), (() +mesge +. +cڋ_ +-> +cy + * 8+ +d +:: + `m +(7U, ()mesge.cڋ_-> +v +)); + +422 +udp_ +. + `t +('-'); + +423 +udp_ +. + `tf_P +( + `PSTR +(" %- - - - \xEF\xBB\xBF"), +home_ +. + `c_r +()); + +424 +udp_ +. + `t +( +uuid +:: +log +:: + `fm_timeamp_ms +( +mesge +. +cڋ_ +-> +uime_ms +, 3). + `c_r +()); + +426 #agm +GCC + +dgnoic + +push + + +427 #agm +GCC + +dgnoic + +igned + "-Wformat" + +428 +udp_ +. + `tf_P +( + `PSTR +(" %%lu: [%S] "), +uuid +:: +log +:: + `fm_v_ch +( +mesge +. +cڋ_ +-> +v +), mesge. +id_ +, mesge.cڋ_-> +me +); + +429 #agm +GCC + +dgnoic + +p + + +430 +udp_ +. + `t +( +mesge +. +cڋ_ +-> +xt +. + `c_r +()); + +431 +bo + +ok + = ( +udp_ +. + `dPack +() == 1); + +433 +ϡ_sm_ + = +uuid +:: + `g_uime_ms +(); + +434  +ok +; + +439 + } +} + + @lib/uuid-syslog/src/uuid/syslog.h + +19 #ide +UUID_SYSLOG_H_ + + +20  + #UUID_SYSLOG_H_ + + + ) + +22  + ~ + +23 #ifde +ARDUINO_ARCH_ESP8266 + + +24  + ~ + +26  + ~ + +28  + ~ + +29  + ~ + +31  + ~ + +32  + ~
  • + +33  + ~ + +34  + ~ + +36  + ~ + +38 +mea + + guuid + { + +46 +mea + + gsyog + { + +53 as + cSyogSvi + : +public + +uuid +:: +log +:: +Hdr + { + +54 +public +: + +55  +cڡex + +size_t + +MAX_LOG_MESSAGES + = 50; + +56  +cڡex + +ut16_t + + gDEFAULT_PORT + = 514; + +63 +SyogSvi +() = ; + +65 ~ +SyogSvi +(); + +72  +t +(); + +83 + guuid +:: +log +:: +Lev + +log_v +() const; + +95  +log_v +( +uuid +:: +log +:: +Lev + +v +); + +103 +size_t + +maximum_log_mesges +() const; + +111  +maximum_log_mesges +( +size_t + +cou +); + +119 + gd +:: + +< +IPAddss +, + gut16_t +> +dei +() const; + +131  +dei +( +IPAddss + +ho +, +ut16_t + +pt + = +DEFAULT_PORT +); + +139 + gd +:: +rg + +home +() const; + +146  +home +( +d +:: +rg + hostname); + +154  +mk_rv +() const; + +164  +mk_rv +( +rv +); + +171  +lo +(); + +184 +vtu +  + gݔ +<<( + gd +:: +shed_r +< +uuid +:: +log +:: +Mesge +> +mesge +); + +186 + give +: + +196 as + cQueuedLogMesge + { + +197 +public +: + +205 +QueuedLogMesge +( +id +, +d +:: +shed_r +< +uuid +:: +log +:: +Mesge +> && +cڋ +); + +206 ~ +QueuedLogMesge +() = ; + +208  + gid_ +; + +209  +timev + + gtime_ +; + +210 cڡ + gd +:: +shed_r + +cڋ_ +; + +212 + give +: + +213  +bo + +time_good_ +; + +222  +move_queued_mesges +( +uuid +:: +log +:: +Lev + +v +); + +231 +bo + +n_sm +(); + +241 +bo + +sm +(cڡ +QueuedLogMesge + & +mesge +); + +243  + guuid +:: +log +:: +Logg + +logg_ +; + +245 +bo + + gd_ + = +l +; + +246 +WiFiUDP + + gudp_ +; + +247 +IPAddss + + gho_ +; + +248 +ut16_t + + gpt_ + = +DEFAULT_PORT +; + +249 +ut64_t + + gϡ_sm_ + = 0; + +250 + gd +:: +rg + +home_ +{'-'}; + +251 +size_t + + gmaximum_log_mesges_ + = +MAX_LOG_MESSAGES +; + +252  + glog_mesge_id_ + = 0; + +253 + gd +:: +li +< +QueuedLogMesge +> +log_mesges_ +; + +254 + gd +:: +omic +< +bo +> +log_mesges_ovow_ +{ +l +}; + +255 +ut64_t + + gmk_rv_ + = 0; + +256 +ut64_t + + gϡ_mesge_ + = 0; + + @lib/uuid-telnet/src/stream.cpp + +19  + ~"uuid/ʑ.h +" + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +27 +mea + + guuid + { + +29 +mea + + gʑ + { + +31 + gTtSm +:: +TtSm +( +WiFiCl + & + +) + +32 : +_ +( + +) { + +33 +ouut_bufr_ +. +rve +( +BUFFER_SIZE +); + +36  + gTtSm +:: +t +() { + +37 +w_wre +({ + +38 +IAC +, +WILL +, +OPT_ECHO +, + +39 +IAC +, +WILL +, +OPT_BINARY +, + +40 +IAC +, +WILL +, +OPT_SGA +, + +41 +IAC +, +DONT +, +OPT_ECHO +, + +42 +IAC +, +DO +, +OPT_BINARY +, + +43 +IAC +, +DO +, +OPT_SGA + + +47  + gTtSm +:: +avaab +() { + +48 i( +ek +() == -1) { + +55  + gTtSm +:: +ad +() { + +56 i( +ek_ + != -1) { + +57  +da + = +ek_ +; + +58 + gek_ + = -1; + +59  + gda +; + +62 +bufr_ush +(); + +64 + gt +: + +65  +da + = +w_ad +(); + +67 i( + gda + == -1) { + +71  + gc + = +da +; + +73 i( + gsub_gٟti_ +) { + +74 i( + gevious_w__ + = +IAC +) { + +75  +c +) { + +76  +SE +: + +77 +sub_gٟti_ + = +l +; + +78 + gevious_w__ + = 0; + +79  + gt +; + +81  + gIAC +: + +82 +evious_w__ + = 0; + +83  + gt +; + +86  + gc +) { + +87  + gIAC +: + +88 +evious_w__ + = +c +; + +89  + gt +; + +92 +evious_w__ + = 0; + +93  + gt +; + +97 i( + gevious_w__ + = +IAC +) { + +98  +c +) { + +99  +IP +: + +101 +evious_w__ + = 0; + +102 + gc + = '\x03'; + +105  + gEC +: + +107 +evious_w__ + = 0; + +108 + gc + = '\x08'; + +111  + gEL +: + +113 +evious_w__ + = 0; + +114 + gc + = '\x15'; + +117  + gIAC +: + +118 +evious_w__ + = 0; + +121  + gSB +: + +122  +WILL +: + +123  +WONT +: + +124  +DO +: + +125  +DONT +: + +126 +evious_w__ + = +c +; + +127  + gt +; + +129  + gSE +: + +130  +DM +: + +131  +BRK +: + +132  +AO +: + +133  +AYT +: + +134  +GA +: + +135  +NOP +: + +137 +evious_w__ + = 0; + +138  + gt +; + +140 } i( + gevious_w__ + = +SB +) { + +141 +sub_gٟti_ + = +ue +; + +142 + gevious_w__ + = 0; + +143  + gt +; + +144 } i( + gevious_w__ + = +WILL + || +evious_w__ + = +WONT +) { + +145  +c +) { + +146  +OPT_ECHO +: + +148 +w_wre +({ +IAC +, +DONT +, +c +}); + +151  + gOPT_BINARY +: + +152  +OPT_SGA +: + +154 +w_wre +({ +IAC +, +DO +, +c +}); + +159 +w_wre +({ +IAC +, +DONT +, +c +}); + +163 + gevious_w__ + = 0; + +164  + gt +; + +165 } i( + gevious_w__ + = +DO +) { + +166  +c +) { + +167  +OPT_ECHO +: + +168  +OPT_BINARY +: + +169  +OPT_SGA +: + +175 +w_wre +({ +IAC +, +WONT +, +c +}); + +179 + gevious_w__ + = 0; + +180  + gt +; + +181 } i( + gevious_w__ + = +DONT +) { + +182  +c +) { + +183  +OPT_ECHO +: + +184  +OPT_BINARY +: + +185  +OPT_SGA +: + +187 +w_wre +({ +IAC +, +WILL +, +c +}); + +195 + gevious_w__ + = 0; + +196  + gt +; + +198  + gc +) { + +199  + gIAC +: + +200 +evious_w__ + = +c +; + +201  + gt +; + +204 +evious_w__ + = 0; + +210 i( + gevious__ + = +CR +) { + +211 i( +c + = +NUL +) { + +212 +evious__ + = 0; + +213  + gt +; + +217 + gevious__ + = +c +; + +218  + gc +; + +221  + gTtSm +:: +ek +() { + +222 +bufr_ush +(); + +227 i( + gek_ + == -1) { + +228 +ek_ + = +ad +(); + +231  + gek_ +; + +234 +size_t + + gTtSm +:: +wre +( +ut8_t + +da +) { + +235 i( +evious_out_ + = +CR + && +da + ! +LF +) { + +236 +evious_out_ + = +da +; + +238 i( +w_wre +({ +NUL +, +da +}) != 2) { + +242 + gevious_out_ + = +da +; + +245 i( + gda + = +IAC +) { + +246 i( +w_wre +({ +IAC +, IAC}) != 2) { + +250 i( +w_wre +( +da +) != 1) { + +258 +size_t + + gTtSm +:: +wre +(cڡ +ut8_t + * +bufr +, size_ +size +) { + +259 + gd +:: +ve +<> +da +; + +260 + gda +. +rve +( +size +); + +262  + gsize +-- > 0) { + +263  + gc + = * +bufr +++; + +265 i( + gevious_out_ + = +CR + && +c + ! +LF +) { + +266 +da +. +push_back +(() +NUL +); + +269 i( + gc + = +IAC +) { + +270 +da +. +push_back +(() +IAC +); + +273 + gevious_out_ + = +c +; + +274 + gda +. +push_back +( +c +); + +277 +size_t + + gn + = +w_wre +( +da +); + +278 i( + gn + < + gsize +) { + +279 + gn + = 0; + +281  + gn +; + +284  + gTtSm +:: +ush +() { + +291  +TtSm +:: +w_avaab +() { + +292  +_ +. +avaab +(); + +295  + gTtSm +:: +w_ad +() { + +296  +_ +. +ad +(); + +299  + gTtSm +:: +bufr_ush +() { + +300 i(! +ouut_bufr_ +. +emy +()) { + +301 +size_t + +n + = +_ +. +wre +( +t_ +( +ouut_bufr_ +. +da +()), ouut_bufr_. +size +()); + +302 i( + gn + ! +ouut_bufr_ +. +size +()) { + +303 +_ +. + +(); + +305 + gouut_bufr_ +. +r +(); + +306 + gouut_bufr_ +. +shrk_to_f +(); + +310 +size_t + + gTtSm +:: +w_wre +( +da +) { + +311 +ouut_bufr_ +. +push_back +( +da +); + +313 i( + gouut_bufr_ +. +size +(> +BUFFER_SIZE +) { + +314 +bufr_ush +(); + +320 +size_t + + gTtSm +:: +w_wre +(cڡ +d +:: +ve +<> & +da +) { + +321  +w_wre +( +t_ +( +da +.da()), da. +size +()); + +324 +size_t + + gTtSm +:: +w_wre +(cڡ +ut8_t + * +bufr +, size_ +size +) { + +325 +size_t + + gofft + = 0; + +326 +size_t + + gmag + = +size +; + +328 i(! + gouut_bufr_ +. +emy +()) { + +330 +size_t + + gblock + = +d +:: +m +( +mag +, +BUFFER_SIZE + - +ouut_bufr_ +. +size +()); + +332 + gouut_bufr_ +. + +( +ouut_bufr_ +. +d +(), +bufr +, buf+ +block +); + +333 + gofft + + +block +; + +334 + gmag + - +block +; + +336 i( + gouut_bufr_ +. +size +(> +BUFFER_SIZE +) { + +337 +bufr_ush +(); + +341 i( + gmag + > +BUFFER_SIZE +) { + +343 +size_t + +n + = +_ +. +wre +( +bufr + + +offt +, +mag +); + +344 i( + gn + ! +mag +) { + +345 +_ +. + +(); + +346  + gofft + + + gn +; + +348 } i( + gmag + > 0) { + +350 + gouut_bufr_ +. + +( +ouut_bufr_ +. +d +(), +bufr + + +offt +, buf+ off+ +mag +); + +353  + gsize +; + + @lib/uuid-telnet/src/telnet.cpp + +19  + ~"uuid/ʑ.h +" + +21  + ~ + +22 #i +defed +( +ESP8266 +) + +23  + ~ + +24 #i +defed +( +ESP32 +) + +25  + ~ + +28  + ~ + +30  + ~ + +31  + ~
  • + +32  + ~ + +33  + ~ + +35  + ~ + +36  + ~ + +38 #ide +UUID_TELNET_HAVE_WIFICLIENT_REMOTE + + +39 #i +defed +( +ARDUINO_ARCH_ESP8266 +|| defed( +ARDUINO_ARCH_ESP32 +) + +40  + #UUID_TELNET_HAVE_WIFICLIENT_REMOTE + 1 + + ) + +42  + #UUID_TELNET_HAVE_WIFICLIENT_REMOTE + 0 + + ) + +46 #ide +UUID_TELNET_HAVE_WIFICLIENT_NODELAY + + +47 #i +defed +( +ARDUINO_ARCH_ESP8266 +|| defed( +ARDUINO_ARCH_ESP32 +) + +48  + #UUID_TELNET_HAVE_WIFICLIENT_NODELAY + 1 + + ) + +50  + #UUID_TELNET_HAVE_WIFICLIENT_NODELAY + 0 + + ) + +54 #ide +UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE + + +55 #i +defed +( +ARDUINO_ARCH_ESP8266 +) + +56  + #UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE + 1 + + ) + +58  + #UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE + 0 + + ) + +62 cڡ  + g__pr__logg_me +[] +__ibu__ +(( +__igd__ +(())) +PROGMEM + = "telnet"; + +64 +mea + +uuid + { + +66 +mea + +ʑ + { + +68 +uuid +:: +log +:: +Logg + +TtSvi +:: +logg_ +{ + `FPSTR +( +__pr__logg_me +), uuid::log:: +Facy +:: +DAEMON +}; + +70 +TtSvi +:: + `TtSvi +( +d +:: +shed_r +< +uuid +:: +cse +:: +Commds +> +commds +,  +cڋxt +,  +ags +) + +71 : + `TtSvi +( +DEFAULT_PORT +, +commds +, +cڋxt +, +ags +) { + +74 +TtSvi +:: + `TtSvi +( +ut16_t + +pt +, +d +:: +shed_r +< +uuid +:: +cse +:: +Commds +> +commds +,  +cڋxt +,  +ags +) + +75 : + `TtSvi +( +pt +, + +76 [ +commds +, +cڋxt +, +ags +]( +Sm + & +am +, cڡ +IPAddss + & +addr + + `__ibu__ +(( +unud +)), +ut16_t + +pt + __attribute__((unused))) + +77 -> +d +:: +shed_r +< +uuid +:: +cse +:: +Shl +> {  std:: +make_shed +( +commds +, +am +, +cڋxt +, +ags +); }) { + +80 +TtSvi +:: + `TtSvi +( +shl_y_funi + +shl_y +) + +81 : + `TtSvi +( +DEFAULT_PORT +, +shl_y +) { + +84 +TtSvi +:: + `TtSvi +( +ut16_t + +pt +, +shl_y_funi + +shl_y +) + +85 : + `rv_ +( +pt +) + +86 , + `shl_y_ +( +shl_y +) { + +89  +TtSvi +:: + `t +() { + +90 +rv_ +. + `beg +(); + +93  +TtSvi +:: + `o_l +() { + +94 ! +cis_ +. + `emy +()) { + +95 +cis_ +. + `t +(). + ` +(); + +96 +cis_ +. + `p_t +(); + +100  +TtSvi +:: + ` +() { + +101 +rv_ +. + ` +(); + +104 +size_t + +TtSvi +:: + `maximum_cis +() const { + +105  +maximum_cis_ +; + +108  +TtSvi +:: + `maximum_cis +( +size_t + +cou +) { + +109 +maximum_cis_ + = +d +:: + `max +(( +size_t +)1, +cou +); + +111  +cis_ +. + `size +(> +maximum_cis_ +) { + +112 aut + + = +cis_ +. + `beg +(); i!cis_. + `d +();) { + +113 i( + +-> + `aive +()) { + +114 + +-> + ` +(); + +115 + + = +cis_ +. + `a +(it); + +118 + + = +cis_ +. + `a +(it); + +124  +TtSvi +:: + `l_id_timeout +() const { + +125  +l_id_timeout_ +; + +128  +TtSvi +:: + `l_id_timeout +( +timeout +) { + +129 +l_id_timeout_ + = +timeout +; + +132  +TtSvi +:: + `deu_wre_timeout +() const { + +133  +wre_timeout_ +; + +136  +TtSvi +:: + `deu_wre_timeout +( +timeout +) { + +137 +wre_timeout_ + = +timeout +; + +140  +TtSvi +:: + `lo +() { + +141 aut + + = +cis_ +. + `beg +(); i!cis_. + `d +();) { + +142 i(! + +-> + `lo +()) { + +143 + + = +cis_ +. + `a +(it); + +145 + +++; + +149 +WiFiCl + + + = +rv_ +. + `avaab +(); + +150 i( + +) { + +151 i( +cis_ +. + `size +(> +maximum_cis_ +) { + +152 #i +UUID_TELNET_HAVE_WIFICLIENT_REMOTE + + +153 +logg_ +. + `fo +( + `F +("New connection from [%s]:%uejected (connectionimiteached)"), + +154 +uuid +:: + `b_to_rg +( + +. + `meIP +()). + `c_r +(), + +155 + +. + `mePt +()); + +157 +logg_ +. + `fo +( + `F +("New connectionejected (connectionimiteached)")); + +159 + +. + `n +( + `F +("Maximum connectionimiteached")); + +160 + +. + ` +(); + +162 #i +UUID_TELNET_HAVE_WIFICLIENT_REMOTE + + +163 +logg_ +. + `fo +( + `F +("New ci from [%s]:%uced"), +uuid +:: + `b_to_rg +( + +. + `meIP +()). + `c_r +(), cl. + `mePt +()); + +165 +cis_ +. + `ema_back +( +shl_y_ +, +d +:: + `move +( + +), +l_id_timeout_ +, +wre_timeout_ +); + +166 #i!( +UUID_TELNET_HAVE_WIFICLIENT_REMOTE +) + +167 +logg_ +. + `fo +( + `F +("New ci %aced"), & +cis_ +. + `back +()); + +173 +TtSvi +:: +Ci +:: + `Ci +( +shl_y_funi + & +shl_y +, +WiFiCl + && + +,  +id_timeout +,  +wre_timeout +) + +174 : + `_ +( +d +:: + `move +( + +)) + +175 , + `am_ +( +_ +) { + +176 #i +UUID_TELNET_HAVE_WIFICLIENT_REMOTE + + +178 +addr_ + = +_ +. + `meIP +(); + +179 +pt_ + = +_ +. + `mePt +(); + +181 +pt_ + = 0; + +184 #i +UUID_TELNET_HAVE_WIFICLIENT_NODELAY + + +185 +_ +. + `tNoDay +( +ue +); + +188 #i +UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE + + +190 +_ +. + `kpAlive +(5, 5, 5); + +193 i( +wre_timeout + > 0) { + +194 +_ +. + `tTimeout +( +wre_timeout +); + +197 +am_ +. + `t +(); + +199 i( +_ +. + `ced +()) { + +200 +d +:: +shed_r +< +uuid +:: +cse +:: +Shl +> +shl + = + `shl_y +( +am_ +, +addr_ +, +pt_ +); + +201 +shl +-> + `id_timeout +( +id_timeout +); + +202 +shl +-> + `t +(); + +203 +shl_ + = +shl +; + +205 +shl_ + = +nuαr +; + +209 +bo + +TtSvi +:: +Ci +:: + `aive +() { + +210  +shl_ +. + `u_cou +() > 1; + +213 +bo + +TtSvi +:: +Ci +:: + `lo +() { + +214 i( + `aive +()) { + +215 i(! +_ +. + `ced +()) { + +216 +shl_ +-> + ` +(); + +218  +ue +; + +220 #i +UUID_TELNET_HAVE_WIFICLIENT_REMOTE + + +221 +logg_ +. + `fo +( + `F +("Ci from [%s]:%u clod"), +uuid +:: + `b_to_rg +( +addr_ +). + `c_r +(), +pt_ +); + +223 +logg_ +. + `fo +( + `F +("Ci %od"), +this +); + +225  +l +; + +229  +TtSvi +:: +Ci +:: + ` +() { + +230 i( +shl_ +) { + +231 +shl_ +-> + ` +(); + +237 + } +} + + @lib/uuid-telnet/src/uuid/telnet.h + +19 #ide +UUID_TELNET_H_ + + +20  + #UUID_TELNET_H_ + + + ) + +22  + ~ + +23 #ifde +ARDUINO_ARCH_ESP8266 + + +24  + ~ + +26  + ~ + +28  + ~ + +30  + ~ + +31  + ~
  • + +32  + ~ + +33  + ~ + +34  + ~ + +36  + ~ + +38 +mea + + guuid + { + +46 +mea + + gʑ + { + +54 as + cTtSm +: +public + :: +Sm + { + +55 +public +: + +62 +exic + +TtSm +( +WiFiCl + & + +); + +63 + gvtu + ~ +TtSm +() = ; + +70  +t +(); + +78  +avaab +( + govride +; + +85  +ad +( + govride +; + +93  +ek +( + govride +; + +103 +size_t + +wre +( +ut8_t + +da + + govride +; + +114 +size_t + +wre +(cڡ +ut8_t + * +bufr +, size_ +size + + govride +; + +125  +ush +( + govride +; + +127 + give +: + +128  +cڡex + cڡ  +NUL + = 0; + +129  +cڡex + cڡ  + gBEL + = 7; + +130  +cڡex + cڡ  + gBS + = 8; + +131  +cڡex + cڡ  + gHT + = 9; + +132  +cڡex + cڡ  + gLF + = 10; + +133  +cڡex + cڡ  + gVT + = 11; + +134  +cڡex + cڡ  + gFF + = 12; + +135  +cڡex + cڡ  + gCR + = 13; + +136  +cڡex + cڡ  + gSE + = 240; + +137  +cڡex + cڡ  + gNOP + = 241; + +138  +cڡex + cڡ  + gDM + = 242; + +139  +cڡex + cڡ  + gBRK + = 243; + +140  +cڡex + cڡ  + gIP + = 244; + +141  +cڡex + cڡ  + gAO + = 245; + +142  +cڡex + cڡ  + gAYT + = 246; + +143  +cڡex + cڡ  + gEC + = 247; + +144  +cڡex + cڡ  + gEL + = 248; + +145  +cڡex + cڡ  + gGA + = 249; + +146  +cڡex + cڡ  + gSB + = 250; + +147  +cڡex + cڡ  + gWILL + = 251; + +148  +cڡex + cڡ  + gWONT + = 252; + +149  +cڡex + cڡ  + gDO + = 253; + +150  +cڡex + cڡ  + gDONT + = 254; + +151  +cڡex + cڡ  + gIAC + = 255; + +153  +cڡex + cڡ  + gOPT_BINARY + = 0; + +154  +cڡex + cڡ  + gOPT_ECHO + = 1; + +155  +cڡex + cڡ  + gOPT_SGA + = 3; + +157  +cڡex + cڡ +size_t + + gBUFFER_SIZE + = 536; + +159 +TtSm +(cڡ TtSm& +de +; + +160 + gTtSm +& + gݔ +=(cڡ +TtSm +& +de +; + +168  +w_avaab +(); + +175  +w_ad +(); + +183  +bufr_ush +(); + +193 +size_t + +w_wre +( +da +); + +203 +size_t + +w_wre +(cڡ +d +:: +ve +<> & +da +); + +214 +size_t + +w_wre +(cڡ +ut8_t + * +bufr +, size_ +size +); + +216 + gWiFiCl + & + g_ +; + +217  + gevious_w__ + = 0; + +218 +bo + + gsub_gٟti_ + = +l +; + +219  + gevious__ + = 0; + +220  + gevious_out_ + = 0; + +221  + gek_ + = -1; + +222 + gd +:: +ve +<> +ouut_bufr_ +; + +230 as + cTtSvi + { + +231 + gpublic +: + +232  +cڡex + +size_t + +MAX_CONNECTIONS + = 3; + +233  +cڡex + +ut16_t + + gDEFAULT_PORT + = 23; + +234  +cڡex +  + gDEFAULT_IDLE_TIMEOUT + = 600; + +235  +cڡex +  + gDEFAULT_WRITE_TIMEOUT + = 0; + +245 +usg + + gshl_y_funi + = +d +:: +funi +( +Sm + & +am +, cڡ + gIPAddss + & + gaddr +, +ut16_t + + gpt +)>; + +255 +TtSvi +( +d +:: +shed_r +< +uuid +:: +cse +:: +Commds +> +commds +,  +cڋxt + = 0,  +ags + = 0); + +266 +TtSvi +( +ut16_t + +pt +, +d +:: +shed_r +< +uuid +:: +cse +:: +Commds +> +commds +,  +cڋxt + = 0,  +ags + = 0); + +274 +exic + +TtSvi +( +shl_y_funi + +shl_y +); + +283 +TtSvi +( +ut16_t + +pt +, +shl_y_funi + +shl_y +); + +285 ~ +TtSvi +() = ; + +292  +t +(); + +300  +o_l +(); + +308  + +(); + +316 +size_t + +maximum_cis +() const; + +324  +maximum_cis +( +size_t + +cou +); + +332  +l_id_timeout +() const; + +341  +l_id_timeout +( +timeout +); + +350  +deu_wre_timeout +() const; + +361  +deu_wre_timeout +( +timeout +); + +368  +lo +(); + +370 + give +: + +378 as + cCi + { + +379 +public +: + +389 +Ci +( +shl_y_funi + & +shl_y +, +WiFiCl + && + +,  +id_timeout +,  +wre_timeout +); + +390 ~ +Ci +() = ; + +398 +bo + +aive +(); + +405 +bo + +lo +(); + +411  + +(); + +413 + give +: + +414 +Ci +(cڡ Ci& +de +; + +415 + gCi +& + gݔ +=(cڡ +Ci +& +de +; + +417 +WiFiCl + + g_ +; + +418 +TtSm + + gam_ +; + +419 + gd +:: +shed_r +< +uuid +:: +cse +:: +Shl +> +shl_ +; + +420 +IPAddss + + gaddr_ +; + +421 +ut16_t + + gpt_ +; + +424 +TtSvi +(cڡ TtSvi& +de +; + +425 + gTtSvi +& + gݔ +=(cڡ +TtSvi +& +de +; + +427  + guuid +:: +log +:: +Logg + +logg_ +; + +429 +WiFiSv + + grv_ +; + +430 +size_t + + gmaximum_cis_ + = +MAX_CONNECTIONS +; + +431 + gd +:: +li +< +Ci +> +cis_ +; + +432 +shl_y_funi + + gshl_y_ +; + +433  + gl_id_timeout_ + = +DEFAULT_IDLE_TIMEOUT +; + +434  + gwre_timeout_ + = +DEFAULT_WRITE_TIMEOUT +; + + @lib_standalone/Arduino.cpp + +18  + ~ + +19  + ~ + +20  + ~ + +22  + ~ + +24 +NiveCse + + gSl +; + +35  + g__mlis + = 0; + +36  +bo + + g__ouut_ps +[256]; + +37  + g__ouut_v +[256]; + +39  +ma +( +gc + +__ibu__ +(( +unud +)), * +gv +[] __attribute__((unused))) { + +40 +memt +( +__ouut_ps +, 0, (__output_pins)); + +41 +memt +( +__ouut_v +, 0, (__output_level)); + +43 +tup +(); + +46  + g__cyes + = 0; + +48  +mlis +(<10 * 1000 && +__cyes +++ <= 10 * 1000) { + +49 +lo +(); + +55  + $mlis +() { + +56  +__mlis +; + +57 + } +} + +59  + $day +( +mlis +) { + +60 +__mlis + + +mlis +; + +61 + } +} + +63  + $yld +() { + +64 + } +} + +66  + $tf_P +(* +r +, +size_t + +size +, cڡ * +fm +, ...) { + +67 +va_li + + +; + +69 + `va_t +( + +, +fm +); + +70  +t + = + `vtf_P +( +r +, +size +, +fm +, + +); + +71 + `va_d +( + +); + +73  +t +; + +74 + } +} + +76  + $vtf_P +(* +r +, +size_t + +size +, cڡ * +fm +, +va_li + + +) { + +77 +d +:: +rg + +tive_fm +; + +79  +evious + = 0; + +80  +size_t + +i + = 0; i < + ` +( +fm +); i++) { + +81  +c + = +fm +[ +i +]; + +86 i( +evious + ='%' && +c + == 'S') { + +87 +c + = 's'; + +90 +tive_fm + + +c +; + +91 +evious + = +c +; + +94  + `vtf +( +r +, +size +, +tive_fm +. + `c_r +(), + +); + +95 + } +} + +97  + $pMode +( +ut8_t + +p +, ut8_ +mode +) { + +98 +__ouut_ps +[ +p +] = ( +mode + = +OUTPUT +); + +99 + } +} + +101  + $digWre +( +ut8_t + +p +, ut8_ +vue +) { + +102 +__ouut_v +[ +p +] = ( +vue + = +HIGH +? HIGH : +LOW +; + +103 + } +} + +105  + $digRd +( +ut8_t + +p +) { + +106 i( +__ouut_ps +[ +p +]) { + +107  +__ouut_v +[ +p +]; + +108 } i( +p + & 1) { + +109  +HIGH +; + +111  +LOW +; + +113 + } +} + + @lib_standalone/Arduino.h + +18 #ide +ARDUINO_H_ + + +19  + #ARDUINO_H_ + + + ) + +21  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +27  + ~ + +29  + ~ + +31  + #IPAddss + +d +:: +rg + + + ) + +32  + #ICACHE_FLASH_ATTR + + + ) + +33  + #ICACHE_RAM_ATTR + + + ) + +34  + #os_evt_t +  + + ) + +35  + #by + +ut8_t + + + ) + +36  + # + + + + + ) + +37  + #boޗn + +bo + + + ) + +39  + #LOW + 0 + + ) + +40  + #HIGH + 1 + + ) + +42  + #NAN + 0 + + ) + +44  + #INPUT + 0 + + ) + +45  + #OUTPUT + 1 + + ) + +46  + #INPUT_PULLUP + 2 + + ) + +48  +pMode +( +ut8_t + +p +, ut8_ +mode +); + +49  +digWre +( +ut8_t + +p +, ut8_ +vue +); + +50  +digRd +( +ut8_t + +p +); + +52  + #PROGMEM + + + ) + +53  + #PGM_P + cڡ * + + ) + +54  + #PSTR +( +s +) \ + +55 ( + `__exnsi__ +({ \ + +56 cڡ  +__c +[] = ( +s +); \ + +57 & +__c +[0]; \ + +58 })) + + ) + +61 +ass + + g__FshSgHr +; + +62  + #FPSTR +( +rg_l +( +t_ +(rg_l)) + + ) + +63  + #F +( +rg_l +( + `FPSTR +( + `PSTR +(rg_l))) + + ) + +65  +tf_P +(* +r +, +size_t + +size +, cڡ * +fm +, ...); + +66  +vtf_P +(* +r +, +size_t + +size +, cڡ * +fm +, +va_li + + +); + +68  + #pgm_ad_by +( +addr +(* +t_ +ddr)) + + ) + +70 +ass + + gPrt +; + +72 as + cPrb + { + +73 + mpublic +: + +74 +vtu + +size_t + + $tTo +( +Prt + & +t +) const = 0; + +77 as + cPrt + { + +78 +public +: + +79 +vtu + +size_t + + `wre +( +ut8_t + +c +) = 0; + +80 +vtu + +size_t + + `wre +(cڡ +ut8_t + * +bufr +, size_ +size +) = 0; + +81 +size_t + + $t +( +c +) { + +82  + `wre +(( +ut8_t +) +c +); + +84 +size_t + + $t +(cڡ * +da +) { + +85  + `wre +( +t_ +( +da +), + ` +(data)); + +86 + } +} + +87 +size_t + + $t +(cڡ +__FshSgHr + * +da +) { + +88  + `t +( +t_ +( +da +)); + +89 + } +} + +90 +size_t + + $t +(cڡ +Prb + & +b +) { + +91  +b +. + `tTo +(* +this +); + +92 + } +} + +93 +size_t + + $t +( +vue +) { + +94  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()); + +95 + } +} + +96 +size_t + + $t +( +vue +) { + +97  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()); + +98 + } +} + +99 +size_t + + $t +( +vue +) { + +100  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()); + +101 + } +} + +102 +size_t + + $t +( +vue +) { + +103  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()); + +104 + } +} + +105 +size_t + + $n +() { + +106  + `t +("\r\n"); + +107 + } +} + +108 +size_t + + $n +(cڡ * +da +) { + +109  + `t +( +da ++ + `n +(); + +110 + } +} + +111 +size_t + + $n +(cڡ +__FshSgHr + * +da +) { + +112  + `t +( +t_ +( +da +)+ + `n +(); + +113 + } +} + +114 +size_t + + $n +(cڡ +Prb + & +b +) { + +115  +b +. + `tTo +(* +this ++ + `n +(); + +116 + } +} + +117 +size_t + + $n +( +vue +) { + +118  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()+ + `n +(); + +119 + } +} + +120 +size_t + + $n +( +vue +) { + +121  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()+ + `n +(); + +122 + } +} + +123 +size_t + + $n +( +vue +) { + +124  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()+ + `n +(); + +125 + } +} + +126 +size_t + + $n +( +vue +) { + +127  + `t +( +d +:: + `to_rg +( +vue +). + `c_r +()+ + `n +(); + +128 + } +} + +129 +vtu +  + $ush +(){ + } +}; + +132 as + cSm + : +public + +Prt + { + +133 +public +: + +134 +vtu +  +avaab +() = 0; + +135 +vtu +  +ad +() = 0; + +136 +vtu +  +ek +() = 0; + +139 as + cNiveCse + : +public + +Sm + { + +140 +public +: + +141  +beg +( +baud + +__ibu__ +(( +unud +))) { + +144  + $avaab +( +ovride + { + +145 i( + `ek +() >= 0) { + +150 + } +} + +152  + $ad +( +ovride + { + +153 + `ek +(); + +155 i( +ek_ +) { + +156 +ek_ + = +l +; + +157  +ek_da_ +; + +161 + } +} + +163  + $ek +( +ovride + { + +164 i(! +ek_ +) { + +165  +t + = :: + `ad +( +STDIN_FILENO +, & +ek_da_ +, 1); + +166 +ek_ + = +t + > 0; + +169 i( +ek_ +) { + +170  +ek_da_ +; + +174 + } +} + +176 +size_t + + $wre +( +ut8_t + +c + +ovride + { + +177  :: + `wre +( +STDOUT_FILENO +, & +c +, 1); + +178 + } +} + +180 +size_t + + $wre +(cڡ +ut8_t + * +bufr +, +size_t + +size + +ovride + { + +181  :: + `wre +( +STDOUT_FILENO +, +bufr +, +size +); + +182 + } +} + +184 + give +: + +185 +bo + +ek_ + = +l +; + +186  + gek_da_ +; + +189 +NiveCse + +Sl +; + +191  +mlis +(); + +193  +day +( +mlis +); + +195  +yld +(); + +197  +tup +(); + +198  +lo +(); + +200  + ~"WSg.h +" + + @lib_standalone/ArduinoJson/ArduinoJson.h + +5  + ~"c/ArduoJs.h +" + + @lib_standalone/ArduinoJson/extras/fuzzing/fuzzer_main.cpp + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 "C"  +LLVMFuzzTeOIut +(cڡ +ut8_t +* +da +, +size_t + +size +); + +16 + gd +:: +ve +< +ut8_t +> + $ad +(cڡ * +th +) { + +17 +FILE +* +f + = + `fݒ +( +th +, "rb"); + +18 i(! +f +) { + +19 +d +:: + + << "Faedݒ " << +th + << std:: +dl +; + +20 + `ex +(1); + +23 + `fek +( +f +, 0, +SEEK_END +); + +24 +size_t + +size + = + `l +( +f +); + +25 + `fek +( +f +, 0, +SEEK_SET +); + +27 +d +:: +ve +< +ut8_t +> + `bufr +( +size +); + +28 i( + `d +( +bufr +. + `da +(), 1, +size +, +f +) != size) { + +29 + `fo +( +f +); + +30 +d +:: + + << "Faedػad " << +th + << std:: +dl +; + +31 + `ex +(1); + +34 + `fo +( +f +); + +35  +bufr +; + +36 + } +} + +38  + $ma +( +gc +, cڡ * +gv +[]) { + +39 i( +gc + < 2) { + +40 +d +:: + + << "Uge: msgck_fuzz fes" << std:: +dl +; + +44  +i + = 1; i < +gc +; i++) { + +45 +d +:: +cout + << "Ldg " << +gv +[ +i +] << std:: +dl +; + +46 +d +:: +ve +< +ut8_t +> +bufr + = + `ad +( +gv +[ +i +]); + +47 + `LLVMFuzzTeOIut +( +bufr +. + `da +(), bufr. + `size +()); + +50 + } +} + + @lib_standalone/ArduinoJson/extras/fuzzing/json_fuzzer.cpp + +1  + ~ + +3 "C"  + $LLVMFuzzTeOIut +(cڡ +ut8_t + * +da +, +size_t + +size +) { + +4 +DymicJsDocumt + + `doc +(4096); + +5 +DerliziE + +r + = + `derlizeJs +( +doc +, +da +, +size +); + +6 i(! +r +) { + +7 +d +:: +rg + +js +; + +8 + `rlizeJs +( +doc +, +js +); + +11 + } +} + + @lib_standalone/ArduinoJson/extras/fuzzing/msgpack_fuzzer.cpp + +1  + ~ + +3 "C"  + $LLVMFuzzTeOIut +(cڡ +ut8_t + * +da +, +size_t + +size +) { + +4 +DymicJsDocumt + + `doc +(4096); + +5 +DerliziE + +r + = + `derlizeMsgPack +( +doc +, +da +, +size +); + +6 i(! +r +) { + +7 +d +:: +rg + +js +; + +8 + `rlizeMsgPack +( +doc +, +js +); + +11 + } +} + + @lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp + +7  + ~ + +8  + ~"ArduoJs.h +" + +10  + $ma +() { + +16 +SticJsDocumt +<200> +doc +; + +30 +doc +["sensor"] = "gps"; + +31 +doc +["time"] = 1351824120; + +35 +JsAay + +da + = +doc +. + `NeedAay +("data"); + +36 +da +. + `add +(48.756080); + +37 +da +. + `add +(2.302038); + +41 + `rlizeJs +( +doc +, +d +:: +cout +); + +46 +d +:: +cout + << std:: +dl +; + +50 + `rlizeJsPy +( +doc +, +d +:: +cout +); + +60 + } +} + + @lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp + +7  + ~ + +8  + ~"ArduoJs.h +" + +10  + $ma +() { + +16 +SticJsDocumt +<300> +doc +; + +31  +js +[] = + +35 +DerliziE + +r + = + `derlizeJs +( +doc +, +js +); + +38 i( +r +) { + +39 +d +:: + + << "derlizeJs(ed: " << +r +. + `c_r +(<< std:: +dl +; + +47 cڡ * +ns + = +doc +["sensor"]; + +48  +time + = +doc +["time"]; + +49  +tude + = +doc +["data"][0]; + +50  +lgude + = +doc +["data"][1]; + +53 +d +:: +cout + << +ns + << std:: +dl +; + +54 +d +:: +cout + << +time + << std:: +dl +; + +55 +d +:: +cout + << +tude + << std:: +dl +; + +56 +d +:: +cout + << +lgude + << std:: +dl +; + +59 + } +} + + @lib_standalone/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp + +7  + ~ + +8  + ~"ArduoJs.h +" + +10  + $ma +() { + +16 +SticJsDocumt +<300> +doc +; + +28 +ut8_t + +put +[] = {131, 166, 115, 101, 110, 115, 111, 114, 163, 103, 112, 115, + +44 +DerliziE + +r + = + `derlizeMsgPack +( +doc +, +put +); + +47 i( +r +) { + +48 +d +:: + + << "derlizeMsgPack(ed: " << +r +. + `c_r +(<< std:: +dl +; + +56 cڡ * +ns + = +doc +["sensor"]; + +57  +time + = +doc +["time"]; + +58  +tude + = +doc +["data"][0]; + +59  +lgude + = +doc +["data"][1]; + +62 +d +:: +cout + << +ns + << std:: +dl +; + +63 +d +:: +cout + << +time + << std:: +dl +; + +64 +d +:: +cout + << +tude + << std:: +dl +; + +65 +d +:: +cout + << +lgude + << std:: +dl +; + +68 + } +} + + @lib_standalone/ArduinoJson/extras/tests/ElementProxy/add.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("ElementProxy::add()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gdoc +. +addEmt +(); + +13 + gEmtProxy +< + gJsDocumt +&> + g + = +doc +[0]; + +15 +SECTION +("add(int)") { + +16 + g +. +add +(42); + +18 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[[42]]"); + +21 +SECTION +("add(const char*)") { + +22 + g +. +add +("world"); + +24 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[[\"world\"]]"); + +27 +SECTION +("set(char[])") { + +28  + gs +[] = "world"; + +29 + g +. +add +( +s +); + +30 +ry +( +s +, "!!!!!"); + +32 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[[\"world\"]]"); + + @lib_standalone/ArduinoJson/extras/tests/ElementProxy/clear.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("ElementProxy::clear()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gdoc +. +addEmt +(); + +13 + gEmtProxy +< + gJsDocumt +&> + g + = +doc +[0]; + +15 +SECTION +("size goes backo zero") { + +16 + g +. +add +(42); + +17 + g +. +r +(); + +19 +REQUIRE +( + +. +size +() == 0); + +22 +SECTION +("isNull()eturnrue") { + +23 + g +. +add +("hello"); + +24 + g +. +r +(); + +26 +REQUIRE +( + +. +isNu +(= +ue +); + + @lib_standalone/ArduinoJson/extras/tests/ElementProxy/compare.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("ElementProxy::operator==()") { + +11 +DymicJsDocumt + +doc +(4096); + +13 +SECTION +("same value") { + +14 + gdoc +. +add +(1); + +15 + gdoc +. +add +(1); + +17 +REQUIRE +( +doc +[0] == doc[1]); + +18 +REQUIRE_FALSE +( +doc +[0] != doc[1]); + +21 +SECTION +("different values") { + +22 + gdoc +. +add +(1); + +23 + gdoc +. +add +(2); + +25 +REQUIRE_FALSE +( +doc +[0] == doc[1]); + +26 +REQUIRE +( +doc +[0] != doc[1]); + + @lib_standalone/ArduinoJson/extras/tests/ElementProxy/remove.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("ElementProxy::remove()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gdoc +. +addEmt +(); + +13 + gEmtProxy +< + gJsDocumt +&> + g + = +doc +[0]; + +15 +SECTION +("remove(int)") { + +16 + g +. +add +(1); + +17 + g +. +add +(2); + +18 + g +. +add +(3); + +20 + g +. +move +(1); + +22 +REQUIRE +( + +. +as +< +d +:: +rg +>() == "[1,3]"); + +25 +SECTION +("remove(const char *)") { + +26 + g +["a"] = 1; + +27 + g +["b"] = 2; + +29 + g +. +move +("a"); + +31 +REQUIRE +( + +. +as +< +d +:: +rg +>() == "{\"b\":2}"); + +34 +SECTION +("remove(std::string)") { + +35 + g +["a"] = 1; + +36 + g +["b"] = 2; + +38 + g +. +move +( +d +:: +rg +("b")); + +40 +REQUIRE +( + +. +as +< +d +:: +rg +>() == "{\"a\":1}"); + +43 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +44 +SECTION +("remove(vla)") { + +45 + g +["a"] = 1; + +46 + g +["b"] = 2; + +48  + gi + = 4; + +49  + gv +[ +i +]; + +50 +ry +( +v +, "b"); + +51 + g +. +move +( +v +); + +53 +REQUIRE +( + +. +as +< +d +:: +rg +>() == "{\"a\":1}"); + + @lib_standalone/ArduinoJson/extras/tests/ElementProxy/set.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("ElementProxy::set()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gEmtProxy +< + gJsDocumt +&> + g + = +doc +[0]; + +14 +SECTION +("set(int)") { + +15 + g +. +t +(42); + +17 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[42]"); + +20 +SECTION +("set(const char*)") { + +21 + g +. +t +("world"); + +23 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[\"world\"]"); + +26 +SECTION +("set(char[])") { + +27  + gs +[] = "world"; + +28 + g +. +t +( +s +); + +29 +ry +( +s +, "!!!!!"); + +31 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[\"world\"]"); + + @lib_standalone/ArduinoJson/extras/tests/ElementProxy/size.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("ElementProxy::size()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gdoc +. +addEmt +(); + +13 + gEmtProxy +< + gJsDocumt +&> + g + = +doc +[0]; + +15 +SECTION +("returns 0") { + +16 +REQUIRE +( + +. +size +() == 0); + +19 +SECTION +("asnrray,eturns 2") { + +20 + g +. +add +(1); + +21 + g +. +add +(2); + +22 +REQUIRE +( + +. +size +() == 2); + +25 +SECTION +("asn object,eturns 2") { + +26 + g +["a"] = 1; + +27 + g +["b"] = 2; + +28 +REQUIRE +( + +. +size +() == 2); + + @lib_standalone/ArduinoJson/extras/tests/ElementProxy/subscript.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::operator[]") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gEmtProxy +< + gJsDocumt +&> + g + = +doc +[1]; + +14 +SECTION +("set member") { + +15 + g +["world"] = 42; + +17 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[null,{\"world\":42}]"); + +20 +SECTION +("setlement") { + +21 + g +[2] = 42; + +23 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[null,[null,null,42]]"); + + @lib_standalone/ArduinoJson/extras/tests/Helpers/CustomReader.hpp + +5 #agm + + + +7  + ~ + +9 as + cCuomRd + { + +10 + md +:: +rgam + +_am +; + +12 + mpublic +: + +13 + $CuomRd +(cڡ * +put +: + $_am +( +put +) {} + +15  + $ad +() { + +16  +_am +. + `g +(); + +17 + } +} + +19 +size_t + + $adBys +(* +bufr +, +size_t + +ngth +) { + +20 +_am +. + `ad +( +bufr +, +ic_ +< +d +:: +amsize +>( +ngth +)); + +21  +ic_ +< +size_t +>( +_am +. + `gcou +()); + +22 + } +} + +24 + give +: + +25 +CuomRd +(const CustomReader&); + + @lib_standalone/ArduinoJson/extras/tests/Helpers/Stream.h + +5 #agm + + + +8 as + cSm + + +10 + mpublic +: + +11 +vtu + ~ + $Sm +() {} + +12 +vtu +  + `ad +() = 0; + +13 +vtu + +size_t + + `adBys +(* +bufr +, size_ +ngth +) = 0; + +14 + } +}; + + @lib_standalone/ArduinoJson/extras/tests/Helpers/WString.h + +5 #agm + + + +7  + ~ + +10 as + cSg + { + +11 + mpublic +: + +12 +Sg +& +ݔ ++=(cڡ * +rhs +) { + +13 +_r + + +rhs +; + +14  * + mthis +; + +17 +size_t + + $ngth +() const { + +18  +_r +. + `size +(); + +19 + } +} + +21 cڡ * + $c_r +() const { + +22  +_r +. + `c_r +(); + +23 + } +} + +25 +bo + + gݔ +==(cڡ * +s +) const { + +26  +_r + = +s +; + +29 +nd + + gd +:: +oam +& +ݔ +<<( +d +::oam& +lhs +, cڡ :: +Sg +& +rhs +) { + +30 +lhs + << +rhs +. +_r +; + +31  + glhs +; + +34 + give +: + +35 +d +:: +rg + +_r +; + +38 +ass + + gSgSumHr +; + +40 +le + +bo + + gݔ +==(cڡ +d +:: +rg +& +lhs +, cڡ :: +Sg +& +rhs +) { + +41  +lhs + = +rhs +. +c_r +(); + + @lib_standalone/ArduinoJson/extras/tests/Helpers/progmem_emulation.hpp + +5  + ~ + +6  + ~ + +8 +ass + + g__FshSgHr +; + +10 +le + cڡ * + $cvtPToFsh +(cڡ * +s +) { + +11  +t_ +( +s +) + 42; + +12 + } +} + +14 +le + cڡ * + $cvtFshToP +(cڡ * +s +) { + +15  +t_ +( +s +) - 42; + +16 + } +} + +18  + #F +( +X + +t_ +( + `cvtPToFsh +(X)) + + ) + +19  + #FC +( +X + +t_ +( + `cvtPToFsh +(X)) + + ) + +21 +le + +ut8_t + + $pgm_ad_by +(cڡ * +p +) { + +22  * +t_ +( + `cvtFshToP +( +p +)); + +23 + } +} + + @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("Gbathree") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +DerliziE + + gr + = +derlizeJs +( + +12 +doc +, + +23 +JsObje + + gro + = +doc +. +as +(); + +25 +SECTION +("Success") { + +26 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +29 +SECTION +("ProtocolName") { + +30 +REQUIRE +("uesn" = +ro +["protocol_name"]); + +33 +SECTION +("Repeats") { + +34 +REQUIRE +(1 = +ro +["repeats"]); + +37 +SECTION +("Wait") { + +38 +REQUIRE +(0 = +ro +["wait"]); + +41 +SECTION +("Measurements") { + +42 +REQUIRE +(3 = +ro +["measurements"]); + +45 +SECTION +("Meas2_Light") { + +46 +REQUIRE +(15 = +ro +["meas2_light"]); + +49 +SECTION +("Meas1_Baseline") { + +50 +REQUIRE +(0 = +ro +["meas1_baseline"]); + +53 +SECTION +("Act_Light") { + +54 +REQUIRE +(20 = +ro +["act_light"]); + +57 +SECTION +("Pulsesize") { + +58 +REQUIRE +(25 = +ro +["pulsesize"]); + +61 +SECTION +("Pulsedistance") { + +62 +REQUIRE +(10000 = +ro +["pulsedistance"]); + +65 +SECTION +("Actintensity1") { + +66 +REQUIRE +(50 = +ro +["actintensity1"]); + +69 +SECTION +("Actintensity2") { + +70 +REQUIRE +(255 = +ro +["actintensity2"]); + +73 +SECTION +("Measintensity") { + +74 +REQUIRE +(255 = +ro +["measintensity"]); + +77 +SECTION +("Calintensity") { + +78 +REQUIRE +(255 = +ro +["calintensity"]); + +81 +SECTION +("Pulses") { + +84 +JsAay + + gy + = +ro +["pulses"]; + +85 +REQUIRE +( +y +. +isNu +(= +l +); + +87 +REQUIRE +(3 = +y +. +size +()); + +89  +size_t + + gi + = 0; i < 3; i++) { + +90 +REQUIRE +(50 = +y +[ +i +]); + +94 +SECTION +("Act") { + +97 +JsAay + + gy + = +ro +["act"]; + +98 +REQUIRE +( +y +. +isNu +(= +l +); + +100 +REQUIRE +(4 = +y +. +size +()); + +101 +REQUIRE +(2 = +y +[0]); + +102 +REQUIRE +(1 = +y +[1]); + +103 +REQUIRE +(2 = +y +[2]); + +104 +REQUIRE +(2 = +y +[3]); + +107 +SECTION +("Detectors") { + +110 +JsAay + + gy + = +ro +["detectors"]; + +111 +REQUIRE +( +y +. +isNu +(= +l +); + +112 +REQUIRE +(4 = +y +. +size +()); + +114  +size_t + + gi + = 0; i < 4; i++) { + +115 +JsAay + + gáedAay + = +y +[ +i +]; + +116 +REQUIRE +(4 = +áedAay +. +size +()); + +118  +size_t + + gj + = 0; j < 4; j++) { + +119 +REQUIRE +(34 = +áedAay +[ +j +]); + +124 +SECTION +("Alta") { + +127 +JsAay + + gy + = +ro +["alta"]; + +128 +REQUIRE +( +y +. +isNu +(= +l +); + +130 +REQUIRE +(4 = +y +. +size +()); + +132  +size_t + + gi + = 0; i < 4; i++) { + +133 +REQUIRE +(2 = +y +[ +i +]); + +137 +SECTION +("Altb") { + +140 +JsAay + + gy + = +ro +["altb"]; + +141 +REQUIRE +( +y +. +isNu +(= +l +); + +143 +REQUIRE +(4 = +y +. +size +()); + +145  +size_t + + gi + = 0; i < 4; i++) { + +146 +REQUIRE +(2 = +y +[ +i +]); + +150 +SECTION +("Measlights") { + +153 +JsAay + + gy + = +ro +["measlights"]; + +154 +REQUIRE +( +y +. +isNu +(= +l +); + +155 +REQUIRE +(4 = +y +. +size +()); + +157  +size_t + + gi + = 0; i < 4; i++) { + +158 +JsAay + + gáedAay + = +y +[ +i +]; + +160 +REQUIRE +(4 = +áedAay +. +size +()); + +162  +size_t + + gj + = 0; j < 4; j++) { + +163 +REQUIRE +(15 = +áedAay +[ +j +]); + +168 +SECTION +("Measlights2") { + +171 +JsAay + + gy + = +ro +["measlights2"]; + +172 +REQUIRE +( +y +. +isNu +(= +l +); + +173 +REQUIRE +(4 = +y +. +size +()); + +175  +size_t + + gi + = 0; i < 4; i++) { + +176 +JsAay + + gáedAay + = +y +[ +i +]; + +177 +REQUIRE +(4 = +áedAay +. +size +()); + +179  +size_t + + gj + = 0; j < 4; j++) { + +180 +REQUIRE +(15 = +áedAay +[ +j +]); + +185 +SECTION +("Altc") { + +188 +JsAay + + gy + = +ro +["altc"]; + +189 +REQUIRE +( +y +. +isNu +(= +l +); + +191 +REQUIRE +(4 = +y +. +size +()); + +193  +size_t + + gi + = 0; i < 4; i++) { + +194 +REQUIRE +(2 = +y +[ +i +]); + +198 +SECTION +("Altd") { + +201 +JsAay + + gy + = +ro +["altd"]; + +202 +REQUIRE +( +y +. +isNu +(= +l +); + +204 +REQUIRE +(4 = +y +. +size +()); + +206  +size_t + + gi + = 0; i < 4; i++) { + +207 +REQUIRE +(2 = +y +[ +i +]); + + @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp + +5  + ~ + +6  + ~ + +10 +TEST_CASE +("Issue772") { + +11 +DymicJsDocumt + +doc1 +(4096); + +12 +DymicJsDocumt + +doc2 +(4096); + +13 +DerliziE + + gr +; + +14 + gd +:: +rg + +da + = + +20 + gr + = +derlizeJs +( +doc1 +, +da +); + +21 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +23 + gda + = ""; + +24 +rlizeMsgPack +( +doc1 +, +da +); + +25 + gr + = +derlizeMsgPack +( +doc2 +, +da +); + +27 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + + @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("OpenWeatherMap") { + +10 cڡ * + gput_js + = "{\"cod\":\"200\",\"message\":0,\"cnt\":40,\"list\":[{\"dt\":1581498000,\"main\":{\"temp\":3.23,\"feels_like\":-3.63,\"temp_min\":3.23,\"temp_max\":4.62,\"pressure\":1014,\"sea_level\":1014,\"grnd_level\":1010,\"humidity\":58,\"temp_kf\":-1.39},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01d\"}],\"clouds\":{\"all\":0},\"wind\":{\"speed\":6.19,\"deg\":266},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 09:00:00\"},{\"dt\":1581508800,\"main\":{\"temp\":6.09,\"feels_like\":-1.07,\"temp_min\":6.09,\"temp_max\":7.13,\"pressure\":1015,\"sea_level\":1015,\"grnd_level\":1011,\"humidity\":48,\"temp_kf\":-1.04},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01d\"}],\"clouds\":{\"all\":9},\"wind\":{\"speed\":6.64,\"deg\":268},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 12:00:00\"},{\"dt\":1581519600,\"main\":{\"temp\":6.82,\"feels_like\":0.47,\"temp_min\":6.82,\"temp_max\":7.52,\"pressure\":1015,\"sea_level\":1015,\"grnd_level\":1011,\"humidity\":47,\"temp_kf\":-0.7},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":97},\"wind\":{\"speed\":5.55,\"deg\":267},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 15:00:00\"},{\"dt\":1581530400,\"main\":{\"temp\":5.76,\"feels_like\":1.84,\"temp_min\":5.76,\"temp_max\":6.11,\"pressure\":1015,\"sea_level\":1015,\"grnd_level\":1010,\"humidity\":57,\"temp_kf\":-0.35},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":99},\"wind\":{\"speed\":2.35,\"deg\":232},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-12 18:00:00\"},{\"dt\":1581541200,\"main\":{\"temp\":5.7,\"feels_like\":1.34,\"temp_min\":5.7,\"temp_max\":5.7,\"pressure\":1012,\"sea_level\":1012,\"grnd_level\":1008,\"humidity\":71,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":3.57,\"deg\":198},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-12 21:00:00\"},{\"dt\":1581552000,\"main\":{\"temp\":5.82,\"feels_like\":1.39,\"temp_min\":5.82,\"temp_max\":5.82,\"pressure\":1009,\"sea_level\":1009,\"grnd_level\":1004,\"humidity\":86,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":4.35,\"deg\":169},\"rain\":{\"3h\":0.5},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 00:00:00\"},{\"dt\":1581562800,\"main\":{\"temp\":5.9,\"feels_like\":-0.85,\"temp_min\":5.9,\"temp_max\":5.9,\"pressure\":1000,\"sea_level\":1000,\"grnd_level\":997,\"humidity\":86,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":7.69,\"deg\":178},\"rain\":{\"3h\":1.75},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 03:00:00\"},{\"dt\":1581573600,\"main\":{\"temp\":7.52,\"feels_like\":1.74,\"temp_min\":7.52,\"temp_max\":7.52,\"pressure\":993,\"sea_level\":993,\"grnd_level\":988,\"humidity\":88,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":6.84,\"deg\":184},\"rain\":{\"3h\":7.06},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 06:00:00\"},{\"dt\":1581584400,\"main\":{\"temp\":7.23,\"feels_like\":0.81,\"temp_min\":7.23,\"temp_max\":7.23,\"pressure\":992,\"sea_level\":992,\"grnd_level\":988,\"humidity\":69,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":49},\"wind\":{\"speed\":6.77,\"deg\":239},\"rain\":{\"3h\":0.25},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-13 09:00:00\"},{\"dt\":1581595200,\"main\":{\"temp\":7.67,\"feels_like\":2.81,\"temp_min\":7.67,\"temp_max\":7.67,\"pressure\":991,\"sea_level\":991,\"grnd_level\":987,\"humidity\":75,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":73},\"wind\":{\"speed\":4.93,\"deg\":235},\"rain\":{\"3h\":0.75},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-13 12:00:00\"},{\"dt\":1581606000,\"main\":{\"temp\":8.83,\"feels_like\":3.23,\"temp_min\":8.83,\"temp_max\":8.83,\"pressure\":993,\"sea_level\":993,\"grnd_level\":990,\"humidity\":64,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":83},\"wind\":{\"speed\":5.7,\"deg\":293},\"rain\":{\"3h\":0.38},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-13 15:00:00\"},{\"dt\":1581616800,\"main\":{\"temp\":7.42,\"feels_like\":1.77,\"temp_min\":7.42,\"temp_max\":7.42,\"pressure\":1000,\"sea_level\":1000,\"grnd_level\":996,\"humidity\":71,\"temp_kf\":0},\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"broken clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":54},\"wind\":{\"speed\":5.81,\"deg\":307},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 18:00:00\"},{\"dt\":1581627600,\"main\":{\"temp\":5.82,\"feels_like\":0.89,\"temp_min\":5.82,\"temp_max\":5.82,\"pressure\":1007,\"sea_level\":1007,\"grnd_level\":1003,\"humidity\":79,\"temp_kf\":0},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01n\"}],\"clouds\":{\"all\":6},\"wind\":{\"speed\":4.76,\"deg\":300},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 21:00:00\"},{\"dt\":1581638400,\"main\":{\"temp\":5.58,\"feels_like\":2.09,\"temp_min\":5.58,\"temp_max\":5.58,\"pressure\":1011,\"sea_level\":1011,\"grnd_level\":1007,\"humidity\":81,\"temp_kf\":0},\"weather\":[{\"id\":802,\"main\":\"Clouds\",\"description\":\"scattered clouds\",\"icon\":\"03n\"}],\"clouds\":{\"all\":47},\"wind\":{\"speed\":2.73,\"deg\":326},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 00:00:00\"},{\"dt\":1581649200,\"main\":{\"temp\":4.27,\"feels_like\":1.72,\"temp_min\":4.27,\"temp_max\":4.27,\"pressure\":1014,\"sea_level\":1014,\"grnd_level\":1010,\"humidity\":85,\"temp_kf\":0},\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"broken clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":69},\"wind\":{\"speed\":1.24,\"deg\":295},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 03:00:00\"},{\"dt\":1581660000,\"main\":{\"temp\":3.91,\"feels_like\":1.54,\"temp_min\":3.91,\"temp_max\":3.91,\"pressure\":1016,\"sea_level\":1016,\"grnd_level\":1012,\"humidity\":87,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":85},\"wind\":{\"speed\":0.98,\"deg\":211},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 06:00:00\"},{\"dt\":1581670800,\"main\":{\"temp\":4.77,\"feels_like\":0.74,\"temp_min\":4.77,\"temp_max\":4.77,\"pressure\":1017,\"sea_level\":1017,\"grnd_level\":1013,\"humidity\":78,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":3.19,\"deg\":184},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-14 09:00:00\"},{\"dt\":1581681600,\"main\":{\"temp\":9.03,\"feels_like\":4,\"temp_min\":9.03,\"temp_max\":9.03,\"pressure\":1016,\"sea_level\":1016,\"grnd_level\":1012,\"humidity\":73,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":5.43,\"deg\":206},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-14 12:00:00\"},{\"dt\":1581692400,\"main\":{\"temp\":9.86,\"feels_like\":4.22,\"temp_min\":9.86,\"temp_max\":9.86,\"pressure\":1014,\"sea_level\":1014,\"grnd_level\":1010,\"humidity\":74,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":6.58,\"deg\":209},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-14 15:00:00\"},{\"dt\":1581703200,\"main\":{\"temp\":9.48,\"feels_like\":4.8,\"temp_min\":9.48,\"temp_max\":9.48,\"pressure\":1013,\"sea_level\":1013,\"grnd_level\":1009,\"humidity\":83,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":5.6,\"deg\":206},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 18:00:00\"},{\"dt\":1581714000,\"main\":{\"temp\":10.03,\"feels_like\":6.48,\"temp_min\":10.03,\"temp_max\":10.03,\"pressure\":1013,\"sea_level\":1013,\"grnd_level\":1009,\"humidity\":93,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":4.75,\"deg\":226},\"rain\":{\"3h\":3.13},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 21:00:00\"},{\"dt\":1581724800,\"main\":{\"temp\":9.48,\"feels_like\":6.25,\"temp_min\":9.48,\"temp_max\":9.48,\"pressure\":1013,\"sea_level\":1013,\"grnd_level\":1009,\"humidity\":89,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":3.87,\"deg\":214},\"rain\":{\"3h\":2.38},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 00:00:00\"},{\"dt\":1581735600,\"main\":{\"temp\":9.12,\"feels_like\":7.08,\"temp_min\":9.12,\"temp_max\":9.12,\"pressure\":1011,\"sea_level\":1011,\"grnd_level\":1007,\"humidity\":96,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":2.43,\"deg\":194},\"rain\":{\"3h\":1},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 03:00:00\"},{\"dt\":1581746400,\"main\":{\"temp\":10.32,\"feels_like\":6.71,\"temp_min\":10.32,\"temp_max\":10.32,\"pressure\":1009,\"sea_level\":1009,\"grnd_level\":1004,\"humidity\":95,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":5.05,\"deg\":196},\"rain\":{\"3h\":1.75},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 06:00:00\"},{\"dt\":1581757200,\"main\":{\"temp\":11.57,\"feels_like\":5.85,\"temp_min\":11.57,\"temp_max\":11.57,\"pressure\":1006,\"sea_level\":1006,\"grnd_level\":1002,\"humidity\":85,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":7.91,\"deg\":205},\"rain\":{\"3h\":1.44},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-15 09:00:00\"},{\"dt\":1581768000,\"main\":{\"temp\":12.25,\"feels_like\":4.46,\"temp_min\":12.25,\"temp_max\":12.25,\"pressure\":1003,\"sea_level\":1003,\"grnd_level\":998,\"humidity\":78,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":10.65,\"deg\":201},\"rain\":{\"3h\":1.81},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-15 12:00:00\"},{\"dt\":1581778800,\"main\":{\"temp\":12.19,\"feels_like\":3.17,\"temp_min\":12.19,\"temp_max\":12.19,\"pressure\":998,\"sea_level\":998,\"grnd_level\":994,\"humidity\":80,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":12.52,\"deg\":204},\"rain\":{\"3h\":3.5},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-15 15:00:00\"},{\"dt\":1581789600,\"main\":{\"temp\":12.25,\"feels_like\":4.15,\"temp_min\":12.25,\"temp_max\":12.25,\"pressure\":996,\"sea_level\":996,\"grnd_level\":992,\"humidity\":83,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":11.42,\"deg\":215},\"rain\":{\"3h\":4.88},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 18:00:00\"},{\"dt\":1581800400,\"main\":{\"temp\":12.64,\"feels_like\":5.85,\"temp_min\":12.64,\"temp_max\":12.64,\"pressure\":994,\"sea_level\":994,\"grnd_level\":990,\"humidity\":76,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":9.22,\"deg\":217},\"rain\":{\"3h\":6.88},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 21:00:00\"},{\"dt\":1581811200,\"main\":{\"temp\":12.96,\"feels_like\":4.03,\"temp_min\":12.96,\"temp_max\":12.96,\"pressure\":988,\"sea_level\":988,\"grnd_level\":984,\"humidity\":83,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":12.88,\"deg\":211},\"rain\":{\"3h\":5.63},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 00:00:00\"},{\"dt\":1581822000,\"main\":{\"temp\":13.13,\"feels_like\":5.17,\"temp_min\":13.13,\"temp_max\":13.13,\"pressure\":987,\"sea_level\":987,\"grnd_level\":982,\"humidity\":82,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":11.49,\"deg\":246},\"rain\":{\"3h\":7.25},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 03:00:00\"},{\"dt\":1581832800,\"main\":{\"temp\":9.07,\"feels_like\":0.79,\"temp_min\":9.07,\"temp_max\":9.07,\"pressure\":990,\"sea_level\":990,\"grnd_level\":986,\"humidity\":75,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":10.18,\"deg\":255},\"rain\":{\"3h\":2},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 06:00:00\"},{\"dt\":1581843600,\"main\":{\"temp\":8.05,\"feels_like\":-0.9,\"temp_min\":8.05,\"temp_max\":8.05,\"pressure\":994,\"sea_level\":994,\"grnd_level\":990,\"humidity\":51,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":9.65,\"deg\":245},\"rain\":{\"3h\":1.19},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-16 09:00:00\"},{\"dt\":1581854400,\"main\":{\"temp\":9.54,\"feels_like\":0.13,\"temp_min\":9.54,\"temp_max\":9.54,\"pressure\":996,\"sea_level\":996,\"grnd_level\":991,\"humidity\":41,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":94},\"wind\":{\"speed\":10.03,\"deg\":243},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-16 12:00:00\"},{\"dt\":1581865200,\"main\":{\"temp\":9.08,\"feels_like\":-0.35,\"temp_min\":9.08,\"temp_max\":9.08,\"pressure\":996,\"sea_level\":996,\"grnd_level\":991,\"humidity\":44,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":89},\"wind\":{\"speed\":10.15,\"deg\":246},\"rain\":{\"3h\":0.25},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-16 15:00:00\"},{\"dt\":1581876000,\"main\":{\"temp\":7.41,\"feels_like\":-1.34,\"temp_min\":7.41,\"temp_max\":7.41,\"pressure\":996,\"sea_level\":996,\"grnd_level\":992,\"humidity\":50,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":94},\"wind\":{\"speed\":9.21,\"deg\":240},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 18:00:00\"},{\"dt\":1581886800,\"main\":{\"temp\":6.42,\"feels_like\":-1.7,\"temp_min\":6.42,\"temp_max\":6.42,\"pressure\":997,\"sea_level\":997,\"grnd_level\":993,\"humidity\":58,\"temp_kf\":0},\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"broken clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":67},\"wind\":{\"speed\":8.52,\"deg\":236},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 21:00:00\"},{\"dt\":1581897600,\"main\":{\"temp\":6.03,\"feels_like\":-2.65,\"temp_min\":6.03,\"temp_max\":6.03,\"pressure\":996,\"sea_level\":996,\"grnd_level\":993,\"humidity\":51,\"temp_kf\":0},\"weather\":[{\"id\":802,\"main\":\"Clouds\",\"description\":\"scattered clouds\",\"icon\":\"03n\"}],\"clouds\":{\"all\":38},\"wind\":{\"speed\":8.94,\"deg\":240},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-17 00:00:00\"},{\"dt\":1581908400,\"main\":{\"temp\":5.62,\"feels_like\":-2.86,\"temp_min\":5.62,\"temp_max\":5.62,\"pressure\":995,\"sea_level\":995,\"grnd_level\":991,\"humidity\":53,\"temp_kf\":0},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01n\"}],\"clouds\":{\"all\":0},\"wind\":{\"speed\":8.67,\"deg\":241},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-17 03:00:00\"},{\"dt\":1581919200,\"main\":{\"temp\":5.51,\"feels_like\":-2.41,\"temp_min\":5.51,\"temp_max\":5.51,\"pressure\":995,\"sea_level\":995,\"grnd_level\":991,\"humidity\":61,\"temp_kf\":0},\"weather\":[{\"id\":802,\"main\":\"Clouds\",\"description\":\"scattered clouds\",\"icon\":\"03n\"}],\"clouds\":{\"all\":35},\"wind\":{\"speed\":8.2,\"deg\":244},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-17 06:00:00\"}],\"city\":{\"id\":2643743,\"name\":\"London\",\"coord\":{\"lat\":51.5085,\"lon\":-0.1257},\"country\":\"GB\",\"population\":1000000,\"timezone\":0,\"sunrise\":1581492085,\"sunset\":1581527294}}"; + +12 cڡ * + gexed_js + = "{\"list\":[" + +56 + gSticJsDocumt +<512> + gfr +; + +57 + gfr +["li"][0]["dt"] = +ue +; + +58 + gfr +["li"][0]["ma"]["mp"] = +ue +; + +59 + gfr +["li"][0]["wth"][0]["desti"] = +ue +; + +61 +DymicJsDocumt + +doc +(16384); + +63 +REQUIRE +( + +64 +derlizeJs +( +doc +, +put_js +, +DerliziOi +:: +Fr +( +fr +)) == + +65 +DerliziE +:: +Ok +); + +67 +REQUIRE +( +doc +. +as +< +d +:: +rg +>(= +exed_js +); + + @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp + +5  + ~ + +6  + ~ + +8  + $check +( +d +:: +rg + +igJs +) { + +9 +DymicJsDocumt + + `doc +(16384); + +11 +d +:: +rg + +tyJs +; + +12 + `derlizeJs +( +doc +, +igJs +); + +13 + `rlizeJsPy +( +doc +, +tyJs +); + +15 +d +:: +rg + +fJs +; + +16 + `derlizeJs +( +doc +, +igJs +); + +17 + `rlizeJs +( +doc +, +fJs +); + +19 + `REQUIRE +( +igJs + = +fJs +); + +20 + } +} + +22 +TEST_CASE +("Round Trip:arse ->rettyPrint ->arse ->rint") { + +23 +SECTION +("OpenWeatherMap") { + +24 +check +( + +35 +SECTION +("YahooQueryLanguage") { + +36 +check +( + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/add.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::add()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsAay + + gy + = +doc +. +to +(); + +12 +SECTION +("int") { + +13 + gy +. +add +(123); + +14 +REQUIRE +(123 = +y +[0]. +as +<>()); + +15 +REQUIRE +( +y +[0]. +is +<>()); + +16 +REQUIRE +( +y +[0]. +is +<>()); + +19 +SECTION +("double") { + +20 + gy +. +add +(123.45); + +21 +REQUIRE +(123.45 = +y +[0]. +as +<>()); + +22 +REQUIRE +( +y +[0]. +is +<>()); + +23 +REQUIRE_FALSE +( +y +[0]. +is +< +bo +>()); + +26 +SECTION +("bool") { + +27 + gy +. +add +( +ue +); + +28 +REQUIRE +( +ue + = +y +[0]. +as +< +bo +>()); + +29 +REQUIRE +( +y +[0]. +is +< +bo +>()); + +30 +REQUIRE_FALSE +( +y +[0]. +is +<>()); + +33 +SECTION +("const char*") { + +34 cڡ * + gr + = "hello"; + +35 + gy +. +add +( +r +); + +36 +REQUIRE +( +r + = +y +[0]. +as +< +d +:: +rg +>()); + +37 +REQUIRE +( +y +[0]. +is +()); + +38 +REQUIRE_FALSE +( +y +[0]. +is +<>()); + +41 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +42 +SECTION +("vla") { + +43  + gi + = 16; + +44  + gv +[ +i +]; + +45 +ry +( +v +, "world"); + +47 + gy +. +add +( +v +); + +49 +REQUIRE +( +d +:: +rg +("wld"= +y +[0]); + +53 +SECTION +("nestedrray") { + +54 +DymicJsDocumt + +doc2 +(4096); + +55 +JsAay + + gr + = +doc2 +. +to +(); + +57 + gy +. +add +( +r +); + +59 +REQUIRE +( +r + = +y +[0]. +as +< +JsAay +>()); + +60 +REQUIRE +( +y +[0]. +is +< +JsAay +>()); + +61 +REQUIRE_FALSE +( +y +[0]. +is +<>()); + +64 +SECTION +("nested object") { + +65 +DymicJsDocumt + +doc2 +(4096); + +66 +JsObje + + gobj + = +doc2 +. +to +(); + +68 + gy +. +add +( +obj +); + +70 +REQUIRE +( +obj + = +y +[0]. +as +< +JsObje +>()); + +71 +REQUIRE +( +y +[0]. +is +< +JsObje +>()); + +72 +REQUIRE_FALSE +( +y +[0]. +is +<>()); + +75 +SECTION +("array subscript") { + +76 cڡ * + gr + = "hello"; + +77 +DymicJsDocumt + +doc2 +(4096); + +78 +JsAay + + gr + = +doc2 +. +to +(); + +79 + gr +. +add +( +r +); + +81 + gy +. +add +( +r +[0]); + +83 +REQUIRE +( +r + = +y +[0]); + +86 +SECTION +("object subscript") { + +87 cڡ * + gr + = "hello"; + +88 +DymicJsDocumt + +doc2 +(4096); + +89 +JsObje + + gobj + = +doc2 +. +to +(); + +90 + gobj +["x"] = +r +; + +92 + gy +. +add +( +obj +["x"]); + +94 +REQUIRE +( +r + = +y +[0]); + +97 +SECTION +("shouldot duplicate const char*") { + +98 + gy +. +add +("world"); + +99 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1); + +100 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +103 +SECTION +("should duplicate char*") { + +104 + gy +. +add +( +cڡ_ +<*>("world")); + +105 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(6); + +106 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +109 +SECTION +("should duplicate std::string") { + +110 + gy +. +add +( +d +:: +rg +("world")); + +111 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(6); + +112 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +115 +SECTION +("shouldot duplicate serialized(const char*)") { + +116 + gy +. +add +( +rlized +("{}")); + +117 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1); + +118 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +121 +SECTION +("should duplicate serialized(char*)") { + +122 + gy +. +add +( +rlized +( +cڡ_ +<*>("{}"))); + +123 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(2); + +124 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +127 +SECTION +("should duplicate serialized(std::string)") { + +128 + gy +. +add +( +rlized +( +d +:: +rg +("{}"))); + +129 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(2); + +130 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +133 +SECTION +("should duplicate serialized(std::string)") { + +134 + gy +. +add +( +rlized +( +d +:: +rg +("\0XX", 3))); + +135 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(3); + +136 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/copyArray.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("copyArray()") { + +9 +SECTION +("1D -> JsonArray") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsAay + + gy + = +doc +. +to +(); + +12  + gjs +[32]; + +13  + gsour +[] = {1, 2, 3}; + +15 +bo + + gok + = +cyAay +( +sour +, +y +); + +16 +REQUIRE +( +ok +); + +18 +rlizeJs +( +y +, +js +, (json)); + +19 +REQUIRE +( +d +:: +rg +("[1,2,3]"= +js +); + +22 +SECTION +("1D -> JsonArray, butotnough memory") { + +23 cڡ +size_t + + gSIZE + = +JSON_ARRAY_SIZE +(2); + +24 + gSticJsDocumt +< + gSIZE +> + gdoc +; + +25 +JsAay + + gy + = +doc +. +to +(); + +26  + gjs +[32]; + +27  + gsour +[] = {1, 2, 3}; + +29 +bo + + gok + = +cyAay +( +sour +, +y +); + +30 +REQUIRE_FALSE +( +ok +); + +32 +rlizeJs +( +y +, +js +, (json)); + +33 +REQUIRE +( +d +:: +rg +("[1,2]"= +js +); + +36 +SECTION +("2D -> JsonArray") { + +37 +DymicJsDocumt + +doc +(4096); + +38 +JsAay + + gy + = +doc +. +to +(); + +39  + gjs +[32]; + +40  + gsour +[][3] = {{1, 2, 3}, {4, 5, 6}}; + +42 +bo + + gok + = +cyAay +( +sour +, +y +); + +43 +REQUIRE +( +ok +); + +45 +rlizeJs +( +y +, +js +, (json)); + +46 +REQUIRE +( +d +:: +rg +("[[1,2,3],[4,5,6]]"= +js +); + +49 +SECTION +("2D -> JsonArray, butotnough memory") { + +50 cڡ +size_t + + gSIZE + = + +51 +JSON_ARRAY_SIZE +(2) + JSON_ARRAY_SIZE(3) + JSON_ARRAY_SIZE(2); + +52 + gSticJsDocumt +< + gSIZE +> + gdoc +; + +53 +JsAay + + gy + = +doc +. +to +(); + +54  + gjs +[32] = ""; + +55  + gsour +[][3] = {{1, 2, 3}, {4, 5, 6}}; + +57 +CAPTURE +( +SIZE +) + +59 +bo + + gok + = +cyAay +( +sour +, +y +); + +60 +CAPTURE +( +doc +. +memyUge +()); + +61 +CHECK_FALSE +( +ok +); + +63 +rlizeJs +( +y +, +js +, (json)); + +64 +REQUIRE +( +d +:: +rg +("[[1,2,3],[4,5]]"= +js +); + +67 +SECTION +("JsonArray -> 1D, with more spacehaneeded") { + +68 +DymicJsDocumt + +doc +(4096); + +69  + gjs +[] = "[1,2,3]"; + +70 +DerliziE + + gr + = +derlizeJs +( +doc +, +js +); + +71 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +72 +JsAay + + gy + = +doc +. +as +(); + +74  + gdei +[4] = {0}; + +75 +size_t + + gsu + = +cyAay +( +y +, +dei +); + +77 +REQUIRE +(3 = +su +); + +78 +REQUIRE +(1 = +dei +[0]); + +79 +REQUIRE +(2 = +dei +[1]); + +80 +REQUIRE +(3 = +dei +[2]); + +81 +REQUIRE +(0 = +dei +[3]); + +84 +SECTION +("JsonArray -> 1D, withoutnough space") { + +85 +DymicJsDocumt + +doc +(4096); + +86  + gjs +[] = "[1,2,3]"; + +87 +DerliziE + + gr + = +derlizeJs +( +doc +, +js +); + +88 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +89 +JsAay + + gy + = +doc +. +as +(); + +91  + gdei +[2] = {0}; + +92 +size_t + + gsu + = +cyAay +( +y +, +dei +); + +94 +REQUIRE +(2 = +su +); + +95 +REQUIRE +(1 = +dei +[0]); + +96 +REQUIRE +(2 = +dei +[1]); + +99 +SECTION +("JsonArray -> 2D") { + +100 +DymicJsDocumt + +doc +(4096); + +101  + gjs +[] = "[[1,2],[3],[4]]"; + +103 +DerliziE + + gr + = +derlizeJs +( +doc +, +js +); + +104 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +105 +JsAay + + gy + = +doc +. +as +(); + +107  + gdei +[3][2] = {{0}}; + +108 +cyAay +( +y +, +dei +); + +110 +REQUIRE +(1 = +dei +[0][0]); + +111 +REQUIRE +(2 = +dei +[0][1]); + +112 +REQUIRE +(3 = +dei +[1][0]); + +113 +REQUIRE +(0 = +dei +[1][1]); + +114 +REQUIRE +(4 = +dei +[2][0]); + +115 +REQUIRE +(0 = +dei +[2][1]); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/createNested.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray basics") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsAay + + gy + = +doc +. +to +(); + +12 +SECTION +("CreateNestedArray") { + +13 +JsAay + + gr + = +y +. +NeedAay +(); + +14 +REQUIRE +( +r + = +y +[0]. +as +< +JsAay +>()); + +17 +SECTION +("CreateNestedObject") { + +18 +JsObje + + gobj + = +y +. +NeedObje +(); + +19 +REQUIRE +( +obj + = +y +[0]. +as +< +JsObje +>()); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/equals.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::operator==()") { + +9 +DymicJsDocumt + +doc1 +(4096); + +10 +JsAay + + gy1 + = +doc1 +. +to +(); + +11 +JsAayCڡ + + gy1c + = +y1 +; + +13 +DymicJsDocumt + +doc2 +(4096); + +14 +JsAay + + gy2 + = +doc2 +. +to +(); + +15 +JsAayCڡ + + gy2c + = +y2 +; + +17 +SECTION +("shouldeturn false whenrrays differ") { + +18 + gy1 +. +add +("coucou"); + +19 + gy2 +. +add +(1); + +21 +REQUIRE_FALSE +( +y1 + = +y2 +); + +22 +REQUIRE_FALSE +( +y1c + = +y2c +); + +25 +SECTION +("shouldeturn false when LHS has morelements") { + +26 + gy1 +. +add +(1); + +27 + gy1 +. +add +(2); + +28 + gy2 +. +add +(1); + +30 +REQUIRE_FALSE +( +y1 + = +y2 +); + +31 +REQUIRE_FALSE +( +y1c + = +y2c +); + +34 +SECTION +("shouldeturn false when RHS has morelements") { + +35 + gy1 +. +add +(1); + +36 + gy2 +. +add +(1); + +37 + gy2 +. +add +(2); + +39 +REQUIRE_FALSE +( +y1 + = +y2 +); + +40 +REQUIRE_FALSE +( +y1c + = +y2c +); + +43 +SECTION +("shouldeturnrue whenrraysqual") { + +44 + gy1 +. +add +("coucou"); + +45 + gy2 +. +add +("coucou"); + +47 +REQUIRE +( +y1 + = +y2 +); + +48 +REQUIRE +( +y1c + = +y2c +); + +51 +SECTION +("shouldeturn false when RHS isull") { + +52 +JsAay + + gnu +; + +54 +REQUIRE_FALSE +( +y1 + = +nu +); + +57 +SECTION +("shouldeturn false when LHS isull") { + +58 +JsAay + + gnu +; + +60 +REQUIRE_FALSE +( +nu + = +y1 +); + +63 +SECTION +("shouldeturnrue when bothreull") { + +64 +JsAay + + gnu1 +; + +65 +JsAay + + gnu2 +; + +67 +REQUIRE +( +nu1 + = +nu2 +); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/get.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::get()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +derlizeJs +( +doc +, "[1,2,3]"); + +11 +JsAay + + gy + = +doc +. +as +(); + +13 +SECTION +("Overflow") { + +14 +REQUIRE +( +y +. +gEmt +(3). +isNu +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/isNull.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::isNull()") { + +9 +SECTION +("returnsrue") { + +10 +JsAay + + gr +; + +11 +REQUIRE +( +r +. +isNu +(= +ue +); + +14 +SECTION +("returns false") { + +15 +DymicJsDocumt + +doc +(4096); + +16 +JsAay + + gr + = +doc +. +to +(); + +17 +REQUIRE +( +r +. +isNu +(= +l +); + +21 +TEST_CASE +("JsonArrayConst::isNull()") { + +22 +SECTION +("returnsrue") { + +23 +JsAayCڡ + + gr +; + +24 +REQUIRE +( +r +. +isNu +(= +ue +); + +27 +SECTION +("returns false") { + +28 +DymicJsDocumt + +doc +(4096); + +29 +JsAayCڡ + + gr + = +doc +. +to +< +JsAay +>(); + +30 +REQUIRE +( +r +. +isNu +(= +l +); + +34 +TEST_CASE +("JsonArray::operator bool()") { + +35 +SECTION +("returns false") { + +36 +JsAay + + gr +; + +37 +REQUIRE +( +ic_ +< +bo +>( +r += +l +); + +40 +SECTION +("returnsrue") { + +41 +DymicJsDocumt + +doc +(4096); + +42 +JsAay + + gr + = +doc +. +to +(); + +43 +REQUIRE +( +ic_ +< +bo +>( +r += +ue +); + +47 +TEST_CASE +("JsonArrayConst::operator bool()") { + +48 +SECTION +("returns false") { + +49 +JsAayCڡ + + gr +; + +50 +REQUIRE +( +ic_ +< +bo +>( +r += +l +); + +53 +SECTION +("returnsrue") { + +54 +DymicJsDocumt + +doc +(4096); + +55 +JsAayCڡ + + gr + = +doc +. +to +< +JsAay +>(); + +56 +REQUIRE +( +ic_ +< +bo +>( +r += +ue +); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/iterator.cpp + +5  + ~ + +6  + ~ + +8 + gme + < +tyme + + gTAay +> + +9  + $run__ +() { + +10 +SticJsDocumt +< + `JSON_ARRAY_SIZE +(2)> +doc +; + +11 +JsAay + +tmp + = +doc +. +to +(); + +12 +tmp +. + `add +(12); + +13 +tmp +. + `add +(34); + +15 +TAay + +y + = +tmp +; + +16 +tyme + +TAay +:: + + + + = +y +. + `beg +(); + +17 +tyme + +TAay +:: + + +d + = +y +. + `d +(); + +19 + `REQUIRE +( +d + ! + +); + +20 + `REQUIRE +(12 = + +-> +me + +as +<>()); + +21 + `REQUIRE +(12 = +ic_ +<>(* + +)); + +22 ++ + +; + +23 + `REQUIRE +( +d + ! + +); + +24 + `REQUIRE +(34 = + +-> +me + +as +<>()); + +25 + `REQUIRE +(34 = +ic_ +<>(* + +)); + +26 ++ + +; + +27 + `REQUIRE +( +d + = + +); + +28 + } +} + +30 +TEST_CASE +("JsonArray::begin()/end()") { + +31 +SECTION +("Nonull JsonArray") { + +32 + grun__ +< + gJsAay +>(); + +35 +SECTION +("Null JsonArray") { + +36 +JsAay + + gy +; + +38 +REQUIRE +( +y +. +beg +(=y. +d +()); + +42 +TEST_CASE +("JsonArrayConst::begin()/end()") { + +43 +SECTION +("Nonull JsonArrayConst") { + +44 + grun__ +< + gJsAayCڡ +>(); + +47 +SECTION +("Null JsonArrayConst") { + +48 +JsAayCڡ + + gy +; + +50 +REQUIRE +( +y +. +beg +(=y. +d +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/memoryUsage.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::memoryUsage()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsAay + + gr + = +doc +. +to +(); + +12 +SECTION +("return 0 if uninitialized") { + +13 +JsAay + + gunlized +; + +14 +REQUIRE +( +unlized +. +memyUge +() == 0); + +17 +SECTION +("JSON_ARRAY_SIZE(0) ifmpty") { + +18 +REQUIRE +( +r +. +memyUge +(= +JSON_ARRAY_SIZE +(0)); + +21 +SECTION +("JSON_ARRAY_SIZE(1)fterdd") { + +22 + gr +. +add +("hello"); + +23 +REQUIRE +( +r +. +memyUge +(= +JSON_ARRAY_SIZE +(1)); + +26 +SECTION +("includeshe size ofhe string") { + +27 + gr +. +add +( +d +:: +rg +("hello")); + +28 +REQUIRE +( +r +. +memyUge +(= +JSON_ARRAY_SIZE +(1) + 6); + +31 +SECTION +("includeshe size ofheestedrray") { + +32 +JsAay + + gáed + = +r +. +NeedAay +(); + +33 + gáed +. +add +(42); + +34 +REQUIRE +( +r +. +memyUge +(=2 * +JSON_ARRAY_SIZE +(1)); + +37 +SECTION +("includeshe size ofheestedrrect") { + +38 +JsObje + + gáed + = +r +. +NeedObje +(); + +39 + gáed +["hello"] = "world"; + +40 +REQUIRE +( +r +. +memyUge +(= +JSON_OBJECT_SIZE +(1+ +JSON_ARRAY_SIZE +(1)); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/nesting.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::nesting()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsAay + + gr + = +doc +. +to +(); + +12 +SECTION +("return 0 if uninitialized") { + +13 +JsAay + + gunlized +; + +14 +REQUIRE +( +unlized +. +ág +() == 0); + +17 +SECTION +("returns 1 formptyrray") { + +18 +REQUIRE +( +r +. +ág +() == 1); + +21 +SECTION +("returns 1 for flatrray") { + +22 + gr +. +add +("hello"); + +23 +REQUIRE +( +r +. +ág +() == 1); + +26 +SECTION +("returns 2 withestedrray") { + +27 + gr +. +NeedAay +(); + +28 +REQUIRE +( +r +. +ág +() == 2); + +31 +SECTION +("returns 2 withested object") { + +32 + gr +. +NeedObje +(); + +33 +REQUIRE +( +r +. +ág +() == 2); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/remove.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::remove()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsAay + + g_y + = +doc +. +to +(); + +11 + g_y +. +add +(1); + +12 + g_y +. +add +(2); + +13 + g_y +. +add +(3); + +15 +SECTION +("RemoveFirstByIndex") { + +16 + g_y +. +move +(0); + +18 +REQUIRE +(2 = +_y +. +size +()); + +19 +REQUIRE +( +_y +[0] == 2); + +20 +REQUIRE +( +_y +[1] == 3); + +23 +SECTION +("RemoveMiddleByIndex") { + +24 + g_y +. +move +(1); + +26 +REQUIRE +(2 = +_y +. +size +()); + +27 +REQUIRE +( +_y +[0] == 1); + +28 +REQUIRE +( +_y +[1] == 3); + +31 +SECTION +("RemoveLastByIndex") { + +32 + g_y +. +move +(2); + +34 +REQUIRE +(2 = +_y +. +size +()); + +35 +REQUIRE +( +_y +[0] == 1); + +36 +REQUIRE +( +_y +[1] == 2); + +39 +SECTION +("RemoveFirstByIterator") { + +40 + gJsAay +:: + + + + = +_y +. +beg +(); + +41 + g_y +. +move +( + +); + +43 +REQUIRE +(2 = +_y +. +size +()); + +44 +REQUIRE +( +_y +[0] == 2); + +45 +REQUIRE +( +_y +[1] == 3); + +48 +SECTION +("RemoveMiddleByIterator") { + +49 + gJsAay +:: + + + + = +_y +. +beg +(); + +50 ++ + g +; + +51 + g_y +. +move +( + +); + +53 +REQUIRE +(2 = +_y +. +size +()); + +54 +REQUIRE +( +_y +[0] == 1); + +55 +REQUIRE +( +_y +[1] == 3); + +58 +SECTION +("RemoveLastByIterator") { + +59 + gJsAay +:: + + + + = +_y +. +beg +(); + +60 ++ + g +; + +61 ++ + g +; + +62 + g_y +. +move +( + +); + +64 +REQUIRE +(2 = +_y +. +size +()); + +65 +REQUIRE +( +_y +[0] == 1); + +66 +REQUIRE +( +_y +[1] == 2); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/size.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonArray::size()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsAay + + gy + = +doc +. +to +(); + +12 +SECTION +("returns 0 ismpty") { + +13 +REQUIRE +(0U = +y +. +size +()); + +16 +SECTION +("increasesfterdd()") { + +17 + gy +. +add +("hello"); + +18 +REQUIRE +(1U = +y +. +size +()); + +20 + gy +. +add +("world"); + +21 +REQUIRE +(2U = +y +. +size +()); + +24 +SECTION +("remainshe sameftereplacingnlement") { + +25 + gy +. +add +("hello"); + +26 +REQUIRE +(1U = +y +. +size +()); + +28 + gy +[0] = "hello"; + +29 +REQUIRE +(1U = +y +. +size +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/std_string.cpp + +5  + ~ + +6  + ~ + +8  + $aSg +( +d +:: +rg + & +r +) { + +9 * +p + = +cڡ_ +<*>( +r +. + `c_r +()); + +10 * +p +) *p++ = '*'; + +11 + } +} + +13 +TEST_CASE +("std::string") { + +14 +DymicJsDocumt + +doc +(4096); + +15 +JsAay + + gy + = +doc +. +to +(); + +17 +SECTION +("add()") { + +18 + gd +:: +rg + +vue +("hello"); + +19 + gy +. +add +( +vue +); + +20 +aSg +( +vue +); + +21 +REQUIRE +( +d +:: +rg +("hlo"= +y +[0]); + +24 +SECTION +("operator[]") { + +25 + gd +:: +rg + +vue +("world"); + +26 + gy +. +add +("hello"); + +27 + gy +[0] = +vue +; + +28 +aSg +( +vue +); + +29 +REQUIRE +( +d +:: +rg +("wld"= +y +[0]); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/subscript.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonArray::operator[]") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsAay + + gy + = +doc +. +to +(); + +13 +SECTION +("Pad withull") { + +14 + gy +[2] = 2; + +15 + gy +[5] = 5; + +16 +REQUIRE +( +y +. +size +() == 6); + +17 +REQUIRE +( +y +[0]. +isNu +(= +ue +); + +18 +REQUIRE +( +y +[1]. +isNu +(= +ue +); + +19 +REQUIRE +( +y +[2]. +isNu +(= +l +); + +20 +REQUIRE +( +y +[3]. +isNu +(= +ue +); + +21 +REQUIRE +( +y +[4]. +isNu +(= +ue +); + +22 +REQUIRE +( +y +[5]. +isNu +(= +l +); + +23 +REQUIRE +( +y +[2] == 2); + +24 +REQUIRE +( +y +[5] == 5); + +27 +SECTION +("int") { + +28 + gy +[0] = 123; + +29 +REQUIRE +(123 = +y +[0]. +as +<>()); + +30 +REQUIRE +( +ue + = +y +[0]. +is +<>()); + +31 +REQUIRE +( +l + = +y +[0]. +is +< +bo +>()); + +34 #i +ARDUINOJSON_USE_LONG_LONG + + +35 +SECTION +("longong") { + +36 + gy +[0] = 9223372036854775807; + +37 +REQUIRE +(9223372036854775807 = +y +[0]. +as +< +t64_t +>()); + +38 +REQUIRE +( +ue + = +y +[0]. +is +< +t64_t +>()); + +39 +REQUIRE +( +l + = +y +[0]. +is +< +t32_t +>()); + +40 +REQUIRE +( +l + = +y +[0]. +is +< +bo +>()); + +44 +SECTION +("double") { + +45 + gy +[0] = 123.45; + +46 +REQUIRE +(123.45 = +y +[0]. +as +<>()); + +47 +REQUIRE +( +ue + = +y +[0]. +is +<>()); + +48 +REQUIRE +( +l + = +y +[0]. +is +<>()); + +51 +SECTION +("bool") { + +52 + gy +[0] = +ue +; + +53 +REQUIRE +( +ue + = +y +[0]. +as +< +bo +>()); + +54 +REQUIRE +( +ue + = +y +[0]. +is +< +bo +>()); + +55 +REQUIRE +( +l + = +y +[0]. +is +<>()); + +58 +SECTION +("const char*") { + +59 cڡ * + gr + = "hello"; + +61 + gy +[0] = +r +; + +62 +REQUIRE +( +r + = +y +[0]. +as +()); + +63 +REQUIRE +( +r + = +y +[0]. +as +<*>()); + +64 +REQUIRE +( +ue + = +y +[0]. +is +()); + +65 +REQUIRE +( +l + = +y +[0]. +is +<>()); + +68 +SECTION +("nestedrray") { + +69 +DymicJsDocumt + +doc2 +(4096); + +70 +JsAay + + gr2 + = +doc2 +. +to +(); + +72 + gy +[0] = +r2 +; + +74 +REQUIRE +( +r2 + = +y +[0]. +as +< +JsAay +>()); + +75 +REQUIRE +( +ue + = +y +[0]. +is +< +JsAay +>()); + +76 +REQUIRE +( +l + = +y +[0]. +is +<>()); + +79 +SECTION +("nested object") { + +80 +DymicJsDocumt + +doc2 +(4096); + +81 +JsObje + + gobj + = +doc2 +. +to +(); + +83 + gy +[0] = +obj +; + +85 +REQUIRE +( +obj + = +y +[0]. +as +< +JsObje +>()); + +86 +REQUIRE +( +ue + = +y +[0]. +is +< +JsObje +>()); + +87 +REQUIRE +( +l + = +y +[0]. +is +<>()); + +90 +SECTION +("array subscript") { + +91 +DymicJsDocumt + +doc2 +(4096); + +92 +JsAay + + gr2 + = +doc2 +. +to +(); + +93 cڡ * + gr + = "hello"; + +95 + gr2 +. +add +( +r +); + +97 + gy +[0] = +r2 +[0]; + +99 +REQUIRE +( +r + = +y +[0]); + +102 +SECTION +("object subscript") { + +103 cڡ * + gr + = "hello"; + +104 +DymicJsDocumt + +doc2 +(4096); + +105 +JsObje + + gobj + = +doc2 +. +to +(); + +107 + gobj +["x"] = +r +; + +109 + gy +[0] = +obj +["x"]; + +111 +REQUIRE +( +r + = +y +[0]); + +114 +SECTION +("shouldot duplicate const char*") { + +115 + gy +[0] = "world"; + +116 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1); + +117 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +120 +SECTION +("should duplicate char*") { + +121 + gy +[0] = +cڡ_ +<*>("world"); + +122 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(6); + +123 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +126 +SECTION +("should duplicate std::string") { + +127 + gy +[0] = +d +:: +rg +("world"); + +128 cڡ +size_t + + gexedSize + = +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(6); + +129 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +132 +SECTION +("array[0].to()") { + +133 +JsObje + + gobj + = +y +[0]. +to +(); + +134 +REQUIRE +( +obj +. +isNu +(= +l +); + +137 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +138 +SECTION +("set(VLA)") { + +139  + gi + = 16; + +140  + gv +[ +i +]; + +141 +ry +( +v +, "world"); + +143 + gy +. +add +("hello"); + +144 + gy +[0]. +t +( +v +); + +146 +REQUIRE +( +d +:: +rg +("wld"= +y +[0]); + +149 +SECTION +("operator=(VLA)") { + +150  + gi + = 16; + +151  + gv +[ +i +]; + +152 +ry +( +v +, "world"); + +154 + gy +. +add +("hello"); + +155 + gy +[0] = +v +; + +157 +REQUIRE +( +d +:: +rg +("wld"= +y +[0]); + +162 +TEST_CASE +("JsonArrayConst::operator[]") { + +163 +DymicJsDocumt + +doc +(4096); + +164 +JsAay + + gy + = +doc +. +to +(); + +165 + gy +. +add +(0); + +167 +SECTION +("int") { + +168 + gy +[0] = 123; + +169 +JsAayCڡ + + g + = +y +; + +171 +REQUIRE +(123 = + +[0]. +as +<>()); + +172 +REQUIRE +( +ue + = + +[0]. +is +<>()); + +173 +REQUIRE +( +l + = + +[0]. +is +< +bo +>()); + + @lib_standalone/ArduinoJson/extras/tests/JsonArray/undefined.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gCch +:: +Mchs +; + +10 +TEST_CASE +("Undefined JsonArray") { + +11 +JsAay + + gy +; + +13 +SECTION +("SubscriptFails") { + +14 +REQUIRE +( +y +[0]. +isNu +()); + +17 +SECTION +("AddFails") { + +18 + gy +. +add +(1); + +19 +REQUIRE +(0 = +y +. +size +()); + +22 +SECTION +("CreateNestedArrayFails") { + +23 +REQUIRE +( +y +. +NeedAay +(). +isNu +()); + +26 +SECTION +("CreateNestedObjectFails") { + +27 +REQUIRE +( +y +. +NeedObje +(). +isNu +()); + +30 +SECTION +("PrintToWritesBrackets") { + +31  + gbufr +[32]; + +32 +rlizeJs +( +y +, +bufr +, (buffer)); + +33 +REQUIRE_THAT +( +bufr +, +Equs +("null")); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp + +5  + ~ + +6  + ~ + +8  + $Sgifiti +( +DerliziE + +r +, +d +:: +rg + +exed +) { + +9 + `REQUIRE +( +r +. + `c_r +(= +exed +); + +10 + } +} + +12  + $Boifiti +( +DerliziE + +r +, +bo + +exed +) { + +14 + `CHECK +( +r + = +exed +); + +15 + `CHECK +( +r + !! +exed +); + +16 + `CHECK +(! +r + =! +exed +); + +19 + `CHECK +( +exed + = +r +); + +20 + `CHECK +(! +exed + ! +r +); + +21 + `CHECK +(! +exed + =! +r +); + +22 + } +} + +24  + #TEST_STRINGIFICATION +( +symb +) \ + +25 + `Sgifiti +( +DerliziE +:: +symb +, #symb) + + ) + +27  + #TEST_BOOLIFICATION +( +symb +, +exed +) \ + +28 + `Boifiti +( +DerliziE +:: +symb +, +exed +) + + ) + +30 +TEST_CASE +("DeserializationError") { + +31 +SECTION +("c_str()") { + +32 +TEST_STRINGIFICATION +( +Ok +); + +33 +TEST_STRINGIFICATION +( +TooDp +); + +34 +TEST_STRINGIFICATION +( +NoMemy +); + +35 +TEST_STRINGIFICATION +( +InvidIut +); + +36 +TEST_STRINGIFICATION +( +IncomeIut +); + +37 +TEST_STRINGIFICATION +( +NSu܋d +); + +40 +SECTION +("as boolean") { + +41 +TEST_BOOLIFICATION +( +Ok +, +l +); + +42 +TEST_BOOLIFICATION +( +TooDp +, +ue +); + +43 +TEST_BOOLIFICATION +( +NoMemy +, +ue +); + +44 +TEST_BOOLIFICATION +( +InvidIut +, +ue +); + +45 +TEST_BOOLIFICATION +( +IncomeIut +, +ue +); + +46 +TEST_BOOLIFICATION +( +NSu܋d +, +ue +); + +49 +SECTION +("ostream DeserializationError") { + +50 + gd +:: +rgam + +s +; + +51 + gs + << +DerliziE +(DerliziE:: +InvidIut +); + +52 +REQUIRE +( +s +. +r +() == "InvalidInput"); + +55 +SECTION +("ostream DeserializationError::Code") { + +56 + gd +:: +rgam + +s +; + +57 + gs + << + gDerliziE +:: +InvidIut +; + +58 +REQUIRE +( +s +. +r +() == "InvalidInput"); + +61 +SECTION +("out ofange") { + +62  + gcode + = 666; + +63 +DerliziE + +r +( + +64 * +t_ +< +DerliziE +:: +Code +*>(& +code +)); + +65 +REQUIRE +( +r +. +c_r +(= +d +:: +rg +("???")); + +68 +SECTION +("switch") { + +69 +DerliziE + + gr + = DerliziE:: +InvidIut +; + +70  + gr +. +code +()) { + +71  + gDerliziE +:: +InvidIut +: + +72 +SUCCEED +(); + +75 +FAIL +(); + +80 +SECTION +("Comparisons") { + +81 +DerliziE + +vidIut +(DerliziE:: +InvidIut +); + +82 +DerliziE + +ok +(DerliziE:: +Ok +); + +84 +SECTION +("DeserializationError == bool") { + +85 +REQUIRE +( +vidIut + = +ue +); + +86 +REQUIRE +( +ok + = +l +); + +89 +SECTION +("bool == DeserializationError") { + +90 +REQUIRE +( +ue + = +vidIut +); + +91 +REQUIRE +( +l + = +ok +); + +94 +SECTION +("DeserializationError != bool") { + +95 +REQUIRE +( +vidIut + ! +l +); + +96 +REQUIRE +( +ok + ! +ue +); + +99 +SECTION +("bool != DeserializationError") { + +100 +REQUIRE +( +l + ! +vidIut +); + +101 +REQUIRE +( +ue + ! +ok +); + +104 +SECTION +("Negations") { + +105 +REQUIRE +(! +vidIut + = +l +); + +106 +REQUIRE +(! +ok + = +ue +); + +109 +SECTION +("DeserializationError == Code") { + +110 +REQUIRE +( +vidIut + = +DerliziE +:: +InvidIut +); + +111 +REQUIRE +( +ok + = +DerliziE +:: +Ok +); + +114 +SECTION +("Code == DeserializationError") { + +115 +REQUIRE +( +DerliziE +:: +InvidIut + = +vidIut +); + +116 +REQUIRE +( +DerliziE +:: +Ok + = +ok +); + +119 +SECTION +("DeserializationError != Code") { + +120 +REQUIRE +( +vidIut + ! +DerliziE +:: +Ok +); + +121 +REQUIRE +( +ok + ! +DerliziE +:: +InvidIut +); + +124 +SECTION +("Code != DeserializationError") { + +125 +REQUIRE +( +DerliziE +:: +Ok + ! +vidIut +); + +126 +REQUIRE +( +DerliziE +:: +InvidIut + ! +ok +); + +129 +SECTION +("DeserializationError == DeserializationError") { + +130 +REQUIRE_FALSE +( +vidIut + = +ok +); + +133 +SECTION +("DeserializationError != DeserializationError") { + +134 +REQUIRE +( +vidIut + ! +ok +); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("deserialize JSONrray") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("Anmptyrray") { + +12 +DerliziE + + gr + = +derlizeJs +( +doc +, "[]"); + +13 +JsAay + + gr + = +doc +. +as +(); + +15 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +16 +REQUIRE +(0 = +r +. +size +()); + +19 +SECTION +("Spaces") { + +20 +SECTION +("Beforehe opening bracket") { + +21 +DerliziE + + gr + = +derlizeJs +( +doc +, " []"); + +22 +JsAay + + gr + = +doc +. +as +(); + +24 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +25 +REQUIRE +(0 = +r +. +size +()); + +28 +SECTION +("Before first value") { + +29 +DerliziE + + gr + = +derlizeJs +( +doc +, "[ \t\r\n42]"); + +30 +JsAay + + gr + = +doc +. +as +(); + +32 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +33 +REQUIRE +(1 = +r +. +size +()); + +34 +REQUIRE +( +r +[0] == 42); + +37 +SECTION +("After first value") { + +38 +DerliziE + + gr + = +derlizeJs +( +doc +, "[42 \t\r\n]"); + +39 +JsAay + + gr + = +doc +. +as +(); + +41 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +42 +REQUIRE +(1 = +r +. +size +()); + +43 +REQUIRE +( +r +[0] == 42); + +47 +SECTION +("Valuesypes") { + +48 +SECTION +("On integer") { + +49 +DerliziE + + gr + = +derlizeJs +( +doc +, "[42]"); + +50 +JsAay + + gr + = +doc +. +as +(); + +52 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +53 +REQUIRE +(1 = +r +. +size +()); + +54 +REQUIRE +( +r +[0] == 42); + +57 +SECTION +("Two integers") { + +58 +DerliziE + + gr + = +derlizeJs +( +doc +, "[42,84]"); + +59 +JsAay + + gr + = +doc +. +as +(); + +61 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +62 +REQUIRE +(2 = +r +. +size +()); + +63 +REQUIRE +( +r +[0] == 42); + +64 +REQUIRE +( +r +[1] == 84); + +67 +SECTION +("Double") { + +68 +DerliziE + + gr + = +derlizeJs +( +doc +, "[4.2,1e2]"); + +69 +JsAay + + gr + = +doc +. +as +(); + +71 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +72 +REQUIRE +(2 = +r +. +size +()); + +73 +REQUIRE +( +r +[0] == 4.2); + +74 +REQUIRE +( +r +[1] == 1e2); + +77 +SECTION +("Unsignedong") { + +78 +DerliziE + + gr + = +derlizeJs +( +doc +, "[4294967295]"); + +79 +JsAay + + gr + = +doc +. +as +(); + +81 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +82 +REQUIRE +(1 = +r +. +size +()); + +83 +REQUIRE +( +r +[0] == 4294967295UL); + +86 +SECTION +("Boolean") { + +87 +DerliziE + + gr + = +derlizeJs +( +doc +, "[true,false]"); + +88 +JsAay + + gr + = +doc +. +as +(); + +90 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +91 +REQUIRE +(2 = +r +. +size +()); + +92 +REQUIRE +( +r +[0] = +ue +); + +93 +REQUIRE +( +r +[1] = +l +); + +96 +SECTION +("Null") { + +97 +DerliziE + + gr + = +derlizeJs +( +doc +, "[null,null]"); + +98 +JsAay + + gr + = +doc +. +as +(); + +100 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +101 +REQUIRE +(2 = +r +. +size +()); + +102 +REQUIRE +( +r +[0]. +as +<*>() == 0); + +103 +REQUIRE +( +r +[1]. +as +<*>() == 0); + +107 +SECTION +("Quotes") { + +108 +SECTION +("Double quotes") { + +109 +DerliziE + + gr + = + +110 +derlizeJs +( +doc +, "[ \"hello\" , \"world\" ]"); + +111 +JsAay + + gr + = +doc +. +as +(); + +113 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +114 +REQUIRE +(2 = +r +. +size +()); + +115 +REQUIRE +( +r +[0] == "hello"); + +116 +REQUIRE +( +r +[1] == "world"); + +119 +SECTION +("Single quotes") { + +120 +DerliziE + + gr + = +derlizeJs +( +doc +, "[ 'hello' , 'world' ]"); + +121 +JsAay + + gr + = +doc +. +as +(); + +123 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +124 +REQUIRE +(2 = +r +. +size +()); + +125 +REQUIRE +( +r +[0] == "hello"); + +126 +REQUIRE +( +r +[1] == "world"); + +129 +SECTION +("No quotes") { + +130 +DerliziE + + gr + = +derlizeJs +( +doc +, "[ hello , world ]"); + +131 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +134 +SECTION +("Double quotes (empty strings)") { + +135 +DerliziE + + gr + = +derlizeJs +( +doc +, "[\"\",\"\"]"); + +136 +JsAay + + gr + = +doc +. +as +(); + +138 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +139 +REQUIRE +(2 = +r +. +size +()); + +140 +REQUIRE +( +r +[0] == ""); + +141 +REQUIRE +( +r +[1] == ""); + +144 +SECTION +("Single quotes (empty strings)") { + +145 +DerliziE + + gr + = +derlizeJs +( +doc +, "[\'\',\'\']"); + +146 +JsAay + + gr + = +doc +. +as +(); + +148 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +149 +REQUIRE +(2 = +r +. +size +()); + +150 +REQUIRE +( +r +[0] == ""); + +151 +REQUIRE +( +r +[1] == ""); + +154 +SECTION +("No quotes (empty strings)") { + +155 +DerliziE + + gr + = +derlizeJs +( +doc +, "[,]"); + +157 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +160 +SECTION +("Closing single quotes missing") { + +161 +DerliziE + + gr + = +derlizeJs +( +doc +, "[\"]"); + +163 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +166 +SECTION +("Closing double quotes missing") { + +167 +DerliziE + + gr + = +derlizeJs +( +doc +, "[\']"); + +169 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +173 +SECTION +("Prematureull-terminator") { + +174 +SECTION +("After opening bracket") { + +175 +DerliziE + + gr + = +derlizeJs +( +doc +, "["); + +177 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +180 +SECTION +("After value") { + +181 +DerliziE + + gr + = +derlizeJs +( +doc +, "[1"); + +183 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +186 +SECTION +("After comma") { + +187 +DerliziE + + gr + = +derlizeJs +( +doc +, "[1,"); + +189 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +193 +SECTION +("Prematurend of input") { + +194 cڡ * + gput + = "[1,2]"; + +196 +SECTION +("After opening bracket") { + +197 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +, 1); + +199 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +202 +SECTION +("After value") { + +203 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +, 2); + +205 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +208 +SECTION +("After comma") { + +209 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +, 3); + +211 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +215 +SECTION +("Misc") { + +216 +SECTION +("Nested objects") { + +217  + gjsSg +[] = + +220 +DerliziE + + gr + = +derlizeJs +( +doc +, +jsSg +); + +221 +JsAay + + gr + = +doc +. +as +(); + +223 +JsObje + + gobje1 + = +r +[0]; + +224 cڡ +JsObje + + gobje2 + = +r +[1]; + +225 +JsObje + + gobje3 + = +r +[2]; + +227 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +229 +REQUIRE +( +obje1 +. +isNu +(= +l +); + +230 +REQUIRE +( +obje2 +. +isNu +(= +l +); + +231 +REQUIRE +( +obje3 +. +isNu +(= +ue +); + +233 +REQUIRE +(2 = +obje1 +. +size +()); + +234 +REQUIRE +(2 = +obje2 +. +size +()); + +235 +REQUIRE +(0 = +obje3 +. +size +()); + +237 +REQUIRE +(1 = +obje1 +["a"]. +as +<>()); + +238 +REQUIRE +(2 = +obje1 +["b"]. +as +<>()); + +239 +REQUIRE +(3 = +obje2 +["c"]. +as +<>()); + +240 +REQUIRE +(4 = +obje2 +["d"]. +as +<>()); + +241 +REQUIRE +(0 = +obje3 +["e"]. +as +<>()); + +245 +SECTION +("Should clearhe JsonArray") { + +246 +derlizeJs +( +doc +, "[1,2,3,4]"); + +247 +derlizeJs +( +doc +, "[]"); + +248 +JsAay + + gr + = +doc +. +as +(); + +250 +REQUIRE +( +r +. +size +() == 0); + +251 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(0)); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array_static.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("deserialize JSONrray with StaticJsonDocument") { + +9 +SECTION +("BufferOfTheRightSizeForEmptyArray") { + +10 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(0)> + gdoc +; + +11  + gput +[] = "[]"; + +13 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +15 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +18 +SECTION +("TooSmallBufferForArrayWithOneValue") { + +19 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(0)> + gdoc +; + +20  + gput +[] = "[1]"; + +22 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +24 +REQUIRE +( +r + = +DerliziE +:: +NoMemy +); + +27 +SECTION +("BufferOfTheRightSizeForArrayWithOneValue") { + +28 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(1)> + gdoc +; + +29  + gput +[] = "[1]"; + +31 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +33 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +36 +SECTION +("TooSmallBufferForArrayWithNestedObject") { + +37 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(0+ +JSON_OBJECT_SIZE +(0)> + gdoc +; + +38  + gput +[] = "[{}]"; + +40 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +42 +REQUIRE +( +r + = +DerliziE +:: +NoMemy +); + +45 +SECTION +("BufferOfTheRightSizeForArrayWithNestedObject") { + +46 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(1+ +JSON_OBJECT_SIZE +(0)> + gdoc +; + +47  + gput +[] = "[{}]"; + +49 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +51 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +54 +SECTION +("CopyStringNotSpaces") { + +55 + gSticJsDocumt +<100> + gdoc +; + +57 +derlizeJs +( +doc +, " [ \"1234567\" ] "); + +59 +REQUIRE +( +JSON_ARRAY_SIZE +(1+ +JSON_STRING_SIZE +(8= +doc +. +memyUge +()); + +64 +SECTION +("Should clearhe JsonArray") { + +65 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(4)> + gdoc +; + +66  + gput +[] = "[1,2,3,4]"; + +68 +derlizeJs +( +doc +, +put +); + +69 +derlizeJs +( +doc +, "[]"); + +71 +JsAay + + gr + = +doc +. +as +(); + +72 +REQUIRE +( +r +. +size +() == 0); + +73 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(0)); + +76 +SECTION +("Array") { + +77 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(2)> + gdoc +; + +78  + gput +[] = "[1,2]"; + +80 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +81 +JsAay + + gr + = +doc +. +as +(); + +83 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +84 +REQUIRE +( +doc +. +is +< +JsAay +>()); + +85 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(2)); + +86 +REQUIRE +( +r +[0] == 1); + +87 +REQUIRE +( +r +[1] == 2); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp + +5  + #ARDUINOJSON_ENABLE_COMMENTS + 1 + + ) + +6  + ~ + +7  + ~ + +9  + ~ + +10  + ~ + +12 +TEST_CASE +("Filtering") { + +13  + sTeCa + { + +14 cڡ * + gput +; + +15 cڡ * + gfr +; + +16 +ut8_t + + gágLim +; + +17 +DerliziE + + gr +; + +18 cڡ * + gouut +; + +19 +size_t + + gmemyUge +; + +23 +TeCa + + gCas +[] = { + +28 +DerliziE +:: +Ok +, + +36 +DerliziE +:: +Ok +, + +44 +DerliziE +:: +Ok +, + +46 +JSON_OBJECT_SIZE +(1) + 16 + +52 +DerliziE +:: +Ok +, + +54 +JSON_OBJECT_SIZE +(0) + +61 +DerliziE +:: +Ok +, + +70 +DerliziE +:: +Ok +, + +79 +DerliziE +:: +Ok +, + +88 +DerliziE +:: +Ok +, + +97 +DerliziE +:: +Ok +, + +99 +JSON_OBJECT_SIZE +(1) + 8 + +106 +DerliziE +:: +Ok +, + +108 +JSON_OBJECT_SIZE +(1) + 8 + +115 +DerliziE +:: +Ok +, + +117 +JSON_OBJECT_SIZE +(1) + 8 + +124 +DerliziE +:: +Ok +, + +126 +JSON_OBJECT_SIZE +(1) + 8 + +133 +DerliziE +:: +Ok +, + +135 +JSON_OBJECT_SIZE +(1) + 8 + +142 +DerliziE +:: +Ok +, + +144 +JSON_OBJECT_SIZE +(1) + 8 + +151 +DerliziE +:: +Ok +, + +153 +JSON_OBJECT_SIZE +(1) + 8 + +160 +DerliziE +:: +Ok +, + +162 +JSON_OBJECT_SIZE +(1) + 8 + +169 +DerliziE +:: +Ok +, + +171 +JSON_OBJECT_SIZE +(1) + 8 + +178 +DerliziE +:: +Ok +, + +180 +JSON_OBJECT_SIZE +(1) + 8 + +187 +DerliziE +:: +Ok +, + +189 +JSON_OBJECT_SIZE +(1) + 8 + +196 +DerliziE +:: +Ok +, + +198 +JSON_OBJECT_SIZE +(1) + 8 + +205 +DerliziE +:: +Ok +, + +207 +JSON_OBJECT_SIZE +(1) + 8 + +213 +DerliziE +:: +Ok +, + +215 2 * +JSON_OBJECT_SIZE +(1) + 16 + +222 +DerliziE +:: +Ok +, + +224 +JSON_ARRAY_SIZE +(3) + +231 +DerliziE +:: +Ok +, + +233 +JSON_ARRAY_SIZE +(0) + +240 +DerliziE +:: +Ok +, + +242 +JSON_ARRAY_SIZE +(2+ 2 * +JSON_OBJECT_SIZE +(1) + 16 + +248 +DerliziE +:: +IncomeIut +, + +250 +JSON_ARRAY_SIZE +(0) + +256 +DerliziE +:: +IncomeIut +, + +258 +JSON_ARRAY_SIZE +(0) + +265 +DerliziE +:: +InvidIut +, + +267 +JSON_ARRAY_SIZE +(0) + +274 +DerliziE +:: +IncomeIut +, + +283 +DerliziE +:: +IncomeIut +, + +292 +DerliziE +:: +Ok +, + +301 +DerliziE +:: +Ok +, + +310 +DerliziE +:: +IncomeIut +, + +319 +DerliziE +:: +IncomeIut +, + +328 +DerliziE +:: +Ok +, + +337 +DerliziE +:: +Ok +, + +346 +DerliziE +:: +IncomeIut +, + +355 +DerliziE +:: +IncomeIut +, + +364 +DerliziE +:: +InvidIut +, + +373 +DerliziE +:: +IncomeIut +, + +382 +DerliziE +:: +InvidIut +, + +391 +DerliziE +:: +InvidIut +, + +400 +DerliziE +:: +TooDp +, + +409 +DerliziE +:: +TooDp +, + +418 +DerliziE +:: +TooDp +, + +420 +JSON_OBJECT_SIZE +(0) + +427 +DerliziE +:: +TooDp +, + +436 +DerliziE +:: +TooDp +, + +445 +DerliziE +:: +TooDp +, + +447 +JSON_ARRAY_SIZE +(0) + +454 +DerliziE +:: +IncomeIut +, + +463 +DerliziE +:: +InvidIut +, + +472 +DerliziE +:: +IncomeIut +, + +481 +DerliziE +:: +InvidIut +, + +490 +DerliziE +:: +InvidIut +, + +492 +JSON_ARRAY_SIZE +(0) + +499 +DerliziE +:: +IncomeIut +, + +501 +JSON_ARRAY_SIZE +(0) + +508 +DerliziE +:: +InvidIut +, + +510 +JSON_OBJECT_SIZE +(0) + +517 +DerliziE +:: +IncomeIut +, + +519 +JSON_OBJECT_SIZE +(0) + +526 +DerliziE +:: +InvidIut +, + +528 +JSON_OBJECT_SIZE +(0) + 8 + +535 +DerliziE +:: +IncomeIut +, + +537 +JSON_OBJECT_SIZE +(0) + 8 + +544 +DerliziE +:: +InvidIut +, + +546 +JSON_OBJECT_SIZE +(0) + +553 +DerliziE +:: +IncomeIut +, + +555 +JSON_OBJECT_SIZE +(0) + +562 +DerliziE +:: +Ok +, + +564 +JSON_OBJECT_SIZE +(0) + +571 +DerliziE +:: +InvidIut +, + +580 +DerliziE +:: +IncomeIut +, + +589 +DerliziE +:: +InvidIut +, + +598 +DerliziE +:: +IncomeIut +, + +607 +DerliziE +:: +InvidIut +, + +616 +DerliziE +:: +IncomeIut +, + +622  +size_t + + gi + = 0; i < ( + gCas +) / (testCases[0]); i++) { + +623 +CAPTURE +( +i +); + +625 +DymicJsDocumt + +fr +(256); + +626 +DymicJsDocumt + +doc +(256); + +627 + gTeCa +& + gtc + = +Cas +[ +i +]; + +629 +CAPTURE +( +tc +. +fr +); + +630 +REQUIRE +( +derlizeJs +( +fr +, +tc +.fr= +DerliziE +:: +Ok +); + +632 +CAPTURE +( +tc +. +put +); + +633 +CAPTURE +( +tc +. +ágLim +); + +634 +CHECK +( +derlizeJs +( +doc +, +tc +. +put +, +DerliziOi +:: +Fr +( +fr +), + +635 +DerliziOi +:: +NegLim +( + +636 +tc +. +ágLim +)=tc. +r +); + +638 +CHECK +( +doc +. +as +< +d +:: +rg +>(= +tc +. +ouut +); + +639 +CHECK +( +doc +. +memyUge +(= +tc +.memoryUsage); + +643 +TEST_CASE +("Overloads") { + +644 + gSticJsDocumt +<256> + gdoc +; + +645 + gSticJsDocumt +<256> + gfr +; + +647 +usg + +mea + + gDerliziOi +; + +651 +SECTION +("const char*, Filter") { + +652 +derlizeJs +( +doc +, "{}", +Fr +( +fr +)); + +655 +SECTION +("const char*, size_t, Filter") { + +656 +derlizeJs +( +doc +, "{}", 2, +Fr +( +fr +)); + +659 +SECTION +("const std::string&, Filter") { + +660 +derlizeJs +( +doc +, +d +:: +rg +("{}"), +Fr +( +fr +)); + +663 +SECTION +("std::istream&, Filter") { + +664 + gd +:: +rgam + +s +("{}"); + +665 +derlizeJs +( +doc +, +s +, +Fr +( +fr +)); + +668 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +669 +SECTION +("char[n], Filter") { + +670  + gi + = 4; + +671  + gv +[ +i +]; + +672 +ry +( +v +, "{}"); + +673 +derlizeJs +( +doc +, +v +, +Fr +( +fr +)); + +679 +SECTION +("const char*, Filter, NestingLimit") { + +680 +derlizeJs +( +doc +, "{}", +Fr +( +fr +), +NegLim +(5)); + +683 +SECTION +("const char*, size_t, Filter, NestingLimit") { + +684 +derlizeJs +( +doc +, "{}", 2, +Fr +( +fr +), +NegLim +(5)); + +687 +SECTION +("const std::string&, Filter, NestingLimit") { + +688 +derlizeJs +( +doc +, +d +:: +rg +("{}"), +Fr +( +fr +), +NegLim +(5)); + +691 +SECTION +("std::istream&, Filter, NestingLimit") { + +692 + gd +:: +rgam + +s +("{}"); + +693 +derlizeJs +( +doc +, +s +, +Fr +( +fr +), +NegLim +(5)); + +696 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +697 +SECTION +("char[n], Filter, NestingLimit") { + +698  + gi + = 4; + +699  + gv +[ +i +]; + +700 +ry +( +v +, "{}"); + +701 +derlizeJs +( +doc +, +v +, +Fr +( +fr +), +NegLim +(5)); + +707 +SECTION +("const char*, NestingLimit, Filter") { + +708 +derlizeJs +( +doc +, "{}", +NegLim +(5), +Fr +( +fr +)); + +711 +SECTION +("const char*, size_t, NestingLimit, Filter") { + +712 +derlizeJs +( +doc +, "{}", 2, +NegLim +(5), +Fr +( +fr +)); + +715 +SECTION +("const std::string&, NestingLimit, Filter") { + +716 +derlizeJs +( +doc +, +d +:: +rg +("{}"), +NegLim +(5), +Fr +( +fr +)); + +719 +SECTION +("std::istream&, NestingLimit, Filter") { + +720 + gd +:: +rgam + +s +("{}"); + +721 +derlizeJs +( +doc +, +s +, +NegLim +(5), +Fr +( +fr +)); + +724 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +725 +SECTION +("char[n], NestingLimit, Filter") { + +726  + gi + = 4; + +727  + gv +[ +i +]; + +728 +ry +( +v +, "{}"); + +729 +derlizeJs +( +doc +, +v +, +NegLim +(5), +Fr +( +fr +)); + +734 +TEST_CASE +("StringMover::reclaim()") { + +735 + gSticJsDocumt +<200> + gfr +; + +736 + gfr +["a"] = +ue +; + +737 + gfr +["c"] = +ue +; + +738  + gput +[] = "{\"a\":1,\"b\":2,\"c\":1}"; + +740 + gSticJsDocumt +<200> + gdoc +; + +741 +derlizeJs +( +doc +, +put +, +DerliziOi +:: +Fr +( +fr +)); + +743 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"a\":1,\"c\":1}"); + +745 +CHECK +( +put +[0] == 'a'); + +746 +CHECK +( +put +[1] == 0); + +747 +CHECK +( +put +[2] == 'c'); + +748 +CHECK +( +put +[3] == 0); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/incomplete_input.cpp + +5  + #ARDUINOJSON_DECODE_UNICODE + 1 + + ) + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("Truncated JSON input") { + +10 cڡ * + gCas +[] = {"\"hello", "\'hello", "'\\u", "'\\u00", "'\\u000", + +19 cڡ +size_t + + gCou + = ( +Cas +) / (testCases[0]); + +21 +DymicJsDocumt + +doc +(4096); + +23  +size_t + + gi + = 0; i < + gCou +; i++) { + +24 cڡ * + gput + = +Cas +[ +i +]; + +25 +CAPTURE +( +put +); + +26 +REQUIRE +( +derlizeJs +( +doc +, +put +) == + +27 +DerliziE +:: +IncomeIut +); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9  + ~"CuomRd.h +" + +11 +TEST_CASE +("deserializeJson(const std::string&)") { + +12 +DymicJsDocumt + +doc +(4096); + +14 +SECTION +("shouldccept const string") { + +15 cڡ + gd +:: +rg + +put +("[42]"); + +17 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +19 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +22 +SECTION +("shouldcceptemporary string") { + +23 +DerliziE + + gr + = +derlizeJs +( +doc +, +d +:: +rg +("[42]")); + +25 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +28 +SECTION +("should duplicate content") { + +29 + gd +:: +rg + +put +("[\"hello\"]"); + +31 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +32 + gput +[2] = 'X'; + +34 +JsAay + + gy + = +doc +. +as +(); + +35 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +36 +REQUIRE +( +d +:: +rg +("hlo"= +y +[0]); + +40 +TEST_CASE +("deserializeJson(std::istream&)") { + +41 +DymicJsDocumt + +doc +(4096); + +43 +SECTION +("array") { + +44 + gd +:: +irgam + +js +(" [ 42 ] "); + +46 +DerliziE + + gr + = +derlizeJs +( +doc +, +js +); + +47 +JsAay + + gr + = +doc +. +as +(); + +49 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +50 +REQUIRE +(1 = +r +. +size +()); + +51 +REQUIRE +(42 = +r +[0]); + +54 +SECTION +("object") { + +55 + gd +:: +irgam + +js +(" { hello : 'world' }"); + +57 +DerliziE + + gr + = +derlizeJs +( +doc +, +js +); + +58 +JsObje + + gobj + = +doc +. +as +(); + +60 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +61 +REQUIRE +(1 = +obj +. +size +()); + +62 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +65 +SECTION +("Shouldoteadfterhe closing brace ofnmpty object") { + +66 + gd +:: +irgam + +js +("{}123"); + +68 +derlizeJs +( +doc +, +js +); + +70 +REQUIRE +('1' =( +js +. +g +())); + +73 +SECTION +("Shouldoteadfterhe closing brace") { + +74 + gd +:: +irgam + +js +("{\"hello\":\"world\"}123"); + +76 +derlizeJs +( +doc +, +js +); + +78 +REQUIRE +('1' =( +js +. +g +())); + +81 +SECTION +("Shouldoteadfterhe closing bracket ofnmptyrray") { + +82 + gd +:: +irgam + +js +("[]123"); + +84 +derlizeJs +( +doc +, +js +); + +86 +REQUIRE +('1' =( +js +. +g +())); + +89 +SECTION +("Shouldoteadfterhe closing bracket") { + +90 + gd +:: +irgam + +js +("[\"hello\",\"world\"]123"); + +92 +derlizeJs +( +doc +, +js +); + +94 +REQUIRE +('1' =( +js +. +g +())); + +97 +SECTION +("Shouldoteadfterhe closing quote") { + +98 + gd +:: +irgam + +js +("\"hello\"123"); + +100 +derlizeJs +( +doc +, +js +); + +102 +REQUIRE +('1' =( +js +. +g +())); + +106 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +107 +TEST_CASE +("deserializeJson(VLA)") { + +108  + gi + = 9; + +109  + gv +[ +i +]; + +110 +ry +( +v +, "{\"a\":42}"); + +112 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1)> + gdoc +; + +113 +DerliziE + + gr + = +derlizeJs +( +doc +, +v +); + +115 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +119 +TEST_CASE +("deserializeJson(CustomReader)") { + +120 +DymicJsDocumt + +doc +(4096); + +121 +CuomRd + +ad +("[4,2]"); + +122 +DerliziE + + gr + = +derlizeJs +( +doc +, +ad +); + +124 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +125 +REQUIRE +( +doc +. +size +() == 2); + +126 +REQUIRE +( +doc +[0] == 4); + +127 +REQUIRE +( +doc +[1] == 2); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/invalid_input.cpp + +5  + #ARDUINOJSON_DECODE_UNICODE + 1 + + ) + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("Invalid JSON input") { + +10 cڡ * + gCas +[] = {"'\\u'", "'\\u000g'", "'\\u000'", "'\\u000G'", + +13 cڡ +size_t + + gCou + = ( +Cas +) / (testCases[0]); + +15 +DymicJsDocumt + +doc +(4096); + +17  +size_t + + gi + = 0; i < + gCou +; i++) { + +18 cڡ * + gput + = +Cas +[ +i +]; + +19 +CAPTURE +( +put +); + +20 +REQUIRE +( +derlizeJs +( +doc +, +put += +DerliziE +:: +InvidIut +); + +24 +TEST_CASE +("Invalid JSON inputhat shouldass") { + +25 cڡ * + gCas +[] = { + +33 cڡ +size_t + + gCou + = ( +Cas +) / (testCases[0]); + +35 +DymicJsDocumt + +doc +(4096); + +37  +size_t + + gi + = 0; i < + gCou +; i++) { + +38 cڡ * + gput + = +Cas +[ +i +]; + +39 +CAPTURE +( +put +); + +40 +REQUIRE +( +derlizeJs +( +doc +, +put += +DerliziE +:: +Ok +); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gCch +:: +Mchs +; + +10 +TEST_CASE +("deserializeJson(DynamicJsonDocument&)") { + +11 +DymicJsDocumt + +doc +(4096); + +13 +SECTION +("Edge cases") { + +14 +SECTION +("null char*") { + +15 +DerliziE + + gr + = +derlizeJs +( +doc +, +ic_ +<*>(0)); + +17 +REQUIRE +( +r + ! +DerliziE +:: +Ok +); + +20 +SECTION +("null const char*") { + +21 +DerliziE + + gr + = + +22 +derlizeJs +( +doc +, +ic_ +(0)); + +24 +REQUIRE +( +r + ! +DerliziE +:: +Ok +); + +27 +SECTION +("Empty input") { + +28 +DerliziE + + gr + = +derlizeJs +( +doc +, ""); + +30 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +33 +SECTION +("issue #628") { + +34 +DerliziE + + gr + = +derlizeJs +( +doc +, "null"); + +35 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +36 +REQUIRE +( +doc +. +is +<>(= +l +); + +39 +SECTION +("Garbage") { + +40 +DerliziE + + gr + = +derlizeJs +( +doc +, "%*$£¤"); + +42 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +46 +SECTION +("Booleans") { + +47 +SECTION +("True") { + +48 +DerliziE + + gr + = +derlizeJs +( +doc +, "true"); + +50 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +51 +REQUIRE +( +doc +. +is +< +bo +>()); + +52 +REQUIRE +( +doc +. +as +< +bo +>(= +ue +); + +55 +SECTION +("False") { + +56 +DerliziE + + gr + = +derlizeJs +( +doc +, "false"); + +58 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +59 +REQUIRE +( +doc +. +is +< +bo +>()); + +60 +REQUIRE +( +doc +. +as +< +bo +>(= +l +); + +64 +SECTION +("Prematureull-terminator") { + +65 +SECTION +("Inscape sequence") { + +66 +DerliziE + + gr + = +derlizeJs +( +doc +, "\"\\"); + +68 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +71 +SECTION +("In double quoted string") { + +72 +DerliziE + + gr + = +derlizeJs +( +doc +, "\"hello"); + +74 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +77 +SECTION +("In single quoted string") { + +78 +DerliziE + + gr + = +derlizeJs +( +doc +, "'hello"); + +80 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +84 +SECTION +("Prematurend of input") { + +85 +SECTION +("Inscape sequence") { + +86 +DerliziE + + gr + = +derlizeJs +( +doc +, "\"\\n\"", 2); + +88 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +91 +SECTION +("In double quoted string") { + +92 +DerliziE + + gr + = +derlizeJs +( +doc +, "\"hello\"", 6); + +94 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +97 +SECTION +("In single quoted string") { + +98 +DerliziE + + gr + = +derlizeJs +( +doc +, "'hello'", 6); + +100 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +104 +SECTION +("Should clearhe JsonVariant") { + +105 +derlizeJs +( +doc +, "[1,2,3]"); + +106 +derlizeJs +( +doc +, "{}"); + +108 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +109 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(0)); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp + +5  + ~ + +6  + ~ + +8  + #SHOULD_WORK +( +exessi + + `REQUIRE +( +DerliziE +:: +Ok + =exessi); + + ) + +9  + #SHOULD_FAIL +( +exessi +) \ + +10 + `REQUIRE +( +DerliziE +:: +TooDp + = +exessi +); + + ) + +12 +TEST_CASE +("JsonDeserializeresting") { + +13 +DymicJsDocumt + +doc +(4096); + +15 +SECTION +("Input = const char*") { + +16 +SECTION +("limit = 0") { + +17 + gDerliziOi +:: +NegLim + +ág +(0); + +18 +SHOULD_WORK +( +derlizeJs +( +doc +, "\"to\"", +ág +)); + +19 +SHOULD_WORK +( +derlizeJs +( +doc +, "123", +ág +)); + +20 +SHOULD_WORK +( +derlizeJs +( +doc +, "ue", +ág +)); + +21 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[]", +ág +)); + +22 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{}", +ág +)); + +23 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[\"to\"]", +ág +)); + +24 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{\"to\":1}", +ág +)); + +27 +SECTION +("limit = 1") { + +28 + gDerliziOi +:: +NegLim + +ág +(1); + +29 +SHOULD_WORK +( +derlizeJs +( +doc +, "[\"to\"]", +ág +)); + +30 +SHOULD_WORK +( +derlizeJs +( +doc +, "{\"to\":1}", +ág +)); + +31 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{\"to\":{}}", +ág +)); + +32 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{\"to\":[]}", +ág +)); + +33 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[[\"to\"]]", +ág +)); + +34 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[{\"to\":1}]", +ág +)); + +38 +SECTION +("char*nd size_t") { + +39 +SECTION +("limit = 0") { + +40 + gDerliziOi +:: +NegLim + +ág +(0); + +41 +SHOULD_WORK +( +derlizeJs +( +doc +, "\"to\"", 6, +ág +)); + +42 +SHOULD_WORK +( +derlizeJs +( +doc +, "123", 3, +ág +)); + +43 +SHOULD_WORK +( +derlizeJs +( +doc +, "ue", 4, +ág +)); + +44 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[]", 2, +ág +)); + +45 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{}", 2, +ág +)); + +46 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[\"to\"]", 8, +ág +)); + +47 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{\"to\":1}", 10, +ág +)); + +50 +SECTION +("limit = 1") { + +51 + gDerliziOi +:: +NegLim + +ág +(1); + +52 +SHOULD_WORK +( +derlizeJs +( +doc +, "[\"to\"]", 8, +ág +)); + +53 +SHOULD_WORK +( +derlizeJs +( +doc +, "{\"to\":1}", 10, +ág +)); + +54 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{\"to\":{}}", 11, +ág +)); + +55 +SHOULD_FAIL +( +derlizeJs +( +doc +, "{\"to\":[]}", 11, +ág +)); + +56 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[[\"to\"]]", 10, +ág +)); + +57 +SHOULD_FAIL +( +derlizeJs +( +doc +, "[{\"to\":1}]", 12, +ág +)); + +61 +SECTION +("Input = std::string") { + +62 +SECTION +("limit = 0") { + +63 + gDerliziOi +:: +NegLim + +ág +(0); + +64 +SHOULD_WORK +( +derlizeJs +( +doc +, +d +:: +rg +("\"to\""), +ág +)); + +65 +SHOULD_WORK +( +derlizeJs +( +doc +, +d +:: +rg +("123"), +ág +)); + +66 +SHOULD_WORK +( +derlizeJs +( +doc +, +d +:: +rg +("ue"), +ág +)); + +67 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("[]"), +ág +)); + +68 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("{}"), +ág +)); + +69 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("[\"to\"]"), +ág +)); + +70 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("{\"to\":1}"), +ág +)); + +73 +SECTION +("limit = 1") { + +74 + gDerliziOi +:: +NegLim + +ág +(1); + +75 +SHOULD_WORK +( +derlizeJs +( +doc +, +d +:: +rg +("[\"to\"]"), +ág +)); + +76 +SHOULD_WORK +( +derlizeJs +( +doc +, +d +:: +rg +("{\"to\":1}"), +ág +)); + +77 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("{\"to\":{}}"), +ág +)); + +78 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("{\"to\":[]}"), +ág +)); + +79 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("[[\"to\"]]"), +ág +)); + +80 +SHOULD_FAIL +( +derlizeJs +( +doc +, +d +:: +rg +("[{\"to\":1}]"), +ág +)); + +84 +SECTION +("Input = std::istream") { + +85 +SECTION +("limit = 0") { + +86 + gDerliziOi +:: +NegLim + +ág +(0); + +87 + gd +:: +irgam + +good +("true"); + +88 + gd +:: +irgam + +bad +("[]"); + +89 +SHOULD_WORK +( +derlizeJs +( +doc +, +good +, +ág +)); + +90 +SHOULD_FAIL +( +derlizeJs +( +doc +, +bad +, +ág +)); + +93 +SECTION +("limit = 1") { + +94 + gDerliziOi +:: +NegLim + +ág +(1); + +95 + gd +:: +irgam + +good +("[\"toto\"]"); + +96 + gd +:: +irgam + +bad +("{\"toto\":{}}"); + +97 +SHOULD_WORK +( +derlizeJs +( +doc +, +good +, +ág +)); + +98 +SHOULD_FAIL +( +derlizeJs +( +doc +, +bad +, +ág +)); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/number.cpp + +5  + #ARDUINOJSON_USE_LONG_LONG + 0 + + ) + +6  + #ARDUINOJSON_ENABLE_NAN + 1 + + ) + +7  + #ARDUINOJSON_ENABLE_INFINITY + 1 + + ) + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gmy + { + +14 +usg + + gARDUINOJSON_NAMESPACE +:: +isf +; + +15 +usg + + gARDUINOJSON_NAMESPACE +:: +i +; + +18 +TEST_CASE +("deserializen integer") { + +19 +DymicJsDocumt + +doc +(4096); + +21 +SECTION +("Integer") { + +22 +SECTION +("0") { + +23 +DerliziE + + gr + = +derlizeJs +( +doc +, "0"); + +24 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +25 +REQUIRE +( +doc +. +is +<>(= +ue +); + +26 +REQUIRE +( +doc +. +as +<>() == 0); + +27 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "0"); + +30 +SECTION +("Negative") { + +31 +DerliziE + + gr + = +derlizeJs +( +doc +, "-42"); + +33 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +34 +REQUIRE +( +doc +. +is +<>()); + +35 +REQUIRE_FALSE +( +doc +. +is +< +bo +>()); + +36 +REQUIRE +( +doc +. +as +<>() == -42); + +39 #i +LONG_MAX + == 2147483647 + +40 +SECTION +("LONG_MAX") { + +41 +DerliziE + + gr + = +derlizeJs +( +doc +, "2147483647"); + +43 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +44 +REQUIRE +( +doc +. +is +<>(= +ue +); + +45 +REQUIRE +( +doc +. +as +<>(= +LONG_MAX +); + +48 +SECTION +("LONG_MAX + 1") { + +49 +DerliziE + + gr + = +derlizeJs +( +doc +, "2147483648"); + +51 +CAPTURE +( +LONG_MIN +); + +52 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +53 +REQUIRE +( +doc +. +is +<>(= +l +); + +54 +REQUIRE +( +doc +. +is +<>(= +ue +); + +58 #i +LONG_MIN + == -2147483648 + +59 +SECTION +("LONG_MIN") { + +60 +DerliziE + + gr + = +derlizeJs +( +doc +, "-2147483648"); + +61 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +62 +REQUIRE +( +doc +. +is +<>(= +ue +); + +63 +REQUIRE +( +doc +. +as +<>(= +LONG_MIN +); + +66 +SECTION +("LONG_MIN - 1") { + +67 +DerliziE + + gr + = +derlizeJs +( +doc +, "-2147483649"); + +69 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +70 +REQUIRE +( +doc +. +is +<>(= +l +); + +71 +REQUIRE +( +doc +. +is +<>(= +ue +); + +75 #i +ULONG_MAX + == 4294967295 + +76 +SECTION +("ULONG_MAX") { + +77 +DerliziE + + gr + = +derlizeJs +( +doc +, "4294967295"); + +79 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +80 +REQUIRE +( +doc +. +is +<>(= +ue +); + +81 +REQUIRE +( +doc +. +as +<>(= +ULONG_MAX +); + +82 +REQUIRE +( +doc +. +is +<>(= +l +); + +85 +SECTION +("ULONG_MAX + 1") { + +86 +DerliziE + + gr + = +derlizeJs +( +doc +, "4294967296"); + +88 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +89 +REQUIRE +( +doc +. +is +<>(= +l +); + +90 +REQUIRE +( +doc +. +is +<>(= +ue +); + +95 +SECTION +("Floats") { + +96 +SECTION +("Double") { + +97 +DerliziE + + gr + = +derlizeJs +( +doc +, "-1.23e+4"); + +99 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +100 +REQUIRE_FALSE +( +doc +. +is +<>()); + +101 +REQUIRE +( +doc +. +is +<>()); + +102 +REQUIRE +( +doc +. +as +<>(= +Arox +(-1.23e+4)); + +105 +SECTION +("NaN") { + +106 +DerliziE + + gr + = +derlizeJs +( +doc +, "NaN"); + +107 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +108 +REQUIRE +( +doc +. +is +<>(= +ue +); + +109 +REQUIRE +( +my +:: +i +( +doc +. +as +<>())); + +112 +SECTION +("Infinity") { + +113 +DerliziE + + gr + = +derlizeJs +( +doc +, "Infinity"); + +114 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +115 +REQUIRE +( +doc +. +is +<>(= +ue +); + +116 +REQUIRE +( +my +:: +isf +( +doc +. +as +<>())); + +119 +SECTION +("+Infinity") { + +120 +DerliziE + + gr + = +derlizeJs +( +doc +, "+Infinity"); + +121 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +122 +REQUIRE +( +doc +. +is +<>(= +ue +); + +123 +REQUIRE +( +my +:: +isf +( +doc +. +as +<>())); + +126 +SECTION +("-Infinity") { + +127 +DerliziE + + gr + = +derlizeJs +( +doc +, "-Infinity"); + +128 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +129 +REQUIRE +( +doc +. +is +<>(= +ue +); + +130 +REQUIRE +( +my +:: +isf +( +doc +. +as +<>())); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("deserialize JSON object") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("Anmpty object") { + +12 +DerliziE + + gr + = +derlizeJs +( +doc +, "{}"); + +13 +JsObje + + gobj + = +doc +. +as +(); + +15 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +16 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +17 +REQUIRE +( +obj +. +size +() == 0); + +20 +SECTION +("Quotes") { + +21 +SECTION +("Double quotes") { + +22 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"key\":\"value\"}"); + +23 +JsObje + + gobj + = +doc +. +as +(); + +25 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +26 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +27 +REQUIRE +( +obj +. +size +() == 1); + +28 +REQUIRE +( +obj +["key"] == "value"); + +31 +SECTION +("Single quotes") { + +32 +DerliziE + + gr + = +derlizeJs +( +doc +, "{'key':'value'}"); + +33 +JsObje + + gobj + = +doc +. +as +(); + +35 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +36 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +37 +REQUIRE +( +obj +. +size +() == 1); + +38 +REQUIRE +( +obj +["key"] == "value"); + +41 +SECTION +("No quotes") { + +42 +DerliziE + + gr + = +derlizeJs +( +doc +, "{key:'value'}"); + +43 +JsObje + + gobj + = +doc +. +as +(); + +45 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +46 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +47 +REQUIRE +( +obj +. +size +() == 1); + +48 +REQUIRE +( +obj +["key"] == "value"); + +51 +SECTION +("No quotes,llow underscore in key") { + +52 +DerliziE + + gr + = +derlizeJs +( +doc +, "{_k_e_y_:42}"); + +53 +JsObje + + gobj + = +doc +. +as +(); + +55 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +56 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +57 +REQUIRE +( +obj +. +size +() == 1); + +58 +REQUIRE +( +obj +["_k_e_y_"] == 42); + +62 +SECTION +("Spaces") { + +63 +SECTION +("Beforehe key") { + +64 +DerliziE + + gr + = +derlizeJs +( +doc +, "{ \"key\":\"value\"}"); + +65 +JsObje + + gobj + = +doc +. +as +(); + +67 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +68 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +69 +REQUIRE +( +obj +. +size +() == 1); + +70 +REQUIRE +( +obj +["key"] == "value"); + +73 +SECTION +("Afterhe key") { + +74 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"key\" :\"value\"}"); + +75 +JsObje + + gobj + = +doc +. +as +(); + +77 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +78 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +79 +REQUIRE +( +obj +. +size +() == 1); + +80 +REQUIRE +( +obj +["key"] == "value"); + +83 +SECTION +("Beforehe value") { + +84 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"key\": \"value\"}"); + +85 +JsObje + + gobj + = +doc +. +as +(); + +87 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +88 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +89 +REQUIRE +( +obj +. +size +() == 1); + +90 +REQUIRE +( +obj +["key"] == "value"); + +93 +SECTION +("Afterhe value") { + +94 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"key\":\"value\" }"); + +95 +JsObje + + gobj + = +doc +. +as +(); + +97 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +98 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +99 +REQUIRE +( +obj +. +size +() == 1); + +100 +REQUIRE +( +obj +["key"] == "value"); + +103 +SECTION +("Beforehe colon") { + +104 +DerliziE + + gr + = + +105 +derlizeJs +( +doc +, "{\"key1\":\"value1\" ,\"key2\":\"value2\"}"); + +106 +JsObje + + gobj + = +doc +. +as +(); + +108 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +109 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +110 +REQUIRE +( +obj +. +size +() == 2); + +111 +REQUIRE +( +obj +["key1"] == "value1"); + +112 +REQUIRE +( +obj +["key2"] == "value2"); + +115 +SECTION +("Afterhe colon") { + +116 +DerliziE + + gr + = + +117 +derlizeJs +( +doc +, "{\"key1\":\"value1\" ,\"key2\":\"value2\"}"); + +118 +JsObje + + gobj + = +doc +. +as +(); + +120 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +121 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +122 +REQUIRE +( +obj +. +size +() == 2); + +123 +REQUIRE +( +obj +["key1"] == "value1"); + +124 +REQUIRE +( +obj +["key2"] == "value2"); + +128 +SECTION +("Valuesypes") { + +129 +SECTION +("String") { + +130 +DerliziE + + gr + = + +131 +derlizeJs +( +doc +, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); + +132 +JsObje + + gobj + = +doc +. +as +(); + +134 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +135 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +136 +REQUIRE +( +obj +. +size +() == 2); + +137 +REQUIRE +( +obj +["key1"] == "value1"); + +138 +REQUIRE +( +obj +["key2"] == "value2"); + +141 +SECTION +("Integer") { + +142 +DerliziE + + gr + = + +143 +derlizeJs +( +doc +, "{\"key1\":42,\"key2\":-42}"); + +144 +JsObje + + gobj + = +doc +. +as +(); + +146 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +147 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +148 +REQUIRE +( +obj +. +size +() == 2); + +149 +REQUIRE +( +obj +["key1"] == 42); + +150 +REQUIRE +( +obj +["key2"] == -42); + +153 +SECTION +("Double") { + +154 +DerliziE + + gr + = + +155 +derlizeJs +( +doc +, "{\"key1\":12.345,\"key2\":-7E89}"); + +156 +JsObje + + gobj + = +doc +. +as +(); + +158 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +159 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +160 +REQUIRE +( +obj +. +size +() == 2); + +161 +REQUIRE +( +obj +["key1"] == 12.345); + +162 +REQUIRE +( +obj +["key2"] == -7E89); + +165 +SECTION +("Booleans") { + +166 +DerliziE + + gr + = + +167 +derlizeJs +( +doc +, "{\"key1\":true,\"key2\":false}"); + +168 +JsObje + + gobj + = +doc +. +as +(); + +170 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +171 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +172 +REQUIRE +( +obj +. +size +() == 2); + +173 +REQUIRE +( +obj +["key1"] = +ue +); + +174 +REQUIRE +( +obj +["key2"] = +l +); + +177 +SECTION +("Null") { + +178 +DerliziE + + gr + = + +179 +derlizeJs +( +doc +, "{\"key1\":null,\"key2\":null}"); + +180 +JsObje + + gobj + = +doc +. +as +(); + +182 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +183 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +184 +REQUIRE +( +obj +. +size +() == 2); + +185 +REQUIRE +( +obj +["key1"]. +as +<*>() == 0); + +186 +REQUIRE +( +obj +["key2"]. +as +<*>() == 0); + +189 +SECTION +("Array") { + +190  + gjsSg +[] = " { \"ab\" : [ 1 , 2 ] , \"cd\" : [ 3 , 4 ] } "; + +192 +DerliziE + + gr + = +derlizeJs +( +doc +, +jsSg +); + +193 +JsObje + + gobj + = +doc +. +as +(); + +195 +JsAay + + gy1 + = +obj +["ab"]; + +196 cڡ +JsAay + + gy2 + = +obj +["cd"]; + +197 +JsAay + + gy3 + = +obj +["ef"]; + +199 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +201 +REQUIRE +( +y1 +. +isNu +(= +l +); + +202 +REQUIRE +( +y2 +. +isNu +(= +l +); + +203 +REQUIRE +( +y3 +. +isNu +(= +ue +); + +205 +REQUIRE +(2 = +y1 +. +size +()); + +206 +REQUIRE +(2 = +y2 +. +size +()); + +207 +REQUIRE +(0 = +y3 +. +size +()); + +209 +REQUIRE +(1 = +y1 +[0]. +as +<>()); + +210 +REQUIRE +(2 = +y1 +[1]. +as +<>()); + +212 +REQUIRE +(3 = +y2 +[0]. +as +<>()); + +213 +REQUIRE +(4 = +y2 +[1]. +as +<>()); + +215 +REQUIRE +(0 = +y3 +[0]. +as +<>()); + +219 +SECTION +("Prematureullerminator") { + +220 +SECTION +("After opening brace") { + +221 +DerliziE + + gr + = +derlizeJs +( +doc +, "{"); + +223 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +226 +SECTION +("After key") { + +227 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\""); + +229 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +232 +SECTION +("After colon") { + +233 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\":"); + +235 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +238 +SECTION +("After value") { + +239 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\":\"world\""); + +241 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +244 +SECTION +("After comma") { + +245 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\":\"world\","); + +247 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +251 +SECTION +("Misc") { + +252 +SECTION +("A quoted key without value") { + +253 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"key\"}"); + +255 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +258 +SECTION +("Aon-quoted key without value") { + +259 +DerliziE + + gr + = +derlizeJs +( +doc +, "{key}"); + +261 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +264 +SECTION +("A dangling comma") { + +265 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"key1\":\"value1\",}"); + +267 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +270 +SECTION +("nulls key") { + +271 +DerliziE + + gr + = +derlizeJs +( +doc +, "{null:\"value\"}"); + +273 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +276 +SECTION +("Repeated key") { + +277 +DerliziE + + gr + = +derlizeJs +( +doc +, "{a:{b:{c:1}},a:2}"); + +279 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +280 +REQUIRE +( +doc +["a"] == 2); + +284 +SECTION +("Should clearhe JsonObject") { + +285 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +286 +derlizeJs +( +doc +, "{}"); + +287 +JsObje + + gobj + = +doc +. +as +(); + +289 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +290 +REQUIRE +( +obj +. +size +() == 0); + +291 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(0)); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object_static.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("deserialize JSON object with StaticJsonDocument") { + +9 +SECTION +("BufferOfTheRightSizeForEmptyObject") { + +10 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(0)> + gdoc +; + +11  + gput +[] = "{}"; + +13 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +15 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +18 +SECTION +("TooSmallBufferForObjectWithOneValue") { + +19 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(0)> + gdoc +; + +20  + gput +[] = "{\"a\":1}"; + +22 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +24 +REQUIRE +( +r + = +DerliziE +:: +NoMemy +); + +27 +SECTION +("BufferOfTheRightSizeForObjectWithOneValue") { + +28 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1)> + gdoc +; + +29  + gput +[] = "{\"a\":1}"; + +31 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +33 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +36 +SECTION +("TooSmallBufferForObjectWithNestedObject") { + +37 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(0+ +JSON_ARRAY_SIZE +(0)> + gdoc +; + +38  + gput +[] = "{\"a\":[]}"; + +40 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +42 +REQUIRE +( +r + = +DerliziE +:: +NoMemy +); + +45 +SECTION +("BufferOfTheRightSizeForObjectWithNestedObject") { + +46 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1+ +JSON_ARRAY_SIZE +(0)> + gdoc +; + +47  + gput +[] = "{\"a\":[]}"; + +49 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +51 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +54 +SECTION +("Should clearhe JsonObject") { + +55 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1)> + gdoc +; + +56  + gput +[] = "{\"hello\":\"world\"}"; + +58 +derlizeJs +( +doc +, +put +); + +59 +derlizeJs +( +doc +, "{}"); + +61 +REQUIRE +( +doc +. +as +< +JsObje +>(). +size +() == 0); + +62 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(0)); + + @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/string.cpp + +5  + #ARDUINOJSON_DECODE_UNICODE + 1 + + ) + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("Valid JSON strings value") { + +10  + sTeCa + { + +11 cڡ * + gput +; + +12 cڡ * + gexedOuut +; + +15 +TeCa + + gCas +[] = { + +36 cڡ +size_t + + gCou + = ( +Cas +) / (testCases[0]); + +38 +DymicJsDocumt + +doc +(4096); + +40  +size_t + + gi + = 0; i < + gCou +; i++) { + +41 cڡ + gTeCa +& + gCa + = +Cas +[ +i +]; + +42 +CAPTURE +( +Ca +. +put +); + +43 +DerliziE + + gr + = +derlizeJs +( +doc +, +Ca +. +put +); + +44 +CHECK +( +r + = +DerliziE +:: +Ok +); + +45 +CHECK +( +doc +. +as +< +d +:: +rg +>(= +Ca +. +exedOuut +); + +49 +TEST_CASE +("Truncated JSON string") { + +50 cڡ * + gCas +[] = {"\"hello", "\'hello", "'\\u", "'\\u00", "'\\u000"}; + +51 cڡ +size_t + + gCou + = ( +Cas +) / (testCases[0]); + +53 +DymicJsDocumt + +doc +(4096); + +55  +size_t + + gi + = 0; i < + gCou +; i++) { + +56 cڡ * + gput + = +Cas +[ +i +]; + +57 +CAPTURE +( +put +); + +58 +REQUIRE +( +derlizeJs +( +doc +, +put +) == + +59 +DerliziE +:: +IncomeIut +); + +63 +TEST_CASE +("Invalid JSON string") { + +64 cڡ * + gCas +[] = {"'\\u'", "'\\u000g'", "'\\u000'", + +66 cڡ +size_t + + gCou + = ( +Cas +) / (testCases[0]); + +68 +DymicJsDocumt + +doc +(4096); + +70  +size_t + + gi + = 0; i < + gCou +; i++) { + +71 cڡ * + gput + = +Cas +[ +i +]; + +72 +CAPTURE +( +put +); + +73 +REQUIRE +( +derlizeJs +( +doc +, +put += +DerliziE +:: +InvidIut +); + +77 +TEST_CASE +("Notnoughoomo duplicatehe string") { + +78 +DymicJsDocumt + +doc +( +JSON_OBJECT_SIZE +(0)); + +80 +SECTION +("Quoted string") { + +81 +REQUIRE +( +derlizeJs +( +doc +, "{\"example\":1}") == + +82 +DerliziE +:: +NoMemy +); + +85 +SECTION +("Non-quoted string") { + +86 +REQUIRE +( +derlizeJs +( +doc +, "{example:1}") == + +87 +DerliziE +:: +NoMemy +); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/BasicJsonDocument.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +8  + ~ + +10 +usg + + gARDUINOJSON_NAMESPACE +:: +addPaddg +; + +11 +usg + + gARDUINOJSON_NAMESPACE +:: +move +; + +13 as + cSpygAot + { + +14 + mpublic +: + +15 + $SpygAot +(cڡ +SpygAot +& +c +: + $_log +( +c +. +_log +) {} + +16 + $SpygAot +( +d +:: +oam +& +log +: + $_log +( +log +{ + } +} + +18 * + $lo +( +size_t + +n +) { + +19 +_log + << "A" << +n +; + +20  + `mloc +( +n +); + +21 + } +} + +22  + $do +(* +p +) { + +23 +_log + << "F"; + +24 + ` +( +p +); + +25 + } +} + +27 + give +: + +28 +SpygAot +& +ݔ +=(cڡ SpygAot& +c +); + +30 + gd +:: +oam +& +_log +; + +33 as + cCڌbAot + { + +34 + mpublic +: + +35 + $CڌbAot +(: + $_abd +( +ue +) {} + +37 * + $lo +( +size_t + +n +) { + +38  +_abd + ? + `mloc +( +n +) : 0; + +39 + } +} + +41  + $do +(* +p +) { + +42 + ` +( +p +); + +43 + } +} + +45  + $dib +() { + +46 +_abd + = +l +; + +47 + } +} + +49 + give +: + +50 +bo + +_abd +; + +53 +TEST_CASE +("BasicJsonDocument") { + +54 + gd +:: +rgam + +log +; + +56 +SECTION +("Construct/Destruct") { + +57 { + gBasicJsDocumt +< + gSpygAot +> +doc +(4096, +log +); } + +58 +REQUIRE +( +log +. +r +() == "A4096F"); + +61 +SECTION +("Copy construct") { + +63 + gBasicJsDocumt +< + gSpygAot +> +doc1 +(4096, +log +); + +64 + gdoc1 +. +t +( +d +:: +rg +("The size ofhis string is 32!!")); + +66 + gBasicJsDocumt +< + gSpygAot +> +doc2 +( +doc1 +); + +68 +REQUIRE +( +doc1 +. +as +< +d +:: +rg +>() == "The size ofhis string is 32!!"); + +69 +REQUIRE +( +doc2 +. +as +< +d +:: +rg +>() == "The size ofhis string is 32!!"); + +70 +REQUIRE +( +doc2 +. +cy +() == 4096); + +72 +REQUIRE +( +log +. +r +() == "A4096A4096FF"); + +75 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +76 +SECTION +("Move construct") { + +78 + gBasicJsDocumt +< + gSpygAot +> +doc1 +(4096, +log +); + +79 + gdoc1 +. +t +( +d +:: +rg +("The size ofhis string is 32!!")); + +81 + gBasicJsDocumt +< + gSpygAot +> +doc2 +( +move +( +doc1 +)); + +83 +REQUIRE +( +doc2 +. +as +< +d +:: +rg +>() == "The size ofhis string is 32!!"); + +84 +REQUIRE +( +doc1 +. +as +< +d +:: +rg +>() == "null"); + +85 +REQUIRE +( +doc1 +. +cy +() == 0); + +86 +REQUIRE +( +doc2 +. +cy +() == 4096); + +88 +REQUIRE +( +log +. +r +() == "A4096F"); + +92 +SECTION +("Copyssign") { + +94 + gBasicJsDocumt +< + gSpygAot +> +doc1 +(4096, +log +); + +95 + gdoc1 +. +t +( +d +:: +rg +("The size ofhis string is 32!!")); + +96 + gBasicJsDocumt +< + gSpygAot +> +doc2 +(8, +log +); + +98 + gdoc2 + = +doc1 +; + +100 +REQUIRE +( +doc1 +. +as +< +d +:: +rg +>() == "The size ofhis string is 32!!"); + +101 +REQUIRE +( +doc2 +. +as +< +d +:: +rg +>() == "The size ofhis string is 32!!"); + +102 +REQUIRE +( +doc2 +. +cy +() == 4096); + +104 +REQUIRE +( +log +. +r +() == "A4096A8FA4096FF"); + +107 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +108 +SECTION +("Movessign") { + +110 + gBasicJsDocumt +< + gSpygAot +> +doc1 +(4096, +log +); + +111 + gdoc1 +. +t +( +d +:: +rg +("The size ofhis string is 32!!")); + +112 + gBasicJsDocumt +< + gSpygAot +> +doc2 +(8, +log +); + +114 + gdoc2 + = +move +( +doc1 +); + +116 +REQUIRE +( +doc2 +. +as +< +d +:: +rg +>() == "The size ofhis string is 32!!"); + +117 +REQUIRE +( +doc1 +. +as +< +d +:: +rg +>() == "null"); + +118 +REQUIRE +( +doc1 +. +cy +() == 0); + +119 +REQUIRE +( +doc2 +. +cy +() == 4096); + +121 +REQUIRE +( +log +. +r +() == "A4096A8FF"); + +125 +SECTION +("garbageCollect()") { + +126 + gBasicJsDocumt +< + gCڌbAot +> +doc +(4096); + +128 +SECTION +("whenllocation succeeds") { + +129 +derlizeJs +( +doc +, "{\"blanket\":1,\"dancing\":2}"); + +130 +REQUIRE +( +doc +. +cy +() == 4096); + +131 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(2) + 16); + +132 + gdoc +. +move +("blanket"); + +134 +bo + + gsu + = +doc +. +gbageC +(); + +136 +REQUIRE +( +su + = +ue +); + +137 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(1) + 8); + +138 +REQUIRE +( +doc +. +cy +() == 4096); + +139 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"dancing\":2}"); + +142 +SECTION +("whenllocation fails") { + +143 +derlizeJs +( +doc +, "{\"blanket\":1,\"dancing\":2}"); + +144 +REQUIRE +( +doc +. +cy +() == 4096); + +145 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(2) + 16); + +146 + gdoc +. +move +("blanket"); + +147 + gdoc +. +lot +(). +dib +(); + +149 +bo + + gsu + = +doc +. +gbageC +(); + +151 +REQUIRE +( +su + = +l +); + +152 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(2) + 16); + +153 +REQUIRE +( +doc +. +cy +() == 4096); + +154 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"dancing\":2}"); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/DynamicJsonDocument.cpp + +5  + ~ + +6  + ~ + +8 +usg + + gARDUINOJSON_NAMESPACE +:: +addPaddg +; + +10  + $REQUIRE_JSON +( +JsDocumt +& +doc +, cڡ +d +:: +rg +& +exed +) { + +11 +d +:: +rg + +js +; + +12 + `rlizeJs +( +doc +, +js +); + +13 + `REQUIRE +( +js + = +exed +); + +14 + } +} + +16 +TEST_CASE +("DynamicJsonDocument") { + +17 +DymicJsDocumt + +doc +(4096); + +19 +SECTION +("serializeJson()") { + +20 +JsObje + + gobj + = +doc +. +to +(); + +21 + gobj +["hello"] = "world"; + +23 + gd +:: +rg + +js +; + +24 +rlizeJs +( +doc +, +js +); + +26 +REQUIRE +( +js + == "{\"hello\":\"world\"}"); + +29 +SECTION +("memoryUsage()") { + +30 +SECTION +("startst zero") { + +31 +REQUIRE +( +doc +. +memyUge +() == 0); + +34 +SECTION +("JSON_ARRAY_SIZE(0)") { + +35 + gdoc +. + gto +< + gJsAay +>(); + +36 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(0)); + +39 +SECTION +("JSON_ARRAY_SIZE(1)") { + +40 + gdoc +. + gto +< + gJsAay +>(). +add +(42); + +41 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(1)); + +44 +SECTION +("JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(0)") { + +45 + gdoc +. + gto +< + gJsAay +>(). +NeedAay +(); + +46 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(1) + JSON_ARRAY_SIZE(0)); + +50 +SECTION +("capacity()") { + +51 +SECTION +("matches constructorrgument") { + +52 +DymicJsDocumt + +doc2 +(256); + +53 +REQUIRE +( +doc2 +. +cy +() == 256); + +56 +SECTION +("rounds up constructorrgument") { + +57 +DymicJsDocumt + +doc2 +(253); + +58 +REQUIRE +( +doc2 +. +cy +() == 256); + +62 +SECTION +("memoryUsage()") { + +63 +SECTION +("Increasesfterdding valueorray") { + +64 +JsAay + + gr + = +doc +. +to +(); + +66 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(0)); + +67 + gr +. +add +(42); + +68 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(1)); + +69 + gr +. +add +(43); + +70 +REQUIRE +( +doc +. +memyUge +(= +JSON_ARRAY_SIZE +(2)); + +73 +SECTION +("Increasesfterdding valueo object") { + +74 +JsObje + + gobj + = +doc +. +to +(); + +76 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(0)); + +77 + gobj +["a"] = 1; + +78 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(1)); + +79 + gobj +["b"] = 2; + +80 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(2)); + +85 +TEST_CASE +("DynamicJsonDocument constructor") { + +86 +SECTION +("Copy constructor") { + +87 +DymicJsDocumt + +doc1 +(1234); + +88 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +90 +DymicJsDocumt + + gdoc2 + = +doc1 +; + +92 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +94 +REQUIRE +( +doc2 +. +cy +(= +doc1 +.capacity()); + +97 +SECTION +("Construct from StaticJsonDocument") { + +98 + gSticJsDocumt +<200> + gdoc1 +; + +99 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +101 +DymicJsDocumt + + gdoc2 + = +doc1 +; + +103 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +104 +REQUIRE +( +doc2 +. +cy +(= +doc1 +.capacity()); + +107 +SECTION +("Construct from JsonObject") { + +108 + gSticJsDocumt +<200> + gdoc1 +; + +109 +JsObje + + gobj + = +doc1 +. +to +(); + +110 + gobj +["hello"] = "world"; + +112 +DymicJsDocumt + + gdoc2 + = +obj +; + +114 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +115 +REQUIRE +( +doc2 +. +cy +(= +addPaddg +( +doc1 +. +memyUge +())); + +118 +SECTION +("Construct from JsonArray") { + +119 + gSticJsDocumt +<200> + gdoc1 +; + +120 +JsAay + + gr + = +doc1 +. +to +(); + +121 + gr +. +add +("hello"); + +123 +DymicJsDocumt + + gdoc2 + = +r +; + +125 +REQUIRE_JSON +( +doc2 +, "[\"hello\"]"); + +126 +REQUIRE +( +doc2 +. +cy +(= +addPaddg +( +doc1 +. +memyUge +())); + +129 +SECTION +("Construct from JsonVariant") { + +130 + gSticJsDocumt +<200> + gdoc1 +; + +131 +derlizeJs +( +doc1 +, "42"); + +133 +DymicJsDocumt + + gdoc2 + = +doc1 +. +as +< +JsV +>(); + +135 +REQUIRE_JSON +( +doc2 +, "42"); + +136 +REQUIRE +( +doc2 +. +cy +(= +addPaddg +( +doc1 +. +memyUge +())); + +140 +TEST_CASE +("DynamicJsonDocumentssignment") { + +141 +SECTION +("Copyssignmentreserveshe buffer when capacity is sufficient") { + +142 +DymicJsDocumt + +doc1 +(1234); + +143 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +145 +DymicJsDocumt + +doc2 +( +doc1 +. +cy +()); + +146 + gdoc2 + = +doc1 +; + +148 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +149 +REQUIRE +( +doc2 +. +cy +(= +doc1 +.capacity()); + +152 +SECTION +("Copyssignmentealloche buffer when capacity is insufficient") { + +153 +DymicJsDocumt + +doc1 +(1234); + +154 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +155 +DymicJsDocumt + +doc2 +(8); + +157 +REQUIRE +( +doc2 +. +cy +(< +doc1 +. +memyUge +()); + +158 + gdoc2 + = +doc1 +; + +159 +REQUIRE +( +doc2 +. +cy +(> +doc1 +. +memyUge +()); + +161 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +164 +SECTION +("Assign from StaticJsonDocument") { + +165 + gSticJsDocumt +<200> + gdoc1 +; + +166 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +167 +DymicJsDocumt + +doc2 +(4096); + +168 + gdoc2 +. + gto +< + gJsV +>(). +t +(666); + +170 + gdoc2 + = +doc1 +; + +172 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +175 +SECTION +("Assign from JsonObject") { + +176 + gSticJsDocumt +<200> + gdoc1 +; + +177 +JsObje + + gobj + = +doc1 +. +to +(); + +178 + gobj +["hello"] = "world"; + +180 +DymicJsDocumt + +doc2 +(4096); + +181 + gdoc2 + = +obj +; + +183 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +184 +REQUIRE +( +doc2 +. +cy +() == 4096); + +187 +SECTION +("Assign from JsonArray") { + +188 + gSticJsDocumt +<200> + gdoc1 +; + +189 +JsAay + + gr + = +doc1 +. +to +(); + +190 + gr +. +add +("hello"); + +192 +DymicJsDocumt + +doc2 +(4096); + +193 + gdoc2 + = +r +; + +195 +REQUIRE_JSON +( +doc2 +, "[\"hello\"]"); + +196 +REQUIRE +( +doc2 +. +cy +() == 4096); + +199 +SECTION +("Assign from JsonVariant") { + +200 + gSticJsDocumt +<200> + gdoc1 +; + +201 +derlizeJs +( +doc1 +, "42"); + +203 +DymicJsDocumt + +doc2 +(4096); + +204 + gdoc2 + = +doc1 +. +as +< +JsV +>(); + +206 +REQUIRE_JSON +( +doc2 +, "42"); + +207 +REQUIRE +( +doc2 +. +cy +() == 4096); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/StaticJsonDocument.cpp + +5  + ~ + +6  + ~ + +8  + $REQUIRE_JSON +( +JsDocumt +& +doc +, cڡ +d +:: +rg +& +exed +) { + +9 +d +:: +rg + +js +; + +10 + `rlizeJs +( +doc +, +js +); + +11 + `REQUIRE +( +js + = +exed +); + +12 + } +} + +14 +TEST_CASE +("StaticJsonDocument") { + +15 +SECTION +("capacity()") { + +16 +SECTION +("matchesemplatergument") { + +17 + gSticJsDocumt +<256> + gdoc +; + +18 +REQUIRE +( +doc +. +cy +() == 256); + +21 +SECTION +("rounds upemplatergument") { + +22 + gSticJsDocumt +<253> + gdoc +; + +23 +REQUIRE +( +doc +. +cy +() == 256); + +27 +SECTION +("serializeJson()") { + +28 + gSticJsDocumt +<200> + gdoc +; + +29 +JsObje + + gobj + = +doc +. +to +(); + +30 + gobj +["hello"] = "world"; + +32 + gd +:: +rg + +js +; + +33 +rlizeJs +( +doc +, +js +); + +35 +REQUIRE +( +js + == "{\"hello\":\"world\"}"); + +38 +SECTION +("Copyssignment") { + +39 + gSticJsDocumt +<200> + gdoc1 +, + gdoc2 +; + +40 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +41 +derlizeJs +( +doc2 +, "{\"hello\":\"world\"}"); + +43 + gdoc1 + = +doc2 +; + +45 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +48 +SECTION +("Contructor") { + +49 +SECTION +("Copy constructor") { + +50 + gSticJsDocumt +<200> + gdoc1 +; + +51 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +53 + gSticJsDocumt +<200> + gdoc2 + = +doc1 +; + +55 +derlizeJs +( +doc1 +, "{\"HELLO\":\"WORLD\"}"); + +56 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +59 +SECTION +("Construct from StaticJsonDocument of different size") { + +60 + gSticJsDocumt +<300> + gdoc1 +; + +61 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +63 + gSticJsDocumt +<200> + gdoc2 + = +doc1 +; + +65 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +68 +SECTION +("Construct from DynamicJsonDocument") { + +69 +DymicJsDocumt + +doc1 +(4096); + +70 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +72 + gSticJsDocumt +<200> + gdoc2 + = +doc1 +; + +74 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +77 +SECTION +("Construct from JsonObject") { + +78 +DymicJsDocumt + +doc1 +(4096); + +79 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +81 + gSticJsDocumt +<200> + gdoc2 + = +doc1 +. +as +< +JsObje +>(); + +83 +derlizeJs +( +doc1 +, "{\"HELLO\":\"WORLD\"}"); + +84 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +87 +SECTION +("Construct from JsonArray") { + +88 +DymicJsDocumt + +doc1 +(4096); + +89 +derlizeJs +( +doc1 +, "[\"hello\",\"world\"]"); + +91 + gSticJsDocumt +<200> + gdoc2 + = +doc1 +. +as +< +JsAay +>(); + +93 +derlizeJs +( +doc1 +, "[\"HELLO\",\"WORLD\"]"); + +94 +REQUIRE_JSON +( +doc2 +, "[\"hello\",\"world\"]"); + +97 +SECTION +("Construct from JsonVariant") { + +98 +DymicJsDocumt + +doc1 +(4096); + +99 +derlizeJs +( +doc1 +, "42"); + +101 + gSticJsDocumt +<200> + gdoc2 + = +doc1 +. +as +< +JsV +>(); + +103 +REQUIRE_JSON +( +doc2 +, "42"); + +107 +SECTION +("Assignment") { + +108 +SECTION +("Copyssignment") { + +109 + gSticJsDocumt +<200> + gdoc1 +, + gdoc2 +; + +110 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +111 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +113 + gdoc2 + = +doc1 +; + +115 +derlizeJs +( +doc1 +, "{\"HELLO\":\"WORLD\"}"); + +116 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +119 +SECTION +("Assign from StaticJsonDocument of different capacity") { + +120 + gSticJsDocumt +<200> + gdoc1 +; + +121 + gSticJsDocumt +<300> + gdoc2 +; + +122 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +123 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +125 + gdoc2 + = +doc1 +; + +127 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +130 +SECTION +("Assign from DynamicJsonDocument") { + +131 + gSticJsDocumt +<200> + gdoc1 +; + +132 +DymicJsDocumt + +doc2 +(4096); + +133 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +134 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +136 + gdoc2 + = +doc1 +; + +138 +derlizeJs +( +doc1 +, "{\"HELLO\":\"WORLD\"}"); + +139 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +142 +SECTION +("Assign from JsonArray") { + +143 + gSticJsDocumt +<200> + gdoc1 +; + +144 +DymicJsDocumt + +doc2 +(4096); + +145 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +146 +derlizeJs +( +doc1 +, "[\"hello\",\"world\"]"); + +148 + gdoc2 + = +doc1 +. +as +< +JsAay +>(); + +150 +derlizeJs +( +doc1 +, "[\"HELLO\",\"WORLD\"]"); + +151 +REQUIRE_JSON +( +doc2 +, "[\"hello\",\"world\"]"); + +154 +SECTION +("Assign from JsonArrayConst") { + +155 + gSticJsDocumt +<200> + gdoc1 +; + +156 +DymicJsDocumt + +doc2 +(4096); + +157 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +158 +derlizeJs +( +doc1 +, "[\"hello\",\"world\"]"); + +160 + gdoc2 + = +doc1 +. +as +< +JsAayCڡ +>(); + +162 +derlizeJs +( +doc1 +, "[\"HELLO\",\"WORLD\"]"); + +163 +REQUIRE_JSON +( +doc2 +, "[\"hello\",\"world\"]"); + +166 +SECTION +("Assign from JsonObject") { + +167 + gSticJsDocumt +<200> + gdoc1 +; + +168 +DymicJsDocumt + +doc2 +(4096); + +169 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +170 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +172 + gdoc2 + = +doc1 +. +as +< +JsObje +>(); + +174 +derlizeJs +( +doc1 +, "{\"HELLO\":\"WORLD\"}"); + +175 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +178 +SECTION +("Assign from JsonObjectConst") { + +179 + gSticJsDocumt +<200> + gdoc1 +; + +180 +DymicJsDocumt + +doc2 +(4096); + +181 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +182 +derlizeJs +( +doc1 +, "{\"hello\":\"world\"}"); + +184 + gdoc2 + = +doc1 +. +as +< +JsObjeCڡ +>(); + +186 +derlizeJs +( +doc1 +, "{\"HELLO\":\"WORLD\"}"); + +187 +REQUIRE_JSON +( +doc2 +, "{\"hello\":\"world\"}"); + +190 +SECTION +("Assign from JsonVariant") { + +191 +DymicJsDocumt + +doc1 +(4096); + +192 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +193 +derlizeJs +( +doc1 +, "42"); + +195 + gSticJsDocumt +<200> + gdoc2 +; + +196 + gdoc2 + = +doc1 +. +as +< +JsV +>(); + +198 +REQUIRE_JSON +( +doc2 +, "42"); + +201 +SECTION +("Assign from JsonVariantConst") { + +202 +DymicJsDocumt + +doc1 +(4096); + +203 + gdoc1 +. + gto +< + gJsV +>(). +t +(666); + +204 +derlizeJs +( +doc1 +, "42"); + +206 + gSticJsDocumt +<200> + gdoc2 +; + +207 + gdoc2 + = +doc1 +. +as +< +JsVCڡ +>(); + +209 +REQUIRE_JSON +( +doc2 +, "42"); + +213 +SECTION +("garbageCollect()") { + +214 + gSticJsDocumt +<256> + gdoc +; + +215 + gdoc +[ +d +:: +rg +("example")] = std::string("example"); + +216 + gdoc +. +move +("example"); + +217 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(1) + 16); + +219 + gdoc +. +gbageC +(); + +221 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(0)); + +222 +REQUIRE_JSON +( +doc +, "{}"); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/add.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::add()") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("integer") { + +12 + gdoc +. +add +(42); + +14 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[42]"); + +17 +SECTION +("const char*") { + +18 + gdoc +. +add +("hello"); + +20 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[\"hello\"]"); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/compare.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("DynamicJsonDocument::operator==(const DynamicJsonDocument&)") { + +9 +DymicJsDocumt + +doc1 +(4096); + +10 +DymicJsDocumt + +doc2 +(4096); + +12 +SECTION +("Empty") { + +13 +REQUIRE +( +doc1 + = +doc2 +); + +14 +REQUIRE_FALSE +( +doc1 + ! +doc2 +); + +17 +SECTION +("With same object") { + +18 + gdoc1 +["hello"] = "world"; + +19 + gdoc2 +["hello"] = "world"; + +20 +REQUIRE +( +doc1 + = +doc2 +); + +21 +REQUIRE_FALSE +( +doc1 + ! +doc2 +); + +23 +SECTION +("With different object") { + +24 + gdoc1 +["hello"] = "world"; + +25 + gdoc2 +["world"] = "hello"; + +26 +REQUIRE_FALSE +( +doc1 + = +doc2 +); + +27 +REQUIRE +( +doc1 + ! +doc2 +); + +31 +TEST_CASE +("DynamicJsonDocument::operator==(const StaticJsonDocument&)") { + +32 +DymicJsDocumt + +doc1 +(4096); + +33 + gSticJsDocumt +<256> + gdoc2 +; + +35 +SECTION +("Empty") { + +36 +REQUIRE +( +doc1 + = +doc2 +); + +37 +REQUIRE_FALSE +( +doc1 + ! +doc2 +); + +40 +SECTION +("With same object") { + +41 + gdoc1 +["hello"] = "world"; + +42 + gdoc2 +["hello"] = "world"; + +43 +REQUIRE +( +doc1 + = +doc2 +); + +44 +REQUIRE_FALSE +( +doc1 + ! +doc2 +); + +47 +SECTION +("With different object") { + +48 + gdoc1 +["hello"] = "world"; + +49 + gdoc2 +["world"] = "hello"; + +50 +REQUIRE_FALSE +( +doc1 + = +doc2 +); + +51 +REQUIRE +( +doc1 + ! +doc2 +); + +55 +TEST_CASE +("StaticJsonDocument::operator==(const DynamicJsonDocument&)") { + +56 + gSticJsDocumt +<256> + gdoc1 +; + +57 +DymicJsDocumt + +doc2 +(4096); + +59 +SECTION +("Empty") { + +60 +REQUIRE +( +doc1 + = +doc2 +); + +61 +REQUIRE_FALSE +( +doc1 + ! +doc2 +); + +64 +SECTION +("With same object") { + +65 + gdoc1 +["hello"] = "world"; + +66 + gdoc2 +["hello"] = "world"; + +67 +REQUIRE +( +doc1 + = +doc2 +); + +68 +REQUIRE_FALSE +( +doc1 + ! +doc2 +); + +71 +SECTION +("With different object") { + +72 + gdoc1 +["hello"] = "world"; + +73 + gdoc2 +["world"] = "hello"; + +74 +REQUIRE_FALSE +( +doc1 + = +doc2 +); + +75 +REQUIRE +( +doc1 + ! +doc2 +); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/containsKey.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::containsKey()") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("returnsrue on object") { + +12 + gdoc +["hello"] = "world"; + +14 +REQUIRE +( +doc +. +cڏsKey +("hlo"= +ue +); + +17 +SECTION +("returnsrue when value isull") { + +18 + gdoc +["hlo"] = +ic_ +(0); + +20 +REQUIRE +( +doc +. +cڏsKey +("hlo"= +ue +); + +23 +SECTION +("returnsrue when key is std::string") { + +24 + gdoc +["hello"] = "world"; + +26 +REQUIRE +( +doc +. +cڏsKey +( +d +:: +rg +("hlo")= +ue +); + +29 +SECTION +("returns false on object") { + +30 + gdoc +["world"] = "hello"; + +32 +REQUIRE +( +doc +. +cڏsKey +("hlo"= +l +); + +35 +SECTION +("returns false onrray") { + +36 + gdoc +. +add +("hello"); + +38 +REQUIRE +( +doc +. +cڏsKey +("hlo"= +l +); + +41 +SECTION +("returns false onull") { + +42 +REQUIRE +( +doc +. +cڏsKey +("hlo"= +l +); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/createNested.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::createNestedArray()") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("promotesorray") { + +12 + gdoc +. +NeedAay +(); + +14 +REQUIRE +( +doc +. +is +< +JsAay +>()); + +18 +TEST_CASE +("JsonDocument::createNestedArray(key)") { + +19 +DymicJsDocumt + +doc +(4096); + +21 +SECTION +("key is const char*") { + +22 +SECTION +("promoteso object") { + +23 + gdoc +. +NeedAay +("hello"); + +25 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +29 +SECTION +("key is std::string") { + +30 +SECTION +("promoteso object") { + +31 + gdoc +. +NeedAay +( +d +:: +rg +("hello")); + +33 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +38 +TEST_CASE +("JsonDocument::createNestedObject()") { + +39 +DymicJsDocumt + +doc +(4096); + +41 +SECTION +("promotesorray") { + +42 + gdoc +. +NeedObje +(); + +44 +REQUIRE +( +doc +. +is +< +JsAay +>()); + +48 +TEST_CASE +("JsonDocument::createNestedObject(key)") { + +49 +DymicJsDocumt + +doc +(4096); + +51 +SECTION +("key is const char*") { + +52 +SECTION +("promoteso object") { + +53 + gdoc +. +NeedObje +("hello"); + +55 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +59 +SECTION +("key is std::string") { + +60 +SECTION +("promoteso object") { + +61 + gdoc +. +NeedObje +( +d +:: +rg +("hello")); + +63 +REQUIRE +( +doc +. +is +< +JsObje +>()); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/isNull.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::isNull()") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("returnsrue if uninitialized") { + +12 +REQUIRE +( +doc +. +isNu +(= +ue +); + +15 +SECTION +("returns falseftero()") { + +16 + gdoc +. + gto +< + gJsObje +>(); + +17 +REQUIRE +( +doc +. +isNu +(= +l +); + +20 +SECTION +("returns falseftero()") { + +21 + gdoc +. + gto +< + gJsAay +>(); + +22 +REQUIRE +( +doc +. +isNu +(= +l +); + +25 +SECTION +("returnsrueftero()") { + +26 +REQUIRE +( +doc +. +isNu +(= +ue +); + +29 +SECTION +("returns falsefter set()") { + +30 + gdoc +. + gto +< + gJsV +>(). +t +(42); + +31 +REQUIRE +( +doc +. +isNu +(= +l +); + +34 +SECTION +("returnsruefter clear()") { + +35 + gdoc +. + gto +< + gJsObje +>(); + +36 + gdoc +. +r +(); + +37 +REQUIRE +( +doc +. +isNu +(= +ue +); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/nesting.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::nesting()") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("return 0 if uninitialized") { + +12 +REQUIRE +( +doc +. +ág +() == 0); + +15 +SECTION +("returns 0 for string") { + +16 +JsV + + gv + = +doc +. +to +(); + +17 + gv +. +t +("hello"); + +18 +REQUIRE +( +doc +. +ág +() == 0); + +21 +SECTION +("returns 1 formpty object") { + +22 + gdoc +. + gto +< + gJsObje +>(); + +23 +REQUIRE +( +doc +. +ág +() == 1); + +26 +SECTION +("returns 1 formptyrray") { + +27 + gdoc +. + gto +< + gJsAay +>(); + +28 +REQUIRE +( +doc +. +ág +() == 1); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/remove.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::remove()") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("remove(int)") { + +12 + gdoc +. +add +(1); + +13 + gdoc +. +add +(2); + +14 + gdoc +. +add +(3); + +16 + gdoc +. +move +(1); + +18 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[1,3]"); + +21 +SECTION +("remove(const char *)") { + +22 + gdoc +["a"] = 1; + +23 + gdoc +["b"] = 2; + +25 + gdoc +. +move +("a"); + +27 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"b\":2}"); + +30 +SECTION +("remove(std::string)") { + +31 + gdoc +["a"] = 1; + +32 + gdoc +["b"] = 2; + +34 + gdoc +. +move +( +d +:: +rg +("b")); + +36 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"a\":1}"); + +39 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +40 +SECTION +("remove(vla)") { + +41 + gdoc +["a"] = 1; + +42 + gdoc +["b"] = 2; + +44  + gi + = 4; + +45  + gv +[ +i +]; + +46 +ry +( +v +, "b"); + +47 + gdoc +. +move +( +v +); + +49 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"a\":1}"); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp + +5  + ~ + +6  + ~ + +8  + ~ + +9  + ~ + +11 +usg + + gARDUINOJSON_NAMESPACE +:: +addPaddg +; + +13 as + cArmedAot + { + +14 + mpublic +: + +15 + $ArmedAot +(: + `_r +(0), + $_size +(0) {} + +17 * + $lo +( +size_t + +size +) { + +18 +_r + = + `mloc +( +size +); + +19 +_size + = +size +; + +20  +_r +; + +21 + } +} + +23  + $do +(* +r +) { + +24 + `REQUIRE +( +r + = +_r +); + +25 + ` +( +r +); + +26 +_r + = 0; + +27 +_size + = 0; + +28 + } +} + +30 * + $lo +(* +r +, +size_t + +w_size +) { + +31 + `REQUIRE +( +r + = +_r +); + +34 * +w_r + = + `mloc +( +w_size +); + +35 + `memy +( +w_r +, +_r +, +d +:: + `m +( +w_size +, +_size +)); + +36 + `memt +( +_r +, '#', +_size +); + +37 + ` +( +_r +); + +38 +_r + = +w_r +; + +39  +w_r +; + +40 + } +} + +42 + give +: + +43 * +_r +; + +44 +size_t + + g_size +; + +47  + gBasicJsDocumt +< + tArmedAot +> + tShrkToFTeDocumt +; + +49  + $ShrkToF +( +ShrkToFTeDocumt +& +doc +, +d +:: +rg + +exed_js +, + +50 +size_t + +exed_size +) { + +52  +i + = 0; i < 2; i++) { + +53 +doc +. + `shrkToF +(); + +55 + `REQUIRE +( +doc +. + `cy +(= +exed_size +); + +56 + `REQUIRE +( +doc +. + `memyUge +(= +exed_size +); + +58 +d +:: +rg + +js +; + +59 + `rlizeJs +( +doc +, +js +); + +60 + `REQUIRE +( +js + = +exed_js +); + +62 + } +} + +64 +TEST_CASE +("BasicJsonDocument::shrinkToFit()") { + +65 +ShrkToFTeDocumt + +doc +(4096); + +67 +SECTION +("null") { + +68 +ShrkToF +( +doc +, "null", 0); + +71 +SECTION +("empty object") { + +72 +derlizeJs +( +doc +, "{}"); + +73 +ShrkToF +( +doc +, "{}", +JSON_OBJECT_SIZE +(0)); + +76 +SECTION +("emptyrray") { + +77 +derlizeJs +( +doc +, "[]"); + +78 +ShrkToF +( +doc +, "[]", +JSON_ARRAY_SIZE +(0)); + +81 +SECTION +("linked string") { + +82 + gdoc +. +t +("hello"); + +83 +ShrkToF +( +doc +, "\"hello\"", 0); + +86 +SECTION +("owned string") { + +87 + gdoc +. +t +( +d +:: +rg +("abcdefg")); + +88 +ShrkToF +( +doc +, "\"abcdefg\"", 8); + +91 +SECTION +("linkedaw") { + +92 + gdoc +. +t +( +rlized +("[{},123]")); + +93 +ShrkToF +( +doc +, "[{},123]", 0); + +96 +SECTION +("ownedaw") { + +97 + gdoc +. +t +( +rlized +( +d +:: +rg +("[{},123]"))); + +98 +ShrkToF +( +doc +, "[{},123]", 8); + +101 +SECTION +("linked key") { + +102 + gdoc +["key"] = 42; + +103 +ShrkToF +( +doc +, "{\"key\":42}", +JSON_OBJECT_SIZE +(1)); + +106 +SECTION +("owned key") { + +107 + gdoc +[ +d +:: +rg +("abcdefg")] = 42; + +108 +ShrkToF +( +doc +, "{\"abcdefg\":42}", +JSON_OBJECT_SIZE +(1) + 8); + +111 +SECTION +("linked string inrray") { + +112 + gdoc +. +add +("hello"); + +113 +ShrkToF +( +doc +, "[\"hlo\"]", +JSON_ARRAY_SIZE +(1)); + +116 +SECTION +("owned string inrray") { + +117 + gdoc +. +add +( +d +:: +rg +("abcdefg")); + +118 +ShrkToF +( +doc +, "[\"abcdefg\"]", +JSON_ARRAY_SIZE +(1) + 8); + +121 +SECTION +("linked string in object") { + +122 + gdoc +["key"] = "hello"; + +123 +ShrkToF +( +doc +, "{\"key\":\"hlo\"}", +JSON_OBJECT_SIZE +(1)); + +126 +SECTION +("owned string in object") { + +127 + gdoc +["key"] = +d +:: +rg +("abcdefg"); + +128 +ShrkToF +( +doc +, "{\"key\":\"abcdefg\"}", +JSON_ARRAY_SIZE +(1) + 8); + +131 +SECTION +("unaligned") { + +132 + gdoc +. +add +( +d +:: +rg +("?")); + +133 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(1) + 2); + +135 + gdoc +. +shrkToF +(); + +138 +REQUIRE +( +doc +. +cy +(= +JSON_OBJECT_SIZE +(1) + (*)); + +139 +REQUIRE +( +doc +. +memyUge +(= +JSON_OBJECT_SIZE +(1) + 2); + +140 +REQUIRE +( +doc +[0] == "?"); + +144 +TEST_CASE +("DynamicJsonDocument::shrinkToFit()") { + +145 +DymicJsDocumt + +doc +(4096); + +147 +derlizeJs +( +doc +, "{\"hello\":[\"world\"]"); + +149 + gdoc +. +shrkToF +(); + +151 + gd +:: +rg + +js +; + +152 +rlizeJs +( +doc +, +js +); + +153 +REQUIRE +( +js + == "{\"hello\":[\"world\"]}"); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/size.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::size()") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("returns 0") { + +12 +REQUIRE +( +doc +. +size +() == 0); + +15 +SECTION +("asnrray,eturn 2") { + +16 + gdoc +. +add +(1); + +17 + gdoc +. +add +(2); + +19 +REQUIRE +( +doc +. +size +() == 2); + +22 +SECTION +("asn object,eturn 2") { + +23 + gdoc +["a"] = 1; + +24 + gdoc +["b"] = 2; + +26 +REQUIRE +( +doc +. +size +() == 2); + + @lib_standalone/ArduinoJson/extras/tests/JsonDocument/subscript.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonDocument::operator[]") { + +9 +DymicJsDocumt + +doc +(4096); + +10 cڡ + gJsDocumt +& + gcdoc + = +doc +; + +12 +SECTION +("object") { + +13 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +15 +SECTION +("const char*") { + +16 +REQUIRE +( +doc +["hello"] == "world"); + +17 +REQUIRE +( +cdoc +["hello"] == "world"); + +20 +SECTION +("std::string") { + +21 +REQUIRE +( +doc +[ +d +:: +rg +("hello")] == "world"); + +22 +REQUIRE +( +cdoc +[ +d +:: +rg +("hello")] == "world"); + +25 +SECTION +("supports operator|") { + +26 +REQUIRE +(( +doc +["hlo"] | "ne"= +d +:: +rg +("world")); + +27 +REQUIRE +(( +doc +["wld"] | "ne"= +d +:: +rg +("nope")); + +31 +SECTION +("array") { + +32 +derlizeJs +( +doc +, "[\"hello\",\"world\"]"); + +34 +REQUIRE +( +doc +[1] == "world"); + +35 +REQUIRE +( +cdoc +[1] == "world"); + +39 +TEST_CASE +("JsonDocumentutomaticallyromoteso object") { + +40 +DymicJsDocumt + +doc +(4096); + +42 + gdoc +["one"]["two"]["three"] = 4; + +44 +REQUIRE +( +doc +["one"]["two"]["three"] == 4); + +47 +TEST_CASE +("JsonDocumentutomaticallyromotesorray") { + +48 +DymicJsDocumt + +doc +(4096); + +50 + gdoc +[2] = 2; + +52 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "[null,null,2]"); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/containsKey.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::containsKey()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsObje + + gobj + = +doc +. +to +(); + +11 + gobj +["hello"] = 42; + +13 +SECTION +("returnsrue only if key isresent") { + +14 +REQUIRE +( +l + = +obj +. +cڏsKey +("world")); + +15 +REQUIRE +( +ue + = +obj +. +cڏsKey +("hello")); + +18 +SECTION +("works with JsonObjectConst") { + +19 +JsObjeCڡ + + gcobj + = +obj +; + +20 +REQUIRE +( +l + = +cobj +. +cڏsKey +("world")); + +21 +REQUIRE +( +ue + = +cobj +. +cڏsKey +("hello")); + +24 +SECTION +("returns falsefteremove()") { + +25 + gobj +. +move +("hello"); + +27 +REQUIRE +( +l + = +obj +. +cڏsKey +("hello")); + +30 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +31 +SECTION +("key is VLA") { + +32  + gi + = 16; + +33  + gv +[ +i +]; + +34 +ry +( +v +, "hello"); + +36 +REQUIRE +( +ue + = +obj +. +cڏsKey +( +v +)); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/copy.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::set()") { + +9 +DymicJsDocumt + +doc1 +(4096); + +10 +DymicJsDocumt + +doc2 +(4096); + +12 +JsObje + + gobj1 + = +doc1 +. +to +(); + +13 +JsObje + + gobj2 + = +doc2 +. +to +(); + +15 +SECTION +("doesn't copy static string in key or value") { + +16 + gobj1 +["hello"] = "world"; + +18 +bo + + gsucss + = +obj2 +. +t +( +obj1 +); + +20 +REQUIRE +( +sucss + = +ue +); + +21 +REQUIRE +( +doc1 +. +memyUge +(= +doc2 +.memoryUsage()); + +22 +REQUIRE +( +obj2 +["hlo"] = +d +:: +rg +("world")); + +25 +SECTION +("copyocal string value") { + +26 + gobj1 +["hlo"] = +d +:: +rg +("world"); + +28 +bo + + gsucss + = +obj2 +. +t +( +obj1 +); + +30 +REQUIRE +( +sucss + = +ue +); + +31 +REQUIRE +( +doc1 +. +memyUge +(= +doc2 +.memoryUsage()); + +32 +REQUIRE +( +obj2 +["hlo"] = +d +:: +rg +("world")); + +35 +SECTION +("copyocal key") { + +36 + gobj1 +[ +d +:: +rg +("hello")] = "world"; + +38 +bo + + gsucss + = +obj2 +. +t +( +obj1 +); + +40 +REQUIRE +( +sucss + = +ue +); + +41 +REQUIRE +( +doc1 +. +memyUge +(= +doc2 +.memoryUsage()); + +42 +REQUIRE +( +obj2 +["hlo"] = +d +:: +rg +("world")); + +45 +SECTION +("copy string from deserializeJson()") { + +46 +derlizeJs +( +doc1 +, "{'hello':'world'}"); + +48 +bo + + gsucss + = +obj2 +. +t +( +obj1 +); + +50 +REQUIRE +( +sucss + = +ue +); + +51 +REQUIRE +( +doc1 +. +memyUge +(= +doc2 +.memoryUsage()); + +52 +REQUIRE +( +obj2 +["hlo"] = +d +:: +rg +("world")); + +55 +SECTION +("copy string from deserializeMsgPack()") { + +56 +derlizeMsgPack +( +doc1 +, "\x81\xA5hello\xA5world"); + +58 +bo + + gsucss + = +obj2 +. +t +( +obj1 +); + +60 +REQUIRE +( +sucss + = +ue +); + +61 +REQUIRE +( +doc1 +. +memyUge +(= +doc2 +.memoryUsage()); + +62 +REQUIRE +( +obj2 +["hlo"] = +d +:: +rg +("world")); + +65 +SECTION +("should work with JsonObjectConst") { + +66 + gobj1 +["hello"] = "world"; + +68 + gobj2 +. +t +( +ic_ +< +JsObjeCڡ +>( +obj1 +)); + +70 +REQUIRE +( +doc1 +. +memyUge +(= +doc2 +.memoryUsage()); + +71 +REQUIRE +( +obj2 +["hlo"] = +d +:: +rg +("world")); + +74 +SECTION +("destinationoo smallo storehe key") { + +75 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1)> + gdoc3 +; + +76 +JsObje + + gobj3 + = +doc3 +. +to +(); + +78 + gobj1 +[ +d +:: +rg +("hello")] = "world"; + +80 +bo + + gsucss + = +obj3 +. +t +( +obj1 +); + +82 +REQUIRE +( +sucss + = +l +); + +83 +REQUIRE +( +doc3 +. +as +< +d +:: +rg +>() == "{}"); + +86 +SECTION +("destinationoo smallo storehe value") { + +87 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1)> + gdoc3 +; + +88 +JsObje + + gobj3 + = +doc3 +. +to +(); + +90 + gobj1 +["hlo"] = +d +:: +rg +("world"); + +92 +bo + + gsucss + = +obj3 +. +t +( +obj1 +); + +94 +REQUIRE +( +sucss + = +l +); + +95 +REQUIRE +( +doc3 +. +as +< +d +:: +rg +>() == "{\"hello\":null}"); + +98 +SECTION +("destination isull") { + +99 +JsObje + + gnu +; + +100 + gobj1 +["hello"] = "world"; + +102 +bo + + gsucss + = +nu +. +t +( +obj1 +); + +104 +REQUIRE +( +sucss + = +l +); + +107 +SECTION +("source isull") { + +108 +JsObje + + gnu +; + +109 + gobj1 +["hello"] = "world"; + +111 +bo + + gsucss + = +obj1 +. +t +( +nu +); + +113 +REQUIRE +( +sucss + = +l +); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedArray.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::createNestedArray()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsObje + + gobj + = +doc +. +to +(); + +12 +SECTION +("key is const char*") { + +13 +JsAay + + gr + = +obj +. +NeedAay +("hello"); + +14 +REQUIRE +( +r +. +isNu +(= +l +); + +17 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +18 +SECTION +("key is VLA") { + +19  + gi + = 16; + +20  + gv +[ +i +]; + +21 +ry +( +v +, "hello"); + +23 +JsAay + + gr + = +obj +. +NeedAay +( +v +); + +24 +REQUIRE +( +r +. +isNu +(= +l +); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedObject.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::createNestedObject()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsObje + + gobj + = +doc +. +to +(); + +12 +SECTION +("key is const char*") { + +13 + gobj +. +NeedObje +("hello"); + +16 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +17 +SECTION +("key is VLA") { + +18  + gi + = 16; + +19  + gv +[ +i +]; + +20 +ry +( +v +, "hello"); + +22 + gobj +. +NeedObje +( +v +); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/equals.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::operator==()") { + +9 +DymicJsDocumt + +doc1 +(4096); + +10 +JsObje + + gobj1 + = +doc1 +. +to +(); + +11 +JsObjeCڡ + + gobj1c + = +obj1 +; + +13 +DymicJsDocumt + +doc2 +(4096); + +14 +JsObje + + gobj2 + = +doc2 +. +to +(); + +15 +JsObjeCڡ + + gobj2c + = +obj2 +; + +17 +SECTION +("shouldeturn false when objs differ") { + +18 + gobj1 +["hello"] = "coucou"; + +19 + gobj2 +["world"] = 1; + +21 +REQUIRE_FALSE +( +obj1 + = +obj2 +); + +22 +REQUIRE_FALSE +( +obj1c + = +obj2c +); + +25 +SECTION +("shouldeturn false when LHS has morelements") { + +26 + gobj1 +["hello"] = "coucou"; + +27 + gobj1 +["world"] = 666; + +28 + gobj2 +["hello"] = "coucou"; + +30 +REQUIRE_FALSE +( +obj1 + = +obj2 +); + +31 +REQUIRE_FALSE +( +obj1c + = +obj2c +); + +34 +SECTION +("shouldeturn false when RKS has morelements") { + +35 + gobj1 +["hello"] = "coucou"; + +36 + gobj2 +["hello"] = "coucou"; + +37 + gobj2 +["world"] = 666; + +39 +REQUIRE_FALSE +( +obj1 + = +obj2 +); + +40 +REQUIRE_FALSE +( +obj1c + = +obj2c +); + +43 +SECTION +("shouldeturnrue when objsqual") { + +44 + gobj1 +["hello"] = "world"; + +45 + gobj1 +["anwser"] = 42; + +47 + gobj2 +["anwser"] = 42; + +48 + gobj2 +["hello"] = "world"; + +50 +REQUIRE +( +obj1 + = +obj2 +); + +51 +REQUIRE +( +obj1c + = +obj2c +); + +54 +SECTION +("shouldeturn false when RHS isull") { + +55 +JsObje + + gnu +; + +57 +REQUIRE_FALSE +( +obj1 + = +nu +); + +58 +REQUIRE_FALSE +( +obj1c + = +nu +); + +61 +SECTION +("shouldeturn false when LHS isull") { + +62 +JsObje + + gnu +; + +64 +REQUIRE_FALSE +( +nu + = +obj2 +); + +65 +REQUIRE_FALSE +( +nu + = +obj2c +); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/invalid.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gCch +:: +Mchs +; + +10 +TEST_CASE +("JsonObject::invalid()") { + +11 +JsObje + + gobj +; + +13 +SECTION +("SubscriptFails") { + +14 +REQUIRE +( +obj +["key"]. +isNu +()); + +17 +SECTION +("AddFails") { + +18 + gobj +["hello"] = "world"; + +19 +REQUIRE +(0 = +obj +. +size +()); + +22 +SECTION +("CreateNestedArrayFails") { + +23 +REQUIRE +( +obj +. +NeedAay +("hlo"). +isNu +()); + +26 +SECTION +("CreateNestedObjectFails") { + +27 +REQUIRE +( +obj +. +NeedObje +("wld"). +isNu +()); + +30 +SECTION +("serializeo 'null'") { + +31  + gbufr +[32]; + +32 +rlizeJs +( +obj +, +bufr +, (buffer)); + +33 +REQUIRE_THAT +( +bufr +, +Equs +("null")); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/isNull.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::isNull()") { + +9 +SECTION +("returnsrue") { + +10 +JsObje + + gobj +; + +11 +REQUIRE +( +obj +. +isNu +(= +ue +); + +14 +SECTION +("returns false") { + +15 +DymicJsDocumt + +doc +(4096); + +16 +JsObje + + gobj + = +doc +. +to +(); + +17 +REQUIRE +( +obj +. +isNu +(= +l +); + +21 +TEST_CASE +("JsonObjectConst::isNull()") { + +22 +SECTION +("returnsrue") { + +23 +JsObjeCڡ + + gobj +; + +24 +REQUIRE +( +obj +. +isNu +(= +ue +); + +27 +SECTION +("returns false") { + +28 +DymicJsDocumt + +doc +(4096); + +29 +JsObjeCڡ + + gobj + = +doc +. +to +< +JsObje +>(); + +30 +REQUIRE +( +obj +. +isNu +(= +l +); + +34 +TEST_CASE +("JsonObject::operator bool()") { + +35 +SECTION +("returns false") { + +36 +JsObje + + gobj +; + +37 +REQUIRE +( +ic_ +< +bo +>( +obj += +l +); + +40 +SECTION +("returnsrue") { + +41 +DymicJsDocumt + +doc +(4096); + +42 +JsObje + + gobj + = +doc +. +to +(); + +43 +REQUIRE +( +ic_ +< +bo +>( +obj += +ue +); + +47 +TEST_CASE +("JsonObjectConst::operator bool()") { + +48 +SECTION +("returns false") { + +49 +JsObjeCڡ + + gobj +; + +50 +REQUIRE +( +ic_ +< +bo +>( +obj += +l +); + +53 +SECTION +("returnsrue") { + +54 +DymicJsDocumt + +doc +(4096); + +55 +JsObjeCڡ + + gobj + = +doc +. +to +< +JsObje +>(); + +56 +REQUIRE +( +ic_ +< +bo +>( +obj += +ue +); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/iterator.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gCch +:: +Mchs +; + +10 +TEST_CASE +("JsonObject::begin()/end()") { + +11 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +12 +JsObje + + gobj + = +doc +. +to +(); + +13 + gobj +["ab"] = 12; + +14 + gobj +["cd"] = 34; + +16 +SECTION +("NonConstIterator") { + +17 + gJsObje +:: + + + + = +obj +. +beg +(); + +18 +REQUIRE +( +obj +. +d +(! + +); + +19 +REQUIRE +( + +-> +key +() == "ab"); + +20 +REQUIRE +(12 = + +-> +vue +()); + +21 ++ + g +; + +22 +REQUIRE +( +obj +. +d +(! + +); + +23 +REQUIRE +( + +-> +key +() == "cd"); + +24 +REQUIRE +(34 = + +-> +vue +()); + +25 ++ + g +; + +26 +REQUIRE +( +obj +. +d +(= + +); + +29 +SECTION +("Dereferencingnd() is safe") { + +30 +REQUIRE +( +obj +. +d +()-> +key +(). +isNu +()); + +31 +REQUIRE +( +obj +. +d +()-> +vue +(). +isNu +()); + +34 +SECTION +("null JsonObject") { + +35 +JsObje + + gnu +; + +36 +REQUIRE +( +nu +. +beg +(=nu. +d +()); + +40 +TEST_CASE +("JsonObjectConst::begin()/end()") { + +41 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +42 +JsObje + + gobj + = +doc +. +to +(); + +43 + gobj +["ab"] = 12; + +44 + gobj +["cd"] = 34; + +46 +JsObjeCڡ + + gcobj + = +obj +; + +48 +SECTION +("Iteration") { + +49 + gJsObjeCڡ +:: + + + + = +cobj +. +beg +(); + +50 +REQUIRE +( +cobj +. +d +(! + +); + +51 +REQUIRE +( + +-> +key +() == "ab"); + +52 +REQUIRE +(12 = + +-> +vue +()); + +54 ++ + g +; + +55 +REQUIRE +( +cobj +. +d +(! + +); + +56 +JsPaCڡ + + g + = * + +; + +57 +REQUIRE +( + +. +key +() == "cd"); + +58 +REQUIRE +(34 = + +. +vue +()); + +60 ++ + g +; + +61 +REQUIRE +( +cobj +. +d +(= + +); + +64 +SECTION +("Dereferencingnd() is safe") { + +65 +REQUIRE +( +cobj +. +d +()-> +key +(). +isNu +()); + +66 +REQUIRE +( +cobj +. +d +()-> +vue +(). +isNu +()); + +69 +SECTION +("null JsonObjectConst") { + +70 +JsObjeCڡ + + gnu +; + +71 +REQUIRE +( +nu +. +beg +(=nu. +d +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/memoryUsage.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonObject::memoryUsage()") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsObje + + gobj + = +doc +. +to +(); + +13 +SECTION +("return 0 if uninitialized") { + +14 +JsObje + + gunlized +; + +15 +REQUIRE +( +unlized +. +memyUge +() == 0); + +18 +SECTION +("JSON_OBJECT_SIZE(0) formpty object") { + +19 +REQUIRE +( +obj +. +memyUge +(= +JSON_OBJECT_SIZE +(0)); + +22 +SECTION +("JSON_OBJECT_SIZE(1)fterdd") { + +23 + gobj +["hello"] = 42; + +24 +REQUIRE +( +obj +. +memyUge +(= +JSON_OBJECT_SIZE +(1)); + +27 +SECTION +("includeshe size ofhe key") { + +28 + gobj +[ +d +:: +rg +("hello")] = 42; + +29 +REQUIRE +( +obj +. +memyUge +(= +JSON_OBJECT_SIZE +(1) + 6); + +32 +SECTION +("includeshe size ofheestedrray") { + +33 +JsAay + + gáed + = +obj +. +NeedAay +("nested"); + +34 + gáed +. +add +(42); + +35 +REQUIRE +( +obj +. +memyUge +(= +JSON_OBJECT_SIZE +(1+ +JSON_ARRAY_SIZE +(1)); + +38 +SECTION +("includeshe size ofheested object") { + +39 +JsObje + + gáed + = +obj +. +NeedObje +("nested"); + +40 + gáed +["hello"] = "world"; + +41 +REQUIRE +( +obj +. +memyUge +(=2 * +JSON_OBJECT_SIZE +(1)); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/nesting.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::nesting()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsObje + + gobj + = +doc +. +to +(); + +12 +SECTION +("return 0 if uninitialized") { + +13 +JsObje + + gunlized +; + +14 +REQUIRE +( +unlized +. +ág +() == 0); + +17 +SECTION +("returns 1 formpty object") { + +18 +REQUIRE +( +obj +. +ág +() == 1); + +21 +SECTION +("returns 1 for flat object") { + +22 + gobj +["hello"] = "world"; + +23 +REQUIRE +( +obj +. +ág +() == 1); + +26 +SECTION +("returns 2 withestedrray") { + +27 + gobj +. +NeedAay +("nested"); + +28 +REQUIRE +( +obj +. +ág +() == 2); + +31 +SECTION +("returns 2 withested object") { + +32 + gobj +. +NeedObje +("nested"); + +33 +REQUIRE +( +obj +. +ág +() == 2); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/remove.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonObject::remove()") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsObje + + gobj + = +doc +. +to +(); + +12 + gobj +["a"] = 0; + +13 + gobj +["b"] = 1; + +14 + gobj +["c"] = 2; + +15 + gd +:: +rg + +su +; + +17 +SECTION +("remove(key)") { + +18 +SECTION +("Remove first") { + +19 + gobj +. +move +("a"); + +20 +rlizeJs +( +obj +, +su +); + +21 +REQUIRE +("{\"b\":1,\"c\":2}" = +su +); + +24 +SECTION +("Remove middle") { + +25 + gobj +. +move +("b"); + +26 +rlizeJs +( +obj +, +su +); + +27 +REQUIRE +("{\"a\":0,\"c\":2}" = +su +); + +30 +SECTION +("Removeast") { + +31 + gobj +. +move +("c"); + +32 +rlizeJs +( +obj +, +su +); + +33 +REQUIRE +("{\"a\":0,\"b\":1}" = +su +); + +37 +SECTION +("remove(iterator)") { + +38 + gJsObje +:: + + + + = +obj +. +beg +(); + +40 +SECTION +("Remove first") { + +41 + gobj +. +move +( + +); + +42 +rlizeJs +( +obj +, +su +); + +43 +REQUIRE +("{\"b\":1,\"c\":2}" = +su +); + +46 +SECTION +("Remove middle") { + +47 ++ + g +; + +48 + gobj +. +move +( + +); + +49 +rlizeJs +( +obj +, +su +); + +50 +REQUIRE +("{\"a\":0,\"c\":2}" = +su +); + +53 +SECTION +("Removeast") { + +54 + g + += 2; + +55 + gobj +. +move +( + +); + +56 +rlizeJs +( +obj +, +su +); + +57 +REQUIRE +("{\"a\":0,\"b\":1}" = +su +); + +61 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +62 +SECTION +("key is vla") { + +63  + gi + = 16; + +64  + gv +[ +i +]; + +65 +ry +( +v +, "b"); + +66 + gobj +. +move +( +v +); + +68 +rlizeJs +( +obj +, +su +); + +69 +REQUIRE +("{\"a\":0,\"c\":2}" = +su +); + +73 +SECTION +("should work onull object") { + +74 +JsObje + + gnu +; + +75 + gnu +. +move +("key"); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/size.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonObject::size()") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsObje + + gobj + = +doc +. +to +(); + +13 +SECTION +("initial size is zero") { + +14 +REQUIRE +(0 = +obj +. +size +()); + +17 +SECTION +("increases when valuesredded") { + +18 + gobj +["hello"] = 42; + +19 +REQUIRE +(1 = +obj +. +size +()); + +22 +SECTION +("decreases when valuesreemoved") { + +23 + gobj +["hello"] = 42; + +24 + gobj +. +move +("hello"); + +25 +REQUIRE +(0 = +obj +. +size +()); + +28 +SECTION +("doesn't increase whenhe same key isddedwice") { + +29 + gobj +["hello"] = 1; + +30 + gobj +["hello"] = 2; + +31 +REQUIRE +(1 = +obj +. +size +()); + +34 +SECTION +("doesn't decrease whennother key isemoved") { + +35 + gobj +["hello"] = 1; + +36 + gobj +. +move +("world"); + +37 +REQUIRE +(1 = +obj +. +size +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/std_string.cpp + +5  + ~ + +6  + ~ + +8  + $aSg +( +d +:: +rg + & +r +) { + +9 * +p + = +cڡ_ +<*>( +r +. + `c_r +()); + +10 * +p +) *p++ = '*'; + +11 + } +} + +13 +TEST_CASE +("std::string") { + +14 +DymicJsDocumt + +doc +(4096); + +16 +SECTION +("operator[]") { + +17  + gjs +[] = "{\"key\":\"value\"}"; + +19 +derlizeJs +( +doc +, +js +); + +20 +JsObje + + gobj + = +doc +. +as +(); + +22 +REQUIRE +( +d +:: +rg +("vue"= +obj +[std::string("key")]); + +25 +SECTION +("operator[] const") { + +26  + gjs +[] = "{\"key\":\"value\"}"; + +28 +derlizeJs +( +doc +, +js +); + +29 +JsObje + + gobj + = +doc +. +as +(); + +31 +REQUIRE +( +d +:: +rg +("vue"= +obj +[std::string("key")]); + +34 +SECTION +("createNestedObject()") { + +35 +JsObje + + gobj + = +doc +. +to +(); + +36 + gd +:: +rg + +key + = "key"; + +37  + gjs +[64]; + +38 + gobj +. +NeedObje +( +key +); + +39 +aSg +( +key +); + +40 +rlizeJs +( +doc +, +js +, (json)); + +41 +REQUIRE +( +d +:: +rg +("{\"key\":{}}"= +js +); + +44 +SECTION +("createNestedArray()") { + +45 +JsObje + + gobj + = +doc +. +to +(); + +46 + gd +:: +rg + +key + = "key"; + +47  + gjs +[64]; + +48 + gobj +. +NeedAay +( +key +); + +49 +aSg +( +key +); + +50 +rlizeJs +( +doc +, +js +, (json)); + +51 +REQUIRE +( +d +:: +rg +("{\"key\":[]}"= +js +); + +54 +SECTION +("containsKey()") { + +55  + gjs +[] = "{\"key\":\"value\"}"; + +56 +derlizeJs +( +doc +, +js +); + +57 +JsObje + + gobj + = +doc +. +as +(); + +58 +REQUIRE +( +ue + = +obj +. +cڏsKey +( +d +:: +rg +("key"))); + +61 +SECTION +("remove()") { + +62 +JsObje + + gobj + = +doc +. +to +(); + +63 + gobj +["key"] = "value"; + +65 + gobj +. +move +( +d +:: +rg +("key")); + +67 +REQUIRE +(0 = +obj +. +size +()); + +70 +SECTION +("operator[], set key") { + +71 + gd +:: +rg + +key +("hello"); + +72 +JsObje + + gobj + = +doc +. +to +(); + +73 + gobj +[ +key +] = "world"; + +74 +aSg +( +key +); + +75 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +78 +SECTION +("operator[], set value") { + +79 + gd +:: +rg + +vue +("world"); + +80 +JsObje + + gobj + = +doc +. +to +(); + +81 + gobj +["hlo"] = +vue +; + +82 +aSg +( +vue +); + +83 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +86 +SECTION +("memoryUsage() increases whenddingew key") { + +87 + gd +:: +rg + +key1 +("hlo"), +key2 +("world"); + +88 +JsObje + + gobj + = +doc +. +to +(); + +90 + gobj +[ +key1 +] = 1; + +91 +size_t + + gsizeBefe + = +doc +. +memyUge +(); + +92 + gobj +[ +key2 +] = 2; + +93 +size_t + + gsizeA + = +doc +. +memyUge +(); + +95 +REQUIRE +( +sizeA + - +sizeBefe + > +key2 +. +size +()); + +98 +SECTION +("memoryUsage()emains whenddinghe same key") { + +99 + gd +:: +rg + +key +("hello"); + +100 +JsObje + + gobj + = +doc +. +to +(); + +102 + gobj +[ +key +] = 1; + +103 +size_t + + gsizeBefe + = +doc +. +memyUge +(); + +104 + gobj +[ +key +] = 2; + +105 +size_t + + gsizeA + = +doc +. +memyUge +(); + +107 +REQUIRE +( +sizeBefe + = +sizeA +); + + @lib_standalone/ArduinoJson/extras/tests/JsonObject/subscript.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonObject::operator[]") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsObje + + gobj + = +doc +. +to +(); + +12 +SECTION +("int") { + +13 + gobj +["hello"] = 123; + +15 +REQUIRE +(123 = +obj +["hlo"]. +as +<>()); + +16 +REQUIRE +( +ue + = +obj +["hlo"]. +is +<>()); + +17 +REQUIRE +( +l + = +obj +["hlo"]. +is +< +bo +>()); + +20 +SECTION +("volatile int") { + +21 vީ + gi + = 123; + +22 + gobj +["hlo"] = +i +; + +24 +REQUIRE +(123 = +obj +["hlo"]. +as +<>()); + +25 +REQUIRE +( +ue + = +obj +["hlo"]. +is +<>()); + +26 +REQUIRE +( +l + = +obj +["hlo"]. +is +< +bo +>()); + +29 +SECTION +("double") { + +30 + gobj +["hello"] = 123.45; + +32 +REQUIRE +( +ue + = +obj +["hlo"]. +is +<>()); + +33 +REQUIRE +( +l + = +obj +["hlo"]. +is +<>()); + +34 +REQUIRE +(123.45 = +obj +["hlo"]. +as +<>()); + +37 +SECTION +("bool") { + +38 + gobj +["hlo"] = +ue +; + +40 +REQUIRE +( +ue + = +obj +["hlo"]. +is +< +bo +>()); + +41 +REQUIRE +( +l + = +obj +["hlo"]. +is +<>()); + +42 +REQUIRE +( +ue + = +obj +["hlo"]. +as +< +bo +>()); + +45 +SECTION +("const char*") { + +46 + gobj +["hello"] = "h3110"; + +48 +REQUIRE +( +ue + = +obj +["hlo"]. +is +()); + +49 +REQUIRE +( +l + = +obj +["hlo"]. +is +<>()); + +50 +REQUIRE +( +d +:: +rg +("h3110"= +obj +["hlo"]. +as +()); + +51 +REQUIRE +( +d +:: +rg +("h3110"= +obj +["hlo"]. +as +<*>()); + +54 +SECTION +("array") { + +55 +DymicJsDocumt + +doc2 +(4096); + +56 +JsAay + + gr + = +doc2 +. +to +(); + +58 + gobj +["hlo"] = +r +; + +60 +REQUIRE +( +r + = +obj +["hlo"]. +as +< +JsAay +>()); + +61 +REQUIRE +( +ue + = +obj +["hlo"]. +is +< +JsAay +>()); + +62 +REQUIRE +( +l + = +obj +["hlo"]. +is +< +JsObje +>()); + +65 +SECTION +("object") { + +66 +DymicJsDocumt + +doc2 +(4096); + +67 +JsObje + + gobj2 + = +doc2 +. +to +(); + +69 + gobj +["hlo"] = +obj2 +; + +71 +REQUIRE +( +obj2 + = +obj +["hlo"]. +as +< +JsObje +>()); + +72 +REQUIRE +( +ue + = +obj +["hlo"]. +is +< +JsObje +>()); + +73 +REQUIRE +( +l + = +obj +["hlo"]. +is +< +JsAay +>()); + +76 +SECTION +("array subscript") { + +77 +DymicJsDocumt + +doc2 +(4096); + +78 +JsAay + + gr + = +doc2 +. +to +(); + +79 + gr +. +add +(42); + +81 + gobj +["a"] = +r +[0]; + +83 +REQUIRE +(42 = +obj +["a"]); + +86 +SECTION +("object subscript") { + +87 +DymicJsDocumt + +doc2 +(4096); + +88 +JsObje + + gobj2 + = +doc2 +. +to +(); + +89 + gobj2 +["x"] = 42; + +91 + gobj +["a"] = +obj2 +["x"]; + +93 +REQUIRE +(42 = +obj +["a"]); + +96 +SECTION +("char key[]") { + +97  + gkey +[] = "hello"; + +98 + gobj +[ +key +] = 42; + +99 +REQUIRE +(42 = +obj +[ +key +]); + +102 +SECTION +("shouldot duplicate const char*") { + +103 + gobj +["hello"] = "world"; + +104 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1); + +105 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +108 +SECTION +("should duplicate char* value") { + +109 + gobj +["hlo"] = +cڡ_ +<*>("world"); + +110 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(6); + +111 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +114 +SECTION +("should duplicate char* key") { + +115 + gobj +[ +cڡ_ +<*>("hello")] = "world"; + +116 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(6); + +117 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +120 +SECTION +("should duplicate char* key&value") { + +121 + gobj +[ +cڡ_ +<*>("hello")] = const_cast<*>("world"); + +122 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1+ 2 * +JSON_STRING_SIZE +(6); + +123 +REQUIRE +( +exedSize + < +doc +. +memyUge +()); + +126 +SECTION +("should duplicate std::string value") { + +127 + gobj +["hlo"] = +d +:: +rg +("world"); + +128 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(6); + +129 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +132 +SECTION +("should duplicate std::string key") { + +133 + gobj +[ +d +:: +rg +("hello")] = "world"; + +134 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(6); + +135 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +138 +SECTION +("should duplicate std::string key&value") { + +139 + gobj +[ +d +:: +rg +("hello")] = std::string("world"); + +140 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1+ 2 * +JSON_STRING_SIZE +(6); + +141 +REQUIRE +( +exedSize + < +doc +. +memyUge +()); + +144 +SECTION +("should duplicateon-static JsonString key") { + +145 + gobj +[ +JsSg +("hlo", +l +)] = "world"; + +146 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(6); + +147 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +150 +SECTION +("shouldot duplicate static JsonString key") { + +151 + gobj +[ +JsSg +("hlo", +ue +)] = "world"; + +152 cڡ +size_t + + gexedSize + = +JSON_OBJECT_SIZE +(1); + +153 +REQUIRE +( +exedSize + = +doc +. +memyUge +()); + +156 +SECTION +("should ignoreull key") { + +158 + gobj +["dummy"] = 42; + +160 cڡ * + gnu + = 0; + +161 + gobj +[ +nu +] = 666; + +163 +REQUIRE +( +obj +. +size +() == 1); + +164 +REQUIRE +( +obj +[ +nu +] ==ull); + +167 +SECTION +("obj[key].to()") { + +168 +JsAay + + gr + = +obj +["hlo"]. +to +(); + +170 +REQUIRE +( +r +. +isNu +(= +l +); + +173 #i +defed +( +HAS_VARIABLE_LENGTH_ARRAY +) && \ + +174 ! +defed +( +SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR +) + +175 +SECTION +("obj[VLA] = str") { + +176  + gi + = 16; + +177  + gv +[ +i +]; + +178 +ry +( +v +, "hello"); + +180 + gobj +[ +v +] = "world"; + +182 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +185 +SECTION +("obj[str] = VLA") { + +186  + gi + = 32; + +187  + gv +[ +i +]; + +188 +ry +( +v +, "world"); + +190 + gobj +["hlo"] = +v +; + +192 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hlo"]. +as +<*>()); + +195 +SECTION +("obj.set(VLA, str)") { + +196  + gi + = 16; + +197  + gv +[ +i +]; + +198 +ry +( +v +, "hello"); + +200 + gobj +[ +v +] = "world"; + +202 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +205 +SECTION +("obj.set(str, VLA)") { + +206  + gi + = 32; + +207  + gv +[ +i +]; + +208 +ry +( +v +, "world"); + +210 + gobj +["hlo"]. +t +( +v +); + +212 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hlo"]. +as +<*>()); + +215 +SECTION +("obj[VLA]") { + +216  + gi + = 16; + +217  + gv +[ +i +]; + +218 +ry +( +v +, "hello"); + +220 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +222 + gobj + = +doc +. +as +< +JsObje +>(); + +223 +REQUIRE +( +d +:: +rg +("wld"= +obj +[ +v +]); + +227 +SECTION +("chain") { + +228 + gobj +. +NeedObje +("hello")["world"] = 123; + +230 +REQUIRE +(123 = +obj +["hlo"]["wld"]. +as +<>()); + +231 +REQUIRE +( +ue + = +obj +["hlo"]["wld"]. +is +<>()); + +232 +REQUIRE +( +l + = +obj +["hlo"]["wld"]. +is +< +bo +>()); + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp + +5  + ~ + +6  + ~ + +8 as + cCuomWr + { + +9 + mpublic +: + +10 + $CuomWr +() {} + +12 +size_t + + $wre +( +ut8_t + +c +) { + +13 +_r +. + `nd +(1, +ic_ +<>( +c +)); + +15 + } +} + +17 +size_t + + $wre +(cڡ +ut8_t + * +s +, +size_t + +n +) { + +18 +_r +. + `nd +( +t_ +( +s +), +n +); + +19  +n +; + +20 + } +} + +22 cڡ + gd +:: +rg + & + $r +() const { + +23  +_r +; + +24 + } +} + +26 + give +: + +27 +CuomWr +(const CustomWriter &); + +28 + gCuomWr + & + gݔ +=(cڡ +CuomWr + &); + +30 + gd +:: +rg + +_r +; + +33 +TEST_CASE +("CustomWriter") { + +34 +DymicJsDocumt + +doc +(4096); + +35 +JsAay + + gy + = +doc +. +to +(); + +36 + gy +. +add +(4); + +37 + gy +. +add +(2); + +39 +SECTION +("serializeJson()") { + +40 +CuomWr + + gwr +; + +41 +rlizeJs +( +y +, +wr +); + +43 +REQUIRE +("[4,2]" = +wr +. +r +()); + +46 +SECTION +("serializeJsonPretty") { + +47 +CuomWr + + gwr +; + +48 +rlizeJsPy +( +y +, +wr +); + +50 +REQUIRE +("[\r\ 4,\r\ 2\r\n]" = +wr +. +r +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp + +5  + ~ + +6  + ~ + +8  + $check +( +JsAay + +y +, +d +:: +rg + +exed +) { + +9 +d +:: +rg + +au +; + +10 +size_t + +auL + = + `rlizeJs +( +y +, +au +); + +11 + `REQUIRE +( +exed + = +au +); + +12 + `REQUIRE +( +auL + = +exed +. + `size +()); + +13 +size_t + +msudL + = + `msuJs +( +y +); + +14 + `REQUIRE +( +msudL + = +exed +. + `size +()); + +15 + } +} + +17 +TEST_CASE +("serializeJson(JsonArray)") { + +18 + gSticJsDocumt +< +JSON_ARRAY_SIZE +(2)> + gdoc +; + +19 +JsAay + + gy + = +doc +. +to +(); + +21 +SECTION +("Empty") { + +22 +check +( +y +, "[]"); + +25 +SECTION +("Null") { + +26 + gy +. +add +( +ic_ +<*>(0)); + +28 +check +( +y +, "[null]"); + +31 +SECTION +("OneString") { + +32 + gy +. +add +("hello"); + +34 +check +( +y +, "[\"hello\"]"); + +37 +SECTION +("TwoStrings") { + +38 + gy +. +add +("hello"); + +39 + gy +. +add +("world"); + +41 +check +( +y +, "[\"hello\",\"world\"]"); + +44 +SECTION +("OneStringOverCapacity") { + +45 + gy +. +add +("hello"); + +46 + gy +. +add +("world"); + +47 + gy +. +add +("lost"); + +49 +check +( +y +, "[\"hello\",\"world\"]"); + +52 +SECTION +("One double") { + +53 + gy +. +add +(3.1415927); + +54 +check +( +y +, "[3.1415927]"); + +57 +SECTION +("OneInteger") { + +58 + gy +. +add +(1); + +60 +check +( +y +, "[1]"); + +63 +SECTION +("TwoIntegers") { + +64 + gy +. +add +(1); + +65 + gy +. +add +(2); + +67 +check +( +y +, "[1,2]"); + +70 +SECTION +("serialized(const char*)") { + +71 + gy +. +add +( +rlized +("{\"key\":\"value\"}")); + +73 +check +( +y +, "[{\"key\":\"value\"}]"); + +76 +SECTION +("serialized(char*)") { + +77  + gtmp +[] = "{\"key\":\"value\"}"; + +78 + gy +. +add +( +rlized +( +tmp +)); + +80 +check +( +y +, "[{\"key\":\"value\"}]"); + +83 +SECTION +("OneIntegerOverCapacity") { + +84 + gy +. +add +(1); + +85 + gy +. +add +(2); + +86 + gy +. +add +(3); + +88 +check +( +y +, "[1,2]"); + +91 +SECTION +("OneTrue") { + +92 + gy +. +add +( +ue +); + +94 +check +( +y +, "[true]"); + +97 +SECTION +("OneFalse") { + +98 + gy +. +add +( +l +); + +100 +check +( +y +, "[false]"); + +103 +SECTION +("TwoBooleans") { + +104 + gy +. +add +( +l +); + +105 + gy +. +add +( +ue +); + +107 +check +( +y +, "[false,true]"); + +110 +SECTION +("OneBooleanOverCapacity") { + +111 + gy +. +add +( +l +); + +112 + gy +. +add +( +ue +); + +113 + gy +. +add +( +l +); + +115 +check +( +y +, "[false,true]"); + +118 +SECTION +("OneEmptyNestedArray") { + +119 + gy +. +NeedAay +(); + +121 +check +( +y +, "[[]]"); + +124 +SECTION +("OneEmptyNestedHash") { + +125 + gy +. +NeedObje +(); + +127 +check +( +y +, "[{}]"); + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp + +5  + ~ + +6  + ~ + +8  + $checkAay +( +JsAay + +y +, +d +:: +rg + +exed +) { + +9 +d +:: +rg + +au +; + +10 +size_t + +auL + = + `rlizeJsPy +( +y +, +au +); + +11 +size_t + +msudL + = + `msuJsPy +( +y +); + +12 + `CHECK +( +auL + = +exed +. + `size +()); + +13 + `CHECK +( +msudL + = +exed +. + `size +()); + +14 + `REQUIRE +( +exed + = +au +); + +15 + } +} + +17 +TEST_CASE +("serializeJsonPretty(JsonArray)") { + +18 +DymicJsDocumt + +doc +(4096); + +19 +JsAay + + gy + = +doc +. +to +(); + +21 +SECTION +("Empty") { + +22 +checkAay +( +y +, "[]"); + +25 +SECTION +("OneElement") { + +26 + gy +. +add +(1); + +28 +checkAay +( +y +, + +34 +SECTION +("TwoElements") { + +35 + gy +. +add +(1); + +36 + gy +. +add +(2); + +38 +checkAay +( +y +, + +45 +SECTION +("EmptyNestedArrays") { + +46 + gy +. +NeedAay +(); + +47 + gy +. +NeedAay +(); + +49 +checkAay +( +y +, + +56 +SECTION +("NestedArrays") { + +57 +JsAay + + gáed1 + = +y +. +NeedAay +(); + +58 + gáed1 +. +add +(1); + +59 + gáed1 +. +add +(2); + +61 +JsObje + + gáed2 + = +y +. +NeedObje +(); + +62 + gáed2 +["key"] = 3; + +64 +checkAay +( +y +, + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9  + $checkObje +(cڡ +JsObje + +obj +, cڡ +d +:: +rg + & +exed +) { + +10  +au +[256]; + +11 +size_t + +auL + = + `rlizeJs +( +obj +, +au +); + +12 +size_t + +msudL + = + `msuJs +( +obj +); + +14 + `REQUIRE +( +exed + = +au +); + +15 + `REQUIRE +( +exed +. + `size +(= +auL +); + +16 + `REQUIRE +( +exed +. + `size +(= +msudL +); + +17 + } +} + +19 +TEST_CASE +("serializeJson(JsonObject)") { + +20 +DymicJsDocumt + +doc +(4096); + +21 +JsObje + + gobj + = +doc +. +to +(); + +23 +SECTION +("EmptyObject") { + +24 +checkObje +( +obj +, "{}"); + +27 +SECTION +("TwoStrings") { + +28 + gobj +["key1"] = "value1"; + +29 + gobj +["key2"] = "value2"; + +31 +checkObje +( +obj +, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); + +34 +SECTION +("RemoveFirst") { + +35 + gobj +["key1"] = "value1"; + +36 + gobj +["key2"] = "value2"; + +37 + gobj +. +move +("key1"); + +39 +checkObje +( +obj +, "{\"key2\":\"value2\"}"); + +42 +SECTION +("RemoveLast") { + +43 + gobj +["key1"] = "value1"; + +44 + gobj +["key2"] = "value2"; + +45 + gobj +. +move +("key2"); + +47 +checkObje +( +obj +, "{\"key1\":\"value1\"}"); + +50 +SECTION +("RemoveUnexistingKey") { + +51 + gobj +["key1"] = "value1"; + +52 + gobj +["key2"] = "value2"; + +53 + gobj +. +move +("key3"); + +55 +checkObje +( +obj +, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); + +58 +SECTION +("ReplaceExistingKey") { + +59 + gobj +["key"] = "value1"; + +60 + gobj +["key"] = "value2"; + +62 +checkObje +( +obj +, "{\"key\":\"value2\"}"); + +65 +SECTION +("TwoIntegers") { + +66 + gobj +["a"] = 1; + +67 + gobj +["b"] = 2; + +68 +checkObje +( +obj +, "{\"a\":1,\"b\":2}"); + +71 +SECTION +("serialized(const char*)") { + +72 + gobj +["a"] = +rlized +("[1,2]"); + +73 + gobj +["b"] = +rlized +("[4,5]"); + +74 +checkObje +( +obj +, "{\"a\":[1,2],\"b\":[4,5]}"); + +77 +SECTION +("Two doubles") { + +78 + gobj +["a"] = 12.34; + +79 + gobj +["b"] = 56.78; + +80 +checkObje +( +obj +, "{\"a\":12.34,\"b\":56.78}"); + +83 +SECTION +("TwoNull") { + +84 + gobj +["a"] = +ic_ +<*>(0); + +85 + gobj +["b"] = +ic_ +<*>(0); + +86 +checkObje +( +obj +, "{\"a\":null,\"b\":null}"); + +89 +SECTION +("TwoBooleans") { + +90 + gobj +["a"] = +ue +; + +91 + gobj +["b"] = +l +; + +92 +checkObje +( +obj +, "{\"a\":true,\"b\":false}"); + +95 +SECTION +("ThreeNestedArrays") { + +96 +DymicJsDocumt + +b +(4096); + +97 +DymicJsDocumt + +c +(4096); + +99 + gobj +. +NeedAay +("a"); + +100 + gobj +["b"] = +b +. +to +< +JsAay +>(); + +101 + gobj +["c"] = +c +. +to +< +JsAay +>(); + +103 +checkObje +( +obj +, "{\"a\":[],\"b\":[],\"c\":[]}"); + +106 +SECTION +("ThreeNestedObjects") { + +107 +DymicJsDocumt + +b +(4096); + +108 +DymicJsDocumt + +c +(4096); + +110 + gobj +. +NeedObje +("a"); + +111 + gobj +["b"] = +b +. +to +< +JsObje +>(); + +112 + gobj +["c"] = +c +. +to +< +JsObje +>(); + +114 +checkObje +( +obj +, "{\"a\":{},\"b\":{},\"c\":{}}"); + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9  + $checkObjePy +(cڡ +JsObje + +obj +, + +10 cڡ +d +:: +rg + +exed +) { + +11  +js +[256]; + +13 +size_t + +auL + = + `rlizeJsPy +( +obj +, +js +); + +14 +size_t + +msudL + = + `msuJsPy +( +obj +); + +16 + `REQUIRE +( +js + = +exed +); + +17 + `REQUIRE +( +exed +. + `size +(= +auL +); + +18 + `REQUIRE +( +exed +. + `size +(= +msudL +); + +19 + } +} + +21 +TEST_CASE +("serializeJsonPretty(JsonObject)") { + +22 +DymicJsDocumt + +doc +(4096); + +23 +JsObje + + gobj + = +doc +. +to +(); + +25 +SECTION +("EmptyObject") { + +26 +checkObjePy +( +obj +, "{}"); + +29 +SECTION +("OneMember") { + +30 + gobj +["key"] = "value"; + +32 +checkObjePy +( +obj +, + +38 +SECTION +("TwoMembers") { + +39 + gobj +["key1"] = "value1"; + +40 + gobj +["key2"] = "value2"; + +42 +checkObjePy +( +obj +, + +49 +SECTION +("EmptyNestedContainers") { + +50 + gobj +. +NeedObje +("key1"); + +51 + gobj +. +NeedAay +("key2"); + +53 +checkObjePy +( +obj +, + +60 +SECTION +("NestedContainers") { + +61 +JsObje + + gáed1 + = +obj +. +NeedObje +("key1"); + +62 + gáed1 +["a"] = 1; + +64 +JsAay + + gáed2 + = +obj +. +NeedAay +("key2"); + +65 + gáed2 +. +add +(2); + +67 +checkObjePy +( +obj +, + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 + gme + < +tyme + + gT +> + +10  + $check +( +T + +vue +, cڡ +d +:: +rg + & +exed +) { + +11 +DymicJsDocumt + + `doc +(4096); + +12 +doc +. +to +< +JsV +>(). + `t +( +vue +); + +13  +bufr +[256] = ""; + +14 +size_t + +tuVue + = + `rlizeJs +( +doc +, +bufr +, (buffer)); + +15 + `REQUIRE +( +exed + = +bufr +); + +16 + `REQUIRE +( +exed +. + `size +(= +tuVue +); + +17 + } +} + +19 +TEST_CASE +("serializeJson(JsonVariant)") { + +20 +SECTION +("Undefined") { + +21 +check +( +JsV +(), "null"); + +24 +SECTION +("Null string") { + +25 +check +( +ic_ +<*>(0), "null"); + +28 +SECTION +("const char*") { + +29 +check +("hello", "\"hello\""); + +32 +SECTION +("string") { + +33 +check +( +d +:: +rg +("hello"), "\"hello\""); + +35 +SECTION +("Escape quotation mark") { + +36 +check +( +d +:: +rg +("hello \"world\""), "\"hello \\\"world\\\"\""); + +39 +SECTION +("Escapeeverse solidus") { + +40 +check +( +d +:: +rg +("hello\\world"), "\"hello\\\\world\""); + +43 +SECTION +("Don'tscape solidus") { + +44 +check +( +d +:: +rg +("fifty/fifty"), "\"fifty/fifty\""); + +47 +SECTION +("Escape backspace") { + +48 +check +( +d +:: +rg +("hello\bworld"), "\"hello\\bworld\""); + +51 +SECTION +("Escape formfeed") { + +52 +check +( +d +:: +rg +("hello\fworld"), "\"hello\\fworld\""); + +55 +SECTION +("Escapeinefeed") { + +56 +check +( +d +:: +rg +("hello\nworld"), "\"hello\\nworld\""); + +59 +SECTION +("Escape carriageeturn") { + +60 +check +( +d +:: +rg +("hello\rworld"), "\"hello\\rworld\""); + +63 +SECTION +("Escapeab") { + +64 +check +( +d +:: +rg +("hello\tworld"), "\"hello\\tworld\""); + +68 +SECTION +("SerializedValue") { + +69 +check +( +rlized +("[1,2]"), "[1,2]"); + +72 +SECTION +("SerializedValue") { + +73 +check +( +rlized +( +d +:: +rg +("[1,2]")), "[1,2]"); + +76 +SECTION +("Double") { + +77 +check +(3.1415927, "3.1415927"); + +80 +SECTION +("Zero") { + +81 +check +(0, "0"); + +84 +SECTION +("Integer") { + +85 +check +(42, "42"); + +88 +SECTION +("NegativeLong") { + +89 +check +(-42, "-42"); + +92 +SECTION +("UnsignedLong") { + +93 +check +(4294967295UL, "4294967295"); + +96 +SECTION +("True") { + +97 +check +( +ue +, "true"); + +100 +SECTION +("OneFalse") { + +101 +check +( +l +, "false"); + +104 #i +ARDUINOJSON_USE_LONG_LONG + + +105 +SECTION +("NegativeInt64") { + +106 +check +(-9223372036854775807 - 1, "-9223372036854775808"); + +109 +SECTION +("PositiveInt64") { + +110 +check +(9223372036854775807, "9223372036854775807"); + +113 +SECTION +("UInt64") { + +114 +check +(18446744073709551615U, "18446744073709551615"); + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/misc.cpp + +1  + ~ + +2  + ~ + +3  + ~ + +5 +TEST_CASE +("serializeJson(MemberProxy)") { + +6 +DymicJsDocumt + +doc +(4096); + +7 +derlizeJs +( +doc +, "{\"hello\":42}"); + +8 +JsObje + + gobj + = +doc +. +as +(); + +9 + gd +:: +rg + +su +; + +11 +rlizeJs +( +obj +["hlo"], +su +); + +13 +REQUIRE +( +su + == "42"); + +16 +TEST_CASE +("serializeJson(ElementProxy)") { + +17 +DymicJsDocumt + +doc +(4096); + +18 +derlizeJs +( +doc +, "[42]"); + +19 +JsAay + + gr + = +doc +. +as +(); + +20 + gd +:: +rg + +su +; + +22 +rlizeJs +( +r +[0], +su +); + +24 +REQUIRE +( +su + == "42"); + +27 +TEST_CASE +("serializeJson(JsonVariantSubscript)") { + +28 +DymicJsDocumt + +doc +(4096); + +29 +derlizeJs +( +doc +, "[42]"); + +30 +JsV + + gv + = +doc +. +as +(); + +31 + gd +:: +rg + +su +; + +33 +rlizeJs +( +v +[0], +su +); + +35 +REQUIRE +( +su + == "42"); + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("operator<<(std::ostream)") { + +10 +DymicJsDocumt + +doc +(4096); + +11 + gd +:: +orgam + +os +; + +13 +SECTION +("JsonVariant containing false") { + +14 +JsV + + gv + = +doc +. +to +(); + +16 + gv +. +t +( +l +); + +17 + gos + << + gv +; + +19 +REQUIRE +("l" = +os +. +r +()); + +22 +SECTION +("JsonVariant containing string") { + +23 +JsV + + gv + = +doc +. +to +(); + +25 + gv +. +t +("coucou"); + +26 + gos + << + gv +; + +28 +REQUIRE +("\"coucou\"" = +os +. +r +()); + +31 +SECTION +("JsonObject") { + +32 +JsObje + + gobje + = +doc +. +to +(); + +33 + gobje +["key"] = "value"; + +35 + gos + << + gobje +; + +37 +REQUIRE +("{\"key\":\"vue\"}" = +os +. +r +()); + +40 +SECTION +("MemberProxy") { + +41 +JsObje + + gobje + = +doc +. +to +(); + +42 + gobje +["key"] = "value"; + +44 + gos + << + gobje +["key"]; + +46 +REQUIRE +("\"vue\"" = +os +. +r +()); + +49 +SECTION +("JsonArray") { + +50 +JsAay + + gy + = +doc +. +to +(); + +51 + gy +. +add +("value"); + +53 + gos + << + gy +; + +55 +REQUIRE +("[\"vue\"]" = +os +. +r +()); + +58 +SECTION +("ElementProxy") { + +59 +JsAay + + gy + = +doc +. +to +(); + +60 + gy +. +add +("value"); + +62 + gos + << + gy +[0]; + +64 +REQUIRE +("\"vue\"" = +os +. +r +()); + + @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("serialize JsonArrayo std::string") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsAay + + gy + = +doc +. +to +(); + +11 + gy +. +add +(4); + +12 + gy +. +add +(2); + +14 +SECTION +("serializeJson()") { + +15 + gd +:: +rg + +js +; + +16 +rlizeJs +( +y +, +js +); + +18 +REQUIRE +("[4,2]" = +js +); + +21 +SECTION +("serializeJsonPretty") { + +22 + gd +:: +rg + +js +; + +23 +rlizeJsPy +( +y +, +js +); + +25 +REQUIRE +("[\r\ 4,\r\ 2\r\n]" = +js +); + +29 +TEST_CASE +("serialize JsonObjecto std::string") { + +30 +DymicJsDocumt + +doc +(4096); + +31 +JsObje + + gobj + = +doc +. +to +(); + +32 + gobj +["key"] = "value"; + +34 +SECTION +("object") { + +35 + gd +:: +rg + +js +; + +36 +rlizeJs +( +doc +, +js +); + +38 +REQUIRE +("{\"key\":\"vue\"}" = +js +); + +41 +SECTION +("serializeJsonPretty") { + +42 + gd +:: +rg + +js +; + +43 +rlizeJsPy +( +doc +, +js +); + +45 +REQUIRE +("{\r\ \"key\": \"vue\"\r\n}" = +js +); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/add.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonVariant::add()") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsV + + gv + = +doc +. +to +(); + +13 +SECTION +("integer") { + +14 + gv +. +add +(42); + +16 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "[42]"); + +19 +SECTION +("const char*") { + +20 + gv +. +add +("hello"); + +22 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "[\"hello\"]"); + +25 +SECTION +("std::string") { + +26 + gv +. +add +( +d +:: +rg +("hello")); + +28 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "[\"hello\"]"); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/as.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +mea + + gmy + { + +10 +usg + + gARDUINOJSON_NAMESPACE +:: +isf +; + +13 +TEST_CASE +("JsonVariant::as()") { + +14 cڡ * + gnu + = 0; + +16 +DymicJsDocumt + +doc +(4096); + +17 +JsV + + gv + = +doc +. +to +(); + +19 +SECTION +("not set") { + +20 +REQUIRE +( +l + = +v +. +as +< +bo +>()); + +21 +REQUIRE +(0 = +v +. +as +<>()); + +22 +REQUIRE +(0.0= +v +. +as +<>()); + +23 +REQUIRE +(0 = +v +. +as +<*>()); + +24 +REQUIRE +("nu" = +v +. +as +< +d +:: +rg +>()); + +27 +SECTION +("set(4.2)") { + +28 + gv +. +t +(4.2); + +30 +REQUIRE +( +v +. +as +< +bo +>()); + +31 +REQUIRE +(0 = +v +. +as +()); + +32 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "4.2"); + +33 +REQUIRE +( +v +. +as +<>() == 4L); + +34 +REQUIRE +( +v +. +as +<>() == 4U); + +37 +SECTION +("set(0.0)") { + +38 + gv +. +t +(0.0); + +40 +REQUIRE +( +v +. +as +< +bo +>(= +l +); + +41 +REQUIRE +( +v +. +as +<>() == 0L); + +44 +SECTION +("set(false)") { + +45 + gv +. +t +( +l +); + +47 +REQUIRE +( +l + = +v +. +as +< +bo +>()); + +48 +REQUIRE +( +v +. +as +<>() == 0.0); + +49 +REQUIRE +( +v +. +as +<>() == 0L); + +50 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "false"); + +53 +SECTION +("set(true)") { + +54 + gv +. +t +( +ue +); + +56 +REQUIRE +( +v +. +as +< +bo +>()); + +57 +REQUIRE +( +v +. +as +<>() == 1.0); + +58 +REQUIRE +( +v +. +as +<>() == 1L); + +59 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "true"); + +62 +SECTION +("set(42L)") { + +63 + gv +. +t +(42L); + +65 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +66 +REQUIRE +( +v +. +as +<>() == 42.0); + +67 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "42"); + +70 +SECTION +("set(-42L)") { + +71 + gv +. +t +(-42L); + +73 +REQUIRE +( +v +. +as +<>() == -42.0); + +74 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "-42"); + +77 +SECTION +("set(0L)") { + +78 + gv +. +t +(0L); + +80 +REQUIRE +( +v +. +as +< +bo +>(= +l +); + +81 +REQUIRE +( +v +. +as +<>() == 0.0); + +84 +SECTION +("set(null)") { + +85 + gv +. +t +( +nu +); + +87 +REQUIRE +( +v +. +as +< +bo +>(= +l +); + +88 +REQUIRE +( +v +. +as +<>() == 0.0); + +89 +REQUIRE +( +v +. +as +<>() == 0L); + +90 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "null"); + +93 +SECTION +("set(\"42\")") { + +94 + gv +. +t +("42"); + +96 +REQUIRE +( +v +. +as +<>() == 42L); + +99 +SECTION +("set(\"hello\")") { + +100 + gv +. +t +("hello"); + +102 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +103 +REQUIRE +( +v +. +as +<>() == 0L); + +104 +REQUIRE +( +v +. +as +(= +d +:: +rg +("hello")); + +105 +REQUIRE +( +v +. +as +<*>(= +d +:: +rg +("hello")); + +106 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == std::string("hello")); + +109 +SECTION +("set(std::string(\"4.2\"))") { + +110 + gv +. +t +( +d +:: +rg +("4.2")); + +112 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +113 +REQUIRE +( +v +. +as +<>() == 4L); + +114 +REQUIRE +( +v +. +as +<>() == 4.2); + +115 +REQUIRE +( +v +. +as +<*>(= +d +:: +rg +("4.2")); + +116 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == std::string("4.2")); + +119 +SECTION +("set(\"true\")") { + +120 + gv +. +t +("true"); + +122 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +123 +REQUIRE +( +v +. +as +<>() == 0); + +126 +SECTION +("set(-1e300)") { + +127 + gv +. +t +(-1e300); + +129 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +130 +REQUIRE +( +v +. +as +<>() == -1e300); + +131 +REQUIRE +( +v +. +as +<>() < 0); + +132 +REQUIRE +( +my +:: +isf +( +v +. +as +<>())); + +135 +SECTION +("set(1e300)") { + +136 + gv +. +t +(1e300); + +138 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +139 +REQUIRE +( +v +. +as +<>() == 1e300); + +140 +REQUIRE +( +v +. +as +<>() > 0); + +141 +REQUIRE +( +my +:: +isf +( +v +. +as +<>())); + +144 +SECTION +("set(1e-300)") { + +145 + gv +. +t +(1e-300); + +147 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +148 +REQUIRE +( +v +. +as +<>() == 1e-300); + +149 +REQUIRE +( +v +. +as +<>() == 0); + +152 +SECTION +("to()") { + +153 +JsObje + + gobj + = +v +. +to +(); + +154 + gobj +["key"] = "value"; + +156 +SECTION +("as()") { + +157 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +160 +SECTION +("as()") { + +161 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == std::string("{\"key\":\"value\"}")); + +164 +SECTION +("ObjectAsJsonObject") { + +165 +JsObje + + go + = +v +. +as +(); + +166 +REQUIRE +( +o +. +size +() == 1); + +167 +REQUIRE +( +o +["key"] = +d +:: +rg +("value")); + +171 +SECTION +("to()") { + +172 +JsAay + + gr + = +v +. +to +(); + +173 + gr +. +add +(4); + +174 + gr +. +add +(2); + +176 +SECTION +("as()") { + +177 +REQUIRE +( +v +. +as +< +bo +>(= +ue +); + +180 +SECTION +("as()") { + +181 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == std::string("[4,2]")); + +184 +SECTION +("as()") { + +185 +JsAay + + ga + = +v +. +as +(); + +186 +REQUIRE +( +a +. +size +() == 2); + +187 +REQUIRE +( +a +[0] == 4); + +188 +REQUIRE +( +a +[1] == 2); + +192 #i +ARDUINOJSON_USE_LONG_LONG + + +193 +SECTION +("Smallest int64egative") { + +194 + gv +. +t +("-9223372036854775808"); + +195 +REQUIRE +( +v +. +as +<>() == -9223372036854775807 - 1); + +198 +SECTION +("Biggerst int64ositive") { + +199 + gv +. +t +("9223372036854775807"); + +200 +REQUIRE +( +v +. +as +<>() == 9223372036854775807); + +204 +SECTION +("should work on JsonVariantConst") { + +205 + gv +. +t +("hello"); + +207 +JsVCڡ + + gcv + = +v +; + +209 +REQUIRE +( +cv +. +as +< +bo +>(= +ue +); + +210 +REQUIRE +( +cv +. +as +<>() == 0L); + +211 +REQUIRE +( +cv +. +as +(= +d +:: +rg +("hello")); + +212 +REQUIRE +( +cv +. +as +<*>(= +d +:: +rg +("hello")); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/clear.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonVariant::clear()") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsV + + gv + = +doc +. +to +(); + +13 +SECTION +("size goes backo zero") { + +14 + gv +. +add +(42); + +15 + gv +. +r +(); + +17 +REQUIRE +( +v +. +size +() == 0); + +20 +SECTION +("isNull()eturnrue") { + +21 + gv +. +add +("hello"); + +22 + gv +. +r +(); + +24 +REQUIRE +( +v +. +isNu +(= +ue +); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/compare.cpp + +5  + ~ + +6  + ~ + +8 + gme + < +tyme + + gT +> + +9  + $checkEqus +( +T + +a +, T +b +) { + +10 +DymicJsDocumt + + `doc +(4096); + +11 +JsV + +v + = +doc +. +to +(); + +12 +v +. + `t +( +a +); + +14 + `REQUIRE +( +b + = +v +); + +15 + `REQUIRE +( +v + = +b +); + +16 + `REQUIRE +( +b + < +v +); + +17 + `REQUIRE +( +v + < +b +); + +18 + `REQUIRE +( +b + > +v +); + +19 + `REQUIRE +( +v + > +b +); + +21 + `REQUIRE_FALSE +( +b + ! +v +); + +22 + `REQUIRE_FALSE +( +v + ! +b +); + +23 + `REQUIRE_FALSE +( +b + > +v +); + +24 + `REQUIRE_FALSE +( +v + > +b +); + +25 + `REQUIRE_FALSE +( +b + < +v +); + +26 + `REQUIRE_FALSE +( +v + < +b +); + +27 + } +} + +29 + gme + < +tyme + + gT +> + +30  + $checkG +( +T + +a +, T +b +) { + +31 +DymicJsDocumt + + `doc +(4096); + +32 +JsV + +v + = +doc +. +to +(); + +33 +v +. + `t +( +a +); + +35 + `REQUIRE +( +v + > +b +); + +36 + `REQUIRE +( +b + < +v +); + +37 + `REQUIRE +( +v + ! +b +); + +38 + `REQUIRE +( +b + ! +v +); + +40 + `REQUIRE_FALSE +( +v + < +b +); + +41 + `REQUIRE_FALSE +( +b + > +v +); + +42 + `REQUIRE_FALSE +( +v + = +b +); + +43 + `REQUIRE_FALSE +( +b + = +v +); + +44 + } +} + +46 + gme + < +tyme + + gT +> + +47  + $checkLow +( +T + +a +, T +b +) { + +48 +DymicJsDocumt + + `doc +(4096); + +49 +JsV + +v + = +doc +. +to +(); + +50 +v +. + `t +( +a +); + +52 + `REQUIRE +( +v + < +b +); + +53 + `REQUIRE +( +b + > +v +); + +54 + `REQUIRE +( +v + ! +b +); + +55 + `REQUIRE +( +b + ! +v +); + +57 + `REQUIRE_FALSE +( +v + > +b +); + +58 + `REQUIRE_FALSE +( +b + < +v +); + +59 + `REQUIRE_FALSE +( +v + = +b +); + +60 + `REQUIRE_FALSE +( +b + = +v +); + +61 + } +} + +63 + gme + < +tyme + + gT +> + +64  + $checkComriss +( +T + +low +, T +mid +, T +high +) { + +65 + `checkEqus +( +mid +, mid); + +66 + `checkG +( +mid +, +low +); + +67 + `checkLow +( +mid +, +high +); + +68 + } +} + +70 +TEST_CASE +("JsonVariant comparisons") { + +71 cڡ * + gnu + = 0; + +73 +SECTION +("Double") { + +74 + gcheckComriss +<>(123.44, 123.45, 123.46); + +77 +SECTION +("Float") { + +78 + gcheckComriss +<>(123.44f, 123.45f, 123.46f); + +81 +SECTION +("SChar") { + +82 + gcheckComriss +(122, 123, 124); + +85 +SECTION +("SInt") { + +86 + gcheckComriss +(122, 123, 124); + +89 +SECTION +("SLong") { + +90 + gcheckComriss +(122L, 123L, 124L); + +93 +SECTION +("SShort") { + +94 + gcheckComriss +(122, 123, 124); + +97 +SECTION +("UChar") { + +98 + gcheckComriss +<>(122, 123, 124); + +101 +SECTION +("UInt") { + +102 + gcheckComriss +<>(122, 123, 124); + +105 +SECTION +("ULong") { + +106 + gcheckComriss +<>(122L, 123L, 124L); + +109 +SECTION +("UShort") { + +110 + gcheckComriss +<>(122, 123, 124); + +113 +SECTION +("null") { + +114 +DymicJsDocumt + +doc +(4096); + +115 +JsV + + gv + = +doc +. +to +(); + +116 + gv +. +t +( +nu +); + +118 +REQUIRE +( +v + == variant); + +119 +REQUIRE_FALSE +( +v + != variant); + +121 +REQUIRE +( +v + = +nu +); + +122 +REQUIRE_FALSE +( +v + ! +nu +); + +124 +REQUIRE +( +v + != "null"); + +125 +REQUIRE_FALSE +( +v + == "null"); + +128 +SECTION +("StringLiteral") { + +129 +DymicJsDocumt + +doc +(4096); + +130 +derlizeJs +( +doc +, "\"hello\""); + +131 +JsV + + gv + = +doc +. +as +(); + +133 +REQUIRE +( +v + == variant); + +134 +REQUIRE_FALSE +( +v + != variant); + +136 +REQUIRE +( +v + == "hello"); + +137 +REQUIRE_FALSE +( +v + != "hello"); + +139 +REQUIRE +( +v + != "world"); + +140 +REQUIRE_FALSE +( +v + == "world"); + +142 +REQUIRE +( +v + ! +nu +); + +143 +REQUIRE_FALSE +( +v + = +nu +); + +145 +REQUIRE +("hlo" = +v +); + +146 +REQUIRE_FALSE +("hlo" ! +v +); + +148 +REQUIRE +("wld" ! +v +); + +149 +REQUIRE_FALSE +("wld" = +v +); + +151 +REQUIRE +( +nu + ! +v +); + +152 +REQUIRE_FALSE +( +nu + = +v +); + +155 +SECTION +("String") { + +156 +DymicJsDocumt + +doc +(4096); + +157 +JsV + + gv + = +doc +. +to +(); + +158 + gv +. +t +("hello"); + +160 +REQUIRE +( +v + == variant); + +161 +REQUIRE_FALSE +( +v + != variant); + +163 +REQUIRE +( +v + = +d +:: +rg +("hello")); + +164 +REQUIRE_FALSE +( +v + ! +d +:: +rg +("hello")); + +166 +REQUIRE +( +v + ! +d +:: +rg +("world")); + +167 +REQUIRE_FALSE +( +v + = +d +:: +rg +("world")); + +169 +REQUIRE +( +v + ! +nu +); + +170 +REQUIRE_FALSE +( +v + = +nu +); + +172 +REQUIRE +( +d +:: +rg +("hlo"= +v +); + +173 +REQUIRE_FALSE +( +d +:: +rg +("hlo"! +v +); + +175 +REQUIRE +( +d +:: +rg +("wld"! +v +); + +176 +REQUIRE_FALSE +( +d +:: +rg +("wld"= +v +); + +178 +REQUIRE +( +nu + ! +v +); + +179 +REQUIRE_FALSE +( +nu + = +v +); + +182 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +183 +SECTION +("VLAquals") { + +184  + gi + = 16; + +185  + gv +[ +i +]; + +186 +ry +( +v +, "hello"); + +188 +DymicJsDocumt + +doc +(4096); + +189 +JsV + + gv + = +doc +. +to +(); + +190 + gv +. +t +("hello"); + +192 +REQUIRE +(( +v + = +v +)); + +193 +REQUIRE +(( +v + = +v +)); + +194 +REQUIRE_FALSE +(( +v + ! +v +)); + +195 +REQUIRE_FALSE +(( +v + ! +v +)); + +198 +SECTION +("VLA differs") { + +199  + gi + = 16; + +200  + gv +[ +i +]; + +201 +ry +( +v +, "hello"); + +203 +DymicJsDocumt + +doc +(4096); + +204 +JsV + + gv + = +doc +. +to +(); + +205 + gv +. +t +("world"); + +207 +REQUIRE +(( +v + ! +v +)); + +208 +REQUIRE +(( +v + ! +v +)); + +209 +REQUIRE_FALSE +(( +v + = +v +)); + +210 +REQUIRE_FALSE +(( +v + = +v +)); + +214 +DymicJsDocumt + +doc1 +(4096), +doc2 +(4096), +doc3 +(4096); + +215 +JsV + + gv1 + = +doc1 +. +to +(); + +216 +JsV + + gv2 + = +doc2 +. +to +(); + +217 +JsV + + gv3 + = +doc3 +. +to +(); + +219 +SECTION +("Variants containing integers") { + +220 + gv1 +. +t +(42); + +221 + gv2 +. +t +(42); + +222 + gv3 +. +t +(666); + +224 +REQUIRE +( +v1 + = +v2 +); + +225 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +227 +REQUIRE +( +v1 + ! +v3 +); + +228 +REQUIRE_FALSE +( +v1 + = +v3 +); + +231 +SECTION +("Variants containinginked strings") { + +233  + ghlo1 +[] = "hello"; + +234  + ghlo2 +[] = "hello"; + +235 +REQUIRE +( +hlo1 + ! +hlo2 +); + +237 + gv1 +. +t +( +hlo1 +); + +238 + gv2 +. +t +( +hlo2 +); + +239 + gv3 +. +t +("world"); + +241 +REQUIRE +( +v1 + = +v2 +); + +242 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +244 +REQUIRE +( +v1 + ! +v3 +); + +245 +REQUIRE_FALSE +( +v1 + = +v3 +); + +248 +SECTION +("Variants containing owned strings") { + +249 + gv1 +. +t +( +d +:: +rg +("hello")); + +250 + gv2 +. +t +( +d +:: +rg +("hello")); + +251 + gv3 +. +t +( +d +:: +rg +("world")); + +253 +REQUIRE +( +v1 + = +v2 +); + +254 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +256 +REQUIRE +( +v1 + ! +v3 +); + +257 +REQUIRE_FALSE +( +v1 + = +v3 +); + +260 +SECTION +("Variants containinginkedaws") { + +262  + ghlo1 +[] = "hello"; + +263  + ghlo2 +[] = "hello"; + +264 +REQUIRE +( +hlo1 + ! +hlo2 +); + +266 + gv1 +. +t +( +rlized +( +hlo1 +)); + +267 + gv2 +. +t +( +rlized +( +hlo2 +)); + +268 + gv3 +. +t +( +rlized +("world")); + +270 +REQUIRE +( +v1 + = +v2 +); + +271 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +273 +REQUIRE +( +v1 + ! +v3 +); + +274 +REQUIRE_FALSE +( +v1 + = +v3 +); + +277 +SECTION +("Variants containing ownedaws") { + +278 + gv1 +. +t +( +rlized +( +d +:: +rg +("hello"))); + +279 + gv2 +. +t +( +rlized +( +d +:: +rg +("hello"))); + +280 + gv3 +. +t +( +rlized +( +d +:: +rg +("world"))); + +282 +REQUIRE +( +v1 + = +v2 +); + +283 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +285 +REQUIRE +( +v1 + ! +v3 +); + +286 +REQUIRE_FALSE +( +v1 + = +v3 +); + +289 +SECTION +("Variants containing mixed strings (issue #1051)") { + +290 + gv1 +. +t +("hello"); + +291 + gv2 +. +t +( +d +:: +rg +("hello")); + +293 +REQUIRE +( +v1 + = +v2 +); + +294 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +296 +REQUIRE +( +v2 + = +v1 +); + +297 +REQUIRE_FALSE +( +v2 + ! +v1 +); + +300 +SECTION +("Variants containing double") { + +301 + gv1 +. +t +(42.0); + +302 + gv2 +. +t +(42.0); + +303 + gv3 +. +t +(666.0); + +305 +REQUIRE +( +v1 + = +v2 +); + +306 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +308 +REQUIRE +( +v1 + ! +v3 +); + +309 +REQUIRE_FALSE +( +v1 + = +v3 +); + +312 +SECTION +("BoolInVariant") { + +313 + gv1 +. +t +( +ue +); + +314 + gv2 +. +t +( +ue +); + +315 + gv3 +. +t +( +l +); + +317 +REQUIRE +( +v1 + = +v2 +); + +318 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +320 +REQUIRE +( +v1 + ! +v3 +); + +321 +REQUIRE_FALSE +( +v1 + = +v3 +); + +324 +SECTION +("ArrayInVariant") { + +325 +JsAay + + gy1 + = +v1 +. +to +(); + +326 +JsAay + + gy2 + = +v2 +. +to +(); + +328 + gy1 +. +add +(42); + +329 + gy2 +. +add +(42); + +331 +REQUIRE +( +v1 + = +v2 +); + +332 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +334 +REQUIRE +( +v1 + ! +v3 +); + +335 +REQUIRE_FALSE +( +v1 + = +v3 +); + +338 +SECTION +("ObjectInVariant") { + +339 +JsObje + + gobj1 + = +v1 +. +to +(); + +340 +JsObje + + gobj2 + = +v2 +. +to +(); + +342 + gobj1 +["hello"] = "world"; + +343 + gobj2 +["hello"] = "world"; + +345 +REQUIRE +( +v1 + = +v2 +); + +346 +REQUIRE_FALSE +( +v1 + ! +v2 +); + +348 +REQUIRE +( +v1 + ! +v3 +); + +349 +REQUIRE_FALSE +( +v1 + = +v3 +); + +353 as + cVComrisiFixtu + { + +354 + mive +: + +355 +SticJsDocumt +<256> +doc +; + +356 +JsV + + mv +; + +358 + mpublic +: + +359 + $VComrisiFixtu +(: + `v +( +doc +. +to +< +JsV +>()) {} + +361 +eed +: + +362 +me + < +tyme + +T +> + +363  + $tVue +(cڡ +T +& +vue +) { + +364 +v +. + `t +( +vue +); + +365 + } +} + +367 + gme + < +tyme + + gT +> + +368  + $asEqusTo +(cڡ +T +& +vue +) { + +369 + `REQUIRE +( +v + = +vue +); + +370 + `REQUIRE +( +vue + = +v +); + +372 + `REQUIRE_FALSE +( +v + ! +vue +); + +373 + `REQUIRE_FALSE +( +vue + ! +v +); + +374 + } +} + +376 + gme + < +tyme + + gT +> + +377  + $asDifrsFrom +(cڡ +T +& +vue +) { + +378 + `REQUIRE +( +v + ! +vue +); + +379 + `REQUIRE +( +vue + ! +v +); + +381 + `REQUIRE_FALSE +( +v + = +vue +); + +382 + `REQUIRE_FALSE +( +vue + = +v +); + +383 + } +} + +385 + gme + < +tyme + + gT +> + +386  + $asGTh +(cڡ +T +& +vue +) { + +387 + `REQUIRE +(( +v + > +vue +)); + +388 + `REQUIRE +(( +v + > +vue +)); + +389 + `REQUIRE +( +vue + < +v +); + +390 + `REQUIRE +( +vue + < +v +); + +392 + `REQUIRE_FALSE +(( +v + < +vue +)); + +393 + `REQUIRE_FALSE +(( +v + < +vue +)); + +394 + `REQUIRE_FALSE +( +vue + > +v +); + +395 + `REQUIRE_FALSE +( +vue + > +v +); + +396 + } +} + +398 + gme + < +tyme + + gT +> + +399  + $asLowTh +(cڡ +T +& +vue +) { + +400 + `REQUIRE +( +v + < +vue +); + +401 + `REQUIRE +( +v + < +vue +); + +402 + `REQUIRE +( +vue + > +v +); + +403 + `REQUIRE +( +vue + > +v +); + +405 + `REQUIRE_FALSE +( +v + > +vue +); + +406 + `REQUIRE_FALSE +( +v + > +vue +); + +407 + `REQUIRE_FALSE +( +vue + < +v +); + +408 + `REQUIRE_FALSE +( +vue + < +v +); + +409 + } +} + +412 +TEST_CASE_METHOD +( +VComrisiFixtu +, + +414 +SECTION +("null") { + +415 +asDifrsFrom +(3); + +416 +asDifrsFrom +("world"); + +419 +SECTION +("string") { + +420 +tVue +("hello"); + +421 +asEqusTo +("hello"); + +422 +asDifrsFrom +(3); + +423 +asDifrsFrom +("world"); + +424 +asGTh +("helln"); + +425 +asLowTh +("hellp"); + +428 +SECTION +("positive integer") { + +429 +tVue +(42); + +430 +asEqusTo +(42); + +431 +asDifrsFrom +(43); + +432 +asGTh +(41); + +433 +asLowTh +(43); + +434 +asDifrsFrom +("world"); + +437 +SECTION +("negative integer") { + +438 +tVue +(-42); + +439 +asEqusTo +(-42); + +440 +asDifrsFrom +(42); + +441 +asGTh +(-43); + +442 +asLowTh +(-41); + +443 +asDifrsFrom +("world"); + +446 +SECTION +("double") { + +447 +tVue +(42.0); + +448 +asEqusTo +(42.0); + +449 +asDifrsFrom +(42.1); + +450 +asGTh +(41.0); + +451 +asLowTh +(43.0); + +452 +asDifrsFrom +("42.0"); + +455 +SECTION +("true") { + +456 +tVue +( +ue +); + +457 +asEqusTo +( +ue +); + +458 +asDifrsFrom +( +l +); + +459 +asDifrsFrom +(1); + +460 +asDifrsFrom +("true"); + +461 +asDifrsFrom +(1.0); + +462 +asGTh +( +l +); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/containsKey.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 cڡ * + gnu + = 0; + +11 +TEST_CASE +("JsonVariant::containsKey()") { + +12 +DymicJsDocumt + +doc +(4096); + +13 +JsV + + gv + = +doc +. +to +(); + +15 +SECTION +("containsKey(const char*)eturnsrue") { + +16 + gv +["hello"] = "world"; + +18 +REQUIRE +( +v +. +cڏsKey +("hlo"= +ue +); + +19 +REQUIRE +( +v +. +cڏsKey +("wld"= +l +); + +22 +SECTION +("containsKey(std::string)eturnsrue") { + +23 + gv +["hello"] = "world"; + +25 +REQUIRE +( +v +. +cڏsKey +( +d +:: +rg +("hlo")= +ue +); + +26 +REQUIRE +( +v +. +cڏsKey +( +d +:: +rg +("wld")= +l +); + +30 +TEST_CASE +("JsonVariantConst::containsKey()") { + +31 +DymicJsDocumt + +doc +(4096); + +32 + gdoc +["hello"] = "world"; + +33 +JsVCڡ + + gcv + = +doc +. +as +< +JsV +>(); + +35 +SECTION +("containsKey(const char*)eturnsrue") { + +36 +REQUIRE +( +cv +. +cڏsKey +("hlo"= +ue +); + +37 +REQUIRE +( +cv +. +cڏsKey +("wld"= +l +); + +40 +SECTION +("containsKey(std::string)eturnsrue") { + +41 +REQUIRE +( +cv +. +cڏsKey +( +d +:: +rg +("hlo")= +ue +); + +42 +REQUIRE +( +cv +. +cڏsKey +( +d +:: +rg +("wld")= +l +); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/copy.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonVariant::set(JsonVariant)") { + +9 +DymicJsDocumt + +doc1 +(4096); + +10 +DymicJsDocumt + +doc2 +(4096); + +11 +JsV + + gv1 + = +doc1 +. +to +(); + +12 +JsV + + gv2 + = +doc2 +. +to +(); + +14 +SECTION +("stores JsonArray by copy") { + +15 +JsAay + + gr + = +doc2 +. +to +(); + +16 +JsObje + + gobj + = +r +. +NeedObje +(); + +17 + gobj +["hello"] = "world"; + +19 + gv1 +. +t +( +r +); + +21 + gr +[0] = 666; + +22 +REQUIRE +( +v1 +. +as +< +d +:: +rg +>() == "[{\"hello\":\"world\"}]"); + +25 +SECTION +("stores JsonObject by copy") { + +26 +JsObje + + gobj + = +doc2 +. +to +(); + +27 +JsAay + + gr + = +obj +. +NeedAay +("value"); + +28 + gr +. +add +(42); + +30 + gv1 +. +t +( +obj +); + +32 + gobj +["value"] = 666; + +33 +REQUIRE +( +v1 +. +as +< +d +:: +rg +>() == "{\"value\":[42]}"); + +36 +SECTION +("stores const char* byeference") { + +37 + gv1 +. +t +("hello!!"); + +38 + gv2 +. +t +( +v1 +); + +40 +REQUIRE +( +doc1 +. +memyUge +() == 0); + +41 +REQUIRE +( +doc2 +. +memyUge +() == 0); + +44 +SECTION +("stores char* by copy") { + +45  + gr +[] = "hello!!"; + +47 + gv1 +. +t +( +r +); + +48 + gv2 +. +t +( +v1 +); + +50 +REQUIRE +( +doc1 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + +51 +REQUIRE +( +doc2 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + +54 +SECTION +("stores std::string by copy") { + +55 + gv1 +. +t +( +d +:: +rg +("hello!!")); + +56 + gv2 +. +t +( +v1 +); + +58 +REQUIRE +( +doc1 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + +59 +REQUIRE +( +doc2 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + +62 +SECTION +("stores Serialized byeference") { + +63 + gv1 +. +t +( +rlized +("hlo!!", +JSON_STRING_SIZE +(8))); + +64 + gv2 +. +t +( +v1 +); + +66 +REQUIRE +( +doc1 +. +memyUge +() == 0); + +67 +REQUIRE +( +doc2 +. +memyUge +() == 0); + +70 +SECTION +("stores Serialized by copy") { + +71  + gr +[] = "hello!!"; + +72 + gv1 +. +t +( +rlized +( +r +, 8)); + +73 + gv2 +. +t +( +v1 +); + +75 +REQUIRE +( +doc1 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + +76 +REQUIRE +( +doc2 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + +79 +SECTION +("stores Serialized by copy") { + +80 + gv1 +. +t +( +rlized +( +d +:: +rg +("hello!!!"))); + +81 + gv2 +. +t +( +v1 +); + +83 +REQUIRE +( +doc1 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + +84 +REQUIRE +( +doc2 +. +memyUge +(= +JSON_STRING_SIZE +(8)); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/createNested.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonVariant::createNestedObject()") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsV + + gv + = +doc +. +to +(); + +13 +SECTION +("promotesorray") { + +14 +JsObje + + gobj + = +v +. +NeedObje +(); + +15 + gobj +["value"] = 42; + +17 +REQUIRE +( +v +. +is +< +JsAay +>(= +ue +); + +18 +REQUIRE +( +v +[0]["value"] == 42); + +19 +REQUIRE +( +obj +. +isNu +(= +l +); + +22 +SECTION +("works on MemberProxy") { + +23 +JsObje + + gobj + = +v +["ems"]. +NeedObje +(); + +24 + gobj +["value"] = 42; + +26 +REQUIRE +( +v +["items"][0]["value"] == 42); + +30 +TEST_CASE +("JsonVariant::createNestedArray()") { + +31 +DymicJsDocumt + +doc +(4096); + +32 +JsV + + gv + = +doc +. +to +(); + +34 +SECTION +("promotesorray") { + +35 +JsAay + + gr + = +v +. +NeedAay +(); + +37 +REQUIRE +( +v +. +is +< +JsAay +>(= +ue +); + +38 +REQUIRE +( +r +. +isNu +(= +l +); + +41 +SECTION +("works on MemberProxy") { + +42 +JsAay + + gr + = +v +["ems"]. +NeedAay +(); + +43 + gr +. +add +(42); + +45 +REQUIRE +( +v +["items"][0][0] == 42); + +49 +TEST_CASE +("JsonVariant::createNestedObject(key)") { + +50 +DymicJsDocumt + +doc +(4096); + +51 +JsV + + gv + = +doc +. +to +(); + +53 +SECTION +("promoteso object") { + +54 +JsObje + + gobj + = +v +. +NeedObje +("weather"); + +55 + gobj +["temp"] = 42; + +57 +REQUIRE +( +v +. +is +< +JsObje +>(= +ue +); + +58 +REQUIRE +( +v +["weather"]["temp"] == 42); + +61 +SECTION +("works on MemberProxy") { + +62 +JsObje + + gobj + = +v +["us"]. +NeedObje +("weather"); + +63 + gobj +["temp"] = 42; + +65 +REQUIRE +( +v +["status"]["weather"]["temp"] == 42); + +69 +TEST_CASE +("JsonVariant::createNestedArray(key)") { + +70 +DymicJsDocumt + +doc +(4096); + +71 +JsV + + gv + = +doc +. +to +(); + +73 +SECTION +("promoteso object") { + +74 +JsAay + + gr + = +v +. +NeedAay +("items"); + +76 +REQUIRE +( +v +. +is +< +JsObje +>(= +ue +); + +77 +REQUIRE +( +r +. +isNu +(= +l +); + +80 +SECTION +("works on MemberProxy") { + +81 +JsAay + + gr + = +v +["wth"]. +NeedAay +("temp"); + +82 + gr +. +add +(42); + +84 +REQUIRE +( +v +["weather"]["temp"][0] == 42); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/is.cpp + +5  + ~ + +6  + ~ + +8 + gme + < +tyme + + gTV +> + +9  + $checkIsAay +( +TV + +v +) { + +10 + `REQUIRE +( +v +. +me + +is +< +JsAay +>()); + +12 + `REQUIRE_FALSE +( +v +. +me + +is +< +bo +>()); + +13 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +14 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +15 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +16 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +17 + `REQUIRE_FALSE +( +v +. +me + +is +()); + +18 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsObje +>()); + +19 + } +} + +21  + $Aay +( +JsAay + +vue +) { + +22 +DymicJsDocumt + + `doc +(4096); + +24 +JsV + +v + = +doc +. +to +(); + +25 +v +. + `t +( +vue +); + +27 + `checkIsAay +( +v +); + +29 +JsVCڡ + +cv + = +v +; + +30 + `checkIsAay +( +cv +); + +31 + } +} + +33 + gme + < +tyme + + gTV +> + +34  + $checkIsBo +( +TV + +v +) { + +35 + `REQUIRE +( +v +. +me + +is +< +bo +>()); + +37 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +38 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +39 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +40 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +41 + `REQUIRE_FALSE +( +v +. +me + +is +()); + +42 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsAay +>()); + +43 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsObje +>()); + +44 + } +} + +46  + $Bo +( +bo + +vue +) { + +47 +DymicJsDocumt + + `doc +(4096); + +48 +JsV + +v + = +doc +. +to +(); + +49 +v +. + `t +( +vue +); + +51 + `checkIsBo +( +v +); + +52 + `checkIsBo +( + `JsVCڡ +( +v +)); + +53 + } +} + +55 + gme + < +tyme + + gTV +> + +56  + $checkIsFlt +( +TV + +v +) { + +57 + `REQUIRE +( +v +. +me + +is +<>()); + +58 + `REQUIRE +( +v +. +me + +is +<>()); + +60 + `REQUIRE_FALSE +( +v +. +me + +is +< +bo +>()); + +61 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +62 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +63 + `REQUIRE_FALSE +( +v +. +me + +is +()); + +64 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsAay +>()); + +65 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsObje +>()); + +66 + } +} + +68  + $Flt +( +vue +) { + +69 +DymicJsDocumt + + `doc +(4096); + +70 +JsV + +v + = +doc +. +to +(); + +71 +v +. + `t +( +vue +); + +73 + `checkIsFlt +( +v +); + +74 + `checkIsFlt +( + `JsVCڡ +( +v +)); + +75 + } +} + +77 + gme + < +tyme + + gTV +> + +78  + $checkIsIeg +( +TV + +v +) { + +79 + `REQUIRE +( +v +. +me + +is +<>()); + +80 + `REQUIRE +( +v +. +me + +is +<>()); + +81 + `REQUIRE +( +v +. +me + +is +<>()); + +82 + `REQUIRE +( +v +. +me + +is +<>()); + +84 + `REQUIRE_FALSE +( +v +. +me + +is +< +bo +>()); + +85 + `REQUIRE_FALSE +( +v +. +me + +is +()); + +86 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsAay +>()); + +87 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsObje +>()); + +88 + } +} + +90 + gme + < +tyme + + gT +> + +91  + $Ieg +( +T + +vue +) { + +92 +DymicJsDocumt + + `doc +(4096); + +93 +JsV + +v + = +doc +. +to +(); + +94 +v +. + `t +( +vue +); + +96 + `checkIsIeg +( +v +); + +97 + `checkIsIeg +( + `JsVCڡ +( +v +)); + +98 + } +} + +100 + gme + < +tyme + + gTV +> + +101  + $checkIsSg +( +TV + +v +) { + +102 + `REQUIRE +( +v +. +me + +is +()); + +103 + `REQUIRE +( +v +. +me + +is +< +d +:: +rg +>()); + +105 + `REQUIRE_FALSE +( +v +. +me + +is +< +bo +>()); + +106 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +107 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +108 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +109 + `REQUIRE_FALSE +( +v +. +me + +is +<>()); + +110 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsAay +>()); + +111 + `REQUIRE_FALSE +( +v +. +me + +is +< +JsObje +>()); + +112 + } +} + +114  + $Sg +(cڡ * +vue +) { + +115 +DymicJsDocumt + + `doc +(4096); + +116 +JsV + +v + = +doc +. +to +(); + +117 +v +. + `t +( +vue +); + +119 + `checkIsSg +( +v +); + +120 + `checkIsSg +( + `JsVCڡ +( +v +)); + +121 + } +} + +123 +TEST_CASE +("JsonVariant::is()") { + +124 +SECTION +("JsonArray") { + +125 +DymicJsDocumt + +doc +(4096); + +126 +JsAay + + gy + = +doc +. +to +(); + +127 +Aay +( +y +); + +130 +SECTION +("bool") { + +131 +Bo +( +ue +); + +132 +Bo +( +l +); + +135 +SECTION +("double") { + +136 +Flt +(4.2); + +139 +SECTION +("int") { + +140 +Ieg +(42); + +143 +SECTION +("long") { + +144 +Ieg +(42L); + +147 +SECTION +("string") { + +148 +Sg +("42"); + +151 +SECTION +("null") { + +152 +DymicJsDocumt + +doc +(4096); + +153 +derlizeJs +( +doc +, "[null]"); + +154 +JsV + + gv + = +doc +[0]; + +156 +REQUIRE +( +v +. +is +< +bo +>(= +l +); + +157 +REQUIRE +( +v +. +is +<*>(= +l +); + +158 +REQUIRE +( +v +. +is +<>(= +l +); + +159 +REQUIRE +( +v +. +is +< +d +:: +rg +>(= +l +); + +160 +REQUIRE +( +v +. +is +<>(= +l +); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/isnull.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonVariant::isNull()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsV + + gv + = +doc +. +to +(); + +12 +SECTION +("returnrue when Undefined") { + +13 +REQUIRE +( +v +. +isNu +(= +ue +); + +16 +SECTION +("return false when Integer") { + +17 + gv +. +t +(42); + +19 +REQUIRE +( +v +. +isNu +(= +l +); + +22 +SECTION +("return false when EmptyArray") { + +23 +DymicJsDocumt + +doc2 +(4096); + +24 +JsAay + + gy + = +doc2 +. +to +(); + +26 + gv +. +t +( +y +); + +27 +REQUIRE +( +v +. +isNu +(= +l +); + +30 +SECTION +("return false when EmptyObject") { + +31 +DymicJsDocumt + +doc2 +(4096); + +32 +JsObje + + gobj + = +doc2 +. +to +(); + +34 + gv +. +t +( +obj +); + +35 +REQUIRE +( +v +. +isNu +(= +l +); + +38 +SECTION +("returnruefter set(JsonArray())") { + +39 + gv +. +t +( +JsAay +()); + +40 +REQUIRE +( +v +. +isNu +(= +ue +); + +43 +SECTION +("returnruefter set(JsonObject())") { + +44 + gv +. +t +( +JsObje +()); + +45 +REQUIRE +( +v +. +isNu +(= +ue +); + +48 +SECTION +("return falsefter set('hello')") { + +49 + gv +. +t +("hello"); + +50 +REQUIRE +( +v +. +isNu +(= +l +); + +53 +SECTION +("returnruefter set((char*)0)") { + +54 + gv +. +t +( +ic_ +<*>(0)); + +55 +REQUIRE +( +v +. +isNu +(= +ue +); + +58 +SECTION +("returnruefter set((const char*)0)") { + +59 + gv +. +t +( +ic_ +(0)); + +60 +REQUIRE +( +v +. +isNu +(= +ue +); + +63 +SECTION +("returnruefter set(serialized((char*)0))") { + +64 + gv +. +t +( +rlized +( +ic_ +<*>(0))); + +65 +REQUIRE +( +v +. +isNu +(= +ue +); + +68 +SECTION +("returnruefter set(serialized((const char*)0))") { + +69 + gv +. +t +( +rlized +( +ic_ +(0))); + +70 +REQUIRE +( +v +. +isNu +(= +ue +); + +73 +SECTION +("works with JsonVariantConst") { + +74 + gv +. +t +(42); + +76 +JsVCڡ + + gcv + = +v +; + +78 +REQUIRE +( +cv +. +isNu +(= +l +); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/memoryUsage.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +TEST_CASE +("JsonVariant::memoryUsage()") { + +10 +DymicJsDocumt + +doc +(4096); + +11 +JsV + + gv + = +doc +. +to +(); + +13 +SECTION +("returns 0 if uninitialized") { + +14 +JsV + + gunlized +; + +15 +REQUIRE +( +unlized +. +memyUge +() == 0); + +18 +SECTION +("returns size of object") { + +19 +JsObje + + gobj + = +v +. +to +(); + +20 + gobj +["hello"] = 42; + +21 +REQUIRE +( +v +. +memyUge +(= +JSON_OBJECT_SIZE +(1)); + +24 +SECTION +("returns size ofrray") { + +25 +JsAay + + gr + = +v +. +to +(); + +26 + gr +. +add +(42); + +27 +REQUIRE +( +v +. +memyUge +(= +JSON_ARRAY_SIZE +(1)); + +30 +SECTION +("returns size of owned string") { + +31 + gv +. +t +( +d +:: +rg +("hello")); + +32 +REQUIRE +( +v +. +memyUge +() == 6); + +35 +SECTION +("returns size of ownedaw") { + +36 + gv +. +t +( +rlized +( +d +:: +rg +("hello"))); + +37 +REQUIRE +( +v +. +memyUge +() == 5); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/misc.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonVariant from JsonArray") { + +9 +SECTION +("JsonArray isull") { + +10 +JsAay + + gr +; + +11 +JsV + + gv + = +r +; + +12 +REQUIRE +( +v +. +isNu +(= +ue +); + +15 +SECTION +("JsonArray isotull") { + +16 +DymicJsDocumt + +doc +(4096); + +17 +JsAay + + gr + = +doc +. +to +(); + +18 + gr +. +add +(12); + +19 + gr +. +add +(34); + +21 +JsV + + gv + = +r +; + +23 +REQUIRE +( +v +. +is +< +JsAay +>(= +ue +); + +24 +REQUIRE +( +v +. +size +() == 2); + +25 +REQUIRE +( +v +[0] == 12); + +26 +REQUIRE +( +v +[1] == 34); + +30 +TEST_CASE +("JsonVariant from JsonObject") { + +31 +SECTION +("JsonObject isull") { + +32 +JsObje + + gobj +; + +33 +JsV + + gv + = +obj +; + +34 +REQUIRE +( +v +. +isNu +(= +ue +); + +37 +SECTION +("JsonObject isotull") { + +38 +DymicJsDocumt + +doc +(4096); + +39 +JsObje + + gobj + = +doc +. +to +(); + +40 + gobj +["a"] = 12; + +41 + gobj +["b"] = 34; + +43 +JsV + + gv + = +obj +; + +45 +REQUIRE +( +v +. +is +< +JsObje +>(= +ue +); + +46 +REQUIRE +( +v +. +size +() == 2); + +47 +REQUIRE +( +v +["a"] == 12); + +48 +REQUIRE +( +v +["b"] == 34); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/nesting.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonVariant::nesting()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsV + + gv + = +doc +. +to +(); + +12 +SECTION +("return 0 if uninitialized") { + +13 +JsV + + gunlized +; + +14 +REQUIRE +( +unlized +. +ág +() == 0); + +17 +SECTION +("returns 0 for string") { + +18 + gv +. +t +("hello"); + +19 +REQUIRE +( +v +. +ág +() == 0); + +22 +SECTION +("returns 1 formpty object") { + +23 + gv +. + gto +< + gJsObje +>(); + +24 +REQUIRE +( +v +. +ág +() == 1); + +27 +SECTION +("returns 1 formptyrray") { + +28 + gv +. + gto +< + gJsAay +>(); + +29 +REQUIRE +( +v +. +ág +() == 1); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/or.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonVariant::operator|()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsV + + gv + = +doc +. +to +(); + +12 +SECTION +("undefined") { + +13 +SECTION +("undefined | const char*") { + +14 + gd +:: +rg + +su + = +v + | "default"; + +15 +REQUIRE +( +su + == "default"); + +18 +SECTION +("undefined | int") { + +19  + gsu + = +v + | 42; + +20 +REQUIRE +( +su + == 42); + +23 +SECTION +("undefined | bool") { + +24 +bo + + gsu + = +v + | +ue +; + +25 +REQUIRE +( +su + = +ue +); + +29 +SECTION +("null") { + +30 + gv +. +t +( +ic_ +(0)); + +32 +SECTION +("null | const char*") { + +33 + gd +:: +rg + +su + = +v + | "default"; + +34 +REQUIRE +( +su + == "default"); + +37 +SECTION +("null | int") { + +38  + gsu + = +v + | 42; + +39 +REQUIRE +( +su + == 42); + +42 +SECTION +("null | bool") { + +43 +bo + + gsu + = +v + | +ue +; + +44 +REQUIRE +( +su + = +ue +); + +48 +SECTION +("int | const char*") { + +49 + gv +. +t +(42); + +50 + gd +:: +rg + +su + = +v + | "default"; + +51 +REQUIRE +( +su + == "default"); + +54 +SECTION +("int | uint8_t (out ofange)") { + +55 + gv +. +t +(666); + +56 +ut8_t + + gsu + = +v + | +ic_ +(42); + +57 +REQUIRE +( +su + == 42); + +60 +SECTION +("int | int") { + +61 + gv +. +t +(0); + +62  + gsu + = +v + | 666; + +63 +REQUIRE +( +su + == 0); + +66 +SECTION +("double | int") { + +68 + gv +. +t +(666.0); + +69  + gsu + = +v + | 42; + +70 +REQUIRE +( +su + == 42); + +73 +SECTION +("bool | bool") { + +74 + gv +. +t +( +l +); + +75 +bo + + gsu + = +v + | +ue +; + +76 +REQUIRE +( +su + = +l +); + +79 +SECTION +("int | bool") { + +80 + gv +. +t +(0); + +81 +bo + + gsu + = +v + | +ue +; + +82 +REQUIRE +( +su + = +ue +); + +85 +SECTION +("const char* | const char*") { + +86 + gv +. +t +("not default"); + +87 + gd +:: +rg + +su + = +v + | "default"; + +88 +REQUIRE +( +su + == "not default"); + +91 +SECTION +("const char* | int") { + +92 + gv +. +t +("not default"); + +93  + gsu + = +v + | 42; + +94 +REQUIRE +( +su + == 42); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/overflow.cpp + +5  + ~ + +6  + ~ + +8 + gme + < +tyme + + gTOut +,ym + gTIn +> + +9  + $shouldBeOk +( +TIn + +vue +) { + +10 +SticJsDocumt +<1> +doc +; + +11 +JsV + +v + = +doc +. +to +(); + +12 +v +. + `t +( +vue +); + +13 + `REQUIRE +( +v +. +as +< +TOut +>(= + `TOut +( +vue +)); + +14 + } +} + +16 + gme + < +tyme + + gTOut +,ym + gTIn +> + +17  + $shouldOvow +( +TIn + +vue +) { + +18 +SticJsDocumt +<1> +doc +; + +19 +JsV + +v + = +doc +. +to +(); + +20 +v +. + `t +( +vue +); + +21 + `REQUIRE +( +v +. +as +< +TOut +>() == 0); + +22 + `REQUIRE +( +v +. +is +< +TOut +>(= +l +); + +23 + } +} + +25 +TEST_CASE +("Handle integer overflow in stored integer") { + +26 +SECTION +("int8_t") { + +28 + gshouldBeOk +< + gt8_t +>(-128); + +29 + gshouldBeOk +< + gt8_t +>(42.0); + +30 + gshouldBeOk +< + gt8_t +>(127); + +33 + gshouldOvow +< + gt8_t +>(-128.1); + +34 + gshouldOvow +< + gt8_t +>(-129); + +37 + gshouldOvow +< + gt8_t +>(128); + +38 + gshouldOvow +< + gt8_t +>(127.1); + +41 +SECTION +("int16_t") { + +43 + gshouldBeOk +< + gt16_t +>(-32768); + +44 + gshouldBeOk +< + gt16_t +>(-32767.9); + +45 + gshouldBeOk +< + gt16_t +>(32766.9); + +46 + gshouldBeOk +< + gt16_t +>(32767); + +49 + gshouldOvow +< + gt16_t +>(-32768.1); + +50 + gshouldOvow +< + gt16_t +>(-32769); + +53 + gshouldOvow +< + gt16_t +>(32767.1); + +54 + gshouldOvow +< + gt16_t +>(32768); + +57 +SECTION +("uint8_t") { + +59 + gshouldBeOk +< + gut8_t +>(1); + +60 + gshouldBeOk +< + gut8_t +>(42.0); + +61 + gshouldBeOk +< + gut8_t +>(255); + +64 + gshouldOvow +< + gut8_t +>(-1); + +65 + gshouldOvow +< + gut8_t +>(-0.1); + +68 + gshouldOvow +< + gut8_t +>(255.1); + +69 + gshouldOvow +< + gut8_t +>(256); + +70 + gshouldOvow +< + gut8_t +>(257); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/remove.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 cڡ * + gnu + = 0; + +11 +TEST_CASE +("JsonVariant::remove()") { + +12 +DymicJsDocumt + +doc +(4096); + +13 +JsV + + gv + = +doc +. +to +(); + +15 +SECTION +("remove(int)") { + +16 + gv +. +add +(1); + +17 + gv +. +add +(2); + +18 + gv +. +add +(3); + +20 + gv +. +move +(1); + +22 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "[1,3]"); + +25 +SECTION +("remove(const char *)") { + +26 + gv +["a"] = 1; + +27 + gv +["b"] = 2; + +29 + gv +. +move +("a"); + +31 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "{\"b\":2}"); + +34 +SECTION +("remove(std::string)") { + +35 + gv +["a"] = 1; + +36 + gv +["b"] = 2; + +38 + gv +. +move +( +d +:: +rg +("b")); + +40 +REQUIRE +( +v +. +as +< +d +:: +rg +>() == "{\"a\":1}"); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/set.cpp + +5  + ~ + +6  + ~ + +8 + eECode + { + mERROR_01 + = 1, + mERROR_10 + = 10 }; + +10 +TEST_CASE +("JsonVariantnd strings") { + +11 +DymicJsDocumt + +doc +(4096); + +12 +JsV + + gv + = +doc +. +to +(); + +14 +SECTION +("stores const char* byeference") { + +15  + gr +[16]; + +17 +ry +( +r +, "hello"); + +18 + gv +. +t +( +ic_ +( +r +)); + +19 +ry +( +r +, "world"); + +21 +REQUIRE +( +v + == "world"); + +24 +SECTION +("stores char* by copy") { + +25  + gr +[16]; + +27 +ry +( +r +, "hello"); + +28 + gv +. +t +( +r +); + +29 +ry +( +r +, "world"); + +31 +REQUIRE +( +v + == "hello"); + +34 +SECTION +("stores unsigned char* by copy") { + +35  + gr +[16]; + +37 +ry +( +r +, "hello"); + +38 + gv +. +t +( +t_ +<*>( +r +)); + +39 +ry +( +r +, "world"); + +41 +REQUIRE +( +v + == "hello"); + +44 +SECTION +("stores signed char* by copy") { + +45  + gr +[16]; + +47 +ry +( +r +, "hello"); + +48 + gv +. +t +( +t_ +( +r +)); + +49 +ry +( +r +, "world"); + +51 +REQUIRE +( +v + == "hello"); + +54 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +55 +SECTION +("stores VLA by copy") { + +56  + gn + = 16; + +57  + gr +[ +n +]; + +59 +ry +( +r +, "hello"); + +60 + gv +. +t +( +r +); + +61 +ry +( +r +, "world"); + +63 +REQUIRE +( +v + == "hello"); + +67 +SECTION +("stores std::string by copy") { + +68 + gd +:: +rg + +r +; + +70 + gr + = "hello"; + +71 + gv +. +t +( +r +); + +72 + gr +. +a +(0, 5, "world"); + +74 +REQUIRE +( +v + == "hello"); + +77 +SECTION +("stores static JsonString byeference") { + +78  + gr +[16]; + +80 +ry +( +r +, "hello"); + +81 + gv +. +t +( +JsSg +( +r +, +ue +)); + +82 +ry +( +r +, "world"); + +84 +REQUIRE +( +v + == "world"); + +87 +SECTION +("storeson-static JsonString by copy") { + +88  + gr +[16]; + +90 +ry +( +r +, "hello"); + +91 + gv +. +t +( +JsSg +( +r +, +l +)); + +92 +ry +( +r +, "world"); + +94 +REQUIRE +( +v + == "hello"); + +97 +SECTION +("storesnnumsn integer") { + +98 +ECode + + gcode + = +ERROR_10 +; + +100 + gv +. +t +( +code +); + +102 +REQUIRE +( +v +. +is +<>(= +ue +); + +103 +REQUIRE +( +v +. +as +<>() == 10); + +107 +TEST_CASE +("JsonVariant withotnough memory") { + +108 + gSticJsDocumt +<1> + gdoc +; + +110 +JsV + + gv + = +doc +. +to +(); + +112 +SECTION +("std::string") { + +113 + gv +. +t +( +d +:: +rg +("hello world!!")); + +114 +REQUIRE +( +v +. +isNu +()); + +117 +SECTION +("Serialized") { + +118 + gv +. +t +( +rlized +( +d +:: +rg +("hello world!!"))); + +119 +REQUIRE +( +v +. +isNu +()); + +123 +TEST_CASE +("JsonVariant::set(DynamicJsonDocument)") { + +124 +DymicJsDocumt + +doc1 +(1024); + +125 + gdoc1 +["hello"] = "world"; + +127 +DymicJsDocumt + +doc2 +(1024); + +128 +JsV + + gv + = +doc2 +. +to +(); + +131 + gv +. +t +( +doc1 +); + +132 + gdoc1 +. +r +(); + +134 + gd +:: +rg + +js +; + +135 +rlizeJs +( +doc2 +, +js +); + +136 +REQUIRE +( +js + == "{\"hello\":\"world\"}"); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/subscript.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonVariant::operator[]") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsV + + gv + = +doc +. +to +(); + +12 +SECTION +("The JsonVariant is undefined") { + +13 +REQUIRE +(0 = +v +. +size +()); + +14 +REQUIRE +( +v +["0"]. +isNu +()); + +15 +REQUIRE +( +v +[0]. +isNu +()); + +18 +SECTION +("The JsonVariant is string") { + +19 + gv +. +t +("hello world"); + +20 +REQUIRE +(0 = +v +. +size +()); + +21 +REQUIRE +( +v +["0"]. +isNu +()); + +22 +REQUIRE +( +v +[0]. +isNu +()); + +25 +SECTION +("The JsonVariant is JsonArray") { + +26 +JsAay + + gy + = +v +. +to +(); + +28 +SECTION +("get value") { + +29 + gy +. +add +("elementt index 0"); + +30 + gy +. +add +("elementt index 1"); + +32 +REQUIRE +(2 = +v +. +size +()); + +33 + gv +[0]. + gas +< + gd +:: +rg +>(); + +35 +REQUIRE +( +d +:: +rg +("em index 1"= +v +[1]); + +36 +REQUIRE +( +d +:: +rg +("elementt index 0") == + +37 +v +[ +ic_ +<>(0)]); + +38 +REQUIRE +( +v +[666]. +isNu +()); + +39 +REQUIRE +( +v +[3]. +isNu +()); + +40 +REQUIRE +( +v +["0"]. +isNu +()); + +43 +SECTION +("set value") { + +44 + gy +. +add +("hello"); + +46 + gv +[1] = "world"; + +48 +REQUIRE +( +v +. +size +() == 2); + +49 +REQUIRE +( +d +:: +rg +("wld"= +v +[1]); + +52 +SECTION +("set value inested object") { + +53 + gy +. +NeedObje +(); + +55 + gv +[0]["hello"] = "world"; + +57 +REQUIRE +(1 = +v +. +size +()); + +58 +REQUIRE +(1 = +v +[0]. +size +()); + +59 +REQUIRE +( +d +:: +rg +("wld"= +v +[0]["hello"]); + +63 +SECTION +("The JsonVariant is JsonObject") { + +64 +JsObje + + gobje + = +v +. +to +(); + +66 +SECTION +("get value") { + +67 + gobje +["a"] = "elementt key \"a\""; + +68 + gobje +["b"] = "elementt key \"b\""; + +70 +REQUIRE +(2 = +v +. +size +()); + +71 +REQUIRE +( +d +:: +rg +("em key \"a\""= +v +["a"]); + +72 +REQUIRE +( +d +:: +rg +("em key \"b\""= +v +["b"]); + +73 +REQUIRE +( +v +["c"]. +isNu +()); + +74 +REQUIRE +( +v +[0]. +isNu +()); + +77 +SECTION +("set value, key is const char*") { + +78 + gv +["hello"] = "world"; + +80 +REQUIRE +(1 = +v +. +size +()); + +81 +REQUIRE +( +d +:: +rg +("wld"= +v +["hello"]); + +84 +SECTION +("set value, key is char[]") { + +85  + gkey +[] = "hello"; + +86 + gv +[ +key +] = "world"; + +87 + gkey +[0] = '!'; + +89 +REQUIRE +(1 = +v +. +size +()); + +90 +REQUIRE +( +d +:: +rg +("wld"= +v +["hello"]); + +93 +SECTION +("var[key].to()") { + +94 +JsAay + + gr + = +v +["hlo"]. +to +(); + +95 +REQUIRE +( +r +. +isNu +(= +l +); + +99 #i +defed +( +HAS_VARIABLE_LENGTH_ARRAY +) && \ + +100 ! +defed +( +SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR +) + +101 +SECTION +("key is VLA") { + +102  + gi + = 16; + +103  + gv +[ +i +]; + +104 +ry +( +v +, "hello"); + +106 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +107 +JsV + + gv + = +doc +. +as +(); + +109 +REQUIRE +( +d +:: +rg +("wld"= +v +[ +v +]); + +112 +SECTION +("key is VLA, const JsonVariant") { + +113  + gi + = 16; + +114  + gv +[ +i +]; + +115 +ry +( +v +, "hello"); + +117 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +118 cڡ +JsV + + gv + = +doc +. +as +(); + +120 +REQUIRE +( +d +:: +rg +("wld"= +v +[ +v +]); + +125 +TEST_CASE +("JsonVariantConst::operator[]") { + +126 +DymicJsDocumt + +doc +(4096); + +127 +JsV + + gv + = +doc +. +to +(); + +128 +JsVCڡ + + gcv + = +v +; + +130 +SECTION +("The JsonVariant is undefined") { + +131 +REQUIRE +(0 = +cv +. +size +()); + +132 +REQUIRE +( +cv +["0"]. +isNu +()); + +133 +REQUIRE +( +cv +[0]. +isNu +()); + +136 +SECTION +("The JsonVariant is string") { + +137 + gv +. +t +("hello world"); + +138 +REQUIRE +(0 = +cv +. +size +()); + +139 +REQUIRE +( +cv +["0"]. +isNu +()); + +140 +REQUIRE +( +cv +[0]. +isNu +()); + +143 +SECTION +("The JsonVariant is JsonArray") { + +144 +JsAay + + gy + = +v +. +to +(); + +146 +SECTION +("get value") { + +147 + gy +. +add +("elementt index 0"); + +148 + gy +. +add +("elementt index 1"); + +150 +REQUIRE +(2 = +cv +. +size +()); + +151 +REQUIRE +( +d +:: +rg +("em index 0"= +cv +[0]); + +152 +REQUIRE +( +d +:: +rg +("em index 1"= +cv +[1]); + +153 +REQUIRE +( +d +:: +rg +("elementt index 0") == + +154 +v +[ +ic_ +<>(0)]); + +155 +REQUIRE +( +cv +[666]. +isNu +()); + +156 +REQUIRE +( +cv +[3]. +isNu +()); + +157 +REQUIRE +( +cv +["0"]. +isNu +()); + +161 +SECTION +("The JsonVariant is JsonObject") { + +162 +JsObje + + gobje + = +v +. +to +(); + +164 +SECTION +("get value") { + +165 + gobje +["a"] = "elementt key \"a\""; + +166 + gobje +["b"] = "elementt key \"b\""; + +168 +REQUIRE +(2 = +cv +. +size +()); + +169 +REQUIRE +( +d +:: +rg +("em key \"a\""= +cv +["a"]); + +170 +REQUIRE +( +d +:: +rg +("em key \"b\""= +cv +["b"]); + +171 +REQUIRE +( +cv +["c"]. +isNu +()); + +172 +REQUIRE +( +cv +[0]. +isNu +()); + +176 +SECTION +("Autoromoteull JsonVarianto JsonObject") { + +177 + gv +["hello"] = "world"; + +179 +REQUIRE +( +v +. +is +< +JsObje +>(= +ue +); + +182 +SECTION +("Don'tutoromoteon-null JsonVarianto JsonObject") { + +183 + gv +. +t +(42); + +184 + gv +["hello"] = "world"; + +186 +REQUIRE +( +v +. +is +< +JsObje +>(= +l +); + +189 +SECTION +("Don'tutoromoteull JsonVarianto JsonObject wheneading") { + +190 cڡ * + gvue + = +v +["hello"]; + +192 +REQUIRE +( +v +. +is +< +JsObje +>(= +l +); + +193 +REQUIRE +( +vue + == 0); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/types.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +8  + ~ + +10 + gme + < +tyme + + gT +> + +11  + $checkVue +( +T + +exed +) { + +12 +DymicJsDocumt + + `doc +(4096); + +13 +JsV + +v + = +doc +. +to +(); + +15 +v +. + `t +( +exed +); + +16 + `REQUIRE +( +exed + = +v +. +as +< +T +>()); + +17 + } +} + +19 + gme + < +tyme + + gT +> + +20  + $checkRen +( +T + & +exed +) { + +21 +JsV + +v + = +exed +; + +22 + `REQUIRE +( +exed + = +v +. +as +< +T + &>()); + +23 + } +} + +25 + gme + < +tyme + + gT +> + +26  + $checkNumicTy +() { + +27 +DymicJsDocumt + + `docM +(4096), + `docMax +(4096); + +28 +JsV + +vM + = +docM +. +to +(); + +29 +JsV + +vMax + = +docMax +. +to +(); + +31 +T + +m + = +d +:: +numic_lims +:: + `m +(); + +32 +T + +max + = +d +:: +numic_lims +:: + `max +(); + +34 +vM +. + `t +( +m +); + +35 +vMax +. + `t +( +max +); + +37 + `REQUIRE +( +m + = +vM +. +as +< +T +>()); + +38 + `REQUIRE +( +max + = +vMax +. +as +< +T +>()); + +39 + } +} + +41 +TEST_CASE +("JsonVariant set()/get()") { + +42 #i +ARDUINOJSON_USE_LONG_LONG + + +43 +SECTION +("SizeOfJsonInteger") { + +44 +REQUIRE +(8 =( +JsIeg +)); + +48 +SECTION +("Null") { + +49 + gcheckVue +( + gNULL +); + +51 +SECTION +("const char*") { + +52 + gcheckVue +("hello"); + +54 +SECTION +("std::string") { + +55 + gcheckVue +< + gd +:: +rg +>("hello"); + +58 +SECTION +("False") { + +59 + gcheckVue +< + gbo +>( + gl +); + +61 +SECTION +("True") { + +62 + gcheckVue +< + gbo +>( + gue +); + +65 +SECTION +("Double") { + +66 + gcheckNumicTy +<>(); + +68 +SECTION +("Float") { + +69 + gcheckNumicTy +<>(); + +71 +SECTION +("Char") { + +72 + gcheckNumicTy +<>(); + +74 +SECTION +("SChar") { + +75 + gcheckNumicTy +(); + +77 +SECTION +("SInt") { + +78 + gcheckNumicTy +(); + +80 +SECTION +("SLong") { + +81 + gcheckNumicTy +(); + +83 +SECTION +("SShort") { + +84 + gcheckNumicTy +(); + +86 +SECTION +("UChar") { + +87 + gcheckNumicTy +<>(); + +89 +SECTION +("UInt") { + +90 + gcheckNumicTy +<>(); + +92 +SECTION +("ULong") { + +93 + gcheckNumicTy +<>(); + +95 +SECTION +("UShort") { + +96 + gcheckNumicTy +<>(); + +98 #i +ARDUINOJSON_USE_LONG_LONG + + +99 +SECTION +("LongLong") { + +100 + gcheckNumicTy +<>(); + +102 +SECTION +("ULongLong") { + +103 + gcheckNumicTy +<>(); + +107 +SECTION +("Int8") { + +108 + gcheckNumicTy +< + gt8_t +>(); + +110 +SECTION +("Uint8") { + +111 + gcheckNumicTy +< + gut8_t +>(); + +113 +SECTION +("Int16") { + +114 + gcheckNumicTy +< + gt16_t +>(); + +116 +SECTION +("Uint16") { + +117 + gcheckNumicTy +< + gut16_t +>(); + +119 +SECTION +("Int32") { + +120 + gcheckNumicTy +< + gt32_t +>(); + +122 +SECTION +("Uint32") { + +123 + gcheckNumicTy +< + gut32_t +>(); + +125 #i +ARDUINOJSON_USE_LONG_LONG + + +126 +SECTION +("Int64") { + +127 + gcheckNumicTy +< + gt64_t +>(); + +129 +SECTION +("Uint64") { + +130 + gcheckNumicTy +< + gut64_t +>(); + +134 +SECTION +("CanStoreObject") { + +135 +DymicJsDocumt + +doc +(4096); + +136 +JsObje + + gobje + = +doc +. +to +(); + +138 + gcheckVue +< + gJsObje +>( + gobje +); + + @lib_standalone/ArduinoJson/extras/tests/JsonVariant/undefined.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("JsonVariant undefined") { + +9 +JsV + + gv +; + +11 +SECTION +("as()") { + +12 +SECTION +("long") { + +13 +REQUIRE +( +v +. +as +<>() == 0); + +16 +SECTION +("unsigned") { + +17 +REQUIRE +( +v +. +as +<>() == 0); + +20 +SECTION +("char*") { + +21 +REQUIRE +( +v +. +as +<*>() == 0); + +24 +SECTION +("double") { + +25 +REQUIRE +( +v +. +as +<>() == 0); + +28 +SECTION +("bool") { + +29 +REQUIRE +( +v +. +as +< +bo +>(= +l +); + +32 +SECTION +("JsonArray") { + +33 +REQUIRE +( +v +. +as +< +JsAay +>(). +isNu +()); + +36 +SECTION +("JsonObject") { + +37 +REQUIRE +( +v +. +as +< +JsObje +>(). +isNu +()); + +41 +SECTION +("is()") { + +42 +SECTION +("long") { + +43 +REQUIRE +( +v +. +is +<>(= +l +); + +46 +SECTION +("unsigned") { + +47 +REQUIRE +( +v +. +is +<>(= +l +); + +50 +SECTION +("char*") { + +51 +REQUIRE +( +v +. +is +<*>(= +l +); + +54 +SECTION +("double") { + +55 +REQUIRE +( +v +. +is +<>(= +l +); + +58 +SECTION +("bool") { + +59 +REQUIRE +( +v +. +is +< +bo +>(= +l +); + +62 +SECTION +("JsonArray") { + +63 +REQUIRE +( +v +. +is +< +JsAay +>(= +l +); + +66 +SECTION +("JsonObject") { + +67 +REQUIRE +( +v +. +is +< +JsObje +>(= +l +); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/add.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::add()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gMembProxy +< + gJsDocumt +&, cڡ *> + gmp + = +doc +["hello"]; + +14 +SECTION +("add(int)") { + +15 + gmp +. +add +(42); + +17 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"hello\":[42]}"); + +20 +SECTION +("add(const char*)") { + +21 + gmp +. +add +("world"); + +23 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"hello\":[\"world\"]}"); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/clear.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::clear()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gMembProxy +< + gJsDocumt +&, cڡ *> + gmp + = +doc +["hello"]; + +14 +SECTION +("size goes backo zero") { + +15 + gmp +. +add +(42); + +16 + gmp +. +r +(); + +18 +REQUIRE +( +mp +. +size +() == 0); + +21 +SECTION +("isNull()eturnrue") { + +22 + gmp +. +add +("hello"); + +23 + gmp +. +r +(); + +25 +REQUIRE +( +mp +. +isNu +(= +ue +); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/compare.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::operator==()") { + +11 +DymicJsDocumt + +doc +(4096); + +13 +SECTION +("same values") { + +14 + gdoc +["key1"] = "value"; + +15 + gdoc +["key2"] = "value"; + +16 +REQUIRE +( +doc +["key1"] == doc["key2"]); + +17 +REQUIRE_FALSE +( +doc +["key1"] != doc["key2"]); + +20 +SECTION +("different values") { + +21 + gdoc +["key1"] = "value1"; + +22 + gdoc +["key2"] = "value2"; + +23 +REQUIRE_FALSE +( +doc +["key1"] == doc["key2"]); + +24 +REQUIRE +( +doc +["key1"] != doc["key2"]); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/containsKey.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::containsKey()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gMembProxy +< + gJsDocumt +&, cڡ *> + gmp + = +doc +["hello"]; + +14 +SECTION +("containsKey(const char*)") { + +15 + gmp +["key"] = "value"; + +17 +REQUIRE +( +mp +. +cڏsKey +("key"= +ue +); + +18 +REQUIRE +( +mp +. +cڏsKey +("key"= +ue +); + +21 +SECTION +("containsKey(std::string)") { + +22 + gmp +["key"] = "value"; + +24 +REQUIRE +( +mp +. +cڏsKey +( +d +:: +rg +("key")= +ue +); + +25 +REQUIRE +( +mp +. +cڏsKey +( +d +:: +rg +("key")= +ue +); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/remove.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::remove()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gMembProxy +< + gJsDocumt +&, cڡ *> + gmp + = +doc +["hello"]; + +14 +SECTION +("remove(int)") { + +15 + gmp +. +add +(1); + +16 + gmp +. +add +(2); + +17 + gmp +. +add +(3); + +19 + gmp +. +move +(1); + +21 +REQUIRE +( +mp +. +as +< +d +:: +rg +>() == "[1,3]"); + +24 +SECTION +("remove(const char *)") { + +25 + gmp +["a"] = 1; + +26 + gmp +["b"] = 2; + +28 + gmp +. +move +("a"); + +30 +REQUIRE +( +mp +. +as +< +d +:: +rg +>() == "{\"b\":2}"); + +33 +SECTION +("remove(std::string)") { + +34 + gmp +["a"] = 1; + +35 + gmp +["b"] = 2; + +37 + gmp +. +move +( +d +:: +rg +("b")); + +39 +REQUIRE +( +mp +. +as +< +d +:: +rg +>() == "{\"a\":1}"); + +42 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +43 +SECTION +("remove(vla)") { + +44 + gmp +["a"] = 1; + +45 + gmp +["b"] = 2; + +47  + gi + = 4; + +48  + gv +[ +i +]; + +49 +ry +( +v +, "b"); + +50 + gmp +. +move +( +v +); + +52 +REQUIRE +( +mp +. +as +< +d +:: +rg +>() == "{\"a\":1}"); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/set.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::set()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gMembProxy +< + gJsDocumt +&, cڡ *> + gmp + = +doc +["hello"]; + +14 +SECTION +("set(int)") { + +15 + gmp +. +t +(42); + +17 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"hello\":42}"); + +20 +SECTION +("set(const char*)") { + +21 + gmp +. +t +("world"); + +23 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"hello\":\"world\"}"); + +26 +SECTION +("set(char[])") { + +27  + gs +[] = "world"; + +28 + gmp +. +t +( +s +); + +29 +ry +( +s +, "!!!!!"); + +31 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"hello\":\"world\"}"); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/size.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::size()") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gMembProxy +< + gJsDocumt +&, cڡ *> + gmp + = +doc +["hello"]; + +14 +SECTION +("returns 0") { + +15 +REQUIRE +( +mp +. +size +() == 0); + +18 +SECTION +("asnrray,eturn 2") { + +19 + gmp +. +add +(1); + +20 + gmp +. +add +(2); + +22 +REQUIRE +( +mp +. +size +() == 2); + +25 +SECTION +("asn object,eturn 2") { + +26 + gmp +["a"] = 1; + +27 + gmp +["b"] = 2; + +29 +REQUIRE +( +mp +. +size +() == 2); + + @lib_standalone/ArduinoJson/extras/tests/MemberProxy/subscript.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemberProxy::operator[]") { + +11 +DymicJsDocumt + +doc +(4096); + +12 + gMembProxy +< + gJsDocumt +&, cڡ *> + gmp + = +doc +["hello"]; + +14 +SECTION +("set member") { + +15 + gmp +["world"] = 42; + +17 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"hello\":{\"world\":42}}"); + +20 +SECTION +("setlement") { + +21 + gmp +[2] = 42; + +23 +REQUIRE +( +doc +. +as +< +d +:: +rg +>() == "{\"hello\":[null,null,42]}"); + + @lib_standalone/ArduinoJson/extras/tests/MemoryPool/StringBuilder.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +11 +TEST_CASE +("StringBuilder") { + +12  + gbufr +[4096]; + +14 +SECTION +("Works when buffer is bignough") { + +15 +MemyPo + +po +( +bufr +, +addPaddg +( +JSON_STRING_SIZE +(6))); + +17 +SgBud + +r +(& +po +); + +18 + gr +. +nd +("hello"); + +20 +REQUIRE +( +r +. +come +(= +d +:: +rg +("hello")); + +23 +SECTION +("Returnsull whenoo small") { + +24 +MemyPo + +po +( +bufr +, (*)); + +26 +SgBud + +r +(& +po +); + +27 + gr +. +nd +("hello world!"); + +29 +REQUIRE +( +r +. +come +() == 0); + +32 +SECTION +("Increases size of memoryool") { + +33 +MemyPo + +po +( +bufr +, +addPaddg +( +JSON_STRING_SIZE +(6))); + +35 +SgBud + +r +(& +po +); + +36 + gr +. +nd +('h'); + +37 + gr +. +come +(); + +39 +REQUIRE +( +JSON_STRING_SIZE +(2= +po +. +size +()); + + @lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocString.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemoryPool::allocFrozenString()") { + +11 cڡ +size_t + + gpoCacy + = 64; + +12 cڡ +size_t + + glgeSg + = +poCacy +; + +13  + gbufr +[ +poCacy +]; + +14 +MemyPo + +po +( +bufr +, +poCacy +); + +16 +SECTION +("Returns differentddresses") { + +17 * + ga + = +po +. +locFrozSg +(1); + +18 * + gb + = +po +. +locFrozSg +(1); + +19 +REQUIRE +( +a + ! +b +); + +22 +SECTION +("Returns NULL when full") { + +23 * + gp1 + = +po +. +locFrozSg +( +lgeSg +); + +24 +REQUIRE +( +p1 + != 0); + +26 * + gp2 + = +po +. +locFrozSg +(1); + +27 +REQUIRE +( +p2 + == 0); + +30 +SECTION +("Returns NULL whenool isoo small") { + +31 * + gp + = +po +. +locFrozSg +( +lgeSg + + 1); + +32 +REQUIRE +(0 = +p +); + +35 +SECTION +("Returns NULL when buffer is NULL") { + +36 +MemyPo + +po2 +(0, +poCacy +); + +37 +REQUIRE +(0 = +po2 +. +locFrozSg +(2)); + +40 +SECTION +("Returns NULL when capacity is 0") { + +41 +MemyPo + +po2 +( +bufr +, 0); + +42 +REQUIRE +(0 = +po2 +. +locFrozSg +(2)); + +45 +SECTION +("Returns sameddressfter clear()") { + +46 * + ga + = +po +. +locFrozSg +(1); + +47 + gpo +. +r +(); + +48 * + gb + = +po +. +locFrozSg +(1); + +50 +REQUIRE +( +a + = +b +); + +53 +SECTION +("Can use full capacity when fresh") { + +54 * + ga + = +po +. +locFrozSg +( +lgeSg +); + +56 +REQUIRE +( +a + != 0); + +59 +SECTION +("Can use full capacityfter clear") { + +60 + gpo +. +locFrozSg +( +lgeSg +); + +61 + gpo +. +r +(); + +63 * + ga + = +po +. +locFrozSg +( +lgeSg +); + +65 +REQUIRE +( +a + != 0); + + @lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocVariant.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemoryPool::allocVariant()") { + +11  + gbufr +[4096]; + +13 +SECTION +("Returns differentointer") { + +14 +MemyPo + +po +( +bufr +, (buffer)); + +16 +VSl +* + gs1 + = +po +. +locV +(); + +17 +REQUIRE +( +s1 + != 0); + +18 +VSl +* + gs2 + = +po +. +locV +(); + +19 +REQUIRE +( +s2 + != 0); + +21 +REQUIRE +( +s1 + ! +s2 +); + +24 +SECTION +("Returnslignedointers") { + +25 +MemyPo + +po +( +bufr +, (buffer)); + +27 +REQUIRE +( +isAligd +( +po +. +locV +())); + +28 +REQUIRE +( +isAligd +( +po +. +locV +())); + +31 +SECTION +("Returns zero if capacity is 0") { + +32 +MemyPo + +po +( +bufr +, 0); + +34 +REQUIRE +( +po +. +locV +() == 0); + +37 +SECTION +("Returns zero if buffer isull") { + +38 +MemyPo + +po +(0, ( +bufr +)); + +40 +REQUIRE +( +po +. +locV +() == 0); + +43 +SECTION +("Returns zero if capacity is insufficient") { + +44 +MemyPo + +po +( +bufr +, ( +VSl +)); + +46 + gpo +. +locV +(); + +48 +REQUIRE +( +po +. +locV +() == 0); + + @lib_standalone/ArduinoJson/extras/tests/MemoryPool/clear.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 cڡ +size_t + + gpoCacy + = 512; + +12 +TEST_CASE +("MemoryPool::clear()") { + +13  + gbufr +[ +poCacy +]; + +14 +MemyPo + +po +( +bufr +, (buffer)); + +16 +SECTION +("Discardsllocated variants") { + +17 + gpo +. +locV +(); + +19 + gpo +. +r +(); + +20 +REQUIRE +( +po +. +size +() == 0); + +23 +SECTION +("Discardsllocated strings") { + +24 + gpo +. +locFrozSg +(10); + +25 +REQUIRE +( +po +. +size +() > 0); + +27 + gpo +. +r +(); + +29 +REQUIRE +( +po +. +size +() == 0); + + @lib_standalone/ArduinoJson/extras/tests/MemoryPool/size.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("MemoryPool::capacity()") { + +11  + gbufr +[4096]; + +12 cڡ +size_t + + gcy + = 64; + +13 +MemyPo + +po +( +bufr +, +cy +); + +14 +REQUIRE +( +cy + = +po +.capacity()); + +17 +TEST_CASE +("MemoryPool::size()") { + +18  + gbufr +[4096]; + +19 +MemyPo + +po +( +bufr +, (buffer)); + +21 +SECTION +("Initial size is 0") { + +22 +REQUIRE +(0 = +po +. +size +()); + +25 +SECTION +("size() == capacity()fterllocExpandableString()") { + +26 + gpo +. +locExndabSg +(); + +27 +REQUIRE +( +po +. +size +(=po. +cy +()); + +30 +SECTION +("Decreasesfter freezeString()") { + +31 +SgSl + + ga + = +po +. +locExndabSg +(); + +32 + gpo +. +zeSg +( +a +, 1); + +33 +REQUIRE +( +po +. +size +(= +JSON_STRING_SIZE +(1)); + +35 +SgSl + + gb + = +po +. +locExndabSg +(); + +36 + gpo +. +zeSg +( +b +, 1); + +37 +REQUIRE +( +po +. +size +(=2 * +JSON_STRING_SIZE +(1)); + +40 +SECTION +("IncreasesfterllocFrozenString()") { + +41 + gpo +. +locFrozSg +(0); + +42 +REQUIRE +( +po +. +size +(= +JSON_STRING_SIZE +(0)); + +44 + gpo +. +locFrozSg +(0); + +45 +REQUIRE +( +po +. +size +(=2 * +JSON_STRING_SIZE +(0)); + +48 +SECTION +("Doesn't grow when memoryool is full") { + +49 cڡ +size_t + + gvCou + = ( +bufr +/ ( +VSl +); + +51  +size_t + + gi + = 0; i < + gvCou +; i++ + gpo +. +locV +(); + +52 +size_t + + gsize + = +po +. +size +(); + +54 + gpo +. +locV +(); + +56 +REQUIRE +( +size + = +po +.size()); + + @lib_standalone/ArduinoJson/extras/tests/Misc/FloatParts.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("FloatParts") { + +11 +SECTION +("1.7976931348623157E+308") { + +12 + gFltPts +<> +s +(1.7976931348623157E+308); + +13 +REQUIRE +( +s +. +gl + == 1); + +14 +REQUIRE +( +s +. +decim + == 797693135); + +15 +REQUIRE +( +s +. +decimPs + == 9); + +16 +REQUIRE +( +s +. +expڒt + == 308); + +19 +SECTION +("4.94065645841247e-324") { + +20 + gFltPts +<> +s +(4.94065645841247e-324); + +21 +REQUIRE +( +s +. +gl + == 4); + +22 +REQUIRE +( +s +. +decim + == 940656458); + +23 +REQUIRE +( +s +. +decimPs + == 9); + +24 +REQUIRE +( +s +. +expڒt + == -324); + +28 +TEST_CASE +("FloatParts") { + +29 +SECTION +("3.4E+38") { + +30 + gFltPts +<> +s +(3.4E+38f); + +31 +REQUIRE +( +s +. +gl + == 3); + +32 +REQUIRE +( +s +. +decim + == 4); + +33 +REQUIRE +( +s +. +decimPs + == 1); + +34 +REQUIRE +( +s +. +expڒt + == 38); + +37 +SECTION +("1.17549435e−38") { + +38 + gFltPts +<> +s +(1.17549435e-38f); + +39 +REQUIRE +( +s +. +gl + == 1); + +40 +REQUIRE +( +s +. +decim + == 175494); + +41 +REQUIRE +( +s +. +decimPs + == 6); + +42 +REQUIRE +( +s +. +expڒt + == -38); + + @lib_standalone/ArduinoJson/extras/tests/Misc/Issue1189.cpp + +5  + ~ + +8  + $f +( +JsDocumt +{ + } +} + +10  + $ma +() { + +11 +DymicJsDocumt + + `doc +(1024); + +12 + `f +( +doc +); + +13 + } +} + + @lib_standalone/ArduinoJson/extras/tests/Misc/Issue978.cpp + +5  + ~ + +7  + sSm + {}; + +9  + $ma +() { + +10 +Sm +* +am + = 0; + +11 +DymicJsDocumt + + `doc +(1024); + +12 + `derlizeJs +( +doc +, +am +); + +13 + } +} + + @lib_standalone/ArduinoJson/extras/tests/Misc/Readers.cpp + +5  + #ARDUINOJSON_ENABLE_ARDUINO_STREAM + 1 + + ) + +6  + ~ + +7  + ~ + +9 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +11 +TEST_CASE +("Reader") { + +12 +SECTION +("read()") { + +13 + gd +:: +irgam + +c +("\x01\xFF"); + +14 + gRd +< + gd +:: +irgam +> +ad +( +c +); + +16 +REQUIRE +( +ad +. +ad +() == 0x01); + +17 +REQUIRE +( +ad +. +ad +() == 0xFF); + +18 +REQUIRE +( +ad +. +ad +() == -1); + +21 +SECTION +("readBytes()llt once") { + +22 + gd +:: +irgam + +c +("ABC"); + +23 + gRd +< + gd +:: +irgam +> +ad +( +c +); + +25  + gbufr +[8] = "abcd"; + +26 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 3); + +28 +REQUIRE +( +bufr +[0] == 'A'); + +29 +REQUIRE +( +bufr +[1] == 'B'); + +30 +REQUIRE +( +bufr +[2] == 'C'); + +31 +REQUIRE +( +bufr +[3] == 'd'); + +34 +SECTION +("readBytes() inwoarts") { + +35 + gd +:: +irgam + +c +("ABCDEF"); + +36 + gRd +< + gd +:: +irgam +> +ad +( +c +); + +38  + gbufr +[12] = "abcdefg"; + +39 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 4); + +40 +REQUIRE +( +ad +. +adBys +( +bufr + + 4, 4) == 2); + +42 +REQUIRE +( +bufr +[0] == 'A'); + +43 +REQUIRE +( +bufr +[1] == 'B'); + +44 +REQUIRE +( +bufr +[2] == 'C'); + +45 +REQUIRE +( +bufr +[3] == 'D'); + +46 +REQUIRE +( +bufr +[4] == 'E'); + +47 +REQUIRE +( +bufr +[5] == 'F'); + +48 +REQUIRE +( +bufr +[6] == 'g'); + +52 +TEST_CASE +("BoundedReader") { + +53 +SECTION +("read") { + +54 + gBoundedRd + +ad +("\x01\xFF", 2); + +55 +REQUIRE +( +ad +. +ad +() == 0x01); + +56 +REQUIRE +( +ad +. +ad +() == 0xFF); + +57 +REQUIRE +( +ad +. +ad +() == -1); + +58 +REQUIRE +( +ad +. +ad +() == -1); + +61 +SECTION +("readBytes()llt once") { + +62 + gBoundedRd + +ad +("ABCD", 3); + +64  + gbufr +[8] = "abcd"; + +65 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 3); + +67 +REQUIRE +( +bufr +[0] == 'A'); + +68 +REQUIRE +( +bufr +[1] == 'B'); + +69 +REQUIRE +( +bufr +[2] == 'C'); + +70 +REQUIRE +( +bufr +[3] == 'd'); + +73 +SECTION +("readBytes() inwoarts") { + +74 + gBoundedRd + +ad +("ABCDEF", 6); + +76  + gbufr +[8] = "abcdefg"; + +77 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 4); + +78 +REQUIRE +( +ad +. +adBys +( +bufr + + 4, 4) == 2); + +80 +REQUIRE +( +bufr +[0] == 'A'); + +81 +REQUIRE +( +bufr +[1] == 'B'); + +82 +REQUIRE +( +bufr +[2] == 'C'); + +83 +REQUIRE +( +bufr +[3] == 'D'); + +84 +REQUIRE +( +bufr +[4] == 'E'); + +85 +REQUIRE +( +bufr +[5] == 'F'); + +86 +REQUIRE +( +bufr +[6] == 'g'); + +90 +TEST_CASE +("Reader") { + +91 +SECTION +("read()") { + +92 + gRd + +ad +("\x01\xFF\x00\x12"); + +93 +REQUIRE +( +ad +. +ad +() == 0x01); + +94 +REQUIRE +( +ad +. +ad +() == 0xFF); + +95 +REQUIRE +( +ad +. +ad +() == 0); + +96 +REQUIRE +( +ad +. +ad +() == 0x12); + +99 +SECTION +("readBytes()llt once") { + +100 + gRd + +ad +("ABCD"); + +102  + gbufr +[8] = "abcd"; + +103 +REQUIRE +( +ad +. +adBys +( +bufr +, 3) == 3); + +105 +REQUIRE +( +bufr +[0] == 'A'); + +106 +REQUIRE +( +bufr +[1] == 'B'); + +107 +REQUIRE +( +bufr +[2] == 'C'); + +108 +REQUIRE +( +bufr +[3] == 'd'); + +111 +SECTION +("readBytes() inwoarts") { + +112 + gRd + +ad +("ABCDEF"); + +114  + gbufr +[8] = "abcdefg"; + +115 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 4); + +116 +REQUIRE +( +ad +. +adBys +( +bufr + + 4, 2) == 2); + +118 +REQUIRE +( +bufr +[0] == 'A'); + +119 +REQUIRE +( +bufr +[1] == 'B'); + +120 +REQUIRE +( +bufr +[2] == 'C'); + +121 +REQUIRE +( +bufr +[3] == 'D'); + +122 +REQUIRE +( +bufr +[4] == 'E'); + +123 +REQUIRE +( +bufr +[5] == 'F'); + +124 +REQUIRE +( +bufr +[6] == 'g'); + +128 +TEST_CASE +("IteratorReader") { + +129 +SECTION +("read()") { + +130 + gd +:: +rg + +c +("\x01\xFF"); + +131 + gItRd +< + gd +:: +rg +:: +cڡ_ +> +ad +( +c +. +beg +(), src. +d +()); + +133 +REQUIRE +( +ad +. +ad +() == 0x01); + +134 +REQUIRE +( +ad +. +ad +() == 0xFF); + +135 +REQUIRE +( +ad +. +ad +() == -1); + +138 +SECTION +("readBytes()llt once") { + +139 + gd +:: +rg + +c +("ABC"); + +140 + gItRd +< + gd +:: +rg +:: +cڡ_ +> +ad +( +c +. +beg +(), src. +d +()); + +142  + gbufr +[8] = "abcd"; + +143 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 3); + +145 +REQUIRE +( +bufr +[0] == 'A'); + +146 +REQUIRE +( +bufr +[1] == 'B'); + +147 +REQUIRE +( +bufr +[2] == 'C'); + +148 +REQUIRE +( +bufr +[3] == 'd'); + +151 +SECTION +("readBytes() inwoarts") { + +152 + gd +:: +rg + +c +("ABCDEF"); + +153 + gItRd +< + gd +:: +rg +:: +cڡ_ +> +ad +( +c +. +beg +(), src. +d +()); + +155  + gbufr +[12] = "abcdefg"; + +156 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 4); + +157 +REQUIRE +( +ad +. +adBys +( +bufr + + 4, 4) == 2); + +159 +REQUIRE +( +bufr +[0] == 'A'); + +160 +REQUIRE +( +bufr +[1] == 'B'); + +161 +REQUIRE +( +bufr +[2] == 'C'); + +162 +REQUIRE +( +bufr +[3] == 'D'); + +163 +REQUIRE +( +bufr +[4] == 'E'); + +164 +REQUIRE +( +bufr +[5] == 'F'); + +165 +REQUIRE +( +bufr +[6] == 'g'); + +169 as + cSmStub + : +public + +Sm + { + +170 +public +: + +171 + $SmStub +(cڡ * +s +: + $_am +( +s +) {} + +173  + $ad +() { + +174  +_am +. + `g +(); + +175 + } +} + +177 +size_t + + $adBys +(* +bufr +, +size_t + +ngth +) { + +178 +_am +. + `ad +( +bufr +, +ic_ +< +d +:: +amsize +>( +ngth +)); + +179  +ic_ +< +size_t +>( +_am +. + `gcou +()); + +180 + } +} + +182 + give +: + +183 +d +:: +irgam + +_am +; + +186 +TEST_CASE +("Reader") { + +187 +SECTION +("read()") { + +188 +SmStub + +c +("\x01\xFF"); + +189 + gRd +< + gSmStub +> +ad +( +c +); + +191 +REQUIRE +( +ad +. +ad +() == 0x01); + +192 +REQUIRE +( +ad +. +ad +() == 0xFF); + +193 +REQUIRE +( +ad +. +ad +() == -1); + +196 +SECTION +("readBytes()llt once") { + +197 +SmStub + +c +("ABC"); + +198 + gRd +< + gSmStub +> +ad +( +c +); + +200  + gbufr +[8] = "abcd"; + +201 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 3); + +203 +REQUIRE +( +bufr +[0] == 'A'); + +204 +REQUIRE +( +bufr +[1] == 'B'); + +205 +REQUIRE +( +bufr +[2] == 'C'); + +206 +REQUIRE +( +bufr +[3] == 'd'); + +209 +SECTION +("readBytes() inwoarts") { + +210 +SmStub + +c +("ABCDEF"); + +211 + gRd +< + gSmStub +> +ad +( +c +); + +213  + gbufr +[12] = "abcdefg"; + +214 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 4); + +215 +REQUIRE +( +ad +. +adBys +( +bufr + + 4, 4) == 2); + +217 +REQUIRE +( +bufr +[0] == 'A'); + +218 +REQUIRE +( +bufr +[1] == 'B'); + +219 +REQUIRE +( +bufr +[2] == 'C'); + +220 +REQUIRE +( +bufr +[3] == 'D'); + +221 +REQUIRE +( +bufr +[4] == 'E'); + +222 +REQUIRE +( +bufr +[5] == 'F'); + +223 +REQUIRE +( +bufr +[6] == 'g'); + + @lib_standalone/ArduinoJson/extras/tests/Misc/StringAdapters.cpp + +5  + ~"cuom_rg.h +" + +6  + ~"ogmem_emuti.h +" + +7  + ~"wed_rcmp.h +" + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14  + ~ + +16 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +18 +TEST_CASE +("ConstRamStringAdapter") { + +19 +SECTION +("null") { + +20 +CڡRamSgAdr + +adr +( +NULL +); + +22 +CHECK +( +adr +. +com +("bravo") < 0); + +23 +CHECK +( +adr +. +com +( +NULL +) == 0); + +25 +CHECK +( +adr +. +equs +( +NULL +)); + +26 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +28 +CHECK +( +adr +. +size +() == 0); + +31 +SECTION +("non-null") { + +32 +CڡRamSgAdr + +adr +("bravo"); + +34 +CHECK +( +adr +. +com +( +NULL +) > 0); + +35 +CHECK +( +adr +. +com +("alpha") > 0); + +36 +CHECK +( +adr +. +com +("bravo") == 0); + +37 +CHECK +( +adr +. +com +("charlie") < 0); + +39 +CHECK +( +adr +. +equs +("bravo")); + +40 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +42 +CHECK +( +adr +. +size +() == 5); + +46 +TEST_CASE +("SizedRamStringAdapter") { + +47 +SECTION +("null") { + +48 +SizedRamSgAdr + +adr +( +NULL +, 10); + +50 +CHECK +( +adr +. +com +("bravo") < 0); + +51 +CHECK +( +adr +. +com +( +NULL +) == 0); + +53 +CHECK +( +adr +. +equs +( +NULL +)); + +54 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +56 +CHECK +( +adr +. +size +() == 10); + +59 +SECTION +("non-null") { + +60 +SizedRamSgAdr + +adr +("bravo", 5); + +62 +CHECK +( +adr +. +com +( +NULL +) > 0); + +63 +CHECK +( +adr +. +com +("alpha") > 0); + +64 +CHECK +( +adr +. +com +("bravo") == 0); + +65 +CHECK +( +adr +. +com +("charlie") < 0); + +67 +CHECK +( +adr +. +equs +("bravo")); + +68 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +70 +CHECK +( +adr +. +size +() == 5); + +74 +TEST_CASE +("FlashStringAdapter") { + +75 +SECTION +("null") { + +76 +FshSgAdr + +adr +( +NULL +); + +78 +CHECK +( +adr +. +com +("bravo") < 0); + +79 +CHECK +( +adr +. +com +( +NULL +) == 0); + +81 +CHECK +( +adr +. +equs +( +NULL +)); + +82 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +84 +CHECK +( +adr +. +size +() == 0); + +87 +SECTION +("non-null") { + +88 +FshSgAdr + + gadr + = +adtSg +( +F +("bravo")); + +90 +CHECK +( +adr +. +com +( +NULL +) > 0); + +91 +CHECK +( +adr +. +com +("alpha") > 0); + +92 +CHECK +( +adr +. +com +("bravo") == 0); + +93 +CHECK +( +adr +. +com +("charlie") < 0); + +95 +CHECK +( +adr +. +equs +("bravo")); + +96 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +98 +CHECK +( +adr +. +size +() == 5); + +102 +TEST_CASE +("std::string") { + +103 + gd +:: +rg + +r +("bravo"); + +104 + gSSgAdr +< + gd +:: +rg +> +adr + = +adtSg +( +r +); + +106 +CHECK +( +adr +. +com +( +NULL +) > 0); + +107 +CHECK +( +adr +. +com +("alpha") > 0); + +108 +CHECK +( +adr +. +com +("bravo") == 0); + +109 +CHECK +( +adr +. +com +("charlie") < 0); + +111 +CHECK +( +adr +. +equs +("bravo")); + +112 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +114 +CHECK +( +adr +. +size +() == 5); + +117 +TEST_CASE +("custom_string") { + +118 +cuom_rg + +r +("bravo"); + +119 + gSSgAdr +< + gcuom_rg +> + gadr + = +adtSg +( +r +); + +121 +CHECK +( +adr +. +com +( +NULL +) > 0); + +122 +CHECK +( +adr +. +com +("alpha") > 0); + +123 +CHECK +( +adr +. +com +("bravo") == 0); + +124 +CHECK +( +adr +. +com +("charlie") < 0); + +126 +CHECK +( +adr +. +equs +("bravo")); + +127 +CHECK_FALSE +( +adr +. +equs +("charlie")); + +129 +CHECK +( +adr +. +size +() == 5); + +132 +TEST_CASE +("IsString") { + +133 +SECTION +("std::string") { + +134 +CHECK +( +IsSg +< +d +:: +rg +>:: +vue + = +ue +); + +137 +SECTION +("basic_string") { + +138 +CHECK +( +IsSg +< +d +:: +basic_rg +< +wch_t +> >:: +vue + = +l +); + +141 +SECTION +("custom_string") { + +142 +CHECK +( +IsSg +< +cuom_rg +>:: +vue + = +ue +); + +145 +SECTION +("const __FlashStringHelper*") { + +146 +CHECK +( +IsSg +:: +vue + = +ue +); + + @lib_standalone/ArduinoJson/extras/tests/Misc/StringWriter.cpp + +5  + #ARDUINOJSON_ENABLE_ARDUINO_STRING + 1 + + ) + +6  + #ARDUINOJSON_STRING_BUFFER_SIZE + 5 + + ) + +7  + ~ + +8  + ~ + +9  + ~"cuom_rg.h +" + +11 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +13 + gme + < +tyme + + gSgWr +> + +14  +size_t + + $t +( +SgWr +& +sb +, cڡ * +s +) { + +15  +sb +. + `wre +( +t_ +( +s +), + ` +(s)); + +16 + } +} + +18 + gme + < +tyme + + gSgWr +,ym + gSg +> + +19  + $comm_s +( +SgWr +& +sb +, cڡ +Sg +& +ouut +) { + +20 + `SECTION +("InitialState") { + +21 + `REQUIRE +( +d +:: + `rg +(""= +ouut +); + +24 + `SECTION +("EmptyString") { + +25 + `REQUIRE +(0 = + `t +( +sb +, "")); + +26 + `REQUIRE +( +d +:: + `rg +(""= +ouut +); + +29 + `SECTION +("OneString") { + +30 + `REQUIRE +(4 = + `t +( +sb +, "ABCD")); + +31 + `REQUIRE +( +d +:: + `rg +("ABCD"= +ouut +); + +34 + `SECTION +("TwoStrings") { + +35 + `REQUIRE +(4 = + `t +( +sb +, "ABCD")); + +36 + `REQUIRE +(4 = + `t +( +sb +, "EFGH")); + +37 + `REQUIRE +( +d +:: + `rg +("ABCDEFGH"= +ouut +); + +39 + } +} + +41 +TEST_CASE +("StaticStringWriter") { + +42  + gouut +[20]; + +43 +SticSgWr + +sb +( +ouut +, (output)); + +45 +comm_s +( +sb +, +ic_ +( +ouut +)); + +47 +SECTION +("OverCapacity") { + +48 +REQUIRE +(19 = +t +( +sb +, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")); + +49 +REQUIRE +(0 = +t +( +sb +, "ABC")); + +50 +REQUIRE +( +d +:: +rg +("ABCDEFGHIJKLMNOPQRS"= +ouut +); + +54 +TEST_CASE +("Writer") { + +55 + gd +:: +rg + +ouut +; + +56 + gWr +< + gd +:: +rg +> +sb +( +ouut +); + +57 +comm_s +( +sb +, +ouut +); + +60 +TEST_CASE +("Writer") { + +61 :: +Sg + +ouut +; + +62 + gWr +< :: +Sg +> +sb +( +ouut +); + +64 +comm_s +( +sb +, +ouut +); + +66 +SECTION +("Writes charactersoemporary buffer") { + +68 + gsb +. +wre +('a'); + +69 + gsb +. +wre +('b'); + +70 + gsb +. +wre +('c'); + +71 +REQUIRE +( +ouut + == ""); + +74 + gsb +. +wre +('d'); + +75 +REQUIRE +( +ouut + == "abcd"); + +78 + gsb +. +wre +('e'); + +79 + gsb +.~ +Wr +(); + +80 +REQUIRE +( +ouut + == "abcde"); + +83 +SECTION +("Writes stringsoemporary buffer") { + +85 +t +( +sb +, "abc"); + +86 +REQUIRE +( +ouut + == ""); + +89 +t +( +sb +, "de"); + +90 +REQUIRE +( +ouut + == "abcd"); + +93 + gsb +.~ +Wr +(); + +94 +REQUIRE +( +ouut + == "abcde"); + +98 +TEST_CASE +("Writer") { + +99 +cuom_rg + + gouut +; + +100 + gWr +< + gcuom_rg +> +sb +( +ouut +); + +102 +REQUIRE +(4 = +t +( +sb +, "ABCD")); + +103 +REQUIRE +("ABCD" = +ouut +); + +106 +TEST_CASE +("IsWriteableString") { + +107 +SECTION +("std::string") { + +108 +REQUIRE +( +IsWrbSg +< +d +:: +rg +>:: +vue + = +ue +); + +111 +SECTION +("custom_string") { + +112 +REQUIRE +( +IsWrbSg +< +cuom_rg +>:: +vue + = +ue +); + +115 +SECTION +("basic_string") { + +116 +REQUIRE +( +IsWrbSg +< +d +:: +basic_rg +< +wch_t +> >:: +vue + = +l +); + + @lib_standalone/ArduinoJson/extras/tests/Misc/TypeTraits.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 as + cEmyCss + {}; + +11 + eEmyEnum + {}; + +13 +TEST_CASE +("Polyfills/type_traits") { + +14 +SECTION +("is_base_of") { + +15 +REQUIRE_FALSE +( + +16 +ic_ +< +bo +>( +is_ba_of +< +d +:: +iam +, std:: +orgam +>:: +vue +)); + +17 +REQUIRE +( + +18 +ic_ +< +bo +>( +is_ba_of +< +d +:: +iam +, std:: +irgam +>:: +vue +)); + +21 +SECTION +("is_array") { + +22 +REQUIRE_FALSE +(( +is_y +:: +vue +)); + +23 +REQUIRE +(( +is_y +:: +vue +)); + +24 +REQUIRE +(( +is_y +:: +vue +)); + +27 +SECTION +("is_const") { + +28 +CHECK +( +is_cڡ +<>:: +vue + = +l +); + +29 +CHECK +( +is_cڡ +:: +vue + = +ue +); + +32 +SECTION +("is_signed") { + +33 +CHECK +( +is_sigd +<>:: +vue + = +ue +); + +34 +CHECK +( +is_sigd +:: +vue + = +ue +); + +35 +CHECK +( +is_sigd +:: +vue + = +ue +); + +36 +CHECK +( +is_sigd +:: +vue + = +ue +); + +37 +CHECK +( +is_sigd +:: +vue + = +ue +); + +38 +CHECK +( +is_sigd +<>:: +vue + = +ue +); + +39 +CHECK +( +is_sigd +<>:: +vue + = +ue +); + +40 +CHECK +( +is_sigd +< +bo +>:: +vue + = +l +); + +43 +SECTION +("is_unsigned") { + +44 +CHECK +( +is_unsigd +<>:: +vue + = +ue +); + +45 +CHECK +( +is_unsigd +<>:: +vue + = +ue +); + +46 +CHECK +( +is_unsigd +<>:: +vue + = +ue +); + +47 +CHECK +( +is_unsigd +<>:: +vue + = +ue +); + +48 +CHECK +( +is_unsigd +< +bo +>:: +vue + = +ue +); + +49 +CHECK +( +is_unsigd +<>:: +vue + = +l +); + +50 +CHECK +( +is_unsigd +<>:: +vue + = +l +); + +51 +CHECK +( +is_unsigd +<>:: +vue + = +l +); + +54 +SECTION +("is_convertible") { + +55 +CHECK +(( +is_cvtib +<, >:: +vue + = +ue +)); + +56 +CHECK +(( +is_cvtib +<, >:: +vue + = +ue +)); + +57 +CHECK +(( +is_cvtib +< +EmyEnum +, >:: +vue + = +ue +)); + +58 +CHECK +(( +is_cvtib +<*, >:: +vue + = +l +)); + +59 +CHECK +(( +is_cvtib +< +EmyCss +, >:: +vue + = +l +)); + +62 +SECTION +("is_class") { + +63 +CHECK +(( +is_ass +<>:: +vue + = +l +)); + +64 +CHECK +(( +is_ass +< +EmyEnum +>:: +vue + = +l +)); + +65 +CHECK +(( +is_ass +<*>:: +vue + = +l +)); + +66 +CHECK +(( +is_ass +< +EmyCss +>:: +vue + = +ue +)); + +69 +SECTION +("is_enum") { + +70 +CHECK +( +is_um +<>:: +vue + = +l +); + +71 +CHECK +( +is_um +< +EmyEnum +>:: +vue + = +ue +); + +72 +CHECK +( +is_um +<*>:: +vue + = +l +); + +73 +CHECK +( +is_um +< +EmyCss +>:: +vue + = +l +); + +74 +CHECK +( +is_um +< +bo +>:: +vue + = +l +); + +75 +CHECK +( +is_um +<>:: +vue + = +l +); + +78 +SECTION +("IsVisitable") { + +79 +CHECK +( +IsVisab +< +DerliziE +>:: +vue + = +l +); + +80 +CHECK +( +IsVisab +< +JsPa +>:: +vue + = +l +); + +81 +CHECK +( +IsVisab +< +VRef +>:: +vue + = +ue +); + +82 +CHECK +( +IsVisab +< +VCڡRef +>:: +vue + = +ue +); + +83 +CHECK +( +IsVisab +< +AayRef +>:: +vue + = +ue +); + +84 +CHECK +( +IsVisab +< +EmtProxy +< +AayRef +> >:: +vue + = +ue +); + +85 +CHECK +( +IsVisab +< +AayCڡRef +>:: +vue + = +ue +); + +86 +CHECK +( +IsVisab +< +ObjeRef +>:: +vue + = +ue +); + +87 +CHECK +(( +IsVisab +< +MembProxy +< +ObjeRef +, cڡ *> >:: +vue + = +ue +)); + +88 +CHECK +( +IsVisab +< +ObjeCڡRef +>:: +vue + = +ue +); + +89 +CHECK +( +IsVisab +< +DymicJsDocumt +>:: +vue + = +ue +); + +90 +CHECK +( +IsVisab +< +SticJsDocumt +<10> >:: +vue + = +ue +); + + @lib_standalone/ArduinoJson/extras/tests/Misc/Utf16.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10  + $Utf16Codot +( +ut16_t + +codeun +, +ut32_t + +exedCodot +) { + +11 +Utf16 +:: +Codot + + +; + +12 + `REQUIRE +( + +. + `nd +( +codeun += +ue +); + +13 + `REQUIRE +( + +. + `vue +(= +exedCodot +); + +14 + } +} + +16  + $Utf16Codot +( +ut16_t + +codeun1 +, ut16_ +codeun2 +, + +17 +ut32_t + +exedCodot +) { + +18 +Utf16 +:: +Codot + + +; + +19 + `REQUIRE +( + +. + `nd +( +codeun1 += +l +); + +20 + `REQUIRE +( + +. + `nd +( +codeun2 += +ue +); + +21 + `REQUIRE +( + +. + `vue +(= +exedCodot +); + +22 + } +} + +24 +TEST_CASE +("Utf16::Codepoint()") { + +25 +SECTION +("U+0000") { + +26 +Utf16Codot +(0x0000, 0x000000); + +29 +SECTION +("U+0001") { + +30 +Utf16Codot +(0x0001, 0x000001); + +33 +SECTION +("U+D7FF") { + +34 +Utf16Codot +(0xD7FF, 0x00D7FF); + +37 +SECTION +("U+E000") { + +38 +Utf16Codot +(0xE000, 0x00E000); + +41 +SECTION +("U+FFFF") { + +42 +Utf16Codot +(0xFFFF, 0x00FFFF); + +45 +SECTION +("U+010000") { + +46 +Utf16Codot +(0xD800, 0xDC00, 0x010000); + +49 +SECTION +("U+010001") { + +50 +Utf16Codot +(0xD800, 0xDC01, 0x010001); + +53 +SECTION +("U+0103FF") { + +54 +Utf16Codot +(0xD800, 0xDFFF, 0x0103FF); + +57 +SECTION +("U+010400") { + +58 +Utf16Codot +(0xD801, 0xDC00, 0x010400); + +61 +SECTION +("U+010400") { + +62 +Utf16Codot +(0xDBFF, 0xDC00, 0x10FC00); + +65 +SECTION +("U+10FFFF") { + +66 +Utf16Codot +(0xDBFF, 0xDFFF, 0x10FFFF); + + @lib_standalone/ArduinoJson/extras/tests/Misc/Utf8.cpp + +5  + ~ + +6  + ~ + +8  + ~ + +10 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +12  + $Codot +( +ut32_t + +codot +, +d +:: +rg + +exed +) { + +13  +bufr +[4096]; + +14 +MemyPo + + `po +( +bufr +, 4096); + +15 +SgBud + + `r +(& +po +); + +17 + `CAPTURE +( +codot +); + +18 +Utf8 +:: + `codeCodot +( +codot +, +r +); + +20 + `REQUIRE +( +r +. + `come +(= +exed +); + +21 + } +} + +23 +TEST_CASE +("Utf8::encodeCodepoint()") { + +24 +SECTION +("U+0000") { + +25 +Codot +(0x0000, ""); + +28 +SECTION +("U+0001") { + +29 +Codot +(0x0001, "\x01"); + +32 +SECTION +("U+007F") { + +33 +Codot +(0x007F, "\x7f"); + +36 +SECTION +("U+0080") { + +37 +Codot +(0x0080, "\xc2\x80"); + +40 +SECTION +("U+07FF") { + +41 +Codot +(0x07FF, "\xdf\xbf"); + +44 +SECTION +("U+0800") { + +45 +Codot +(0x0800, "\xe0\xa0\x80"); + +48 +SECTION +("U+FFFF") { + +49 +Codot +(0xFFFF, "\xef\xbf\xbf"); + +52 +SECTION +("U+10000") { + +53 +Codot +(0x10000, "\xf0\x90\x80\x80"); + +56 +SECTION +("U+10FFFF") { + +57 +Codot +(0x10FFFF, "\xf4\x8f\xbf\xbf"); + + @lib_standalone/ArduinoJson/extras/tests/Misc/conflicts.cpp + +6  + ~ + +7  + ~ + +8  + ~ + +11  + #b +() + + ) + +12  + #cڡ +() + + ) + +13  + #DEFAULT + + + ) + +14  + #DISABLED + + + ) + +15  + #HIGH + + + ) + +16  + #INPUT + + + ) + +17  + #LOW + + + ) + +18  + #max +() + + ) + +19  + #m +() + + ) + +20  + #OUTPUT + + + ) + +21  + #round +() + + ) + +22  + #sq +() + + ) + +23  + #wd +() + + ) + +24  + #bRd +() + + ) + +25  + #bS +() + + ) + +26  + #bCˬ +() + + ) + +27  + #bWre +() + + ) + +28  + #us +() + + ) + +29  + #lowBy +() + + ) + +30  + #highBy +() + + ) + +31  + #DEC + + + ) + +32  + #HEX + + + ) + +33  + #OCT + + + ) + +34  + #BIN + + + ) + +35  + #cbi +() + + ) + +36  + #sbi +() + + ) + +39  + #_max +() + + ) + +40  + #_m +() + + ) + +43  + #BLOCKSIZE + + + ) + +44  + #CAPACITY + + + ) + +47  + ~"ArduoJs.h +" + + @lib_standalone/ArduinoJson/extras/tests/Misc/custom_string.hpp + +5 #agm + + + +7  + ~ + +9  + gcuom_ch_as + : +d +:: +ch_as +<> {}; + +10  + gcuom_lot + : +d +:: +lot +<> {}; + +11  + gd +:: + tbasic_rg +<, + tcuom_ch_as +, + tcuom_lot +> + +12 + tcuom_rg +; + + @lib_standalone/ArduinoJson/extras/tests/Misc/unsigned_char.cpp + +5  + ~ + +6  + ~ + +8 #i +defed +( +__g__ +) + +9  + #CONFLICTS_WITH_BUILTIN_OPERATOR + + + ) + +12 +TEST_CASE +("unsigned char[]") { + +13 +SECTION +("deserializeJson()") { + +14  + gput +[] = "{\"a\":42}"; + +16 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1)> + gdoc +; + +17 +DerliziE + + gr + = +derlizeJs +( +doc +, +put +); + +19 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +22 +SECTION +("deserializeMsgPack()") { + +23  + gput +[] = "\xDE\x00\x01\xA5Hello\xA5world"; + +25 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +26 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +28 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +31 +SECTION +("serializeMsgPack(unsigned char[])") { + +32  + gbufr +[32]; + +33 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +34 + gdoc +["hello"] = "world"; + +36 +size_t + + gn + = +rlizeMsgPack +( +doc +, +bufr +); + +38 +REQUIRE +( +n + == 13); + +39 +REQUIRE +( +memcmp +( +bufr +, "\x81\xA5hello\xA5world", 13) == 0); + +42 +SECTION +("serializeMsgPack(unsigned char*)") { + +43  + gbufr +[32]; + +44 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +45 + gdoc +["hello"] = "world"; + +47 +size_t + + gn + = +rlizeMsgPack +( +doc +, +bufr +, (buffer)); + +49 +REQUIRE +( +n + == 13); + +50 +REQUIRE +( +memcmp +( +bufr +, "\x81\xA5hello\xA5world", 13) == 0); + +53 +SECTION +("serializeJson(unsigned char[])") { + +54  + gbufr +[32]; + +55 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +56 + gdoc +["hello"] = "world"; + +58 +size_t + + gn + = +rlizeJs +( +doc +, +bufr +); + +60 +REQUIRE +( +n + == 17); + +61 +REQUIRE +( +memcmp +( +bufr +, "{\"hlo\":\"wld\"}", +n +) == 0); + +64 +SECTION +("serializeJson(unsigned char*)") { + +65  + gbufr +[32]; + +66 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +67 + gdoc +["hello"] = "world"; + +69 +size_t + + gn + = +rlizeJs +( +doc +, +bufr +, (buffer)); + +71 +REQUIRE +( +n + == 17); + +72 +REQUIRE +( +memcmp +( +bufr +, "{\"hlo\":\"wld\"}", +n +) == 0); + +75 +SECTION +("serializeJsonPretty(unsigned char[])") { + +76  + gbufr +[32]; + +77 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +78 + gdoc +["hello"] = "world"; + +80 +size_t + + gn + = +rlizeJsPy +( +doc +, +bufr +); + +82 +REQUIRE +( +n + == 24); + +85 +SECTION +("serializeJsonPretty(unsigned char*)") { + +86  + gbufr +[32]; + +87 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(2)> + gdoc +; + +88 + gdoc +["hello"] = "world"; + +90 +size_t + + gn + = +rlizeJsPy +( +doc +, +bufr +, (buffer)); + +92 +REQUIRE +( +n + == 24); + +95 +SECTION +("JsonVariant") { + +96 +DymicJsDocumt + +doc +(4096); + +98 +SECTION +("set") { + +99  + gvue +[] = "42"; + +101 +JsV + + gv + = +doc +. +to +(); + +102 + gv +. +t +( +vue +); + +104 +REQUIRE +(42 = +v +. +as +<>()); + +107 #ide +CONFLICTS_WITH_BUILTIN_OPERATOR + + +108 +SECTION +("operator[]") { + +109  + gkey +[] = "hello"; + +111 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +112 +JsV + + gv + = +doc +. +as +(); + +114 +REQUIRE +( +d +:: +rg +("wld"= +v +[ +key +]); + +118 #ide +CONFLICTS_WITH_BUILTIN_OPERATOR + + +119 +SECTION +("operator[] const") { + +120  + gkey +[] = "hello"; + +122 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +123 cڡ +JsV + + gv + = +doc +. +as +(); + +125 +REQUIRE +( +d +:: +rg +("wld"= +v +[ +key +]); + +129 +SECTION +("operator==") { + +130  + gcomnd +[] = "hello"; + +132 +JsV + + gv + = +doc +. +to +(); + +133 + gv +. +t +("hello"); + +135 +REQUIRE +( +comnd + = +v +); + +136 +REQUIRE +( +v + = +comnd +); + +137 +REQUIRE_FALSE +( +comnd + ! +v +); + +138 +REQUIRE_FALSE +( +v + ! +comnd +); + +141 +SECTION +("operator!=") { + +142  + gcomnd +[] = "hello"; + +144 +JsV + + gv + = +doc +. +to +(); + +145 + gv +. +t +("world"); + +147 +REQUIRE +( +comnd + ! +v +); + +148 +REQUIRE +( +v + ! +comnd +); + +149 +REQUIRE_FALSE +( +comnd + = +v +); + +150 +REQUIRE_FALSE +( +v + = +comnd +); + +154 +SECTION +("JsonObject") { + +155 #ide +CONFLICTS_WITH_BUILTIN_OPERATOR + + +156 +SECTION +("operator[]") { + +157  + gkey +[] = "hello"; + +159 +DymicJsDocumt + +doc +(4096); + +160 +JsObje + + gobj + = +doc +. +to +(); + +161 + gobj +[ +key +] = "world"; + +163 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +166 +SECTION +("JsonObject::operator[] const") { + +167  + gkey +[] = "hello"; + +169 +DymicJsDocumt + +doc +(4096); + +170 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +172 +JsObje + + gobj + = +doc +. +as +(); + +173 +REQUIRE +( +d +:: +rg +("wld"= +obj +[ +key +]); + +177 +SECTION +("containsKey()") { + +178  + gkey +[] = "hello"; + +180 +DymicJsDocumt + +doc +(4096); + +181 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +182 +JsObje + + gobj + = +doc +. +as +(); + +183 +REQUIRE +( +ue + = +obj +. +cڏsKey +( +key +)); + +186 +SECTION +("remove()") { + +187  + gkey +[] = "hello"; + +189 +DymicJsDocumt + +doc +(4096); + +190 +derlizeJs +( +doc +, "{\"hello\":\"world\"}"); + +191 +JsObje + + gobj + = +doc +. +as +(); + +192 + gobj +. +move +( +key +); + +194 +REQUIRE +(0 = +obj +. +size +()); + +197 +SECTION +("createNestedArray()") { + +198  + gkey +[] = "hello"; + +200 +DymicJsDocumt + +doc +(4096); + +201 +JsObje + + gobj + = +doc +. +to +(); + +202 + gobj +. +NeedAay +( +key +); + +205 +SECTION +("createNestedObject()") { + +206  + gkey +[] = "hello"; + +208 +DymicJsDocumt + +doc +(4096); + +209 +JsObje + + gobj + = +doc +. +to +(); + +210 + gobj +. +NeedObje +( +key +); + +214 +SECTION +("MemberProxy") { + +215 +SECTION +("operator=") { + +216  + gvue +[] = "world"; + +218 +DymicJsDocumt + +doc +(4096); + +219 +JsObje + + gobj + = +doc +. +to +(); + +220 + gobj +["hlo"] = +vue +; + +222 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +225 +SECTION +("set()") { + +226  + gvue +[] = "world"; + +228 +DymicJsDocumt + +doc +(4096); + +229 +JsObje + + gobj + = +doc +. +to +(); + +230 + gobj +["hlo"]. +t +( +vue +); + +232 +REQUIRE +( +d +:: +rg +("wld"= +obj +["hello"]); + +236 +SECTION +("JsonArray") { + +237 +SECTION +("add()") { + +238  + gvue +[] = "world"; + +240 +DymicJsDocumt + +doc +(4096); + +241 +JsAay + + gr + = +doc +. +to +(); + +242 + gr +. +add +( +vue +); + +244 +REQUIRE +( +d +:: +rg +("wld"= +r +[0]); + +248 +SECTION +("ElementProxy") { + +249 +SECTION +("set()") { + +250  + gvue +[] = "world"; + +252 +DymicJsDocumt + +doc +(4096); + +253 +JsAay + + gr + = +doc +. +to +(); + +254 + gr +. +add +("hello"); + +255 + gr +[0]. +t +( +vue +); + +257 +REQUIRE +( +d +:: +rg +("wld"= +r +[0]); + +260 +SECTION +("operator=") { + +261  + gvue +[] = "world"; + +263 +DymicJsDocumt + +doc +(4096); + +264 +JsAay + + gr + = +doc +. +to +(); + +265 + gr +. +add +("hello"); + +266 + gr +[0] = +vue +; + +268 +REQUIRE +( +d +:: +rg +("wld"= +r +[0]); + + @lib_standalone/ArduinoJson/extras/tests/Misc/version.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +usg + + gCch +:: +Mchs +:: +SsWh +; + +11 +TEST_CASE +("ARDUINOJSON_VERSION") { + +12 + gd +:: +rgam + +vsi +; + +14 + gvsi + << + gARDUINOJSON_VERSION_MAJOR + << "." << + gARDUINOJSON_VERSION_MINOR + + +15 << "." << + gARDUINOJSON_VERSION_REVISION +; + +17 +REQUIRE_THAT +( +ARDUINOJSON_VERSION +, +SsWh +( +vsi +. +r +())); + + @lib_standalone/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp + +1  + ~ + +5 +mea + + gARDUINOJSON_NAMESPACE + { + +6  +rcmp +(cڡ * +a +, cڡ * +b +) { + +7  + gsu + = :: +rcmp +( +a +, +b +); + +8 i( + gsu + > 0) + +10 i( + gsu + < 0) + +15  +cmp +(cڡ * +a +, cڡ * +b +, +size_t + +n +) { + +16  + gsu + = :: +cmp +( +a +, +b +, +n +); + +17 i( + gsu + > 0) + +19 i( + gsu + < 0) + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/cpp11.cpp + +1  + ~ + +3  + ~ + +5 #i +__lulus + >= 201103L + +7 +TEST_CASE +("nullptr") { + +8 +DymicJsDocumt + +doc +(4096); + +9 +JsV + + gv + = +doc +. +to +(); + +11 +SECTION +("JsonVariant ==ullptr") { + +12 +REQUIRE +(( +v + = +nuαr +)); + +13 +REQUIRE_FALSE +(( +v + ! +nuαr +)); + +16 +SECTION +("JsonVariant !=ullptr") { + +17 + gv +. +t +(42); + +19 +REQUIRE_FALSE +(( +v + = +nuαr +)); + +20 +REQUIRE +(( +v + ! +nuαr +)); + +23 +SECTION +("JsonVariant.set(nullptr)") { + +24 + gv +. +t +(42); + +25 + gv +. +t +( +nuαr +); + +27 +REQUIRE +( +v +. +isNu +()); + +30 +SECTION +("JsonVariant.is()") { + +31 + gv +. +t +(42); + +32 +REQUIRE +( +v +. +is +< +d +:: +nuαr_t +>(= +l +); + +34 + gv +. +r +(); + +35 +REQUIRE +( +v +. +is +< +d +:: +nuαr_t +>(= +ue +); + +39 +TEST_CASE +("Issue #1120") { + +40 + gSticJsDocumt +<500> + gdoc +; + +41 +cڡex +  + gr +[] = + +43 +derlizeJs +( +doc +, +r +); + +45 +SECTION +("MemberProxy::isNull()") { + +46 +SECTION +("returns false") { + +47 aut + gvue + = +doc +[ +d +:: +rg +("contents")]; + +48 +CHECK +( +vue +. +isNu +(= +l +); + +51 +SECTION +("returnsrue") { + +52 aut + gvue + = +doc +[ +d +:: +rg +("zontents")]; + +53 +CHECK +( +vue +. +isNu +(= +ue +); + +57 +SECTION +("ElementProxy >::isNull()") { + +58 +SECTION +("returns false") { + +59 aut + gvue + = +doc +["contents"][1]; + +60 +CHECK +( +vue +. +isNu +(= +l +); + +63 +SECTION +("returnsrue") { + +64 aut + gvue + = +doc +["contents"][2]; + +65 +CHECK +( +vue +. +isNu +(= +ue +); + +69 +SECTION +("MemberProxy, const char*>::isNull()") { + +70 +SECTION +("returns false") { + +71 aut + gvue + = +doc +["contents"][1]["module"]; + +72 +CHECK +( +vue +. +isNu +(= +l +); + +75 +SECTION +("returnsrue") { + +76 aut + gvue + = +doc +["contents"][1]["zodule"]; + +77 +CHECK +( +vue +. +isNu +(= +ue +); + +81 +SECTION +("MemberProxy, std::string>::isNull()") { + +82 +SECTION +("returns false") { + +83 aut + gvue + = +doc +["cڋs"][1][ +d +:: +rg +("module")]; + +84 +CHECK +( +vue +. +isNu +(= +l +); + +87 +SECTION +("returnsrue") { + +88 aut + gvue + = +doc +["cڋs"][1][ +d +:: +rg +("zodule")]; + +89 +CHECK +( +vue +. +isNu +(= +ue +); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_0.cpp + +1  + #ARDUINOJSON_DECODE_UNICODE + 0 + + ) + +2  + ~ + +4  + ~ + +6 +TEST_CASE +("ARDUINOJSON_DECODE_UNICODE == 0") { + +7 +DymicJsDocumt + +doc +(2048); + +8 +DerliziE + + gr + = +derlizeJs +( +doc +, "\"\\uD834\\uDD1E\""); + +10 +REQUIRE +( +r + = +DerliziE +:: +NSu܋d +); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_1.cpp + +1  + #ARDUINOJSON_DECODE_UNICODE + 1 + + ) + +2  + ~ + +4  + ~ + +6 +TEST_CASE +("ARDUINOJSON_DECODE_UNICODE == 1") { + +7 +DymicJsDocumt + +doc +(2048); + +8 +DerliziE + + gr + = +derlizeJs +( +doc +, "\"\\uD834\\uDD1E\""); + +10 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp + +5  + #ARDUINOJSON_ENABLE_COMMENTS + 0 + + ) + +6  + ~ + +8  + ~ + +10 +TEST_CASE +("Comments shouldroduce InvalidInput") { + +11 +DymicJsDocumt + +doc +(2048); + +13 cڡ * + gCas +[] = { + +47 cڡ +size_t + + gCou + = ( +Cas +) / (testCases[0]); + +49  +size_t + + gi + = 0; i < + gCou +; i++) { + +50 cڡ * + gput + = +Cas +[ +i +]; + +51 +CAPTURE +( +put +); + +52 +REQUIRE +( +derlizeJs +( +doc +, +put += +DerliziE +:: +InvidIut +); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp + +5  + #ARDUINOJSON_ENABLE_COMMENTS + 1 + + ) + +6  + ~ + +8  + ~ + +10 +TEST_CASE +("Comments inrrays") { + +11 +DymicJsDocumt + +doc +(2048); + +13 +SECTION +("Block comments") { + +14 +SECTION +("Before opening bracket") { + +15 +DerliziE + + gr + = + +16 +derlizeJs +( +doc +, "/*COMMENT*/ [\"hello\"]"); + +17 +JsAay + + gr + = +doc +. +as +(); + +19 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +20 +REQUIRE +(1 = +r +. +size +()); + +21 +REQUIRE +( +r +[0] == "hello"); + +24 +SECTION +("After opening bracket") { + +25 +DerliziE + + gr + = + +26 +derlizeJs +( +doc +, "[/*COMMENT*/ \"hello\"]"); + +27 +JsAay + + gr + = +doc +. +as +(); + +29 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +30 +REQUIRE +(1 = +r +. +size +()); + +31 +REQUIRE +( +r +[0] == "hello"); + +34 +SECTION +("Before closing bracket") { + +35 +DerliziE + + gr + = +derlizeJs +( +doc +, "[\"hello\"/*COMMENT*/]"); + +36 +JsAay + + gr + = +doc +. +as +(); + +38 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +39 +REQUIRE +(1 = +r +. +size +()); + +40 +REQUIRE +( +r +[0] == "hello"); + +43 +SECTION +("After closing bracket") { + +44 +DerliziE + + gr + = +derlizeJs +( +doc +, "[\"hello\"]/*COMMENT*/"); + +45 +JsAay + + gr + = +doc +. +as +(); + +47 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +48 +REQUIRE +(1 = +r +. +size +()); + +49 +REQUIRE +( +r +[0] == "hello"); + +52 +SECTION +("Before comma") { + +53 +DerliziE + + gr + = + +54 +derlizeJs +( +doc +, "[\"hello\"/*COMMENT*/,\"world\"]"); + +55 +JsAay + + gr + = +doc +. +as +(); + +57 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +58 +REQUIRE +(2 = +r +. +size +()); + +59 +REQUIRE +( +r +[0] == "hello"); + +60 +REQUIRE +( +r +[1] == "world"); + +63 +SECTION +("After comma") { + +64 +DerliziE + + gr + = + +65 +derlizeJs +( +doc +, "[\"hello\",/*COMMENT*/ \"world\"]"); + +66 +JsAay + + gr + = +doc +. +as +(); + +68 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +69 +REQUIRE +(2 = +r +. +size +()); + +70 +REQUIRE +( +r +[0] == "hello"); + +71 +REQUIRE +( +r +[1] == "world"); + +74 +SECTION +("/*/") { + +75 +DerliziE + + gr + = +derlizeJs +( +doc +, "[/*/\n]"); + +76 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +79 +SECTION +("Unfinished comment") { + +80 +DerliziE + + gr + = +derlizeJs +( +doc +, "[/*COMMENT]"); + +81 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +84 +SECTION +("Final slash missing") { + +85 +DerliziE + + gr + = +derlizeJs +( +doc +, "[/*COMMENT*]"); + +86 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +90 +SECTION +("Trailing comments") { + +91 +SECTION +("Before opening bracket") { + +92 +DerliziE + + gr + = + +93 +derlizeJs +( +doc +, "//COMMENT\n\t[\"hello\"]"); + +94 +JsAay + + gr + = +doc +. +as +(); + +96 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +97 +REQUIRE +(1 = +r +. +size +()); + +98 +REQUIRE +( +r +[0] == "hello"); + +101 +SECTION +("After opening bracket") { + +102 +DerliziE + + gr + = +derlizeJs +( +doc +, "[//COMMENT\n\"hello\"]"); + +103 +JsAay + + gr + = +doc +. +as +(); + +105 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +106 +REQUIRE +(1 = +r +. +size +()); + +107 +REQUIRE +( +r +[0] == "hello"); + +110 +SECTION +("Before closing bracket") { + +111 +DerliziE + + gr + = + +112 +derlizeJs +( +doc +, "[\"hello\"//COMMENT\r\n]"); + +113 +JsAay + + gr + = +doc +. +as +(); + +115 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +116 +REQUIRE +(1 = +r +. +size +()); + +117 +REQUIRE +( +r +[0] == "hello"); + +120 +SECTION +("After closing bracket") { + +121 +DerliziE + + gr + = +derlizeJs +( +doc +, "[\"hello\"]//COMMENT\n"); + +122 +JsAay + + gr + = +doc +. +as +(); + +124 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +125 +REQUIRE +(1 = +r +. +size +()); + +126 +REQUIRE +( +r +[0] == "hello"); + +129 +SECTION +("Before comma") { + +130 +DerliziE + + gr + = + +131 +derlizeJs +( +doc +, "[\"hello\"//COMMENT\n,\"world\"]"); + +132 +JsAay + + gr + = +doc +. +as +(); + +134 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +135 +REQUIRE +(2 = +r +. +size +()); + +136 +REQUIRE +( +r +[0] == "hello"); + +137 +REQUIRE +( +r +[1] == "world"); + +140 +SECTION +("After comma") { + +141 +DerliziE + + gr + = + +142 +derlizeJs +( +doc +, "[\"hello\",//COMMENT\n\"world\"]"); + +143 +JsAay + + gr + = +doc +. +as +(); + +145 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +146 +REQUIRE +(2 = +r +. +size +()); + +147 +REQUIRE +( +r +[0] == "hello"); + +148 +REQUIRE +( +r +[1] == "world"); + +151 +SECTION +("Invalid comment") { + +152 +DerliziE + + gr + = +derlizeJs +( +doc +, "[/COMMENT\n]"); + +153 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +156 +SECTION +("End document with comment") { + +157 +DerliziE + + gr + = +derlizeJs +( +doc +, "[//COMMENT"); + +158 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +163 +TEST_CASE +("Comments in objects") { + +164 +DymicJsDocumt + +doc +(2048); + +166 +SECTION +("Block comments") { + +167 +SECTION +("Before opening brace") { + +168 +DerliziE + + gr + = + +169 +derlizeJs +( +doc +, "/*COMMENT*/ {\"hello\":\"world\"}"); + +170 +JsObje + + gobj + = +doc +. +as +(); + +172 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +173 +REQUIRE +( +obj +["hello"] == "world"); + +176 +SECTION +("After opening brace") { + +177 +DerliziE + + gr + = + +178 +derlizeJs +( +doc +, "{/*COMMENT*/\"hello\":\"world\"}"); + +179 +JsObje + + gobj + = +doc +. +as +(); + +181 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +182 +REQUIRE +( +obj +["hello"] == "world"); + +185 +SECTION +("Before colon") { + +186 +DerliziE + + gr + = + +187 +derlizeJs +( +doc +, "{\"hello\"/*COMMENT*/:\"world\"}"); + +188 +JsObje + + gobj + = +doc +. +as +(); + +190 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +191 +REQUIRE +( +obj +["hello"] == "world"); + +194 +SECTION +("After colon") { + +195 +DerliziE + + gr + = + +196 +derlizeJs +( +doc +, "{\"hello\":/*COMMENT*/\"world\"}"); + +197 +JsObje + + gobj + = +doc +. +as +(); + +199 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +200 +REQUIRE +( +obj +["hello"] == "world"); + +203 +SECTION +("Before closing brace") { + +204 +DerliziE + + gr + = + +205 +derlizeJs +( +doc +, "{\"hello\":\"world\"/*COMMENT*/}"); + +206 +JsObje + + gobj + = +doc +. +as +(); + +208 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +209 +REQUIRE +( +obj +["hello"] == "world"); + +212 +SECTION +("After closing brace") { + +213 +DerliziE + + gr + = + +214 +derlizeJs +( +doc +, "{\"hello\":\"world\"}/*COMMENT*/"); + +215 +JsObje + + gobj + = +doc +. +as +(); + +217 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +218 +REQUIRE +( +obj +["hello"] == "world"); + +221 +SECTION +("Before comma") { + +222 +DerliziE + + gr + = +derlizeJs +( + +223 +doc +, "{\"hello\":\"world\"/*COMMENT*/,\"answer\":42}"); + +224 +JsObje + + gobj + = +doc +. +as +(); + +226 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +227 +REQUIRE +( +obj +["hello"] == "world"); + +228 +REQUIRE +( +obj +["answer"] == 42); + +231 +SECTION +("After comma") { + +232 +DerliziE + + gr + = +derlizeJs +( + +233 +doc +, "{\"hello\":\"world\",/*COMMENT*/\"answer\":42}"); + +234 +JsObje + + gobj + = +doc +. +as +(); + +236 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +237 +REQUIRE +( +obj +["hello"] == "world"); + +238 +REQUIRE +( +obj +["answer"] == 42); + +242 +SECTION +("Trailing comments") { + +243 +SECTION +("Before opening brace") { + +244 +DerliziE + + gr + = + +245 +derlizeJs +( +doc +, "//COMMENT\n {\"hello\":\"world\"}"); + +246 +JsObje + + gobj + = +doc +. +as +(); + +248 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +249 +REQUIRE +( +obj +["hello"] == "world"); + +252 +SECTION +("After opening brace") { + +253 +DerliziE + + gr + = + +254 +derlizeJs +( +doc +, "{//COMMENT\n\"hello\":\"world\"}"); + +255 +JsObje + + gobj + = +doc +. +as +(); + +257 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +258 +REQUIRE +( +obj +["hello"] == "world"); + +261 +SECTION +("Before colon") { + +262 +DerliziE + + gr + = + +263 +derlizeJs +( +doc +, "{\"hello\"//COMMENT\n:\"world\"}"); + +264 +JsObje + + gobj + = +doc +. +as +(); + +266 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +267 +REQUIRE +( +obj +["hello"] == "world"); + +270 +SECTION +("After colon") { + +271 +DerliziE + + gr + = + +272 +derlizeJs +( +doc +, "{\"hello\"://COMMENT\n\"world\"}"); + +273 +JsObje + + gobj + = +doc +. +as +(); + +275 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +276 +REQUIRE +( +obj +["hello"] == "world"); + +279 +SECTION +("Before closing brace") { + +280 +DerliziE + + gr + = + +281 +derlizeJs +( +doc +, "{\"hello\":\"world\"//COMMENT\n}"); + +282 +JsObje + + gobj + = +doc +. +as +(); + +284 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +285 +REQUIRE +( +obj +["hello"] == "world"); + +288 +SECTION +("After closing brace") { + +289 +DerliziE + + gr + = + +290 +derlizeJs +( +doc +, "{\"hello\":\"world\"}//COMMENT\n"); + +291 +JsObje + + gobj + = +doc +. +as +(); + +293 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +294 +REQUIRE +( +obj +["hello"] == "world"); + +297 +SECTION +("Before comma") { + +298 +DerliziE + + gr + = +derlizeJs +( + +299 +doc +, "{\"hello\":\"world\"//COMMENT\n,\"answer\":42}"); + +300 +JsObje + + gobj + = +doc +. +as +(); + +302 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +303 +REQUIRE +( +obj +["hello"] == "world"); + +304 +REQUIRE +( +obj +["answer"] == 42); + +307 +SECTION +("After comma") { + +308 +DerliziE + + gr + = +derlizeJs +( + +309 +doc +, "{\"hello\":\"world\",//COMMENT\n\"answer\":42}"); + +310 +JsObje + + gobj + = +doc +. +as +(); + +312 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +313 +REQUIRE +( +obj +["hello"] == "world"); + +314 +REQUIRE +( +obj +["answer"] == 42); + +318 +SECTION +("Dangling slash") { + +319 +SECTION +("Before opening brace") { + +320 +DerliziE + + gr + = +derlizeJs +( +doc +, "/{\"hello\":\"world\"}"); + +322 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +325 +SECTION +("After opening brace") { + +326 +DerliziE + + gr + = +derlizeJs +( +doc +, "{/\"hello\":\"world\"}"); + +328 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +331 +SECTION +("Before colon") { + +332 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\"/:\"world\"}"); + +334 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +337 +SECTION +("After colon") { + +338 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\":/\"world\"}"); + +340 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +343 +SECTION +("Before closing brace") { + +344 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\":\"world\"/}"); + +346 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +349 +SECTION +("After closing brace") { + +350 +DerliziE + + gr + = +derlizeJs +( +doc +, "{\"hello\":\"world\"}/"); + +351 +JsObje + + gobj + = +doc +. +as +(); + +353 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +354 +REQUIRE +( +obj +["hello"] == "world"); + +357 +SECTION +("Before comma") { + +358 +DerliziE + + gr + = + +359 +derlizeJs +( +doc +, "{\"hello\":\"world\"/,\"answer\":42}"); + +361 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +364 +SECTION +("After comma") { + +365 +DerliziE + + gr + = + +366 +derlizeJs +( +doc +, "{\"hello\":\"world\",/\"answer\":42}"); + +368 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +373 +TEST_CASE +("Commentslone") { + +374 +DymicJsDocumt + +doc +(2048); + +376 +SECTION +("Justrailing comment") { + +377 +DerliziE + + gr + = +derlizeJs +( +doc +, "// comment"); + +379 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +382 +SECTION +("Just block comment") { + +383 +DerliziE + + gr + = +derlizeJs +( +doc +, "/*comment*/"); + +385 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +388 +SECTION +("Just slash") { + +389 +DerliziE + + gr + = +derlizeJs +( +doc +, "/"); + +391 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +394 +SECTION +("Prematureerminator") { + +395 +DerliziE + + gr + = +derlizeJs +( +doc +, "/* comment"); + +397 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +400 +SECTION +("Prematurend on sized input") { + +401 +DerliziE + + gr + = +derlizeJs +( +doc +, "/* comment */", 10); + +403 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_0.cpp + +1  + #ARDUINOJSON_ENABLE_INFINITY + 0 + + ) + +2  + ~ + +4  + ~ + +5  + ~ + +7  + $asPFas +(cڡ * +js +) { + +8 +DymicJsDocumt + + `doc +(4096); + +9 aut +r + = + `derlizeJs +( +doc +, +js +); + +11 + `REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + +12 + } +} + +14  + $asJsEqus +(cڡ +JsDocumt +& +doc +, + +15 +d +:: +rg + +exedJs +) { + +16 +d +:: +rg + +auJs +; + +17 + `rlizeJs +( +doc +, +auJs +); + +18 + `REQUIRE +( +auJs + = +exedJs +); + +19 + } +} + +21 +TEST_CASE +("ARDUINOJSON_ENABLE_INFINITY == 0") { + +22 +SECTION +("serializeJson()") { + +23 +DymicJsDocumt + +doc +(4096); + +24 + gdoc +. +add +( +d +:: +numic_lims +<>:: +fy +()); + +25 + gdoc +. +add +(- +d +:: +numic_lims +<>:: +fy +()); + +27 +asJsEqus +( +doc +, "[null,null]"); + +30 +SECTION +("deserializeJson()") { + +31 +asPFas +("{\"X\":Infinity}"); + +32 +asPFas +("{\"X\":-Infinity}"); + +33 +asPFas +("{\"X\":+Infinity}"); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_1.cpp + +1  + #ARDUINOJSON_ENABLE_INFINITY + 1 + + ) + +2  + ~ + +4  + ~ + +5  + ~ + +7 +mea + + gmy + { + +8 +usg + + gARDUINOJSON_NAMESPACE +:: +isf +; + +11 +TEST_CASE +("ARDUINOJSON_ENABLE_INFINITY == 1") { + +12 +DymicJsDocumt + +doc +(4096); + +14 +SECTION +("serializeJson()") { + +15 + gdoc +. +add +( +d +:: +numic_lims +<>:: +fy +()); + +16 + gdoc +. +add +(- +d +:: +numic_lims +<>:: +fy +()); + +18 + gd +:: +rg + +js +; + +19 +rlizeJs +( +doc +, +js +); + +21 +REQUIRE +( +js + == "[Infinity,-Infinity]"); + +24 +SECTION +("deserializeJson()") { + +25 aut + gr + = +derlizeJs +( +doc +, "[Infinity,-Infinity,+Infinity]"); + +26  + ga + = +doc +[0]; + +27  + gb + = +doc +[1]; + +28  + gc + = +doc +[2]; + +30 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +31 +REQUIRE +( +my +:: +isf +( +a +)); + +32 +REQUIRE +( +a + > 0); + +33 +REQUIRE +( +my +:: +isf +( +b +)); + +34 +REQUIRE +( +b + < 0); + +35 +REQUIRE +( +my +:: +isf +( +c +)); + +36 +REQUIRE +( +c + > 0); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_0.cpp + +1  + #ARDUINOJSON_ENABLE_NAN + 0 + + ) + +2  + ~ + +4  + ~ + +5  + ~ + +7 +TEST_CASE +("ARDUINOJSON_ENABLE_NAN == 0") { + +8 +DymicJsDocumt + +doc +(4096); + +9 +JsObje + + gro + = +doc +. +to +(); + +11 +SECTION +("serializeJson()") { + +12 + gro +["X"] = +d +:: +numic_lims +<>:: +siglg_NaN +(); + +14 + gd +:: +rg + +js +; + +15 +rlizeJs +( +doc +, +js +); + +17 +REQUIRE +( +js + == "{\"X\":null}"); + +20 +SECTION +("deserializeJson()") { + +21 aut + gr + = +derlizeJs +( +doc +, "{\"X\":NaN}"); + +23 +REQUIRE +( +r + = +DerliziE +:: +InvidIut +); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_1.cpp + +1  + #ARDUINOJSON_ENABLE_NAN + 1 + + ) + +2  + ~ + +4  + ~ + +5  + ~ + +7 +mea + + gmy + { + +8 +usg + + gARDUINOJSON_NAMESPACE +:: +i +; + +11 +TEST_CASE +("ARDUINOJSON_ENABLE_NAN == 1") { + +12 +DymicJsDocumt + +doc +(4096); + +13 +JsObje + + gro + = +doc +. +to +(); + +15 +SECTION +("serializeJson()") { + +16 + gro +["X"] = +d +:: +numic_lims +<>:: +siglg_NaN +(); + +18 + gd +:: +rg + +js +; + +19 +rlizeJs +( +doc +, +js +); + +21 +REQUIRE +( +js + == "{\"X\":NaN}"); + +24 +SECTION +("deserializeJson()") { + +25 aut + gr + = +derlizeJs +( +doc +, "{\"X\":NaN}"); + +26  + gx + = +doc +["X"]; + +28 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +29 +REQUIRE +( +my +:: +i +( +x +)); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp + +5  + ~"ogmem_emuti.h +" + +7  + #ARDUINOJSON_ENABLE_PROGMEM + 1 + + ) + +8  + ~ + +10  + ~ + +12 +TEST_CASE +("Flash strings") { + +13 +DymicJsDocumt + +doc +(2048); + +15 +SECTION +("deserializeJson()") { + +16 +DerliziE + + gr + = +derlizeJs +( +doc +, +F +("{'hello':'world'}")); + +18 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +19 +REQUIRE +( +doc +["hello"] == "world"); + +22 +SECTION +("JsonDocument::operator[]") { + +23 + gdoc +[ +F +("hello")] = F("world"); + +25 +REQUIRE +( +doc +["hello"] == "world"); + +28 +SECTION +("JsonDocument::add()") { + +29 + gdoc +. +add +( +F +("world")); + +31 +REQUIRE +( +doc +[0] == "world"); + +34 +SECTION +("JsonVariant::set()") { + +35 +JsV + + gv + = +doc +. +to +(); + +37 + gv +. +t +( +F +("world")); + +39 +REQUIRE +( +v + == "world"); + +42 +SECTION +("MemberProxy::operator==") { + +43 + gdoc +["hello"] = "world"; + +45 +REQUIRE +( +doc +["hlo"] = +F +("world")); + +48 +SECTION +("ElementProxy::operator==") { + +49 + gdoc +. +add +("world"); + +51 +REQUIRE +( +doc +[0] = +F +("world")); + +55 +TEST_CASE +("strlen_P") { + +56 +CHECK +( +_P +( +FC +("")) == 0); + +57 +CHECK +( +_P +( +FC +("a")) == 1); + +58 +CHECK +( +_P +( +FC +("ac")) == 2); + +61 +TEST_CASE +("strncmp_P") { + +62 +CHECK +( +cmp_P +("a", +FC +("b"), 0) == 0); + +63 +CHECK +( +cmp_P +("a", +FC +("b"), 1) == -1); + +64 +CHECK +( +cmp_P +("b", +FC +("a"), 1) == 1); + +65 +CHECK +( +cmp_P +("a", +FC +("a"), 0) == 0); + +66 +CHECK +( +cmp_P +("a", +FC +("b"), 2) == -1); + +67 +CHECK +( +cmp_P +("b", +FC +("a"), 2) == 1); + +68 +CHECK +( +cmp_P +("a", +FC +("a"), 2) == 0); + +71 +TEST_CASE +("strcmp_P") { + +72 +CHECK +( +rcmp_P +("a", +FC +("b")) == -1); + +73 +CHECK +( +rcmp_P +("b", +FC +("a")) == 1); + +74 +CHECK +( +rcmp_P +("a", +FC +("a")) == 0); + +75 +CHECK +( +rcmp_P +("", +FC +("ab")) == -1); + +76 +CHECK +( +rcmp_P +("ab", +FC +("aa")) == 1); + +77 +CHECK +( +rcmp_P +("", +FC +("aa")) == 0); + +80 +TEST_CASE +("memcpy_P") { + +81  + gd +[4]; + +82 +CHECK +( +memy_P +( +d +, +FC +("ABC"), 4) == dst); + +83 +CHECK +( +d +[0] == 'A'); + +84 +CHECK +( +d +[1] == 'B'); + +85 +CHECK +( +d +[2] == 'C'); + +86 +CHECK +( +d +[3] == 0); + +89 +TEST_CASE +("BoundedReader") { + +90 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +92 +SECTION +("read") { + +93 + gBoundedRd + +ad +( +F +("\x01\xFF"), 2); + +94 +REQUIRE +( +ad +. +ad +() == 0x01); + +95 +REQUIRE +( +ad +. +ad +() == 0xFF); + +96 +REQUIRE +( +ad +. +ad +() == -1); + +97 +REQUIRE +( +ad +. +ad +() == -1); + +100 +SECTION +("readBytes()llt once") { + +101 + gBoundedRd + +ad +( +F +("ABCD"), 3); + +103  + gbufr +[8] = "abcd"; + +104 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 3); + +106 +REQUIRE +( +bufr +[0] == 'A'); + +107 +REQUIRE +( +bufr +[1] == 'B'); + +108 +REQUIRE +( +bufr +[2] == 'C'); + +109 +REQUIRE +( +bufr +[3] == 'd'); + +112 +SECTION +("readBytes() inwoarts") { + +113 + gBoundedRd + +ad +( +F +("ABCDEF"), 6); + +115  + gbufr +[8] = "abcdefg"; + +116 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 4); + +117 +REQUIRE +( +ad +. +adBys +( +bufr + + 4, 4) == 2); + +119 +REQUIRE +( +bufr +[0] == 'A'); + +120 +REQUIRE +( +bufr +[1] == 'B'); + +121 +REQUIRE +( +bufr +[2] == 'C'); + +122 +REQUIRE +( +bufr +[3] == 'D'); + +123 +REQUIRE +( +bufr +[4] == 'E'); + +124 +REQUIRE +( +bufr +[5] == 'F'); + +125 +REQUIRE +( +bufr +[6] == 'g'); + +129 +TEST_CASE +("Reader") { + +130 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +132 +SECTION +("read()") { + +133 + gRd + +ad +( +F +("\x01\xFF\x00\x12")); + +134 +REQUIRE +( +ad +. +ad +() == 0x01); + +135 +REQUIRE +( +ad +. +ad +() == 0xFF); + +136 +REQUIRE +( +ad +. +ad +() == 0); + +137 +REQUIRE +( +ad +. +ad +() == 0x12); + +140 +SECTION +("readBytes()llt once") { + +141 + gRd + +ad +( +F +("ABCD")); + +143  + gbufr +[8] = "abcd"; + +144 +REQUIRE +( +ad +. +adBys +( +bufr +, 3) == 3); + +146 +REQUIRE +( +bufr +[0] == 'A'); + +147 +REQUIRE +( +bufr +[1] == 'B'); + +148 +REQUIRE +( +bufr +[2] == 'C'); + +149 +REQUIRE +( +bufr +[3] == 'd'); + +152 +SECTION +("readBytes() inwoarts") { + +153 + gRd + +ad +( +F +("ABCDEF")); + +155  + gbufr +[8] = "abcdefg"; + +156 +REQUIRE +( +ad +. +adBys +( +bufr +, 4) == 4); + +157 +REQUIRE +( +ad +. +adBys +( +bufr + + 4, 2) == 2); + +159 +REQUIRE +( +bufr +[0] == 'A'); + +160 +REQUIRE +( +bufr +[1] == 'B'); + +161 +REQUIRE +( +bufr +[2] == 'C'); + +162 +REQUIRE +( +bufr +[3] == 'D'); + +163 +REQUIRE +( +bufr +[4] == 'E'); + +164 +REQUIRE +( +bufr +[5] == 'F'); + +165 +REQUIRE +( +bufr +[6] == 'g'); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_0.cpp + +1  + #ARDUINOJSON_USE_DOUBLE + 0 + + ) + +2  + ~ + +4  + ~ + +6 +TEST_CASE +("ARDUINOJSON_USE_DOUBLE == 0") { + +7 +DymicJsDocumt + +doc +(4096); + +8 +JsObje + + gro + = +doc +. +to +(); + +10 + gro +["pi"] = 3.14; + +11 + gro +["e"] = 2.72; + +13 + gd +:: +rg + +js +; + +14 +rlizeJs +( +doc +, +js +); + +16 +REQUIRE +( +js + == "{\"pi\":3.14,\"e\":2.72}"); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_1.cpp + +1  + #ARDUINOJSON_USE_DOUBLE + 1 + + ) + +2  + ~ + +4  + ~ + +6 +TEST_CASE +("ARDUINOJSON_USE_DOUBLE == 1") { + +7 +DymicJsDocumt + +doc +(4096); + +8 +JsObje + + gro + = +doc +. +to +(); + +10 + gro +["pi"] = 3.14; + +11 + gro +["e"] = 2.72; + +13 + gd +:: +rg + +js +; + +14 +rlizeJs +( +doc +, +js +); + +16 +REQUIRE +( +js + == "{\"pi\":3.14,\"e\":2.72}"); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_0.cpp + +1  + #ARDUINOJSON_USE_LONG_LONG + 0 + + ) + +2  + ~ + +4  + ~ + +6 + gme + < +size_t + + gsize_of_lg +> + +7 + gd +:: +rg + +g_exed_js +(); + +9 + gme + <> + +10 + gd +:: +rg + +g_exed_js +<4>() { + +14 + gme + <> + +15 + gd +:: +rg + +g_exed_js +<8>() { + +19 +TEST_CASE +("ARDUINOJSON_USE_LONG_LONG == 0") { + +20 +DymicJsDocumt + +doc +(4096); + +21 +JsObje + + gro + = +doc +. +to +(); + +23 + gro +["A"] = 123456789123456789; + +24 + gro +["B"] = 987654321987654321; + +26 + gd +:: +rg + +js +; + +27 +rlizeJs +( +doc +, +js +); + +29 +REQUIRE +( +js + = +g_exed_js +<()>()); + + @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_1.cpp + +1  + #ARDUINOJSON_USE_LONG_LONG + 1 + + ) + +2  + ~ + +4  + ~ + +6 +TEST_CASE +("ARDUINOJSON_USE_LONG_LONG == 1") { + +7 +DymicJsDocumt + +doc +(4096); + +8 +JsObje + + gro + = +doc +. +to +(); + +10 + gro +["A"] = 123456789123456789; + +11 + gro +["B"] = 987654321987654321; + +13 + gd +:: +rg + +js +; + +14 +rlizeJs +( +doc +, +js +); + +16 +REQUIRE +( +js + == "{\"A\":123456789123456789,\"B\":987654321987654321}"); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("deserialize MsgPackrray") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("fixarray") { + +12 +SECTION +("empty") { + +13 cڡ * + gput + = "\x90"; + +15 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +16 +JsAay + + gy + = +doc +. +as +(); + +18 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +19 +REQUIRE +( +y +. +size +() == 0); + +22 +SECTION +("two integers") { + +23 cڡ * + gput + = "\x92\x01\x02"; + +25 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +26 +JsAay + + gy + = +doc +. +as +(); + +28 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +29 +REQUIRE +( +y +. +size +() == 2); + +30 +REQUIRE +( +y +[0] == 1); + +31 +REQUIRE +( +y +[1] == 2); + +35 +SECTION +("array 16") { + +36 +SECTION +("empty") { + +37 cڡ * + gput + = "\xDC\x00\x00"; + +39 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +40 +JsAay + + gy + = +doc +. +as +(); + +42 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +43 +REQUIRE +( +y +. +size +() == 0); + +46 +SECTION +("two strings") { + +47 cڡ * + gput + = "\xDC\x00\x02\xA5hello\xA5world"; + +49 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +50 +JsAay + + gy + = +doc +. +as +(); + +52 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +53 +REQUIRE +( +y +. +size +() == 2); + +54 +REQUIRE +( +y +[0] == "hello"); + +55 +REQUIRE +( +y +[1] == "world"); + +59 +SECTION +("array 32") { + +60 +SECTION +("empty") { + +61 cڡ * + gput + = "\xDD\x00\x00\x00\x00"; + +63 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +64 +JsAay + + gy + = +doc +. +as +(); + +66 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +67 +REQUIRE +( +y +. +size +() == 0); + +70 +SECTION +("two floats") { + +71 cڡ * + gput + = + +74 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +75 +JsAay + + gy + = +doc +. +as +(); + +77 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +78 +REQUIRE +( +y +. +size +() == 2); + +79 +REQUIRE +( +y +[0] == 0.0f); + +80 +REQUIRE +( +y +[1] == 3.14f); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("deserialize MsgPack object") { + +9 +DymicJsDocumt + +doc +(4096); + +11 +SECTION +("fixmap") { + +12 +SECTION +("empty") { + +13 cڡ * + gput + = "\x80"; + +15 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +16 +JsObje + + gobj + = +doc +. +as +(); + +18 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +19 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +20 +REQUIRE +( +obj +. +size +() == 0); + +23 +SECTION +("two integers") { + +24 cڡ * + gput + = "\x82\xA3one\x01\xA3two\x02"; + +26 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +27 +JsObje + + gobj + = +doc +. +as +(); + +29 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +30 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +31 +REQUIRE +( +obj +. +size +() == 2); + +32 +REQUIRE +( +obj +["one"] == 1); + +33 +REQUIRE +( +obj +["two"] == 2); + +36 +SECTION +("key is str 8") { + +37 cڡ * + gput + = "\x82\xd9\x03one\x01\xd9\x03two\x02"; + +39 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +40 +JsObje + + gobj + = +doc +. +as +(); + +42 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +43 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +44 +REQUIRE +( +obj +. +size +() == 2); + +45 +REQUIRE +( +obj +["one"] == 1); + +46 +REQUIRE +( +obj +["two"] == 2); + +49 +SECTION +("key is str 16") { + +50 cڡ * + gput + = "\x82\xda\x00\x03one\x01\xda\x00\x03two\x02"; + +52 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +53 +JsObje + + gobj + = +doc +. +as +(); + +55 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +56 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +57 +REQUIRE +( +obj +. +size +() == 2); + +58 +REQUIRE +( +obj +["one"] == 1); + +59 +REQUIRE +( +obj +["two"] == 2); + +62 +SECTION +("key is str 32") { + +63 cڡ * + gput + = + +66 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +67 +JsObje + + gobj + = +doc +. +as +(); + +69 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +70 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +71 +REQUIRE +( +obj +. +size +() == 2); + +72 +REQUIRE +( +obj +["one"] == 1); + +73 +REQUIRE +( +obj +["two"] == 2); + +77 +SECTION +("map 16") { + +78 +SECTION +("empty") { + +79 cڡ * + gput + = "\xDE\x00\x00"; + +81 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +82 +JsObje + + gobj + = +doc +. +as +(); + +84 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +85 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +86 +REQUIRE +( +obj +. +size +() == 0); + +89 +SECTION +("two strings") { + +90 cڡ * + gput + = "\xDE\x00\x02\xA1H\xA5hello\xA1W\xA5world"; + +92 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +93 +JsObje + + gobj + = +doc +. +as +(); + +95 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +96 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +97 +REQUIRE +( +obj +. +size +() == 2); + +98 +REQUIRE +( +obj +["H"] == "hello"); + +99 +REQUIRE +( +obj +["W"] == "world"); + +103 +SECTION +("map 32") { + +104 +SECTION +("empty") { + +105 cڡ * + gput + = "\xDF\x00\x00\x00\x00"; + +107 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +108 +JsObje + + gobj + = +doc +. +as +(); + +110 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +111 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +112 +REQUIRE +( +obj +. +size +() == 0); + +115 +SECTION +("two floats") { + +116 cڡ * + gput + = + +120 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +121 +JsObje + + gobj + = +doc +. +as +(); + +123 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +124 +REQUIRE +( +doc +. +is +< +JsObje +>()); + +125 +REQUIRE +( +obj +. +size +() == 2); + +126 +REQUIRE +( +obj +["zero"] == 0.0f); + +127 +REQUIRE +( +obj +["pi"] == 3.14f); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeStaticVariant.cpp + +5  + ~ + +6  + ~ + +8 + gme + < +size_t + + gCacy +> + +9  + $check +(cڡ * +put +, +DerliziE + +exed +) { + +10 +SticJsDocumt +< +Cacy +> +v +; + +12 +DerliziE + +r + = + `derlizeMsgPack +( +v +, +put +); + +14 + `CAPTURE +( +put +); + +15 + `REQUIRE +( +r + = +exed +); + +16 + } +} + +18 + gme + < +size_t + + gSize +> + +19  + $checkSg +(cڡ * +put +, +DerliziE + +exed +) { + +20 +check +< + `JSON_STRING_SIZE +( +Size +)>( +put +, +exed +); + +21 + } +} + +23 +TEST_CASE +("deserializeMsgPack(StaticJsonDocument&)") { + +24 +SECTION +("single valueslways fit") { + +25 + gcheck +<0>("\xc0", + gDerliziE +:: +Ok +); + +26 + gcheck +<0>("\xc2", + gDerliziE +:: +Ok +); + +27 + gcheck +<0>("\xc3", + gDerliziE +:: +Ok +); + +28 + gcheck +<0>("\xcc\x00", + gDerliziE +:: +Ok +); + +29 + gcheck +<0>("\xcd\x30\x39", + gDerliziE +:: +Ok +); + +30 + gcheck +<0>("\xCE\x12\x34\x56\x78", + gDerliziE +:: +Ok +); + +33 +SECTION +("fixstr") { + +34 + gcheckSg +<8>("\xA0", + gDerliziE +:: +Ok +); + +35 + gcheckSg +<8>("\xA7ZZZZZZZ", + gDerliziE +:: +Ok +); + +36 + gcheckSg +<8>("\xA8ZZZZZZZZ", + gDerliziE +:: +NoMemy +); + +37 + gcheckSg +<16>("\xAFZZZZZZZZZZZZZZZ", + gDerliziE +:: +Ok +); + +38 + gcheckSg +<16>("\xB0ZZZZZZZZZZZZZZZZ", + gDerliziE +:: +NoMemy +); + +41 +SECTION +("str 8") { + +42 + gcheckSg +<8>("\xD9\x00", + gDerliziE +:: +Ok +); + +43 + gcheckSg +<8>("\xD9\x07ZZZZZZZ", + gDerliziE +:: +Ok +); + +44 + gcheckSg +<8>("\xD9\x08ZZZZZZZZ", + gDerliziE +:: +NoMemy +); + +45 + gcheckSg +<16>("\xD9\x0FZZZZZZZZZZZZZZZ", + gDerliziE +:: +Ok +); + +46 + gcheckSg +<16>("\xD9\x10ZZZZZZZZZZZZZZZZ", + gDerliziE +:: +NoMemy +); + +49 +SECTION +("str 16") { + +50 + gcheckSg +<8>("\xDA\x00\x00", + gDerliziE +:: +Ok +); + +51 + gcheckSg +<8>("\xDA\x00\x07ZZZZZZZ", + gDerliziE +:: +Ok +); + +52 + gcheckSg +<8>("\xDA\x00\x08ZZZZZZZZ", + gDerliziE +:: +NoMemy +); + +53 + gcheckSg +<16>("\xDA\x00\x0FZZZZZZZZZZZZZZZ", + gDerliziE +:: +Ok +); + +54 + gcheckSg +<16>("\xDA\x00\x10ZZZZZZZZZZZZZZZZ", + +55 + gDerliziE +:: +NoMemy +); + +58 +SECTION +("str 32") { + +59 + gcheckSg +<8>("\xDB\x00\x00\x00\x00", + gDerliziE +:: +Ok +); + +60 + gcheckSg +<8>("\xDB\x00\x00\x00\x07ZZZZZZZ", + gDerliziE +:: +Ok +); + +61 + gcheckSg +<8>("\xDB\x00\x00\x00\x08ZZZZZZZZ", + +62 + gDerliziE +:: +NoMemy +); + +63 + gcheckSg +<16>("\xDB\x00\x00\x00\x0FZZZZZZZZZZZZZZZ", + +64 + gDerliziE +:: +Ok +); + +65 + gcheckSg +<16>("\xDB\x00\x00\x00\x10ZZZZZZZZZZZZZZZZ", + +66 + gDerliziE +:: +NoMemy +); + +69 +SECTION +("fixarray") { + +70 + gcheck +< +JSON_ARRAY_SIZE +(0)>("\x90", + gDerliziE +:: +Ok +); + +71 + gcheck +< +JSON_ARRAY_SIZE +(0)>("\x91\x01", + +72 + gDerliziE +:: +NoMemy +); + +73 + gcheck +< +JSON_ARRAY_SIZE +(1)>("\x91\x01", + gDerliziE +:: +Ok +); + +74 + gcheck +< +JSON_ARRAY_SIZE +(1)>("\x92\x01\x02", + +75 + gDerliziE +:: +NoMemy +); + +78 +SECTION +("array 16") { + +79 + gcheck +< +JSON_ARRAY_SIZE +(0)>("\xDC\x00\x00", + gDerliziE +:: +Ok +); + +80 + gcheck +< +JSON_ARRAY_SIZE +(0)>("\xDC\x00\x01\x01", + +81 + gDerliziE +:: +NoMemy +); + +82 + gcheck +< +JSON_ARRAY_SIZE +(1)>("\xDC\x00\x01\x01", + gDerliziE +:: +Ok +); + +83 + gcheck +< +JSON_ARRAY_SIZE +(1)>("\xDC\x00\x02\x01\x02", + +84 + gDerliziE +:: +NoMemy +); + +87 +SECTION +("array 32") { + +88 + gcheck +< +JSON_ARRAY_SIZE +(0)>("\xDD\x00\x00\x00\x00", + gDerliziE +:: +Ok +); + +89 + gcheck +< +JSON_ARRAY_SIZE +(0)>("\xDD\x00\x00\x00\x01\x01", + +90 + gDerliziE +:: +NoMemy +); + +91 + gcheck +< +JSON_ARRAY_SIZE +(1)>("\xDD\x00\x00\x00\x01\x01", + +92 + gDerliziE +:: +Ok +); + +93 + gcheck +< +JSON_ARRAY_SIZE +(1)>("\xDD\x00\x00\x00\x02\x01\x02", + +94 + gDerliziE +:: +NoMemy +); + +97 +SECTION +("fixmap") { + +98 +SECTION +("{}") { + +99 + gcheck +< +JSON_OBJECT_SIZE +(0)>("\x80", + gDerliziE +:: +Ok +); + +101 +SECTION +("{H:1}") { + +102 + gcheck +< +JSON_OBJECT_SIZE +(0)>("\x81\xA1H\x01", + +103 + gDerliziE +:: +NoMemy +); + +104 + gcheck +< +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(2)>( + +105 "\x81\xA1H\x01", + gDerliziE +:: +Ok +); + +107 +SECTION +("{H:1,W:2}") { + +108 + gcheck +< +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(2)>( + +109 "\x82\xA1H\x01\xA1W\x02", + gDerliziE +:: +NoMemy +); + +110 + gcheck +< +JSON_OBJECT_SIZE +(2+ 2 * +JSON_STRING_SIZE +(2)>( + +111 "\x82\xA1H\x01\xA1W\x02", + gDerliziE +:: +Ok +); + +115 +SECTION +("map 16") { + +116 +SECTION +("{}") { + +117 + gcheck +< +JSON_OBJECT_SIZE +(0)>("\xDE\x00\x00", + gDerliziE +:: +Ok +); + +119 +SECTION +("{H:1}") { + +120 + gcheck +< +JSON_OBJECT_SIZE +(0)>("\xDE\x00\x01\xA1H\x01", + +121 + gDerliziE +:: +NoMemy +); + +122 + gcheck +< +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(2)>( + +123 "\xDE\x00\x01\xA1H\x01", + gDerliziE +:: +Ok +); + +125 +SECTION +("{H:1,W:2}") { + +126 + gcheck +< +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(2)>( + +127 "\xDE\x00\x02\xA1H\x01\xA1W\x02", + gDerliziE +:: +NoMemy +); + +128 + gcheck +< +JSON_OBJECT_SIZE +(2) + 2 * JSON_OBJECT_SIZE(1)>( + +129 "\xDE\x00\x02\xA1H\x01\xA1W\x02", + gDerliziE +:: +Ok +); + +133 +SECTION +("map 32") { + +134 +SECTION +("{}") { + +135 + gcheck +< +JSON_OBJECT_SIZE +(0)>("\xDF\x00\x00\x00\x00", + +136 + gDerliziE +:: +Ok +); + +138 +SECTION +("{H:1}") { + +139 + gcheck +< +JSON_OBJECT_SIZE +(0)>("\xDF\x00\x00\x00\x01\xA1H\x01", + +140 + gDerliziE +:: +NoMemy +); + +141 + gcheck +< +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(2)>( + +142 "\xDF\x00\x00\x00\x01\xA1H\x01", + gDerliziE +:: +Ok +); + +144 +SECTION +("{H:1,W:2}") { + +145 + gcheck +< +JSON_OBJECT_SIZE +(1+ +JSON_STRING_SIZE +(2)>( + +147 + gDerliziE +:: +NoMemy +); + +148 + gcheck +< +JSON_OBJECT_SIZE +(2) + 2 * JSON_OBJECT_SIZE(1)>( + +149 "\xDF\x00\x00\x00\x02\xA1H\x01\xA1W\x02", + gDerliziE +:: +Ok +); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp + +5  + ~ + +6  + ~ + +8 + gme + < +tyme + + gT +,ym + gU +> + +9  + $check +(cڡ * +put +, +U + +exed +) { + +10 +DymicJsDocumt + + `doc +(4096); + +12 +DerliziE + +r + = + `derlizeMsgPack +( +doc +, +put +); + +14 + `REQUIRE +( +r + = +DerliziE +:: +Ok +); + +15 + `REQUIRE +( +doc +. +is +< +T +>()); + +16 + `REQUIRE +( +doc +. +as +< +T +>(= +exed +); + +17 + } +} + +19 #i +ARDUINOJSON_USE_LONG_LONG + == 0 + +20  + $checkNSu܋d +(cڡ * +put +) { + +21 +DymicJsDocumt + + `doc +(4096); + +22 +DerliziE + +r + = + `derlizeMsgPack +( +doc +, +put +); + +23 + `REQUIRE +( +r + = +DerliziE +:: +NSu܋d +); + +24 + } +} + +27  + $checkIsNu +(cڡ * +put +) { + +28 +DymicJsDocumt + + `doc +(4096); + +30 +DerliziE + +r + = + `derlizeMsgPack +( +doc +, +put +); + +32 + `REQUIRE +( +r + = +DerliziE +:: +Ok +); + +33 + `REQUIRE +( +doc +. +as +< +JsV +>(). + `isNu +()); + +34 + } +} + +36 +TEST_CASE +("deserialize MsgPack value") { + +37 +SECTION +("nil") { + +38 +checkIsNu +("\xc0"); + +41 +SECTION +("bool") { + +42 + gcheck +< + gbo +>("\xc2", + gl +); + +43 + gcheck +< + gbo +>("\xc3", + gue +); + +46 +SECTION +("positive fixint") { + +47 + gcheck +<>("\x00", 0); + +48 + gcheck +<>("\x7F", 127); + +51 +SECTION +("negative fixint") { + +52 + gcheck +<>("\xe0", -32); + +53 + gcheck +<>("\xff", -1); + +56 +SECTION +("uint 8") { + +57 + gcheck +<>("\xcc\x00", 0); + +58 + gcheck +<>("\xcc\xff", 255); + +61 +SECTION +("uint 16") { + +62 + gcheck +<>("\xcd\x00\x00", 0); + +63 + gcheck +<>("\xcd\xFF\xFF", 65535); + +64 + gcheck +<>("\xcd\x30\x39", 12345); + +67 +SECTION +("uint 32") { + +68 + gcheck +< + gut32_t +>("\xCE\x00\x00\x00\x00", 0x00000000U); + +69 + gcheck +< + gut32_t +>("\xCE\xFF\xFF\xFF\xFF", 0xFFFFFFFFU); + +70 + gcheck +< + gut32_t +>("\xCE\x12\x34\x56\x78", 0x12345678U); + +73 +SECTION +("uint 64") { + +74 #i +ARDUINOJSON_USE_LONG_LONG + + +75 + gcheck +< + gut64_t +>("\xCF\x00\x00\x00\x00\x00\x00\x00\x00", 0U); + +76 + gcheck +< + gut64_t +>("\xCF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", + +78 + gcheck +< + gut64_t +>("\xCF\x12\x34\x56\x78\x9A\xBC\xDE\xF0", + +81 +checkNSu܋d +("\xCF\x00\x00\x00\x00\x00\x00\x00\x00"); + +82 +checkNSu܋d +("\xCF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); + +83 +checkNSu܋d +("\xCF\x12\x34\x56\x78\x9A\xBC\xDE\xF0"); + +87 +SECTION +("int 8") { + +88 + gcheck +<>("\xd0\x00", 0); + +89 + gcheck +<>("\xd0\xff", -1); + +92 +SECTION +("int 16") { + +93 + gcheck +<>("\xD1\x00\x00", 0); + +94 + gcheck +<>("\xD1\xFF\xFF", -1); + +95 + gcheck +<>("\xD1\xCF\xC7", -12345); + +98 +SECTION +("int 32") { + +99 + gcheck +<>("\xD2\x00\x00\x00\x00", 0); + +100 + gcheck +<>("\xD2\xFF\xFF\xFF\xFF", -1); + +101 + gcheck +<>("\xD2\xB6\x69\xFD\x2E", -1234567890); + +104 +SECTION +("int 64") { + +105 #i +ARDUINOJSON_USE_LONG_LONG + + +106 + gcheck +< + gt64_t +>("\xD3\x00\x00\x00\x00\x00\x00\x00\x00", +t64_t +(0U)); + +107 + gcheck +< + gt64_t +>("\xD3\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", + +108 +t64_t +(0xFFFFFFFFFFFFFFFFU)); + +109 + gcheck +< + gt64_t +>("\xD3\x12\x34\x56\x78\x9A\xBC\xDE\xF0", + +110 +t64_t +(0x123456789ABCDEF0)); + +112 +checkNSu܋d +("\xD3\x00\x00\x00\x00\x00\x00\x00\x00"); + +113 +checkNSu܋d +("\xD3\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); + +114 +checkNSu܋d +("\xD3\x12\x34\x56\x78\x9A\xBC\xDE\xF0"); + +118 +SECTION +("float 32") { + +119 + gcheck +<>("\xCA\x00\x00\x00\x00", 0.0f); + +120 + gcheck +<>("\xCA\x40\x48\xF5\xC3", 3.14f); + +123 +SECTION +("float 64") { + +124 + gcheck +<>("\xCB\x00\x00\x00\x00\x00\x00\x00\x00", 0.0); + +125 + gcheck +<>("\xCB\x40\x09\x21\xCA\xC0\x83\x12\x6F", 3.1415); + +128 +SECTION +("fixstr") { + +129 + gcheck +("\xA0", + gd +:: +rg +("")); + +130 + gcheck +("\xABhlwld", + gd +:: +rg +("hello world")); + +131 + gcheck +("\xBFhello world hello world hello !", + +132 + gd +:: +rg +("hello world hello world hello !")); + +135 +SECTION +("str 8") { + +136 + gcheck +("\xd9\x05hlo", + gd +:: +rg +("hello")); + +139 +SECTION +("str 16") { + +140 + gcheck +("\xda\x00\x05hlo", + gd +:: +rg +("hello")); + +143 +SECTION +("str 32") { + +144 + gcheck +("\xdb\x00\x00\x00\x05hlo", + gd +:: +rg +("hello")); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 + gme + < +tyme + + gT +> + +11  + $check +(cڡ * +put +, +T + +exed +) { + +12 +T + +au +; + +13 +ut8_t +* +f + = +t_ +(& +au +); + +14 cڡ +ut8_t +* +d + = +t_ +( +put +); + +15 + `doubToFlt +( +d +, +f +); + +16 + `fixEndss +( +au +); + +17 + `CHECK +( +au + = +exed +); + +18 + } +} + +20 +TEST_CASE +("doubleToFloat()") { + +21 +check +("\x40\x09\x21\xCA\xC0\x83\x12\x6F", 3.1415f); + +22 +check +("\x00\x00\x00\x00\x00\x00\x00\x00", 0.0f); + +23 +check +("\x80\x00\x00\x00\x00\x00\x00\x00", -0.0f); + +24 +check +("\xC0\x5E\xDC\xCC\xCC\xCC\xCC\xCD", -123.45f); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/incompleteInput.cpp + +5  + ~ + +6  + ~ + +8 +DerliziE + + $derlize +(cڡ * +put +, +size_t + +n +) { + +9 +DymicJsDocumt + + `doc +(4096); + +11  + `derlizeMsgPack +( +doc +, +put +, +n +); + +12 + } +} + +14  + $checkASizes +(cڡ * +put +, +size_t + +n +) { + +15 + `REQUIRE +( + `derlize +( +put +, +n += +DerliziE +:: +Ok +); + +17 -- +n +) { + +18 + `REQUIRE +( + `derlize +( +put +, +n += +DerliziE +:: +IncomeIut +); + +20 + } +} + +22 +TEST_CASE +("deserializeMsgPack()eturns IncompleteInput") { + +23 +SECTION +("empty input") { + +24 +checkASizes +("\x00", 1); + +27 +SECTION +("fixarray") { + +28 +checkASizes +("\x91\x01", 2); + +31 +SECTION +("array 16") { + +32 +checkASizes +("\xDC\x00\x01\x01", 4); + +35 +SECTION +("array 32") { + +36 +checkASizes +("\xDD\x00\x00\x00\x01\x01", 6); + +39 +SECTION +("fixmap") { + +40 +checkASizes +("\x81\xA3one\x01", 6); + +43 +SECTION +("map 16") { + +44 +checkASizes +("\xDE\x00\x01\xA3one\x01", 8); + +47 +SECTION +("map 32") { + +48 +checkASizes +("\xDF\x00\x00\x00\x01\xA3one\x01", 10); + +49 +checkASizes +("\xDF\x00\x00\x00\x01\xd9\x03one\x01", 11); + +52 +SECTION +("uint 8") { + +53 +checkASizes +("\xcc\x01", 2); + +56 +SECTION +("uint 16") { + +57 +checkASizes +("\xcd\x00\x01", 3); + +60 +SECTION +("uint 32") { + +61 +checkASizes +("\xCE\x00\x00\x00\x01", 5); + +64 #i +ARDUINOJSON_USE_LONG_LONG + + +65 +SECTION +("uint 64") { + +66 +checkASizes +("\xCF\x00\x00\x00\x00\x00\x00\x00\x00", 9); + +70 +SECTION +("int 8") { + +71 +checkASizes +("\xD0\x01", 2); + +74 +SECTION +("int 16") { + +75 +checkASizes +("\xD1\x00\x01", 3); + +78 +SECTION +("int 32") { + +79 +checkASizes +("\xD2\x00\x00\x00\x01", 5); + +82 #i +ARDUINOJSON_USE_LONG_LONG + + +83 +SECTION +("int 64") { + +84 +checkASizes +("\xD3\x00\x00\x00\x00\x00\x00\x00\x00", 9); + +88 +SECTION +("float 32") { + +89 +checkASizes +("\xCA\x40\x48\xF5\xC3", 5); + +92 +SECTION +("float 64") { + +93 +checkASizes +("\xCB\x40\x09\x21\xCA\xC0\x83\x12\x6F", 9); + +96 +SECTION +("fixstr") { + +97 +checkASizes +("\xABhello world", 12); + +100 +SECTION +("str 8") { + +101 +checkASizes +("\xd9\x05hello", 7); + +104 +SECTION +("str 16") { + +105 +checkASizes +("\xda\x00\x05hello", 8); + +108 +SECTION +("str 32") { + +109 +checkASizes +("\xdb\x00\x00\x00\x05hello", 10); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp + +5  + ~ + +6  + ~ + +8  + ~"CuomRd.h +" + +10 +TEST_CASE +("deserializeMsgPack(const std::string&)") { + +11 +DymicJsDocumt + +doc +(4096); + +13 +SECTION +("shouldccept const string") { + +14 cڡ + gd +:: +rg + +put +("\x92\x01\x02"); + +16 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +18 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +21 +SECTION +("shouldcceptemporary string") { + +22 +DerliziE + + gr + = + +23 +derlizeMsgPack +( +doc +, +d +:: +rg +("\x92\x01\x02")); + +25 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +28 +SECTION +("should duplicate content") { + +29 + gd +:: +rg + +put +("\x91\xA5hello"); + +31 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +32 + gput +[2] = 'X'; + +34 +JsAay + + gy + = +doc +. +as +(); + +35 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +36 +REQUIRE +( +d +:: +rg +("hlo"= +y +[0]); + +39 +SECTION +("shouldccept zero in input") { + +40 +DerliziE + + gr + = + +41 +derlizeMsgPack +( +doc +, +d +:: +rg +("\x92\x00\x02", 3)); + +43 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +44 +JsAay + + gr + = +doc +. +as +(); + +45 +REQUIRE +( +r +[0] == 0); + +46 +REQUIRE +( +r +[1] == 2); + +50 +TEST_CASE +("deserializeMsgPack(std::istream&)") { + +51 +DymicJsDocumt + +doc +(4096); + +53 +SECTION +("shouldccept zero in input") { + +54 + gd +:: +irgam + +put +( +d +:: +rg +("\x92\x00\x02", 3)); + +56 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +58 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +59 +JsAay + + gr + = +doc +. +as +(); + +60 +REQUIRE +( +r +[0] == 0); + +61 +REQUIRE +( +r +[1] == 2); + +64 +SECTION +("should detect incomplete input") { + +65 + gd +:: +irgam + +put +("\x92\x00\x02"); + +67 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +put +); + +69 +REQUIRE +( +r + = +DerliziE +:: +IncomeIut +); + +73 #ifde +HAS_VARIABLE_LENGTH_ARRAY + + +74 +TEST_CASE +("deserializeMsgPack(VLA)") { + +75  + gi + = 16; + +76  + gv +[ +i +]; + +77 +memy +( +v +, "\xDE\x00\x01\xA5Hello\xA5world", 15); + +79 + gSticJsDocumt +< +JSON_OBJECT_SIZE +(1)> + gdoc +; + +80 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +v +); + +82 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +86 +TEST_CASE +("deserializeMsgPack(CustomReader)") { + +87 +DymicJsDocumt + +doc +(4096); + +88 +CuomRd + +ad +("\x92\xA5Hello\xA5world"); + +89 +DerliziE + + gr + = +derlizeMsgPack +( +doc +, +ad +); + +91 +REQUIRE +( +r + = +DerliziE +:: +Ok +); + +92 +REQUIRE +( +doc +. +size +() == 2); + +93 +REQUIRE +( +doc +[0] == "Hello"); + +94 +REQUIRE +( +doc +[1] == "world"); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp + +5  + ~ + +6  + ~ + +8  + #SHOULD_WORK +( +exessi + + `REQUIRE +( +DerliziE +:: +Ok + =exessi); + + ) + +9  + #SHOULD_FAIL +( +exessi +) \ + +10 + `REQUIRE +( +DerliziE +:: +TooDp + = +exessi +); + + ) + +12 +TEST_CASE +("JsonDeserializeresting") { + +13 +DymicJsDocumt + +doc +(4096); + +15 +SECTION +("Input = const char*") { + +16 +SECTION +("limit = 0") { + +17 + gDerliziOi +:: +NegLim + +ág +(0); + +18 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, "\xA1H", +ág +)); + +19 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x90", +ág +)); + +20 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x80", +ág +)); + +23 +SECTION +("limit = 1") { + +24 + gDerliziOi +:: +NegLim + +ág +(1); + +25 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, "\x90", +ág +)); + +26 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, "\x80", +ág +)); + +27 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x81\xA1H\x80", +ág +)); + +28 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x91\x90", +ág +)); + +32 +SECTION +("char*nd size_t") { + +33 +SECTION +("limit = 0") { + +34 + gDerliziOi +:: +NegLim + +ág +(0); + +35 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, "\xA1H", 2, +ág +)); + +36 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x90", 1, +ág +)); + +37 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x80", 1, +ág +)); + +40 +SECTION +("limit = 1") { + +41 + gDerliziOi +:: +NegLim + +ág +(1); + +42 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, "\x90", 1, +ág +)); + +43 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, "\x80", 1, +ág +)); + +44 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x81\xA1H\x80", 4, +ág +)); + +45 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, "\x91\x90", 2, +ág +)); + +49 +SECTION +("Input = std::string") { + +50 +usg + + gd +:: +rg +; + +52 +SECTION +("limit = 0") { + +53 + gDerliziOi +:: +NegLim + +ág +(0); + +54 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, +rg +("\xA1H"), +ág +)); + +55 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, +rg +("\x90"), +ág +)); + +56 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, +rg +("\x80"), +ág +)); + +59 +SECTION +("limit = 1") { + +60 + gDerliziOi +:: +NegLim + +ág +(1); + +61 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, +rg +("\x90"), +ág +)); + +62 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, +rg +("\x80"), +ág +)); + +63 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, +rg +("\x81\xA1H\x80"), +ág +)); + +64 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, +rg +("\x91\x90"), +ág +)); + +68 +SECTION +("Input = std::istream") { + +69 +SECTION +("limit = 0") { + +70 + gDerliziOi +:: +NegLim + +ág +(0); + +71 + gd +:: +irgam + +good +("\xA1H"); + +72 + gd +:: +irgam + +bad +("\x90"); + +73 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, +good +, +ág +)); + +74 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, +bad +, +ág +)); + +77 +SECTION +("limit = 1") { + +78 + gDerliziOi +:: +NegLim + +ág +(1); + +79 + gd +:: +irgam + +good +("\x90"); + +80 + gd +:: +irgam + +bad +("\x91\x90"); + +81 +SHOULD_WORK +( +derlizeMsgPack +( +doc +, +good +, +ág +)); + +82 +SHOULD_FAIL +( +derlizeMsgPack +( +doc +, +bad +, +ág +)); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/notSupported.cpp + +5  + ~ + +6  + ~ + +8  + $checkNSu܋d +(cڡ * +put +) { + +9 +DymicJsDocumt + + `doc +(4096); + +11 +DerliziE + +r + = + `derlizeMsgPack +( +doc +, +put +); + +13 + `REQUIRE +( +r + = +DerliziE +:: +NSu܋d +); + +14 + } +} + +16 +TEST_CASE +("deserializeMsgPack()eturn NotSupported") { + +17 +SECTION +("bin 8") { + +18 +checkNSu܋d +("\xc4"); + +21 +SECTION +("bin 16") { + +22 +checkNSu܋d +("\xc5"); + +25 +SECTION +("bin 32") { + +26 +checkNSu܋d +("\xc6"); + +29 +SECTION +("ext 8") { + +30 +checkNSu܋d +("\xc7"); + +33 +SECTION +("ext 16") { + +34 +checkNSu܋d +("\xc8"); + +37 +SECTION +("ext 32") { + +38 +checkNSu܋d +("\xc9"); + +41 +SECTION +("fixext 1") { + +42 +checkNSu܋d +("\xd4"); + +45 +SECTION +("fixext 2") { + +46 +checkNSu܋d +("\xd5"); + +49 +SECTION +("fixext 4") { + +50 +checkNSu܋d +("\xd6"); + +53 +SECTION +("fixext 8") { + +54 +checkNSu܋d +("\xd7"); + +57 +SECTION +("fixext 16") { + +58 +checkNSu܋d +("\xd8"); + +61 +SECTION +("unsupported inrray") { + +62 +checkNSu܋d +("\x91\xc4"); + +65 +SECTION +("unsupported in map") { + +66 +checkNSu܋d +("\x81\xc4\x00\xA1H"); + +67 +checkNSu܋d +("\x81\xA1H\xc4\x00"); + +70 +SECTION +("integers key") { + +71 +checkNSu܋d +("\x81\x01\xA1H"); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("serialize MsgPacko various destinationypes") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsObje + + gobje + = +doc +. +to +(); + +11 + gobje +["hello"] = "world"; + +12 cڡ * + gexed_su + = "\x81\xA5hello\xA5world"; + +13 cڡ +size_t + + gexed_ngth + = 13; + +15 +SECTION +("std::string") { + +16 + gd +:: +rg + +su +; + +17 +size_t + + gn + = +rlizeMsgPack +( +obje +, +su +); + +19 +REQUIRE +( +exed_su + = +su +); + +20 +REQUIRE +( +exed_ngth + = +n +); + +32 +SECTION +("char[]") { + +33  + gsu +[64]; + +34 +size_t + + gn + = +rlizeMsgPack +( +obje +, +su +); + +36 +REQUIRE +( +d +:: +rg +( +exed_su += +su +); + +37 +REQUIRE +( +exed_ngth + = +n +); + +40 +SECTION +("char*") { + +41  + gsu +[64]; + +42 +size_t + + gn + = +rlizeMsgPack +( +obje +, +su +, 64); + +44 +REQUIRE +( +d +:: +rg +( +exed_su += +su +); + +45 +REQUIRE +( +exed_ngth + = +n +); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp + +5  + ~ + +6  + ~ + +8 +TEST_CASE +("measureMsgPack()") { + +9 +DymicJsDocumt + +doc +(4096); + +10 +JsObje + + gobje + = +doc +. +to +(); + +11 + gobje +["hello"] = "world"; + +13 +REQUIRE +( +msuMsgPack +( +doc +) == 13); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/misc.cpp + +1  + ~ + +2  + ~ + +3  + ~ + +5 + gme + < +tyme + + gT +> + +6  + $check +( +T + +vue +, cڡ +d +:: +rg + & +exed +) { + +7 +DymicJsDocumt + + `doc +(4096); + +8 +doc +. +to +< +JsV +>(). + `t +( +vue +); + +9  +bufr +[256] = ""; + +10 +size_t + +tuVue + = + `rlizeMsgPack +( +doc +, +bufr +, (buffer)); + +11 + `REQUIRE +( +exed + = +bufr +); + +12 + `REQUIRE +( +exed +. + `size +(= +tuVue +); + +13 + } +} + +15 +TEST_CASE +("serializeMsgPack(MemberProxy)") { + +16 +DymicJsDocumt + +doc +(4096); + +17 +derlizeJs +( +doc +, "{\"hello\":42}"); + +18 +JsObje + + gobj + = +doc +. +as +(); + +19 + gd +:: +rg + +su +; + +21 +rlizeMsgPack +( +obj +["hlo"], +su +); + +23 +REQUIRE +( +su + == "*"); + +26 +TEST_CASE +("serializeMsgPack(ElementProxy)") { + +27 +DymicJsDocumt + +doc +(4096); + +28 +derlizeJs +( +doc +, "[42]"); + +29 +JsAay + + gr + = +doc +. +as +(); + +30 + gd +:: +rg + +su +; + +32 +rlizeMsgPack +( +r +[0], +su +); + +34 +REQUIRE +( +su + == "*"); + +37 +TEST_CASE +("serializeMsgPack(JsonVariantSubscript)") { + +38 +DymicJsDocumt + +doc +(4096); + +39 +derlizeJs +( +doc +, "[42]"); + +40 +JsV + + gv + = +doc +. +as +(); + +41 + gd +:: +rg + +su +; + +43 +rlizeMsgPack +( +v +[0], +su +); + +45 +REQUIRE +( +su + == "*"); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp + +5  + ~ + +6  + ~ + +8  + $check +(cڡ +JsAay + +y +, cڡ * +exed_da +, + +9 +size_t + +exed_n +) { + +10 +d +:: +rg + + `exed +( +exed_da +,xed_d+ +exed_n +); + +11 +d +:: +rg + +au +; + +12 +size_t + +n + = + `rlizeMsgPack +( +y +, +au +); + +13 + `CAPTURE +( +y +); + +14 + `REQUIRE +( +n + = +exed_n +); + +15 + `REQUIRE +( +au + = +exed +); + +16 + } +} + +18 + gme + < +size_t + + gN +> + +19  +check +(cڡ +JsAay + +y +, cڡ (& +exed_da +)[ +N +]) { + +20 cڡ +size_t + + gexed_n + = +N + - 1; + +21 +check +( +y +, +exed_da +, +exed_n +); + +24  + $check +(cڡ +JsAay + +y +, cڡ +d +:: +rg +& +exed +) { + +25 + `check +( +y +, +exed +. + `da +(),xed. + `ngth +()); + +26 + } +} + +28 +TEST_CASE +("serialize MsgPackrray") { + +29 +DymicJsDocumt + +doc +( +JSON_ARRAY_SIZE +(65536)); + +30 +JsAay + + gy + = +doc +. +to +(); + +32 +SECTION +("empty") { + +33 +check +( +y +, "\x90"); + +36 +SECTION +("fixarray") { + +37 + gy +. +add +("hello"); + +38 + gy +. +add +("world"); + +40 +check +( +y +, "\x92\xA5hello\xA5world"); + +43 +SECTION +("array 16") { + +44  + gi + = 0; i < 16; i++ + gy +. +add +( +i +); + +46 +check +( +y +, + +51 +SECTION +("array 32") { + +52 cڡ * + gn + = 0; + +53  + gi + = 0; i < 65536; i++ + gy +. +add +( +n +); + +55 +check +( +y +, + +56 +d +:: +rg +("\xDD\x00\x01\x00\x00", 5) + std::string(65536, '\xc0')); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9  + $check +(cڡ +JsObje + +obje +, cڡ * +exed_da +, + +10 +size_t + +exed_n +) { + +11 +d +:: +rg + + `exed +( +exed_da +,xed_d+ +exed_n +); + +12 +d +:: +rg + +au +; + +13 +size_t + +n + = + `rlizeMsgPack +( +obje +, +au +); + +14 + `CAPTURE +( +obje +); + +15 + `REQUIRE +( +n + = +exed_n +); + +16 + `REQUIRE +( +au + = +exed +); + +17 + } +} + +19 + gme + < +size_t + + gN +> + +20  +check +(cڡ +JsObje + +obje +, cڡ (& +exed_da +)[ +N +]) { + +21 cڡ +size_t + + gexed_n + = +N + - 1; + +22 +check +( +obje +, +exed_da +, +exed_n +); + +25 +TEST_CASE +("serialize MsgPack object") { + +26 +DymicJsDocumt + +doc +(4096); + +27 +JsObje + + gobje + = +doc +. +to +(); + +29 +SECTION +("empty") { + +30 +check +( +obje +, "\x80"); + +33 +SECTION +("fixmap") { + +34 + gobje +["hello"] = "world"; + +36 +check +( +obje +, "\x81\xA5hello\xA5world"); + +39 +SECTION +("map 16") { + +40  + gi + = 0; i < 16; ++i) { + +41  + gkey +[16]; + +42 +rtf +( +key +, "i%X", +i +); + +43 + gobje +[ +key +] = +i +; + +46 +check +( +obje +, + +52 +SECTION +("serialized(const char*)") { + +53 + gobje +["hlo"] = +rlized +("\xDB\x00\x01\x00\x00", 5); + +54 +check +( +obje +, "\x81\xA5hello\xDB\x00\x01\x00\x00"); + +57 +SECTION +("serialized(std::string)") { + +58 + gobje +["hlo"] = +rlized +( +d +:: +rg +("\xDB\x00\x01\x00\x00", 5)); + +59 +check +( +obje +, "\x81\xA5hello\xDB\x00\x01\x00\x00"); + + @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp + +5  + ~ + +6  + ~ + +8 + gme + < +tyme + + gT +> + +9  + $checkV +( +T + +vue +, cڡ * +exed_da +, + +10 +size_t + +exed_n +) { + +11 +DymicJsDocumt + + `doc +(4096); + +12 +JsV + +v + = +doc +. +to +(); + +13 +v +. + `t +( +vue +); + +14 +d +:: +rg + + `exed +( +exed_da +,xed_d+ +exed_n +); + +15 +d +:: +rg + +au +; + +16 +size_t + +n + = + `rlizeMsgPack +( +v +, +au +); + +17 + `CAPTURE +( +v +); + +18 + `REQUIRE +( +n + = +exed_n +); + +19 + `REQUIRE +( +au + = +exed +); + +20 + } +} + +22 + gme + < +tyme + + gT +, +size_t + + gN +> + +23  +checkV +( +T + +vue +, cڡ (& +exed_da +)[ +N +]) { + +24 cڡ +size_t + + gexed_n + = +N + - 1; + +25 +checkV +( +vue +, +exed_da +, +exed_n +); + +28 + gme + < +tyme + + gT +> + +29  + $checkV +( +T + +vue +, cڡ +d +:: +rg +& +exed +) { + +30 + `checkV +( +vue +, +exed +. + `da +(),xed. + `ngth +()); + +31 + } +} + +33 +TEST_CASE +("serialize MsgPack value") { + +34 +SECTION +("undefined") { + +35 +checkV +( +JsV +(), "\xC0"); + +38 +SECTION +("nil") { + +39 cڡ * + gn + = 0; + +40 +checkV +( +n +, "\xC0"); + +43 +SECTION +("bool") { + +44 +checkV +( +l +, "\xC2"); + +45 +checkV +( +ue +, "\xC3"); + +48 +SECTION +("positive fixint") { + +49 +checkV +(0, "\x00"); + +50 +checkV +(127, "\x7F"); + +53 +SECTION +("uint 8") { + +54 +checkV +(128, "\xCC\x80"); + +55 +checkV +(255, "\xCC\xFF"); + +58 +SECTION +("uint 16") { + +59 +checkV +(256, "\xCD\x01\x00"); + +60 +checkV +(0xFFFF, "\xCD\xFF\xFF"); + +63 +SECTION +("uint 32") { + +64 +checkV +(0x00010000U, "\xCE\x00\x01\x00\x00"); + +65 +checkV +(0x12345678U, "\xCE\x12\x34\x56\x78"); + +66 +checkV +(0xFFFFFFFFU, "\xCE\xFF\xFF\xFF\xFF"); + +69 #i +ARDUINOJSON_USE_LONG_LONG + + +70 +SECTION +("uint 64") { + +71 +checkV +(0x0001000000000000U, "\xCF\x00\x01\x00\x00\x00\x00\x00\x00"); + +72 +checkV +(0x123456789ABCDEF0U, "\xCF\x12\x34\x56\x78\x9A\xBC\xDE\xF0"); + +73 +checkV +(0xFFFFFFFFFFFFFFFFU, "\xCF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); + +77 +SECTION +("negative fixint") { + +78 +checkV +(-1, "\xFF"); + +79 +checkV +(-32, "\xE0"); + +82 +SECTION +("int 8") { + +83 +checkV +(-33, "\xD0\xDF"); + +84 +checkV +(-128, "\xD0\x80"); + +87 +SECTION +("int 16") { + +88 +checkV +(-129, "\xD1\xFF\x7F"); + +89 +checkV +(-32768, "\xD1\x80\x00"); + +92 +SECTION +("int 32") { + +93 +checkV +(-32769, "\xD2\xFF\xFF\x7F\xFF"); + +94 +checkV +(-2147483647 - 1, "\xD2\x80\x00\x00\x00"); + +97 #i +ARDUINOJSON_USE_LONG_LONG + + +98 +SECTION +("int 64") { + +99 +checkV +( +t64_t +(0xFEDCBA9876543210), + +104 +SECTION +("float 32") { + +105 +checkV +(1.25, "\xCA\x3F\xA0\x00\x00"); + +108 +SECTION +("float 64") { + +109 +checkV +(3.1415, "\xCB\x40\x09\x21\xCA\xC0\x83\x12\x6F"); + +112 +SECTION +("fixstr") { + +113 +checkV +("", "\xA0"); + +114 +checkV +("hello world hello world hello !", + +118 +SECTION +("str 8") { + +119 +checkV +("hello world hello world hello !!", + +123 +SECTION +("str 16") { + +124 + gd +:: +rg + +sh܋ +(256, '?'); + +125 +checkV +( +sh܋ +. +c_r +(), +d +:: +rg +("\xDA\x01\x00", 3) + shortest); + +127 + gd +:: +rg + +lge +(65535, '?'); + +128 +checkV +( +lge +. +c_r +(), +d +:: +rg +("\xDA\xFF\xFF", 3) +ongest); + +131 +SECTION +("str 32") { + +132 + gd +:: +rg + +sh܋ +(65536, '?'); + +133 +checkV +( +sh܋ +. +c_r +(), + +134 +d +:: +rg +("\xDB\x00\x01\x00\x00", 5+ +sh܋ +); + +137 +SECTION +("serialized(const char*)") { + +138 +checkV +( +rlized +("\xDA\xFF\xFF"), "\xDA\xFF\xFF"); + +139 +checkV +( +rlized +("\xDB\x00\x01\x00\x00", 5), "\xDB\x00\x01\x00\x00"); + + @lib_standalone/ArduinoJson/extras/tests/Numbers/parseFloat.cpp + +5  + #ARDUINOJSON_USE_DOUBLE + 0 + + ) + +6  + #ARDUINOJSON_ENABLE_NAN + 1 + + ) + +7  + #ARDUINOJSON_ENABLE_INFINITY + 1 + + ) + +9  + ~ + +10  + ~ + +12 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +14 + gme + < +tyme + + gT +> + +15  + $checkFlt +(cڡ * +put +, +T + +exed +) { + +16 + `CAPTURE +( +put +); + +17 + `REQUIRE +( +rFlt +< +T +>( +put += + `Arox +( +exed +)); + +18 + } +} + +20 + gme + < +tyme + + gT +> + +21  + $checkNaN +(cڡ * +put +) { + +22 + `CAPTURE +( +put +); + +23 +T + +su + = +rFlt +( +put +); + +24 + `REQUIRE +( +su + !=esult); + +25 + } +} + +27 + gme + < +tyme + + gT +> + +28  + $checkInf +(cڡ * +put +, +bo + +give +) { + +29 + `CAPTURE +( +put +); + +30 +T + +x + = +rFlt +( +put +); + +31 i( +give +) + +32 + `REQUIRE +( +x + < 0); + +34 + `REQUIRE +( +x + > 0); + +35 + `REQUIRE +( +x + == x); + +36 + `REQUIRE +( +x + * 2 == x); + +37 + } +} + +39 +TEST_CASE +("parseFloat()") { + +40 +SECTION +("Float_Short_NoExponent") { + +41 + gcheckFlt +<>("3.14", 3.14f); + +42 + gcheckFlt +<>("-3.14", -3.14f); + +43 + gcheckFlt +<>("+3.14", +3.14f); + +46 +SECTION +("Short_NoDot") { + +47 + gcheckFlt +<>("1E+38", 1E+38f); + +48 + gcheckFlt +<>("-1E+38", -1E+38f); + +49 + gcheckFlt +<>("+1E-38", +1E-38f); + +50 + gcheckFlt +<>("+1e+38", +1e+38f); + +51 + gcheckFlt +<>("-1e-38", -1e-38f); + +54 +SECTION +("Max") { + +55 + gcheckFlt +<>("340.2823e+36", 3.402823e+38f); + +56 + gcheckFlt +<>("34.02823e+37", 3.402823e+38f); + +57 + gcheckFlt +<>("3.402823e+38", 3.402823e+38f); + +58 + gcheckFlt +<>("0.3402823e+39", 3.402823e+38f); + +59 + gcheckFlt +<>("0.03402823e+40", 3.402823e+38f); + +60 + gcheckFlt +<>("0.003402823e+41", 3.402823e+38f); + +63 +SECTION +("VeryLong") { + +64 + gcheckFlt +<>("0.00000000000000000000000000000001", 1e-32f); + +65 + gcheckFlt +<>("100000000000000000000000000000000.0", 1e+32f); + +66 + gcheckFlt +<>( + +71 +SECTION +("MantissaTooLongToFit") { + +72 + gcheckFlt +<>("0.340282346638528861111111111111", 0.34028234663852886f); + +73 + gcheckFlt +<>("34028234663852886.11111111111111", 34028234663852886.0f); + +74 + gcheckFlt +<>("34028234.66385288611111111111111", 34028234.663852886f); + +76 + gcheckFlt +<>("-0.340282346638528861111111111111", + +78 + gcheckFlt +<>("-34028234663852886.11111111111111", + +80 + gcheckFlt +<>("-34028234.66385288611111111111111", + +84 +SECTION +("ExponentTooBig") { + +85 + gcheckInf +<>("1e39", + gl +); + +86 + gcheckInf +<>("-1e39", + gue +); + +87 + gcheckInf +<>("1e255", + gl +); + +88 + gcheckFlt +<>("1e-255", 0.0f); + +91 +SECTION +("NaN") { + +92 + gcheckNaN +<>("NaN"); + +93 + gcheckNaN +<>("nan"); + +96 +SECTION +("Infinity") { + +97 + gcheckInf +<>("Infy", + gl +); + +98 + gcheckInf +<>("+Infy", + gl +); + +99 + gcheckInf +<>("-Infy", + gue +); + +100 + gcheckInf +<>("f", + gl +); + +101 + gcheckInf +<>("+f", + gl +); + +102 + gcheckInf +<>("-f", + gue +); + +104 + gcheckInf +<>("1e300", + gl +); + +105 + gcheckInf +<>("-1e300", + gue +); + +109 +TEST_CASE +("parseFloat()") { + +110 +SECTION +("Short_NoExponent") { + +111 + gcheckFlt +<>("3.14", 3.14); + +112 + gcheckFlt +<>("-3.14", -3.14); + +113 + gcheckFlt +<>("+3.14", +3.14); + +116 +SECTION +("Short_NoDot") { + +117 + gcheckFlt +<>("1E+308", 1E+308); + +118 + gcheckFlt +<>("-1E+308", -1E+308); + +119 + gcheckFlt +<>("+1E-308", +1E-308); + +120 + gcheckFlt +<>("+1e+308", +1e+308); + +121 + gcheckFlt +<>("-1e-308", -1e-308); + +124 +SECTION +("Max") { + +125 + gcheckFlt +<>(".017976931348623147e+310", 1.7976931348623147e+308); + +126 + gcheckFlt +<>(".17976931348623147e+309", 1.7976931348623147e+308); + +127 + gcheckFlt +<>("1.7976931348623147e+308", 1.7976931348623147e+308); + +128 + gcheckFlt +<>("17.976931348623147e+307", 1.7976931348623147e+308); + +129 + gcheckFlt +<>("179.76931348623147e+306", 1.7976931348623147e+308); + +132 +SECTION +("Min") { + +133 + gcheckFlt +<>(".022250738585072014e-306", 2.2250738585072014e-308); + +134 + gcheckFlt +<>(".22250738585072014e-307", 2.2250738585072014e-308); + +135 + gcheckFlt +<>("2.2250738585072014e-308", 2.2250738585072014e-308); + +136 + gcheckFlt +<>("22.250738585072014e-309", 2.2250738585072014e-308); + +137 + gcheckFlt +<>("222.50738585072014e-310", 2.2250738585072014e-308); + +140 +SECTION +("VeryLong") { + +141 + gcheckFlt +<>("0.00000000000000000000000000000001", 1e-32); + +142 + gcheckFlt +<>("100000000000000000000000000000000.0", 1e+32); + +143 + gcheckFlt +<>( + +148 +SECTION +("MantissaTooLongToFit") { + +149 + gcheckFlt +<>("0.179769313486231571111111111111", 0.17976931348623157); + +150 + gcheckFlt +<>("17976931348623157.11111111111111", 17976931348623157.0); + +151 + gcheckFlt +<>("1797693.134862315711111111111111", 1797693.1348623157); + +153 + gcheckFlt +<>("-0.179769313486231571111111111111", + +155 + gcheckFlt +<>("-17976931348623157.11111111111111", + +157 + gcheckFlt +<>("-1797693.134862315711111111111111", + +161 +SECTION +("ExponentTooBig") { + +162 + gcheckInf +<>("1e309", + gl +); + +163 + gcheckInf +<>("-1e309", + gue +); + +164 + gcheckInf +<>("1e65535", + gl +); + +165 + gcheckFlt +<>("1e-65535", 0.0); + +168 +SECTION +("NaN") { + +169 + gcheckNaN +<>("NaN"); + +170 + gcheckNaN +<>("nan"); + + @lib_standalone/ArduinoJson/extras/tests/Numbers/parseInteger.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +11 + gme + < +tyme + + gT +> + +12  + $checkIeg +(cڡ * +put +, +T + +exed +) { + +13 + `CAPTURE +( +put +); + +14 +T + +au + = +rIeg +( +put +); + +15 + `REQUIRE +( +exed + = +au +); + +16 + } +} + +18 +TEST_CASE +("parseInteger()") { + +19 + gcheckIeg +< + gt8_t +>("-128", -128); + +20 + gcheckIeg +< + gt8_t +>("127", 127); + +21 + gcheckIeg +< + gt8_t +>("+127", 127); + +22 + gcheckIeg +< + gt8_t +>("3.14", 3); + +23 + gcheckIeg +< + gt8_t +>("x42", 0); + +24 + gcheckIeg +< + gt8_t +>("128", 0); + +25 + gcheckIeg +< + gt8_t +>("-129", 0); + +28 +TEST_CASE +("parseInteger()") { + +29 + gcheckIeg +< + gt16_t +>("-32768", -32768); + +30 + gcheckIeg +< + gt16_t +>("32767", 32767); + +31 + gcheckIeg +< + gt16_t +>("+32767", 32767); + +32 + gcheckIeg +< + gt16_t +>("3.14", 3); + +33 + gcheckIeg +< + gt16_t +>("x42", 0); + +34 + gcheckIeg +< + gt16_t +>("-32769", 0); + +35 + gcheckIeg +< + gt16_t +>("32768", 0); + +38 +TEST_CASE +("parseInteger()") { + +39 + gcheckIeg +< + gt32_t +>("-2147483648", (-2147483647 - 1)); + +40 + gcheckIeg +< + gt32_t +>("2147483647", 2147483647); + +41 + gcheckIeg +< + gt32_t +>("+2147483647", 2147483647); + +42 + gcheckIeg +< + gt32_t +>("3.14", 3); + +43 + gcheckIeg +< + gt32_t +>("x42", 0); + +44 + gcheckIeg +< + gt32_t +>("-2147483649", 0); + +45 + gcheckIeg +< + gt32_t +>("2147483648", 0); + +48 +TEST_CASE +("parseInteger()") { + +49 + gcheckIeg +< + gut8_t +>("0", 0); + +50 + gcheckIeg +< + gut8_t +>("255", 255); + +51 + gcheckIeg +< + gut8_t +>("+255", 255); + +52 + gcheckIeg +< + gut8_t +>("3.14", 3); + +53 + gcheckIeg +< + gut8_t +>("x42", 0); + +54 + gcheckIeg +< + gut8_t +>("-1", 0); + +55 + gcheckIeg +< + gut8_t +>("256", 0); + +58 +TEST_CASE +("parseInteger()") { + +59 + gcheckIeg +< + gut16_t +>("0", 0); + +60 + gcheckIeg +< + gut16_t +>("65535", 65535); + +61 + gcheckIeg +< + gut16_t +>("+65535", 65535); + +62 + gcheckIeg +< + gut16_t +>("3.14", 3); + +64 + gcheckIeg +< + gut16_t +>("x42", 0); + +65 + gcheckIeg +< + gut16_t +>("-1", 0); + +66 + gcheckIeg +< + gut16_t +>("65536", 0); + + @lib_standalone/ArduinoJson/extras/tests/Numbers/parseNumber.cpp + +5  + ~ + +6  + ~ + +8 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +10 +TEST_CASE +("Test uint32_t overflow") { + +11 + gPdNumb +<, + gut32_t +> + gf + = + +12 +rNumb +<, + gut32_t +>("4294967295"); + +13 + gPdNumb +<, + gut32_t +> + gcd + = + +14 +rNumb +<, + gut32_t +>("4294967296"); + +16 +REQUIRE +( +f +. +ty +(= +ut8_t +( +VALUE_IS_POSITIVE_INTEGER +)); + +17 +REQUIRE +( +cd +. +ty +(= +ut8_t +( +VALUE_IS_FLOAT +)); + +20 +TEST_CASE +("Invalid value") { + +21 + gPdNumb +<, + gut32_t +> + gsu + = +rNumb +<, uint32_t>("6a3"); + +23 +REQUIRE +( +su +. +ty +(= +ut8_t +( +VALUE_IS_NULL +)); + + @lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp + +5  + ~ + +6  + ~ + +7  + ~ + +9  + #ARDUINOJSON_ENABLE_NAN + 1 + + ) + +10  + #ARDUINOJSON_ENABLE_INFINITY + 1 + + ) + +11  + ~ + +12  + ~ + +14 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +16 + gme + < +tyme + + gTFlt +> + +17  + $check +( +TFlt + +put +, cڡ +d +:: +rg +& +exed +) { + +18 +d +:: +rg + +ouut +; + +19 +Wr +< +d +:: +rg +> + `sb +( +ouut +); + +20 +TextFmr +< +Wr +< +d +:: +rg +> > + `wr +( +sb +); + +21 +wr +. + `wreFlt +( +put +); + +22 + `REQUIRE +( +wr +. + `bysWrn +(= +ouut +. + `size +()); + +23 + `CHECK +( +exed + = +ouut +); + +24 + } +} + +26 +TEST_CASE +("TextFormatter::writeFloat(double)") { + +27 +SECTION +("Pi") { + +28 + gcheck +<>(3.14159265359, "3.141592654"); + +31 +SECTION +("Signaling NaN") { + +32  + gn + = +d +:: +numic_lims +<>:: +siglg_NaN +(); + +33 + gcheck +<>( + gn +, "NaN"); + +36 +SECTION +("Quiet NaN") { + +37  + gn + = +d +:: +numic_lims +<>:: +qut_NaN +(); + +38 + gcheck +<>( + gn +, "NaN"); + +41 +SECTION +("Infinity") { + +42  + gf + = +d +:: +numic_lims +<>:: +fy +(); + +43 + gcheck +<>( + gf +, "Infinity"); + +44 + gcheck +<>(- + gf +, "-Infinity"); + +47 +SECTION +("Zero") { + +48 + gcheck +<>(0.0, "0"); + +49 + gcheck +<>(-0.0, "0"); + +52 +SECTION +("Espilon") { + +53 + gcheck +<>(2.2250738585072014E-308, "2.225073859e-308"); + +54 + gcheck +<>(-2.2250738585072014E-308, "-2.225073859e-308"); + +57 +SECTION +("Max double") { + +58 + gcheck +<>(1.7976931348623157E+308, "1.797693135e308"); + +59 + gcheck +<>(-1.7976931348623157E+308, "-1.797693135e308"); + +62 +SECTION +("Bigxponent") { + +64 + gcheck +<>(1e255, "1e255"); + +65 + gcheck +<>(1e-255, "1e-255"); + +68 +SECTION +("Exponentation when <= 1e-5") { + +69 + gcheck +<>(1e-4, "0.0001"); + +70 + gcheck +<>(1e-5, "1e-5"); + +72 + gcheck +<>(-1e-4, "-0.0001"); + +73 + gcheck +<>(-1e-5, "-1e-5"); + +76 +SECTION +("Exponentation when >= 1e7") { + +77 + gcheck +<>(9999999.999, "9999999.999"); + +78 + gcheck +<>(10000000.0, "1e7"); + +80 + gcheck +<>(-9999999.999, "-9999999.999"); + +81 + gcheck +<>(-10000000.0, "-1e7"); + +84 +SECTION +("Rounding whenoo many decimals") { + +85 + gcheck +<>(0.000099999999999, "0.0001"); + +86 + gcheck +<>(0.0000099999999999, "1e-5"); + +87 + gcheck +<>(0.9999999996, "1"); + +90 +SECTION +("9 decimallaces") { + +91 + gcheck +<>(0.100000001, "0.100000001"); + +92 + gcheck +<>(0.999999999, "0.999999999"); + +94 + gcheck +<>(9.000000001, "9.000000001"); + +95 + gcheck +<>(9.999999999, "9.999999999"); + +98 +SECTION +("10 decimallaces") { + +99 + gcheck +<>(0.1000000001, "0.1"); + +100 + gcheck +<>(0.9999999999, "1"); + +102 + gcheck +<>(9.0000000001, "9"); + +103 + gcheck +<>(9.9999999999, "10"); + +107 +TEST_CASE +("TextFormatter::writeFloat(float)") { + +108 +SECTION +("Pi") { + +109 + gcheck +<>(3.14159265359f, "3.141593"); + +112 +SECTION +("999.9") { + +113 + gcheck +<>(999.9f, "999.9"); + +116 +SECTION +("24.3") { + +117 + gcheck +<>(24.3f, "24.3"); + + @lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeString.cpp + +5  + ~ + +7  + ~ + +8  + ~ + +10 +usg + +mea + + gARDUINOJSON_NAMESPACE +; + +12  + $check +(cڡ * +put +, +d +:: +rg + +exed +) { + +13  +ouut +[1024]; + +14 +SticSgWr + + `sb +( +ouut +, (output)); + +15 +TextFmr +< +SticSgWr +> + `wr +( +sb +); + +16 +wr +. + `wreSg +( +put +); + +17 + `REQUIRE +( +exed + = +ouut +); + +18 + `REQUIRE +( +wr +. + `bysWrn +(= +exed +. + `size +()); + +19 + } +} + +21 +TEST_CASE +("TextFormatter::writeString()") { + +22 +SECTION +("EmptyString") { + +23 +check +("", "\"\""); + +26 +SECTION +("QuotationMark") { + +27 +check +("\"", "\"\\\"\""); + +30 +SECTION +("ReverseSolidus") { + +31 +check +("\\", "\"\\\\\""); + +34 +SECTION +("Solidus") { + +35 +check +("/", "\"/\""); + +38 +SECTION +("Backspace") { + +39 +check +("\b", "\"\\b\""); + +42 +SECTION +("Formfeed") { + +43 +check +("\f", "\"\\f\""); + +46 +SECTION +("Newline") { + +47 +check +("\n", "\"\\n\""); + +50 +SECTION +("CarriageReturn") { + +51 +check +("\r", "\"\\r\""); + +54 +SECTION +("HorizontalTab") { + +55 +check +("\t", "\"\\t\""); + + @lib_standalone/ArduinoJson/extras/tests/catch/catch.cpp + +5  + #CATCH_CONFIG_MAIN + + + ) + +6  + ~"tch.h +" + + @lib_standalone/ArduinoJson/extras/tests/catch/catch.hpp + +11 #ide +TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + + +12  + #TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED + + + ) + +14  + #TWOBLUECUBES_CATCH_HPP_INCLUDED + + + ) + +16 #ifde +__g__ + + +17 #agm +g + +syem_hd + + +18 #i +defed + +__GNUC__ + + +19 #agm +GCC + +syem_hd + + +24 #ifde +__g__ + + +25 #ifde +__ICC + + +26 #agm +wng +( +push +) + +27 #agm +wng +( +dib +: 161 1682) + +29 #agm +g + +dgnoic + +igned + "-Wglobal-constructors" + +30 #agm +g + +dgnoic + +igned + "-Wvariadic-macros" + +31 #agm +g + +dgnoic + +igned + "-Wc99-extensions" + +32 #agm +g + +dgnoic + +igned + "-Wunused-variable" + +33 #agm +g + +dgnoic + +push + + +34 #agm +g + +dgnoic + +igned + "-Wpadded" + +35 #agm +g + +dgnoic + +igned + "-Wc++98-compat" + +36 #agm +g + +dgnoic + +igned + "-Wc++98-compat-pedantic" + +37 #agm +g + +dgnoic + +igned + "-Wswitch-enum" + +38 #agm +g + +dgnoic + +igned + "-Wcovered-switch-default" + +40 #i +defed + +__GNUC__ + + +41 #agm +GCC + +dgnoic + +igned + "-Wvariadic-macros" + +42 #agm +GCC + +dgnoic + +igned + "-Wunused-variable" + +43 #agm +GCC + +dgnoic + +igned + "-Wparentheses" + +45 #agm +GCC + +dgnoic + +push + + +46 #agm +GCC + +dgnoic + +igned + "-Wpadded" + +48 #i +defed +( +CATCH_CONFIG_MAIN +|| defed( +CATCH_CONFIG_RUNNER +) + +49  + #CATCH_IMPL + + + ) + +52 #ifde +CATCH_IMPL + + +53 #ide +CLARA_CONFIG_MAIN + + +54  + #CLARA_CONFIG_MAIN_NOT_DEFINED + + + ) + +55  + #CLARA_CONFIG_MAIN + + + ) + +60  + #TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_H_INCLUDED + + + ) + +63  + #TWOBLUECUBES_CATCH_COMMON_H_INCLUDED + + + ) + +66  + #TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED + + + ) + +100 #ifde +__lulus + + +102 #i +__lulus + >= 201103L + +103  + #CATCH_CPP11_OR_GREATER + + + ) + +106 #i +__lulus + >= 201402L + +107  + #CATCH_CPP14_OR_GREATER + + + ) + +112 #ifde +__g__ + + +114 #i +__has_u +( +cxx_nuαr +) + +115  + #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +118 #i +__has_u +( +cxx_nx +) + +119  + #CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT + + + ) + +122 #i +defed +( +CATCH_CPP11_OR_GREATER +) + +123  + #CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +124 + `_Pgma +( "clang diagnosticush" ) \ + +125 + `_Pgma +"g dgnoiigned \"-Wex-time-derus\"" ) + + ) + +126  + #CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + \ + +127 + `_Pgma +"g dgnoip" ) + + ) + +129  + #CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS + \ + +130 + `_Pgma +( "clang diagnosticush" ) \ + +131 + `_Pgma +"g dgnoiigned \"-Whes\"" ) + + ) + +132  + #CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS + \ + +133 + `_Pgma +"g dgnoip" ) + + ) + +140 #i +defed +( +__CYGWIN__ +|| defed( +__QNX__ +) + +142 #i! +defed +( +CATCH_CONFIG_POSIX_SIGNALS +) + +143  + #CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS + + + ) + +148 #ifde +__OS400__ + + +149  + #CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS + + + ) + +150  + #CATCH_CONFIG_COLOUR_NONE + + + ) + +155 #ifde +__CYGWIN__ + + +159  + #_BSD_SOURCE + + + ) + +165 #ifde +__BORLANDC__ + + +171 #ifde +__EDG_VERSION__ + + +177 #ifde +__DMC__ + + +183 #ifde +__GNUC__ + + +185 #i +__GNUC__ + =4 && +__GNUC_MINOR__ + >6 && +defed +( +__GXX_EXPERIMENTAL_CXX0X__ +) + +186  + #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +196 #ifde +_MSC_VER + + +198  + #CATCH_INTERNAL_CONFIG_WINDOWS_SEH + + + ) + +200 #i( +_MSC_VER + >= 1600) + +201  + #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +202  + #CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR + + + ) + +205 #i( +_MSC_VER + >= 1900 ) + +206  + #CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT + + + ) + +207  + #CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS + + + ) + +208  + #CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE + + + ) + +209  + #CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS + + + ) + +217 #i +defed + +_MSC_VER + && _MSC_VER > 1400 && !defed +__EDGE__ +) || \ + +218 +defed + + g__WAVE__ + && + g__WAVE_HAS_VARIADICS + ) || \ + +219 +defed + + g__GNUC__ + && __GNUC__ >= 3 ) || \ + +220 ! +defed + +__lulus + && +__STDC_VERSION__ + >= 199901L || __cplusplus >= 201103L ) + +222  + #CATCH_INTERNAL_CONFIG_VARIADIC_MACROS + + + ) + +227 #i +defed + +_MSC_VER + && _MSC_VER >= 1300 ) || \ + +228 +defed + +__GNUC__ + && ( __GNUC__ > 4 || (__GNUC__ =4 && +__GNUC_MINOR__ + >= 3 )) ) || \ + +229 +defed + +__g__ + && +__g_maj__ + >= 3 ) + +231  + #CATCH_INTERNAL_CONFIG_COUNTER + + + ) + +239 #i +defed +( +CATCH_CPP11_OR_GREATER +) + +241 #i! +defed +( +CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +) + +242  + #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +245 #ide +CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT + + +246  + #CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT + + + ) + +249 #ide +CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS + + +250  + #CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS + + + ) + +253 #ide +CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM + + +254  + #CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM + + + ) + +257 #ide +CATCH_INTERNAL_CONFIG_CPP11_TUPLE + + +258  + #CATCH_INTERNAL_CONFIG_CPP11_TUPLE + + + ) + +261 #ide +CATCH_INTERNAL_CONFIG_VARIADIC_MACROS + + +262  + #CATCH_INTERNAL_CONFIG_VARIADIC_MACROS + + + ) + +265 #i! +defed +( +CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG +) + +266  + #CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG + + + ) + +269 #i! +defed +( +CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE +) + +270  + #CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE + + + ) + +272 #i! +defed +( +CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +) + +273  + #CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR + + + ) + +275 #i! +defed +( +CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE +) + +276  + #CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE + + + ) + +278 #i! +defed +( +CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS +) + +279  + #CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS + + + ) + +285 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_NULLPTR +&& !defed( +CATCH_CONFIG_CPP11_NO_NULLPTR +&& !defed( +CATCH_CONFIG_CPP11_NULLPTR +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +286  + #CATCH_CONFIG_CPP11_NULLPTR + + + ) + +288 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT +&& !defed( +CATCH_CONFIG_CPP11_NO_NOEXCEPT +&& !defed( +CATCH_CONFIG_CPP11_NOEXCEPT +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +289  + #CATCH_CONFIG_CPP11_NOEXCEPT + + + ) + +291 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +&& !defed( +CATCH_CONFIG_CPP11_NO_GENERATED_METHODS +&& !defed( +CATCH_CONFIG_CPP11_GENERATED_METHODS +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +292  + #CATCH_CONFIG_CPP11_GENERATED_METHODS + + + ) + +294 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM +&& !defed( +CATCH_CONFIG_CPP11_NO_IS_ENUM +&& !defed( +CATCH_CONFIG_CPP11_IS_ENUM +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +295  + #CATCH_CONFIG_CPP11_IS_ENUM + + + ) + +297 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_TUPLE +&& !defed( +CATCH_CONFIG_CPP11_NO_TUPLE +&& !defed( +CATCH_CONFIG_CPP11_TUPLE +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +298  + #CATCH_CONFIG_CPP11_TUPLE + + + ) + +300 #i +defed +( +CATCH_INTERNAL_CONFIG_VARIADIC_MACROS +&& !defed( +CATCH_CONFIG_NO_VARIADIC_MACROS +&& !defed( +CATCH_CONFIG_VARIADIC_MACROS +) + +301  + #CATCH_CONFIG_VARIADIC_MACROS + + + ) + +303 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG +&& !defed( +CATCH_CONFIG_CPP11_NO_LONG_LONG +&& !defed( +CATCH_CONFIG_CPP11_LONG_LONG +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +304  + #CATCH_CONFIG_CPP11_LONG_LONG + + + ) + +306 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE +&& !defed( +CATCH_CONFIG_CPP11_NO_OVERRIDE +&& !defed( +CATCH_CONFIG_CPP11_OVERRIDE +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +307  + #CATCH_CONFIG_CPP11_OVERRIDE + + + ) + +309 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +&& !defed( +CATCH_CONFIG_CPP11_NO_UNIQUE_PTR +&& !defed( +CATCH_CONFIG_CPP11_UNIQUE_PTR +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +310  + #CATCH_CONFIG_CPP11_UNIQUE_PTR + + + ) + +315 #i +defed +( +CATCH_INTERNAL_CONFIG_COUNTER +&& !defed( +CATCH_CONFIG_NO_COUNTER +&& !defed( +CATCH_CONFIG_COUNTER +&& !defed( +__JETBRAINS_IDE__ +) + +316  + #CATCH_CONFIG_COUNTER + + + ) + +318 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE +&& !defed( +CATCH_CONFIG_CPP11_NO_SHUFFLE +&& !defed( +CATCH_CONFIG_CPP11_SHUFFLE +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +319  + #CATCH_CONFIG_CPP11_SHUFFLE + + + ) + +321 #i +defed +( +CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS +&& !defed( +CATCH_CONFIG_CPP11_NO_TYPE_TRAITS +&& !defed( +CATCH_CONFIG_CPP11_TYPE_TRAITS +&& !defed( +CATCH_CONFIG_NO_CPP11 +) + +322  + #CATCH_CONFIG_CPP11_TYPE_TRAITS + + + ) + +324 #i +defed +( +CATCH_INTERNAL_CONFIG_WINDOWS_SEH +&& !defed( +CATCH_CONFIG_NO_WINDOWS_SEH +&& !defed( +CATCH_CONFIG_WINDOWS_SEH +) + +325  + #CATCH_CONFIG_WINDOWS_SEH + + + ) + +328 #i! +defed +( +CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS +&& !defed( +CATCH_CONFIG_NO_POSIX_SIGNALS +&& !defed( +CATCH_CONFIG_POSIX_SIGNALS +) + +329  + #CATCH_CONFIG_POSIX_SIGNALS + + + ) + +332 #i! +defed +( +CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS +) + +333  + #CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS + + + ) + +334  + #CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS + + + ) + +336 #i! +defed +( +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS +) + +337  + #CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + + + ) + +338  + #CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + + ) + +342 #i +defed +( +CATCH_CONFIG_CPP11_NOEXCEPT +&& !defed( +CATCH_NOEXCEPT +) + +343  + #CATCH_NOEXCEPT + +nx + + + ) + +344  + #CATCH_NOEXCEPT_IS +( +x + + `nx +(x) + + ) + +346  + #CATCH_NOEXCEPT + + `throw +() + + ) + +347  + #CATCH_NOEXCEPT_IS +( +x +) + + ) + +351 #ifde +CATCH_CONFIG_CPP11_NULLPTR + + +352  + #CATCH_NULL + +nuαr + + + ) + +354  + #CATCH_NULL + +NULL + + + ) + +358 #ifde +CATCH_CONFIG_CPP11_OVERRIDE + + +359  + #CATCH_OVERRIDE + +ovride + + + ) + +361  + #CATCH_OVERRIDE + + + ) + +365 #ifde +CATCH_CONFIG_CPP11_UNIQUE_PTR + + +366  + #CATCH_AUTO_PTR + +T + ) +d +:: +unique_r + + + ) + +368  + #CATCH_AUTO_PTR + +T + ) +d +:: +auto_r + + + ) + +371  + #INTERNAL_CATCH_UNIQUE_NAME_LINE2 + +me +, +le + )ame## + ) +line + +372  + #INTERNAL_CATCH_UNIQUE_NAME_LINE + +me +, +le + ) + `INTERNAL_CATCH_UNIQUE_NAME_LINE2 +me,) + + ) + +373 #ifde +CATCH_CONFIG_COUNTER + + +374  + #INTERNAL_CATCH_UNIQUE_NAME + +me + ) + `INTERNAL_CATCH_UNIQUE_NAME_LINE +me, +__COUNTER__ + ) + + ) + +376  + #INTERNAL_CATCH_UNIQUE_NAME + +me + ) + `INTERNAL_CATCH_UNIQUE_NAME_LINE +me, +__LINE__ + ) + + ) + +379  + #INTERNAL_CATCH_STRINGIFY2 + +ex + ) #ex + + ) + +380  + #INTERNAL_CATCH_STRINGIFY + +ex + ) + `INTERNAL_CATCH_STRINGIFY2 +ex ) + + ) + +382  + ~ + +383  + ~ + +385 +mea + + gCch + { + +387  + gICfig +; + +389  + sCaSsive + { + eChoi + { + +390 + gYes +, + +391 + gNo + + +394 as + cNCyab + { + +395 #ifde +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +396 +NCyab +NCyab cڡ& ) = +de +; + +397 +NCyab +NCyab && ) = +de +; + +398 + gNCyab +& + gݔ + = ( +NCyab + cڡ& ) = +de +; + +399 + gNCyab +& + gݔ + = ( +NCyab + && ) = +de +; + +401 +NCyab +NCyab cڡ& +fo + ); + +402 + gNCyab +& + gݔ + = ( +NCyab + const& ); + +405 + geed +: + +406 +NCyab +() {} + +407 +vtu + ~ +NCyab +(); + +410 as + cSaBo + { + +411 + gpublic +: + +412 ( +SaBo +::* + tty +)() const; + +414  +ty + +makeSa + +bo + +vue + ) { + +415  + gvue + ? & + gSaBo +:: +ueVue + : 0; + +417 + give +: + +418  +ueVue +() const {} + +421 + gme +< +tyme + + gCڏT +> + +422  + $deA + +CڏT +& +cڏ + ) { + +423 +tyme + +CڏT +:: +cڡ_ + + + = +cڏ +. + `beg +(); + +424 +tyme + +CڏT +:: +cڡ_ + +End + = +cڏ +. + `d +(); + +425 ; + + ! +End +; ++it ) + +426 +de + * + +; + +427 + } +} + +428 + gme +< +tyme + + gAssoctiveCڏT +> + +429  + $deAVues + +AssoctiveCڏT +& +cڏ + ) { + +430 +tyme + +AssoctiveCڏT +:: +cڡ_ + + + = +cڏ +. + `beg +(); + +431 +tyme + +AssoctiveCڏT +:: +cڡ_ + +End + = +cڏ +. + `d +(); + +432 ; + + ! +End +; ++it ) + +433 +de + + +-> +cd +; + +434 + } +} + +436 +bo + +tsWh + +d +:: +rg + cڡ& +s +, std::rg cڡ& +efix + ); + +437 +bo + +tsWh + +d +:: +rg + cڡ& +s +,  +efix + ); + +438 +bo + +dsWh + +d +:: +rg + cڡ& +s +, std::rg cڡ& +suffix + ); + +439 +bo + +dsWh + +d +:: +rg + cڡ& +s +,  +suffix + ); + +440 +bo + +cڏs + +d +:: +rg + cڡ& +s +, std::rg cڡ& +fix + ); + +441  +toLowInP + +d +:: +rg +& +s + ); + +442 + gd +:: +rg + +toLow + +d +::rg cڡ& +s + ); + +443 + gd +:: +rg + +im + +d +::rg cڡ& +r + ); + +444 +bo + +aInP + +d +:: +rg +& +r +, std::rg cڡ& +aThis +, std::rg cڡ& +whThis + ); + +446  + suli + { + +447 +uli + +d +:: +size_t + +cou +, std:: +rg + cڡ& +b + ); + +449 +nd + + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +uli + cڡ& + gulir + ); + +451 + gd +:: +size_t + +m_cou +; + +452 + gd +:: +rg + +m_b +; + +455  + sSourLeInfo + { + +457 +SourLeInfo +(); + +458 +SourLeInfo +cڡ* +_fe +, +d +:: +size_t + +_le + ); + +459 #ifde +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +460 +SourLeInfo +(SourLeInfcڡ& +h +) = ; + +461 +SourLeInfo +( SourceLineInfo && ) = ; + +462 + gSourLeInfo +& + gݔ + = ( +SourLeInfo + const& ) = ; + +463 + gSourLeInfo +& + gݔ + = ( +SourLeInfo + && ) = ; + +465 +bo + +emy +() const; + +466 +bo + + gݔ + = +SourLeInfo + cڡ& +h + ) const; + +467 +bo + + gݔ + < ( +SourLeInfo + cڡ& + gh + ) const; + +469 cڡ* + gfe +; + +470 + gd +:: +size_t + +le +; + +473 + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +SourLeInfo + cڡ& + gfo + ); + +476 +le + +bo + + $isTrue + +bo + +vue + ){  vue; + } +} + +477 +le + +bo + + $waysTrue +({  +ue +; + } +} + +478 +le + +bo + + $waysF +({  +l +; + } +} + +480  +throwLogicE + +d +:: +rg + cڡ& +mesge +, +SourLeInfo + cڡ& +lotiInfo + ); + +482  +edRng + +ICfig + cڡ& +cfig + ); + +483  +gSd +(); + +489  + sSmEndSt + { + +490 + gd +:: +rg + +ݔ ++() { + +491  +d +:: +rg +(); + +494 + gme +< +tyme + + gT +> + +495 +T + cڡ& + gݔ + + ( T cڡ& + gvue +, + gSmEndSt + ) { + +496  + gvue +; + +500  + #CATCH_INTERNAL_LINEINFO + :: +Cch +:: + `SourLeInfo + +__FILE__ +, +ic_ +< +d +:: +size_t +> +__LINE__ + ) ) + + ) + +501  + #CATCH_INTERNAL_ERROR + +msg + ) :: +Cch +:: + `throwLogicE +msg, +CATCH_INTERNAL_LINEINFO + ); + + ) + +503 +mea + + gCch + { + +505 as + cNImemdExi + : +public + +d +:: +exi + + +507 +public +: + +508 +NImemdExi + +SourLeInfo + cڡ& +leInfo + ); + +510 + gvtu + ~ +NImemdExi +( + gCATCH_NOEXCEPT + {} + +512 +vtu + cڡ * +wh +(cڡ + gCATCH_NOEXCEPT +; + +514 + give +: + +515 +d +:: +rg + +m_wh +; + +516 +SourLeInfo + + gm_leInfo +; + +522  + #CATCH_NOT_IMPLEMENTED + +throw + +Cch +:: + `NImemdExi + +CATCH_INTERNAL_LINEINFO + ) + + ) + +525  + #TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED + + + ) + +528  + #TWOBLUECUBES_CATCH_INTERFACES_GENERATORS_H_INCLUDED + + + ) + +530  + ~ + +532 +mea + + gCch + { + +534  + sIGInfo + { + +535 + gvtu + ~ +IGInfo +(); + +536 +vtu + +bo + +moveNext +() = 0; + +537 +vtu + + gd +:: +size_t + +gCutIndex +() const = 0; + +540  + sIGsFTe + { + +541 + gvtu + ~ +IGsFTe +(); + +543 +vtu + + gIGInfo +& +gGInfo + +d +:: +rg + cڡ& +feInfo +, std:: +size_t + +size + ) = 0; + +544 +vtu + +bo + +moveNext +() = 0; + +547 +IGsFTe +* +GsFTe +(); + +552  + #TWOBLUECUBES_CATCH_PTR_HPP_INCLUDED + + + ) + +554 #ifde +__g__ + + +555 #agm +g + +dgnoic + +push + + +556 #agm +g + +dgnoic + +igned + "-Wpadded" + +559 +mea + + gCch + { + +564 + gme +< +tyme + + gT +> + +565 as + cP + { + +566 + gpublic +: + +567 +P +(: +m_p + +CATCH_NULL + ){} + +568 +P + +T +* +p + ) : +m_p +( ){ + +569 if +m_p + ) + +570 +m_p +-> +addRef +(); + +572 +P +P cڡ& +h + ) : +m_p +( other.m_p ){ + +573 if +m_p + ) + +574 +m_p +-> +addRef +(); + +576 ~ +P +(){ + +577 if + gm_p + ) + +578 + gm_p +-> +a +(); + +580  +t +() { + +581 if + gm_p + ) + +582 + gm_p +-> +a +(); + +583 + gm_p + = +CATCH_NULL +; + +585 + gP +& + gݔ + = ( +T +* +p + ){ + +586 +P + +mp + +p + ); + +587 +sw + +mp + ); + +588  * + gthis +; + +590 + gP +& + gݔ + = ( +P + cڡ& +h + ){ + +591 +P + +mp + +h + ); + +592 +sw + +mp + ); + +593  * + gthis +; + +595  +sw + +P +& +h + ) { + gd +::sw +m_p +, other.m_p ); } + +596 +T +* +g +(cڡ{  + gm_p +; } + +597 + gT +& + gݔ +*(cڡ {  * + gm_p +; } + +598 +T +* + gݔ +->(cڡ {  + gm_p +; } + +599 +bo + + gݔ + !(cڡ {  + gm_p + = +CATCH_NULL +; } + +600 +ݔ + + gSaBo +:: +ty +(cڡ {  +SaBo +:: +makeSa + +m_p + ! +CATCH_NULL + ); } + +602 + give +: + +603 +T +* +m_p +; + +606  + gIShed + : +NCyab + { + +607 +vtu + ~ +IShed +(); + +608 +vtu +  +addRef +() const = 0; + +609 +vtu +  +a +() const = 0; + +612 + gme +< +tyme + + gT + = +IShed +> + +613  +ShedIm + : +T + { + +615 +ShedIm +(: +m_rc +( 0 ){} + +617 +vtu +  +addRef +() const { + +618 ++ +m_rc +; + +620 +vtu +  +a +() const { + +621 if-- + gm_rc + == 0 ) + +622 +de + +this +; + +625 +mub +  + gm_rc +; + +630 #ifde +__g__ + + +631 #agm +g + +dgnoic + +p + + +634 +mea + + gCch + { + +636 +ass + + gTeCa +; + +637 +ass + + gSm +; + +638  + gIResuCtu +; + +639  + gIRu” +; + +640  + gIGsFTe +; + +641  + gICfig +; + +643  + sICڋxt + + +645 + gvtu + ~ +ICڋxt +(); + +647 +vtu + +IResuCtu +* +gResuCtu +() = 0; + +648 +vtu + +IRu” +* +gRu” +() = 0; + +649 +vtu + +size_t + +gGIndex + +d +:: +rg + cڡ& +feInfo +, size_ +tٮSize + ) = 0; + +650 +vtu + +bo + +advGsFCutTe +() = 0; + +651 +vtu + + gP +< +ICfig + cڡ> +gCfig +() const = 0; + +654  + gIMubCڋxt + : +ICڋxt + + +656 +vtu + ~ +IMubCڋxt +(); + +657 +vtu +  +tResuCtu + +IResuCtu +* +suCtu + ) = 0; + +658 +vtu +  +tRu” + +IRu” +* +ru” + ) = 0; + +659 +vtu +  +tCfig + +P +< +ICfig + cڡ> cڡ& +cfig + ) = 0; + +662 + gICڋxt +& +gCutCڋxt +(); + +663 + gIMubCڋxt +& +gCutMubCڋxt +(); + +664  +nUpCڋxt +(); + +665 +Sm + +Sm + +d +:: +rg + cڡ& +amName + ); + +670  + #TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED + + + ) + +673  + #TWOBLUECUBES_CATCH_INTERFACES_TESTCASE_H_INCLUDED + + + ) + +675  + ~ + +677 +mea + + gCch + { + +679 +ass + + gTeSc +; + +681  + gITeCa + : +IShed + { + +682 +vtu +  +voke + () const = 0; + +683 + geed +: + +684 +vtu + ~ +ITeCa +(); + +687 +ass + + gTeCa +; + +688  + gICfig +; + +690  + sITeCaRegiry + { + +691 + gvtu + ~ +ITeCaRegiry +(); + +692 +vtu + + gd +:: +ve +< +TeCa +> cڡ& +gATes +() const = 0; + +693 +vtu + + gd +:: +ve +< +TeCa +> cڡ& +gATesS܋d + +ICfig + cڡ& +cfig + ) const = 0; + +696 +bo + +mchTe + +TeCa + cڡ& +Ca +, +TeSc + cڡ& +Sc +, +ICfig + cڡ& +cfig + ); + +697 + gd +:: +ve +< +TeCa +> +frTes + +d +::ve cڡ& +Cas +, +TeSc + cڡ& +Sc +, +ICfig + cڡ& +cfig + ); + +698 + gd +:: +ve +< +TeCa +> cڡ& +gATeCasS܋d + +ICfig + cڡ& +cfig + ); + +702 +mea + + gCch + { + +704 + gme +< +tyme + + gC +> + +705 +ass + + gMhodTeCa + : +public + +ShedIm +< +ITeCa +> { + +707 +public +: + +708 +MhodTeCa +( +C +::* +mhod +)(: +m_mhod +( method ) {} + +710 +vtu +  +voke +() const { + +711 +C + +obj +; + +712 ( + gobj +.* + gm_mhod +)(); + +715 + give +: + +716 +vtu + ~ +MhodTeCa +() {} + +718 ( +C +::* +m_mhod +)(); + +721 (* + gTeFuni +)(); + +723  + sNameAndDesc + { + +724 +NameAndDesc +cڡ * +_me + = "", cڡ * +_desti += "" ) + +725 : +me + +_me + ), +desti + +_desti + ) + +728 cڡ * + gme +; + +729 cڡ * + gdesti +; + +732  + ggiTeCa + + +733 +ITeCa +* + gCa +, + +734 cڡ* + gassName +, + +735 +NameAndDesc + cڡ& + gmeAndDesc +, + +736 +SourLeInfo + cڡ& + gleInfo + ); + +738  + sAutoReg + { + +740 + gAutoReg + + +741 +TeFuni + + gfuni +, + +742 +SourLeInfo + cڡ& + gleInfo +, + +743 +NameAndDesc + cڡ& + gmeAndDesc + ); + +745 + gme +< +tyme + + gC +> + +746 + gAutoReg + + +747 ( + gC +::* +mhod +)(), + +748 cڡ* + gassName +, + +749 +NameAndDesc + cڡ& + gmeAndDesc +, + +750 +SourLeInfo + cڡ& + gleInfo + ) { + +752 + ggiTeCa + + +753 +w + + gMhodTeCa +< + gC +> + gmhod + ), + +754 + gassName +, + +755 + gmeAndDesc +, + +756 + gleInfo + ); + +759 ~ +AutoReg +(); + +761 + give +: + +762 +AutoReg +( AutoReg const& ); + +763  + gݔ + +AutoReg + const& ); + +766  + ggiTeCaFuni + + +767 +TeFuni + + gfuni +, + +768 +SourLeInfo + cڡ& + gleInfo +, + +769 +NameAndDesc + cڡ& + gmeAndDesc + ); + +773 #ifde +CATCH_CONFIG_VARIADIC_MACROS + + +775  + #INTERNAL_CATCH_TESTCASE2 + +TeName +, ... ) \ + +776  + `TeName +(); \ + +777 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +778 +mea +{ +Cch +:: +AutoReg + + `INTERNAL_CATCH_UNIQUE_NAME + +autoRegir + )& +TeName +, +CATCH_INTERNAL_LINEINFO +, Cch:: + `NameAndDesc + +__VA_ARGS__ + ) ); } \ + +779 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + \ + +780  + `TeName +() + + ) + +781  + #INTERNAL_CATCH_TESTCASE +( ... ) \ + +782 + `INTERNAL_CATCH_TESTCASE2 + + `INTERNAL_CATCH_UNIQUE_NAME + +____C_A_T_C_H____T_E_S_T____ + ), +__VA_ARGS__ + ) + + ) + +785  + #INTERNAL_CATCH_METHOD_AS_TEST_CASE + +QuifdMhod +, ... ) \ + +786 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +787 +mea +{ +Cch +:: +AutoReg + + `INTERNAL_CATCH_UNIQUE_NAME + +autoRegir + )& +QuifdMhod +, "&" #QuifdMhod, Cch:: + `NameAndDesc + +__VA_ARGS__ + ), +CATCH_INTERNAL_LINEINFO + ); } \ + +788 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + + ) + +791  + #INTERNAL_CATCH_TEST_CASE_METHOD2 + +TeName +, +CssName +, ... )\ + +792 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +793 +mea +{ \ + +794  +TeName + : +CssName +{ \ + +795  + ` +(); \ + +797 +Cch +:: +AutoReg + + `INTERNAL_CATCH_UNIQUE_NAME + +autoRegir + ) ( & +TeName +:: + +, #CssName, Cch:: + `NameAndDesc + +__VA_ARGS__ + ), +CATCH_INTERNAL_LINEINFO + ); \ + +799 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + \ + +800  +TeName +:: + ` +() + + ) + +801  + #INTERNAL_CATCH_TEST_CASE_METHOD + +CssName +, ... ) \ + +802 + `INTERNAL_CATCH_TEST_CASE_METHOD2 + + `INTERNAL_CATCH_UNIQUE_NAME + +____C_A_T_C_H____T_E_S_T____ + ), +CssName +, +__VA_ARGS__ + ) + + ) + +805  + #INTERNAL_CATCH_REGISTER_TESTCASE + +Funi +, ... ) \ + +806 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +807 +Cch +:: + `AutoReg + +Funi +, +CATCH_INTERNAL_LINEINFO +, Cch:: + `NameAndDesc + +__VA_ARGS__ + ) ); \ + +808 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + + ) + +812  + #INTERNAL_CATCH_TESTCASE2 + +TeName +, +Name +, +Desc + ) \ + +813  + `TeName +(); \ + +814 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +815 +mea +{ +Cch +:: +AutoReg + + `INTERNAL_CATCH_UNIQUE_NAME + +autoRegir + )& +TeName +, +CATCH_INTERNAL_LINEINFO +, Cch:: + `NameAndDesc + +Name +, +Desc + ) ); } \ + +816 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + \ + +817  + `TeName +() + + ) + +818  + #INTERNAL_CATCH_TESTCASE + +Name +, +Desc + ) \ + +819 + `INTERNAL_CATCH_TESTCASE2 + + `INTERNAL_CATCH_UNIQUE_NAME + +____C_A_T_C_H____T_E_S_T____ + ), +Name +, +Desc + ) + + ) + +822  + #INTERNAL_CATCH_METHOD_AS_TEST_CASE + +QuifdMhod +, +Name +, +Desc + ) \ + +823 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +824 +mea +{ +Cch +:: +AutoReg + + `INTERNAL_CATCH_UNIQUE_NAME + +autoRegir + )& +QuifdMhod +, "&" #QuifdMhod, Cch:: + `NameAndDesc + +Name +, +Desc + ), +CATCH_INTERNAL_LINEINFO + ); } \ + +825 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + + ) + +828  + #INTERNAL_CATCH_TEST_CASE_METHOD2 + +TeCaName +, +CssName +, +TeName +, +Desc + )\ + +829 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +830 +mea +{ \ + +831  +TeCaName + : +CssName +{ \ + +832  + ` +(); \ + +834 +Cch +:: +AutoReg + + `INTERNAL_CATCH_UNIQUE_NAME + +autoRegir + ) ( & +TeCaName +:: + +, #CssName, Cch:: + `NameAndDesc + +TeName +, +Desc + ), +CATCH_INTERNAL_LINEINFO + ); \ + +836 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + \ + +837  +TeCaName +:: + ` +() + + ) + +838  + #INTERNAL_CATCH_TEST_CASE_METHOD + +CssName +, +TeName +, +Desc + )\ + +839 + `INTERNAL_CATCH_TEST_CASE_METHOD2 + + `INTERNAL_CATCH_UNIQUE_NAME + +____C_A_T_C_H____T_E_S_T____ + ), +CssName +, +TeName +, +Desc + ) + + ) + +842  + #INTERNAL_CATCH_REGISTER_TESTCASE + +Funi +, +Name +, +Desc + ) \ + +843 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + \ + +844 +Cch +:: + `AutoReg + +Funi +, +CATCH_INTERNAL_LINEINFO +, Cch:: + `NameAndDesc + +Name +, +Desc + ) ); \ + +845 +CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + + ) + +850  + #TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED + + + ) + +853  + #TWOBLUECUBES_CATCH_RESULT_BUILDER_H_INCLUDED + + + ) + +856  + #TWOBLUECUBES_CATCH_RESULT_TYPE_H_INCLUDED + + + ) + +858 +mea + + gCch + { + +861  + sResuWas + { + eOfTy + { + +862 + gUnknown + = -1, + +863 + gOk + = 0, + +864 + gInfo + = 1, + +865 + gWng + = 2, + +867 + gFauB + = 0x10, + +869 + gExessiFaed + = +FauB + | 1, + +870 + gExicFau + = +FauB + | 2, + +872 + gExi + = 0x100 | +FauB +, + +874 + gThwExi + = +Exi + | 1, + +875 + gDidThrowExi + = +Exi + | 2, + +877 + gFECdi + = 0x200 | +FauB + + +881 +le + +bo + +isOk + +ResuWas +:: +OfTy + +suTy + ) { + +882  ( +suTy + & +ResuWas +:: +FauB + ) == 0; + +884 +le + +bo + +isJuInfo + +ags + ) { + +885  + gags + = +ResuWas +:: +Info +; + +889  + sResuDiosi + { + eFgs + { + +890 + gNm + = 0x01, + +892 + gCtueOnFau + = 0x02, + +893 + gFTe + = 0x04, + +894 + gSussFa + = 0x08 + +897 +le + + gResuDiosi +:: +Fgs + +ݔ + | ( +ResuDiosi +::Fg +lhs +, ResuDiosi::Fg +rhs + ) { + +898  +ic_ +< +ResuDiosi +:: +Fgs +>Сic_<> +lhs + ) | stic_<> +rhs + ) ); + +901 +le + +bo + +shouldCtueOnFau + +ags + ) {  ( + gags + & + gResuDiosi +:: +CtueOnFau + ) != 0; } + +902 +le + +bo + +isFTe + +ags + ) {  ( + gags + & + gResuDiosi +:: +FTe + ) != 0; } + +903 +le + +bo + +shouldSussFau + +ags + ) {  ( + gags + & + gResuDiosi +:: +SussFa + ) != 0; } + +908  + #TWOBLUECUBES_CATCH_ASSERTIONRESULT_H_INCLUDED + + + ) + +910  + ~ + +912 +mea + + gCch + { + +914  + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +; + +916  + sDecompodExessi + + +918 + gvtu + ~ +DecompodExessi +() {} + +919 +vtu + +bo + +isByExessi +() const { + +920  + gl +; + +922 +vtu +  +cڡruExessi + +d +:: +rg +& +de + ) const = 0; + +926 + gme +< +tyme + + gT +> + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +& + gݔ + + ( +T + const& ); + +927 + gme +< +tyme + + gT +> + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +& + gݔ + - ( +T + const& ); + +928 + gme +< +tyme + + gT +> + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +& + gݔ + * ( +T + const& ); + +929 + gme +< +tyme + + gT +> + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +& + gݔ + / ( +T + const& ); + +930 + gme +< +tyme + + gT +> + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +& + gݔ + % ( +T + const& ); + +931 + gme +< +tyme + + gT +> + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +& + gݔ + && ( +T + const& ); + +932 + gme +< +tyme + + gT +> + gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris +& + gݔ + || ( +T + const& ); + +934 + give +: + +935 +DecompodExessi +& +ݔ + = (DecomposedExpression const&); + +938  + sAsiInfo + + +940 +AsiInfo +(); + +941 +AsiInfo +cڡ * +_maoName +, + +942 +SourLeInfo + cڡ& +_leInfo +, + +943 cڡ * +_udExessi +, + +944 +ResuDiosi +:: +Fgs + +_suDiosi +, + +945 cڡ * +_cdArg + = ""); + +947 cڡ * + gmaoName +; + +948 +SourLeInfo + + gleInfo +; + +949 cڡ * + gudExessi +; + +950 + gResuDiosi +:: +Fgs + +suDiosi +; + +951 cڡ * + gcdArg +; + +954  + sAsiResuDa + + +956 +AsiResuDa +(: +decompodExessi + +CATCH_NULL + ) + +957 , +suTy + +ResuWas +:: +Unknown + ) + +958 , +ged + +l + ) + +959 , +hesized + +l + ) {} + +961  +ge + +bo + +hesize + ) { + +962 + gged + = ! +ged +; + +963 + ghesized + = +hesize +; + +964 if + gsuTy + = +ResuWas +:: +Ok + ) + +965 +suTy + = +ResuWas +:: +ExessiFaed +; + +966 if + gsuTy + = +ResuWas +:: +ExessiFaed + ) + +967 +suTy + = +ResuWas +:: +Ok +; + +970 + gd +:: +rg + cڡ& +cڡruExessi +() const { + +971 if +decompodExessi + ! +CATCH_NULL + ) { + +972 +decompodExessi +-> +cڡruExessi + +cڡruedExessi + ); + +973 if + ghesized + ) { + +974 + gcڡruedExessi +. + +( 0, 1, '(' ); + +975 + gcڡruedExessi +. +nd +( 1, ')' ); + +977 if + gged + ) { + +978 + gcڡruedExessi +. + +( 0, 1, '!' ); + +980 + gdecompodExessi + = +CATCH_NULL +; + +982  + gcڡruedExessi +; + +985 +mub + +DecompodExessi + cڡ* + gdecompodExessi +; + +986 +mub + + gd +:: +rg + +cڡruedExessi +; + +987 + gd +:: +rg + +mesge +; + +988 + gResuWas +:: +OfTy + +suTy +; + +989 +bo + + gged +; + +990 +bo + + ghesized +; + +993 as + cAsiResu + { + +994 + gpublic +: + +995 +AsiResu +(); + +996 +AsiResu + +AsiInfo + cڡ& +fo +, +AsiResuDa + cڡ& +da + ); + +997 ~ +AsiResu +(); + +998 #ifde +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +999 +AsiResu +( AssertionResult const& ) = ; + +1000 +AsiResu +( AssertionResult && ) = ; + +1001 + gAsiResu +& + gݔ + = ( +AsiResu + const& ) = ; + +1002 + gAsiResu +& + gݔ + = ( +AsiResu + && ) = ; + +1005 +bo + +isOk +() const; + +1006 +bo + +suceded +() const; + +1007 + gResuWas +:: +OfTy + +gResuTy +() const; + +1008 +bo + +hasExessi +() const; + +1009 +bo + +hasMesge +() const; + +1010 + gd +:: +rg + +gExessi +() const; + +1011 + gd +:: +rg + +gExessiInMao +() const; + +1012 +bo + +hasExndedExessi +() const; + +1013 + gd +:: +rg + +gExndedExessi +() const; + +1014 + gd +:: +rg + +gMesge +() const; + +1015 +SourLeInfo + +gSourInfo +() const; + +1016 + gd +:: +rg + +gTeMaoName +() const; + +1017  +disrdDecompodExessi +() const; + +1018  +exndDecompodExessi +() const; + +1020 + geed +: + +1021 +AsiInfo + +m_fo +; + +1022 +AsiResuDa + + gm_suDa +; + +1028  + #TWOBLUECUBES_CATCH_MATCHERS_HPP_INCLUDED + + + ) + +1030 +mea + + gCch + { + +1031 +mea + + gMchs + { + +1032 +mea + + gIm + { + +1034 + gme +< +tyme + + gArgT +>  + gMchAOf +; + +1035 + gme +< +tyme + + gArgT +>  + gMchAnyOf +; + +1036 + gme +< +tyme + + gArgT +>  + gMchNOf +; + +1038 as + cMchUydBa + { + +1039 + gpublic +: + +1040 +d +:: +rg + +toSg +() const { + +1041 if +m_chedToSg +. +emy +() ) + +1042 +m_chedToSg + = +desibe +(); + +1043  + gm_chedToSg +; + +1046 + geed +: + +1047 +vtu + ~ +MchUydBa +(); + +1048 +vtu + + gd +:: +rg + +desibe +() const = 0; + +1049 +mub + + gd +:: +rg + +m_chedToSg +; + +1050 + give +: + +1051 +MchUydBa +& +ݔ + = ( MatcherUntypedBase const& ); + +1054 + gme +< +tyme + + gObjeT +> + +1055  + sMchMhod + { + +1056 +vtu + +bo + +mch + +ObjeT + cڡ& +g + ) const = 0; + +1058 + gme +< +tyme + + gPT +> + +1059  + gMchMhod +< + gPT +*> { + +1060 +vtu + +bo + +mch + +PT +* +g + ) const = 0; + +1063 + gme +< +tyme + + gObjeT +,ym + gComtT + = +ObjeT +> + +1064  +MchBa + : +MchUydBa +, + gMchMhod +< + gObjeT +> { + +1066 + gMchAOf +< + gComtT +> + gݔ + && ( +MchBa + cڡ& + gh + ) const; + +1067 + gMchAnyOf +< + gComtT +> + gݔ + || ( +MchBa + cڡ& + gh + ) const; + +1068 + gMchNOf +< + gComtT +> + gݔ + ! () const; + +1071 + gme +< +tyme + + gArgT +> + +1072  + gMchAOf + : +MchBa +< +ArgT +> { + +1073 +vtu + +bo + +mch + +ArgT + cڡ& +g + ) cڡ +CATCH_OVERRIDE + { + +1074  +d +:: +size_t + +i + = 0; + gi + < + gm_mchs +. +size +(); ++i ) { + +1075 i(! + gm_mchs +[ +i +]-> +mch +( +g +)) + +1076  + gl +; + +1078  + gue +; + +1080 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +1081 +d +:: +rg + +desti +; + +1082 + gdesti +. +rve +4 + +m_mchs +. +size +()*32 ); + +1083 + gdesti + += "( "; + +1084  + gd +:: +size_t + +i + = 0; + gi + < + gm_mchs +. +size +(); ++i ) { + +1085 if + gi + != 0 ) + +1086 +desti + += "nd "; + +1087 + gdesti + + +m_mchs +[ +i +]-> +toSg +(); + +1089 + gdesti + += " )"; + +1090  + gdesti +; + +1093 + gMchAOf +< + gArgT +>& + gݔ + && ( + gMchBa + cڡ& + gh + ) { + +1094 + gm_mchs +. +push_back +& +h + ); + +1095  * + gthis +; + +1098 + gd +:: +ve +< +MchBa +< +ArgT +> cڡ*> +m_mchs +; + +1100 + gme +< +tyme + + gArgT +> + +1101  + gMchAnyOf + : +MchBa +< +ArgT +> { + +1103 +vtu + +bo + +mch + +ArgT + cڡ& +g + ) cڡ +CATCH_OVERRIDE + { + +1104  +d +:: +size_t + +i + = 0; + gi + < + gm_mchs +. +size +(); ++i ) { + +1105 i( + gm_mchs +[ +i +]-> +mch +( +g +)) + +1106  + gue +; + +1108  + gl +; + +1110 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +1111 +d +:: +rg + +desti +; + +1112 + gdesti +. +rve +4 + +m_mchs +. +size +()*32 ); + +1113 + gdesti + += "( "; + +1114  + gd +:: +size_t + +i + = 0; + gi + < + gm_mchs +. +size +(); ++i ) { + +1115 if + gi + != 0 ) + +1116 +desti + += " or "; + +1117 + gdesti + + +m_mchs +[ +i +]-> +toSg +(); + +1119 + gdesti + += " )"; + +1120  + gdesti +; + +1123 + gMchAnyOf +< + gArgT +>& + gݔ + || ( + gMchBa + cڡ& + gh + ) { + +1124 + gm_mchs +. +push_back +& +h + ); + +1125  * + gthis +; + +1128 + gd +:: +ve +< +MchBa +< +ArgT +> cڡ*> +m_mchs +; + +1131 + gme +< +tyme + + gArgT +> + +1132  + gMchNOf + : +MchBa +< +ArgT +> { + +1134 +MchNOf + +MchBa +< +ArgT +> cڡ& +undlygMch + ) : +m_undlygMch +( underlyingMatcher ) {} + +1136 +vtu + +bo + +mch + +ArgT + cڡ& +g + ) cڡ +CATCH_OVERRIDE + { + +1137  ! +m_undlygMch +. +mch + +g + ); + +1140 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +1141  "n " + +m_undlygMch +. +toSg +(); + +1143 + gMchBa +< + gArgT +> cڡ& + gm_undlygMch +; + +1146 + gme +< +tyme + + gObjeT +,ym + gComtT +> + +1147 + gMchAOf +< + gComtT +> + gMchBa +< + gObjeT +, ComtT>:: +ݔ + && ( +MchBa + cڡ& +h + ) const { + +1148  +MchAOf +< +ComtT +>(&& * +this + && +h +; + +1150 + gme +< +tyme + + gObjeT +,ym + gComtT +> + +1151 + gMchAnyOf +< + gComtT +> + gMchBa +< + gObjeT +, ComtT>:: +ݔ + || ( +MchBa + cڡ& +h + ) const { + +1152  +MchAnyOf +< +ComtT +>(|| * +this + || +h +; + +1154 + gme +< +tyme + + gObjeT +,ym + gComtT +> + +1155 + gMchNOf +< + gComtT +> + gMchBa +< + gObjeT +, ComtT>:: +ݔ + ! () const { + +1156  +MchNOf +< +ComtT +>* +this + ); + +1164 + gme +< +tyme + + gT +> + +1165 + gIm +:: +MchNOf +< +T +> +N + +Im +:: +MchBa + cڡ& +undlygMch + ) { + +1166  +Im +:: +MchNOf +< +T +> +undlygMch + ); + +1168 + gme +< +tyme + + gT +> + +1169 + gIm +:: +MchAOf +< +T +> +AOf + +Im +:: +MchBa + cڡ& +m1 +, Im::MchBa cڡ& +m2 + ) { + +1170  +Im +:: +MchAOf +< +T +>(&& +m1 + && +m2 +; + +1172 + gme +< +tyme + + gT +> + +1173 + gIm +:: +MchAOf +< +T +> +AOf + +Im +:: +MchBa + cڡ& +m1 +, Im::MchBa cڡ& +m2 +, Im::MchBa cڡ& +m3 + ) { + +1174  +Im +:: +MchAOf +< +T +>(&& +m1 + && +m2 + && +m3 +; + +1176 + gme +< +tyme + + gT +> + +1177 + gIm +:: +MchAnyOf +< +T +> +AnyOf + +Im +:: +MchBa + cڡ& +m1 +, Im::MchBa cڡ& +m2 + ) { + +1178  +Im +:: +MchAnyOf +< +T +>(|| +m1 + || +m2 +; + +1180 + gme +< +tyme + + gT +> + +1181 + gIm +:: +MchAnyOf +< +T +> +AnyOf + +Im +:: +MchBa + cڡ& +m1 +, Im::MchBa cڡ& +m2 +, Im::MchBa cڡ& +m3 + ) { + +1182  +Im +:: +MchAnyOf +< +T +>(|| +m1 + || +m2 + || +m3 +; + +1187 +usg + +mea + + gMchs +; + +1188 +usg + + gMchs +:: +Im +:: +MchBa +; + +1192 +mea + + gCch + { + +1194  + sTeFauExi +{}; + +1196 + gme +< +tyme + + gT +> +ass + + gExessiLhs +; + +1198  + sCyabSm + { + +1199 +CyabSm +() {} + +1200 +CyabSm +CyabSm cڡ& +h + ) { + +1201 + goss + << + gh +.oss. +r +(); + +1203 + gCyabSm +& + gݔ += +CyabSm + cڡ& +h + ) { + +1204 +oss +. +r +( +d +:: +rg +()); + +1205 + goss + << + gh +.oss. +r +(); + +1206  * + gthis +; + +1208 + gd +:: +orgam + +oss +; + +1211 as + cResuBud + : +public + +DecompodExessi + { + +1212 +public +: + +1213 +ResuBud +cڡ* +maoName +, + +1214 +SourLeInfo + cڡ& +leInfo +, + +1215 cڡ* +udExessi +, + +1216 +ResuDiosi +:: +Fgs + +suDiosi +, + +1217 cڡ* +cdArg + = "" ); + +1218 ~ +ResuBud +(); + +1220 + gme +< +tyme + + gT +> + +1221 + gExessiLhs +< +T + cڡ&> + gݔ + + gݔ + < +bo + +vue + ); + +1224 + gme +< +tyme + + gT +> + +1225 + gResuBud +& + gݔ + << ( +T + cڡ& + gvue + ) { + +1226 +am +(). + goss + << + gvue +; + +1227  * + gthis +; + +1230 + gResuBud +& +tResuTy + +ResuWas +:: +OfTy + +su + ); + +1231 + gResuBud +& +tResuTy + +bo + +su + ); + +1233  +dExessi + +DecompodExessi + cڡ& +ex + ); + +1235 +vtu +  +cڡruExessi + +d +:: +rg +& +de + ) cڡ +CATCH_OVERRIDE +; + +1237 +AsiResu + +bud +() const; + +1238 +AsiResu + +bud + +DecompodExessi + cڡ& +ex + ) const; + +1240  +uAiveExi + +ResuDiosi +:: +Fgs + +suDiosi + = ResuDiosi:: +Nm + ); + +1241  +uResu + +ResuWas +:: +OfTy + +suTy + ); + +1242  +uExessi +(); + +1243  +uExedExi + +d +:: +rg + cڡ& +exedMesge + ); + +1244  +uExedExi + +Mchs +:: +Im +:: +MchBa +< +d +:: +rg +> cڡ& +mch + ); + +1245  +hdResu + +AsiResu + cڡ& +su + ); + +1246  +a +(); + +1247 +bo + +shouldDebugBak +() const; + +1248 +bo + +lowThrows +() const; + +1250 + gme +< +tyme + + gArgT +,ym + gMchT +> + +1251  +uMch + +ArgT + cڡ& +g +, +MchT + cڡ& +mch +, cڡ* +mchSg + ); + +1253  +tExiGud +(); + +1254  +untExiGud +(); + +1256 + give +: + +1257 +AsiInfo + +m_asiInfo +; + +1258 +AsiResuDa + + gm_da +; + +1260 + gCyabSm + & +am +() + +1262 if(! + gm_udSm +) + +1264 + gm_udSm + = +ue +; + +1265 +m_am +(). + goss +. +r +(""); + +1267  +m_am +(); + +1270  + gCyabSm + & +m_am +() + +1272  +CyabSm + + gs +; + +1273  + gs +; + +1276 +bo + + gm_shouldDebugBak +; + +1277 +bo + + gm_shouldThrow +; + +1278 +bo + + gm_gudExi +; + +1279 +bo + + gm_udSm +; + +1286  + #TWOBLUECUBES_CATCH_EXPRESSION_LHS_HPP_INCLUDED + + + ) + +1289  + #TWOBLUECUBES_CATCH_EVALUATE_HPP_INCLUDED + + + ) + +1291 #ifde +_MSC_VER + + +1292 #agm +wng +( +push +) + +1293 #agm +wng +( +dib +:4389) + +1294 #agm +wng +( +dib +:4312) + +1297  + ~ + +1299 +mea + + gCch + { + +1300 +mea + + gIl + { + +1302 + eOt + { + +1303 + gIsEquTo +, + +1304 + gIsNEquTo +, + +1305 + gIsLessTh +, + +1306 + gIsGTh +, + +1307 + gIsLessThOrEquTo +, + +1308 + gIsGThOrEquTo + + +1311 + gme +< +Ot + + gOp +>  + sOtTs + { cڡ * +gName +(){  "*error*"; } }; + +1312 + gme +<>  + gOtTs +< + gIsEquTo +> { cڡ * +gName +(){  "=="; } }; + +1313 + gme +<>  + gOtTs +< + gIsNEquTo +> { cڡ * +gName +(){  "!="; } }; + +1314 + gme +<>  + gOtTs +< + gIsLessTh +> { cڡ * +gName +(){  "<"; } }; + +1315 + gme +<>  + gOtTs +< + gIsGTh +> { cڡ * +gName +(){  ">"; } }; + +1316 + gme +<>  + gOtTs +< + gIsLessThOrEquTo +> { cڡ * +gName +(){  "<="; } }; + +1317 + gme +<>  + gOtTs +< + gIsGThOrEquTo +>{ cڡ * +gName +(){  ">="; } }; + +1319 + gme +< +tyme + + gT +> + +1320 + gT +& +Ca +( +T + cڡ& +t +{  + gcڡ_ +( + gt +); } + +1323 #ifde +CATCH_CONFIG_CPP11_NULLPTR + + +1324 +le + + gd +:: +nuαr_t + +Ca +( +d +::nuαr_t{  +nuαr +; } + +1329 + gme +< +tyme + + gT1 +,ym + gT2 +, +Ot + + gOp +> + +1330  + sEvu +{}; + +1332 + gme +< +tyme + + gT1 +,ym + gT2 +> + +1333  + gEvu +< + gT1 +, + gT2 +, + gIsEquTo +> { + +1334  +bo + +evue + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs +) { + +1335  +bo + +Ca + +lhs + ) =Ca +rhs + ) ); + +1338 + gme +< +tyme + + gT1 +,ym + gT2 +> + +1339  + gEvu +< + gT1 +, + gT2 +, + gIsNEquTo +> { + +1340  +bo + +evue + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs + ) { + +1341  +bo + +Ca + +lhs + ) !Ca +rhs + ) ); + +1344 + gme +< +tyme + + gT1 +,ym + gT2 +> + +1345  + gEvu +< + gT1 +, + gT2 +, + gIsLessTh +> { + +1346  +bo + +evue + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs + ) { + +1347  +bo + +Ca + +lhs + ) < opCa +rhs + ) ); + +1350 + gme +< +tyme + + gT1 +,ym + gT2 +> + +1351  + gEvu +< + gT1 +, + gT2 +, + gIsGTh +> { + +1352  +bo + +evue + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs + ) { + +1353  +bo + +Ca + +lhs + ) > opCa +rhs + ) ); + +1356 + gme +< +tyme + + gT1 +,ym + gT2 +> + +1357  + gEvu +< + gT1 +, + gT2 +, + gIsGThOrEquTo +> { + +1358  +bo + +evue + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs + ) { + +1359  +bo + +Ca + +lhs + ) >Ca +rhs + ) ); + +1362 + gme +< +tyme + + gT1 +,ym + gT2 +> + +1363  + gEvu +< + gT1 +, + gT2 +, + gIsLessThOrEquTo +> { + +1364  +bo + +evue + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs + ) { + +1365  +bo + +Ca + +lhs + ) + +1370 +bo + +yEvu + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs + ) { + +1371  + gEvu +< + gT1 +, + gT2 +, + gOp +>:: +evue + +lhs +, +rhs + ); + +1378 + gme +< +Ot + + gOp +, +tyme + + gT1 +,ym + gT2 +> + +1379 +bo + +com + +T1 + cڡ& +lhs +, +T2 + cڡ& +rhs + ) { + +1380  + gEvu +< + gT1 +, + gT2 +, + gOp +>:: +evue + +lhs +, +rhs + ); + +1384 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1385  + gyEvu +< + gOp +> + glhs +, + gic_ +<> + grhs + ) ); + +1387 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1388  + gyEvu +< + gOp +> + glhs +, + gic_ +<> + grhs + ) ); + +1390 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1391  + gyEvu +< + gOp +> + glhs +, + gic_ +<> + grhs + ) ); + +1395 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1396  + gyEvu +< + gOp +> + glhs +, + gic_ +<> + grhs + ) ); + +1398 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1399  + gyEvu +< + gOp +> + glhs +, + gic_ +<> + grhs + ) ); + +1401 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1402  + gyEvu +< + gOp +> + glhs +, + gic_ +<> + grhs + ) ); + +1406 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1407  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1409 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1410  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1412 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1413  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1417 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1418  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1420 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1421  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1423 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1424  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1428 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +lhs +, +T +* +rhs + ) { + +1429  + gEvu +< + gT +*, T*, + gOp +>:: +evue + +t_ +< +T +*> +lhs + ), +rhs + ); + +1431 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +T +* +lhs +,  +rhs + ) { + +1432  + gEvu +< + gT +*, T*, + gOp +>:: +evue + +lhs +, +t_ +< +T +*> +rhs + ) ); + +1436 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +lhs +, +T +* +rhs + ) { + +1437  + gEvu +< + gT +*, T*, + gOp +>:: +evue + +t_ +< +T +*> +lhs + ), +rhs + ); + +1439 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +T +* +lhs +,  +rhs + ) { + +1440  + gEvu +< + gT +*, T*, + gOp +>:: +evue + +lhs +, +t_ +< +T +*> +rhs + ) ); + +1443 #ifde +CATCH_CONFIG_CPP11_LONG_LONG + + +1445 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1446  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1448 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1449  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1451 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1452  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1454 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1455  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1459 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1460  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1462 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1463  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1465 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1466  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1468 + gme +< +Ot + + gOp +> +bo + +com + +lhs +,  +rhs + ) { + +1469  + gyEvu +< + gOp +> + gic_ +<> + glhs + ), + grhs + ); + +1473 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +lhs +, +T +* +rhs + ) { + +1474  + gEvu +< + gT +*, T*, + gOp +>:: +evue + +t_ +< +T +*> +lhs + ), +rhs + ); + +1476 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +T +* +lhs +,  +rhs + ) { + +1477  + gEvu +< + gT +*, T*, + gOp +>:: +evue + +lhs +, +t_ +< +T +*> +rhs + ) ); + +1481 #ifde +CATCH_CONFIG_CPP11_NULLPTR + + +1483 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +d +:: +nuαr_t +, +T +* +rhs + ) { + +1484  + gEvu +< + gT +*, T*, + gOp +>:: +evue + +nuαr +, +rhs + ); + +1486 + gme +< +Ot + + gOp +, +tyme + + gT +> +bo + +com + +T +* +lhs +, +d +:: +nuαr_t + ) { + +1487  +Evu +< +T +*, + gT +*, + gOp +>:: +evue + +lhs +, +nuαr + ); + +1494 #ifde +_MSC_VER + + +1495 #agm +wng +( +p +) + +1499  + #TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED + + + ) + +1501  + ~ + +1502  + ~ + +1503  + ~ + +1504  + ~ + +1505  + ~ + +1507 #ifde +__OBJC__ + + +1509  + #TWOBLUECUBES_CATCH_OBJC_ARC_HPP_INCLUDED + + + ) + +1511 #imp܈< +Foundi +/Foundi. +h +> + +1513 #ifde +__has_u + + +1514  + #CATCH_ARC_ENABLED + + `__has_u +( +objc_c +) + + ) + +1516  + #CATCH_ARC_ENABLED + 0 + + ) + +1519  +cSaR + +NSObje +* +obj + ); + +1520 +id + +rfmOiڮSe +id +obj +, +SEL + +l + ); + +1522 #i! +CATCH_ARC_ENABLED + + +1523 +le +  + $cSaR + +NSObje +* +obj + ) { + +1524 [ +obj + +a +]; + +1525 + } +} + +1526 +le + +id + + $rfmOiڮSe + +id + +obj +, +SEL + +l + ) { + +1527 if[ +obj + +dsToSe +: +l +] ) + +1528  [ +obj + +rfmSe +: +l +]; + +1529  +n +; + +1530 + } +} + +1531  + #CATCH_UNSAFE_UNRETAINED + + + ) + +1532  + #CATCH_ARC_STRONG + + + ) + +1534 +le +  + $cSaR + +NSObje +* ){ + } +} + +1535 +le + +id + + $rfmOiڮSe + +id + +obj +, +SEL + +l + ) { + +1536 #ifde +__g__ + + +1537 #agm +g + +dgnoic + +push + + +1538 #agm +g + +dgnoic + +igned + "-Warc-performSelector-leaks" + +1540 if[ +obj + +dsToSe +: +l +] ) + +1541  [ +obj + +rfmSe +: +l +]; + +1542 #ifde +__g__ + + +1543 #agm +g + +dgnoic + +p + + +1545  +n +; + +1546 + } +} + +1547  + #CATCH_UNSAFE_UNRETAINED + +__un_uđaed + + + ) + +1548  + #CATCH_ARC_STRONG + +__rg + + + ) + +1553 #ifde +CATCH_CONFIG_CPP11_TUPLE + + +1554  + ~ + +1557 #ifde +CATCH_CONFIG_CPP11_IS_ENUM + + +1558  + ~ + +1561 +mea + + gCch + { + +1564 + gme +< +tyme + + gT +> + +1565 + gd +:: +rg + +toSg + +T + cڡ& +vue + ); + +1569 + gd +:: +rg + +toSg + +d +::rg cڡ& +vue + ); + +1570 + gd +:: +rg + +toSg + +d +:: +wrg + cڡ& +vue + ); + +1571 + gd +:: +rg + +toSg +cڡ * cڡ +vue + ); + +1572 + gd +:: +rg + +toSg +* cڡ +vue + ); + +1573 + gd +:: +rg + +toSg +cڡ +wch_t +* cڡ +vue + ); + +1574 + gd +:: +rg + +toSg + +wch_t +* cڡ +vue + ); + +1575 + gd +:: +rg + +toSg + +vue + ); + +1576 + gd +:: +rg + +toSg + +vue + ); + +1577 + gd +:: +rg + +toSg + +vue + ); + +1578 + gd +:: +rg + +toSg +cڡ  +vue + ); + +1579 + gd +:: +rg + +toSg +cڡ  +vue + ); + +1580 + gd +:: +rg + +toSg + +bo + +vue + ); + +1581 + gd +:: +rg + +toSg + +vue + ); + +1582 + gd +:: +rg + +toSg +sigd  +vue + ); + +1583 + gd +:: +rg + +toSg + +vue + ); + +1585 #ifde +CATCH_CONFIG_CPP11_LONG_LONG + + +1586 + gd +:: +rg + +toSg + +vue + ); + +1587 + gd +:: +rg + +toSg + +vue + ); + +1590 #ifde +CATCH_CONFIG_CPP11_NULLPTR + + +1591 + gd +:: +rg + +toSg + +d +:: +nuαr_t + ); + +1594 #ifde +__OBJC__ + + +1595 + gd +:: +rg + +toSg + +NSSg + cڡ * cڡ& +nsrg + ); + +1596 + gd +:: +rg + +toSg + +NSSg + * +CATCH_ARC_STRONG + & +nsrg + ); + +1597 + gd +:: +rg + +toSg + +NSObje +* cڡ& +nsObje + ); + +1600 +mea + + gDa + { + +1602 cڡ +d +:: +rg + +urbSg +; + +1604 #i! +defed +( +CATCH_CONFIG_CPP11_STREAM_INSERTABLE_CHECK +) + +1605  + sBgTy + { + +1606 + gme +< +tyme + + gT +> +BgTy + +T + const& ); + +1609  + sTrueTy + {  + gsiz +[1]; }; + +1610  + sFTy + {  + gsiz +[2]; }; + +1612 + gTrueTy +& +Smab + +d +:: +oam +& ); + +1613 +FTy + +Smab +( FalseType ); + +1615 +FTy + + gݔ +<< + gd +:: +oam + cڡ&, +BgTy + const& ); + +1617 + gme +< +tyme + + gT +> + +1618  + sIsSmInab + { + +1619  + gd +:: +oam + & +s +; + +1620  +T + cڡ& + gt +; + +1621 um { + gvue + =  +Smab +( +s + << +t += +TrueTy + ) }; + +1624 + gme +< +tyme + + gT +> + +1625 as + cIsSmInab + { + +1626 + gme +< +tyme + + gSS +,ym + gTT +> + +1627 aut + +() + +1628 -> +dety + +d +:: +dev +< +SS +&>(<< std::dev< +TT +>(), std:: +ue_ty +() ); + +1630 + gme +< + gtyme +,ypename> + +1631 aut + +(...-> + gd +:: +l_ty +; + +1633 + gpublic +: + +1634 cڡ +bo + +vue + = +dety +( + +< +d +:: +oam +,cڡ +T +&>(0))::value; + +1638 #i +defed +( +CATCH_CONFIG_CPP11_IS_ENUM +) + +1639 + gme +< +tyme + + gT +, + +1640 +bo + + gIsEnum + = +d +:: +is_um +< +T +>:: +vue + + +1642  + sEnumSgMak + + +1644  +d +:: +rg + +cvt + +T + cڡ& ) {  +urbSg +; } + +1647 + gme +< +tyme + + gT +> + +1648  + gEnumSgMak +< + gT +, + gue +> + +1650  + gd +:: +rg + +cvt + +T + cڡ& +v + ) + +1652  :: +Cch +:: +toSg +( + +1653 +ic_ +< +tyme + +d +:: +undlyg_ty +< +T +>:: +ty +>( +v +) + +1658 + gme +< +bo + + gC +> + +1659  + sSgMakBa + { + +1660 #i +defed +( +CATCH_CONFIG_CPP11_IS_ENUM +) + +1661 + gme +< +tyme + + gT +> + +1662  + gd +:: +rg + +cvt + +T + cڡ& +v + ) + +1664  +EnumSgMak +< +T +>:: +cvt + +v + ); + +1667 + gme +< +tyme + + gT +> + +1668  + gd +:: +rg + +cvt + +T + cڡ& ) {  +urbSg +; } + +1672 + gme +<> + +1673  + gSgMakBa +< + gue +> { + +1674 + gme +< +tyme + + gT +> + +1675  + gd +:: +rg + +cvt + +T + cڡ& +_vue + ) { + +1676 +d +:: +orgam + +oss +; + +1677 + goss + << + g_vue +; + +1678  + goss +. +r +(); + +1682 + gd +:: +rg + +wMemyToSg +cڡ * +obje +, +d +:: +size_t + +size + ); + +1684 + gme +< +tyme + + gT +> + +1685 + gd +:: +rg + +wMemyToSg +cڡ +T +& +obje + ) { + +1686  +wMemyToSg +& +obje +, (object) ); + +1691 + gme +< +tyme + + gT +> + +1692  + gSgMak + : + +1693 +Da +:: +SgMakBa +:: +vue +> {}; + +1695 + gme +< +tyme + + gT +> + +1696  + gSgMak +< + gT +*> { + +1697 + gme +< +tyme + + gU +> + +1698  + gd +:: +rg + +cvt + +U +* +p + ) { + +1699 if! +p + ) + +1702  + gDa +:: +wMemyToSg + +p + ); + +1706 + gme +< +tyme + + gR +,ym + gC +> + +1707  + gSgMak +< +R + + gC +::*> { + +1708  +d +:: +rg + +cvt + +R + +C +::* +p + ) { + +1709 if! +p + ) + +1712  + gDa +:: +wMemyToSg + +p + ); + +1716 +mea + + gDa + { + +1717 + gme +< +tyme + + gIutIt +> + +1718 + gd +:: +rg + +ngeToSg + +IutIt + +f +, IutIt +ϡ + ); + +1728 + gme +< +tyme + + gT +,ym + gAot +> + +1729 + gd +:: +rg + +toSg + +d +:: +ve +< +T +, +Aot +> cڡ& +v + ) { + +1730  + gDa +:: +ngeToSg + +v +. +beg +(), v. +d +() ); + +1733 #ifde +CATCH_CONFIG_CPP11_TUPLE + + +1736 +mea + + gTueDa + { + +1737 + gme +< + +1738 +tyme + + gTue +, + +1739 + gd +:: +size_t + +N + = 0, + +1740 + gbo + = ( +N + < +d +:: +tue_size +< +Tue +>:: +vue +) + +1742  + sEmtPrr + { + +1743  +t +cڡ +Tue +& +tue +, +d +:: +oam +& +os + ) + +1745 +os + << ( +N + ? ", " : " " ) + +1746 << +Cch +:: +toSg +( +d +:: +g +< +N +>( +tue +)); + +1747 + gEmtPrr +< + gTue +, + gN ++1>:: +t +( +tue +, +os +); + +1751 + gme +< + +1752 +tyme + + gTue +, + +1753 + gd +:: +size_t + +N + + +1755  +EmtPrr +< +Tue +, + gN +, + gl +> { + +1756  +t +cڡ +Tue +&, +d +:: +oam +& ) {} + +1761 + gme +< + gtyme + ... + gTys +> + +1762  + gSgMak +< + gd +:: +tue +< +Tys +...>> { + +1764  +d +:: +rg + +cvt +cڡ std:: +tue +< +Tys +...>&uple ) + +1766 +d +:: +orgam + +os +; + +1767 + gos + << '{'; + +1768 + gTueDa +:: +EmtPrr +< +d +:: +tue +< +Tys +...>>:: +t +tue, +os + ); + +1769 + gos + << " }"; + +1770  + gos +. +r +(); + +1775 +mea + + gDa + { + +1776 + gme +< +tyme + + gT +> + +1777 + gd +:: +rg + +makeSg + +T + cڡ& +vue + ) { + +1778  +SgMak +< +T +>:: +cvt + +vue + ); + +1789 + gme +< +tyme + + gT +> + +1790 + gd +:: +rg + + $toSg + +T + cڡ& +vue + ) { + +1791  +SgMak +< +T +>:: + `cvt + +vue + ); + +1792 + } +} + +1794 +mea + + gDa + { + +1795 + gme +< +tyme + + gIutIt +> + +1796 + gd +:: +rg + +ngeToSg + +IutIt + +f +, IutIt +ϡ + ) { + +1797 + gd +:: +orgam + +oss +; + +1798 + goss + << "{ "; + +1799 if + gf + ! +ϡ + ) { + +1800 +oss + << +Cch +:: +toSg +* +f + ); + +1801  ++ + gf + ; f ! +ϡ + ; ++first ) + +1802 + goss + << ", " << + gCch +:: +toSg +* +f + ); + +1804 + goss + << " }"; + +1805  + goss +. +r +(); + +1811 +mea + + gCch + { + +1813 + gme +< +tyme + + gLhsT +, + gIl +:: +Ot + +Op +,ym + gRhsT +> + +1814 +ass + + gByExessi +; + +1816 + gme +< +tyme + + gArgT +,ym + gMchT +> + +1817 +ass + + gMchExessi +; + +1821 + gme +< +tyme + + gT +> + +1822 as + cExessiLhs + : +public + +DecompodExessi + { + +1823 +public +: + +1824 +ExessiLhs + +ResuBud +& +rb +, +T + +lhs + ) : +m_rb +rb ), +m_lhs +lh), +m_uthy +( +l +) {} + +1826 + gExessiLhs +& + gݔ + = ( cڡ +ExessiLhs +& ); + +1828 + gme +< +tyme + + gRhsT +> + +1829 + gByExessi +< + gT +, + gIl +:: +IsEquTo +, +RhsT + const&> + +1830 + gݔ + = +RhsT + cڡ& +rhs + ) { + +1831  +uExessi +< +Il +:: +IsEquTo +> +rhs + ); + +1834 + gme +< +tyme + + gRhsT +> + +1835 + gByExessi +< + gT +, + gIl +:: +IsNEquTo +, +RhsT + const&> + +1836 + gݔ + ! +RhsT + cڡ& +rhs + ) { + +1837  +uExessi +< +Il +:: +IsNEquTo +> +rhs + ); + +1840 + gme +< +tyme + + gRhsT +> + +1841 + gByExessi +< + gT +, + gIl +:: +IsLessTh +, +RhsT + const&> + +1842 + gݔ + < ( +RhsT + cڡ& + grhs + ) { + +1843  + guExessi +< + gIl +:: +IsLessTh +> +rhs + ); + +1846 + gme +< +tyme + + gRhsT +> + +1847 + gByExessi +< + gT +, + gIl +:: +IsGTh +, +RhsT + const&> + +1848 + gݔ + > ( +RhsT + cڡ& + grhs + ) { + +1849  + guExessi +< + gIl +:: +IsGTh +> +rhs + ); + +1852 + gme +< +tyme + + gRhsT +> + +1853 + gByExessi +< + gT +, + gIl +:: +IsLessThOrEquTo +, +RhsT + const&> + +1854 + gݔ + < +RhsT + cڡ& +rhs + ) { + +1855  +uExessi +< +Il +:: +IsLessThOrEquTo +> +rhs + ); + +1858 + gme +< +tyme + + gRhsT +> + +1859 + gByExessi +< + gT +, + gIl +:: +IsGThOrEquTo +, +RhsT + const&> + +1860 + gݔ + > +RhsT + cڡ& +rhs + ) { + +1861  +uExessi +< +Il +:: +IsGThOrEquTo +> +rhs + ); + +1864 + gByExessi +< + gT +, + gIl +:: +IsEquTo +, + gbo +> + gݔ + = +bo + +rhs + ) { + +1865  +uExessi +< +Il +:: +IsEquTo +> +rhs + ); + +1868 + gByExessi +< + gT +, + gIl +:: +IsNEquTo +, + gbo +> + gݔ + ! +bo + +rhs + ) { + +1869  +uExessi +< +Il +:: +IsNEquTo +> +rhs + ); + +1872  +dExessi +() { + +1873 + gm_uthy + = +m_lhs + ? +ue + : +l +; + +1874 + gm_rb + + +1875 . +tResuTy + +m_uthy + ) + +1876 . +dExessi +* +this + ); + +1879 +vtu +  +cڡruExessi + +d +:: +rg +& +de + ) cڡ +CATCH_OVERRIDE + { + +1880 +de + = +Cch +:: +toSg + +m_lhs + ); + +1883 + give +: + +1884 +me +< +Il +:: +Ot + +Op +, +tyme + + gRhsT +> + +1885 + gByExessi +< + gT +, + gOp +, + gRhsT +&> +uExessi + +RhsT +& +rhs + ) const { + +1886  + gByExessi +< + gT +, + gOp +, + gRhsT +&> + gm_rb +, + gm_lhs +, + grhs + ); + +1889 + gme +< + gIl +:: +Ot + +Op +> + +1890 +ByExessi +< +T +, + gOp +, + gbo +> +uExessi + +bo + +rhs + ) const { + +1891  + gByExessi +< + gT +, + gOp +, + gbo +> + gm_rb +, + gm_lhs +, + grhs + ); + +1894 + give +: + +1895 +ResuBud +& +m_rb +; + +1896 +T + + gm_lhs +; + +1897 +bo + + gm_uthy +; + +1900 + gme +< +tyme + + gLhsT +, + gIl +:: +Ot + +Op +,ym + gRhsT +> + +1901 as + cByExessi + : +public + +DecompodExessi + { + +1902 +public +: + +1903 +ByExessi + +ResuBud +& +rb +, +LhsT + +lhs +, +RhsT + +rhs + ) + +1904 : +m_rb + +rb + ), +m_lhs + +lhs + ), +m_rhs + +rhs + ) {} + +1906 + gByExessi +& + gݔ + = ( +ByExessi +& ); + +1908  +dExessi +() const { + +1909 + gm_rb + + +1910 . +tResuTy + +Il +:: +com +< +Op +> +m_lhs +, +m_rhs + ) ) + +1911 . +dExessi +* +this + ); + +1914 +vtu + +bo + +isByExessi +(cڡ + gCATCH_OVERRIDE + { + +1915  + gue +; + +1918 +vtu +  +cڡruExessi + +d +:: +rg +& +de + ) cڡ +CATCH_OVERRIDE + { + +1919 +d +:: +rg + +lhs + = +Cch +:: +toSg + +m_lhs + ); + +1920 + gd +:: +rg + +rhs + = +Cch +:: +toSg + +m_rhs + ); + +1921  + gdim + = +lhs +. +size +(+ +rhs +.size() < 40 && + +1922 +lhs +. +fd +('\n'= +d +:: +rg +:: +os + && + +1923 +rhs +. +fd +('\n'= +d +:: +rg +:: +os + ? ' ' : '\n'; + +1924 + gde +. +rve +7 + +lhs +. +size +(+ +rhs +.size() ); + +1929 + gde + = +lhs +; + +1930 + gde + + +dim +; + +1931 + gde + + +Il +:: +OtTs +< +Op +>:: +gName +(); + +1932 + gde + + +dim +; + +1933 + gde + + +rhs +; + +1936 + give +: + +1937 +ResuBud +& +m_rb +; + +1938 +LhsT + + gm_lhs +; + +1939 +RhsT + + gm_rhs +; + +1942 + gme +< +tyme + + gArgT +,ym + gMchT +> + +1943 as + cMchExessi + : +public + +DecompodExessi + { + +1944 +public +: + +1945 +MchExessi + +ArgT + +g +, +MchT + +mch +, cڡ* +mchSg + ) + +1946 : +m_g + +g + ), +m_mch + +mch + ), +m_mchSg + +mchSg + ) {} + +1948 +vtu + +bo + +isByExessi +(cڡ + gCATCH_OVERRIDE + { + +1949  + gue +; + +1952 +vtu +  +cڡruExessi + +d +:: +rg +& +de + ) cڡ +CATCH_OVERRIDE + { + +1953 +d +:: +rg + +mchAsSg + = +m_mch +. +toSg +(); + +1954 + gde + = +Cch +:: +toSg + +m_g + ); + +1955 + gde + += ' '; + +1956 if + gmchAsSg + = +Da +:: +urbSg + ) + +1957 +de + + +m_mchSg +; + +1959 + gde + + +mchAsSg +; + +1962 + give +: + +1963 +ArgT + +m_g +; + +1964 +MchT + + gm_mch +; + +1965 cڡ* + gm_mchSg +; + +1971 +mea + + gCch + { + +1973 + gme +< +tyme + + gT +> + +1974 + gExessiLhs +< +T + cڡ&> + gResuBud +:: +ݔ + * +this +, +ݔd + ); + +1978 +le + + gExessiLhs +< + gbo +> + gResuBud +:: +ݔ + < +bo + +vue + ) { + +1979  +ExessiLhs +< +bo +>* +this +, +vue + ); + +1982 + gme +< +tyme + + gArgT +,ym + gMchT +> + +1983  + gResuBud +:: +uMch + +ArgT + cڡ& +g +, +MchT + cڡ& +mch +, + +1984 cڡ* +mchSg + ) { + +1985 + gMchExessi +< +ArgT + cڡ&, +MchT + cڡ&> +ex + +g +, +mch +, +mchSg + ); + +1986 +tResuTy + +mch +. +mch + +g + ) ); + +1987 +dExessi + +ex + ); + +1993  + #TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED + + + ) + +1995  + ~ + +1997 +mea + + gCch + { + +1999  + sMesgeInfo + { + +2000 +MesgeInfo + +d +:: +rg + cڡ& +_maoName +, + +2001 +SourLeInfo + cڡ& +_leInfo +, + +2002 +ResuWas +:: +OfTy + +_ty + ); + +2004 + gd +:: +rg + +maoName +; + +2005 +SourLeInfo + + gleInfo +; + +2006 + gResuWas +:: +OfTy + +ty +; + +2007 + gd +:: +rg + +mesge +; + +2008  + gqu +; + +2010 +bo + + gݔ + = +MesgeInfo + cڡ& +h + ) const { + +2011  +qu + = +h +.sequence; + +2013 +bo + + gݔ + < ( +MesgeInfo + cڡ& + gh + ) const { + +2014  + gqu + < + gh +.sequence; + +2016 + give +: + +2017  +globCou +; + +2020  + sMesgeBud + { + +2021 +MesgeBud + +d +:: +rg + cڡ& +maoName +, + +2022 +SourLeInfo + cڡ& +leInfo +, + +2023 +ResuWas +:: +OfTy + +ty + ) + +2024 : +m_fo + +maoName +, +leInfo +, +ty + ) + +2027 + gme +< +tyme + + gT +> + +2028 + gMesgeBud +& + gݔ + << ( +T + cڡ& + gvue + ) { + +2029 + gm_am + << + gvue +; + +2030  * + gthis +; + +2033 +MesgeInfo + + gm_fo +; + +2034 + gd +:: +orgam + +m_am +; + +2037 as + cScedMesge + { + +2038 + gpublic +: + +2039 +ScedMesge + +MesgeBud + cڡ& +bud + ); + +2040 +ScedMesge +ScedMesgcڡ& +h + ); + +2041 ~ +ScedMesge +(); + +2043 +MesgeInfo + + gm_fo +; + +2049  + #TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED + + + ) + +2051  + ~ + +2053 +mea + + gCch + { + +2055 +ass + + gTeCa +; + +2056 +ass + + gAsiResu +; + +2057  + gAsiInfo +; + +2058  + gSeiInfo +; + +2059  + gSeiEndInfo +; + +2060  + gMesgeInfo +; + +2061 +ass + + gScedMesgeBud +; + +2062  + gCous +; + +2064  + sIResuCtu + { + +2066 + gvtu + ~ +IResuCtu +(); + +2068 +vtu +  +asiEnded + +AsiResu + cڡ& +su + ) = 0; + +2069 +vtu + +bo + +iSed + +SeiInfo + cڡ& +iInfo +, + +2070 +Cous +& +asis + ) = 0; + +2071 +vtu +  +iEnded + +SeiEndInfo + cڡ& +dInfo + ) = 0; + +2072 +vtu +  +iEndedEly + +SeiEndInfo + cڡ& +dInfo + ) = 0; + +2073 +vtu +  +pushScedMesge + +MesgeInfo + cڡ& +mesge + ) = 0; + +2074 +vtu +  +pScedMesge + +MesgeInfo + cڡ& +mesge + ) = 0; + +2076 +vtu + + gd +:: +rg + +gCutTeName +() const = 0; + +2077 +vtu + cڡ +AsiResu +* +gLaResu +() const = 0; + +2079 +vtu +  +exiElyR܋d +() = 0; + +2081 +vtu +  +hdFECdi + +d +:: +rg + cڡ& +mesge + ) = 0; + +2083 +vtu + +bo + +ϡAsiPasd +() = 0; + +2084 +vtu +  +asiPasd +() = 0; + +2085 +vtu +  +asiRun +() = 0; + +2088 + gIResuCtu +& +gResuCtu +(); + +2092  + #TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED + + + ) + +2095  + #TWOBLUECUBES_CATCH_PLATFORM_H_INCLUDED + + + ) + +2097 #i +defed +( +__MAC_OS_X_VERSION_MIN_REQUIRED +) + +2098  + #CATCH_PLATFORM_MAC + + + ) + +2099 #i +defed +( +__IPHONE_OS_VERSION_MIN_REQUIRED +) + +2100  + #CATCH_PLATFORM_IPHONE + + + ) + +2101 #i +defed +( +lux +|| defed( +__lux +|| defed( +__lux__ +) + +2102  + #CATCH_PLATFORM_LINUX + + + ) + +2103 #i +defed +( +WIN32 +|| defed( +__WIN32__ +|| defed( +_WIN32 +|| defed( +_MSC_VER +) + +2104  + #CATCH_PLATFORM_WINDOWS + + + ) + +2105 #i! +defed +( +NOMINMAX +&& !defed( +CATCH_CONFIG_NO_NOMINMAX +) + +2106  + #CATCH_DEFINES_NOMINMAX + + + ) + +2108 #i! +defed +( +WIN32_LEAN_AND_MEAN +&& !defed( +CATCH_CONFIG_NO_WIN32_LEAN_AND_MEAN +) + +2109  + #CATCH_DEFINES_WIN32_LEAN_AND_MEAN + + + ) + +2113  + ~ + +2115 +mea + + gCch +{ + +2117 +bo + +isDebuggAive +(); + +2118  +wreToDebugCse + +d +:: +rg + cڡ& +xt + ); + +2121 #ifde +CATCH_PLATFORM_MAC + + +2125 #i +defed +( +__c64__ +|| defed( +__c__ +) + +2126  + #CATCH_TRAP +() \ + +2127 + `__asm__ +("li0, 20\nsc\nnop\nli0, 37\nli4, 2\nsc\nnop\n" \ + +2128 : : : "memy","r0","r3","r4" ) + + ) + +2130  + #CATCH_TRAP +( + `__asm__ +("$3\n" : : ) + + ) + +2133 #i +defed +( +CATCH_PLATFORM_LINUX +) + +2137 #i +defed +( +__GNUC__ +&& (defed( +__i386 +|| defed( +__x86_64 +)) + +2138  + #CATCH_TRAP +( +asm + vީ("$3" + + ) + +2140  + ~ + +2142  + #CATCH_TRAP +( + `i +( +SIGTRAP +) + + ) + +2144 #i +defed +( +_MSC_VER +) + +2145  + #CATCH_TRAP +( + `__debugbak +() + + ) + +2146 #i +defed +( +__MINGW32__ +) + +2147 "C" + $__deec +( +dimpt + +__d + + `DebugBak +(); + +2148  + #CATCH_TRAP +( + `DebugBak +() + + ) + +2151 #ifde +CATCH_TRAP + + +2152  + #CATCH_BREAK_INTO_DEBUGGER +(if +Cch +:: + `isDebuggAive +({ + `CATCH_TRAP +(); + } + + ) +} + +2154  + #CATCH_BREAK_INTO_DEBUGGER +( +Cch +:: + `waysTrue +(); + + ) + +2158  + #TWOBLUECUBES_CATCH_INTERFACES_RUNNER_H_INCLUDED + + + ) + +2160 +mea + + gCch + { + +2161 +ass + + gTeCa +; + +2163  + sIRu” + { + +2164 + gvtu + ~ +IRu” +(); + +2165 +vtu + +bo + +abtg +() const = 0; + +2169 #i +defed +( +CATCH_CONFIG_FAST_COMPILE +) + +2174  + #INTERNAL_CATCH_REACT + +suBud + ) \ + +2175 +suBud +. + `a +(); + + ) + +2182  + #INTERNAL_CATCH_TEST_NO_TRY + +maoName +, +suDiosi +, +ex + ) \ + +2184 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, #ex, +suDiosi + ); \ + +2185 +__tchResu +. + `tExiGud +(); \ + +2186 +CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS + \ + +2187 +__tchResu + < +ex + ). + `dExessi +(); \ + +2188 +CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS + \ + +2189 +__tchResu +. + `untExiGud +(); \ + +2190 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2191 }  +Cch +:: + `isTrue + +l + && +ic_ +< +bo +>!!( +ex +) ) ) ) + +2193 + + ) + +2194  + #INTERNAL_CHECK_THAT_NO_TRY + +maoName +, +mch +, +suDiosi +, +g + ) \ + +2196 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, #g ", " #mch, +suDiosi + ); \ + +2197 +__tchResu +. + `tExiGud +(); \ + +2198 +__tchResu +. + `uMch + +g +, +mch +, #matcher ); \ + +2199 +__tchResu +. + `untExiGud +(); \ + +2200 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2201 }  +Cch +:: + `waysF +() + + ) + +2209  + #INTERNAL_CATCH_REACT + +suBud + ) \ + +2210 if +suBud +. + `shouldDebugBak +( + `CATCH_BREAK_INTO_DEBUGGER +(); \ + +2211 +suBud +. + `a +(); + + ) + +2215  + #INTERNAL_CATCH_TEST + +maoName +, +suDiosi +, +ex + ) \ + +2217 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, #ex, +suDiosi + ); \ + +2218 +y + { \ + +2219 +CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS + \ + +2220 +__tchResu + < +ex + ). + `dExessi +(); \ + +2221 +CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS + \ + +2223 + `tch +( ... ) { \ + +2224 +__tchResu +. + `uAiveExi + +suDiosi + ); \ + +2226 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2227 }  +Cch +:: + `isTrue + +l + && +ic_ +< +bo +>!!( +ex +) ) ) ) + +2229 + + ) + +2231  + #INTERNAL_CATCH_IF + +maoName +, +suDiosi +, +ex + ) \ + +2232 + `INTERNAL_CATCH_TEST + +maoName +, +suDiosi +, +ex + ); \ + +2233 if +Cch +:: + `gResuCtu +(). + `ϡAsiPasd +() + + ) + +2236  + #INTERNAL_CATCH_ELSE + +maoName +, +suDiosi +, +ex + ) \ + +2237 + `INTERNAL_CATCH_TEST + +maoName +, +suDiosi +, +ex + ); \ + +2238 if! +Cch +:: + `gResuCtu +(). + `ϡAsiPasd +() + + ) + +2241  + #INTERNAL_CATCH_NO_THROW + +maoName +, +suDiosi +, +ex + ) \ + +2243 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, #ex, +suDiosi + ); \ + +2244 +y + { \ + +2245 +ic_ +<>( +ex +); \ + +2246 +__tchResu +. + `uResu + +Cch +:: +ResuWas +:: +Ok + ); \ + +2248 + `tch +( ... ) { \ + +2249 +__tchResu +. + `uAiveExi + +suDiosi + ); \ + +2251 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2252 }  +Cch +:: + `waysF +() + + ) + +2255  + #INTERNAL_CATCH_THROWS + +maoName +, +suDiosi +, +mch +, +ex + ) \ + +2257 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, #ex, +suDiosi +, #matcher ); \ + +2258 if +__tchResu +. + `lowThrows +() ) \ + +2259 +y + { \ + +2260 +ic_ +<>( +ex +); \ + +2261 +__tchResu +. + `uResu + +Cch +:: +ResuWas +:: +DidThrowExi + ); \ + +2263 + `tch +( ... ) { \ + +2264 +__tchResu +. + `uExedExi + +mch + ); \ + +2267 +__tchResu +. + `uResu + +Cch +:: +ResuWas +:: +Ok + ); \ + +2268 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2269 }  +Cch +:: + `waysF +() + + ) + +2272  + #INTERNAL_CATCH_THROWS_AS + +maoName +, +exiTy +, +suDiosi +, +ex + ) \ + +2274 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, #ex ", " #exiTy, +suDiosi + ); \ + +2275 if +__tchResu +. + `lowThrows +() ) \ + +2276 +y + { \ + +2277 +ic_ +<>( +ex +); \ + +2278 +__tchResu +. + `uResu + +Cch +:: +ResuWas +:: +DidThrowExi + ); \ + +2280 + `tch + +exiTy + ) { \ + +2281 +__tchResu +. + `uResu + +Cch +:: +ResuWas +:: +Ok + ); \ + +2283 + `tch +( ... ) { \ + +2284 +__tchResu +. + `uAiveExi + +suDiosi + ); \ + +2287 +__tchResu +. + `uResu + +Cch +:: +ResuWas +:: +Ok + ); \ + +2288 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2289 }  +Cch +:: + `waysF +() + + ) + +2292 #ifde +CATCH_CONFIG_VARIADIC_MACROS + + +2293  + #INTERNAL_CATCH_MSG + +maoName +, +mesgeTy +, +suDiosi +, ... ) \ + +2295 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, "", +suDiosi + ); \ + +2296 +__tchResu + << +__VA_ARGS__ + + :: +Cch +:: + `SmEndSt +(); \ + +2297 +__tchResu +. + `uResu + +mesgeTy + ); \ + +2298 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2299 }  +Cch +:: + `waysF +() + + ) + +2301  + #INTERNAL_CATCH_MSG + +maoName +, +mesgeTy +, +suDiosi +, +log + ) \ + +2303 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, "", +suDiosi + ); \ + +2304 +__tchResu + << +log + + :: +Cch +:: + `SmEndSt +(); \ + +2305 +__tchResu +. + `uResu + +mesgeTy + ); \ + +2306 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2307 }  +Cch +:: + `waysF +() + + ) + +2311  + #INTERNAL_CATCH_INFO + +maoName +, +log + ) \ + +2312 +Cch +:: +ScedMesge + + `INTERNAL_CATCH_UNIQUE_NAME + +scedMesge + ) = Cch:: + `MesgeBud + +maoName +, +CATCH_INTERNAL_LINEINFO +, Cch:: +ResuWas +:: +Info + ) << +log +; + + ) + +2315  + #INTERNAL_CHECK_THAT + +maoName +, +mch +, +suDiosi +, +g + ) \ + +2317 +Cch +:: +ResuBud + + `__tchResu + +maoName +, +CATCH_INTERNAL_LINEINFO +, #g ", " #mch, +suDiosi + ); \ + +2318 +y + { \ + +2319 +__tchResu +. + `uMch + +g +, +mch +, #matcher ); \ + +2320 } + `tch +( ... ) { \ + +2321 +__tchResu +. + `uAiveExi + +suDiosi + | +Cch +:: +ResuDiosi +:: +CtueOnFau + ); \ + +2323 + `INTERNAL_CATCH_REACT + +__tchResu + ) \ + +2324 }  +Cch +:: + `waysF +() + + ) + +2327  + #TWOBLUECUBES_CATCH_SECTION_H_INCLUDED + + + ) + +2330  + #TWOBLUECUBES_CATCH_SECTION_INFO_H_INCLUDED + + + ) + +2333  + #TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED + + + ) + +2335  + ~ + +2337 +mea + + gCch + { + +2339  + sCous + { + +2340 +Cous +(: +sd +0 ), +ed +0 ), +edButOk +( 0 ) {} + +2342 +Cous + + gݔ + - ( Coucڡ& + gh + ) const { + +2343 +Cous + + gdiff +; + +2344 + gdiff +. + gsd + = +sd + - +h +.passed; + +2345 + gdiff +. + ged + = +ed + - +h +.failed; + +2346 + gdiff +. + gedButOk + = +edButOk + - +h +.failedButOk; + +2347  + gdiff +; + +2349 + gCous +& + gݔ + + +Cous + cڡ& +h + ) { + +2350 +sd + + +h +.passed; + +2351 + ged + + +h +. +ed +; + +2352 + gedButOk + + +h +. +edButOk +; + +2353  * + gthis +; + +2356 + gd +:: +size_t + +tٮ +() const { + +2357  +sd + + +ed + + +edButOk +; + +2359 +bo + +lPasd +() const { + +2360  + ged + =0 && +edButOk + == 0; + +2362 +bo + +lOk +() const { + +2363  + ged + == 0; + +2366 + gd +:: +size_t + +sd +; + +2367 + gd +:: +size_t + +ed +; + +2368 + gd +:: +size_t + +edButOk +; + +2371  + sTٮs + { + +2373 +Tٮs + + gݔ + - ( Tٮcڡ& + gh + ) const { + +2374 +Tٮs + + gdiff +; + +2375 + gdiff +. + gasis + = +asis + - +h +.assertions; + +2376 + gdiff +. + gCas + = +Cas + - +h +.testCases; + +2377  + gdiff +; + +2380 +Tٮs + +d +Tٮcڡ& +evTٮs + ) const { + +2381 +Tٮs + + gdiff + = * +this + - +evTٮs +; + +2382 if + gdiff +. + gasis +. + ged + > 0 ) + +2383 ++ + gdiff +. + gCas +. + ged +; + +2384 if + gdiff +. + gasis +. + gedButOk + > 0 ) + +2385 ++ + gdiff +. + gCas +. + gedButOk +; + +2387 ++ + gdiff +. + gCas +. + gsd +; + +2388  + gdiff +; + +2391 + gTٮs +& + gݔ + + +Tٮs + cڡ& +h + ) { + +2392 +asis + + +h +.assertions; + +2393 + gCas + + +h +. +Cas +; + +2394  * + gthis +; + +2397 +Cous + + gasis +; + +2398 +Cous + + gCas +; + +2402  + ~ + +2404 +mea + + gCch + { + +2406  + sSeiInfo + { + +2407 + gSeiInfo + + +2408 +SourLeInfo + cڡ& + g_leInfo +, + +2409 + gd +:: +rg + cڡ& +_me +, + +2410 + gd +:: +rg + cڡ& +_desti + = +d +::string() ); + +2412 + gd +:: +rg + +me +; + +2413 + gd +:: +rg + +desti +; + +2414 +SourLeInfo + + gleInfo +; + +2417  + sSeiEndInfo + { + +2418 +SeiEndInfo + +SeiInfo + cڡ& +_iInfo +, +Cous + cڡ& +_evAsis +,  +_dutiInSecds + ) + +2419 : +iInfo + +_iInfo + ), +evAsis + +_evAsis + ), +dutiInSecds + +_dutiInSecds + ) + +2422 +SeiInfo + + giInfo +; + +2423 +Cous + + gevAsis +; + +2424  + gdutiInSecds +; + +2430  + #TWOBLUECUBES_CATCH_TIMER_H_INCLUDED + + + ) + +2432 #ifde +_MSC_VER + + +2434 +mea + + gCch + { + +2435  + tUI64 +; + +2438  + ~ + +2439 +mea + + gCch + { + +2440  +ut64_t + + tUI64 +; + +2444 +mea + + gCch + { + +2445 as + cTim + { + +2446 + gpublic +: + +2447 +Tim +(: +m_ticks +( 0 ) {} + +2448  +t +(); + +2449  +gEpdMiocds +() const; + +2450  +gEpdMlicds +() const; + +2451  +gEpdSecds +() const; + +2453 + give +: + +2454 +UI64 + +m_ticks +; + +2459  + ~ + +2461 +mea + + gCch + { + +2463 as + cSei + : +NCyab + { + +2464 +public +: + +2465 +Sei + +SeiInfo + cڡ& +fo + ); + +2466 ~ +Sei +(); + +2469 +ݔ + +bo +() const; + +2471 + give +: + +2472 +SeiInfo + +m_fo +; + +2474 + gd +:: +rg + +m_me +; + +2475 +Cous + + gm_asis +; + +2476 +bo + + gm_iInuded +; + +2477 +Tim + + gm_tim +; + +2482 #ifde +CATCH_CONFIG_VARIADIC_MACROS + + +2483  + #INTERNAL_CATCH_SECTION +( ... ) \ + +2484 if +Cch +:: +Sei + cڡ& + `INTERNAL_CATCH_UNIQUE_NAME + +tch__Sei + ) = Cch:: + `SeiInfo + +CATCH_INTERNAL_LINEINFO +, +__VA_ARGS__ + ) ) + + ) + +2486  + #INTERNAL_CATCH_SECTION + +me +, +desc + ) \ + +2487 if +Cch +:: +Sei + cڡ& + `INTERNAL_CATCH_UNIQUE_NAME + +tch__Sei + ) = Cch:: + `SeiInfo + +CATCH_INTERNAL_LINEINFO +, +me +, +desc + ) ) + + ) + +2491  + #TWOBLUECUBES_CATCH_GENERATORS_HPP_INCLUDED + + + ) + +2493  + ~ + +2494  + ~ + +2495  + ~ + +2497 +mea + + gCch + { + +2499 + gme +< +tyme + + gT +> + +2500  + sIG + { + +2501 + gvtu + ~ +IG +() {} + +2502 +vtu + +T + +gVue + +d +:: +size_t + +dex + ) const = 0; + +2503 +vtu + + gd +:: +size_t + +size + () const = 0; + +2506 + gme +< +tyme + + gT +> + +2507 +ass + + gBwnG + : +public + +IG +< +T +> { + +2508 +public +: + +2509 +BwnG + +T + +om +, T +to + ) : +m_om +om ), +m_to +(o ){} + +2511 +vtu + +T + +gVue + +d +:: +size_t + +dex + ) const { + +2512  +m_om ++ +ic_ +<> +dex + ); + +2515 +vtu + + gd +:: +size_t + +size +() const { + +2516  +ic_ +< +d +:: +size_t +>1+ +m_to +- +m_om + ); + +2519 + give +: + +2521 +T + +m_om +; + +2522 +T + + gm_to +; + +2525 + gme +< +tyme + + gT +> + +2526 +ass + + gVuesG + : +public + +IG +< +T +> { + +2527 +public +: + +2528 +VuesG +(){} + +2530  +add + +T + +vue + ) { + +2531 +m_vues +. +push_back + +vue + ); + +2534 +vtu + +T + +gVue + +d +:: +size_t + +dex + ) const { + +2535  +m_vues +[ +dex +]; + +2538 +vtu + + gd +:: +size_t + +size +() const { + +2539  +m_vues +. +size +(); + +2542 + give +: + +2543 +d +:: +ve +< +T +> +m_vues +; + +2546 + gme +< +tyme + + gT +> + +2547 as + cComposeG + { + +2548 + gpublic +: + +2549 +ComposeG +(: +m_tٮSize +( 0 ) {} + +2552 +ComposeG +ComposeG& +h + ) + +2553 : +m_feInfo + +h +.m_fileInfo ), + +2554 +m_tٮSize +( 0 ) + +2556 +move + +h + ); + +2559 + gComposeG +& +tFeInfo +cڡ * +feInfo + ) { + +2560 + gm_feInfo + = +feInfo +; + +2561  * + gthis +; + +2564 ~ +ComposeG +() { + +2565 +deA + +m_compod + ); + +2568 +ݔ + +T + () const { + +2569 +size_t + + govlIndex + = +gCutCڋxt +(). +gGIndex + +m_feInfo +, +m_tٮSize + ); + +2571 +tyme + + gd +:: +ve +*>:: +cڡ_ + + + = +m_compod +. +beg +(); + +2572 +tyme + + gd +:: +ve +*>:: +cڡ_ + +End + = +m_compod +. +d +(); + +2573  +size_t + + gdex + = 0; + g + ! +End +; ++it ) + +2575 cڡ + gIG +< + gT +>* + gg + = * + +; + +2576 if + govlIndex + > +dex + && +ovlIndex + < index + +g +-> +size +() ) + +2578  +g +-> +gVue + +ovlIndex +- +dex + ); + +2580 + gdex + + +g +-> +size +(); + +2582 +CATCH_INTERNAL_ERROR +( "Indexedastnd of generatedange" ); + +2583  +T +(); + +2586  +add +cڡ +IG +< +T +>* +g + ) { + +2587 + gm_tٮSize + + +g +-> +size +(); + +2588 + gm_compod +. +push_back + +g + ); + +2591 + gComposeG +& +th + +ComposeG +& +h + ) { + +2592 +move + +h + ); + +2593  * + gthis +; + +2596 + gComposeG +& +th + +T + +vue + ) { + +2597 + gVuesG +< + gT +>* + gvuesG + = +w + +VuesG +< +T +>(); + +2598 + gvuesG +-> +add + +vue + ); + +2599 +add + +vuesG + ); + +2600  * + gthis +; + +2603 + give +: + +2605  +move + +ComposeG +& +h + ) { + +2606 +m_compod +. + +m_compod. +d +(), +h +.m_compod. +beg +(), other.m_composed.end() ); + +2607 + gm_tٮSize + + +h +. +m_tٮSize +; + +2608 + gh +. + gm_compod +. +r +(); + +2611 + gd +:: +ve +*> +m_compod +; + +2612 + gd +:: +rg + +m_feInfo +; + +2613 +size_t + + gm_tٮSize +; + +2616 +mea + + gGs + + +2618 + gme +< +tyme + + gT +> + +2619 + gComposeG +< + gT +> +bwn + +T + +om +, T +to + ) { + +2620 + gComposeG +< + gT +> + ggs +; + +2621 + ggs +. +add + +w + +BwnG +< +T +> +om +, +to + ) ); + +2622  + ggs +; + +2625 + gme +< +tyme + + gT +> + +2626 + gComposeG +< + gT +> +vues + +T + +v1 +, T +v2 + ) { + +2627 + gComposeG +< + gT +> + ggs +; + +2628 + gVuesG +< + gT +>* + gvuesG + = +w + +VuesG +< +T +>(); + +2629 + gvuesG +-> +add + +v1 + ); + +2630 + gvuesG +-> +add + +v2 + ); + +2631 + ggs +. +add + +vuesG + ); + +2632  + ggs +; + +2635 + gme +< +tyme + + gT +> + +2636 + gComposeG +< + gT +> +vues + +T + +v1 +, T +v2 +, T +v3 + ){ + +2637 + gComposeG +< + gT +> + ggs +; + +2638 + gVuesG +< + gT +>* + gvuesG + = +w + +VuesG +< +T +>(); + +2639 + gvuesG +-> +add + +v1 + ); + +2640 + gvuesG +-> +add + +v2 + ); + +2641 + gvuesG +-> +add + +v3 + ); + +2642 + ggs +. +add + +vuesG + ); + +2643  + ggs +; + +2646 + gme +< +tyme + + gT +> + +2647 + gComposeG +< + gT +> +vues + +T + +v1 +, T +v2 +, T +v3 +, T +v4 + ) { + +2648 + gComposeG +< + gT +> + ggs +; + +2649 + gVuesG +< + gT +>* + gvuesG + = +w + +VuesG +< +T +>(); + +2650 + gvuesG +-> +add + +v1 + ); + +2651 + gvuesG +-> +add + +v2 + ); + +2652 + gvuesG +-> +add + +v3 + ); + +2653 + gvuesG +-> +add + +v4 + ); + +2654 + ggs +. +add + +vuesG + ); + +2655  + ggs +; + +2660 +usg + +mea + + gGs +; + +2664  + #INTERNAL_CATCH_LINESTR2 + +le + ) #le + + ) + +2665  + #INTERNAL_CATCH_LINESTR + +le + ) + `INTERNAL_CATCH_LINESTR2 +l) + + ) + +2667  + #INTERNAL_CATCH_GENERATE + +ex + )x. + `tFeInfo + +__FILE__ + "(" + `INTERNAL_CATCH_LINESTR + +__LINE__ + ) ")" ) + + ) + +2670  + #TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED + + + ) + +2672  + ~ + +2673  + ~ + +2676  + #TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED + + + ) + +2678  + ~ + +2680 +mea + + gCch + { + +2682 +ass + + gTeCa +; + +2683  + gITeCaRegiry +; + +2684  + gIExiTnRegiry +; + +2685  + gIExiTn +; + +2686  + gIR܋rRegiry +; + +2687  + gIR܋rFay +; + +2688  + gITagAlsRegiry +; + +2690  + sIRegiryHub + { + +2691 + gvtu + ~ +IRegiryHub +(); + +2693 +vtu + +IR܋rRegiry + cڡ& +gR܋rRegiry +() const = 0; + +2694 +vtu + +ITeCaRegiry + cڡ& +gTeCaRegiry +() const = 0; + +2695 +vtu + +ITagAlsRegiry + cڡ& +gTagAlsRegiry +() const = 0; + +2697 +vtu + + gIExiTnRegiry +& +gExiTnRegiry +() = 0; + +2700  + sIMubRegiryHub + { + +2701 + gvtu + ~ +IMubRegiryHub +(); + +2702 +vtu +  +giR܋r + +d +:: +rg + cڡ& +me +, +P +< +IR܋rFay +> cڡ& +y + ) = 0; + +2703 +vtu +  +giLi + +P +< +IR܋rFay +> cڡ& +y + ) = 0; + +2704 +vtu +  +giTe + +TeCa + cڡ& +Info + ) = 0; + +2705 +vtu +  +giTn +cڡ +IExiTn +* + + ) = 0; + +2706 +vtu +  +giTagAls + +d +:: +rg + cڡ& +s +, std::rg cڡ& +g +, +SourLeInfo + cڡ& +leInfo + ) = 0; + +2709 + gIRegiryHub +& +gRegiryHub +(); + +2710 + gIMubRegiryHub +& +gMubRegiryHub +(); + +2711  +nUp +(); + +2712 + gd +:: +rg + +eAiveExi +(); + +2716 +mea + + gCch + { + +2718  + gd +:: + trg +(* + texiTneFuni +)(); + +2720  + gIExiTn +; + +2721  + gd +:: + tve + + tExiTns +; + +2723  + sIExiTn + { + +2724 + gvtu + ~ +IExiTn +(); + +2725 +vtu + + gd +:: +rg + +e + +ExiTns +:: +cڡ_ + + +, ExiTns::cڡ_ +End + ) const = 0; + +2728  + sIExiTnRegiry + { + +2729 + gvtu + ~ +IExiTnRegiry +(); + +2731 +vtu + + gd +:: +rg + +eAiveExi +() const = 0; + +2734 as + cExiTnRegir + { + +2735 + gme +< +tyme + + gT +> + +2736 as + cExiTn + : +public + +IExiTn + { + +2737 +public +: + +2739 +ExiTn + +d +:: +rg +(* +eFuni +) +T +& ) ) + +2740 : +m_eFuni + +eFuni + ) + +2743 +vtu + +d +:: +rg + +e + +ExiTns +:: +cڡ_ + + +, ExiTns::cڡ_ +End + ) cڡ +CATCH_OVERRIDE + { + +2744 +y + { + +2745 if + + = +End + ) + +2746 +throw +; + +2748  (* + g +)-> +e + + ++1, +End + ); + +2750 +tch + +T +& +ex + ) { + +2751  +m_eFuni + +ex + ); + +2755 + geed +: + +2756 +d +:: +rg +(* +m_eFuni +) +T +& ); + +2759 + gpublic +: + +2760 +me +< +tyme + +T +> + +2761 +ExiTnRegir + +d +:: +rg +(* +eFuni +) +T +& ) ) { + +2762 +gMubRegiryHub +(). +giTn + + +2763 +w + +ExiTn +< +T +> +eFuni + ) ); + +2769  + #INTERNAL_CATCH_TRANSLATE_EXCEPTION2 + +Name +, +sigtu + ) \ + +2770  +d +:: +rg + + `Name + +sigtu + ); \ + +2771 +mea +{ +Cch +:: +ExiTnRegir + + `INTERNAL_CATCH_UNIQUE_NAME + +tch__ExiRegir + )& +Name + ); }\ + +2772  +d +:: +rg + + `Name + +sigtu + ) + + ) + +2774  + #INTERNAL_CATCH_TRANSLATE_EXCEPTION + +sigtu + ) + `INTERNAL_CATCH_TRANSLATE_EXCEPTION2 + + `INTERNAL_CATCH_UNIQUE_NAME + +tch__ExiTn + ), sigtu ) + + ) + +2777  + #TWOBLUECUBES_CATCH_APPROX_HPP_INCLUDED + + + ) + +2779  + ~ + +2780  + ~ + +2782 #i +defed +( +CATCH_CONFIG_CPP11_TYPE_TRAITS +) + +2783  + ~ + +2786 +mea + + gCch + { + +2787 +mea + + gDa + { + +2789 as + cArox + { + +2790 + gpublic +: + +2791 +exic + +Arox + (  +vue + ) + +2792 : +m_s + +d +:: +numic_lims +<>:: +s +()*100 ), + +2793 +m_mg +( 0.0 ), + +2794 +m_s +( 1.0 ), + +2795 +m_vue + +vue + ) + +2798  +Arox + +cuom +() { + +2799  +Arox +( 0 ); + +2802 #i +defed +( +CATCH_CONFIG_CPP11_TYPE_TRAITS +) + +2804 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2805 +Arox + +ݔ +() +T + +vue + ) { + +2806 +Arox + +ox + +ic_ +<>( +vue +) ); + +2807 + gox +. +s + +m_s + ); + +2808 + gox +. +mg + +m_mg + ); + +2809 + gox +. +s + +m_s + ); + +2810  + gox +; + +2813 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2814 +exic + +Arox + +T + +vue + ): Arox( +ic_ +<>(value)) + +2817 +me + < +tyme + +T +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2818 +nd + +bo + +ݔ + =cڡ +T +& +lhs +, +Arox + cڡ& + grhs + ) { + +2820 aut + glhs_v + = ( +lhs +); + +2821 +bo + + gtiveOK + = +d +:: +bs +( +lhs_v + - +rhs +. +m_vue +:: +vue +>:: +ty +> + +2829 +nd + +bo + +ݔ + = +Arox + cڡ& +lhs +, cڡ + gT +& + grhs + ) { + +2830  + gݔ +== +rhs +, + glhs + ); + +2833 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2834 +nd + +bo + +ݔ + ! +T + +lhs +, +Arox + cڡ& + grhs + ) { + +2835  ! + gݔ +== +lhs +, + grhs + ); + +2838 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2839 +nd + +bo + +ݔ + ! +Arox + cڡ& +lhs +, +T + + grhs + ) { + +2840  ! + gݔ +== +rhs +, + glhs + ); + +2843 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2844 +nd + +bo + +ݔ + < +T + +lhs +, +Arox + cڡ& + grhs + ) { + +2845  ( + glhs +< + grhs +. + gm_vue + ||h= +rhs +; + +2848 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2849 +nd + +bo + +ݔ + < +Arox + cڡ& +lhs +, +T + + grhs + ) { + +2850  + glhs +. + gm_vue + < ( + grhs +||h= +rhs +; + +2853 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2854 +nd + +bo + +ݔ + > +T + +lhs +, +Arox + cڡ& + grhs + ) { + +2855  ( + glhs +> + grhs +. + gm_vue + ||h= +rhs +; + +2858 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2859 +nd + +bo + +ݔ + > +Arox + cڡ& +lhs +, +T + + grhs + ) { + +2860  + glhs +. + gm_vue + > ( + grhs +||h= +rhs +; + +2863 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2864 +Arox +& +s + +T + +wEps + ) { + +2865 +m_s + = ( +wEps +); + +2866  * + gthis +; + +2869 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2870 +Arox +& +mg + +T + +wMg + ) { + +2871 +m_mg + = ( +wMg +); + +2872  * + gthis +; + +2875 + gme + < +tyme + + gT +, + gtyme + =ym +d +:: +ab_if +:: +vue +>:: +ty +> + +2876 +Arox +& +s + +T + +wS + ) { + +2877 +m_s + = ( +wS +); + +2878  * + gthis +; + +2883 +Arox + +ݔ +() + gvue + ) { + +2884 +Arox + +ox + +vue + ); + +2885 + gox +. +s + +m_s + ); + +2886 + gox +. +mg + +m_mg + ); + +2887 + gox +. +s + +m_s + ); + +2888  + gox +; + +2891 +nd + +bo + + gݔ + = +lhs +, +Arox + cڡ& + grhs + ) { + +2893 +bo + + gtiveOK + = +d +:: +bs + +lhs + - +rhs +. +m_vue + )  +lhs +, +Arox + cڡ& + grhs + ) { + +2921  + glhs + > + grhs +. + gm_vue + ||h= +rhs +; + +2924 +nd + +bo + + gݔ + > +Arox + cڡ& +lhs +,  + grhs + ) { + +2925  + glhs +. + gm_vue + > + grhs + ||h= +rhs +; + +2928 + gArox +& +s + +wEps + ) { + +2929 + gm_s + = +wEps +; + +2930  * + gthis +; + +2933 + gArox +& +mg + +wMg + ) { + +2934 + gm_mg + = +wMg +; + +2935  * + gthis +; + +2938 + gArox +& +s + +wS + ) { + +2939 + gm_s + = +wS +; + +2940  * + gthis +; + +2944 + gd +:: +rg + +toSg +() const { + +2945 +d +:: +orgam + +oss +; + +2946 + goss + << "Arox" << + gCch +:: +toSg + +m_vue + ) << " )"; + +2947  + goss +. +r +(); + +2950 + give +: + +2951  +m_s +; + +2952  + gm_mg +; + +2953  + gm_s +; + +2954  + gm_vue +; + +2958 + gme +<> + +2959 +le + + gd +:: +rg + +toSg +< +Da +:: +Arox +>Da::Arox cڡ& +vue + ) { + +2960  +vue +. +toSg +(); + +2966  + #TWOBLUECUBES_CATCH_MATCHERS_STRING_H_INCLUDED + + + ) + +2968 +mea + + gCch + { + +2969 +mea + + gMchs + { + +2971 +mea + + gStdSg + { + +2973  + sCadSg + + +2975 +CadSg + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + ); + +2976 + gd +:: +rg + +adjuSg + +d +::rg cڡ& +r + ) const; + +2977 + gd +:: +rg + +SsivySuffix +() const; + +2979 + gCaSsive +:: +Choi + +m_Ssivy +; + +2980 + gd +:: +rg + +m_r +; + +2983  + gSgMchBa + : +MchBa +< +d +:: +rg +> { + +2984 +SgMchBa + +d +:: +rg + cڡ& +ݔi +, +CadSg + cڡ& +comt + ); + +2985 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE +; + +2987 +CadSg + + gm_comt +; + +2988 + gd +:: +rg + +m_ݔi +; + +2991  + gEqusMch + : +SgMchBa + { + +2992 +EqusMch + +CadSg + cڡ& +comt + ); + +2993 +vtu + +bo + +mch + +d +:: +rg + cڡ& +sour + ) cڡ +CATCH_OVERRIDE +; + +2995  + gCڏsMch + : +SgMchBa + { + +2996 +CڏsMch + +CadSg + cڡ& +comt + ); + +2997 +vtu + +bo + +mch + +d +:: +rg + cڡ& +sour + ) cڡ +CATCH_OVERRIDE +; + +2999  + gSsWhMch + : +SgMchBa + { + +3000 +SsWhMch + +CadSg + cڡ& +comt + ); + +3001 +vtu + +bo + +mch + +d +:: +rg + cڡ& +sour + ) cڡ +CATCH_OVERRIDE +; + +3003  + gEndsWhMch + : +SgMchBa + { + +3004 +EndsWhMch + +CadSg + cڡ& +comt + ); + +3005 +vtu + +bo + +mch + +d +:: +rg + cڡ& +sour + ) cڡ +CATCH_OVERRIDE +; + +3013 + gStdSg +:: +EqusMch + +Equs + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + = CaSsive:: +Yes + ); + +3014 + gStdSg +:: +CڏsMch + +Cڏs + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + = CaSsive:: +Yes + ); + +3015 + gStdSg +:: +EndsWhMch + +EndsWh + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + = CaSsive:: +Yes + ); + +3016 + gStdSg +:: +SsWhMch + +SsWh + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + = CaSsive:: +Yes + ); + +3022  + #TWOBLUECUBES_CATCH_MATCHERS_VECTOR_H_INCLUDED + + + ) + +3024 +mea + + gCch + { + +3025 +mea + + gMchs + { + +3027 +mea + + gVe + { + +3029 + gme +< +tyme + + gT +> + +3030  + gCڏsEmtMch + : +MchBa +< +d +:: +ve +< +T +>, + gT +> { + +3032 +CڏsEmtMch +( +T + cڡ & +comt +: +m_comt +( comparator) {} + +3034 +bo + +mch +( +d +:: +ve +< +T +> cڡ & +v +cڡ +CATCH_OVERRIDE + { + +3035  +d +:: +fd +( +v +. +beg +(), v. +d +(), +m_comt +) != v.end(); + +3038 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +3039  "Cڏs: " + +Cch +:: +toSg + +m_comt + ); + +3042 +T + cڡ& + gm_comt +; + +3045 + gme +< +tyme + + gT +> + +3046  + gCڏsMch + : +MchBa +< +d +:: +ve +< +T +>, + gd +::vector > { + +3048 +CڏsMch +( +d +:: +ve +< +T +> cڡ & +comt +: +m_comt +( comparator ) {} + +3050 +bo + +mch +( +d +:: +ve +< +T +> cڡ & +v +cڡ +CATCH_OVERRIDE + { + +3052 i( +m_comt +. +size +(> +v +.size()) + +3053  +l +; + +3054  +size_t + + gi + = 0; i < + gm_comt +. +size +(); ++i) + +3055 i( + gd +:: +fd +( +v +. +beg +(), v. +d +(), +m_comt +[ +i +]) == v.end()) + +3056  +l +; + +3057  + gue +; + +3059 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +3060  "Cڏs: " + +Cch +:: +toSg + +m_comt + ); + +3063 + gd +:: +ve +< +T +> cڡ& +m_comt +; + +3066 + gme +< +tyme + + gT +> + +3067  + gEqusMch + : +MchBa +< +d +:: +ve +< +T +>, + gd +::vector > { + +3069 +EqusMch +( +d +:: +ve +< +T +> cڡ & +comt +: +m_comt +( comparator ) {} + +3071 +bo + +mch +( +d +:: +ve +< +T +> cڡ & +v +cڡ +CATCH_OVERRIDE + { + +3076 i( +m_comt +. +size +(! +v +.size()) + +3077  +l +; + +3078  +size_t + + gi + = 0; i < + gv +. +size +(); ++i) + +3079 i( + gm_comt +[ +i +] ! +v +[i]) + +3080  +l +; + +3081  + gue +; + +3083 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +3084  "Equs: " + +Cch +:: +toSg + +m_comt + ); + +3086 + gd +:: +ve +< +T +> cڡ& +m_comt +; + +3094 + gme +< +tyme + + gT +> + +3095 + gVe +:: +CڏsMch +< +T +> +Cڏs + +d +:: +ve + cڡ& +comt + ) { + +3096  +Ve +:: +CڏsMch +< +T +> +comt + ); + +3099 + gme +< +tyme + + gT +> + +3100 + gVe +:: +CڏsEmtMch +< +T +> +VeCڏs +T cڡ& +comt + ) { + +3101  +Ve +:: +CڏsEmtMch +< +T +> +comt + ); + +3104 + gme +< +tyme + + gT +> + +3105 + gVe +:: +EqusMch +< +T +> +Equs + +d +:: +ve + cڡ& +comt + ) { + +3106  +Ve +:: +EqusMch +< +T +> +comt + ); + +3113  + #TWOBLUECUBES_CATCH_INTERFACES_TAG_ALIAS_REGISTRY_H_INCLUDED + + + ) + +3116  + #TWOBLUECUBES_CATCH_TAG_ALIAS_H_INCLUDED + + + ) + +3118  + ~ + +3120 +mea + + gCch + { + +3122  + sTagAls + { + +3123 +TagAls + +d +:: +rg + cڡ& +_g +, +SourLeInfo + +_leInfo + ) : +g +_g ), +leInfo +( _lineInfo ) {} + +3125 + gd +:: +rg + +g +; + +3126 +SourLeInfo + + gleInfo +; + +3129  + sRegirFTagAls + { + +3130 +RegirFTagAls +cڡ* +s +, cڡ* +g +, +SourLeInfo + cڡ& +leInfo + ); + +3135  + #CATCH_REGISTER_TAG_ALIAS + +s +, +ec + ) +mea +{ +Cch +:: +RegirFTagAls + + `INTERNAL_CATCH_UNIQUE_NAME + +AutoRegiTagAls + )Юs, sc, +CATCH_INTERNAL_LINEINFO + ); } + + ) + +3137  + #TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED + + + ) + +3139 +mea + + gCch + { + +3142 + gme +< +tyme + + gT +> + +3143 as + cOi + { + +3144 + gpublic +: + +3145 +Oi +(: +nuabVue + +CATCH_NULL + ) {} + +3146 +Oi + +T + cڡ& +_vue + ) + +3147 : +nuabVue + +w + +age + ) +T + +_vue + ) ) + +3149 +Oi +Oi cڡ& +_h + ) + +3150 : +nuabVue + +_h + ? +w + +age + ) +T +*_h ) : +CATCH_NULL + ) + +3153 ~ +Oi +() { + +3154 +t +(); + +3157 + gOi +& + gݔ + +Oi + cڡ& +_h + ) { + +3158 if& +_h + ! +this + ) { + +3159 +t +(); + +3160 if + g_h + ) + +3161 + gnuabVue + = +w + +age + ) +T +* +_h + ); + +3163  * + gthis +; + +3165 + gOi +& + gݔ + = ( +T + cڡ& +_vue + ) { + +3166 +t +(); + +3167 + gnuabVue + = +w + +age + ) +T + +_vue + ); + +3168  * + gthis +; + +3171  +t +() { + +3172 if + gnuabVue + ) + +3173 + gnuabVue +->~ +T +(); + +3174 + gnuabVue + = +CATCH_NULL +; + +3177 + gT +& + gݔ +*({  * + gnuabVue +; } + +3178 +T + cڡ& + gݔ +*(cڡ {  * + gnuabVue +; } + +3179 +T +* + gݔ +->({  + gnuabVue +; } + +3180 cڡ +T +* + gݔ +->(cڡ {  + gnuabVue +; } + +3182 +T + +vueOr +T cڡ& +deuVue + ) const { + +3183  + gnuabVue + ? *nuabVu: +deuVue +; + +3186 +bo + +some +(cڡ {  + gnuabVue + ! +CATCH_NULL +; } + +3187 +bo + +ne +(cڡ {  + gnuabVue + = +CATCH_NULL +; } + +3189 +bo + + gݔ + !(cڡ {  + gnuabVue + = +CATCH_NULL +; } + +3190 +ݔ + + gSaBo +:: +ty +() const { + +3191  +SaBo +:: +makeSa + +some +() ); + +3194 + give +: + +3195 +T + * +nuabVue +; + +3197  + gage +[( +T +)]; + +3200  + gdummy1 +; + +3201 (* + gdummy2 +)(); + +3202  + gdummy3 +; + +3203 #ifde +CATCH_CONFIG_CPP11_LONG_LONG + + +3204  + gdummy4 +; + +3211 +mea + + gCch + { + +3213  + sITagAlsRegiry + { + +3214 + gvtu + ~ +ITagAlsRegiry +(); + +3215 +vtu + + gOi +< + gTagAls +> +fd + +d +:: +rg + cڡ& +s + ) const = 0; + +3216 +vtu + + gd +:: +rg + +exndAls + +d +::rg cڡ& +uxndedTeSc + ) const = 0; + +3218  +ITagAlsRegiry + cڡ& +g +(); + +3226  + #TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED + + + ) + +3228  + ~ + +3229  + ~ + +3231 #ifde +__g__ + + +3232 #agm +g + +dgnoic + +push + + +3233 #agm +g + +dgnoic + +igned + "-Wpadded" + +3236 +mea + + gCch + { + +3238  + gITeCa +; + +3240  + sTeCaInfo + { + +3241 + eSclPrݔts +{ + +3242 + gNe + = 0, + +3243 + gIsHidd + = 1 << 1, + +3244 + gShouldFa + = 1 << 2, + +3245 + gMayFa + = 1 << 3, + +3246 + gThrows + = 1 << 4, + +3247 + gNP܏b + = 1 << 5 + +3250 +TeCaInfo + +d +:: +rg + cڡ& +_me +, + +3251 +d +:: +rg + cڡ& +_assName +, + +3252 +d +:: +rg + cڡ& +_desti +, + +3253 +d +:: +t + cڡ& +_gs +, + +3254 +SourLeInfo + cڡ& +_leInfo + ); + +3256 +TeCaInfo +TeCaInfcڡ& +h + ); + +3258 +nd +  +tTags + +TeCaInfo +& +CaInfo +, +d +:: +t + cڡ& +gs + ); + +3260 +bo + +isHidd +() const; + +3261 +bo + +throws +() const; + +3262 +bo + +okToFa +() const; + +3263 +bo + +exedToFa +() const; + +3265 + gd +:: +rg + +me +; + +3266 + gd +:: +rg + +assName +; + +3267 + gd +:: +rg + +desti +; + +3268 + gd +:: +t +< +d +:: +rg +> +gs +; + +3269 + gd +:: +t +< +d +:: +rg +> +lTags +; + +3270 + gd +:: +rg + +gsAsSg +; + +3271 +SourLeInfo + + gleInfo +; + +3272 +SclPrݔts + + gݔts +; + +3275 as + cTeCa + : +public + +TeCaInfo + { + +3276 +public +: + +3278 +TeCa + +ITeCa +* +Ca +, +TeCaInfo + cڡ& +fo + ); + +3279 +TeCa +TeCa cڡ& +h + ); + +3281 +TeCa + +whName + +d +:: +rg + cڡ& +_wName + ) const; + +3283  +voke +() const; + +3285 +TeCaInfo + cڡ& +gTeCaInfo +() const; + +3287  +sw + +TeCa +& +h + ); + +3288 +bo + + gݔ + = +TeCa + cڡ& +h + ) const; + +3289 +bo + + gݔ + < ( +TeCa + cڡ& + gh + ) const; + +3290 + gTeCa +& + gݔ + = ( +TeCa + cڡ& +h + ); + +3292 + give +: + +3293 +P +< +ITeCa +> + +; + +3296 +TeCa + +makeTeCa + +ITeCa +* +Ca +, + +3297 +d +:: +rg + cڡ& +assName +, + +3298 +d +:: +rg + cڡ& +me +, + +3299 +d +:: +rg + cڡ& +desti +, + +3300 +SourLeInfo + cڡ& +leInfo + ); + +3303 #ifde +__g__ + + +3304 #agm +g + +dgnoic + +p + + +3308 #ifde +__OBJC__ + + +3310  + #TWOBLUECUBES_CATCH_OBJC_HPP_INCLUDED + + + ) + +3312 #imp܈< +objc +/ +ruime +. +h +> + +3314  + ~ + +3323 @ +oc + + gOcFixtu + + +3325 @ + gtiڮ + + +3327 -( + gtUp +; + +3328 -( + gDown +; + +3330 @ +d + + +3332 +mea + + gCch + { + +3334 +ass + + gOcMhod + : +public + +ShedIm +< +ITeCa +> { + +3336 +public +: + +3337 +OcMhod + +Css + +s +, +SEL + +l + ) : +m_s +), +m_l +( sel ) {} + +3339 +vtu +  +voke +() const { + +3340 +id + + gobj + = [[ +m_s + +loc +] + +]; + +3342 +rfmOiڮSe + +obj +, @ + +( +tUp +) ); + +3343 +rfmOiڮSe + +obj +, +m_l + ); + +3344 +rfmOiڮSe + +obj +, @ + +( +Down +) ); + +3346 +cSaR + +obj + ); + +3348 + give +: + +3349 +vtu + ~ +OcMhod +() {} + +3351 +Css + +m_s +; + +3352 +SEL + + gm_l +; + +3355 +mea + + gDa +{ + +3357 +le + + gd +:: +rg + +gA٩i + +Css + +s +, + +3358 +d +:: +rg + cڡ& +n٩iName +, + +3359 +d +:: +rg + cڡ& +CaName + ) { + +3360 +NSSg +* +lS + = [[NSSg +loc +] +WhFm +:@"Cch_%s_%s", + gn٩iName +. +c_r +(), + gCaName +.c_str()]; + +3361 +SEL + + gl + = +NSSeFromSg + +lS + ); + +3362 +cSaR + +lS + ); + +3363 +id + + gvue + = +rfmOiڮSe + +s +, +l + ); + +3364 if + gvue + ) + +3365  [( +NSSg +*) +vue + +UTF8Sg +]; + +3370 +le + +size_t + +giTeMhods +() { + +3371 +size_t + + gnoTeMhods + = 0; + +3372  + gnoCss + = +objc_gCssLi + +CATCH_NULL +, 0 ); + +3374 +Css +* + gass + = ( +CATCH_UNSAFE_UNRETAINED + Cs*) +mloc +(Css* +noCss +); + +3375 +objc_gCssLi + +ass +, +noCss + ); + +3377   + gc + = 0; c < + gnoCss +; c++ ) { + +3378 +Css + + gs + = +ass +[ +c +]; + +3380 +u_t + + gcou +; + +3381 +Mhod +* + gmhods + = +ass_cyMhodLi + +s +, & +cou + ); + +3382  +u_t + + gm + = 0; m < + gcou + ; m++ ) { + +3383 +SEL + + g + = +mhod_gName +( +mhods +[ +m +]); + +3384 + gd +:: +rg + +mhodName + = +l_gName +( + +); + +3385 if +tsWh + +mhodName +, "Catch_TestCase_" ) ) { + +3386 + gd +:: +rg + +CaName + = +mhodName +. +subr +( 15 ); + +3387 + gd +:: +rg + +me + = +Da +:: +gA٩i + +s +, "Name", +CaName + ); + +3388 + gd +:: +rg + +desc + = +Da +:: +gA٩i + +s +, "Desti", +CaName + ); + +3389 cڡ * + gassName + = +ass_gName + +s + ); + +3391 +gMubRegiryHub +(). +giTe + +makeTeCa + +w + +OcMhod + +s +, + + ), +assName +, +me +. +c_r +(), +desc +.c_r(), +SourLeInfo +() ) ); + +3392 + gnoTeMhods +++; + +3395 + +( +mhods +); + +3398  + gnoTeMhods +; + +3401 +mea + + gMchs + { + +3402 +mea + + gIm + { + +3403 +mea + + gNSSgMchs + { + +3405  + gSgHd + : +MchBa +< +NSSg +*>{ + +3406 +SgHd + +NSSg +* +subr + ) : +m_subr +[sub +cy +] ){} + +3407 +SgHd +SgHd cڡ& +h + ) : +m_subr +[h.m_sub +cy +] ){} + +3408 +SgHd +() { + +3409 +cSaR + +m_subr + ); + +3412 +vtu + +bo + +mch + +NSSg +* +g + ) cڡ + gCATCH_OVERRIDE + { + +3413  + gl +; + +3416 +NSSg +* + gm_subr +; + +3419  + gEqus + : +SgHd + { + +3420 +Equs + +NSSg +* +subr + ) : +SgHd +( substr ){} + +3422 +vtu + +bo + +mch + +NSSg +* +r + ) cڡ +CATCH_OVERRIDE + { + +3423  ( +r + ! +n + || +m_subr + ==il ) && + +3424 [ +r + +isEquToSg +: +m_subr +]; + +3427 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +3428  "equrg: " + +Cch +:: +toSg + +m_subr + ); + +3432  + gCڏs + : +SgHd + { + +3433 +Cڏs + +NSSg +* +subr + ) : +SgHd +( substr ){} + +3435 +vtu + +bo + +mch + +NSSg +* +r + ) const { + +3436  ( +r + ! +n + || +m_subr + ==il ) && + +3437 [ +r + +ngeOfSg +: +m_subr +]. +loti + ! +NSNFound +; + +3440 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +3441  "cڏrg: " + +Cch +:: +toSg + +m_subr + ); + +3445  + gSsWh + : +SgHd + { + +3446 +SsWh + +NSSg +* +subr + ) : +SgHd +( substr ){} + +3448 +vtu + +bo + +mch + +NSSg +* +r + ) const { + +3449  ( +r + ! +n + || +m_subr + ==il ) && + +3450 [ +r + +ngeOfSg +: +m_subr +]. +loti + == 0; + +3453 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +3454  "twh: " + +Cch +:: +toSg + +m_subr + ); + +3457  + gEndsWh + : +SgHd + { + +3458 +EndsWh + +NSSg +* +subr + ) : +SgHd +( substr ){} + +3460 +vtu + +bo + +mch + +NSSg +* +r + ) const { + +3461  ( +r + ! +n + || +m_subr + ==il ) && + +3462 [ +r + +ngeOfSg +: +m_subr +]. +loti + =[ +ngth +] - [m_substrength]; + +3465 +vtu + + gd +:: +rg + +desibe +(cڡ +CATCH_OVERRIDE + { + +3466  "dwh: " + +Cch +:: +toSg + +m_subr + ); + +3473 +le + + gIm +:: +NSSgMchs +:: +Equs + + +3474 +Equs + +NSSg +* +subr + ){  +Im +:: +NSSgMchs +::Equals( substr ); } + +3476 +le + + gIm +:: +NSSgMchs +:: +Cڏs + + +3477 +Cڏs + +NSSg +* +subr + ){  +Im +:: +NSSgMchs +::Contains( substr ); } + +3479 +le + + gIm +:: +NSSgMchs +:: +SsWh + + +3480 +SsWh + +NSSg +* +subr + ){  +Im +:: +NSSgMchs +::StartsWith( substr ); } + +3482 +le + + gIm +:: +NSSgMchs +:: +EndsWh + + +3483 +EndsWh + +NSSg +* +subr + ){  +Im +:: +NSSgMchs +::EndsWith( substr ); } + +3487 +usg + +mea + + gMchs +; + +3492  + #OC_TEST_CASE + +me +, +desc + )\ + +3493 +( +NSSg +* + `INTERNAL_CATCH_UNIQUE_NAME + +Cch_Name_ + ) \ + +3495  @ +me +; \ + +3497 +( +NSSg +* + `INTERNAL_CATCH_UNIQUE_NAME + +Cch_Desti_ + ) \ + +3499  @ +desc +; \ + +3501 -( + `INTERNAL_CATCH_UNIQUE_NAME + +Cch_TeCa_ + ) + + ) + +3505 #ifde +CATCH_IMPL + + +3508 #ifde +CATCH_CONFIG_WINDOWS_CRTDBG + + +3509  + ~ + +3510 as + cLkDe + { + +3511 + mpublic +: + +3512 + $LkDe +() { + +3513  +ag + = + `_CSDbgFg +( +_CRTDBG_REPORT_FLAG +); + +3514 +ag + | +_CRTDBG_LEAK_CHECK_DF +; + +3515 +ag + | +_CRTDBG_ALLOC_MEM_DF +; + +3516 + `_CSDbgFg +( +ag +); + +3517 + `_CSRtMode +( +_CRT_WARN +, +_CRTDBG_MODE_FILE + | +_CRTDBG_MODE_DEBUG +); + +3518 + `_CSRtFe +( +_CRT_WARN +, +_CRTDBG_FILE_STDERR +); + +3520 + `_CSBakAoc +(-1); + +3522 + } +}; + +3524 as + cLkDe + {}; + +3527 +LkDe + + gakDe +; + +3530  + #TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED + + + ) + +3535 #ifde +__g__ + + +3536 #agm +g + +dgnoic + +push + + +3537 #agm +g + +dgnoic + +igned + "-Wweak-vtables" + +3541  + #TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED + + + ) + +3544  + #TWOBLUECUBES_CATCH_COMMANDLINE_HPP_INCLUDED + + + ) + +3547  + #TWOBLUECUBES_CATCH_CONFIG_HPP_INCLUDED + + + ) + +3550  + #TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED + + + ) + +3552 #ifde +__g__ + + +3553 #agm +g + +dgnoic + +push + + +3554 #agm +g + +dgnoic + +igned + "-Wpadded" + +3558  + #TWOBLUECUBES_CATCH_TEST_SPEC_HPP_INCLUDED + + + ) + +3560 #ifde +__g__ + + +3561 #agm +g + +dgnoic + +push + + +3562 #agm +g + +dgnoic + +igned + "-Wpadded" + +3566  + #TWOBLUECUBES_CATCH_WILDCARD_PATTERN_HPP_INCLUDED + + + ) + +3568  + ~ + +3570 +mea + + gCch + + +3572 as + cWdrdP + { + +3573 + eWdrdPosi + { + +3574 + gNoWdrd + = 0, + +3575 + gWdrdAtS + = 1, + +3576 + gWdrdAtEnd + = 2, + +3577 + gWdrdAtBhEnds + = +WdrdAtS + | +WdrdAtEnd + + +3580 + gpublic +: + +3582 +WdrdP + +d +:: +rg + cڡ& +n +, +CaSsive +:: +Choi + +Ssivy + ) + +3583 : +m_Ssivy + +Ssivy + ), + +3584 +m_wdrd + +NoWdrd + ), + +3585 +m_n + +adjuCa + +n + ) ) + +3587 if +tsWh + +m_n +, '*' ) ) { + +3588 + gm_n + = +m_n +. +subr +( 1 ); + +3589 + gm_wdrd + = +WdrdAtS +; + +3591 if +dsWh + +m_n +, '*' ) ) { + +3592 + gm_n + = +m_n +. +subr +0, m_n. +size +()-1 ); + +3593 + gm_wdrd + = +ic_ +< +WdrdPosi +> +m_wdrd + | +WdrdAtEnd + ); + +3596 + gvtu + ~ +WdrdP +(); + +3597 +vtu + +bo + +mches + +d +:: +rg + cڡ& +r + ) const { + +3598  +m_wdrd + ) { + +3599  +NoWdrd +: + +3600  +m_n + = +adjuCa + +r + ); + +3601  + gWdrdAtS +: + +3602  +dsWh + +adjuCa + +r + ), +m_n + ); + +3603  + gWdrdAtEnd +: + +3604  +tsWh + +adjuCa + +r + ), +m_n + ); + +3605  + gWdrdAtBhEnds +: + +3606  +cڏs + +adjuCa + +r + ), +m_n + ); + +3609 #ifde +__g__ + + +3610 #agm +g + +dgnoic + +push + + +3611 #agm +g + +dgnoic + +igned + "-Wunreachable-code" + +3613 +throw + + gd +:: +logic_r +( "Unknownnum" ); + +3614 #ifde +__g__ + + +3615 #agm +g + +dgnoic + +p + + +3618 + give +: + +3619 +d +:: +rg + +adjuCa +Сd::rg cڡ& +r + ) const { + +3620  +m_Ssivy + = +CaSsive +:: +No + ? +toLow + +r + ) : str; + +3622 + gCaSsive +:: +Choi + +m_Ssivy +; + +3623 +WdrdPosi + + gm_wdrd +; + +3624 + gd +:: +rg + +m_n +; + +3628  + ~ + +3629  + ~ + +3631 +mea + + gCch + { + +3633 as + cTeSc + { + +3634  + gP + : +ShedIm +<> { + +3635 +vtu + ~ +P +(); + +3636 +vtu + +bo + +mches + +TeCaInfo + cڡ& +Ca + ) const = 0; + +3638 as + cNameP + : +public + +P + { + +3639 +public +: + +3640 +NameP + +d +:: +rg + cڡ& +me + ) + +3641 : +m_wdrdP + +toLow + +me + ), +CaSsive +:: +No + ) + +3643 +vtu + ~ +NameP +(); + +3644 +vtu + +bo + +mches + +TeCaInfo + cڡ& +Ca + ) const { + +3645  + gm_wdrdP +. +mches + +toLow + +Ca +. +me + ) ); + +3647 + give +: + +3648 +WdrdP + +m_wdrdP +; + +3651 as + cTagP + : +public + +P + { + +3652 +public +: + +3653 +TagP + +d +:: +rg + cڡ& +g + ) : +m_g + +toLow +(ag ) ) {} + +3654 +vtu + ~ +TagP +(); + +3655 +vtu + +bo + +mches + +TeCaInfo + cڡ& +Ca + ) const { + +3656  + gCa +. + glTags +. +fd + +m_g + ) ! +Ca +. +lTags +. +d +(); + +3658 + give +: + +3659 +d +:: +rg + +m_g +; + +3662 as + cExudedP + : +public + +P + { + +3663 +public +: + +3664 +ExudedP + +P +< +P +> cڡ& +undlygP + ) : +m_undlygP +( underlyingPattern ) {} + +3665 +vtu + ~ +ExudedP +(); + +3666 +vtu + +bo + +mches + +TeCaInfo + cڡ& +Ca + ) cڡ {  ! + gm_undlygP +->matches(estCase ); } + +3667 + give +: + +3668 +P +< +P +> +m_undlygP +; + +3671  + sFr + { + +3672 + gd +:: +ve +< +P +< +P +> > +m_ns +; + +3674 +bo + +mches + +TeCaInfo + cڡ& +Ca + ) const { + +3676  + gd +:: +ve +< +P +< +P +> >:: +cڡ_ + + + = +m_ns +. +beg +(), + gEnd + = m_ns. +d +(); + g + ! +End +; ++it ) { + +3677 if!(* + g +)-> +mches + +Ca + ) ) + +3678  + gl +; + +3680  + gue +; + +3684 + gpublic +: + +3685 +bo + +hasFrs +() const { + +3686  ! +m_frs +. +emy +(); + +3688 +bo + +mches + +TeCaInfo + cڡ& +Ca + ) const { + +3690  + gd +:: +ve +< +Fr +>:: +cڡ_ + + + = +m_frs +. +beg +(), + gEnd + = m_frs. +d +(); + g + ! +End +; ++it ) + +3691 if + g +-> +mches + +Ca + ) ) + +3692  + gue +; + +3693  + gl +; + +3696 + give +: + +3697 +d +:: +ve +< +Fr +> +m_frs +; + +3699 +nd + +ass + + gTeScPr +; + +3703 #ifde +__g__ + + +3704 #agm +g + +dgnoic + +p + + +3707 +mea + + gCch + { + +3709 as + cTeScPr + { + +3710 + eMode +{ + gNe +, + gName +, + gQuedName +, + gTag +, + gEsdName + }; + +3711 +Mode + + gm_mode +; + +3712 +bo + + gm_exusi +; + +3713 + gd +:: +size_t + +m_t +, + gm_pos +; + +3714 + gd +:: +rg + +m_g +; + +3715 + gd +:: +ve +< +d +:: +size_t +> +m_esChs +; + +3716 + gTeSc +:: +Fr + +m_cutFr +; + +3717 +TeSc + + gm_Sc +; + +3718 +ITagAlsRegiry + cڡ* + gm_gAls +; + +3720 + gpublic +: + +3721 +TeScPr + +ITagAlsRegiry + cڡ& +gAls + ) : +m_mode +( +Ne +), +m_exusi +( +l +), +m_t +(0), +m_pos +(0), +m_gAls +( &tagAliases ) {} + +3723 + gTeScPr +& +r + +d +:: +rg + cڡ& +g + ) { + +3724 +m_mode + = +Ne +; + +3725 + gm_exusi + = +l +; + +3726 + gm_t + = +d +:: +rg +:: +os +; + +3727 + gm_g + = +m_gAls +-> +exndAls + +g + ); + +3728 + gm_esChs +. +r +(); + +3729  + gm_pos + = 0; m_po< + gm_g +. +size +(); ++m_pos ) + +3730 +visCh + +m_g +[ +m_pos +] ); + +3731 if + gm_mode + = +Name + ) + +3732 +addP +< +TeSc +:: +NameP +>(); + +3733  * + gthis +; + +3735 +TeSc + +Sc +() { + +3736 +addFr +(); + +3737  + gm_Sc +; + +3739 + give +: + +3740  +visCh + +c + ) { + +3741 if +m_mode + = +Ne + ) { + +3742  +c + ) { + +3744 '~': +m_exusi + = +ue +; ; + +3745 '[':  +tNewMode + +Tag +, ++ +m_pos + ); + +3746 '"':  +tNewMode + +QuedName +, ++ +m_pos + ); + +3747 '\\':  +es +(); + +3748 : +tNewMode + +Name +, +m_pos + ); ; + +3751 if + gm_mode + = +Name + ) { + +3752 if +c + == ',' ) { + +3753 +addP +< +TeSc +:: +NameP +>(); + +3754 +addFr +(); + +3756 if + gc + == '[' ) { + +3757 if +subSg +() == "exclude:" ) + +3758 +m_exusi + = +ue +; + +3760 + gaddP +< + gTeSc +:: +NameP +>(); + +3761 +tNewMode + +Tag +, ++ +m_pos + ); + +3763 if + gc + == '\\' ) + +3764 +es +(); + +3766 if + gm_mode + = +EsdName + ) + +3767 +m_mode + = +Name +; + +3768 if + gm_mode + = +QuedName + && +c + == '"' ) + +3769 +addP +< +TeSc +:: +NameP +>(); + +3770 if + gm_mode + = +Tag + && +c + == ']' ) + +3771 +addP +< +TeSc +:: +TagP +>(); + +3773  +tNewMode + +Mode + +mode +, +d +:: +size_t + +t + ) { + +3774 +m_mode + = +mode +; + +3775 + gm_t + = +t +; + +3777  +es +() { + +3778 if + gm_mode + = +Ne + ) + +3779 +m_t + = +m_pos +; + +3780 + gm_mode + = +EsdName +; + +3781 + gm_esChs +. +push_back + +m_pos + ); + +3783 + gd +:: +rg + +subSg +(cڡ {  +m_g +. +subr + +m_t +, +m_pos + - m_start ); } + +3784 + gme +< +tyme + + gT +> + +3785  +addP +() { + +3786 + gd +:: +rg + +tok + = +subSg +(); + +3787  +size_t + + gi + = 0; i < + gm_esChs +. +size +(); ++i ) + +3788 + gtok + = +tok +. +subr +0, +m_esChs +[ +i +]- +m_t +-i ) +oken.substr( m_escapeChars[i]-m_start-i+1 ); + +3789 + gm_esChs +. +r +(); + +3790 if +tsWh + +tok +, "exclude:" ) ) { + +3791 + gm_exusi + = +ue +; + +3792 + gtok + = +tok +. +subr +( 8 ); + +3794 if! + gtok +. +emy +() ) { + +3795 + gP +< + gTeSc +:: +P +> +n + = +w + +T + +tok + ); + +3796 if + gm_exusi + ) + +3797 + gn + = +w + +TeSc +:: +ExudedP + +n + ); + +3798 + gm_cutFr +. + gm_ns +. +push_back + +n + ); + +3800 + gm_exusi + = +l +; + +3801 + gm_mode + = +Ne +; + +3803  +addFr +() { + +3804 if! + gm_cutFr +. + gm_ns +. +emy +() ) { + +3805 + gm_Sc +. + gm_frs +. +push_back + +m_cutFr + ); + +3806 + gm_cutFr + = +TeSc +:: +Fr +(); + +3810 +le + +TeSc + + $rTeSc + +d +:: +rg + cڡ& +g + ) { + +3811  + `TeScPr + +ITagAlsRegiry +:: + `g +(). + `r + +g + ). + `Sc +(); + +3812 + } +} + +3816 #ifde +__g__ + + +3817 #agm +g + +dgnoic + +p + + +3821  + #TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED + + + ) + +3823  + ~ + +3824  + ~ + +3825  + ~ + +3827 +mea + + gCch + { + +3829  + sVbosy + { + eLev + { + +3830 + gNoOuut + = 0, + +3831 + gQut +, + +3832 + gNm + + +3835  + sWnAbout + { + eWh + { + +3836 + gNhg + = 0x00, + +3837 + gNoAsis + = 0x01 + +3840  + sShowDutis + { + eOrN + { + +3841 + gDeuFR܋r +, + +3842 + gAlways +, + +3843 + gNev + + +3845  + sRunTes + { + eInWhOrd + { + +3846 + gInDeiOrd +, + +3847 + gInLexicogphilOrd +, + +3848 + gInRdomOrd + + +3850  + sUCour + { + eYesOrNo + { + +3851 + gAuto +, + +3852 + gYes +, + +3853 + gNo + + +3856 +ass + + gTeSc +; + +3858  + gICfig + : +IShed + { + +3860 +vtu + ~ +ICfig +(); + +3862 +vtu + +bo + +lowThrows +() const = 0; + +3863 +vtu + + gd +:: +oam +& +am +() const = 0; + +3864 +vtu + + gd +:: +rg + +me +() const = 0; + +3865 +vtu + +bo + +udeSucssfulResus +() const = 0; + +3866 +vtu + +bo + +shouldDebugBak +() const = 0; + +3867 +vtu + +bo + +wnAboutMissgAsis +() const = 0; + +3868 +vtu +  +abtA +() const = 0; + +3869 +vtu + +bo + +showInvisibs +() const = 0; + +3870 +vtu + + gShowDutis +:: +OrN + +showDutis +() const = 0; + +3871 +vtu + +TeSc + cڡ& +Sc +() const = 0; + +3872 +vtu + + gRunTes +:: +InWhOrd + +runOrd +() const = 0; + +3873 +vtu +  +gSd +() const = 0; + +3874 +vtu + + gUCour +:: +YesOrNo + +uCour +() const = 0; + +3875 +vtu + + gd +:: +ve +< +d +:: +rg +> cڡ& +gSeisToRun +() const = 0; + +3881  + #TWOBLUECUBES_CATCH_STREAM_H_INCLUDED + + + ) + +3884  + #TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED + + + ) + +3886  + ~ + +3888 +mea + + gCch + { + +3890 as + cSmBufBa + : +public + +d +:: +ambuf + { + +3891 +public +: + +3892 +vtu + ~ +SmBufBa +( +CATCH_NOEXCEPT +; + +3896  + ~ + +3897  + ~ + +3898  + ~ + +3899  + ~ + +3901 +mea + + gCch + { + +3903 + gd +:: +oam +& +cout +(); + +3904 + gd +:: +oam +& + +(); + +3905 + gd +:: +oam +& +og +(); + +3907  + sISm + { + +3908 + gvtu + ~ +ISm +( + gCATCH_NOEXCEPT +; + +3909 +vtu + + gd +:: +oam +& +am +() const = 0; + +3912 as + cFeSm + : +public + +ISm + { + +3913 +mub + +d +:: +ofam + +m_ofs +; + +3914 + gpublic +: + +3915 +FeSm + +d +:: +rg + cڡ& +fame + ); + +3916 + gvtu + ~ +FeSm +( + gCATCH_NOEXCEPT +; + +3917 + gpublic +: + +3918 +vtu + +d +:: +oam +& +am +(cڡ +CATCH_OVERRIDE +; + +3921 as + cCoutSm + : +public + +ISm + { + +3922 +mub + +d +:: +oam + +m_os +; + +3923 + gpublic +: + +3924 +CoutSm +(); + +3925 + gvtu + ~ +CoutSm +( + gCATCH_NOEXCEPT +; + +3927 + gpublic +: + +3928 +vtu + +d +:: +oam +& +am +(cڡ +CATCH_OVERRIDE +; + +3931 as + cDebugOutSm + : +public + +ISm + { + +3932 +CATCH_AUTO_PTR + +SmBufBa + ) +m_amBuf +; + +3933 +mub + + gd +:: +oam + +m_os +; + +3934 + gpublic +: + +3935 +DebugOutSm +(); + +3936 + gvtu + ~ +DebugOutSm +( + gCATCH_NOEXCEPT +; + +3938 + gpublic +: + +3939 +vtu + +d +:: +oam +& +am +(cڡ +CATCH_OVERRIDE +; + +3943  + ~ + +3944  + ~ + +3945  + ~ + +3946  + ~ + +3948 #ide +CATCH_CONFIG_CONSOLE_WIDTH + + +3949  + #CATCH_CONFIG_CONSOLE_WIDTH + 80 + + ) + +3952 +mea + + gCch + { + +3954  + sCfigDa + { + +3956 +CfigDa +() + +3957 : +liTes + +l + ), + +3958 +liTags + +l + ), + +3959 +liR܋rs + +l + ), + +3960 +liTeNamesOy + +l + ), + +3961 +liExaInfo + +l + ), + +3962 +showSucssfulTes + +l + ), + +3963 +shouldDebugBak + +l + ), + +3964 +noThrow + +l + ), + +3965 +showHp + +l + ), + +3966 +showInvisibs + +l + ), + +3967 +famesAsTags + +l + ), + +3968 +abtA +( -1 ), + +3969 +gSd +( 0 ), + +3970 +vbosy + +Vbosy +:: +Nm + ), + +3971 +wngs + +WnAbout +:: +Nhg + ), + +3972 +showDutis + +ShowDutis +:: +DeuFR܋r + ), + +3973 +runOrd + +RunTes +:: +InDeiOrd + ), + +3974 +uCour + +UCour +:: +Auto + ) + +3977 +bo + +liTes +; + +3978 +bo + + gliTags +; + +3979 +bo + + gliR܋rs +; + +3980 +bo + + gliTeNamesOy +; + +3981 +bo + + gliExaInfo +; + +3983 +bo + + gshowSucssfulTes +; + +3984 +bo + + gshouldDebugBak +; + +3985 +bo + + gnoThrow +; + +3986 +bo + + gshowHp +; + +3987 +bo + + gshowInvisibs +; + +3988 +bo + + gfamesAsTags +; + +3990  + gabtA +; + +3991  + ggSd +; + +3993 + gVbosy +:: +Lev + +vbosy +; + +3994 + gWnAbout +:: +Wh + +wngs +; + +3995 + gShowDutis +:: +OrN + +showDutis +; + +3996 + gRunTes +:: +InWhOrd + +runOrd +; + +3997 + gUCour +:: +YesOrNo + +uCour +; + +3999 + gd +:: +rg + +ouutFame +; + +4000 + gd +:: +rg + +me +; + +4001 + gd +:: +rg + +ossName +; + +4003 + gd +:: +ve +< +d +:: +rg +> +p܋rNames +; + +4004 + gd +:: +ve +< +d +:: +rg +> +sOrTags +; + +4005 + gd +:: +ve +< +d +:: +rg +> +isToRun +; + +4008 +ass + + gCfig + : +public + +ShedIm +< +ICfig +> { + +4009 +ive +: + +4010 +Cfig +Cfig cڡ& +h + ); + +4011 + gCfig +& + gݔ + = ( +Cfig + cڡ& +h + ); + +4012 +vtu +  +dummy +(); + +4013 + gpublic +: + +4015 +Cfig +() + +4018 +Cfig + +CfigDa + cڡ& +da + ) + +4019 : +m_da + +da + ), + +4020 +m_am + +ݒSm +() ) + +4022 if! + gda +. + gsOrTags +. +emy +() ) { + +4023 +TeScPr + +rr + +ITagAlsRegiry +:: +g +() ); + +4024  + gd +:: +size_t + +i + = 0; + gi + < + gda +. + gsOrTags +. +size +(); ++i ) + +4025 + grr +. +r + +da +. +sOrTags +[ +i +] ); + +4026 + gm_Sc + = +rr +. +Sc +(); + +4030 + gvtu + ~ +Cfig +() {} + +4032 + gd +:: +rg + cڡ& +gFame +() const { + +4033  +m_da +. +ouutFame + ; + +4036 +bo + +liTes +(cڡ {  + gm_da +. + gliTes +; } + +4037 +bo + +liTeNamesOy +(cڡ {  + gm_da +. + gliTeNamesOy +; } + +4038 +bo + +liTags +(cڡ {  + gm_da +. + gliTags +; } + +4039 +bo + +liR܋rs +(cڡ {  + gm_da +. + gliR܋rs +; } + +4040 +bo + +liExaInfo +(cڡ {  + gm_da +. + gliExaInfo +; } + +4042 + gd +:: +rg + +gProssName +(cڡ {  +m_da +. +ossName +; } + +4044 + gd +:: +ve +< +d +:: +rg +> cڡ& +gR܋rNames +(cڡ {  +m_da +. +p܋rNames +; } + +4045 + gd +:: +ve +< +d +:: +rg +> cڡ& +gSeisToRun +(cڡ +CATCH_OVERRIDE + {  +m_da +. +isToRun +; } + +4047 +vtu + +TeSc + cڡ& +Sc +(cڡ + gCATCH_OVERRIDE + {  + gm_Sc +; } + +4049 +bo + +showHp +(cڡ {  + gm_da +. + gshowHp +; } + +4052 +vtu + +bo + +lowThrows +(cڡ + gCATCH_OVERRIDE + {  ! + gm_da +. + gnoThrow +; } + +4053 +vtu + + gd +:: +oam +& +am +(cڡ +CATCH_OVERRIDE + {  +m_am +->stream(); } + +4054 +vtu + + gd +:: +rg + +me +(cڡ +CATCH_OVERRIDE + {  +m_da +.me. +emy +(? m_da. +ossName + : m_data.name; } + +4055 +vtu + +bo + +udeSucssfulResus +(cڡ + gCATCH_OVERRIDE + {  + gm_da +. + gshowSucssfulTes +; } + +4056 +vtu + +bo + +wnAboutMissgAsis +(cڡ + gCATCH_OVERRIDE + {  + gm_da +. + gwngs + & + gWnAbout +:: +NoAsis +; } + +4057 +vtu + + gShowDutis +:: +OrN + +showDutis +(cڡ +CATCH_OVERRIDE + {  +m_da +.showDurations; } + +4058 +vtu + + gRunTes +:: +InWhOrd + +runOrd +(cڡ +CATCH_OVERRIDE + {  +m_da +.runOrder; } + +4059 +vtu +  +gSd +(cڡ + gCATCH_OVERRIDE + {  + gm_da +. + ggSd +; } + +4060 +vtu + + gUCour +:: +YesOrNo + +uCour +(cڡ +CATCH_OVERRIDE + {  +m_da +.useColour; } + +4061 +vtu + +bo + +shouldDebugBak +(cڡ + gCATCH_OVERRIDE + {  + gm_da +. + gshouldDebugBak +; } + +4062 +vtu +  +abtA +(cڡ + gCATCH_OVERRIDE + {  + gm_da +. + gabtA +; } + +4063 +vtu + +bo + +showInvisibs +(cڡ + gCATCH_OVERRIDE + {  + gm_da +. + gshowInvisibs +; } + +4065 + give +: + +4067 +ISm + cڡ* +ݒSm +() { + +4068 if +m_da +. +ouutFame +. +emy +() ) + +4069  +w + +CoutSm +(); + +4070 if + gm_da +. + gouutFame +[0] == '%' ) { + +4071 if +m_da +. +ouutFame + == "%debug" ) + +4072  +w + +DebugOutSm +(); + +4074 +throw + + gd +:: +doma_r +"Uecognid sm: " + +m_da +. +ouutFame + ); + +4077  +w + +FeSm + +m_da +. +ouutFame + ); + +4079 +CfigDa + + gm_da +; + +4081 +CATCH_AUTO_PTR + +ISm + cڡ ) + gm_am +; + +4082 +TeSc + + gm_Sc +; + +4088  + #TWOBLUECUBES_CATCH_CLARA_H_INCLUDED + + + ) + +4091 #ifde +CLARA_CONFIG_CONSOLE_WIDTH + + +4092  + #CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH + +CLARA_CONFIG_CONSOLE_WIDTH + + + ) + +4093 #unde +CLARA_CONFIG_CONSOLE_WIDTH + + +4095  + #CLARA_CONFIG_CONSOLE_WIDTH + +CATCH_CONFIG_CONSOLE_WIDTH + + + ) + +4098  + #STITCH_CLARA_OPEN_NAMESPACE + +mea + +Cch + { + + ) + +4104 #i! +defed +( +TWOBLUECUBES_CLARA_H_INCLUDED +|| defed( +STITCH_CLARA_OPEN_NAMESPACE +) + +4106 #ide +STITCH_CLARA_OPEN_NAMESPACE + + +4107  + #TWOBLUECUBES_CLARA_H_INCLUDED + + + ) + +4108  + #STITCH_CLARA_OPEN_NAMESPACE + + + ) + +4109  + #STITCH_CLARA_CLOSE_NAMESPACE + + + ) + +4111  + #STITCH_CLARA_CLOSE_NAMESPACE + } + + ) + +4114  + #STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE + +STITCH_CLARA_OPEN_NAMESPACE + + + ) + +4119 #i! +defed +( +TBC_TEXT_FORMAT_H_INCLUDED +|| defed( +STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE +) + +4120 #ide +STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE + + +4121  + #TBC_TEXT_FORMAT_H_INCLUDED + + + ) + +4124  + ~ + +4125  + ~ + +4126  + ~ + +4127  + ~ + +4128  + ~ + +4131 #ifde +STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE + + +4132 +mea + + gSTITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE + { + +4135 +mea + + gTbc + { + +4137 #ifde +TBC_TEXT_FORMAT_CONSOLE_WIDTH + + +4138 cڡ  + gcseWidth + = +TBC_TEXT_FORMAT_CONSOLE_WIDTH +; + +4140 cڡ  + gcseWidth + = 80; + +4143  + sTextAribus + { + +4144 +TextAribus +() + +4145 : +lIndt + +d +:: +rg +:: +os + ), + +4146 +dt +( 0 ), + +4147 +width + +cseWidth +-1 ), + +4148 +bCh +( '\t' ) + +4151 + gTextAribus +& +tInlIndt + +d +:: +size_t + +_vue + ) { +lIndt + = _vue;  * + gthis +; } + +4152 + gTextAribus +& +tIndt + +d +:: +size_t + +_vue + ) { +dt + = _vue;  * + gthis +; } + +4153 + gTextAribus +& +tWidth + +d +:: +size_t + +_vue + ) { +width + = _vue;  * + gthis +; } + +4154 + gTextAribus +& +tTabCh + +_vue + ) { + gbCh + = _vue;  * + gthis +; } + +4156 + gd +:: +size_t + +lIndt +; + +4157 + gd +:: +size_t + +dt +; + +4158 + gd +:: +size_t + +width +; + +4159  + gbCh +; + +4162 as + cText + { + +4163 + gpublic +: + +4164 +Text + +d +:: +rg + cڡ& +_r +, +TextAribus + cڡ& +_ + = TextAttributes() ) + +4165 : + + +_ + ) + +4167 +d +:: +rg + +wabChs + = " [({.,/|\\-"; + +4168 + gd +:: +size_t + +dt + = +_ +. +lIndt + ! +d +:: +rg +:: +os + + +4169 ? +_ +. +lIndt + + +4170 : +_ +. +dt +; + +4171 + gd +:: +rg + +mad + = +_r +; + +4173  ! + gmad +. +emy +() ) { + +4174 if + gles +. +size +() >= 1000 ) { + +4175 +les +. +push_back +( "... messageruncated dueoxcessive size" ); + +4178 + gd +:: +size_t + +bPos + = +d +:: +rg +:: +os +; + +4179 + gd +:: +size_t + +width + = ( +d +:: +m +) +mad +. +size +(), + g_ +. + gwidth + - + gdt + ); + +4180 + gd +:: +size_t + +pos + = +mad +. +fd_f_of +( '\n' ); + +4181 if + gpos + < +width + ) { + +4182 +width + = +pos +; + +4184 + gpos + = +mad +. +fd_ϡ_of + +_ +. +bCh +, +width + ); + +4185 if + gpos + ! +d +:: +rg +:: +os + ) { + +4186 +bPos + = +pos +; + +4187 if + gmad +[ +width +] == '\n' ) + +4188 +width +--; + +4189 + gmad + = +mad +. +subr +0, +bPos + ) +emainder.substr(abPos+1 ); + +4192 if + gwidth + = +mad +. +size +() ) { + +4193 +liLe + +dt +, +mad +, +width + ); + +4195 if + gmad +[ +width +] == '\n' ) { + +4196 +liLe + +dt +, +mad +, +width + ); + +4197 if + gwidth + <1 || +mad +. +size +() != 1 ) + +4198 +mad + =emad. +subr +( 1 ); + +4199 + gdt + = +_ +. +dt +; + +4202 + gpos + = +mad +. +fd_ϡ_of + +wabChs +, +width + ); + +4203 if + gpos + ! +d +:: +rg +:: +os + && +pos + > 0 ) { + +4204 +liLe + +dt +, +mad +, +pos + ); + +4205 if + gmad +[0] == ' ' ) + +4206 +mad + =emad. +subr +( 1 ); + +4209 +liLe + +dt +, +mad +, +width +-1 ); + +4210 + gles +. +back +() += "-"; + +4212 if + gles +. +size +() == 1 ) + +4213 +dt + = +_ +.indent; + +4214 if + gbPos + ! +d +:: +rg +:: +os + ) + +4215 +dt + + +bPos +; + +4220  +liLe + +d +:: +size_t + +_dt +, std:: +rg +& +_mad +, std::size_ +_pos + ) { + +4221 +les +. +push_back + +d +:: +rg + +_dt +, ' ' ) + +_mad +. +subr +0, +_pos + ) ); + +4222 + g_mad + = +_mad +. +subr + +_pos + ); + +4225  + gd +:: + tve +< + td +:: + trg +>:: + tcڡ_ + const_iterator; + +4227 +cڡ_ + +beg +(cڡ {  + gles +.begin(); } + +4228 +cڡ_ + +d +(cڡ {  + gles +.end(); } + +4229 + gd +:: +rg + cڡ& +ϡ +(cڡ {  +les +. +back +(); } + +4230 + gd +:: +size_t + +size +(cڡ {  +les +.size(); } + +4231 + gd +:: +rg + cڡ& +ݔ +[] +d +:: +size_t + +_dex + ) cڡ {  +les +[_index]; } + +4232 + gd +:: +rg + +toSg +() const { + +4233 +d +:: +orgam + +oss +; + +4234 + goss + << * + gthis +; + +4235  + goss +. +r +(); + +4238 +nd + + gd +:: +oam +& +ݔ + << ( +d +::oam& +_am +, +Text + cڡ& + g_xt + ) { + +4239  + gText +:: +cڡ_ + + + = +_xt +. +beg +(), + gEnd + = _xt. +d +(); + +4240 + g + ! +End +; ++it ) { + +4241 if + g + ! +_xt +. +beg +() ) + +4242 +_am + << "\n"; + +4243 + g_am + << * + g +; + +4245  + g_am +; + +4248 + give +: + +4249 +d +:: +rg + +r +; + +4250 +TextAribus + + g +; + +4251 + gd +:: +ve +< +d +:: +rg +> +les +; + +4256 #ifde +STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE + + +4265 #unde +STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE + + +4269 #ide +TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED + + +4270  + #TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED + + + ) + +4292 #ifde +__g__ + + +4294 #i + $__has_u +( +cxx_nuαr +) + +4295  + #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +4298 #i + $__has_u +( +cxx_nx +) + +4299  + #CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT + + + ) + +4306 #ifde +__GNUC__ + + +4308 #i +__GNUC__ + =4 && +__GNUC_MINOR__ + >6 && + $defed +( +__GXX_EXPERIMENTAL_CXX0X__ +) + +4309  + #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +4319 #ifde +_MSC_VER + + +4321 #i( +_MSC_VER + >= 1600) + +4322  + #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +4323  + #CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR + + + ) + +4326 #i( +_MSC_VER + >= 1900 ) + +4327  + #CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT + + + ) + +4328  + #CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS + + + ) + +4337 #i + `defed +( +__lulus +) && __cplusplus >= 201103L + +4339  + #CLARA_CPP11_OR_GREATER + + + ) + +4341 #i! + $defed +( +CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +) + +4342  + #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR + + + ) + +4345 #ide +CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT + + +4346  + #CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT + + + ) + +4349 #ide +CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS + + +4350  + #CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS + + + ) + +4353 #i! + $defed +( +CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE +) + +4354  + #CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE + + + ) + +4356 #i! + $defed +( +CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +) + +4357  + #CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR + + + ) + +4363 #i + `defed +( +CLARA_INTERNAL_CONFIG_CPP11_NULLPTR +&& !defed( +CLARA_CONFIG_CPP11_NO_NULLPTR +&& !defed( +CLARA_CONFIG_CPP11_NULLPTR +&& ! + $defed +( +CLARA_CONFIG_NO_CPP11 +) + +4364  + #CLARA_CONFIG_CPP11_NULLPTR + + + ) + +4366 #i + `defed +( +CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT +&& !defed( +CLARA_CONFIG_CPP11_NO_NOEXCEPT +&& !defed( +CLARA_CONFIG_CPP11_NOEXCEPT +&& ! + $defed +( +CLARA_CONFIG_NO_CPP11 +) + +4367  + #CLARA_CONFIG_CPP11_NOEXCEPT + + + ) + +4369 #i + `defed +( +CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS +&& !defed( +CLARA_CONFIG_CPP11_NO_GENERATED_METHODS +&& !defed( +CLARA_CONFIG_CPP11_GENERATED_METHODS +&& ! + $defed +( +CLARA_CONFIG_NO_CPP11 +) + +4370  + #CLARA_CONFIG_CPP11_GENERATED_METHODS + + + ) + +4372 #i + `defed +( +CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE +&& !defed( +CLARA_CONFIG_NO_OVERRIDE +&& !defed( +CLARA_CONFIG_CPP11_OVERRIDE +&& ! + $defed +( +CLARA_CONFIG_NO_CPP11 +) + +4373  + #CLARA_CONFIG_CPP11_OVERRIDE + + + ) + +4375 #i + `defed +( +CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR +&& !defed( +CLARA_CONFIG_NO_UNIQUE_PTR +&& !defed( +CLARA_CONFIG_CPP11_UNIQUE_PTR +&& ! + $defed +( +CLARA_CONFIG_NO_CPP11 +) + +4376  + #CLARA_CONFIG_CPP11_UNIQUE_PTR + + + ) + +4380 #i + `defed +( +CLARA_CONFIG_CPP11_NOEXCEPT +&& ! + $defed +( +CLARA_NOEXCEPT +) + +4381  + #CLARA_NOEXCEPT + +nx + + + ) + +4382  + #CLARA_NOEXCEPT_IS +( +x + + $nx +( +x +) + + ) + +4384  + #CLARA_NOEXCEPT + + $throw +() + + ) + +4385  + #CLARA_NOEXCEPT_IS +( +x +) + + ) + +4389 #ifde +CLARA_CONFIG_CPP11_NULLPTR + + +4390  + #CLARA_NULL + +nuαr + + + ) + +4392  + #CLARA_NULL + +NULL + + + ) + +4396 #ifde +CLARA_CONFIG_CPP11_OVERRIDE + + +4397  + #CLARA_OVERRIDE + +ovride + + + ) + +4399  + #CLARA_OVERRIDE + + + ) + +4403 #ifde +CLARA_CONFIG_CPP11_UNIQUE_PTR + + +4404  + #CLARA_AUTO_PTR + +T + ) +d +:: +unique_r + + + ) + +4406  + #CLARA_AUTO_PTR + +T + ) +d +:: +auto_r + + + ) + +4414  + ~ + +4415  + ~ + +4416  + ~ + +4418 #i + `defed +( +WIN32 +|| defed( +__WIN32__ +|| defed( +_WIN32 +|| + $defed +( +_MSC_VER +) + +4419  + #CLARA_PLATFORM_WINDOWS + + + ) + +4423 #ifde +STITCH_CLARA_OPEN_NAMESPACE + + +4424 +STITCH_CLARA_OPEN_NAMESPACE + + +4427 +mea + +CϿ + { + +4429  + sUosiڮTag + {}; + +4431 +UosiڮTag + +_ +; + +4433 #ifde +CLARA_CONFIG_MAIN + + +4434 +UosiڮTag + +_ +; + +4437 +mea + +Da + { + +4439 #ifde +CLARA_CONSOLE_WIDTH + + +4440 cڡ  +cseWidth + = +CLARA_CONFIG_CONSOLE_WIDTH +; + +4442 cڡ  +cseWidth + = 80; + +4445 +usg + +mea + +Tbc +; + +4447 +le + +bo + + `tsWh + +d +:: +rg + cڡ& +r +, std::rg cڡ& +efix + ) { + +4448  +r +. + `size +(> +efix +.size(&& s. + `subr +( 0,refix.size() ) ==refix; + +4451 +me +< +tyme + +T +>  + sRemoveCڡRef +{ T + tty +; }; + +4452 +me +< +tyme + +T +>  +RemoveCڡRef +{ T + tty +; }; + +4453 +me +< +tyme + +T +>  +RemoveCڡRef +{ T + tty +; }; + +4454 +me +< +tyme + +T +>  +RemoveCڡRef +{ T + tty +; }; + +4456 +me +< +tyme + +T +>  + sIsBo + { cڡ +bo + +vue + = +l +; }; + +4457 +me +<>  +IsBo +< +bo +> { cڡ bo +vue + = +ue +; }; + +4459 +me +< +tyme + +T +> + +4460  + `cvtIo + +d +:: +rg + cڡ& +_sour +, +T +& +_de + ) { + +4461 +d +:: +rgam + +ss +; + +4462 +ss + << +_sour +; + +4463 +ss + >> +_de +; + +4464 if +ss +. + ` +() ) + +4465 +throw + +d +:: + `ruime_r +"Ubˁcv" + +_sour + + "o destinationype" ); + +4467 +le +  + `cvtIo + +d +:: +rg + cڡ& +_sour +, std::rg& +_de + ) { + +4468 +_de + = +_sour +; + +4470  + `toLowCh +( +c +) { + +4471  +ic_ +<> +d +:: + `tow + +c + ) ); + +4473 +le +  + `cvtIo + +d +:: +rg + cڡ& +_sour +, +bo +& +_de + ) { + +4474 +d +:: +rg + +sourLC + = +_sour +; + +4475 +d +:: + `sfm + +sourLC +. + `beg +(), sourLC. + `d +(), sourLC.beg(), +toLowCh + ); + +4476 if +sourLC + == "y" || sourceLC == "1" || sourceLC == "true" || sourceLC == "yes" || sourceLC == "on" ) + +4477 +_de + = +ue +; + +4478 if +sourLC + == "n" || sourceLC == "0" || sourceLC == "false" || sourceLC == "no" || sourceLC == "off" ) + +4479 +_de + = +l +; + +4481 +throw + +d +:: + `ruime_r +"Exed boޗvubudidلecogni:\ '" + +_sour + + "'" ); + +4484 +me +< +tyme + +CfigT +> + +4485  + sIArgFuni + { + +4486 +vtu + ~ + `IArgFuni +() {} + +4487 #ifde +CLARA_CONFIG_CPP11_GENERATED_METHODS + + +4488 + `IArgFuni +() = ; + +4489 + `IArgFuni + +IArgFuni + const& ) = ; + +4491 +vtu +  + `t + +CfigT +& +cfig +, +d +:: +rg + cڡ& +vue + ) const = 0; + +4492 +vtu + +bo + + `kesArg +() const = 0; + +4493 +vtu + +IArgFuni +* + `e +() const = 0; + +4496 +me +< +tyme + +CfigT +> + +4497 as + cBoundArgFuni + { + +4498 +public +: + +4499 + `BoundArgFuni +(: + `funiObj + +CLARA_NULL + ) {} + +4500 + `BoundArgFuni + +IArgFuni +< +CfigT +>* +_funiObj + ) : + `funiObj +( _functionObj ) {} + +4501 + `BoundArgFuni + +BoundArgFuni + cڡ& +h + ) : + `funiObj +h. +funiObj + ? oth.funiObj-> + `e +(: +CLARA_NULL + ) {} + +4502 +BoundArgFuni +& +ݔ + = ( BoundArgFuni cڡ& +h + ) { + +4503 +IArgFuni +< +CfigT +>* +wFuniObj + = +h +. +funiObj + ? oth.funiObj-> + `e +(: +CLARA_NULL +; + +4504 +de + +funiObj +; + +4505 +funiObj + = +wFuniObj +; + +4506  * +this +; + +4508 ~ + `BoundArgFuni +({ +de + +funiObj +; } + +4510  + `t + +CfigT +& +cfig +, +d +:: +rg + cڡ& +vue + ) const { + +4511 +funiObj +-> + `t + +cfig +, +vue + ); + +4513 +bo + + `kesArg +(cڡ {  +funiObj +->takesArg(); } + +4515 +bo + + `isS +() const { + +4516  +funiObj + ! +CLARA_NULL +; + +4518 +ive +: + +4519 +IArgFuni +< +CfigT +>* +funiObj +; + +4522 +me +< +tyme + +C +> + +4523  +NuBd + : +IArgFuni +< +C +>{ + +4524 +vtu +  + `t + +C +&, +d +:: +rg + const& ) const {} + +4525 +vtu + +bo + + `kesArg +(cڡ {  +ue +; } + +4526 +vtu + +IArgFuni +< +C +>* + `e +(cڡ {  +w + + `NuBd +* +this + ); } + +4529 +me +< +tyme + +C +,ym +M +> + +4530  +BoundDaMemb + : +IArgFuni +< +C +>{ + +4531 + `BoundDaMemb + +M + +C +::* +_memb + ) : + `memb +( _member ) {} + +4532 +vtu +  + `t + +C +& +p +, +d +:: +rg + cڡ& +rgVue + ) const { + +4533 + `cvtIo + +rgVue +, +p +.* +memb + ); + +4535 +vtu + +bo + + `kesArg +(cڡ {  ! +IsBo +< +M +>:: +vue +; } + +4536 +vtu + +IArgFuni +< +C +>* + `e +(cڡ {  +w + + `BoundDaMemb +* +this + ); } + +4537 +M + +C +::* +memb +; + +4539 +me +< +tyme + +C +,ym +M +> + +4540  +BoundUryMhod + : +IArgFuni +< +C +>{ + +4541 + `BoundUryMhod +( +C +::* +_memb +) +M + ) ) : + `memb +( _member ) {} + +4542 +vtu +  + `t + +C +& +p +, +d +:: +rg + cڡ& +rgVue + ) const { + +4543 +tyme + +RemoveCڡRef +< +M +>:: +ty + +vue +; + +4544 + `cvtIo + +rgVue +, +vue + ); + +4545 ( +p +.* +memb +) +vue + ); + +4547 +vtu + +bo + + `kesArg +(cڡ {  ! +IsBo +< +M +>:: +vue +; } + +4548 +vtu + +IArgFuni +< +C +>* + `e +(cڡ {  +w + + `BoundUryMhod +* +this + ); } + +4549 ( +C +::* +memb +) +M + ); + +4551 +me +< +tyme + +C +> + +4552  +BoundNuάyMhod + : +IArgFuni +< +C +>{ + +4553 + `BoundNuάyMhod +( +C +::* +_memb +)(: + `memb +( _member ) {} + +4554 +vtu +  + `t + +C +& +p +, +d +:: +rg + cڡ& +rgVue + ) const { + +4555 +bo + +vue +; + +4556 + `cvtIo + +rgVue +, +vue + ); + +4557 if +vue + ) + +4558 ( +p +.* +memb +)(); + +4560 +vtu + +bo + + `kesArg +(cڡ {  +l +; } + +4561 +vtu + +IArgFuni +< +C +>* + `e +(cڡ {  +w + + `BoundNuάyMhod +* +this + ); } + +4562 ( +C +::* +memb +)(); + +4565 +me +< +tyme + +C +> + +4566  +BoundUryFuni + : +IArgFuni +< +C +>{ + +4567 + `BoundUryFuni +(* +_funi +) +C +& ) ) : + `funi +( _function ) {} + +4568 +vtu +  + `t + +C +& +obj +, +d +:: +rg + cڡ& +rgVue + ) const { + +4569 +bo + +vue +; + +4570 + `cvtIo + +rgVue +, +vue + ); + +4571 if +vue + ) + +4572 + `funi + +obj + ); + +4574 +vtu + +bo + + `kesArg +(cڡ {  +l +; } + +4575 +vtu + +IArgFuni +< +C +>* + `e +(cڡ {  +w + + `BoundUryFuni +* +this + ); } + +4576 (* +funi +) +C +& ); + +4579 +me +< +tyme + +C +,ym +T +> + +4580  +BoundByFuni + : +IArgFuni +< +C +>{ + +4581 + `BoundByFuni +(* +_funi +) +C +&, +T + ) ) : + `funi +( _function ) {} + +4582 +vtu +  + `t + +C +& +obj +, +d +:: +rg + cڡ& +rgVue + ) const { + +4583 +tyme + +RemoveCڡRef +< +T +>:: +ty + +vue +; + +4584 + `cvtIo + +rgVue +, +vue + ); + +4585 + `funi + +obj +, +vue + ); + +4587 +vtu + +bo + + `kesArg +(cڡ {  ! +IsBo +< +T +>:: +vue +; } + +4588 +vtu + +IArgFuni +< +C +>* + `e +(cڡ {  +w + + `BoundByFuni +* +this + ); } + +4589 (* +funi +) +C +&, +T + ); + +4594 +le + +d +:: +ve + + `gsToVe + +gc +, cڡ* cڡ* cڡ +gv + ) { + +4595 +d +:: +ve + + `gs + +ic_ + +gc + ) ); + +4596  +d +:: +size_t + +i + = 0; i < +ic_ + +gc + ); ++i ) + +4597 +gs +[ +i +] = +gv +[i]; + +4599  +gs +; + +4602 as + cPr + { + +4603 + eMode + { +Ne +, +MaybeShtO +, +SshO +, +ShtO +, +LgO +, +Posiڮ + }; + +4604 +Mode + +mode +; + +4605 +d +:: +size_t + +om +; + +4606 +bo + +Ques +; + +4607 +public +: + +4609  + sTok + { + +4610 + eTy + { +Posiڮ +, +ShtO +, +LgO + }; + +4611 + `Tok + +Ty + +_ty +, +d +:: +rg + cڡ& +_da + ) : + `ty +_ty ), + `da +( _data ) {} + +4612 +Ty + +ty +; + +4613 +d +:: +rg + +da +; + +4616 + `Pr +(: + `mode + +Ne + ), + `om +0 ), + `Ques + +l + ){} + +4618  + `rIoToks + +d +:: +ve + cڡ& +gs +, std::ve< +Tok +>& +toks + ) { + +4619 cڡ +d +:: +rg + +doubDash + = "--"; + +4620  +d +:: +size_t + +i + = 1; i < +gs +. + `size +(&&rgs[i] ! +doubDash +; ++i ) + +4621 + `rIoToks + +gs +[ +i +], +toks +); + +4624  + `rIoToks + +d +:: +rg + cڡ& +g +, std:: +ve +< +Tok +>& +toks + ) { + +4625  +d +:: +size_t + +i + = 0; i < +g +. + `size +(); ++i ) { + +4626  +c + = +g +[ +i +]; + +4627 if +c + == '"' ) + +4628 +Ques + = !inQuotes; + +4629 +mode + = + `hdMode + +i +, +c +, +g +, +toks + ); + +4631 +mode + = + `hdMode + +g +. + `size +(), '\0',rg, +toks + ); + +4633 +Mode + + `hdMode + +d +:: +size_t + +i +,  +c +, std:: +rg + cڡ& +g +, std:: +ve +< +Tok +>& +toks + ) { + +4634  +mode + ) { + +4635  +Ne +:  + `hdNe + +i +, +c + ); + +4636  +MaybeShtO +:  + `hdMaybeShtO + +i +, +c + ); + +4637  +ShtO +: + +4638  +LgO +: + +4639  +SshO +:  + `hdO + +i +, +c +, +g +, +toks + ); + +4640  +Posiڮ +:  + `hdPosiڮ + +i +, +c +, +g +, +toks + ); + +4641 : +throw + +d +:: + `logic_r +( "Unknown mode" ); + +4645 +Mode + + `hdNe + +d +:: +size_t + +i +,  +c + ) { + +4646 if +Ques + ) { + +4647 +om + = +i +; + +4648  +Posiڮ +; + +4650  +c + ) { + +4651 '-':  +MaybeShtO +; + +4652 #ifde +CLARA_PLATFORM_WINDOWS + + +4653 '/': +om + = +i ++1;  +SshO +; + +4655 : +om + = +i +;  +Posiڮ +; + +4658 +Mode + + `hdMaybeShtO + +d +:: +size_t + +i +,  +c + ) { + +4659  +c + ) { + +4660 '-': +om + = +i ++1;  +LgO +; + +4661 : +om + = +i +;  +ShtO +; + +4665 +Mode + + `hdO + +d +:: +size_t + +i +,  +c +, std:: +rg + cڡ& +g +, std:: +ve +< +Tok +>& +toks + ) { + +4666 if +d +:: + `rg +":=\0", 3 ). + `fd + +c + ) =d:: +rg +:: +os + ) + +4667  +mode +; + +4669 +d +:: +rg + +tName + = +g +. + `subr + +om +, +i +-from ); + +4670 if +mode + = +ShtO + ) + +4671  +d +:: +size_t + +j + = 0; j < +tName +. + `size +(); ++j ) + +4672 +toks +. + `push_back + + `Tok + +Tok +:: +ShtO +, +tName +. + `subr + +j +, 1 ) ) ); + +4673 if +mode + = +SshO + && +tName +. + `size +() == 1 ) + +4674 +toks +. + `push_back + + `Tok + +Tok +:: +ShtO +, +tName + ) ); + +4676 +toks +. + `push_back + + `Tok + +Tok +:: +LgO +, +tName + ) ); + +4677  +Ne +; + +4679 +Mode + + `hdPosiڮ + +d +:: +size_t + +i +,  +c +, std:: +rg + cڡ& +g +, std:: +ve +< +Tok +>& +toks + ) { + +4680 if +Ques + || +d +:: + `rg +"\0", 1 ). + `fd + +c + ) =d:: +rg +:: +os + ) + +4681  +mode +; + +4683 +d +:: +rg + +da + = +g +. + `subr + +om +, +i +-from ); + +4684 +toks +. + `push_back + + `Tok + +Tok +:: +Posiڮ +, +da + ) ); + +4685  +Ne +; + +4689 +me +< +tyme + +CfigT +> + +4690  + sCommArgPrݔts + { + +4691 + `CommArgPrݔts +() {} + +4692 + `CommArgPrݔts + +Da +:: +BoundArgFuni +< +CfigT +> cڡ& +_boundFld + ) : + `boundFld +( _boundField ) {} + +4694 +Da +:: +BoundArgFuni +< +CfigT +> +boundFld +; + +4695 +d +:: +rg + +desti +; + +4696 +d +:: +rg + +da +; + +4697 +d +:: +rg + +ahd +; + +4699 +bo + + `kesArg +() const { + +4700  ! +ahd +. + `emy +(); + +4702  + `vide +() const { + +4703 if! +boundFld +. + `isS +() ) + +4704 +throw + +d +:: + `logic_r +( "optionot bound" ); + +4707  + sOiArgPrݔts + { + +4708 +d +:: +ve + +shtNames +; + +4709 +d +:: +rg + +lgName +; + +4711 +bo + + `hasShtName + +d +:: +rg + cڡ& +shtName + ) const { + +4712  +d +:: + `fd + +shtNames +. + `beg +(), shtNames. + `d +(), +shtName + ) != shortNames.end(); + +4714 +bo + + `hasLgName + +d +:: +rg + cڡ& +_lgName + ) const { + +4715  +_lgName + = +lgName +; + +4718  + sPosiڮArgPrݔts + { + +4719 + `PosiڮArgPrݔts +(: + `posi +( -1 ) {} + +4720  +posi +; + +4722 +bo + + `isFixedPosiڮ +() const { + +4723  +posi + != -1; + +4727 +me +< +tyme + +CfigT +> + +4728 as + cCommdLe + { + +4730  +Arg + : +CommArgPrݔts +< +CfigT +>, +OiArgPrݔts +, +PosiڮArgPrݔts + { + +4731 + `Arg +() {} + +4732 + `Arg + +Da +:: +BoundArgFuni +< +CfigT +> cڡ& +_boundFld + ) : +CommArgPrݔts +( _boundField ) {} + +4734 +usg + +CommArgPrݔts +< +CfigT +>:: +ahd +; + +4736 +d +:: +rg + + `dbgName +() const { + +4737 if! +lgName +. + `emy +() ) + +4738  "--" + +lgName +; + +4739 if! +shtNames +. + `emy +() ) + +4740  "-" + +shtNames +[0]; + +4743 +d +:: +rg + + `commds +() const { + +4744 +d +:: +orgam + +oss +; + +4745 +bo + +f + = +ue +; + +4746 +d +:: +ve +:: +cڡ_ + + + = +shtNames +. + `beg +(), +End + = shtNames. + `d +(); + +4747 ; + + ! +End +; ++it ) { + +4748 if +f + ) + +4749 +f + = +l +; + +4751 +oss + << ", "; + +4752 +oss + << "-" << * + +; + +4754 if! +lgName +. + `emy +() ) { + +4755 if! +f + ) + +4756 +oss + << ", "; + +4757 +oss + << "--" << +lgName +; + +4759 if! +ahd +. + `emy +() ) + +4760 +oss + << " <" << +ahd + << ">"; + +4761  +oss +. + `r +(); + +4765  + `CLARA_AUTO_PTR + + tArg + ) + tArgAutoP +; + +4767 +nd +  + `addOName + +Arg +& +g +, +d +:: +rg + cڡ& +tName + ) + +4769 if +tName +. + `emy +() ) + +4771 if +Da +:: + `tsWh + +tName +, "--" ) ) { + +4772 if! +g +. +lgName +. + `emy +() ) + +4773 +throw + +d +:: + `logic_r +( "Only oneong opt may be specified. '" + +4774 + +g +. +lgName + + +4776 + +tName + + "'" ); + +4777 +g +. +lgName + = +tName +. + `subr +( 2 ); + +4779 if +Da +:: + `tsWh + +tName +, "-" ) ) + +4780 +g +. +shtNames +. + `push_back + +tName +. + `subr +( 1 ) ); + +4782 +throw + +d +:: + `logic_r +"ti mu beg wh - o--. Oi was: '" + +tName + + "'" ); + +4784 +nd +  + `tPosiڮArg + +Arg +& +g +,  +posi + ) + +4786 +g +. +posi + =osition; + +4789 as + cArgBud + { + +4790 +public +: + +4791 + `ArgBud + +Arg +* +g + ) : + `m_g +(rg ) {} + +4794 +me +< +tyme + +C +,ym +M +> + +4795  + `bd + +M + +C +::* +fld +, +d +:: +rg + cڡ& +ahd + ) { + +4796 +m_g +-> +boundFld + = +w + +Da +:: +BoundDaMemb +< +C +, +M +> +fld + ); + +4797 +m_g +-> +ahd + =laceholder; + +4800 +me +< +tyme + +C +> + +4801  + `bd + +bo + +C +::* +fld + ) { + +4802 +m_g +-> +boundFld + = +w + +Da +:: +BoundDaMemb +< +C +, +bo +> +fld + ); + +4806 +me +< +tyme + +C +,ym +M +> + +4807  + `bd +( +C +::* +uryMhod +) +M + ), +d +:: +rg + cڡ& +ahd + ) { + +4808 +m_g +-> +boundFld + = +w + +Da +:: +BoundUryMhod +< +C +, +M +> +uryMhod + ); + +4809 +m_g +-> +ahd + =laceholder; + +4813 +me +< +tyme + +C +> + +4814  + `bd +( +C +::* +uryMhod +) +bo + ) ) { + +4815 +m_g +-> +boundFld + = +w + +Da +:: +BoundUryMhod +< +C +, +bo +> +uryMhod + ); + +4819 +me +< +tyme + +C +> + +4820  + `bd +( +C +::* +nuάyMhod +)() ) { + +4821 +m_g +-> +boundFld + = +w + +Da +:: +BoundNuάyMhod +< +C +> +nuάyMhod + ); + +4825 +me +< +tyme + +C +> + +4826  + `bd +(* +uryFuni +) +C +& ) ) { + +4827 +m_g +-> +boundFld + = +w + +Da +:: +BoundUryFuni +< +C +> +uryFuni + ); + +4831 +me +< +tyme + +C +,ym +T +> + +4832  + `bd +(* +byFuni +) +C +&, +T + ), +d +:: +rg + cڡ& +ahd + ) { + +4833 +m_g +-> +boundFld + = +w + +Da +:: +BoundByFuni +< +C +, +T +> +byFuni + ); + +4834 +m_g +-> +ahd + =laceholder; + +4837 +ArgBud +& + `desibe + +d +:: +rg + cڡ& +desti + ) { + +4838 +m_g +-> +desti + = description; + +4839  * +this +; + +4841 +ArgBud +& + `da + +d +:: +rg + cڡ& +da + ) { + +4842 +m_g +-> +da + = detail; + +4843  * +this +; + +4846 +eed +: + +4847 +Arg +* +m_g +; + +4850 as + cOBud + : +public + +ArgBud + { + +4851 +public +: + +4852 + `OBud + +Arg +* +g + ) : + `ArgBud +(rg ) {} + +4853 + `OBud + +OBud +& +h + ) : + `ArgBud +( other ) {} + +4855 +OBud +& +ݔ +[] +d +:: +rg + cڡ& +tName + ) { + +4856 + `addOName +* +ArgBud +:: +m_g +, +tName + ); + +4857  * +this +; + +4861 +public +: + +4863 + `CommdLe +() + +4864 : + `m_boundProssName + +w + +Da +:: +NuBd +< +CfigT +>() ), + +4865 + `m_higheScifdArgPosi +( 0 ), + +4866 + `m_throwOnUecognidToks + +l + ) + +4868 + `CommdLe + +CommdLe + cڡ& +h + ) + +4869 : + `m_boundProssName + +h +. +m_boundProssName + ), + +4870 + `m_tis + ( +h +. +m_tis + ), + +4871 + `m_posiڮArgs + +h +. +m_posiڮArgs + ), + +4872 + `m_higheScifdArgPosi + +h +. +m_higheScifdArgPosi + ), + +4873 + `m_throwOnUecognidToks + +h +. +m_throwOnUecognidToks + ) + +4875 if +h +. +m_tgArg +. + `g +() ) + +4876 +m_tgArg +. + `t + +w + + `Arg +* +h +.m_floatingArg ) ); + +4879 +CommdLe +& + `tThrowOnUecognidToks + +bo + +shouldThrow + = +ue + ) { + +4880 +m_throwOnUecognidToks + = +shouldThrow +; + +4881  * +this +; + +4884 +OBud + +ݔ +[] +d +:: +rg + cڡ& +tName + ) { + +4885 +m_tis +. + `push_back + + `Arg +() ); + +4886 + `addOName + +m_tis +. + `back +(), +tName + ); + +4887 +OBud + + `bud +& +m_tis +. + `back +() ); + +4888  +bud +; + +4891 +ArgBud + +ݔ +[] +posi + ) { + +4892 +m_posiڮArgs +. + ` + +d +:: + `make_ + +posi +, + `Arg +() ) ); + +4893 if +posi + > +m_higheScifdArgPosi + ) + +4894 +m_higheScifdArgPosi + = +posi +; + +4895 + `tPosiڮArg + +m_posiڮArgs +[ +posi +],osition ); + +4896 +ArgBud + + `bud +& +m_posiڮArgs +[ +posi +] ); + +4897  +bud +; + +4901 +ArgBud + +ݔ +[] +UosiڮTag + ) { + +4902 if +m_tgArg +. + `g +() ) + +4903 +throw + +d +:: + `logic_r +( "Only one unpositionalrgument can bedded" ); + +4904 +m_tgArg +. + `t + +w + + `Arg +() ); + +4905 +ArgBud + + `bud + +m_tgArg +. + `g +() ); + +4906  +bud +; + +4909 +me +< +tyme + +C +,ym +M +> + +4910  + `bdProssName + +M + +C +::* +fld + ) { + +4911 +m_boundProssName + = +w + +Da +:: +BoundDaMemb +< +C +, +M +> +fld + ); + +4913 +me +< +tyme + +C +,ym +M +> + +4914  + `bdProssName +( +C +::* +_uryMhod +) +M + ) ) { + +4915 +m_boundProssName + = +w + +Da +:: +BoundUryMhod +< +C +, +M +> +_uryMhod + ); + +4918  + `tUge + +d +:: +oam +& +os +, std:: +size_t + +dt + = 0, std::size_ +width + = +Da +:: +cseWidth + ) const { + +4919 +tyme + +d +:: +ve +< +Arg +>:: +cڡ_ + +Beg + = +m_tis +. + `beg +(), +End + = m_tis. + `d +(), + +; + +4920 +d +:: +size_t + +maxWidth + = 0; + +4921  + + = +Beg +; i! +End +; ++it ) + +4922 +maxWidth + = ( +d +:: +max +)maxWidth, + +-> + `commds +(). + `size +() ); + +4924  + + = +Beg +; i! +End +; ++it ) { + +4925 +Da +:: +Text + + `uge + + +-> + `commds +(), Da:: + `TextAribus +() + +4926 . + `tWidth + +maxWidth ++ +dt + ) + +4927 . + `tIndt + +dt + ) ); + +4928 +Da +:: +Text + + `desc + + +-> +desti +, Da:: + `TextAribus +() + +4929 . + `tWidth + +width + - +maxWidth + - 3 ) ); + +4931  +d +:: +size_t + +i + = 0; i < (d:: +max +) +uge +. + `size +(), +desc +.size() ); ++i ) { + +4932 +d +:: +rg + +ugeC + = +i + < +uge +. + `size +() ? usage[i] : ""; + +4933 +os + << +ugeC +; + +4935 if +i + < +desc +. + `size +(&& !desc[i]. + `emy +() ) + +4936 +os + << +d +:: + `rg + +dt + + 2 + +maxWidth + - +ugeC +. + `size +(), ' ' ) + +4937 << +desc +[ +i +]; + +4938 +os + << "\n"; + +4942 +d +:: +rg + + `tUge +() const { + +4943 +d +:: +orgam + +oss +; + +4944 + `tUge + +oss + ); + +4945  +oss +. + `r +(); + +4948  + `gSynsis + +d +:: +oam +& +os + ) const { + +4949   +i + = 1; i < +m_higheScifdArgPosi +; ++i ) { + +4950 if +i + > 1 ) + +4951 +os + << " "; + +4952 +tyme + +d +:: +m +<, +Arg +>:: +cڡ_ + + + = +m_posiڮArgs +. + `fd + +i + ); + +4953 if + + ! +m_posiڮArgs +. + `d +() ) + +4954 +os + << "<" << + +-> +cd +. +ahd + << ">"; + +4955 if +m_tgArg +. + `g +() ) + +4956 +os + << "<" << +m_tgArg +-> +ahd + << ">"; + +4958 +throw + +d +:: + `logic_r +( "non consecutiveositionalrguments witho floatingrgs" ); + +4961 if +m_tgArg +. + `g +() ) { + +4962 if +m_higheScifdArgPosi + > 1 ) + +4963 +os + << " "; + +4964 +os + << "[<" << +m_tgArg +-> +ahd + << "> ...]"; + +4967 +d +:: +rg + + `gSynsis +() const { + +4968 +d +:: +orgam + +oss +; + +4969 + `gSynsis + +oss + ); + +4970  +oss +. + `r +(); + +4973  + `uge + +d +:: +oam +& +os +, std:: +rg + cڡ& +ocName + ) const { + +4974 + `vide +(); + +4975 +os + << "uge:\ " << +ocName + << " "; + +4976 + `gSynsis + +os + ); + +4977 if! +m_tis +. + `emy +() ) { + +4978 +os + << " [options]\n\nwhere optionsre: \n"; + +4979 + `tUge + +os +, 2 ); + +4981 +os + << "\n"; + +4983 +d +:: +rg + + `uge +Сd::rg cڡ& +ocName + ) const { + +4984 +d +:: +orgam + +oss +; + +4985 + `uge + +oss +, +ocName + ); + +4986  +oss +. + `r +(); + +4989 +CfigT + + `r + +d +:: +ve + cڡ& +gs + ) const { + +4990 +CfigT + +cfig +; + +4991 + `rIo + +gs +, +cfig + ); + +4992  +cfig +; + +4995 +d +:: +ve +< +Pr +:: +Tok +> + `rIo +Сd::ve cڡ& +gs +, +CfigT +& +cfig + ) const { + +4996 +d +:: +rg + +ossName + = +gs +. + `emy +(? std:: + `rg +() :rgs[0]; + +4997 +d +:: +size_t + +ϡSsh + = +ossName +. + `fd_ϡ_of +( "/\\" ); + +4998 if +ϡSsh + ! +d +:: +rg +:: +os + ) + +4999 +ossName + =rossName. + `subr + +ϡSsh ++1 ); + +5000 +m_boundProssName +. + `t + +cfig +, +ossName + ); + +5001 +d +:: +ve +< +Pr +:: +Tok +> +toks +; + +5002 +Pr + +rr +; + +5003 +rr +. + `rIoToks + +gs +, +toks + ); + +5004  + `puϋ + +toks +, +cfig + ); + +5007 +d +:: +ve +< +Pr +:: +Tok +> + `puϋ +Сd::ve cڡ& +toks +, +CfigT +& +cfig + ) const { + +5008 + `vide +(); + +5009 +d +:: +ve +< +Pr +:: +Tok +> +unudToks + = + `puϋOis + +toks +, +cfig + ); + +5010 +unudToks + = + `puϋFixedArgs +unudToks, +cfig + ); + +5011 +unudToks + = + `puϋFltgArgs +unudToks, +cfig + ); + +5012  +unudToks +; + +5015 +d +:: +ve +< +Pr +:: +Tok +> + `puϋOis +Сd::ve cڡ& +toks +, +CfigT +& +cfig + ) const { + +5016 +d +:: +ve +< +Pr +:: +Tok +> +unudToks +; + +5017 +d +:: +ve + +rs +; + +5018  +d +:: +size_t + +i + = 0; i < +toks +. + `size +(); ++i ) { + +5019 +Pr +:: +Tok + cڡ& +tok + = +toks +[ +i +]; + +5020 +tyme + +d +:: +ve +< +Arg +>:: +cڡ_ + + + = +m_tis +. + `beg +(), +End + = m_tis. + `d +(); + +5021 ; + + ! +End +; ++it ) { + +5022 +Arg + cڡ& +g + = * + +; + +5024 +y + { + +5025 if +tok +. +ty + = +Pr +:: +Tok +:: +ShtO + && +g +. + `hasShtName +tok. +da + ) ) || + +5026 +tok +. +ty + = +Pr +:: +Tok +:: +LgO + && +g +. + `hasLgName +tok. +da + ) ) ) { + +5027 if +g +. + `kesArg +() ) { + +5028 if +i + = +toks +. + `size +()-1 ||oks[i+1]. +ty + ! +Pr +:: +Tok +:: +Posiڮ + ) + +5029 +rs +. + `push_back +"Exedrgumtti: " + +tok +. +da + ); + +5031 +g +. +boundFld +. + `t + +cfig +, +toks +[++ +i +]. +da + ); + +5034 +g +. +boundFld +. + `t + +cfig +, "true" ); + +5039 + `tch + +d +:: +exi +& +ex + ) { + +5040 +rs +. + `push_back + +d +:: + `rg + +ex +. + `wh +(+ "\n- whrsg: (" + +g +. + `commds +() + ")" ); + +5043 if + + = +End + ) { + +5044 if +tok +. +ty + = +Pr +:: +Tok +:: +Posiڮ + || ! +m_throwOnUecognidToks + ) + +5045 +unudToks +. + `push_back + +tok + ); + +5046 if +rs +. + `emy +(&& +m_throwOnUecognidToks + ) + +5047 +rs +. + `push_back +"uecognid oi: " + +tok +. +da + ); + +5050 if! +rs +. + `emy +() ) { + +5051 +d +:: +orgam + +oss +; + +5052  +d +:: +ve +:: +cڡ_ + + + = +rs +. + `beg +(), +End + =s. + `d +(); + +5053 + + ! +End +; + +5054 ++ + + ) { + +5055 if + + ! +rs +. + `beg +() ) + +5056 +oss + << "\n"; + +5057 +oss + << * + +; + +5059 +throw + +d +:: + `ruime_r + +oss +. + `r +() ); + +5061  +unudToks +; + +5063 +d +:: +ve +< +Pr +:: +Tok +> + `puϋFixedArgs +Сd::ve cڡ& +toks +, +CfigT +& +cfig + ) const { + +5064 +d +:: +ve +< +Pr +:: +Tok +> +unudToks +; + +5065  +posi + = 1; + +5066  +d +:: +size_t + +i + = 0; i < +toks +. + `size +(); ++i ) { + +5067 +Pr +:: +Tok + cڡ& +tok + = +toks +[ +i +]; + +5068 +tyme + +d +:: +m +<, +Arg +>:: +cڡ_ + + + = +m_posiڮArgs +. + `fd + +posi + ); + +5069 if + + ! +m_posiڮArgs +. + `d +() ) + +5070 + +-> +cd +. +boundFld +. + `t + +cfig +, +tok +. +da + ); + +5072 +unudToks +. + `push_back + +tok + ); + +5073 if +tok +. +ty + = +Pr +:: +Tok +:: +Posiڮ + ) + +5074 +posi +++; + +5076  +unudToks +; + +5078 +d +:: +ve +< +Pr +:: +Tok +> + `puϋFltgArgs +Сd::ve cڡ& +toks +, +CfigT +& +cfig + ) const { + +5079 if! +m_tgArg +. + `g +() ) + +5080  +toks +; + +5081 +d +:: +ve +< +Pr +:: +Tok +> +unudToks +; + +5082  +d +:: +size_t + +i + = 0; i < +toks +. + `size +(); ++i ) { + +5083 +Pr +:: +Tok + cڡ& +tok + = +toks +[ +i +]; + +5084 if +tok +. +ty + = +Pr +:: +Tok +:: +Posiڮ + ) + +5085 +m_tgArg +-> +boundFld +. + `t + +cfig +, +tok +. +da + ); + +5087 +unudToks +. + `push_back + +tok + ); + +5089  +unudToks +; + +5092  + `vide +() const + +5094 if +m_tis +. + `emy +(&& +m_posiڮArgs +.emy(&& ! +m_tgArg +. + `g +() ) + +5095 +throw + +d +:: + `logic_r +( "No options orrguments specified" ); + +5097  +tyme + +d +:: +ve +< +Arg +>:: +cڡ_ + + + = +m_tis +. + `beg +(), + +5098 +End + = +m_tis +. + `d +(); + +5099 + + ! +End +; ++it ) + +5100 + +-> + `vide +(); + +5103 +ive +: + +5104 +Da +:: +BoundArgFuni +< +CfigT +> +m_boundProssName +; + +5105 +d +:: +ve +< +Arg +> +m_tis +; + +5106 +d +:: +m +<, +Arg +> +m_posiڮArgs +; + +5107 +ArgAutoP + +m_tgArg +; + +5108  +m_higheScifdArgPosi +; + +5109 +bo + +m_throwOnUecognidToks +; + +5112 + } +} + +5114 + gSTITCH_CLARA_CLOSE_NAMESPACE + + +5115 #unde +STITCH_CLARA_OPEN_NAMESPACE + + +5116 #unde +STITCH_CLARA_CLOSE_NAMESPACE + + +5119 #unde +STITCH_CLARA_OPEN_NAMESPACE + + +5122 #ifde +CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH + + +5123  + #CLARA_CONFIG_CONSOLE_WIDTH + +CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH + + + ) + +5124 #unde +CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH + + +5127  + ~ + +5128  + ~ + +5130 +mea + + gCch + { + +5132 +le +  +abtAF + +CfigDa +& +cfig + ) { + gcfig +. + gabtA + = 1; } + +5133 +le +  +abtAX + +CfigDa +& +cfig +,  +x + ) { + +5134 if + gx + < 1 ) + +5135 +throw + + gd +:: +ruime_r +( "Valuefter -x or --abortAfter must be greaterhan zero" ); + +5136 + gcfig +. + gabtA + = +x +; + +5138 +le +  +addTeOrTags + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +_Sc + ) { cfig. +sOrTags +. +push_back +( _testSpec ); } + +5139 +le +  +addSeiToRun + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +iName + ) { cfig. +isToRun +. +push_back +( sectionName ); } + +5140 +le +  +addR܋rName + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +_p܋rName + ) { cfig. +p܋rNames +. +push_back +( _reporterName ); } + +5142 +le +  +addWng + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +_wng + ) { + +5143 if +_wng + == "NoAssertions" ) + +5144 +cfig +. +wngs + = +ic_ +< +WnAbout +:: +Wh +>cfig.wng| WnAbout:: +NoAsis + ); + +5146 +throw + + gd +:: +ruime_r +"Uecognid wng: '" + +_wng + + '\'' ); + +5148 +le +  +tOrd + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +d + ) { + +5149 if +tsWh +"deed", +d + ) ) + +5150 + gcfig +. + grunOrd + = +RunTes +:: +InDeiOrd +; + +5151 if +tsWh +"xil", +d + ) ) + +5152 + gcfig +. + grunOrd + = +RunTes +:: +InLexicogphilOrd +; + +5153 if +tsWh +"ndom", +d + ) ) + +5154 + gcfig +. + grunOrd + = +RunTes +:: +InRdomOrd +; + +5156 +throw + + gd +:: +ruime_r +"Uecognid ordg: '" + +d + + '\'' ); + +5158 +le +  +tRngSd + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +ed + ) { + +5159 if +ed + == "time" ) { + +5160 +cfig +. +gSd + = +ic_ +<> +d +:: +time +(0) ); + +5163 + gd +:: +rgam + +ss +; + +5164 + gss + << + ged +; + +5165 + gss + >> + gcfig +. + ggSd +; + +5166 if + gss +. + +() ) + +5167 +throw + + gd +:: +ruime_r +( "Argumento --rng-seed should behe word 'time' orumber" ); + +5170 +le +  +tVbosy + +CfigDa +& +cfig +,  +v + ) { + +5172 + gcfig +. + gvbosy + = +ic_ +< +Vbosy +:: +Lev +> +v + ); + +5174 +le +  +tShowDutis + +CfigDa +& +cfig +, +bo + +_showDutis + ) { + +5175 + gcfig +. + gshowDutis + = +_showDutis + + +5176 ? +ShowDutis +:: +Always + + +5177 : +ShowDutis +:: +Nev +; + +5179 +le +  +tUCour + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +vue + ) { + +5180 +d +:: +rg + +mode + = +toLow + +vue + ); + +5182 if + gmode + == "yes" ) + +5183 +cfig +. +uCour + = +UCour +:: +Yes +; + +5184 if + gmode + == "no" ) + +5185 +cfig +. +uCour + = +UCour +:: +No +; + +5186 if + gmode + == "auto" ) + +5187 +cfig +. +uCour + = +UCour +:: +Auto +; + +5189 +throw + + gd +:: +ruime_r +( "colour mode must be one of:uto, yes oro" ); + +5191 +le +  +fCour + +CfigDa +& +cfig + ) { + +5192 + gcfig +. + guCour + = +UCour +:: +Yes +; + +5194 +le +  +ldTeNamesFromFe + +CfigDa +& +cfig +, +d +:: +rg + cڡ& +_fame + ) { + +5195 +d +:: +ifam + +f + +_fame +. +c_r +() ); + +5196 if! + gf +. +is_ݒ +() ) + +5197 +throw + + gd +:: +doma_r +"Ubˁld iufe: " + +_fame + ); + +5199 + gd +:: +rg + +le +; + +5200  + gd +:: +gle + +f +, +le + ) ) { + +5201 + gle + = +im +( +le +); + +5202 if! + gle +. +emy +(&& ! +tsWh + +le +, '#' ) ) { + +5203 if! +tsWh + +le +, '"' ) ) + +5204 + gle + = '"' + +le + + '"'; + +5205 +addTeOrTags + +cfig +, +le + + ',' ); + +5210 +le + + gCϿ +:: +CommdLe +< +CfigDa +> +makeCommdLePr +() { + +5212 +usg + +mea + +CϿ +; + +5213 + gCommdLe +< + gCfigDa +> + gi +; + +5215 + gi +. +bdProssName +& +CfigDa +:: +ossName + ); + +5217 + gi +["-?"]["-h"]["--help"] + +5218 . +desibe +( "display usage information" ) + +5219 . +bd +& +CfigDa +:: +showHp + ); + +5221 + gi +["-l"]["--list-tests"] + +5222 . +desibe +( "listll/matchingest cases" ) + +5223 . +bd +& +CfigDa +:: +liTes + ); + +5225 + gi +["-t"]["--list-tags"] + +5226 . +desibe +( "listll/matchingags" ) + +5227 . +bd +& +CfigDa +:: +liTags + ); + +5229 + gi +["-s"]["--success"] + +5230 . +desibe +( "include successfulests in output" ) + +5231 . +bd +& +CfigDa +:: +showSucssfulTes + ); + +5233 + gi +["-b"]["--break"] + +5234 . +desibe +( "break into debugger on failure" ) + +5235 . +bd +& +CfigDa +:: +shouldDebugBak + ); + +5237 + gi +["-e"]["--nothrow"] + +5238 . +desibe +( "skipxceptionests" ) + +5239 . +bd +& +CfigDa +:: +noThrow + ); + +5241 + gi +["-i"]["--invisibles"] + +5242 . +desibe +( "show invisibles (tabs,ewlines)" ) + +5243 . +bd +& +CfigDa +:: +showInvisibs + ); + +5245 + gi +["-o"]["--out"] + +5246 . +desibe +( "output filename" ) + +5247 . +bd +& +CfigDa +:: +ouutFame +, "filename" ); + +5249 + gi +["-r"]["--reporter"] + +5251 . +desibe +( "reportero use (defaultso console)" ) + +5252 . +bd +& +addR܋rName +, "name" ); + +5254 + gi +["-n"]["--name"] + +5255 . +desibe +( "suiteame" ) + +5256 . +bd +& +CfigDa +:: +me +, "name" ); + +5258 + gi +["-a"]["--abort"] + +5259 . +desibe +( "abortt first failure" ) + +5260 . +bd +& +abtAF + ); + +5262 + gi +["-x"]["--abortx"] + +5263 . +desibe +( "abortfter x failures" ) + +5264 . +bd +& +abtAX +, "no. failures" ); + +5266 + gi +["-w"]["--warn"] + +5267 . +desibe +( "enable warnings" ) + +5268 . +bd +& +addWng +, "warningame" ); + +5277 + gi +[ +_ +] + +5278 . +desibe +( "whichest orestso use" ) + +5279 . +bd +& +addTeOrTags +, "testame,attern orags" ); + +5281 + gi +["-d"]["--durations"] + +5282 . +desibe +( "showest durations" ) + +5283 . +bd +& +tShowDutis +, "yes|no" ); + +5285 + gi +["-f"]["--input-file"] + +5286 . +desibe +( "loadestamesoun from file" ) + +5287 . +bd +& +ldTeNamesFromFe +, "filename" ); + +5289 + gi +["-#"]["--filenames-as-tags"] + +5290 . +desibe +( "addsag forhe filename" ) + +5291 . +bd +& +CfigDa +:: +famesAsTags + ); + +5293 + gi +["-c"]["--section"] + +5294 . +desibe +( "specify sectionoun" ) + +5295 . +bd +& +addSeiToRun +, "sectioname" ); + +5298 + gi +["--list-test-names-only"] + +5299 . +desibe +( "listll/matchingest casesames only" ) + +5300 . +bd +& +CfigDa +:: +liTeNamesOy + ); + +5302 + gi +["--list-extra-info"] + +5303 . +desibe +( "listll/matchingest cases with more info" ) + +5304 . +bd +& +CfigDa +:: +liExaInfo + ); + +5306 + gi +["--list-reporters"] + +5307 . +desibe +( "listlleporters" ) + +5308 . +bd +& +CfigDa +:: +liR܋rs + ); + +5310 + gi +["--order"] + +5311 . +desibe +( "test case order (defaultso decl)" ) + +5312 . +bd +& +tOrd +, "decl|lex|rand" ); + +5314 + gi +["--rng-seed"] + +5315 . +desibe +( "set specific seed forandomumbers" ) + +5316 . +bd +& +tRngSd +, "'time'|number" ); + +5318 + gi +["--force-colour"] + +5319 . +desibe +( "force colourised output (deprecated)" ) + +5320 . +bd +& +fCour + ); + +5322 + gi +["--use-colour"] + +5323 . +desibe +( "should output be colourised" ) + +5324 . +bd +& +tUCour +, "yes|no" ); + +5326  + gi +; + +5332  + #TWOBLUECUBES_CATCH_LIST_HPP_INCLUDED + + + ) + +5335  + #TWOBLUECUBES_CATCH_TEXT_H_INCLUDED + + + ) + +5337  + #TBC_TEXT_FORMAT_CONSOLE_WIDTH + +CATCH_CONFIG_CONSOLE_WIDTH + + + ) + +5339  + #CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + +Cch + + + ) + +5342 #ide +CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + + +5343 #ifde +TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED + + +5344 #ide +TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED + + +5345  + #TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED + + + ) + +5348  + #TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED + + + ) + +5351 #ide +TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED + + +5352  + ~ + +5353  + ~ + +5354  + ~ + +5357 #ifde +CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + + +5358 +mea + + gCLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + { + +5361 +mea + + gTbc + { + +5363 #ifde +TBC_TEXT_FORMAT_CONSOLE_WIDTH + + +5364 cڡ  + gcseWidth + = +TBC_TEXT_FORMAT_CONSOLE_WIDTH +; + +5366 cڡ  + gcseWidth + = 80; + +5369  + sTextAribus + { + +5370 +TextAribus +() + +5371 : +lIndt + +d +:: +rg +:: +os + ), + +5372 +dt +( 0 ), + +5373 +width + +cseWidth +-1 ) + +5376 + gTextAribus +& +tInlIndt + +d +:: +size_t + +_vue + ) { +lIndt + = _vue;  * + gthis +; } + +5377 + gTextAribus +& +tIndt + +d +:: +size_t + +_vue + ) { +dt + = _vue;  * + gthis +; } + +5378 + gTextAribus +& +tWidth + +d +:: +size_t + +_vue + ) { +width + = _vue;  * + gthis +; } + +5380 + gd +:: +size_t + +lIndt +; + +5381 + gd +:: +size_t + +dt +; + +5382 + gd +:: +size_t + +width +; + +5385 as + cText + { + +5386 + gpublic +: + +5387 +Text + +d +:: +rg + cڡ& +_r +, +TextAribus + cڡ& +_ + = TextAttributes() ) + +5388 : + + +_ + ) + +5390 cڡ +d +:: +rg + +wabBefeChs + = "[({<\t"; + +5391 cڡ + gd +:: +rg + +wabAChs + = "])}>-,./|\\"; + +5392 cڡ + gd +:: +rg + +wabIndOfChs + = " \n\r"; + +5393 + gd +:: +rg + +dt + = +_ +. +lIndt + ! +d +::rg:: +os + + +5394 ? +d +:: +rg + +_ +. +lIndt +, ' ' ) + +5395 : +d +:: +rg + +_ +. +dt +, ' ' ); + +5397  + gd +:: + trg +:: + tcڡ_ + + t +; + +5398 + + + g + = +_r +. +beg +(); + +5399 cڡ + + + grEnd + = +_r +. +d +(); + +5401  + g + ! +rEnd + ) { + +5403 if +les +. +size +() >= 1000 ) { + +5404 +les +. +push_back +( "... messageruncated dueoxcessive size" ); + +5408 + gd +:: +rg + +suffix +; + +5409 + gd +:: +size_t + +width + = ( +d +:: +m +) +ic_ + +rEnd +- + + ), + g_ +. + gwidth +- + gic_ +< + gsize_t +> + gdt +. +size +() ) ); + +5410 + + + gEnd + = + ++ +width +; + +5411 + + + gNext + = +_r +. +d +(); + +5413 + + + gNewLe + = +d +:: +fd + + +, +End +, '\n' ); + +5414 if + gNewLe + ! +End + ) + +5415 +End + = +NewLe +; + +5417 if + gEnd + ! +rEnd + ) { + +5418 +bo + +foundWpPot + = +l +; + +5419 + + + gfdIt + = +End +; + +5421 if + gwabAChs +. +fd +* +fdIt + ) ! +d +:: +rg +:: +os + && fdI! +End + ) { + +5422 +End + = +fdIt ++1; + +5423 + gNext + = +fdIt ++1; + +5424 + gfoundWpPot + = +ue +; + +5426 if + gfdIt + > + g + && + gwabBefeChs +. +fd +* +fdIt + ) ! +d +:: +rg +:: +os + ) { + +5427 +End + = +fdIt +; + +5428 + gNext + = +fdIt +; + +5429 + gfoundWpPot + = +ue +; + +5431 if + gwabIndOfChs +. +fd +* +fdIt + ) ! +d +:: +rg +:: +os + ) { + +5432 +Next + = +fdIt ++1; + +5433 + gEnd + = +fdIt +; + +5434 + gfoundWpPot + = +ue +; + +5436 if + gfdIt + = + + ) + +5439 -- + gfdIt +; + +5441  ! + gfoundWpPot + ); + +5443 if! + gfoundWpPot + ) { + +5445 -- + gEnd +; + +5446 + gNext + = +End +; + +5447 + gsuffix + = "-"; + +5450  + gEnd + > + g + && + gwabIndOfChs +. +fd +*( +End +-1! +d +:: +rg +:: +os + ) + +5451 -- +End +; + +5454 + gles +. +push_back + +dt + + +d +:: +rg + + +, +End + ) + +suffix + ); + +5456 if + gdt +. +size +(! +_ +. +dt + ) + +5457 +dt + = +d +:: +rg + +_ +.indent, ' ' ); + +5458 + g + = +Next +; + +5462  + gd +:: + tve +< + td +:: + trg +>:: + tcڡ_ + const_iterator; + +5464 +cڡ_ + +beg +(cڡ {  + gles +.begin(); } + +5465 +cڡ_ + +d +(cڡ {  + gles +.end(); } + +5466 + gd +:: +rg + cڡ& +ϡ +(cڡ {  +les +. +back +(); } + +5467 + gd +:: +size_t + +size +(cڡ {  +les +.size(); } + +5468 + gd +:: +rg + cڡ& +ݔ +[] +d +:: +size_t + +_dex + ) cڡ {  +les +[_index]; } + +5469 + gd +:: +rg + +toSg +() const { + +5470 +d +:: +orgam + +oss +; + +5471 + goss + << * + gthis +; + +5472  + goss +. +r +(); + +5475 +le + +nd + + gd +:: +oam +& +ݔ + << ( +d +::oam& +_am +, +Text + cڡ& + g_xt + ) { + +5476  + gText +:: +cڡ_ + + + = +_xt +. +beg +(), + gEnd + = _xt. +d +(); + +5477 + g + ! +End +; ++it ) { + +5478 if + g + ! +_xt +. +beg +() ) + +5479 +_am + << "\n"; + +5480 + g_am + << * + g +; + +5482  + g_am +; + +5485 + give +: + +5486 +d +:: +rg + +r +; + +5487 +TextAribus + + g +; + +5488 + gd +:: +ve +< +d +:: +rg +> +les +; + +5493 #ifde +CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + + +5498 #unde +CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE + + +5500 +mea + + gCch + { + +5501 +usg + + gTbc +:: +Text +; + +5502 +usg + + gTbc +:: +TextAribus +; + +5506  + #TWOBLUECUBES_CATCH_CONSOLE_COLOUR_HPP_INCLUDED + + + ) + +5508 +mea + + gCch + { + +5510  + sCour + { + +5511 + eCode + { + +5512 + gNe + = 0, + +5514 + gWhe +, + +5515 + gRed +, + +5516 + gG +, + +5517 + gBlue +, + +5518 + gCy +, + +5519 + gYlow +, + +5520 + gGy +, + +5522 + gBright + = 0x10, + +5524 + gBrightRed + = +Bright + | +Red +, + +5525 + gBrightG + = +Bright + | +G +, + +5526 + gLightGy + = +Bright + | +Gy +, + +5527 + gBrightWhe + = +Bright + | +Whe +, + +5530 + gFeName + = +LightGy +, + +5531 + gWng + = +Ylow +, + +5532 + gResuE + = +BrightRed +, + +5533 + gResuSucss + = +BrightG +, + +5534 + gResuExedFau + = +Wng +, + +5536 + gE + = +BrightRed +, + +5537 + gSucss + = +G +, + +5539 + gOrigExessi + = +Cy +, + +5540 + gRecڡruedExessi + = +Ylow +, + +5542 + gSecdyText + = +LightGy +, + +5543 + gHds + = +Whe + + +5547 +Cour + +Code + +_courCode + ); + +5548 +Cour +Coucڡ& +h + ); + +5549 ~ +Cour +(); + +5552  +u + +Code + +_courCode + ); + +5554 + give +: + +5555 +bo + +m_moved +; + +5558 +le + + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +Cour + cڡ& ) {  + gos +; } + +5563  + #TWOBLUECUBES_CATCH_INTERFACES_REPORTER_H_INCLUDED + + + ) + +5565  + ~ + +5566  + ~ + +5567  + ~ + +5569 +mea + + gCch + + +5571  + sR܋rCfig + { + +5572 +exic + +R܋rCfig + +P +< +ICfig + cڡ> cڡ& +_fuCfig + ) + +5573 : +m_am +& +_fuCfig +-> +am +(), +m_fuCfig +( _fullConfig ) {} + +5575 +R܋rCfig + +P +< +ICfig + cڡ> cڡ& +_fuCfig +, +d +:: +oam +& +_am + ) + +5576 : +m_am +& +_am + ), +m_fuCfig + +_fuCfig + ) {} + +5578 + gd +:: +oam +& +am +(cڡ {  * +m_am +; } + +5579 + gP +< +ICfig + cڡ> +fuCfig +(cڡ {  + gm_fuCfig +; } + +5581 + give +: + +5582 +d +:: +oam +* +m_am +; + +5583 + gP +< +ICfig + cڡ> + gm_fuCfig +; + +5586  + sR܋rPns + { + +5587 +R܋rPns +() + +5588 : +shouldRedeStdOut + +l + ) + +5591 +bo + +shouldRedeStdOut +; + +5594 + gme +< +tyme + + gT +> + +5595  + gLazySt + : +Oi +< +T +> { + +5596 +LazySt +(: +ud + +l + ) {} + +5597 +LazySt +& +ݔ += +T + cڡ& +_vue + ) { + +5598 +Oi +< +T +>:: +ݔ += +_vue + ); + +5599 + gud + = +l +; + +5600  * + gthis +; + +5602  +t +() { + +5603 + gOi +< + gT +>:: +t +(); + +5604 + gud + = +l +; + +5606 +bo + + gud +; + +5609  + sTeRunInfo + { + +5610 +TeRunInfo + +d +:: +rg + cڡ& +_me + ) : +me +( _name ) {} + +5611 +d +:: +rg + +me +; + +5613  + sGroupInfo + { + +5614 +GroupInfo + +d +:: +rg + cڡ& +_me +, + +5615 +d +:: +size_t + +_groupIndex +, + +5616 +d +:: +size_t + +_groupsCou + ) + +5617 : +me + +_me + ), + +5618 +groupIndex + +_groupIndex + ), + +5619 +groupsCous + +_groupsCou + ) + +5622 + gd +:: +rg + +me +; + +5623 + gd +:: +size_t + +groupIndex +; + +5624 + gd +:: +size_t + +groupsCous +; + +5627  + sAsiSts + { + +5628 +AsiSts + +AsiResu + cڡ& +_asiResu +, + +5629 +d +:: +ve +< +MesgeInfo +> cڡ& +_foMesges +, + +5630 +Tٮs + cڡ& +_tٮs + ) + +5631 : +asiResu + +_asiResu + ), + +5632 +foMesges + +_foMesges + ), + +5633 +tٮs + +_tٮs + ) + +5635 if + gasiResu +. +hasMesge +() ) { + +5638 +MesgeBud + +bud + +asiResu +. +gTeMaoName +(),siResu. +gSourInfo +(),siResu. +gResuTy +() ); + +5639 + gbud + << + gasiResu +. +gMesge +(); + +5640 + gbud +. + gm_fo +. + gmesge + = +bud +. +m_am +. +r +(); + +5642 + gfoMesges +. +push_back + +bud +. +m_fo + ); + +5645 + gvtu + ~ +AsiSts +(); + +5647 #ifde +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +5648 +AsiSts +( AssertionStats const& ) = ; + +5649 +AsiSts +( AssertionStats && ) = ; + +5650 + gAsiSts +& + gݔ + = ( +AsiSts + const& ) = ; + +5651 + gAsiSts +& + gݔ + = ( +AsiSts + && ) = ; + +5654 +AsiResu + + gasiResu +; + +5655 + gd +:: +ve +< +MesgeInfo +> +foMesges +; + +5656 +Tٮs + + gtٮs +; + +5659  + sSeiSts + { + +5660 +SeiSts + +SeiInfo + cڡ& +_iInfo +, + +5661 +Cous + cڡ& +_asis +, + +5662  +_dutiInSecds +, + +5663 +bo + +_missgAsis + ) + +5664 : +iInfo + +_iInfo + ), + +5665 +asis + +_asis + ), + +5666 +dutiInSecds + +_dutiInSecds + ), + +5667 +missgAsis + +_missgAsis + ) + +5669 + gvtu + ~ +SeiSts +(); + +5670 #ifde +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +5671 +SeiSts +( SectionStats const& ) = ; + +5672 +SeiSts +( SectionStats && ) = ; + +5673 + gSeiSts +& + gݔ + = ( +SeiSts + const& ) = ; + +5674 + gSeiSts +& + gݔ + = ( +SeiSts + && ) = ; + +5677 +SeiInfo + + giInfo +; + +5678 +Cous + + gasis +; + +5679  + gdutiInSecds +; + +5680 +bo + + gmissgAsis +; + +5683  + sTeCaSts + { + +5684 +TeCaSts + +TeCaInfo + cڡ& +_Info +, + +5685 +Tٮs + cڡ& +_tٮs +, + +5686 +d +:: +rg + cڡ& +_dOut +, + +5687 +d +:: +rg + cڡ& +_dE +, + +5688 +bo + +_abtg + ) + +5689 : +Info + +_Info + ), + +5690 +tٮs + +_tٮs + ), + +5691 +dOut + +_dOut + ), + +5692 +dE + +_dE + ), + +5693 +abtg + +_abtg + ) + +5695 + gvtu + ~ +TeCaSts +(); + +5697 #ifde +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +5698 +TeCaSts +( TestCaseStats const& ) = ; + +5699 +TeCaSts +( TestCaseStats && ) = ; + +5700 + gTeCaSts +& + gݔ + = ( +TeCaSts + const& ) = ; + +5701 + gTeCaSts +& + gݔ + = ( +TeCaSts + && ) = ; + +5704 +TeCaInfo + + gInfo +; + +5705 +Tٮs + + gtٮs +; + +5706 + gd +:: +rg + +dOut +; + +5707 + gd +:: +rg + +dE +; + +5708 +bo + + gabtg +; + +5711  + sTeGroupSts + { + +5712 +TeGroupSts + +GroupInfo + cڡ& +_groupInfo +, + +5713 +Tٮs + cڡ& +_tٮs +, + +5714 +bo + +_abtg + ) + +5715 : +groupInfo + +_groupInfo + ), + +5716 +tٮs + +_tٮs + ), + +5717 +abtg + +_abtg + ) + +5719 +TeGroupSts + +GroupInfo + cڡ& +_groupInfo + ) + +5720 : +groupInfo + +_groupInfo + ), + +5721 +abtg + +l + ) + +5723 + gvtu + ~ +TeGroupSts +(); + +5725 #ifde +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +5726 +TeGroupSts +( TestGroupStats const& ) = ; + +5727 +TeGroupSts +( TestGroupStats && ) = ; + +5728 + gTeGroupSts +& + gݔ + = ( +TeGroupSts + const& ) = ; + +5729 + gTeGroupSts +& + gݔ + = ( +TeGroupSts + && ) = ; + +5732 +GroupInfo + + ggroupInfo +; + +5733 +Tٮs + + gtٮs +; + +5734 +bo + + gabtg +; + +5737  + sTeRunSts + { + +5738 +TeRunSts + +TeRunInfo + cڡ& +_runInfo +, + +5739 +Tٮs + cڡ& +_tٮs +, + +5740 +bo + +_abtg + ) + +5741 : +runInfo + +_runInfo + ), + +5742 +tٮs + +_tٮs + ), + +5743 +abtg + +_abtg + ) + +5745 + gvtu + ~ +TeRunSts +(); + +5747 #ide +CATCH_CONFIG_CPP11_GENERATED_METHODS + + +5748 +TeRunSts +TeRunStcڡ& +_h + ) + +5749 : +runInfo + +_h +.runInfo ), + +5750 +tٮs + +_h +.totals ), + +5751 +abtg + +_h +.aborting ) + +5754 +TeRunSts +( TestRunStats const& ) = ; + +5755 +TeRunSts +( TestRunStats && ) = ; + +5756 + gTeRunSts +& + gݔ + = ( +TeRunSts + const& ) = ; + +5757 + gTeRunSts +& + gݔ + = ( +TeRunSts + && ) = ; + +5760 +TeRunInfo + + grunInfo +; + +5761 +Tٮs + + gtٮs +; + +5762 +bo + + gabtg +; + +5765 +ass + + gMuɝR܋rs +; + +5767  + gISmgR܋r + : +IShed + { + +5768 +vtu + ~ +ISmgR܋r +(); + +5773 +vtu + +R܋rPns + +gPns +() const = 0; + +5775 +vtu +  +noMchgTeCas + +d +:: +rg + cڡ& +ec + ) = 0; + +5777 +vtu +  +RunSg + +TeRunInfo + cڡ& +RunInfo + ) = 0; + +5778 +vtu +  +GroupSg + +GroupInfo + cڡ& +groupInfo + ) = 0; + +5780 +vtu +  +CaSg + +TeCaInfo + cڡ& +Info + ) = 0; + +5781 +vtu +  +iSg + +SeiInfo + cڡ& +iInfo + ) = 0; + +5783 +vtu +  +asiSg + +AsiInfo + cڡ& +asiInfo + ) = 0; + +5786 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +asiSts + ) = 0; + +5788 +vtu +  +iEnded + +SeiSts + cڡ& +iSts + ) = 0; + +5789 +vtu +  +CaEnded + +TeCaSts + cڡ& +CaSts + ) = 0; + +5790 +vtu +  +GroupEnded + +TeGroupSts + cڡ& +GroupSts + ) = 0; + +5791 +vtu +  +RunEnded + +TeRunSts + cڡ& +RunSts + ) = 0; + +5793 +vtu +  +skTe + +TeCaInfo + cڡ& +Info + ) = 0; + +5795 +vtu + +MuɝR܋rs +* +yAsMui +({  + gCATCH_NULL +; } + +5798  + gIR܋rFay + : +IShed + { + +5799 +vtu + ~ +IR܋rFay +(); + +5800 +vtu + +ISmgR܋r +* + + +R܋rCfig + cڡ& +cfig + ) const = 0; + +5801 +vtu + + gd +:: +rg + +gDesti +() const = 0; + +5804  + sIR܋rRegiry + { + +5805  + gd +:: + tm +< + td +:: + trg +, + tP +< + tIR܋rFay +> > + tFayM +; + +5806  + gd +:: + tve +< + tP +< + tIR܋rFay +> > + tLis +; + +5808 + gvtu + ~ +IR܋rRegiry +(); + +5809 +vtu + +ISmgR܋r +* + + +d +:: +rg + cڡ& +me +, +P +< +ICfig + cڡ> cڡ& +cfig + ) const = 0; + +5810 +vtu + +FayM + cڡ& +gFaܛs +() const = 0; + +5811 +vtu + +Lis + cڡ& +gLis +() const = 0; + +5814 + gP +< + gISmgR܋r +> +addR܋r + +P +< +ISmgR܋r +> cڡ& +exigR܋r +, P cڡ& +addiڮR܋r + ); + +5818  + ~ + +5819  + ~ + +5821 +mea + + gCch + { + +5823 +le + + gd +:: +size_t + +liTes + +Cfig + cڡ& +cfig + ) { + +5825 +TeSc + +Sc + = +cfig +.testSpec(); + +5826 if + gcfig +. +Sc +(). +hasFrs +() ) + +5827 + gCch +:: +cout +() << "Matchingest cases:\n"; + +5829 + gCch +:: +cout +() << "Allvailableest cases:\n"; + +5830 + gSc + = +TeScPr + +ITagAlsRegiry +:: +g +(). +r +"*" ). +Sc +(); + +5833 + gd +:: +size_t + +mchedTes + = 0; + +5834 +TextAribus + + gmeAr +, + gdescAr +, + ggsAr +; + +5835 + gmeAr +. +tInlIndt +2 ). +tIndt +( 4 ); + +5836 + gdescAr +. +tIndt +( 4 ); + +5837 + ggsAr +. +tIndt +( 6 ); + +5839 + gd +:: +ve +< +TeCa +> +mchedTeCas + = +frTes + +gATeCasS܋d + +cfig + ), +Sc +, config ); + +5840  + gd +:: +ve +< +TeCa +>:: +cڡ_ + + + = +mchedTeCas +. +beg +(), + gEnd + = mchedTeCas. +d +(); + +5841 + g + ! +End +; + +5842 ++ + g + ) { + +5843 + gmchedTes +++; + +5844 +TeCaInfo + cڡ& + gCaInfo + = + +-> +gTeCaInfo +(); + +5845 + gCour +:: +Code + +cour + = +CaInfo +. +isHidd +() + +5846 ? +Cour +:: +SecdyText + + +5847 : +Cour +:: +Ne +; + +5848 +Cour + +courGud + +cour + ); + +5850 + gCch +:: +cout +(<< +Text + +CaInfo +. +me +, +meAr + ) << + gd +:: +dl +; + +5851 if + gcfig +. +liExaInfo +() ) { + +5852 + gCch +:: +cout +(<< " " << +CaInfo +. +leInfo + << +d +:: +dl +; + +5853 + gd +:: +rg + +desti + = +CaInfo +.description; + +5854 if + gdesti +. +emy +() ) + +5855 + gdesti + = "(NO DESCRIPTION)"; + +5856 + gCch +:: +cout +(<< +Text + +desti +, +descAr + ) << + gd +:: +dl +; + +5858 if! + gCaInfo +. + ggs +. +emy +() ) + +5859 + gCch +:: +cout +(<< +Text + +CaInfo +. +gsAsSg +, +gsAr + ) << + gd +:: +dl +; + +5862 if! + gcfig +. +Sc +(). +hasFrs +() ) + +5863 + gCch +:: +cout +(<< +uli + +mchedTes +, " ca" ) << '\n' << + gd +:: +dl +; + +5865 + gCch +:: +cout +(<< +uli + +mchedTes +, "mchge ca" ) << '\n' << + gd +:: +dl +; + +5866  + gmchedTes +; + +5869 +le + + gd +:: +size_t + +liTesNamesOy + +Cfig + cڡ& +cfig + ) { + +5870 +TeSc + +Sc + = +cfig +.testSpec(); + +5871 if! + gcfig +. +Sc +(). +hasFrs +() ) + +5872 + gSc + = +TeScPr + +ITagAlsRegiry +:: +g +(). +r +"*" ). +Sc +(); + +5873 + gd +:: +size_t + +mchedTes + = 0; + +5874 + gd +:: +ve +< +TeCa +> +mchedTeCas + = +frTes + +gATeCasS܋d + +cfig + ), +Sc +, config ); + +5875  + gd +:: +ve +< +TeCa +>:: +cڡ_ + + + = +mchedTeCas +. +beg +(), + gEnd + = mchedTeCas. +d +(); + +5876 + g + ! +End +; + +5877 ++ + g + ) { + +5878 + gmchedTes +++; + +5879 +TeCaInfo + cڡ& + gCaInfo + = + +-> +gTeCaInfo +(); + +5880 if +tsWh + +CaInfo +. +me +, '#' ) ) + +5881 + gCch +:: +cout +(<< '"' << +CaInfo +. +me + << '"'; + +5883 + gCch +:: +cout +(<< +CaInfo +. +me +; + +5884 i + gcfig +. +liExaInfo +() ) + +5885 + gCch +:: +cout +(<< "\t@" << +CaInfo +. +leInfo +; + +5886 + gCch +:: +cout +(<< +d +:: +dl +; + +5888  + gmchedTes +; + +5891  + sTagInfo + { + +5892 +TagInfo +(: +cou + ( 0 ) {} + +5893  +add + +d +:: +rg + cڡ& +lg + ) { + +5894 ++ +cou +; + +5895 + glgs +. + + +lg + ); + +5897 + gd +:: +rg + +l +() const { + +5898 +d +:: +rg + +out +; + +5899  + gd +:: +t +< +d +:: +rg +>:: +cڡ_ + + + = +lgs +. +beg +(), + gEnd + = sΚgs. +d +(); + +5900 + g + ! +End +; + +5901 ++ + g + ) + +5902 + gout + +"[" + * + + + "]"; + +5903  + gout +; + +5905 + gd +:: +t +< +d +:: +rg +> +lgs +; + +5906 + gd +:: +size_t + +cou +; + +5909 +le + + gd +:: +size_t + +liTags + +Cfig + cڡ& +cfig + ) { + +5910 +TeSc + +Sc + = +cfig +.testSpec(); + +5911 if + gcfig +. +Sc +(). +hasFrs +() ) + +5912 + gCch +:: +cout +() << "Tags for matchingest cases:\n"; + +5914 + gCch +:: +cout +() << "Allvailableags:\n"; + +5915 + gSc + = +TeScPr + +ITagAlsRegiry +:: +g +(). +r +"*" ). +Sc +(); + +5918 + gd +:: +m +< +d +:: +rg +, + gTagInfo +> + ggCous +; + +5920 + gd +:: +ve +< +TeCa +> +mchedTeCas + = +frTes + +gATeCasS܋d + +cfig + ), +Sc +, config ); + +5921  + gd +:: +ve +< +TeCa +>:: +cڡ_ + + + = +mchedTeCas +. +beg +(), + gEnd + = mchedTeCas. +d +(); + +5922 + g + ! +End +; + +5923 ++ + g + ) { + +5924  + gd +:: +t +< +d +:: +rg +>:: +cڡ_ + +gIt + = + +-> +gTeCaInfo +(). +gs +. +beg +(), + +5925 + ggItEnd + = + +-> +gTeCaInfo +(). +gs +. +d +(); + +5926 + ggIt + ! +gItEnd +; + +5927 ++ + ggIt + ) { + +5928 + gd +:: +rg + +gName + = * +gIt +; + +5929 + gd +:: +rg + +lTagName + = +toLow + +gName + ); + +5930 + gd +:: +m +< +d +:: +rg +, + gTagInfo +>:: + + +couIt + = +gCous +. +fd + +lTagName + ); + +5931 if + gcouIt + = +gCous +. +d +() ) + +5932 +couIt + = +gCous +. + + +d +:: +make_ + +lTagName +, +TagInfo +(). + gf +; + +5933 + gcouIt +-> + gcd +. +add + +gName + ); + +5937  + gd +:: +m +< +d +:: +rg +, + gTagInfo +>:: +cڡ_ + +couIt + = +gCous +. +beg +(), + +5938 + gcouItEnd + = +gCous +. +d +(); + +5939 + gcouIt + ! +couItEnd +; + +5940 ++ + gcouIt + ) { + +5941 + gd +:: +orgam + +oss +; + +5942 + goss + << " " << + gd +:: +tw +(2<< +couIt +-> +cd +. +cou + << " "; + +5943 +Text + +w + +couIt +-> +cd +. +l +(), +TextAribus +() + +5944 . +tInlIndt +( 0 ) + +5945 . +tIndt + +oss +. +r +(). +size +() ) + +5946 . +tWidth + +CATCH_CONFIG_CONSOLE_WIDTH +-10 ) ); + +5947 + gCch +:: +cout +(<< +oss +. +r +(<< +w + << '\n'; + +5949 + gCch +:: +cout +(<< +uli + +gCous +. +size +(), "g" ) << '\n' << + gd +:: +dl +; + +5950  + ggCous +. +size +(); + +5953 +le + + gd +:: +size_t + +liR܋rs + +Cfig + const& ) { + +5954 +Cch +:: +cout +() << "Availableeporters:\n"; + +5955 + gIR܋rRegiry +:: +FayM + cڡ& +ܛs + = +gRegiryHub +(). +gR܋rRegiry +(). +gFaܛs +(); + +5956 + gIR܋rRegiry +:: +FayM +:: +cڡ_ + +Beg + = +ܛs +. +beg +(), + gEnd + = faܛs. +d +(), + g +; + +5957 + gd +:: +size_t + +maxNameL + = 0; + +5958  + g + = +Beg +; i! +End +; ++it ) + +5959 + gmaxNameL + = ( +d +:: +max +) +maxNameL +, + g +-> + gf +. +size +() ); + +5961  + g + = +Beg +; i! +End +; ++it ) { + +5962 +Text + +w + + +-> +cd +-> +gDesti +(), +TextAribus +() + +5963 . +tInlIndt +( 0 ) + +5964 . +tIndt +7+ +maxNameL + ) + +5965 . +tWidth + +CATCH_CONFIG_CONSOLE_WIDTH + - +maxNameL +-8 ) ); + +5966 + gCch +:: +cout +() << " " + +5967 << + +-> +f + + +5969 << +d +:: +rg + +maxNameL + - + +-> +f +. +size +() + 2, ' ' ) + +5970 << + gw + << '\n'; + +5972 + gCch +:: +cout +(<< +d +:: +dl +; + +5973  + gܛs +. +size +(); + +5976 +le + + gOi +< + gd +:: +size_t +> +li + +Cfig + cڡ& +cfig + ) { + +5977 +Oi +< +d +:: +size_t +> +liedCou +; + +5978 if + gcfig +. +liTes +(|| ( cfig. +liExaInfo +(&& !cfig. +liTeNamesOy +() ) ) + +5979 + gliedCou + = +liedCou +. +vueOr +(0+ +liTes + +cfig + ); + +5980 if + gcfig +. +liTeNamesOy +() ) + +5981 + gliedCou + = +liedCou +. +vueOr +(0+ +liTesNamesOy + +cfig + ); + +5982 if + gcfig +. +liTags +() ) + +5983 + gliedCou + = +liedCou +. +vueOr +(0+ +liTags + +cfig + ); + +5984 if + gcfig +. +liR܋rs +() ) + +5985 + gliedCou + = +liedCou +. +vueOr +(0+ +liR܋rs + +cfig + ); + +5986  + gliedCou +; + +5992  + #TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED + + + ) + +5995  + #TWOBLUECUBES_CATCH_TEST_CASE_TRACKER_HPP_INCLUDED + + + ) + +5997  + ~ + +5998  + ~ + +5999  + ~ + +6000  + ~ + +6001  + ~ + +6003 +CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS + + +6005 +mea + + gCch + { + +6006 +mea + + gTeCaTckg + { + +6008  + sNameAndLoti + { + +6009 + gd +:: +rg + +me +; + +6010 +SourLeInfo + + gloti +; + +6012 +NameAndLoti + +d +:: +rg + cڡ& +_me +, +SourLeInfo + cڡ& +_loti + ) + +6013 : +me + +_me + ), + +6014 +loti + +_loti + ) + +6018  + gITck + : +ShedIm +<> { + +6019 +vtu + ~ +ITck +(); + +6022 +vtu + +NameAndLoti + cڡ& +meAndLoti +() const = 0; + +6025 +vtu + +bo + +isCome +() const = 0; + +6026 +vtu + +bo + +isSucssfuyComed +() const = 0; + +6027 +vtu + +bo + +isOn +() const = 0; + +6028 +vtu + +bo + +hasChdn +() const = 0; + +6030 +vtu + + gITck +& + +() = 0; + +6033 +vtu +  +o +() = 0; + +6034 +vtu +  + +() = 0; + +6035 +vtu +  +mkAsNdgAnhRun +() = 0; + +6037 +vtu +  +addChd + +P +< +ITck +> cڡ& +chd + ) = 0; + +6038 +vtu + +ITck +* +fdChd + +NameAndLoti + cڡ& +meAndLoti + ) = 0; + +6039 +vtu +  +ݒChd +() = 0; + +6042 +vtu + +bo + +isSeiTck +() const = 0; + +6043 +vtu + +bo + +isIndexTck +() const = 0; + +6046 as + cTckCڋxt + { + +6048 + eRunS + { + +6049 + gNSed +, + +6050 + gExecutg +, + +6051 + gComedCye + + +6054 + gP +< + gITck +> + gm_roTck +; + +6055 +ITck +* + gm_cutTck +; + +6056 +RunS + + gm_runS +; + +6058 + gpublic +: + +6060  +TckCڋxt +& + +() { + +6061  +TckCڋxt + +s_ +; + +6062  + gs_ +; + +6065 +TckCڋxt +() + +6066 : +m_cutTck + +CATCH_NULL + ), + +6067 +m_runS + +NSed + ) + +6070 + gITck +& +tRun +(); + +6072  +dRun +() { + +6073 + gm_roTck +. +t +(); + +6074 + gm_cutTck + = +CATCH_NULL +; + +6075 + gm_runS + = +NSed +; + +6078  +tCye +() { + +6079 + gm_cutTck + = +m_roTck +. +g +(); + +6080 + gm_runS + = +Executg +; + +6082  +comeCye +() { + +6083 + gm_runS + = +ComedCye +; + +6086 +bo + +comedCye +() const { + +6087  + gm_runS + = +ComedCye +; + +6089 + gITck +& +cutTck +() { + +6090  * + gm_cutTck +; + +6092  +tCutTck + +ITck +* +ack + ) { + +6093 + gm_cutTck + = +ack +; + +6097 as + cTckBa + : +public + +ITck + { + +6098 +eed +: + +6099 + eCyeS + { + +6100 +NSed +, + +6101 + gExecutg +, + +6102 + gExecutgChdn +, + +6103 + gNdsAnhRun +, + +6104 + gComedSucssfuy +, + +6105 + gFaed + + +6107 as + cTckHasName + { + +6108 +NameAndLoti + + gm_meAndLoti +; + +6109 + gpublic +: + +6110 +TckHasName + +NameAndLoti + cڡ& +meAndLoti + ) : +m_meAndLoti +(ameAndLocation ) {} + +6111 +bo + +ݔ + () +P +< +ITck +> cڡ& +ack + ) { + +6113 +ack +-> +meAndLoti +(). +me + = +m_meAndLoti +.name && + +6114 +ack +-> +meAndLoti +(). +loti + = +m_meAndLoti +.location; + +6117  + gd +:: + tve +< + tP +< + tITck +> > + tChdn +; + +6118 +NameAndLoti + + gm_meAndLoti +; + +6119 + gTckCڋxt +& + gm_x +; + +6120 +ITck +* + gm_ +; + +6121 +Chdn + + gm_chdn +; + +6122 +CyeS + + gm_runS +; + +6123 + gpublic +: + +6124 +TckBa + +NameAndLoti + cڡ& +meAndLoti +, +TckCڋxt +& +x +, +ITck +* + + ) + +6125 : +m_meAndLoti + +meAndLoti + ), + +6126 +m_x + +x + ), + +6127 +m_ + + + ), + +6128 +m_runS + +NSed + ) + +6130 + gvtu + ~ +TckBa +(); + +6132 +vtu + +NameAndLoti + cڡ& +meAndLoti +(cڡ + gCATCH_OVERRIDE + { + +6133  + gm_meAndLoti +; + +6135 +vtu + +bo + +isCome +(cڡ + gCATCH_OVERRIDE + { + +6136  + gm_runS + = +ComedSucssfuy + || +m_runS + = +Faed +; + +6138 +vtu + +bo + +isSucssfuyComed +(cڡ + gCATCH_OVERRIDE + { + +6139  + gm_runS + = +ComedSucssfuy +; + +6141 +vtu + +bo + +isOn +(cڡ + gCATCH_OVERRIDE + { + +6142  + gm_runS + ! +NSed + && ! +isCome +(); + +6144 +vtu + +bo + +hasChdn +(cڡ + gCATCH_OVERRIDE + { + +6145  ! + gm_chdn +. +emy +(); + +6148 +vtu +  +addChd + +P +< +ITck +> cڡ& +chd + ) + gCATCH_OVERRIDE + { + +6149 + gm_chdn +. +push_back + +chd + ); + +6152 +vtu + +ITck +* +fdChd + +NameAndLoti + cڡ& +meAndLoti + ) + gCATCH_OVERRIDE + { + +6153 + gChdn +:: +cڡ_ + + + = +d +:: +fd_if + +m_chdn +. +beg +(), m_chdn. +d +(), +TckHasName + +meAndLoti + ) ); + +6154  + g + ! +m_chdn +. +d +() ) + +6155 ? + +-> +g +() + +6156 : +CATCH_NULL +; + +6158 +vtu + + gITck +& + +( + gCATCH_OVERRIDE + { + +6159 +as + +m_ + ); + +6160  * + gm_ +; + +6163 +vtu +  +ݒChd +( + gCATCH_OVERRIDE + { + +6164 if + gm_runS + ! +ExecutgChdn + ) { + +6165 +m_runS + = +ExecutgChdn +; + +6166 if + gm_ + ) + +6167 + gm_ +-> +ݒChd +(); + +6171 +vtu + +bo + +isSeiTck +(cڡ + gCATCH_OVERRIDE + {  + gl +; } + +6172 +vtu + +bo + +isIndexTck +(cڡ + gCATCH_OVERRIDE + {  + gl +; } + +6174  +ݒ +() { + +6175 + gm_runS + = +Executg +; + +6176 +moveToThis +(); + +6177 if + gm_ + ) + +6178 + gm_ +-> +ݒChd +(); + +6181 +vtu +  +o +( + gCATCH_OVERRIDE + { + +6184  & + gm_x +. +cutTck +(! +this + ) + +6185 +m_x +. +cutTck +(). +o +(); + +6187  + gm_runS + ) { + +6188  + gNSed +: + +6189  +ComedSucssfuy +: + +6190  +Faed +: + +6191 +throw + +d +:: +logic_r +( "Illogical state" ); + +6193  + gNdsAnhRun +: + +6196  + gExecutg +: + +6197 +m_runS + = +ComedSucssfuy +; + +6199  + gExecutgChdn +: + +6200 if +m_chdn +. +emy +(|| m_chdn. +back +()-> +isCome +() ) + +6201 +m_runS + = +ComedSucssfuy +; + +6205 +throw + +d +:: +logic_r +( "Unexpected state" ); + +6207 +moveToPt +(); + +6208 + gm_x +. +comeCye +(); + +6210 +vtu +  + +( + gCATCH_OVERRIDE + { + +6211 + gm_runS + = +Faed +; + +6212 if + gm_ + ) + +6213 + gm_ +-> +mkAsNdgAnhRun +(); + +6214 +moveToPt +(); + +6215 + gm_x +. +comeCye +(); + +6217 +vtu +  +mkAsNdgAnhRun +( + gCATCH_OVERRIDE + { + +6218 + gm_runS + = +NdsAnhRun +; + +6220 + give +: + +6221  +moveToPt +() { + +6222 +as + +m_ + ); + +6223 + gm_x +. +tCutTck + +m_ + ); + +6225  +moveToThis +() { + +6226 + gm_x +. +tCutTck + +this + ); + +6230 as + cSeiTck + : +public + +TckBa + { + +6231 +d +:: +ve + +m_frs +; + +6232 + gpublic +: + +6233 +SeiTck + +NameAndLoti + cڡ& +meAndLoti +, +TckCڋxt +& +x +, +ITck +* + + ) + +6234 : +TckBa + +meAndLoti +, +x +, + + ) + +6236 if + g + ) { + +6237  ! + g +-> +isSeiTck +() ) + +6238 + g + = & + +->parent(); + +6240 + gSeiTck +& + gSei + = +ic_ +< +SeiTck +&>* + + ); + +6241 +addNextFrs + +Sei +. +m_frs + ); + +6244 + gvtu + ~ +SeiTck +(); + +6246 +vtu + +bo + +isSeiTck +(cڡ + gCATCH_OVERRIDE + {  + gue +; } + +6248  + gSeiTck +& +acque + +TckCڋxt +& +x +, +NameAndLoti + cڡ& +meAndLoti + ) { + +6249 +SeiTck +* + gi + = +CATCH_NULL +; + +6251 + gITck +& + gcutTck + = +x +. +cutTck +(); + +6252 if +ITck +* + gchdTck + = +cutTck +. +fdChd + +meAndLoti + ) ) { + +6253 +as + +chdTck + ); + +6254 +as + +chdTck +-> +isSeiTck +() ); + +6255 + gi + = +ic_ +< +SeiTck +*> +chdTck + ); + +6258 + gi + = +w + +SeiTck + +meAndLoti +, +x +, & +cutTck + ); + +6259 + gcutTck +. +addChd + +i + ); + +6261 if! + gx +. +comedCye +() ) + +6262 + gi +-> +yOn +(); + +6263  * + gi +; + +6266  +yOn +() { + +6267 if! +isCome +(&& ( + gm_frs +. +emy +(|| m_frs[0].emy(|| m_frs[0] = +m_meAndLoti +. +me + ) ) + +6268 +ݒ +(); + +6271  +addInlFrs + +d +:: +ve + cڡ& +frs + ) { + +6272 if! +frs +. +emy +() ) { + +6273 +m_frs +. +push_back +(""); + +6274 + gm_frs +. +push_back +(""); + +6275 + gm_frs +. + + +m_frs +. +d +(), +frs +. +beg +(), filters.end() ); + +6278  +addNextFrs + +d +:: +ve + cڡ& +frs + ) { + +6279 if +frs +. +size +() > 1 ) + +6280 +m_frs +. + +m_frs. +d +(), ++ +frs +. +beg +(), filters.end() ); + +6284 as + cIndexTck + : +public + +TckBa + { + +6285  +m_size +; + +6286  + gm_dex +; + +6287 + gpublic +: + +6288 +IndexTck + +NameAndLoti + cڡ& +meAndLoti +, +TckCڋxt +& +x +, +ITck +* + +,  +size + ) + +6289 : +TckBa + +meAndLoti +, +x +, + + ), + +6290 +m_size + +size + ), + +6291 +m_dex +( -1 ) + +6293 + gvtu + ~ +IndexTck +(); + +6295 +vtu + +bo + +isIndexTck +(cڡ + gCATCH_OVERRIDE + {  + gue +; } + +6297  + gIndexTck +& +acque + +TckCڋxt +& +x +, +NameAndLoti + cڡ& +meAndLoti +,  +size + ) { + +6298 +IndexTck +* + gack + = +CATCH_NULL +; + +6300 + gITck +& + gcutTck + = +x +. +cutTck +(); + +6301 if +ITck +* + gchdTck + = +cutTck +. +fdChd + +meAndLoti + ) ) { + +6302 +as + +chdTck + ); + +6303 +as + +chdTck +-> +isIndexTck +() ); + +6304 + gack + = +ic_ +< +IndexTck +*> +chdTck + ); + +6307 + gack + = +w + +IndexTck + +meAndLoti +, +x +, & +cutTck +, +size + ); + +6308 + gcutTck +. +addChd + +ack + ); + +6311 if! + gx +. +comedCye +(&& ! + gack +-> +isCome +() ) { + +6312 if + gack +-> + gm_runS + ! +ExecutgChdn + && +ack +-> +m_runS + ! +NdsAnhRun + ) + +6313 +ack +-> +moveNext +(); + +6314 + gack +-> +ݒ +(); + +6317  * + gack +; + +6320  +dex +(cڡ {  + gm_dex +; } + +6322  +moveNext +() { + +6323 + gm_dex +++; + +6324 + gm_chdn +. +r +(); + +6327 +vtu +  +o +( + gCATCH_OVERRIDE + { + +6328 + gTckBa +:: +o +(); + +6329 if + gm_runS + = +ComedSucssfuy + && +m_dex + < +m_size +-1 ) + +6330 +m_runS + = +Executg +; + +6334 +le + + gITck +& + gTckCڋxt +:: +tRun +() { + +6335 +m_roTck + = +w + +SeiTck + +NameAndLoti +"{ro}", +CATCH_INTERNAL_LINEINFO + ), * +this +, +CATCH_NULL + ); + +6336 + gm_cutTck + = +CATCH_NULL +; + +6337 + gm_runS + = +Executg +; + +6338  * + gm_roTck +; + +6343 +usg + + gTeCaTckg +:: +ITck +; + +6344 +usg + + gTeCaTckg +:: +TckCڋxt +; + +6345 +usg + + gTeCaTckg +:: +SeiTck +; + +6346 +usg + + gTeCaTckg +:: +IndexTck +; + +6350 + gCATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS + + +6353  + #TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED + + + ) + +6355 +mea + + gCch + { + +6358 +le +  +ptF + +d +:: +rg + cڡ& +mesge + ) { + +6359 +ICڋxt +& +cڋxt + = +Cch +:: +gCutCڋxt +(); + +6360 +IResuCtu +* + gsuCtu + = +cڋxt +. +gResuCtu +(); + +6361 + gsuCtu +-> +hdFECdi + +mesge + ); + +6366 #i + $defed + ( +CATCH_PLATFORM_WINDOWS + ) + +6369  + #TWOBLUECUBES_CATCH_WINDOWS_H_PROXY_H_INCLUDED + + + ) + +6371 #ifde +CATCH_DEFINES_NOMINMAX + + +6372  + #NOMINMAX + + + ) + +6374 #ifde +CATCH_DEFINES_WIN32_LEAN_AND_MEAN + + +6375  + #WIN32_LEAN_AND_MEAN + + + ) + +6378 #ifde +__AFXDLL + + +6379  + ~ + +6381  + ~ + +6384 #ifde +CATCH_DEFINES_NOMINMAX + + +6385 #unde +NOMINMAX + + +6387 #ifde +CATCH_DEFINES_WIN32_LEAN_AND_MEAN + + +6388 #unde +WIN32_LEAN_AND_MEAN + + +6392 #i! + $defed + ( +CATCH_CONFIG_WINDOWS_SEH + ) + +6394 +mea + +Cch + { + +6395  + sFCdiHdr + { + +6396  + `t +() {} + +6398 + } +} + +6402 +mea + + gCch + { + +6404  + sSiglDefs + { +DWORD + + gid +; cڡ * + gme +; }; + +6405 +SiglDefs + +siglDefs +[]; + +6409 +SiglDefs + + gsiglDefs +[] = { + +6410 { +EXCEPTION_ILLEGAL_INSTRUCTION +, "SIGILL - Illegal instruction signal" }, + +6411 { +EXCEPTION_STACK_OVERFLOW +, "SIGSEGV - Stack overflow" }, + +6412 { +EXCEPTION_ACCESS_VIOLATION +, "SIGSEGV - Segmentation violation signal" }, + +6413 { +EXCEPTION_INT_DIVIDE_BY_ZERO +, "Divide by zerorror" }, + +6416  + sFCdiHdr + { + +6418  +LONG + +CALLBACK + +hdVeedExi +( +PEXCEPTION_POINTERS + +ExiInfo +) { + +6419  + gi + = 0; i < ( + gsiglDefs +/ ( + gSiglDefs +); ++i) { + +6420 i( + gExiInfo +-> + gExiRecd +-> + gExiCode + = +siglDefs +[ +i +]. +id +) { + +6421 +ptF +( +siglDefs +[ +i +]. +me +); + +6426  + gEXCEPTION_CONTINUE_SEARCH +; + +6429 +FCdiHdr +() { + +6430 + gisS + = +ue +; + +6433 + ggueSize + = 32 * 1024; + +6434 + gexiHdrHd + = +CATCH_NULL +; + +6436 + gexiHdrHd + = +AddVeedExiHdr +(1, +hdVeedExi +); + +6438 +SThadSckGue +(& +gueSize +); + +6441  +t +() { + +6442 i( + gisS +) { + +6444 +RemoveVeedExiHdr +( +exiHdrHd +); + +6445 +SThadSckGue +(& +gueSize +); + +6446 + gexiHdrHd + = +CATCH_NULL +; + +6447 + gisS + = +l +; + +6451 ~ +FCdiHdr +() { + +6452 +t +(); + +6454 + give +: + +6455  +bo + +isS +; + +6456  +ULONG + + ggueSize +; + +6457  +PVOID + + gexiHdrHd +; + +6460 +bo + + gFCdiHdr +:: +isS + = +l +; + +6461 +ULONG + + gFCdiHdr +:: +gueSize + = 0; + +6462 +PVOID + + gFCdiHdr +:: +exiHdrHd + = +CATCH_NULL +; + +6470 #i! + $defed +( +CATCH_CONFIG_POSIX_SIGNALS +) + +6472 +mea + +Cch + { + +6473  + sFCdiHdr + { + +6474  + `t +() {} + +6476 + } +} + +6480  + ~ + +6482 +mea + + gCch + { + +6484  + sSiglDefs + { + +6485  + gid +; + +6486 cڡ * + gme +; + +6488 +SiglDefs + +siglDefs +[]; + +6489 +SiglDefs + + gsiglDefs +[] = { + +6490 { +SIGINT +, "SIGINT - Terminal interrupt signal" }, + +6491 { +SIGILL +, "SIGILL - Illegal instruction signal" }, + +6492 { +SIGFPE +, "SIGFPE - Floatingointrror signal" }, + +6493 { +SIGSEGV +, "SIGSEGV - Segmentation violation signal" }, + +6494 { +SIGTERM +, "SIGTERM - Terminationequest signal" }, + +6495 { +SIGABRT +, "SIGABRT - Abort (abnormalermination) signal" } + +6498  + sFCdiHdr + { + +6500  +bo + + gisS +; + +6501  +sigai + + gdSigAis + [( +siglDefs +)/( +SiglDefs +)]; + +6502  +ack_t + + gdSigSck +; + +6503  + gtSckMem +[ +SIGSTKSZ +]; + +6505  +hdSigl + +sig + ) { + +6506 + gd +:: +rg + +me + = ""; + +6507  + gd +:: +size_t + +i + = 0; + gi + < ( + gsiglDefs +/ ( + gSiglDefs +); ++i) { + +6508 + gSiglDefs + & + gdef + = +siglDefs +[ +i +]; + +6509 i( + gsig + = +def +. +id +) { + +6510 +me + = +def +.name; + +6514 +t +(); + +6515 +ptF +( +me +); + +6516 +i + +sig + ); + +6519 +FCdiHdr +() { + +6520 + gisS + = +ue +; + +6521 +ack_t + + gsigSck +; + +6522 + gsigSck +. + gss_ + = +tSckMem +; + +6523 + gsigSck +. + gss_size + = +SIGSTKSZ +; + +6524 + gsigSck +. + gss_ags + = 0; + +6525 +sigtack +(& +sigSck +, & +dSigSck +); + +6526  +sigai + + g + = { 0 }; + +6528 + g +. + g_hdr + = +hdSigl +; + +6529 + g +. + g_ags + = +SA_ONSTACK +; + +6530  + gd +:: +size_t + +i + = 0; + gi + < ( + gsiglDefs +)/( + gSiglDefs +); ++i) { + +6531 +sigai +( +siglDefs +[ +i +]. +id +, & + +, & +dSigAis +[i]); + +6535 ~ +FCdiHdr +() { + +6536 +t +(); + +6538  +t +() { + +6539 if + gisS + ) { + +6541  + gd +:: +size_t + +i + = 0; + gi + < ( + gsiglDefs +)/( + gSiglDefs +); ++i ) { + +6542 +sigai +( +siglDefs +[ +i +]. +id +, & +dSigAis +[i], +CATCH_NULL +); + +6545 +sigtack +(& +dSigSck +, +CATCH_NULL +); + +6546 + gisS + = +l +; + +6551 +bo + + gFCdiHdr +:: +isS + = +l +; + +6552  +sigai + + gFCdiHdr +:: +dSigAis +[( +siglDefs +)/( +SiglDefs +)] = {}; + +6553 +ack_t + + gFCdiHdr +:: +dSigSck + = {}; + +6554  + gFCdiHdr +:: +tSckMem +[ +SIGSTKSZ +] = {}; + +6562  + ~ + +6563  + ~ + +6565 +mea + + gCch + { + +6567 as + cSmRede + { + +6569 + gpublic +: + +6570 +SmRede + +d +:: +oam +& +am +, std:: +rg +& +rgSg + ) + +6571 : +m_am + +am + ), + +6572 +m_evBuf + +am +. +rdbuf +() ), + +6573 +m_rgSg + +rgSg + ) + +6575 + gam +. +rdbuf + +m_oss +.rdbuf() ); + +6578 ~ +SmRede +() { + +6579 + gm_rgSg + + +m_oss +. +r +(); + +6580 + gm_am +. +rdbuf + +m_evBuf + ); + +6583 + give +: + +6584 +d +:: +oam +& +m_am +; + +6585 + gd +:: +ambuf +* +m_evBuf +; + +6586 + gd +:: +orgam + +m_oss +; + +6587 + gd +:: +rg +& +m_rgSg +; + +6593 as + cStdERede + { + +6594 + gpublic +: + +6595 +StdERede +( +d +:: +rg +& +rgSg +) + +6596 : +m_Buf + + +(). +rdbuf +(), +m_ogBuf +( +og +().rdbuf()), + +6597 +m_rgSg +( +rgSg +){ + +6598 + +(). +rdbuf +( +m_oss +.rdbuf()); + +6599 +og +(). +rdbuf +( +m_oss +.rdbuf()); + +6601 ~ +StdERede +() { + +6602 + gm_rgSg + + +m_oss +. +r +(); + +6603 + +(). +rdbuf +( +m_Buf +); + +6604 +og +(). +rdbuf +( +m_ogBuf +); + +6606 + give +: + +6607 +d +:: +ambuf +* +m_Buf +; + +6608 + gd +:: +ambuf +* +m_ogBuf +; + +6609 + gd +:: +orgam + +m_oss +; + +6610 + gd +:: +rg +& +m_rgSg +; + +6615 +ass + + gRunCڋxt + : +public + +IResuCtu +,ubli + gIRu” + { + +6617 +RunCڋxt +( RunContext const& ); + +6618  + gݔ + = +RunCڋxt + const& ); + +6620 + gpublic +: + +6622 +exic + +RunCڋxt + +P +< +ICfig + cڡ> cڡ& +_cfig +, P< +ISmgR܋r +> cڡ& +p܋r + ) + +6623 : +m_runInfo + +_cfig +-> +me +() ), + +6624 +m_cڋxt + +gCutMubCڋxt +() ), + +6625 +m_aiveTeCa + +CATCH_NULL + ), + +6626 +m_cfig + +_cfig + ), + +6627 +m_p܋r + +p܋r + ), + +6628 +m_shouldRtUxed + ( +ue + ) + +6630 + gm_cڋxt +. +tRu” + +this + ); + +6631 + gm_cڋxt +. +tCfig + +m_cfig + ); + +6632 + gm_cڋxt +. +tResuCtu + +this + ); + +6633 + gm_p܋r +-> +RunSg + +m_runInfo + ); + +6636 + gvtu + ~ +RunCڋxt +() { + +6637 + gm_p܋r +-> +RunEnded + +TeRunSts + +m_runInfo +, +m_tٮs +, +abtg +() ) ); + +6640  +GroupSg + +d +:: +rg + cڡ& +Sc +, std:: +size_t + +groupIndex +, std::size_ +groupsCou + ) { + +6641 +m_p܋r +-> +GroupSg + +GroupInfo + +Sc +, +groupIndex +, +groupsCou + ) ); + +6643  +GroupEnded + +d +:: +rg + cڡ& +Sc +, +Tٮs + cڡ& +tٮs +, std:: +size_t + +groupIndex +, std::size_ +groupsCou + ) { + +6644 +m_p܋r +-> +GroupEnded + +TeGroupSts + +GroupInfo + +Sc +, +groupIndex +, +groupsCou + ), +tٮs +, +abtg +() ) ); + +6647 +Tٮs + +runTe + +TeCa + cڡ& +Ca + ) { + +6648 +Tٮs + + gevTٮs + = +m_tٮs +; + +6650 + gd +:: +rg + +deedCout +; + +6651 + gd +:: +rg + +deedCr +; + +6653 +TeCaInfo + + gInfo + = +Ca +. +gTeCaInfo +(); + +6655 + gm_p܋r +-> +CaSg + +Info + ); + +6657 + gm_aiveTeCa + = & +Ca +; + +6660 + gITck +& + groTck + = +m_ackCڋxt +. +tRun +(); + +6661 +as + +roTck +. +isSeiTck +() ); + +6662 + gic_ +< + gSeiTck +&> + groTck + ). +addInlFrs + +m_cfig +-> +gSeisToRun +() ); + +6664 + gm_ackCڋxt +. +tCye +(); + +6665 + gm_CaTck + = & +SeiTck +:: +acque + +m_ackCڋxt +, +TeCaTckg +:: +NameAndLoti + +Info +. +me +,eInfo. +leInfo + ) ); + +6666 +runCutTe + +deedCout +, +deedCr + ); + +6668  ! + gm_CaTck +-> +isSucssfuyComed +(&& ! +abtg +() ); + +6671  +gCutCڋxt +(). +advGsFCutTe +(&& ! +abtg +() ); + +6673 +Tٮs + + gdTٮs + = +m_tٮs +. +d + +evTٮs + ); + +6674 if + gInfo +. +exedToFa +(&& + gdTٮs +. + gCas +. + gsd + > 0 ) { + +6675 + gdTٮs +. + gasis +. + ged +++; + +6676 + gdTٮs +. + gCas +. + gsd +--; + +6677 + gdTٮs +. + gCas +. + ged +++; + +6679 + gm_tٮs +. + gCas + + +dTٮs +. +Cas +; + +6680 + gm_p܋r +-> +CaEnded + +TeCaSts + +Info +, + +6681 +dTٮs +, + +6682 +deedCout +, + +6683 +deedCr +, + +6684 +abtg +() ) ); + +6686 + gm_aiveTeCa + = +CATCH_NULL +; + +6687 + gm_CaTck + = +CATCH_NULL +; + +6689  + gdTٮs +; + +6692 + gP +< +ICfig + cڡ> +cfig +() const { + +6693  + gm_cfig +; + +6696 + give +: + +6698 +vtu +  +asiEnded + +AsiResu + cڡ& +su + ) { + +6699 if +su +. +gResuTy +(= +ResuWas +:: +Ok + ) { + +6700 +m_tٮs +. +asis +. +sd +++; + +6702 if! + gsu +. +isOk +() ) { + +6703 + gm_tٮs +. + gasis +. + ged +++; + +6708 + gic_ +<>( + gm_p܋r +-> +asiEnded +( +AsiSts +( +su +, +m_mesges +, +m_tٮs +))); + +6711 + gm_ϡAsiInfo + = +AsiInfo +"", +m_ϡAsiInfo +. +leInfo +, "{Unknowexessiڇᔁhp܋de}" , m_ϡAsiInfo. +suDiosi + ); + +6712 + gm_ϡResu + = +su +; + +6715 +vtu + +bo + +ϡAsiPasd +() + +6717  + gm_tٮs +. + gasis +. + gsd + =( +m_evPasd + + 1); + +6720 +vtu +  +asiPasd +() + +6722 + gm_tٮs +. + gasis +. + gsd +++; + +6723 + gm_ϡAsiInfo +. + gudExessi + = "{Unknownxpressionfterheeportedine}"; + +6724 + gm_ϡAsiInfo +. + gmaoName + = ""; + +6727 +vtu +  +asiRun +() + +6729 + gm_evPasd + = +m_tٮs +. +asis +. +sd +; + +6732 +vtu + +bo + +iSed + ( + +6733 +SeiInfo + cڡ& +iInfo +, + +6734 +Cous +& +asis + + +6737 + gITck +& + giTck + = +SeiTck +:: +acque + +m_ackCڋxt +, +TeCaTckg +:: +NameAndLoti + +iInfo +. +me +, seiInfo. +leInfo + ) ); + +6738 if! + giTck +. +isOn +() ) + +6739  + gl +; + +6740 + gm_aiveSeis +. +push_back +& +iTck + ); + +6742 + gm_ϡAsiInfo +. + gleInfo + = +iInfo +. +leInfo +; + +6744 + gm_p܋r +-> +iSg + +iInfo + ); + +6746 + gasis + = +m_tٮs +. +asis +; + +6748  + gue +; + +6750 +bo + +FMissgAsis + +Cous +& +asis + ) { + +6751 if + gasis +. +tٮ +() != 0 ) + +6752  +l +; + +6753 if! + gm_cfig +-> +wnAboutMissgAsis +() ) + +6754  + gl +; + +6755 if + gm_ackCڋxt +. +cutTck +(). +hasChdn +() ) + +6756  + gl +; + +6757 + gm_tٮs +. + gasis +. + ged +++; + +6758 + gasis +. + ged +++; + +6759  + gue +; + +6762 +vtu +  +iEnded + +SeiEndInfo + cڡ& +dInfo + ) { + +6763 +Cous + + gasis + = +m_tٮs +. +asis + - +dInfo +. +evAsis +; + +6764 +bo + + gmissgAsis + = +FMissgAsis + +asis + ); + +6766 if! + gm_aiveSeis +. +emy +() ) { + +6767 + gm_aiveSeis +. +back +()-> +o +(); + +6768 + gm_aiveSeis +. +p_back +(); + +6771 + gm_p܋r +-> +iEnded + +SeiSts + +dInfo +. +iInfo +, +asis +,ndInfo. +dutiInSecds +, +missgAsis + ) ); + +6772 + gm_mesges +. +r +(); + +6775 +vtu +  +iEndedEly + +SeiEndInfo + cڡ& +dInfo + ) { + +6776 if + gm_unfishedSeis +. +emy +() ) + +6777 + gm_aiveSeis +. +back +()-> + +(); + +6779 + gm_aiveSeis +. +back +()-> +o +(); + +6780 + gm_aiveSeis +. +p_back +(); + +6782 + gm_unfishedSeis +. +push_back + +dInfo + ); + +6785 +vtu +  +pushScedMesge + +MesgeInfo + cڡ& +mesge + ) { + +6786 + gm_mesges +. +push_back + +mesge + ); + +6789 +vtu +  +pScedMesge + +MesgeInfo + cڡ& +mesge + ) { + +6790 + gm_mesges +. +a + +d +:: +move + +m_mesges +. +beg +(), m_mesges. +d +(), +mesge + ), m_messages.end() ); + +6793 +vtu + + gd +:: +rg + +gCutTeName +() const { + +6794  +m_aiveTeCa + + +6795 ? +m_aiveTeCa +-> +gTeCaInfo +(). +me + + +6796 : +d +:: +rg +(); + +6799 +vtu + cڡ +AsiResu +* +gLaResu +() const { + +6800  & + gm_ϡResu +; + +6803 +vtu +  +exiElyR܋d +() { + +6804 + gm_shouldRtUxed + = +l +; + +6807 +vtu +  +hdFECdi + +d +:: +rg + cڡ& +mesge + ) { + +6810 +AsiResuDa + +mpResu +; + +6811 + gmpResu +. + gsuTy + = +ResuWas +:: +FECdi +; + +6812 + gmpResu +. + gmesge + = +mesge +; + +6813 +AsiResu + +su +( +m_ϡAsiInfo +, +mpResu +); + +6815 +gResuCtu +(). +asiEnded +( +su +); + +6817 +hdUnfishedSeis +(); + +6820 +TeCaInfo + cڡ& + gCaInfo + = +m_aiveTeCa +-> +gTeCaInfo +(); + +6821 +SeiInfo + +CaSei + +CaInfo +. +leInfo +,eCaInfo. +me +,eCaInfo. +desti + ); + +6823 +Cous + + gasis +; + +6824 + gasis +. + ged + = 1; + +6825 +SeiSts + +CaSeiSts + +CaSei +, +asis +, 0, +l + ); + +6826 + gm_p܋r +-> +iEnded + +CaSeiSts + ); + +6828 +TeCaInfo + + gInfo + = +m_aiveTeCa +-> +gTeCaInfo +(); + +6830 +Tٮs + + gdTٮs +; + +6831 + gdTٮs +. + gCas +. + ged + = 1; + +6832 + gdTٮs +. + gasis +. + ged + = 1; + +6833 + gm_p܋r +-> +CaEnded + +TeCaSts + +Info +, + +6834 +dTٮs +, + +6835 +d +:: +rg +(), + +6836 +d +:: +rg +(), + +6837 +l + ) ); + +6838 + gm_tٮs +. + gCas +. + ged +++; + +6839 +GroupEnded + +d +:: +rg +(), +m_tٮs +, 1, 1 ); + +6840 + gm_p܋r +-> +RunEnded + +TeRunSts + +m_runInfo +, +m_tٮs +, +l + ) ); + +6843 + gpublic +: + +6845 +bo + +abtg +() const { + +6846  +m_tٮs +. +asis +. +ed + = +ic_ +< +d +:: +size_t +> +m_cfig +-> +abtA +() ); + +6849 + give +: + +6851  +runCutTe + +d +:: +rg +& +deedCout +, std::rg& +deedCr + ) { + +6852 +TeCaInfo + cڡ& +CaInfo + = +m_aiveTeCa +-> +gTeCaInfo +(); + +6853 +SeiInfo + +CaSei + +CaInfo +. +leInfo +,eCaInfo. +me +,eCaInfo. +desti + ); + +6854 + gm_p܋r +-> +iSg + +CaSei + ); + +6855 +Cous + + gevAsis + = +m_tٮs +. +asis +; + +6856  + gduti + = 0; + +6857 + gm_shouldRtUxed + = +ue +; + +6858 + gy + { + +6859 + gm_ϡAsiInfo + = +AsiInfo +"TEST_CASE", +CaInfo +. +leInfo +, "", +ResuDiosi +:: +Nm + ); + +6861 +edRng +* +m_cfig + ); + +6863 +Tim + + gtim +; + +6864 + gtim +. +t +(); + +6865 if + gm_p܋r +-> +gPns +(). + gshouldRedeStdOut + ) { + +6866 +SmRede + +coutRed + +Cch +:: +cout +(), +deedCout + ); + +6867 +StdERede + +rRed + +deedCr + ); + +6868 +vokeAiveTeCa +(); + +6871 +vokeAiveTeCa +(); + +6873 + gduti + = +tim +. +gEpdSecds +(); + +6875 +tch + +TeFauExi +& ) { + +6878 +tch +(...) { + +6881 i( + gm_shouldRtUxed +) { + +6882 +makeUxedResuBud +(). +uAiveExi +(); + +6885 + gm_CaTck +-> +o +(); + +6886 +hdUnfishedSeis +(); + +6887 + gm_mesges +. +r +(); + +6889 +Cous + + gasis + = +m_tٮs +. +asis + - +evAsis +; + +6890 +bo + + gmissgAsis + = +FMissgAsis + +asis + ); + +6892 if + gCaInfo +. +okToFa +() ) { + +6893 + gd +:: +sw + +asis +. +edButOk +,sis. +ed + ); + +6894 + gm_tٮs +. + gasis +. + ged + - +asis +. +edButOk +; + +6895 + gm_tٮs +. + gasis +. + gedButOk + + +asis +. +edButOk +; + +6898 +SeiSts + +CaSeiSts + +CaSei +, +asis +, +duti +, +missgAsis + ); + +6899 + gm_p܋r +-> +iEnded + +CaSeiSts + ); + +6902  +vokeAiveTeCa +() { + +6903 +FCdiHdr + + glCdiHdr +; + +6904 + gm_aiveTeCa +-> +voke +(); + +6905 + glCdiHdr +. +t +(); + +6908 + give +: + +6910 +ResuBud + +makeUxedResuBud +() const { + +6911  +ResuBud + +m_ϡAsiInfo +. +maoName +, + +6912 +m_ϡAsiInfo +. +leInfo +, + +6913 +m_ϡAsiInfo +. +udExessi +, + +6914 +m_ϡAsiInfo +. +suDiosi + ); + +6917  +hdUnfishedSeis +() { + +6920  + gd +:: +ve +< +SeiEndInfo +>:: +cڡ_v_ + + + = +m_unfishedSeis +. +rbeg +(), + +6921 + gEnd + = +m_unfishedSeis +. +nd +(); + +6922 + g + ! +End +; + +6923 ++ + g + ) + +6924 +iEnded +* + + ); + +6925 + gm_unfishedSeis +. +r +(); + +6928 +TeRunInfo + + gm_runInfo +; + +6929 + gIMubCڋxt +& + gm_cڋxt +; + +6930 +TeCa + cڡ* + gm_aiveTeCa +; + +6931 +ITck +* + gm_CaTck +; + +6932 +ITck +* + gm_cutSeiTck +; + +6933 +AsiResu + + gm_ϡResu +; + +6935 + gP +< +ICfig + cڡ> + gm_cfig +; + +6936 +Tٮs + + gm_tٮs +; + +6937 + gP +< + gISmgR܋r +> + gm_p܋r +; + +6938 + gd +:: +ve +< +MesgeInfo +> +m_mesges +; + +6939 +AsiInfo + + gm_ϡAsiInfo +; + +6940 + gd +:: +ve +< +SeiEndInfo +> +m_unfishedSeis +; + +6941 + gd +:: +ve +< +ITck +*> +m_aiveSeis +; + +6942 +TckCڋxt + + gm_ackCڋxt +; + +6943 +size_t + + gm_evPasd +; + +6944 +bo + + gm_shouldRtUxed +; + +6947 + gIResuCtu +& +gResuCtu +() { + +6948 if +IResuCtu +* + gu + = +gCutCڋxt +(). +gResuCtu +() ) + +6949  * +u +; + +6951 +throw + + gd +:: +logic_r +( "Noesult capture instance" ); + +6957  + #TWOBLUECUBES_CATCH_VERSION_H_INCLUDED + + + ) + +6959 +mea + + gCch + { + +6962  + sVsi + { + +6963 +Vsi + +_majVsi +, + +6964  +_mVsi +, + +6965  +_tchNumb +, + +6966 cڡ * cڡ +_bnchName +, + +6967  +_budNumb + ); + +6969 cڡ + gmajVsi +; + +6970 cڡ + gmVsi +; + +6971 cڡ + gtchNumb +; + +6974 cڡ * cڡ + gbnchName +; + +6975 cڡ + gbudNumb +; + +6977 +nd + + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +Vsi + cڡ& + gvsi + ); + +6979 + give +: + +6980  +ݔ += +Vsi + const& ); + +6983 +le + +Vsi + +libryVsi +(); + +6986  + ~ + +6987  + ~ + +6988  + ~ + +6990 +mea + + gCch + { + +6992 + gP +< + gISmgR܋r +> +R܋r + +d +:: +rg + cڡ& +p܋rName +, +P +< +Cfig +> cڡ& +cfig + ) { + +6993 + gP +< + gISmgR܋r +> + gp܋r + = +gRegiryHub +(). +gR܋rRegiry +(). + + +p܋rName +, +cfig +. +g +() ); + +6994 if! + gp܋r + ) { + +6995 + gd +:: +orgam + +oss +; + +6996 + goss + << "Nػp܋gied whame: '" << + gp܋rName + << "'"; + +6997 +throw + + gd +:: +doma_r + +oss +. +r +() ); + +6999  + gp܋r +; + +7002 #i! +defed +( +CATCH_CONFIG_DEFAULT_REPORTER +) + +7003  + #CATCH_CONFIG_DEFAULT_REPORTER + "cse" + + ) + +7006 + gP +< + gISmgR܋r +> +makeR܋r + +P +< +Cfig +> cڡ& +cfig + ) { + +7007 + gd +:: +ve +< +d +:: +rg +> +p܋rs + = +cfig +-> +gR܋rNames +(); + +7008 if + gp܋rs +. +emy +() ) + +7009 + gp܋rs +. +push_back + +CATCH_CONFIG_DEFAULT_REPORTER + ); + +7011 + gP +< + gISmgR܋r +> + gp܋r +; + +7012  + gd +:: +ve +< +d +:: +rg +>:: +cڡ_ + + + = +p܋rs +. +beg +(), + gEnd + =܋rs. +d +(); + +7013 + g + ! +End +; + +7014 ++ + g + ) + +7015 + gp܋r + = +addR܋r + +p܋r +, +R܋r +* + +, +cfig + ) ); + +7016  + gp܋r +; + +7018 + gP +< + gISmgR܋r +> +addLis + +P +< +ICfig + cڡ> cڡ& +cfig +, P< +ISmgR܋r +> +p܋rs + ) { + +7019 + gIR܋rRegiry +:: +Lis + +lis + = +gRegiryHub +(). +gR܋rRegiry +(). +gLis +(); + +7020  + gIR܋rRegiry +:: +Lis +:: +cڡ_ + + + = +lis +. +beg +(), + gEnd + =is. +d +(); + +7021 + g + ! +End +; + +7022 ++ + g + ) + +7023 + gp܋rs + = +addR܋r +( +p܋rs +, (* + +)-> + + +R܋rCfig + +cfig + ) ) ); + +7024  + gp܋rs +; + +7027 +Tٮs + +runTes + +P +< +Cfig +> cڡ& +cfig + ) { + +7029 + gP +< +ICfig + cڡ> + gicfig + = +cfig +. +g +(); + +7031 + gP +< + gISmgR܋r +> + gp܋r + = +makeR܋r + +cfig + ); + +7032 + gp܋r + = +addLis + +icfig +, +p܋r + ); + +7034 +RunCڋxt + +cڋxt + +icfig +, +p܋r + ); + +7036 +Tٮs + + gtٮs +; + +7038 + gcڋxt +. +GroupSg + +cfig +-> +me +(), 1, 1 ); + +7040 +TeSc + + gSc + = +cfig +-> +Sc +(); + +7041 if! + gSc +. +hasFrs +() ) + +7042 + gSc + = +TeScPr + +ITagAlsRegiry +:: +g +(). +r +"~[.]" ). +Sc +(); + +7044 + gd +:: +ve +< +TeCa +> cڡ& +lTeCas + = +gATeCasS܋d +* +icfig + ); + +7045  + gd +:: +ve +< +TeCa +>:: +cڡ_ + + + = +lTeCas +. +beg +(), + gEnd + =TeCas. +d +(); + +7046 + g + ! +End +; + +7047 ++ + g + ) { + +7048 if! + gcڋxt +. +abtg +(&& +mchTe +* + +, +Sc +, * +icfig + ) ) + +7049 + gtٮs + + +cڋxt +. +runTe +* + + ); + +7051 + gp܋r +-> +skTe +* + + ); + +7054 + gcڋxt +. +GroupEnded + +icfig +-> +me +(), +tٮs +, 1, 1 ); + +7055  + gtٮs +; + +7058  +yFamesAsTags + +ICfig + cڡ& +cfig + ) { + +7059 + gd +:: +ve +< +TeCa +> cڡ& +s + = +gATeCasS܋d + +cfig + ); + +7060  + gd +:: +size_t + +i + = 0; + gi + < + gs +. +size +(); ++i ) { + +7061 + gTeCa +& + g + = +cڡ_ +< +TeCa +&> +s +[ +i +] ); + +7062 + gd +:: +t +< +d +:: +rg +> +gs + = + +.tags; + +7064 + gd +:: +rg + +fame + = + +. +leInfo +. +fe +; + +7065 + gd +:: +rg +:: +size_ty + +ϡSsh + = +fame +. +fd_ϡ_of +( "\\/" ); + +7066 if + gϡSsh + ! +d +:: +rg +:: +os + ) + +7067 +fame + = fame. +subr + +ϡSsh ++1 ); + +7069 + gd +:: +rg +:: +size_ty + +ϡD + = +fame +. +fd_ϡ_of +( '.' ); + +7070 if + gϡD + ! +d +:: +rg +:: +os + ) + +7071 +fame + = fame. +subr +0, +ϡD + ); + +7073 + ggs +. + +'#' + +fame + ); + +7074 +tTags + + +, +gs + ); + +7078 as + cSessi + : +NCyab + { + +7079  +bo + +adyIntd +; + +7081 + gpublic +: + +7083  + sOnUnudOis + { + eDoWh + { +Igne +, + gFa + }; }; + +7085 +Sessi +() + +7086 : +m_i + +makeCommdLePr +() ) { + +7087 if +adyIntd + ) { + +7088 +d +:: +rg + +msg + = "Only one instance of Catch::Session canver be used"; + +7089 + gCch +:: + +(<< +msg + << +d +:: +dl +; + +7090 +throw + + gd +:: +logic_r + +msg + ); + +7092 + gadyIntd + = +ue +; + +7094 ~ +Sessi +() { + +7095 + gCch +:: +nUp +(); + +7098  +showHp + +d +:: +rg + cڡ& +ossName + ) { + +7099 +Cch +:: +cout +(<< "\nCch v" << +libryVsi +() << "\n"; + +7101 + gm_i +. +uge + +Cch +:: +cout +(), +ossName + ); + +7102 + gCch +:: +cout +(<< "F mܐda ug shoje docs\n" << +d +:: +dl +; + +7105  +yCommdLe + +gc +, cڡ* cڡ* cڡ +gv +, +OnUnudOis +:: +DoWh + +unudOiBehaviour + = OnUnudOis:: +Fa + ) { + +7106 +y + { + +7107 +m_i +. +tThrowOnUecognidToks + +unudOiBehaviour + = +OnUnudOis +:: +Fa + ); + +7108 + gm_unudToks + = +m_i +. +rIo + +CϿ +:: +gsToVe + +gc +, +gv + ), +m_cfigDa + ); + +7109 if + gm_cfigDa +. + gshowHp + ) + +7110 +showHp + +m_cfigDa +. +ossName + ); + +7111 + gm_cfig +. +t +(); + +7113 +tch + +d +:: +exi +& +ex + ) { + +7115 +Cour + +courGud +Cour:: +Red + ); + +7116 + gCch +:: + +() + +7118 << +Text + +ex +. +wh +(), +TextAribus +(). +tIndt +(2) ) + +7121 + gm_i +. +uge + +Cch +:: +cout +(), +m_cfigDa +. +ossName + ); + +7122  ( + gd +:: +numic_lims +<>:: +max +)(); + +7127  +uCfigDa + +CfigDa + cڡ& +_cfigDa + ) { + +7128 + gm_cfigDa + = +_cfigDa +; + +7129 + gm_cfig +. +t +(); + +7132  +run + +gc +, cڡ* cڡ* cڡ +gv + ) { + +7134  + gtuCode + = +yCommdLe + +gc +, +gv + ); + +7135 if + gtuCode + == 0 ) + +7136 +tuCode + = +run +(); + +7137  + gtuCode +; + +7140 #i +defed +( +WIN32 +&& defed( +UNICODE +) + +7141  +run + +gc +, +wch_t + cڡ* cڡ* cڡ +gv + ) { + +7143 ** + gutf8Argv + = +w + *[ +gc + ]; + +7145   + gi + = 0; i < + ggc +; ++i ) { + +7146  + gbufSize + = +WideChToMuiBy + +CP_UTF8 +, 0, +gv +[ +i +], -1, +NULL +, 0, NULL, NULL ); + +7148 + gutf8Argv +[ +i + ] = +w + [ +bufSize + ]; + +7150 +WideChToMuiBy + +CP_UTF8 +, 0, +gv +[ +i +], -1, +utf8Argv +[i], +bufSize +, +NULL +, NULL ); + +7153  + gtuCode + = +yCommdLe + +gc +, +utf8Argv + ); + +7154 if + gtuCode + == 0 ) + +7155 +tuCode + = +run +(); + +7157   + gi + = 0; i < + ggc +; ++i ) + +7158 + gde + [] + gutf8Argv +[ +i + ]; + +7160 + gde + [] + gutf8Argv +; + +7162  + gtuCode +; + +7166  +run +() { + +7167 if + gm_cfigDa +. + gshowHp + ) + +7170 + gy + + +7172 +cfig +(); + +7174 +edRng +* +m_cfig + ); + +7176 if + gm_cfigDa +. + gfamesAsTags + ) + +7177 +yFamesAsTags +* +m_cfig + ); + +7180 if + gOi +< + gd +:: +size_t +> +lied + = +li + +cfig +() ) ) + +7181  +ic_ +<>* +lied + ); + +7183  + gic_ +<> +runTes + +m_cfig + ). + gasis +. + ged + ); + +7185 +tch + +d +:: +exi +& +ex + ) { + +7186 +Cch +:: + +(<< +ex +. +wh +(<< +d +:: +dl +; + +7187  ( + gd +:: +numic_lims +<>:: +max +)(); + +7191 + gCϿ +:: +CommdLe +< +CfigDa +> cڡ& +i +() const { + +7192  +m_i +; + +7194 + gd +:: +ve +< +CϿ +:: +Pr +:: +Tok +> cڡ& +unudToks +() const { + +7195  +m_unudToks +; + +7197 + gCfigDa +& +cfigDa +() { + +7198  + gm_cfigDa +; + +7200 + gCfig +& +cfig +() { + +7201 if! + gm_cfig + ) + +7202 + gm_cfig + = +w + +Cfig + +m_cfigDa + ); + +7203  * + gm_cfig +; + +7205 + give +: + +7206 +CϿ +:: +CommdLe +< +CfigDa +> +m_i +; + +7207 + gd +:: +ve +< +CϿ +:: +Pr +:: +Tok +> +m_unudToks +; + +7208 +CfigDa + + gm_cfigDa +; + +7209 + gP +< + gCfig +> + gm_cfig +; + +7212 +bo + + gSessi +:: +adyIntd + = +l +; + +7217  + #TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED + + + ) + +7220  + #TWOBLUECUBES_CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED + + + ) + +7222  + ~ + +7223  + ~ + +7224  + ~ + +7225  + ~ + +7227 +mea + + gCch + { + +7229  + sRdomNumbG + { + +7230  + gd +:: + trdiff_t + + tsu_ty +; + +7232 +su_ty + +ݔ +()лsu_ty + gn + ) cڡ {  + gd +:: +nd +(% +n +; } + +7234 #ifde +CATCH_CONFIG_CPP11_SHUFFLE + + +7235  +cڡex + +su_ty + +m +() {  0; } + +7236  +cڡex + +su_ty + +max +() {  1000000; } + +7237 +su_ty + +ݔ +()(cڡ {  + gd +:: +nd +(% +max +(); } + +7239 + gme +< +tyme + + gV +> + +7240  +shufe + +V +& +ve + ) { + +7241 +RdomNumbG + + gg +; + +7242 #ifde +CATCH_CONFIG_CPP11_SHUFFLE + + +7243 + gd +:: +shufe + +ve +. +beg +(), ve. +d +(), +g + ); + +7245 + gd +:: +ndom_shufe + +ve +. +beg +(), ve. +d +(), +g + ); + +7250 +le + + gd +:: +ve +< +TeCa +> +stTes + +ICfig + cڡ& +cfig +, +d +::ve cڡ& +uns܋dTeCas + ) { + +7252 +d +:: +ve +< +TeCa +> +s܋d + = +uns܋dTeCas +; + +7254  + gcfig +. +runOrd +() ) { + +7255  + gRunTes +:: +InLexicogphilOrd +: + +7256 +d +:: +st + +s܋d +. +beg +(), s܋d. +d +() ); + +7258  + gRunTes +:: +InRdomOrd +: + +7260 +edRng + +cfig + ); + +7261 + gRdomNumbG +:: +shufe + +s܋d + ); + +7264  + gRunTes +:: +InDeiOrd +: + +7268  + gs܋d +; + +7270 +bo + +mchTe + +TeCa + cڡ& +Ca +, +TeSc + cڡ& +Sc +, +ICfig + cڡ& +cfig + ) { + +7271  + gSc +. +mches + +Ca + ) && ( + gcfig +. +lowThrows +(|| ! + gCa +. +throws +() ); + +7274  +fNoDuiTeCas + +d +:: +ve +< +TeCa +> cڡ& +funis + ) { + +7275 +d +:: +t +< +TeCa +> +Funis +; + +7276  + gd +:: +ve +< +TeCa +>:: +cڡ_ + + + = +funis +. +beg +(), + gEnd + = funis. +d +(); + +7277 + g + ! +End +; + +7278 ++ + g + ) { + +7279 + gd +:: + +< +d +:: +t +< +TeCa +>:: +cڡ_ +, + gbo +> + gev + = +Funis +. + +* + + ); + +7280 if! + gev +. + gcd + ) { + +7281 + gd +:: +orgam + +ss +; + +7283 + gss + << +Cour +Cour:: +Red + ) + +7284 << "r: TEST_CASE\"" << + +-> +me + << "\" )lready defined.\n" + +7285 << "\tF s " << +ev +. +f +-> +gTeCaInfo +(). +leInfo + << '\n' + +7286 << "\tRedefed" << + +-> +gTeCaInfo +(). +leInfo + << +d +:: +dl +; + +7288 +throw + + gd +:: +ruime_r +( +ss +. +r +()); + +7293 + gd +:: +ve +< +TeCa +> +frTes + +d +::ve cڡ& +Cas +, +TeSc + cڡ& +Sc +, +ICfig + cڡ& +cfig + ) { + +7294 + gd +:: +ve +< +TeCa +> +fd +; + +7295 + gfd +. +rve + +Cas +. +size +() ); + +7296  + gd +:: +ve +< +TeCa +>:: +cڡ_ + + + = +Cas +. +beg +(), + gEnd + =eCas. +d +(); + +7297 + g + ! +End +; + +7298 ++ + g + ) + +7299 if +mchTe +* + +, +Sc +, +cfig + ) ) + +7300 + gfd +. +push_back +* + + ); + +7301  + gfd +; + +7303 + gd +:: +ve +< +TeCa +> cڡ& +gATeCasS܋d + +ICfig + cڡ& +cfig + ) { + +7304  +gRegiryHub +(). +gTeCaRegiry +(). +gATesS܋d + +cfig + ); + +7307 as + cTeRegiry + : +public + +ITeCaRegiry + { + +7308 +public +: + +7309 +TeRegiry +() + +7310 : +m_cutStOrd + +RunTes +:: +InDeiOrd + ), + +7311 +m_uamedCou +( 0 ) + +7313 + gvtu + ~ +TeRegiry +(); + +7315 +vtu +  +giTe + +TeCa + cڡ& +Ca + ) { + +7316 + gd +:: +rg + +me + = +Ca +. +gTeCaInfo +().name; + +7317 if + gme +. +emy +() ) { + +7318 + gd +:: +orgam + +oss +; + +7319 + goss + << "Anymou ca " << ++ + gm_uamedCou +; + +7320  +giTe + +Ca +. +whName + +oss +. +r +() ) ); + +7322 + gm_funis +. +push_back + +Ca + ); + +7325 +vtu + + gd +:: +ve +< +TeCa +> cڡ& +gATes +() const { + +7326  +m_funis +; + +7328 +vtu + + gd +:: +ve +< +TeCa +> cڡ& +gATesS܋d + +ICfig + cڡ& +cfig + ) const { + +7329 if +m_s܋dFunis +. +emy +() ) + +7330 +fNoDuiTeCas + +m_funis + ); + +7332 if + gm_cutStOrd + ! +cfig +. +runOrd +(|| +m_s܋dFunis +. +emy +() ) { + +7333 +m_s܋dFunis + = +stTes + +cfig +, +m_funis + ); + +7334 + gm_cutStOrd + = +cfig +. +runOrd +(); + +7336  + gm_s܋dFunis +; + +7339 + give +: + +7340 +d +:: +ve +< +TeCa +> +m_funis +; + +7341 +mub + + gRunTes +:: +InWhOrd + +m_cutStOrd +; + +7342 +mub + + gd +:: +ve +< +TeCa +> +m_s܋dFunis +; + +7343 +size_t + + gm_uamedCou +; + +7344 + gd +:: +ios_ba +:: +In + +m_oamIn +; + +7349 +ass + + gFeFuniTeCa + : +public + +ShedIm +< +ITeCa +> { + +7350 +public +: + +7352 +FeFuniTeCa + +TeFuni + +fun + ) : +m_fun +( fun ) {} + +7354 +vtu +  +voke +() const { + +7355 +m_fun +(); + +7358 + give +: + +7359 +vtu + ~ +FeFuniTeCa +(); + +7361 +TeFuni + + gm_fun +; + +7364 +le + + gd +:: +rg + +exaCssName + +d +::rg cڡ& +assOrQuifdMhodName + ) { + +7365 +d +:: +rg + +assName + = +assOrQuifdMhodName +; + +7366 if +tsWh + +assName +, '&' ) ) + +7368 + gd +:: +size_t + +ϡCs + = +assName +. +rfd +( "::" ); + +7369 + gd +:: +size_t + +nuimeCs + = +assName +. +rfd +"::", +ϡCs +-1 ); + +7370 if + gnuimeCs + = +d +:: +rg +:: +os + ) + +7371 +nuimeCs + = 1; + +7372 + gassName + = +assName +. +subr + +nuimeCs +, +ϡCs +-penultimateColons ); + +7374  + gassName +; + +7377  + ggiTeCa + + +7378 +ITeCa +* + gCa +, + +7379 cڡ* + gassOrQuifdMhodName +, + +7380 +NameAndDesc + cڡ& + gmeAndDesc +, + +7381 +SourLeInfo + cڡ& + gleInfo + ) { + +7383 +gMubRegiryHub +(). + ggiTe + + +7384 + gmakeTeCa + + +7385 + gCa +, + +7386 +exaCssName + +assOrQuifdMhodName + ), + +7387 + gmeAndDesc +. + gme +, + +7388 + gmeAndDesc +. + gdesti +, + +7389 + gleInfo + ) ); + +7391  + ggiTeCaFuni + + +7392 +TeFuni + + gfuni +, + +7393 +SourLeInfo + cڡ& + gleInfo +, + +7394 +NameAndDesc + cڡ& + gmeAndDesc + ) { + +7395 +giTeCa + +w + +FeFuniTeCa + +funi + ), "", +meAndDesc +, +leInfo + ); + +7400 + gAutoReg +:: +AutoReg + + +7401 +TeFuni + +funi +, + +7402 +SourLeInfo + cڡ& + gleInfo +, + +7403 +NameAndDesc + cڡ& + gmeAndDesc + ) { + +7404 +giTeCaFuni + +funi +, +leInfo +, +meAndDesc + ); + +7407 + gAutoReg +::~ +AutoReg +() {} + +7412  + #TWOBLUECUBES_CATCH_REPORTER_REGISTRY_HPP_INCLUDED + + + ) + +7414  + ~ + +7416 +mea + +Cch + { + +7418 as + cR܋rRegiry + : +public + +IR܋rRegiry + { + +7420 +public +: + +7422 +vtu + ~ +R܋rRegiry +( +CATCH_OVERRIDE + {} + +7424 +vtu + +ISmgR܋r +* + + +d +:: +rg + cڡ& +me +, +P +< +ICfig + cڡ> cڡ& +cfig + ) cڡ + gCATCH_OVERRIDE + { + +7425 + gFayM +:: +cڡ_ + + + = +m_ܛs +. +fd + +me + ); + +7426 if + g + = +m_ܛs +. +d +() ) + +7427  +CATCH_NULL +; + +7428  + g +-> + gcd +-> + + +R܋rCfig + +cfig + ) ); + +7431  +giR܋r + +d +:: +rg + cڡ& +me +, +P +< +IR܋rFay +> cڡ& +y + ) { + +7432 + gm_ܛs +. + + +d +:: +make_ + +me +, +y + ) ); + +7434  +giLi + +P +< +IR܋rFay +> cڡ& +y + ) { + +7435 + gm_lis +. +push_back + +y + ); + +7438 +vtu + +FayM + cڡ& +gFaܛs +(cڡ + gCATCH_OVERRIDE + { + +7439  + gm_ܛs +; + +7441 +vtu + +Lis + cڡ& +gLis +(cڡ + gCATCH_OVERRIDE + { + +7442  + gm_lis +; + +7445 + give +: + +7446 +FayM + +m_ܛs +; + +7447 +Lis + + gm_lis +; + +7452  + #TWOBLUECUBES_CATCH_EXCEPTION_TRANSLATOR_REGISTRY_HPP_INCLUDED + + + ) + +7454 #ifde +__OBJC__ + + +7458 +mea + + gCch + { + +7460 as + cExiTnRegiry + : +public + +IExiTnRegiry + { + +7461 +public +: + +7462 ~ +ExiTnRegiry +() { + +7463 +deA + +m_s + ); + +7466 +vtu +  +giTn +cڡ +IExiTn +* + + ) { + +7467 + gm_s +. +push_back + + + ); + +7470 +vtu + + gd +:: +rg + +eAiveExi +() const { + +7471 +y + { + +7472 #ifde +__OBJC__ + + +7474 @ +y + { + +7475  +yTns +(); + +7477 @ +tch + ( +NSExi + * +exi +) { + +7478  + gCch +:: +toSg +[ +exi + +desti +] ); + +7481  +yTns +(); + +7484 +tch + +TeFauExi +& ) { + +7485 + gthrow +; + +7487 +tch + +d +:: +exi +& +ex + ) { + +7488  +ex +. +wh +(); + +7490 +tch + +d +:: +rg +& +msg + ) { + +7491  +msg +; + +7493 +tch +cڡ * +msg + ) { + +7494  + gmsg +; + +7496 +tch +(...) { + +7501 + gd +:: +rg + +yTns +() const { + +7502 if +m_s +. +emy +() ) + +7503 +throw +; + +7505  + gm_s +[0]-> +e + +m_s +. +beg +()+1, m_s. +d +() ); + +7508 + give +: + +7509 +d +:: +ve + +m_s +; + +7514  + #TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_H_INCLUDED + + + ) + +7516  + ~ + +7518 +mea + + gCch + { + +7520 as + cTagAlsRegiry + : +public + +ITagAlsRegiry + { + +7521 +public +: + +7522 +vtu + ~ +TagAlsRegiry +(); + +7523 +vtu + + gOi +< + gTagAls +> +fd + +d +:: +rg + cڡ& +s + ) const; + +7524 +vtu + + gd +:: +rg + +exndAls + +d +::rg cڡ& +uxndedTeSc + ) const; + +7525  +add + +d +:: +rg + cڡ& +s +, std::rg cڡ& +g +, +SourLeInfo + cڡ& +leInfo + ); + +7527 + give +: + +7528 +d +:: +m + + gm_giry +; + +7533 +mea + + gCch + { + +7535 + gmea + { + +7537 +ass + + gRegiryHub + : +public + +IRegiryHub +,ubli + gIMubRegiryHub + { + +7539 +RegiryHub +( RegistryHub const& ); + +7540  + gݔ += +RegiryHub + const& ); + +7542 + gpublic +: + +7543 +RegiryHub +() { + +7545 +vtu + +IR܋rRegiry + cڡ& +gR܋rRegiry +(cڡ +CATCH_OVERRIDE + { + +7546  +m_p܋rRegiry +; + +7548 +vtu + +ITeCaRegiry + cڡ& +gTeCaRegiry +(cڡ + gCATCH_OVERRIDE + { + +7549  + gm_CaRegiry +; + +7551 +vtu + + gIExiTnRegiry +& +gExiTnRegiry +( + gCATCH_OVERRIDE + { + +7552  + gm_exiTnRegiry +; + +7554 +vtu + +ITagAlsRegiry + cڡ& +gTagAlsRegiry +(cڡ + gCATCH_OVERRIDE + { + +7555  + gm_gAlsRegiry +; + +7558 + gpublic +: + +7559 +vtu +  +giR܋r + +d +:: +rg + cڡ& +me +, +P +< +IR܋rFay +> cڡ& +y + ) + gCATCH_OVERRIDE + { + +7560 + gm_p܋rRegiry +. +giR܋r + +me +, +y + ); + +7562 +vtu +  +giLi + +P +< +IR܋rFay +> cڡ& +y + ) + gCATCH_OVERRIDE + { + +7563 + gm_p܋rRegiry +. +giLi + +y + ); + +7565 +vtu +  +giTe + +TeCa + cڡ& +Info + ) + gCATCH_OVERRIDE + { + +7566 + gm_CaRegiry +. +giTe + +Info + ); + +7568 +vtu +  +giTn +cڡ +IExiTn +* + + ) + gCATCH_OVERRIDE + { + +7569 + gm_exiTnRegiry +. +giTn + + + ); + +7571 +vtu +  +giTagAls + +d +:: +rg + cڡ& +s +, std::rg cڡ& +g +, +SourLeInfo + cڡ& +leInfo + ) + gCATCH_OVERRIDE + { + +7572 + gm_gAlsRegiry +. +add + +s +, +g +, +leInfo + ); + +7575 + give +: + +7576 +TeRegiry + +m_CaRegiry +; + +7577 +R܋rRegiry + + gm_p܋rRegiry +; + +7578 +ExiTnRegiry + + gm_exiTnRegiry +; + +7579 +TagAlsRegiry + + gm_gAlsRegiry +; + +7583 +le + + gRegiryHub +*& +gTheRegiryHub +() { + +7584  +RegiryHub +* + gtheRegiryHub + = +CATCH_NULL +; + +7585 if! + gtheRegiryHub + ) + +7586 + gtheRegiryHub + = +w + +RegiryHub +(); + +7587  + gtheRegiryHub +; + +7591 + gIRegiryHub +& +gRegiryHub +() { + +7592  * +gTheRegiryHub +(); + +7594 + gIMubRegiryHub +& +gMubRegiryHub +() { + +7595  * +gTheRegiryHub +(); + +7597  +nUp +() { + +7598 +de + +gTheRegiryHub +(); + +7599 +gTheRegiryHub +( +CATCH_NULL +; + +7600 +nUpCڋxt +(); + +7602 + gd +:: +rg + +eAiveExi +() { + +7603  +gRegiryHub +(). +gExiTnRegiry +(). +eAiveExi +(); + +7609  + #TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED + + + ) + +7611  + ~ + +7613 +mea + + gCch + { + +7615 + gNImemdExi +:: +NImemdExi + +SourLeInfo + cڡ& +leInfo + ) + +7616 : +m_leInfo + +leInfo + ) { + +7617 +d +:: +orgam + +oss +; + +7618 + goss + << + gleInfo + << ": function "; + +7619 + goss + << "not implemented"; + +7620 + gm_wh + = +oss +. +r +(); + +7623 cڡ * + gNImemdExi +:: +wh +(cڡ +CATCH_NOEXCEPT + { + +7624  +m_wh +. +c_r +(); + +7630  + #TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED + + + ) + +7633  + #TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED + + + ) + +7635  + ~ + +7636  + ~ + +7637  + ~ + +7639 +mea + + gCch + { + +7641 + gme +< +tyme + + gWrF +, +size_t + + gbufrSize +=256> + +7642 as + cSmBufIm + : +public + +SmBufBa + { + +7643  +da +[ +bufrSize +]; + +7644 +WrF + + gm_wr +; + +7646 + gpublic +: + +7647 +SmBufIm +() { + +7648 + + +da +, data + (data) ); + +7651 ~ +SmBufIm +( + gCATCH_NOEXCEPT + { + +7652 +sync +(); + +7655 + give +: + +7656  +ovow + +c + ) { + +7657 +sync +(); + +7659 if + gc + ! +EOF + ) { + +7660 if +pba +(= +r +() ) + +7661 +m_wr + +d +:: +rg +1, +ic_ +<> +c + ) ) ); + +7663 +utc + +ic_ +<> +c + ) ); + +7668  +sync +() { + +7669 if +pba +(! + +() ) { + +7670 +m_wr + +d +:: +rg + +pba +(), +ic_ + + +() -base() ) ) ); + +7671 + + +pba +(), +r +() ); + +7679 + gFeSm +:: +FeSm + +d +:: +rg + cڡ& +fame + ) { + +7680 +m_ofs +. +ݒ + +fame +. +c_r +() ); + +7681 if + gm_ofs +. + +() ) { + +7682 + gd +:: +orgam + +oss +; + +7683 + goss + << "Ubˁݒ fe: '" << + gfame + << '\''; + +7684 +throw + + gd +:: +doma_r + +oss +. +r +() ); + +7688 + gd +:: +oam +& +FeSm +:: +am +() const { + +7689  +m_ofs +; + +7692  + sOuutDebugWr + { + +7694  +ݔ +() + gd +:: +rg + cڡ& +r + ) { + +7695 +wreToDebugCse + +r + ); + +7699 + gDebugOutSm +:: +DebugOutSm +() + +7700 : +m_amBuf + +w + +SmBufIm +< +OuutDebugWr +>() ), + +7701 +m_os + +m_amBuf +. +g +() ) + +7704 + gd +:: +oam +& +DebugOutSm +:: +am +() const { + +7705  +m_os +; + +7710 + gCoutSm +:: +CoutSm +() + +7711 : +m_os + +Cch +:: +cout +(). +rdbuf +() ) + +7714 +d +:: +oam +& +CoutSm +:: +am +() const { + +7715  +m_os +; + +7718 #ide +CATCH_CONFIG_NOSTDOUT + + +7719 + gd +:: +oam +& +cout +() { + +7720  +d +:: +cout +; + +7722 + gd +:: +oam +& + +() { + +7723  +d +:: + +; + +7725 + gd +:: +oam +& +og +() { + +7726  +d +:: +og +; + +7731 +mea + + gCch + { + +7733 as + cCڋxt + : +public + +IMubCڋxt + { + +7735 +Cڋxt +(: +m_cfig + +CATCH_NULL + ), +m_ru” +CATCH_NULL ), +m_suCtu +( CATCH_NULL ) {} + +7736 +Cڋxt +( Context const& ); + +7737  + gݔ += +Cڋxt + const& ); + +7739 + gpublic +: + +7740 +vtu + ~ +Cڋxt +() { + +7741 +deAVues + +m_gsByTeName + ); + +7744 + gpublic +: + +7745 +vtu + +IResuCtu +* +gResuCtu +() { + +7746  +m_suCtu +; + +7748 +vtu + +IRu” +* +gRu” +() { + +7749  + gm_ru” +; + +7751 +vtu + +size_t + +gGIndex + +d +:: +rg + cڡ& +feInfo +, size_ +tٮSize + ) { + +7752  +gGsFCutTe +() + +7753 . +gGInfo + +feInfo +, +tٮSize + ) + +7754 . +gCutIndex +(); + +7756 +vtu + +bo + +advGsFCutTe +() { + +7757 +IGsFTe +* + ggs + = +fdGsFCutTe +(); + +7758  + ggs + && gs-> +moveNext +(); + +7761 +vtu + + gP +< +ICfig + cڡ> +gCfig +() const { + +7762  + gm_cfig +; + +7765 + gpublic +: + +7766 +vtu +  +tResuCtu + +IResuCtu +* +suCtu + ) { + +7767 +m_suCtu + = +suCtu +; + +7769 +vtu +  +tRu” + +IRu” +* +ru” + ) { + +7770 + gm_ru” + = +ru” +; + +7772 +vtu +  +tCfig + +P +< +ICfig + cڡ> cڡ& +cfig + ) { + +7773 + gm_cfig + = +cfig +; + +7776 +nd + + gIMubCڋxt +& +gCutMubCڋxt +(); + +7778 + give +: + +7779 +IGsFTe +* +fdGsFCutTe +() { + +7780 +d +:: +rg + +Name + = +gResuCtu +()-> +gCutTeName +(); + +7782 + gd +:: +m +< +d +:: +rg +, + gIGsFTe +*>:: +cڡ_ + + + = + +7783 +m_gsByTeName +. +fd + +Name + ); + +7784  + g + ! +m_gsByTeName +. +d +() + +7785 ? + +-> +cd + + +7786 : +CATCH_NULL +; + +7789 + gIGsFTe +& +gGsFCutTe +() { + +7790 +IGsFTe +* + ggs + = +fdGsFCutTe +(); + +7791 if! + ggs + ) { + +7792 + gd +:: +rg + +Name + = +gResuCtu +()-> +gCutTeName +(); + +7793 + ggs + = +GsFTe +(); + +7794 + gm_gsByTeName +. + + +d +:: +make_ + +Name +, +gs + ) ); + +7796  * + ggs +; + +7799 + give +: + +7800 +P +< +ICfig + cڡ> +m_cfig +; + +7801 +IRu” +* + gm_ru” +; + +7802 +IResuCtu +* + gm_suCtu +; + +7803 + gd +:: +m +< +d +:: +rg +, + gIGsFTe +*> + gm_gsByTeName +; + +7806 + gmea + { + +7807 +Cڋxt +* + gcutCڋxt + = +CATCH_NULL +; + +7809 + gIMubCڋxt +& +gCutMubCڋxt +() { + +7810 if! + gcutCڋxt + ) + +7811 + gcutCڋxt + = +w + +Cڋxt +(); + +7812  * + gcutCڋxt +; + +7814 + gICڋxt +& +gCutCڋxt +() { + +7815  +gCutMubCڋxt +(); + +7818  +nUpCڋxt +() { + +7819 +de + + gcutCڋxt +; + +7820 + gcutCڋxt + = +CATCH_NULL +; + +7825  + #TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED + + + ) + +7828  + #TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED + + + ) + +7830  + ~ + +7832 +mea + + gCch + { + +7834 as + cEnoGud + { + +7835 + gpublic +: + +7836 +EnoGud +(): +m_dEno +( +o +){} + +7837 ~ +EnoGud +({ +o + = +m_dEno +; } + +7838 + give +: + +7839  +m_dEno +; + +7844 +mea + + gCch + { + +7845 + gmea + { + +7847  + sICourIm + { + +7848 + gvtu + ~ +ICourIm +() {} + +7849 +vtu +  +u + +Cour +:: +Code + +_courCode + ) = 0; + +7852  + gNoCourIm + : +ICourIm + { + +7853  +u + +Cour +:: +Code + ) {} + +7855  +ICourIm +* + +() { + +7856  +NoCourIm + +s_ +; + +7857  & + gs_ +; + +7864 #i! +defed + +CATCH_CONFIG_COLOUR_NONE + ) && !defed +CATCH_CONFIG_COLOUR_WINDOWS + ) && ! + $defed + +CATCH_CONFIG_COLOUR_ANSI + ) + +7865 #ifde +CATCH_PLATFORM_WINDOWS + + +7866  + #CATCH_CONFIG_COLOUR_WINDOWS + + + ) + +7868  + #CATCH_CONFIG_COLOUR_ANSI + + + ) + +7872 #i + $defed + ( +CATCH_CONFIG_COLOUR_WINDOWS + ) + +7874 +mea + +Cch + { + +7875 +mea + { + +7877 as + cW32CourIm + : +public + +ICourIm + { + +7878 +public +: + +7879 + `W32CourIm +(: + `doutHd + + `GStdHd +( +STD_OUTPUT_HANDLE +) ) + +7881 +CONSOLE_SCREEN_BUFFER_INFO + +csbiInfo +; + +7882 + `GCseSnBufrInfo + +doutHd +, & +csbiInfo + ); + +7883 +igFegroundAribus + = +csbiInfo +. +wAribus + & ~ +BACKGROUND_GREEN + | +BACKGROUND_RED + | +BACKGROUND_BLUE + | +BACKGROUND_INTENSITY + ); + +7884 +igBackgroundAribus + = +csbiInfo +. +wAribus + & ~ +FOREGROUND_GREEN + | +FOREGROUND_RED + | +FOREGROUND_BLUE + | +FOREGROUND_INTENSITY + ); + +7887 +vtu +  + `u + +Cour +:: +Code + +_courCode + ) { + +7888  +_courCode + ) { + +7889  +Cour +:: +Ne +:  + `tTextAribu + +igFegroundAribus + ); + +7890  +Cour +:: +Whe +:  + `tTextAribu + +FOREGROUND_GREEN + | +FOREGROUND_RED + | +FOREGROUND_BLUE + ); + +7891  +Cour +:: +Red +:  + `tTextAribu + +FOREGROUND_RED + ); + +7892  +Cour +:: +G +:  + `tTextAribu + +FOREGROUND_GREEN + ); + +7893  +Cour +:: +Blue +:  + `tTextAribu + +FOREGROUND_BLUE + ); + +7894  +Cour +:: +Cy +:  + `tTextAribu + +FOREGROUND_BLUE + | +FOREGROUND_GREEN + ); + +7895  +Cour +:: +Ylow +:  + `tTextAribu + +FOREGROUND_RED + | +FOREGROUND_GREEN + ); + +7896  +Cour +:: +Gy +:  + `tTextAribu +( 0 ); + +7898  +Cour +:: +LightGy +:  + `tTextAribu + +FOREGROUND_INTENSITY + ); + +7899  +Cour +:: +BrightRed +:  + `tTextAribu + +FOREGROUND_INTENSITY + | +FOREGROUND_RED + ); + +7900  +Cour +:: +BrightG +:  + `tTextAribu + +FOREGROUND_INTENSITY + | +FOREGROUND_GREEN + ); + +7901  +Cour +:: +BrightWhe +:  + `tTextAribu + +FOREGROUND_INTENSITY + | +FOREGROUND_GREEN + | +FOREGROUND_RED + | +FOREGROUND_BLUE + ); + +7903  +Cour +:: +Bright +: +throw + +d +:: + `logic_r +( "not colour" ); + +7907 +ive +: + +7908  + `tTextAribu + +WORD + +_xtAribu + ) { + +7909 + `SCseTextAribu + +doutHd +, +_xtAribu + | +igBackgroundAribus + ); + +7911 +HANDLE + +doutHd +; + +7912 +WORD + +igFegroundAribus +; + +7913 +WORD + +igBackgroundAribus +; + +7916 +ICourIm +* + `fmCourIn +() { + +7917  +W32CourIm + +s_ +; + +7919 +P +< +ICfig + cڡ> +cfig + = + `gCutCڋxt +(). + `gCfig +(); + +7920 +UCour +:: +YesOrNo + +courMode + = +cfig + + +7921 ? +cfig +-> + `uCour +() + +7922 : +UCour +:: +Auto +; + +7923 if +courMode + = +UCour +:: +Auto + ) + +7924 +courMode + = ! + `isDebuggAive +() + +7925 ? +UCour +:: +Yes + + +7926 : +UCour +:: +No +; + +7927  +courMode + = +UCour +:: +Yes + + +7928 ? & +s_ + + +7929 : +NoCourIm +:: + ` +(); + +7933 + } +} + +7935 #i + $defed + +CATCH_CONFIG_COLOUR_ANSI + ) + +7937  + ~ + +7939 +mea + +Cch + { + +7940 +mea + { + +7946 as + cPosixCourIm + : +public + +ICourIm + { + +7947 +public +: + +7948 +vtu +  + `u + +Cour +:: +Code + +_courCode + ) { + +7949  +_courCode + ) { + +7950  +Cour +:: +Ne +: + +7951  +Cour +:: +Whe +:  + `tCour +( "[0m" ); + +7952  +Cour +:: +Red +:  + `tCour +( "[0;31m" ); + +7953  +Cour +:: +G +:  + `tCour +( "[0;32m" ); + +7954  +Cour +:: +Blue +:  + `tCour +( "[0;34m" ); + +7955  +Cour +:: +Cy +:  + `tCour +( "[0;36m" ); + +7956  +Cour +:: +Ylow +:  + `tCour +( "[0;33m" ); + +7957  +Cour +:: +Gy +:  + `tCour +( "[1;30m" ); + +7959  +Cour +:: +LightGy +:  + `tCour +( "[0;37m" ); + +7960  +Cour +:: +BrightRed +:  + `tCour +( "[1;31m" ); + +7961  +Cour +:: +BrightG +:  + `tCour +( "[1;32m" ); + +7962  +Cour +:: +BrightWhe +:  + `tCour +( "[1;37m" ); + +7964  +Cour +:: +Bright +: +throw + +d +:: + `logic_r +( "not colour" ); + +7967  +ICourIm +* + ` +() { + +7968  +PosixCourIm + +s_ +; + +7969  & +s_ +; + +7972 +ive +: + +7973  + `tCour +cڡ * +_esCode + ) { + +7974 +Cch +:: + `cout +(<< '\033' << +_esCode +; + +7978 +ICourIm +* + `fmCourIn +() { + +7979 +EnoGud + +gud +; + +7980 +P +< +ICfig + cڡ> +cfig + = + `gCutCڋxt +(). + `gCfig +(); + +7981 +UCour +:: +YesOrNo + +courMode + = +cfig + + +7982 ? +cfig +-> + `uCour +() + +7983 : +UCour +:: +Auto +; + +7984 if +courMode + = +UCour +:: +Auto + ) + +7985 +courMode + = (! + `isDebuggAive +(&& + `iy +( +STDOUT_FILENO +) ) + +7986 ? +UCour +:: +Yes + + +7987 : +UCour +:: +No +; + +7988  +courMode + = +UCour +:: +Yes + + +7989 ? +PosixCourIm +:: + ` +() + +7990 : +NoCourIm +:: + ` +(); + +7994 + } +} + +7998 +mea + + gCch + { + +8000  +ICourIm +* +fmCourIn +({  + gNoCourIm +:: + +(); } + +8006 +mea + + gCch + { + +8008 + gCour +:: +Cour + +Code + +_courCode + ) : +m_moved + +l + ) { +u +( _colourCode ); } + +8009 + gCour +:: +Cour +Coucڡ& +_h + ) : +m_moved + +l + ) { +cڡ_ +_h ).m_moved = +ue +; } + +8010 + gCour +::~ +Cour +(){ if! +m_moved + ) +u + +Ne + ); } + +8012  + gCour +:: +u + +Code + +_courCode + ) { + +8013  +ICourIm +* +im + = +fmCourIn +(); + +8014 + gim +-> +u + +_courCode + ); + +8020  + #TWOBLUECUBES_CATCH_GENERATORS_IMPL_HPP_INCLUDED + + + ) + +8022  + ~ + +8023  + ~ + +8024  + ~ + +8026 +mea + + gCch + { + +8028  + gGInfo + : +IGInfo + { + +8030 +GInfo + +d +:: +size_t + +size + ) + +8031 : +m_size + +size + ), + +8032 +m_cutIndex +( 0 ) + +8035 +bo + +moveNext +() { + +8036 if++ + gm_cutIndex + = +m_size + ) { + +8037 +m_cutIndex + = 0; + +8038  + gl +; + +8040  + gue +; + +8043 + gd +:: +size_t + +gCutIndex +() const { + +8044  +m_cutIndex +; + +8047 + gd +:: +size_t + +m_size +; + +8048 + gd +:: +size_t + +m_cutIndex +; + +8053 as + cGsFTe + : +public + +IGsFTe + { + +8055 +public +: + +8056 ~ +GsFTe +() { + +8057 +deA + +m_gsInOrd + ); + +8060 + gIGInfo +& +gGInfo + +d +:: +rg + cڡ& +feInfo +, std:: +size_t + +size + ) { + +8061 +d +:: +m +:: +cڡ_ + + + = +m_gsByName +. +fd + +feInfo + ); + +8062 if + g + = +m_gsByName +. +d +() ) { + +8063 +IGInfo +* +fo + = +w + +GInfo + +size + ); + +8064 + gm_gsByName +. + + +d +:: +make_ + +feInfo +, +fo + ) ); + +8065 + gm_gsInOrd +. +push_back + +fo + ); + +8066  * + gfo +; + +8068  * + g +-> + gcd +; + +8071 +bo + +moveNext +() { + +8072 + gd +:: +ve +< +IGInfo +*>:: +cڡ_ + + + = +m_gsInOrd +. +beg +(); + +8073 + gd +:: +ve +< +IGInfo +*>:: +cڡ_ + +End + = +m_gsInOrd +. +d +(); + +8074 ; + g + ! +End +; ++it ) { + +8075 if(* + g +)-> +moveNext +() ) + +8076  + gue +; + +8078  + gl +; + +8081 + give +: + +8082 +d +:: +m + + gm_gsByName +; + +8083 + gd +:: +ve +< +IGInfo +*> +m_gsInOrd +; + +8086 +IGsFTe +* +GsFTe +() + +8088  +w + +GsFTe +(); + +8094  + #TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED + + + ) + +8096 +mea + + gCch + { + +8098 + gAsiInfo +:: +AsiInfo +(): +maoName +(""), +udExessi +(""), +suDiosi +( +ResuDiosi +:: +Nm +), +cdArg +(""){} + +8100 + gAsiInfo +:: +AsiInfo +cڡ * +_maoName +, + +8101 +SourLeInfo + cڡ& +_leInfo +, + +8102 cڡ * +_udExessi +, + +8103 +ResuDiosi +:: +Fgs + +_suDiosi +, + +8104 cڡ * +_cdArg +) + +8105 : +maoName + +_maoName + ), + +8106 +leInfo + +_leInfo + ), + +8107 +udExessi + +_udExessi + ), + +8108 +suDiosi + +_suDiosi + ), + +8109 +cdArg + +_cdArg + ) + +8112 + gAsiResu +:: +AsiResu +() {} + +8114 +AsiResu +::AsiResu +AsiInfo + cڡ& +fo +, +AsiResuDa + cڡ& +da + ) + +8115 : +m_fo + +fo + ), + +8116 +m_suDa + +da + ) + +8119 + gAsiResu +::~ +AsiResu +() {} + +8122 +bo + +AsiResu +:: +suceded +() const { + +8123  +Cch +:: +isOk + +m_suDa +. +suTy + ); + +8127 +bo + + gAsiResu +:: +isOk +() const { + +8128  +Cch +:: +isOk + +m_suDa +. +suTy + ) || +shouldSussFau + +m_fo +. +suDiosi + ); + +8131 + gResuWas +:: +OfTy + +AsiResu +:: +gResuTy +() const { + +8132  +m_suDa +. +suTy +; + +8135 +bo + + gAsiResu +:: +hasExessi +() const { + +8136  +m_fo +. +udExessi +[0] != 0; + +8139 +bo + + gAsiResu +:: +hasMesge +() const { + +8140  ! +m_suDa +. +mesge +. +emy +(); + +8143 + gd +:: +rg + +udExessiWhSecdArgumt +cڡ * +udExessi +, cڡ * +cdArg + ) { + +8144  ( + gcdArg +[0] =0 || +cdArg +[0] == '"' && secondArg[1] == '"') + +8145 ? +udExessi + + +8146 : +d +:: +rg +( +udExessi ++ ", " + +cdArg +; + +8149 + gd +:: +rg + +AsiResu +:: +gExessi +() const { + +8150 if +isFTe + +m_fo +. +suDiosi + ) ) + +8151  '!' + +udExessiWhSecdArgumt +( +m_fo +. +udExessi +, m_fo. +cdArg +); + +8153  +udExessiWhSecdArgumt +( +m_fo +. +udExessi +, m_fo. +cdArg +); + +8155 + gd +:: +rg + +AsiResu +:: +gExessiInMao +() const { + +8156 if +m_fo +. +maoName +[0] == 0 ) + +8157  +udExessiWhSecdArgumt +( +m_fo +. +udExessi +, m_fo. +cdArg +); + +8159  + gd +:: +rg +( +m_fo +. +maoName ++ "" + +udExessiWhSecdArgumt +(m_fo. +udExessi +, m_fo. +cdArg +) + " )"; + +8162 +bo + + gAsiResu +:: +hasExndedExessi +() const { + +8163  +hasExessi +(&& +gExndedExessi +(! +gExessi +(); + +8166 + gd +:: +rg + +AsiResu +:: +gExndedExessi +() const { + +8167  +m_suDa +. +cڡruExessi +(); + +8170 + gd +:: +rg + +AsiResu +:: +gMesge +() const { + +8171  +m_suDa +. +mesge +; + +8173 +SourLeInfo + + gAsiResu +:: +gSourInfo +() const { + +8174  +m_fo +. +leInfo +; + +8177 + gd +:: +rg + +AsiResu +:: +gTeMaoName +() const { + +8178  +m_fo +. +maoName +; + +8181  + gAsiResu +:: +disrdDecompodExessi +() const { + +8182 +m_suDa +. +decompodExessi + = +CATCH_NULL +; + +8185  + gAsiResu +:: +exndDecompodExessi +() const { + +8186 +m_suDa +. +cڡruExessi +(); + +8192  + #TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED + + + ) + +8194  + ~ + +8196 +mea + + gCch + { + +8198 +le + + gTeCaInfo +:: +SclPrݔts + +rSclTag + +d +:: +rg + cڡ& +g + ) { + +8199 if +tsWh + +g +, '.' ) || + +8200 + gg + == "hide" || + +8201 +g + == "!hide" ) + +8202  +TeCaInfo +:: +IsHidd +; + +8203 if + gg + == "!throws" ) + +8204  +TeCaInfo +:: +Throws +; + +8205 if + gg + == "!shouldfail" ) + +8206  +TeCaInfo +:: +ShouldFa +; + +8207 if + gg + == "!mayfail" ) + +8208  +TeCaInfo +:: +MayFa +; + +8209 if + gg + == "!nonportable" ) + +8210  +TeCaInfo +:: +NP܏b +; + +8212  + gTeCaInfo +:: +Ne +; + +8214 +le + +bo + +isRervedTag + +d +:: +rg + cڡ& +g + ) { + +8215  +rSclTag + +g + ) = +TeCaInfo +:: +Ne + &&ag. +size +(> 0 && ! +d +:: +ium +(ag[0] ); + +8217 +le +  +fNRervedTag + +d +:: +rg + cڡ& +g +, +SourLeInfo + cڡ& +_leInfo + ) { + +8218 if +isRervedTag + +g + ) ) { + +8219 + gd +:: +orgam + +ss +; + +8220 + gss + << +Cour +(Cour:: +Red +) + +8221 << "Tagam[" << +g + << "]otllowed.\n" + +8223 << +Cour +(Cour:: +FeName +) + +8224 << +_leInfo + << '\n'; + +8225 +throw + + gd +:: +ruime_r +( +ss +. +r +()); + +8229 +TeCa + +makeTeCa + +ITeCa +* +_Ca +, + +8230 +d +:: +rg + cڡ& +_assName +, + +8231 +d +:: +rg + cڡ& +_me +, + +8232 +d +:: +rg + cڡ& +_descOrTags +, + +8233 +SourLeInfo + cڡ& +_leInfo + ) + +8235 +bo + +isHidd + +tsWh + +_me +, "./" ) ); + +8238 + gd +:: +t +< +d +:: +rg +> +gs +; + +8239 + gd +:: +rg + +desc +, + gg +; + +8240 +bo + + gTag + = +l +; + +8241  + gd +:: +size_t + +i + = 0; + gi + < + g_descOrTags +. +size +(); ++i ) { + +8242  + gc + = +_descOrTags +[ +i +]; + +8243 if! + gTag + ) { + +8244 if + gc + == '[' ) + +8245 +Tag + = +ue +; + +8247 + gdesc + + +c +; + +8250 if + gc + == ']' ) { + +8251 +TeCaInfo +:: +SclPrݔts + + + = +rSclTag + +g + ); + +8252 if + g + = +TeCaInfo +:: +IsHidd + ) + +8253 +isHidd + = +ue +; + +8254 if + g + = +TeCaInfo +:: +Ne + ) + +8255 +fNRervedTag + +g +, +_leInfo + ); + +8257 + ggs +. + + +g + ); + +8258 + gg +. +r +(); + +8259 + gTag + = +l +; + +8262 + gg + + +c +; + +8265 if + gisHidd + ) { + +8266 + ggs +. + +( "hide" ); + +8267 + ggs +. + +( "." ); + +8270 +TeCaInfo + +fo + +_me +, +_assName +, +desc +, +gs +, +_leInfo + ); + +8271  +TeCa + +_Ca +, +fo + ); + +8274  +tTags + +TeCaInfo +& +CaInfo +, +d +:: +t + cڡ& +gs + ) + +8276 +CaInfo +. +gs + =ags; + +8277 + gCaInfo +. + glTags +. +r +(); + +8279 + gd +:: +orgam + +oss +; + +8280  + gd +:: +t +< +d +:: +rg +>:: +cڡ_ + + + = +gs +. +beg +(), + gEnd + =ags. +d +(); + g + ! +End +; ++it ) { + +8281 + goss + << '[' << * + g + << ']'; + +8282 + gd +:: +rg + +lTag + = +toLow +* + + ); + +8283 + gCaInfo +. + gݔts + = +ic_ +< +TeCaInfo +:: +SclPrݔts +> +CaInfo +. +ݔts + | +rSclTag + +lTag + ) ); + +8284 + gCaInfo +. + glTags +. + + +lTag + ); + +8286 + gCaInfo +. + ggsAsSg + = +oss +. +r +(); + +8289 + gTeCaInfo +:: +TeCaInfo + +d +:: +rg + cڡ& +_me +, + +8290 +d +:: +rg + cڡ& +_assName +, + +8291 +d +:: +rg + cڡ& +_desti +, + +8292 +d +:: +t + cڡ& +_gs +, + +8293 +SourLeInfo + cڡ& +_leInfo + ) + +8294 : +me + +_me + ), + +8295 +assName + +_assName + ), + +8296 +desti + +_desti + ), + +8297 +leInfo + +_leInfo + ), + +8298 +ݔts + +Ne + ) + +8300 +tTags +* +this +, +_gs + ); + +8303 + gTeCaInfo +:: +TeCaInfo +TeCaInfcڡ& +h + ) + +8304 : +me + +h +.name ), + +8305 +assName + +h +.className ), + +8306 +desti + +h +.description ), + +8307 +gs + +h +.tags ), + +8308 +lTags + +h +.lcaseTags ), + +8309 +gsAsSg + +h +.tagsAsString ), + +8310 +leInfo + +h +.lineInfo ), + +8311 +ݔts + +h +.properties ) + +8314 +bo + + gTeCaInfo +:: +isHidd +() const { + +8315  ( +ݔts + & +IsHidd + ) != 0; + +8317 +bo + + gTeCaInfo +:: +throws +() const { + +8318  ( +ݔts + & +Throws + ) != 0; + +8320 +bo + + gTeCaInfo +:: +okToFa +() const { + +8321  ( +ݔts + & ( +ShouldFa + | +MayFa + ) ) != 0; + +8323 +bo + + gTeCaInfo +:: +exedToFa +() const { + +8324  ( +ݔts + & ( +ShouldFa + ) ) != 0; + +8327 + gTeCa +:: +TeCa + +ITeCa +* +Ca +, +TeCaInfo + cڡ& +fo + ) : TeCaInfoКf), + +(estCase ) {} + +8329 + gTeCa +:: +TeCa +TeCa cڡ& +h + ) + +8330 : +TeCaInfo + +h + ), + +8331 + + +h +.test ) + +8334 +TeCa + + gTeCa +:: +whName + +d +:: +rg + cڡ& +_wName + ) const { + +8335 +TeCa + +h +* +this + ); + +8336 + gh +. + gme + = +_wName +; + +8337  + gh +; + +8340  + gTeCa +:: +sw + +TeCa +& +h + ) { + +8341 + +. +sw + +h +.test ); + +8342 + gme +. +sw + +h +. +me + ); + +8343 + gassName +. +sw + +h +. +assName + ); + +8344 + gdesti +. +sw + +h +. +desti + ); + +8345 + ggs +. +sw + +h +. +gs + ); + +8346 + glTags +. +sw + +h +. +lTags + ); + +8347 + ggsAsSg +. +sw + +h +. +gsAsSg + ); + +8348 + gd +:: +sw + +TeCaInfo +:: +ݔts +, +ic_ + +h + ).properties ); + +8349 + gd +:: +sw + +leInfo +, +h +.lineInfo ); + +8352  + gTeCa +:: +voke +() const { + +8353 + +-> +voke +(); + +8356 +bo + + gTeCa +:: +ݔ + = +TeCa + cڡ& +h + ) const { + +8357  + +. +g +(= +h +.test.get() && + +8358 +me + = +h +.name && + +8359 +assName + = +h +.className; + +8362 +bo + + gTeCa +:: +ݔ + < ( +TeCa + cڡ& +h + ) const { + +8363  +me + < +h +.name; + +8365 + gTeCa +& TeCa:: +ݔ + = ( +TeCa + cڡ& +h + ) { + +8366 +TeCa + +mp + +h + ); + +8367 +sw + +mp + ); + +8368  * + gthis +; + +8371 +TeCaInfo + cڡ& + gTeCa +:: +gTeCaInfo +() const + +8373  * +this +; + +8379  + #TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED + + + ) + +8381 +mea + + gCch + { + +8383 + gVsi +:: +Vsi + + +8384  +_majVsi +, + +8385  + g_mVsi +, + +8386  + g_tchNumb +, + +8387 cڡ * cڡ + g_bnchName +, + +8388  + g_budNumb + ) + +8389 : +majVsi + +_majVsi + ), + +8390 +mVsi + +_mVsi + ), + +8391 +tchNumb + +_tchNumb + ), + +8392 +bnchName + +_bnchName + ), + +8393 +budNumb + +_budNumb + ) + +8396 + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +Vsi + cڡ& + gvsi + ) { + +8397 + gos + << + gvsi +. + gmajVsi + << '.' + +8398 << + gvsi +. + gmVsi + << '.' + +8399 << + gvsi +. + gtchNumb +; + +8401 i( + gvsi +. + gbnchName +[0]) { + +8402 + gos + << '-' << + gvsi +. + gbnchName + + +8403 << '.' << + gvsi +. + gbudNumb +; + +8405  + gos +; + +8408 +le + +Vsi + +libryVsi +() { + +8409  +Vsi + +vsi +( 1, 9, 7, "", 0 ); + +8410  + gvsi +; + +8416  + #TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED + + + ) + +8418 +mea + + gCch + { + +8420 + gMesgeInfo +:: +MesgeInfo + +d +:: +rg + cڡ& +_maoName +, + +8421 +SourLeInfo + cڡ& +_leInfo +, + +8422 +ResuWas +:: +OfTy + +_ty + ) + +8423 : +maoName + +_maoName + ), + +8424 +leInfo + +_leInfo + ), + +8425 +ty + +_ty + ), + +8426 +qu +++ +globCou + ) + +8430  + gMesgeInfo +:: +globCou + = 0; + +8434 + gScedMesge +:: +ScedMesge + +MesgeBud + cڡ& +bud + ) + +8435 : +m_fo + +bud +.m_info ) + +8437 +m_fo +. +mesge + = +bud +. +m_am +. +r +(); + +8438 +gResuCtu +(). +pushScedMesge + +m_fo + ); + +8440 + gScedMesge +:: +ScedMesge +ScedMesgcڡ& +h + ) + +8441 : +m_fo + +h +.m_info ) + +8444 +ScedMesge +::~ScopedMessage() { + +8445 i! +d +:: +unught_exi +() ){ + +8446 +gResuCtu +(). +pScedMesge +( +m_fo +); + +8453  + #TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_HPP_INCLUDED + + + ) + +8456  + #TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_H_INCLUDED + + + ) + +8458 +mea + + gCch + + +8461  + gIR܋r + : +IShed + { + +8462 +vtu + ~ +IR܋r +(); + +8464 +vtu + +bo + +shouldRedeStdout +() const = 0; + +8466 +vtu +  +STeg +() = 0; + +8467 +vtu +  +EndTeg + +Tٮs + cڡ& +tٮs + ) = 0; + +8468 +vtu +  +SGroup + +d +:: +rg + cڡ& +groupName + ) = 0; + +8469 +vtu +  +EndGroup + +d +:: +rg + cڡ& +groupName +, +Tٮs + cڡ& +tٮs + ) = 0; + +8470 +vtu +  +STeCa + +TeCaInfo + cڡ& +Info + ) = 0; + +8471 +vtu +  +EndTeCa + +TeCaInfo + cڡ& +Info +, +Tٮs + cڡ& +tٮs +, +d +:: +rg + cڡ& +dOut +, std::rg cڡ& +dE + ) = 0; + +8472 +vtu +  +SSei + +d +:: +rg + cڡ& +iName +, std::rg cڡ& +desti + ) = 0; + +8473 +vtu +  +EndSei + +d +:: +rg + cڡ& +iName +, +Cous + cڡ& +asis + ) = 0; + +8474 +vtu +  +NoAsisInSei + +d +:: +rg + cڡ& +iName + ) = 0; + +8475 +vtu +  +NoAsisInTeCa + +d +:: +rg + cڡ& +Name + ) = 0; + +8476 +vtu +  +Ab܋d +() = 0; + +8477 +vtu +  +Resu + +AsiResu + cڡ& +su + ) = 0; + +8480 +ass + + gLegacyR܋rAdr + : +public + +ShedIm +< +ISmgR܋r +> + +8482 +public +: + +8483 +LegacyR܋rAdr + +P +< +IR܋r +> cڡ& +gacyR܋r + ); + +8484 + gvtu + ~ +LegacyR܋rAdr +(); + +8486 +vtu + +R܋rPns + +gPns +() const; + +8487 +vtu +  +noMchgTeCas + +d +:: +rg + const& ); + +8488 +vtu +  +RunSg + +TeRunInfo + const& ); + +8489 +vtu +  +GroupSg + +GroupInfo + cڡ& +groupInfo + ); + +8490 +vtu +  +CaSg + +TeCaInfo + cڡ& +Info + ); + +8491 +vtu +  +iSg + +SeiInfo + cڡ& +iInfo + ); + +8492 +vtu +  +asiSg + +AsiInfo + const& ); + +8493 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +asiSts + ); + +8494 +vtu +  +iEnded + +SeiSts + cڡ& +iSts + ); + +8495 +vtu +  +CaEnded + +TeCaSts + cڡ& +CaSts + ); + +8496 +vtu +  +GroupEnded + +TeGroupSts + cڡ& +GroupSts + ); + +8497 +vtu +  +RunEnded + +TeRunSts + cڡ& +RunSts + ); + +8498 +vtu +  +skTe + +TeCaInfo + const& ); + +8500 + give +: + +8501 +P +< +IR܋r +> +m_gacyR܋r +; + +8505 +mea + + gCch + + +8507 + gLegacyR܋rAdr +:: +LegacyR܋rAdr + +P +< +IR܋r +> cڡ& +gacyR܋r + ) + +8508 : +m_gacyR܋r + +gacyR܋r + ) + +8510 +LegacyR܋rAdr +::~LegacyReporterAdapter() {} + +8512 +R܋rPns + +LegacyR܋rAdr +:: +gPns +() const { + +8513 +R܋rPns + +efs +; + +8514 + gefs +. + gshouldRedeStdOut + = +m_gacyR܋r +-> +shouldRedeStdout +(); + +8515  + gefs +; + +8518  + gLegacyR܋rAdr +:: +noMchgTeCas + +d +:: +rg + const& ) {} + +8519  +LegacyR܋rAdr +:: +RunSg + +TeRunInfo + const& ) { + +8520 +m_gacyR܋r +-> +STeg +(); + +8522  + gLegacyR܋rAdr +:: +GroupSg + +GroupInfo + cڡ& +groupInfo + ) { + +8523 +m_gacyR܋r +-> +SGroup + +groupInfo +. +me + ); + +8525  + gLegacyR܋rAdr +:: +CaSg + +TeCaInfo + cڡ& +Info + ) { + +8526 +m_gacyR܋r +-> +STeCa + +Info + ); + +8528  + gLegacyR܋rAdr +:: +iSg + +SeiInfo + cڡ& +iInfo + ) { + +8529 +m_gacyR܋r +-> +SSei + +iInfo +. +me +, seiInfo. +desti + ); + +8531  + gLegacyR܋rAdr +:: +asiSg + +AsiInfo + const& ) { + +8535 +bo + +LegacyR܋rAdr +:: +asiEnded + +AsiSts + cڡ& +asiSts + ) { + +8536 if +asiSts +. +asiResu +. +gResuTy +(! +ResuWas +:: +Ok + ) { + +8537  +d +:: +ve +< +MesgeInfo +>:: +cڡ_ + + + = +asiSts +. +foMesges +. +beg +(), + gEnd + =siSts.foMesges. +d +(); + +8538 + g + ! +End +; + +8539 ++ + g + ) { + +8540 if + g +-> + gty + = +ResuWas +:: +Info + ) { + +8541 +ResuBud + +rb + + +-> +maoName +. +c_r +(), it-> +leInfo +, "", +ResuDiosi +:: +Nm + ); + +8542 + grb + << + g +-> + gmesge +; + +8543 + grb +. +tResuTy + +ResuWas +:: +Info + ); + +8544 +AsiResu + + gsu + = +rb +. +bud +(); + +8545 + gm_gacyR܋r +-> +Resu + +su + ); + +8549 + gm_gacyR܋r +-> +Resu + +asiSts +. +asiResu + ); + +8550  + gue +; + +8552  + gLegacyR܋rAdr +:: +iEnded + +SeiSts + cڡ& +iSts + ) { + +8553 if +iSts +. +missgAsis + ) + +8554 +m_gacyR܋r +-> +NoAsisInSei + +iSts +. +iInfo +. +me + ); + +8555 + gm_gacyR܋r +-> +EndSei + +iSts +. +iInfo +. +me +, seiSts. +asis + ); + +8557  + gLegacyR܋rAdr +:: +CaEnded + +TeCaSts + cڡ& +CaSts + ) { + +8558 +m_gacyR܋r +-> +EndTeCa + + +8559 +CaSts +. +Info +, + +8560 + gCaSts +. + gtٮs +, + +8561 + gCaSts +. + gdOut +, + +8562 + gCaSts +. + gdE + ); + +8564  + gLegacyR܋rAdr +:: +GroupEnded + +TeGroupSts + cڡ& +GroupSts + ) { + +8565 if +GroupSts +. +abtg + ) + +8566 +m_gacyR܋r +-> +Ab܋d +(); + +8567 + gm_gacyR܋r +-> +EndGroup + +GroupSts +. +groupInfo +. +me +,eGroupSts. +tٮs + ); + +8569  + gLegacyR܋rAdr +:: +RunEnded + +TeRunSts + cڡ& +RunSts + ) { + +8570 +m_gacyR܋r +-> +EndTeg + +RunSts +. +tٮs + ); + +8572  + gLegacyR܋rAdr +:: +skTe + +TeCaInfo + const& ) { + +8578 #ifde +__g__ + + +8579 #agm +g + +dgnoic + +push + + +8580 #agm +g + +dgnoic + +igned + "-Wc++11-long-long" + +8583 #ifde +CATCH_PLATFORM_WINDOWS + + +8587  + ~ + +8591 +mea + +Cch + { + +8593 +mea + { + +8594 #ifde +CATCH_PLATFORM_WINDOWS + + +8595 +UI64 + +gCutTicks +() { + +8596  +UI64 + +hz +=0, + ghzo +=0; + +8597 i(! + ghz +) { + +8598 +QuyPfmFqucy + +t_ +< +LARGE_INTEGER +*>& +hz + ) ); + +8599 +QuyPfmCou + +t_ +< +LARGE_INTEGER +*>& +hzo + ) ); + +8601 +UI64 + + gt +; + +8602 +QuyPfmCou + +t_ +< +LARGE_INTEGER +*>& +t + ) ); + +8603  (( + gt +- + ghzo +)*1000000)/ + ghz +; + +8606 +UI64 + +gCutTicks +() { + +8607 +timev + + gt +; + +8608 +gtimeofday +(& +t +, +CATCH_NULL +); + +8609  + gic_ +< + gUI64 +> + gt +. + gtv_c + ) * 1000000u + stic_t. + gtv_uc + ); + +8614  + gTim +:: +t +() { + +8615 +m_ticks + = +gCutTicks +(); + +8617  + gTim +:: +gEpdMiocds +() const { + +8618  +ic_ +<>( +gCutTicks +(- +m_ticks +); + +8620  + gTim +:: +gEpdMlicds +() const { + +8621  +ic_ +<>( +gEpdMiocds +()/1000); + +8623  + gTim +:: +gEpdSecds +() const { + +8624  +gEpdMiocds +()/1000000.0; + +8629 #ifde +__g__ + + +8630 #agm +g + +dgnoic + +p + + +8633  + #TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED + + + ) + +8635  + ~ + +8636  + ~ + +8638 +mea + + gCch + { + +8640 +bo + +tsWh + +d +:: +rg + cڡ& +s +, std::rg cڡ& +efix + ) { + +8641  +s +. +size +(> +efix +.size(&& +d +:: +equ +ջfix. +beg +(),fix. +d +(), s.begin()); + +8643 +bo + +tsWh + +d +:: +rg + cڡ& +s +,  +efix + ) { + +8644  ! + gs +. +emy +(&& s[0] = +efix +; + +8646 +bo + +dsWh + +d +:: +rg + cڡ& +s +, std::rg cڡ& +suffix + ) { + +8647  +s +. +size +(> +suffix +.size(&& +d +:: +equ +(suffix. +rbeg +(), suffix. +nd +(), s.rbegin()); + +8649 +bo + +dsWh + +d +:: +rg + cڡ& +s +,  +suffix + ) { + +8650  ! + gs +. +emy +(&& s[ +s +. +size +()-1] = +suffix +; + +8652 +bo + +cڏs + +d +:: +rg + cڡ& +s +, std::rg cڡ& +fix + ) { + +8653  +s +. +fd + +fix + ) ! +d +:: +rg +:: +os +; + +8655  +toLowCh +( +c +) { + +8656  + gic_ +<> + gd +:: +tow + +c + ) ); + +8658  +toLowInP + +d +:: +rg +& +s + ) { + +8659 +d +:: +sfm + +s +. +beg +(), s. +d +(), s.beg(), +toLowCh + ); + +8661 + gd +:: +rg + +toLow + +d +::rg cڡ& +s + ) { + +8662 +d +:: +rg + +lc + = +s +; + +8663 +toLowInP + +lc + ); + +8664  + glc +; + +8666 + gd +:: +rg + +im + +d +::rg cڡ& +r + ) { + +8667 cڡ* +wheaChs + = "\n\r\t "; + +8668 + gd +:: +rg +:: +size_ty + +t + = +r +. +fd_f_n_of + +wheaChs + ); + +8669 + gd +:: +rg +:: +size_ty + +d + = +r +. +fd_ϡ_n_of + +wheaChs + ); + +8671  + gt + ! +d +:: +rg +:: +os + ? +r +. +subr + +t +, 1+ +d +-start ) : std::string(); + +8674 +bo + +aInP + +d +:: +rg +& +r +, std::rg cڡ& +aThis +, std::rg cڡ& +whThis + ) { + +8675 +bo + +ad + = +l +; + +8676 + gd +:: +size_t + +i + = +r +. +fd + +aThis + ); + +8677  + gi + ! +d +:: +rg +:: +os + ) { + +8678 +ad + = +ue +; + +8679 + gr + = +r +. +subr +0, +i + ) + + gwhThis + + s.subri+ +aThis +. +size +() ); + +8680 if + gi + < + gr +. +size +()- + gwhThis +.size() ) + +8681 + gi + = +r +. +fd + +aThis +, +i ++ +whThis +. +size +() ); + +8683 + gi + = +d +:: +rg +:: +os +; + +8685  + gad +; + +8688 + guli +:: +uli + +d +:: +size_t + +cou +, std:: +rg + cڡ& +b + ) + +8689 : +m_cou + +cou + ), + +8690 +m_b + +b + ) + +8693 + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +uli + cڡ& + gulir + ) { + +8694 + gos + << + gulir +. + gm_cou + << ' ' < +gSd +(); + +8723 + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +SourLeInfo + cڡ& + gfo + ) { + +8724 #ide +__GNUG__ + + +8725 + gos + << + gfo +. + gfe + << '(' << info. + gle + << ')'; + +8727 + gos + << + gfo +. + gfe + << ':' << info. + gle +; + +8729  + gos +; + +8732  +throwLogicE + +d +:: +rg + cڡ& +mesge +, +SourLeInfo + cڡ& +lotiInfo + ) { + +8733 + gd +:: +orgam + +oss +; + +8734 + goss + << + glotiInfo + << ": ICch: '" << + gmesge + << '\''; + +8735 if +waysTrue +() ) + +8736 +throw + + gd +:: +logic_r + +oss +. +r +() ); + +8741  + #TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED + + + ) + +8743 +mea + + gCch + { + +8745 + gSeiInfo +:: +SeiInfo + + +8746 +SourLeInfo + cڡ& +_leInfo +, + +8747 + gd +:: +rg + cڡ& +_me +, + +8748 + gd +:: +rg + cڡ& +_desti + ) + +8749 : +me + +_me + ), + +8750 +desti + +_desti + ), + +8751 +leInfo + +_leInfo + ) + +8754 + gSei +:: +Sei + +SeiInfo + cڡ& +fo + ) + +8755 : +m_fo + +fo + ), + +8756 +m_iInuded + +gResuCtu +(). +iSed + +m_fo +, +m_asis + ) ) + +8758 + gm_tim +. +t +(); + +8761 #i +defed +( +_MSC_VER +) + +8762 #agm +wng +( +push +) + +8763 #agm +wng +( +dib +:4996) + +8765 + gSei +::~ +Sei +() { + +8766 if +m_iInuded + ) { + +8767 +SeiEndInfo + +dInfo + +m_fo +, +m_asis +, +m_tim +. +gEpdSecds +() ); + +8768 if + gd +:: +unught_exi +() ) + +8769 +gResuCtu +(). +iEndedEly + +dInfo + ); + +8771 +gResuCtu +(). +iEnded + +dInfo + ); + +8774 #i +defed +( +_MSC_VER +) + +8775 #agm +wng +( +p +) + +8779 + gSei +:: +ݔ + +bo +() const { + +8780  +m_iInuded +; + +8786  + #TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED + + + ) + +8788 #ifde +CATCH_PLATFORM_MAC + + +8790  + ~ + +8791  + ~ + +8792  + ~ + +8793  + ~ + +8794  + ~ + +8796 +mea + + gCch +{ + +8803 +bo + +isDebuggAive +(){ + +8805  + gmib +[4]; + +8806  +kfo_oc + + gfo +; + +8807 +size_t + + gsize +; + +8812 + gfo +. + gkp_oc +. + gp_ag + = 0; + +8817 + gmib +[0] = +CTL_KERN +; + +8818 + gmib +[1] = +KERN_PROC +; + +8819 + gmib +[2] = +KERN_PROC_PID +; + +8820 + gmib +[3] = +gpid +(); + +8824 + gsize + = ( +fo +); + +8825 if +sysl +( +mib +, (mib/ (*mib), & +fo +, & +size +, +CATCH_NULL +, 0) != 0 ) { + +8826 +Cch +:: + +(<< "\n** Ctsysed - ubˁdmidebugg iaiv**\n" << +d +:: +dl +; + +8827  + gl +; + +8832  ( ( + gfo +. + gkp_oc +. + gp_ag + & + gP_TRACED +) != 0 ); + +8836 #i + $defed +( +CATCH_PLATFORM_LINUX +) + +8837  + ~ + +8838  + ~ + +8840 +mea + +Cch +{ + +8848 +bo + + `isDebuggAive +(){ + +8851 +EnoGud + +gud +; + +8852 +d +:: +ifam + + ` +("/proc/self/status"); + +8853  +d +:: +rg + +le +; std:: + `gle +( + +,ine); ) { + +8854 cڡ  +PREFIX_LEN + = 11; + +8855 if +le +. + `com +(0, +PREFIX_LEN +, "TracerPid:\t") == 0 ) { + +8859  +le +. + `ngth +(> +PREFIX_LEN + &&ine[PREFIX_LEN] != '0'; + +8863  +l +; + +8865 + } +} + +8866 #i + $defed +( +_MSC_VER +) + +8867 "C" + $__deec +( +dimpt + +__d + + `IsDebuggP +(); + +8868 +mea + +Cch + { + +8869 +bo + + `isDebuggAive +() { + +8870  + `IsDebuggP +() != 0; + +8872 + } +} + +8873 #i + $defed +( +__MINGW32__ +) + +8874 "C" + $__deec +( +dimpt + +__d + + `IsDebuggP +(); + +8875 +mea + +Cch + { + +8876 +bo + + `isDebuggAive +() { + +8877  + `IsDebuggP +() != 0; + +8879 + } +} + +8881 +mea + + gCch + { + +8882 +le + +bo + +isDebuggAive +({  + gl +; } + +8886 #ifde +CATCH_PLATFORM_WINDOWS + + +8888 +mea + + gCch + { + +8889  +wreToDebugCse + +d +:: +rg + cڡ& +xt + ) { + +8890 :: +OuutDebugSgA + +xt +. +c_r +() ); + +8894 +mea + + gCch + { + +8895  +wreToDebugCse + +d +:: +rg + cڡ& +xt + ) { + +8897 +Cch +:: +cout +(<< +xt +; + +8903  + #TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED + + + ) + +8905 +mea + + gCch + { + +8907 +mea + + gDa + { + +8909 cڡ + gd +:: +rg + +urbSg + = "{?}"; + +8911 + gmea + { + +8912 cڡ  + ghexThshd + = 255; + +8914  + sEndess + { + +8915 + eArch + { + gBig +, + gLe + }; + +8917  +Arch + +which +() { + +8918  + u_ +{ + +8919  + gasI +; + +8920  + gasCh +[ ()]; + +8921 } + gu +; + +8923 + gu +. + gasI + = 1; + +8924  ( + gu +. + gasCh +[()-1] =1 ) ? +Big + : +Le +; + +8929 + gd +:: +rg + +wMemyToSg +cڡ * +obje +, +d +:: +size_t + +size + ) + +8932  +i + = 0, + gd + = +ic_ +<> +size + ), + gc + = 1; + +8933 if + gEndess +:: +which +(= +Endess +:: +Le + ) { + +8934 +i + = +d +-1; + +8935 + gd + = +c + = -1; + +8938 cڡ * + gbys + = +ic_ +<cڡ *>( +obje +); + +8939 + gd +:: +orgam + +os +; + +8940 + gos + << "0x" << + gd +:: +tfl +('0'<< +d +:: +hex +; + +8941  ; + gi + ! +d +; i + +c + ) + +8942 +os + << +d +:: +tw +(2<< +ic_ +<>( +bys +[ +i +]); + +8943  + gos +. +r +(); + +8947 + gd +:: +rg + +toSg + +d +::rg cڡ& +vue + ) { + +8948 +d +:: +rg + +s + = +vue +; + +8949 if +gCutCڋxt +(). +gCfig +()-> +showInvisibs +() ) { + +8950  +size_t + + gi + = 0; i < + gs +. +size +(); ++i ) { + +8951 + gd +:: +rg + +subs +; + +8952  + gs +[ +i +] ) { + +8953 '\n': +subs + = "\\n"; ; + +8954 '\t': +subs + = "\\t"; ; + +8957 if! + gsubs +. +emy +() ) { + +8958 + gs + = +s +. +subr +0, +i + ) + + gsubs + + s.substr( i+1 ); + +8959 ++ + gi +; + +8963  '"' + + gs + + '"'; + +8965 + gd +:: +rg + +toSg + +d +:: +wrg + cڡ& +vue + ) { + +8967 +d +:: +rg + +s +; + +8968 + gs +. +rve + +vue +. +size +() ); + +8969  +size_t + + gi + = 0; i < + gvue +. +size +(); ++i ) + +8970 + gs + + +vue +[ +i +] <0xf? +ic_ +<>( value[i] ) : '?'; + +8971  + gCch +:: +toSg + +s + ); + +8974 + gd +:: +rg + +toSg +cڡ * cڡ +vue + ) { + +8975  +vue + ? +Cch +:: +toSg + +d +:: +rg +( value ) ) : std::string( "{null string}" ); + +8978 + gd +:: +rg + +toSg +* cڡ +vue + ) { + +8979  +Cch +:: +toSg + +ic_ + +vue + ) ); + +8982 + gd +:: +rg + +toSg +cڡ +wch_t +* cڡ +vue + ) + +8984  +vue + ? +Cch +:: +toSg + +d +:: +wrg +(vue: std:: +rg +( "{null string}" ); + +8987 + gd +:: +rg + +toSg + +wch_t +* cڡ +vue + ) + +8989  +Cch +:: +toSg + +ic_ + +vue + ) ); + +8992 + gd +:: +rg + +toSg + +vue + ) { + +8993 +d +:: +orgam + +oss +; + +8994 + goss + << + gvue +; + +8995 if + gvue + > + gDa +:: +hexThshd + ) + +8996 +oss + << " (0x" << +d +:: +hex + << +vue + << ')'; + +8997  + goss +. +r +(); + +9000 + gd +:: +rg + +toSg + +vue + ) { + +9001 +d +:: +orgam + +oss +; + +9002 + goss + << + gvue +; + +9003 if + gvue + > + gDa +:: +hexThshd + ) + +9004 +oss + << " (0x" << +d +:: +hex + << +vue + << ')'; + +9005  + goss +. +r +(); + +9008 + gd +:: +rg + +toSg + +vue + ) { + +9009  +Cch +:: +toSg + +ic_ +<> +vue + ) ); + +9012 + gme +< +tyme + + gT +> + +9013 + gd +:: +rg + +ToSg + +T + +vue +,  +ecisi + ) { + +9014 + gd +:: +orgam + +oss +; + +9015 + goss + << + gd +:: +cisi + +ecisi + ) + +9016 << +d +:: +fixed + + +9017 << +vue +; + +9018 + gd +:: +rg + +d + = +oss +. +r +(); + +9019 + gd +:: +size_t + +i + = +d +. +fd_ϡ_n_of +( '0' ); + +9020 if + gi + ! +d +:: +rg +:: +os + && +i + ! +d +. +size +()-1 ) { + +9021 if +d +[ +i +] == '.' ) + +9022 +i +++; + +9023 + gd + = +d +. +subr +0, +i ++1 ); + +9025  + gd +; + +9028 + gd +:: +rg + +toSg +cڡ  +vue + ) { + +9029  +ToSg + +vue +, 10 ); + +9031 + gd +:: +rg + +toSg +cڡ  +vue + ) { + +9032  +ToSg + +vue +, 5 ) + 'f'; + +9035 + gd +:: +rg + +toSg + +bo + +vue + ) { + +9036  +vue + ? "true" : "false"; + +9039 + gd +:: +rg + +toSg + +vue + ) { + +9040 i +vue + == '\r' ) + +9042 i + gvue + == '\f' ) + +9044 i + gvue + == '\n' ) + +9046 i + gvue + == '\t' ) + +9048 i'\0' < +vue + && value < ' ' ) + +9049  +toSg + +ic_ +<> +vue + ) ); + +9050  + gchr +[] = "' '"; + +9051 + gchr +[1] = +vue +; + +9052  + gchr +; + +9055 + gd +:: +rg + +toSg +sigd  +vue + ) { + +9056  +toSg + +ic_ +<> +vue + ) ); + +9059 + gd +:: +rg + +toSg + +vue + ) { + +9060  +toSg + +ic_ +<> +vue + ) ); + +9063 #ifde +CATCH_CONFIG_CPP11_LONG_LONG + + +9064 + gd +:: +rg + +toSg + +vue + ) { + +9065 +d +:: +orgam + +oss +; + +9066 + goss + << + gvue +; + +9067 if + gvue + > + gDa +:: +hexThshd + ) + +9068 +oss + << " (0x" << +d +:: +hex + << +vue + << ')'; + +9069  + goss +. +r +(); + +9071 + gd +:: +rg + +toSg + +vue + ) { + +9072 +d +:: +orgam + +oss +; + +9073 + goss + << + gvue +; + +9074 if + gvue + > + gDa +:: +hexThshd + ) + +9075 +oss + << " (0x" << +d +:: +hex + << +vue + << ')'; + +9076  + goss +. +r +(); + +9080 #ifde +CATCH_CONFIG_CPP11_NULLPTR + + +9081 + gd +:: +rg + +toSg + +d +:: +nuαr_t + ) { + +9086 #ifde +__OBJC__ + + +9087 + gd +:: +rg + +toSg + +NSSg + cڡ * cڡ& +nsrg + ) { + +9088 if! +nsrg + ) + +9090  "@" + +toSg +([ +nsrg + +UTF8Sg +]); + +9092 + gd +:: +rg + +toSg + +NSSg + * +CATCH_ARC_STRONG + & +nsrg + ) { + +9093 if! +nsrg + ) + +9095  "@" + +toSg +([ +nsrg + +UTF8Sg +]); + +9097 + gd +:: +rg + +toSg + +NSObje +* cڡ& +nsObje + ) { + +9098  +toSg +[ +nsObje + +desti +] ); + +9105  + #TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED + + + ) + +9107 +mea + + gCch + { + +9109 + gResuBud +:: +ResuBud +cڡ* +maoName +, + +9110 +SourLeInfo + cڡ& +leInfo +, + +9111 cڡ* +udExessi +, + +9112 +ResuDiosi +:: +Fgs + +suDiosi +, + +9113 cڡ* +cdArg + ) + +9114 : +m_asiInfo + +maoName +, +leInfo +, +udExessi +, +suDiosi +, +cdArg + ), + +9115 +m_shouldDebugBak + +l + ), + +9116 +m_shouldThrow + +l + ), + +9117 +m_gudExi + +l + ), + +9118 +m_udSm + +l + ) + +9121 + gResuBud +::~ +ResuBud +() { + +9122 #i +defed +( +CATCH_CONFIG_FAST_COMPILE +) + +9123 i +m_gudExi + ) { + +9124 +am +(). +oss + << "Exceptionranslation was disabled by CATCH_CONFIG_FAST_COMPILE"; + +9125 +uResu + +ResuWas +:: +ThwExi + ); + +9126 +gCutCڋxt +(). +gResuCtu +()-> +exiElyR܋d +(); + +9131 + gResuBud +& ResuBud:: +tResuTy + +ResuWas +:: +OfTy + +su + ) { + +9132 +m_da +. +suTy + = +su +; + +9133  * + gthis +; + +9135 + gResuBud +& ResuBud:: +tResuTy + +bo + +su + ) { + +9136 +m_da +. +suTy + = +su + ? +ResuWas +:: +Ok + : ResuWas:: +ExessiFaed +; + +9137  * + gthis +; + +9140  + gResuBud +:: +dExessi + +DecompodExessi + cڡ& +ex + ) { + +9142 if +isFTe + +m_asiInfo +. +suDiosi + ) ) { + +9143 +m_da +. +ge + +ex +. +isByExessi +() ); + +9146 +gResuCtu +(). +asiRun +(); + +9148 if( +gCutCڋxt +(). +gCfig +()-> +udeSucssfulResus +(|| + gm_da +. + gsuTy + ! +ResuWas +:: +Ok +) + +9150 +AsiResu + +su + = +bud + +ex + ); + +9151 +hdResu + +su + ); + +9154 +gResuCtu +(). +asiPasd +(); + +9157  + gResuBud +:: +uAiveExi + +ResuDiosi +:: +Fgs + +suDiosi + ) { + +9158 +m_asiInfo +. +suDiosi + =esultDisposition; + +9159 +am +(). + goss + << + gCch +:: +eAiveExi +(); + +9160 +uResu + +ResuWas +:: +ThwExi + ); + +9163  + gResuBud +:: +uResu + +ResuWas +:: +OfTy + +suTy + ) { + +9164 +tResuTy + +suTy + ); + +9165 +uExessi +(); + +9168  + gResuBud +:: +uExedExi + +d +:: +rg + cڡ& +exedMesge + ) { + +9169 if +exedMesge +. +emy +() ) + +9170 +uExedExi + +Mchs +:: +Im +:: +MchAOf +< +d +:: +rg +>() ); + +9172 +uExedExi + +Mchs +:: +Equs + +exedMesge + ) ); + +9175  + gResuBud +:: +uExedExi + +Mchs +:: +Im +:: +MchBa +< +d +:: +rg +> cڡ& +mch + ) { + +9177 +as +! +isFTe + +m_asiInfo +. +suDiosi + ) ); + +9178 +AsiResuDa + + gda + = +m_da +; + +9179 + gda +. + gsuTy + = +ResuWas +:: +Ok +; + +9180 + gda +. + gcڡruedExessi + = +udExessiWhSecdArgumt +( +m_asiInfo +. +udExessi +, m_asiInfo. +cdArg +); + +9182 + gd +:: +rg + +auMesge + = +Cch +:: +eAiveExi +(); + +9183 if! + gmch +. +mch + +auMesge + ) ) { + +9184 + gda +. + gsuTy + = +ResuWas +:: +ExessiFaed +; + +9185 + gda +. + gcڡruedExessi + = +auMesge +; + +9187 +AsiResu + +su + +m_asiInfo +, +da + ); + +9188 +hdResu + +su + ); + +9191  + gResuBud +:: +uExessi +() { + +9192 +AsiResu + +su + = +bud +(); + +9193 +hdResu + +su + ); + +9196  + gResuBud +:: +hdResu + +AsiResu + cڡ& +su + ) + +9198 +gResuCtu +(). +asiEnded + +su + ); + +9200 if! + gsu +. +isOk +() ) { + +9201 if +gCutCڋxt +(). +gCfig +()-> +shouldDebugBak +() ) + +9202 + gm_shouldDebugBak + = +ue +; + +9203 if +gCutCڋxt +(). +gRu” +()-> +abtg +(|| ( + gm_asiInfo +. + gsuDiosi + & + gResuDiosi +:: +Nm +) ) + +9204 +m_shouldThrow + = +ue +; + +9208  + gResuBud +:: +a +() { + +9209 #i +defed +( +CATCH_CONFIG_FAST_COMPILE +) + +9210 i( +m_shouldDebugBak +) { + +9215 +CATCH_BREAK_INTO_DEBUGGER +(); + +9218 if + gm_shouldThrow + ) + +9219 +throw + + gCch +:: +TeFauExi +(); + +9222 +bo + + gResuBud +:: +shouldDebugBak +(cڡ {  +m_shouldDebugBak +; } + +9223 +bo + + gResuBud +:: +lowThrows +(cڡ {  +gCutCڋxt +(). +gCfig +()->allowThrows(); } + +9225 +AsiResu + + gResuBud +:: +bud +() const + +9227  +bud +* +this + ); + +9236 +AsiResu + + gResuBud +:: +bud + +DecompodExessi + cڡ& +ex + ) const + +9238 +as + +m_da +. +suTy + ! +ResuWas +:: +Unknown + ); + +9239 +AsiResuDa + + gda + = +m_da +; + +9241 if( + gm_udSm +) + +9242 + gda +. + gmesge + = +m_am +(). +oss +. +r +(); + +9243 + gda +. + gdecompodExessi + = & +ex +; + +9244  +AsiResu + +m_asiInfo +, +da + ); + +9247  + gResuBud +:: +cڡruExessi + +d +:: +rg +& +de + ) const { + +9248 +de + = +udExessiWhSecdArgumt +( +m_asiInfo +. +udExessi +, m_asiInfo. +cdArg +); + +9251  + gResuBud +:: +tExiGud +() { + +9252 +m_gudExi + = +ue +; + +9254  + gResuBud +:: +untExiGud +() { + +9255 +m_gudExi + = +l +; + +9261  + #TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED + + + ) + +9263 +mea + + gCch + { + +9265 + gTagAlsRegiry +::~ +TagAlsRegiry +() {} + +9267 +Oi +< +TagAls +> +TagAlsRegiry +:: +fd + +d +:: +rg + cڡ& +s + ) const { + +9268 +d +:: +m +:: +cڡ_ + + + = +m_giry +. +fd + +s + ); + +9269 if + g + ! +m_giry +. +d +() ) + +9270  + +-> +cd +; + +9272  + gOi +< + gTagAls +>(); + +9275 + gd +:: +rg + +TagAlsRegiry +:: +exndAls + +d +::rg cڡ& +uxndedTeSc + ) const { + +9276 +d +:: +rg + +exndedTeSc + = +uxndedTeSc +; + +9277  + gd +:: +m +< +d +:: +rg +, + gTagAls +>:: +cڡ_ + + + = +m_giry +. +beg +(), + gEnd + = m_giry. +d +(); + +9278 + g + ! +End +; + +9279 ++ + g + ) { + +9280 + gd +:: +size_t + +pos + = +exndedTeSc +. +fd + + +-> +f + ); + +9281 if + gpos + ! +d +:: +rg +:: +os + ) { + +9282 +exndedTeSc + =xndedTeSc. +subr +0, +pos + ) + + +9283 + g +-> + gcd +. + gg + + + +9284 + gexndedTeSc +. +subr + +pos + + + +-> +f +. +size +() ); + +9287  + gexndedTeSc +; + +9290  + gTagAlsRegiry +:: +add + +d +:: +rg + cڡ& +s +, std::rg cڡ& +g +, +SourLeInfo + cڡ& +leInfo + ) { + +9292 if! +tsWh + +s +, "[@" ) || ! +dsWh +(lias, ']' ) ) { + +9293 + gd +:: +orgam + +oss +; + +9294 + goss + << +Cour +Cour:: +Red + ) + +9295 << "r:agls, \"" << +s + << "\" isot ofhe form [@aliasame].\n" + +9296 << +Cour +Cour:: +FeName + ) + +9297 << +leInfo + << '\n'; + +9298 +throw + + gd +:: +doma_r + +oss +. +r +(). +c_r +() ); + +9300 if! + gm_giry +. + + +d +:: +make_ + +s +, +TagAls + +g +, +leInfo + ) ) ). + gcd + ) { + +9301 + gd +:: +orgam + +oss +; + +9302 + goss + << +Cour +Cour:: +Red + ) + +9303 << "r:agls, \"" << +s + << "\"lreadyegistered.\n" + +9305 << +Cour +Cour:: +Red + ) << +fd +( +s +)-> +leInfo + << '\n' + +9306 << +Cour +Cour:: +Red + ) << "\tRedefinedt " + +9307 << +Cour +Cour:: +FeName +<< +leInfo + << '\n'; + +9308 +throw + + gd +:: +doma_r + +oss +. +r +(). +c_r +() ); + +9312 + gITagAlsRegiry +::~ +ITagAlsRegiry +() {} + +9314 +ITagAlsRegiry + cڡ& ITagAlsRegiry:: +g +() { + +9315  +gRegiryHub +(). +gTagAlsRegiry +(); + +9318 + gRegirFTagAls +:: +RegirFTagAls +cڡ* +s +, cڡ* +g +, +SourLeInfo + cڡ& +leInfo + ) { + +9319 +gMubRegiryHub +(). +giTagAls + +s +, +g +, +leInfo + ); + +9326 +mea + + gCch + { + +9327 +mea + + gMchs + { + +9329 +mea + + gStdSg + { + +9331 + gCadSg +:: +CadSg + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + ) + +9332 : +m_Ssivy + +Ssivy + ), + +9333 +m_r + +adjuSg + +r + ) ) + +9335 + gd +:: +rg + +CadSg +:: +adjuSg + +d +::rg cڡ& +r + ) const { + +9336  +m_Ssivy + = +CaSsive +:: +No + + +9337 ? +toLow + +r + ) + +9338 : +r +; + +9340 + gd +:: +rg + +CadSg +:: +SsivySuffix +() const { + +9341  +m_Ssivy + = +CaSsive +:: +No + + +9343 : +d +:: +rg +(); + +9346 + gSgMchBa +:: +SgMchBa + +d +:: +rg + cڡ& +ݔi +, +CadSg + cڡ& +comt + ) + +9347 : +m_comt + +comt + ), + +9348 +m_ݔi + +ݔi + ) { + +9351 + gd +:: +rg + +SgMchBa +:: +desibe +() const { + +9352 +d +:: +rg + +desti +; + +9353 + gdesti +. +rve +(5 + +m_ݔi +. +size +(+ +m_comt +. +m_r +.size() + + +9354 +m_comt +. +SsivySuffix +(). +size +()); + +9355 + gdesti + + +m_ݔi +; + +9356 + gdesti + += ": \""; + +9357 + gdesti + + +m_comt +. +m_r +; + +9358 + gdesti + += "\""; + +9359 + gdesti + + +m_comt +. +SsivySuffix +(); + +9360  + gdesti +; + +9363 + gEqusMch +:: +EqusMch + +CadSg + cڡ& +comt + ) : +SgMchBa +( "equals", comparator ) {} + +9365 +bo + + gEqusMch +:: +mch + +d +:: +rg + cڡ& +sour + ) const { + +9366  +m_comt +. +adjuSg + +sour + ) =m_comt. +m_r +; + +9369 + gCڏsMch +:: +CڏsMch + +CadSg + cڡ& +comt + ) : +SgMchBa +( "contains", comparator ) {} + +9371 +bo + + gCڏsMch +:: +mch + +d +:: +rg + cڡ& +sour + ) const { + +9372  +cڏs + +m_comt +. +adjuSg + +sour + ), m_comt. +m_r + ); + +9375 + gSsWhMch +:: +SsWhMch + +CadSg + cڡ& +comt + ) : +SgMchBa +( "starts with", comparator ) {} + +9377 +bo + + gSsWhMch +:: +mch + +d +:: +rg + cڡ& +sour + ) const { + +9378  +tsWh + +m_comt +. +adjuSg + +sour + ), m_comt. +m_r + ); + +9381 + gEndsWhMch +:: +EndsWhMch + +CadSg + cڡ& +comt + ) : +SgMchBa +( "ends with", comparator ) {} + +9383 +bo + + gEndsWhMch +:: +mch + +d +:: +rg + cڡ& +sour + ) const { + +9384  +dsWh + +m_comt +. +adjuSg + +sour + ), m_comt. +m_r + ); + +9389 + gStdSg +:: +EqusMch + +Equs + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + ) { + +9390  +StdSg +:: +EqusMch +StdSg:: +CadSg + +r +, +Ssivy +) ); + +9392 + gStdSg +:: +CڏsMch + +Cڏs + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + ) { + +9393  +StdSg +:: +CڏsMch +StdSg:: +CadSg + +r +, +Ssivy +) ); + +9395 + gStdSg +:: +EndsWhMch + +EndsWh + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + ) { + +9396  +StdSg +:: +EndsWhMch +StdSg:: +CadSg + +r +, +Ssivy +) ); + +9398 + gStdSg +:: +SsWhMch + +SsWh + +d +:: +rg + cڡ& +r +, +CaSsive +:: +Choi + +Ssivy + ) { + +9399  +StdSg +:: +SsWhMch +StdSg:: +CadSg + +r +, +Ssivy +) ); + +9405  + #TWOBLUECUBES_CATCH_REPORTER_MULTI_HPP_INCLUDED + + + ) + +9407 +mea + + gCch + { + +9409 +ass + + gMuɝR܋rs + : +public + +ShedIm +< +ISmgR܋r +> { + +9410  +d +:: + tve +< + tP +< + tISmgR܋r +> > + tR܋rs +; + +9411 +R܋rs + + gm_p܋rs +; + +9413 + gpublic +: + +9414  +add + +P +< +ISmgR܋r +> cڡ& +p܋r + ) { + +9415 +m_p܋rs +. +push_back + +p܋r + ); + +9418 + gpublic +: + +9420 +vtu + +R܋rPns + +gPns +(cڡ +CATCH_OVERRIDE + { + +9421  +m_p܋rs +[0]-> +gPns +(); + +9424 +vtu +  +noMchgTeCas + +d +:: +rg + cڡ& +ec + ) +CATCH_OVERRIDE + { + +9425  +R܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9426 + g + ! +End +; + +9427 ++ + g + ) + +9428 (* + g +)-> +noMchgTeCas + +ec + ); + +9431 +vtu +  +RunSg + +TeRunInfo + cڡ& +RunInfo + ) + gCATCH_OVERRIDE + { + +9432  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9433 + g + ! +End +; + +9434 ++ + g + ) + +9435 (* + g +)-> +RunSg + +RunInfo + ); + +9438 +vtu +  +GroupSg + +GroupInfo + cڡ& +groupInfo + ) + gCATCH_OVERRIDE + { + +9439  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9440 + g + ! +End +; + +9441 ++ + g + ) + +9442 (* + g +)-> +GroupSg + +groupInfo + ); + +9445 +vtu +  +CaSg + +TeCaInfo + cڡ& +Info + ) + gCATCH_OVERRIDE + { + +9446  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9447 + g + ! +End +; + +9448 ++ + g + ) + +9449 (* + g +)-> +CaSg + +Info + ); + +9452 +vtu +  +iSg + +SeiInfo + cڡ& +iInfo + ) + gCATCH_OVERRIDE + { + +9453  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9454 + g + ! +End +; + +9455 ++ + g + ) + +9456 (* + g +)-> +iSg + +iInfo + ); + +9459 +vtu +  +asiSg + +AsiInfo + cڡ& +asiInfo + ) + gCATCH_OVERRIDE + { + +9460  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9461 + g + ! +End +; + +9462 ++ + g + ) + +9463 (* + g +)-> +asiSg + +asiInfo + ); + +9467 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +asiSts + ) + gCATCH_OVERRIDE + { + +9468 +bo + + grBufr + = +l +; + +9469  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9470 + g + ! +End +; + +9471 ++ + g + ) + +9472 + grBufr + |(* + +)-> +asiEnded + +asiSts + ); + +9473  + grBufr +; + +9476 +vtu +  +iEnded + +SeiSts + cڡ& +iSts + ) + gCATCH_OVERRIDE + { + +9477  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9478 + g + ! +End +; + +9479 ++ + g + ) + +9480 (* + g +)-> +iEnded + +iSts + ); + +9483 +vtu +  +CaEnded + +TeCaSts + cڡ& +CaSts + ) + gCATCH_OVERRIDE + { + +9484  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9485 + g + ! +End +; + +9486 ++ + g + ) + +9487 (* + g +)-> +CaEnded + +CaSts + ); + +9490 +vtu +  +GroupEnded + +TeGroupSts + cڡ& +GroupSts + ) + gCATCH_OVERRIDE + { + +9491  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9492 + g + ! +End +; + +9493 ++ + g + ) + +9494 (* + g +)-> +GroupEnded + +GroupSts + ); + +9497 +vtu +  +RunEnded + +TeRunSts + cڡ& +RunSts + ) + gCATCH_OVERRIDE + { + +9498  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9499 + g + ! +End +; + +9500 ++ + g + ) + +9501 (* + g +)-> +RunEnded + +RunSts + ); + +9504 +vtu +  +skTe + +TeCaInfo + cڡ& +Info + ) + gCATCH_OVERRIDE + { + +9505  + gR܋rs +:: +cڡ_ + + + = +m_p܋rs +. +beg +(), + gEnd + = m_p܋rs. +d +(); + +9506 + g + ! +End +; + +9507 ++ + g + ) + +9508 (* + g +)-> +skTe + +Info + ); + +9511 +vtu + +MuɝR܋rs +* +yAsMui +( + gCATCH_OVERRIDE + { + +9512  + gthis +; + +9517 + gP +< + gISmgR܋r +> +addR܋r + +P +< +ISmgR܋r +> cڡ& +exigR܋r +, P cڡ& +addiڮR܋r + ) { + +9518 + gP +< + gISmgR܋r +> + gsuɚgR܋r +; + +9520 if + gexigR܋r + ) { + +9521 +MuɝR܋rs +* + gmui + = +exigR܋r +-> +yAsMui +(); + +9522 if! + gmui + ) { + +9523 + gmui + = +w + +MuɝR܋rs +; + +9524 + gsuɚgR܋r + = +P +< +ISmgR܋r +> +mui + ); + +9525 if + gexigR܋r + ) + +9526 + gmui +-> +add + +exigR܋r + ); + +9529 + gsuɚgR܋r + = +exigR܋r +; + +9530 + gmui +-> +add + +addiڮR܋r + ); + +9533 + gsuɚgR܋r + = +addiڮR܋r +; + +9535  + gsuɚgR܋r +; + +9541  + #TWOBLUECUBES_CATCH_REPORTER_XML_HPP_INCLUDED + + + ) + +9544  + #TWOBLUECUBES_CATCH_REPORTER_BASES_HPP_INCLUDED + + + ) + +9546  + ~ + +9547  + ~ + +9548  + ~ + +9549  + ~ + +9551 +mea + + gCch + { + +9553 + gmea + { + +9556 + gd +:: +rg + +gFmdDuti + +duti + ) { + +9561 cڡ +size_t + +maxDoubSize + = +DBL_MAX_10_EXP + + 1 + 1 + 3 + 1; + +9562  + gbufr +[ +maxDoubSize +]; + +9565 +EnoGud + + ggud +; + +9566 #ifde +_MSC_VER + + +9567 +rtf_s +( +bufr +, "%.3f", +duti +); + +9569 +rtf +( +bufr +, "%.3f", +duti +); + +9571  + gd +:: +rg +( +bufr +); + +9575  + gSmgR܋rBa + : +ShedIm +< +ISmgR܋r +> { + +9577 +SmgR܋rBa + +R܋rCfig + cڡ& +_cfig + ) + +9578 : +m_cfig + +_cfig +. +fuCfig +() ), + +9579 +am + +_cfig +.stream() ) + +9581 + gm_p܋rPfs +. + gshouldRedeStdOut + = +l +; + +9584 +vtu + +R܋rPns + +gPns +(cڡ + gCATCH_OVERRIDE + { + +9585  + gm_p܋rPfs +; + +9588 + gvtu + ~ +SmgR܋rBa +( + gCATCH_OVERRIDE +; + +9590 +vtu +  +noMchgTeCas + +d +:: +rg + cڡ& ) +CATCH_OVERRIDE + {} + +9592 +vtu +  +RunSg + +TeRunInfo + cڡ& +_RunInfo + ) +CATCH_OVERRIDE + { + +9593 +cutTeRunInfo + = +_RunInfo +; + +9595 +vtu +  +GroupSg + +GroupInfo + cڡ& +_groupInfo + ) + gCATCH_OVERRIDE + { + +9596 + gcutGroupInfo + = +_groupInfo +; + +9599 +vtu +  +CaSg + +TeCaInfo + cڡ& +_Info + ) + gCATCH_OVERRIDE + { + +9600 + gcutTeCaInfo + = +_Info +; + +9602 +vtu +  +iSg + +SeiInfo + cڡ& +_iInfo + ) + gCATCH_OVERRIDE + { + +9603 + gm_iSck +. +push_back + +_iInfo + ); + +9606 +vtu +  +iEnded + +SeiSts + cڡ& ) + gCATCH_OVERRIDE + { + +9607 + gm_iSck +. +p_back +(); + +9609 +vtu +  +CaEnded + +TeCaSts + cڡ& ) + gCATCH_OVERRIDE + { + +9610 + gcutTeCaInfo +. +t +(); + +9612 +vtu +  +GroupEnded + +TeGroupSts + cڡ& ) + gCATCH_OVERRIDE + { + +9613 + gcutGroupInfo +. +t +(); + +9615 +vtu +  +RunEnded + +TeRunSts + cڡ& ) + gCATCH_OVERRIDE + { + +9616 + gcutTeCaInfo +. +t +(); + +9617 + gcutGroupInfo +. +t +(); + +9618 + gcutTeRunInfo +. +t +(); + +9621 +vtu +  +skTe + +TeCaInfo + cڡ& ) + gCATCH_OVERRIDE + { + +9626 + gP +< +ICfig + cڡ> + gm_cfig +; + +9627 + gd +:: +oam +& +am +; + +9629 + gLazySt +< + gTeRunInfo +> + gcutTeRunInfo +; + +9630 + gLazySt +< + gGroupInfo +> + gcutGroupInfo +; + +9631 + gLazySt +< + gTeCaInfo +> + gcutTeCaInfo +; + +9633 + gd +:: +ve +< +SeiInfo +> +m_iSck +; + +9634 +R܋rPns + + gm_p܋rPfs +; + +9637  + gCumutiveR܋rBa + : +ShedIm +< +ISmgR܋r +> { + +9638 +me +< +tyme + +T +,ym + gChdNodeT +> + +9639  + gNode + : +ShedIm +<> { + +9640 +exic + +Node + +T + cڡ& +_vue + ) : +vue +( _value ) {} + +9641 +vtu + ~ +Node +() {} + +9643  +d +:: + tve +< + tP +< + tChdNodeT +> > + tChdNodes +; + +9644 +T + + gvue +; + +9645 +ChdNodes + + gchdn +; + +9647  + gSeiNode + : +ShedIm +<> { + +9648 +exic + +SeiNode + +SeiSts + cڡ& +_s + ) : +s +( _stats ) {} + +9649 +vtu + ~ +SeiNode +(); + +9651 +bo + + gݔ + = +SeiNode + cڡ& +h + ) const { + +9652  +s +. +iInfo +. +leInfo + = +h +.stats.sectionInfo.lineInfo; + +9654 +bo + + gݔ + = +P +< +SeiNode +> cڡ& +h + ) const { + +9655  +ݔ +==* +h + ); + +9658 +SeiSts + + gs +; + +9659  + gd +:: + tve +< + tP +< + tSeiNode +> > + tChdSeis +; + +9660  + gd +:: + tve +< + tAsiSts +> + tAsis +; + +9661 +ChdSeis + + gchdSeis +; + +9662 +Asis + + gasis +; + +9663 + gd +:: +rg + +dOut +; + +9664 + gd +:: +rg + +dE +; + +9667  + sBySeiInfo + { + +9668 +BySeiInfo + +SeiInfo + cڡ& +h + ) : +m_h +( other ) {} + +9669 +BySeiInfo +BySeiInfcڡ& +h + ) : +m_h +( other.m_other ) {} + +9670 +bo + +ݔ +( +P +< +SeiNode +> cڡ& +node + ) const { + +9671  (( +node +-> +s +. +iInfo +. +me + = +m_h +.name) && + +9672 ( +node +-> +s +. +iInfo +. +leInfo + = +m_h +.lineInfo)); + +9674 + give +: + +9675  +ݔ += +BySeiInfo + const& ); + +9676 +SeiInfo + cڡ& + gm_h +; + +9679  + gNode +< + tTeCaSts +, + tSeiNode +> + tTeCaNode +; + +9680  + gNode +< + tTeGroupSts +, + tTeCaNode +> + tTeGroupNode +; + +9681  + gNode +< + tTeRunSts +, + tTeGroupNode +> + tTeRunNode +; + +9683 +CumutiveR܋rBa + +R܋rCfig + cڡ& +_cfig + ) + +9684 : +m_cfig + +_cfig +. +fuCfig +() ), + +9685 +am + +_cfig +.stream() ) + +9687 + gm_p܋rPfs +. + gshouldRedeStdOut + = +l +; + +9689 ~ +CumutiveR܋rBa +(); + +9691 +vtu + +R܋rPns + +gPns +(cڡ + gCATCH_OVERRIDE + { + +9692  + gm_p܋rPfs +; + +9695 +vtu +  +RunSg + +TeRunInfo + cڡ& ) + gCATCH_OVERRIDE + {} + +9696 +vtu +  +GroupSg + +GroupInfo + cڡ& ) + gCATCH_OVERRIDE + {} + +9698 +vtu +  +CaSg + +TeCaInfo + cڡ& ) + gCATCH_OVERRIDE + {} + +9700 +vtu +  +iSg + +SeiInfo + cڡ& +iInfo + ) + gCATCH_OVERRIDE + { + +9701 +SeiSts + +comeSts + +iInfo +, +Cous +(), 0, +l + ); + +9702 + gP +< + gSeiNode +> + gnode +; + +9703 if + gm_iSck +. +emy +() ) { + +9704 if! + gm_roSei + ) + +9705 + gm_roSei + = +w + +SeiNode + +comeSts + ); + +9706 + gnode + = +m_roSei +; + +9709 + gSeiNode +& + gNode + = * +m_iSck +. +back +(); + +9710 + gSeiNode +:: +ChdSeis +:: +cڡ_ + + + = + +9711 +d +:: +fd_if + +Node +. +chdSeis +. +beg +(), + +9712 +Node +. +chdSeis +. +d +(), + +9713 +BySeiInfo + +iInfo + ) ); + +9714 if + g + = +Node +. +chdSeis +. +d +() ) { + +9715 +node + = +w + +SeiNode + +comeSts + ); + +9716 + gNode +. + gchdSeis +. +push_back + +node + ); + +9719 + gnode + = * + +; + +9721 + gm_iSck +. +push_back + +node + ); + +9722 + gm_dSei + = +node +; + +9725 +vtu +  +asiSg + +AsiInfo + cڡ& ) + gCATCH_OVERRIDE + {} + +9727 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +asiSts + ) + gCATCH_OVERRIDE + { + +9728 +as +! +m_iSck +. +emy +() ); + +9729 + gSeiNode +& + giNode + = * +m_iSck +. +back +(); + +9730 + giNode +. + gasis +. +push_back + +asiSts + ); + +9736 +eExndedExessi + +iNode +. +asis +. +back +(). +asiResu + ); + +9737  + gue +; + +9739 +vtu +  +iEnded + +SeiSts + cڡ& +iSts + ) + gCATCH_OVERRIDE + { + +9740 +as +! +m_iSck +. +emy +() ); + +9741 + gSeiNode +& + gnode + = * +m_iSck +. +back +(); + +9742 + gnode +. + gs + = +iSts +; + +9743 + gm_iSck +. +p_back +(); + +9745 +vtu +  +CaEnded + +TeCaSts + cڡ& +CaSts + ) + gCATCH_OVERRIDE + { + +9746 + gP +< + gTeCaNode +> + gnode + = +w + +TeCaNode + +CaSts + ); + +9747 +as + +m_iSck +. +size +() == 0 ); + +9748 + gnode +-> + gchdn +. +push_back + +m_roSei + ); + +9749 + gm_Cas +. +push_back + +node + ); + +9750 + gm_roSei +. +t +(); + +9752 +as + +m_dSei + ); + +9753 + gm_dSei +-> + gdOut + = +CaSts +. +dOut +; + +9754 + gm_dSei +-> + gdE + = +CaSts +. +dE +; + +9756 +vtu +  +GroupEnded + +TeGroupSts + cڡ& +GroupSts + ) + gCATCH_OVERRIDE + { + +9757 + gP +< + gTeGroupNode +> + gnode + = +w + +TeGroupNode + +GroupSts + ); + +9758 + gnode +-> + gchdn +. +sw + +m_Cas + ); + +9759 + gm_Groups +. +push_back + +node + ); + +9761 +vtu +  +RunEnded + +TeRunSts + cڡ& +RunSts + ) + gCATCH_OVERRIDE + { + +9762 + gP +< + gTeRunNode +> + gnode + = +w + +TeRunNode + +RunSts + ); + +9763 + gnode +-> + gchdn +. +sw + +m_Groups + ); + +9764 + gm_Runs +. +push_back + +node + ); + +9765 +RunEndedCumutive +(); + +9767 +vtu +  +RunEndedCumutive +() = 0; + +9769 +vtu +  +skTe + +TeCaInfo + cڡ& ) + gCATCH_OVERRIDE + {} + +9771 +vtu +  +eExndedExessi + +AsiResu +& +su + ) const { + +9772 if + gsu +. +isOk +() ) + +9773 + gsu +. +disrdDecompodExessi +(); + +9775 + gsu +. +exndDecompodExessi +(); + +9778 + gP +< +ICfig + cڡ> + gm_cfig +; + +9779 + gd +:: +oam +& +am +; + +9780 + gd +:: +ve +< +AsiSts +> +m_asis +; + +9781 + gd +:: +ve +< +d +::ve< +P +< +SeiNode +> > > +m_is +; + +9782 + gd +:: +ve +< +P +< +TeCaNode +> > +m_Cas +; + +9783 + gd +:: +ve +< +P +< +TeGroupNode +> > +m_Groups +; + +9785 + gd +:: +ve +< +P +< +TeRunNode +> > +m_Runs +; + +9787 + gP +< + gSeiNode +> + gm_roSei +; + +9788 + gP +< + gSeiNode +> + gm_dSei +; + +9789 + gd +:: +ve +< +P +< +SeiNode +> > +m_iSck +; + +9790 +R܋rPns + + gm_p܋rPfs +; + +9794 + gme +< + gC +> + +9795 cڡ* +gLeOfChs +() { + +9796  + gle +[ +CATCH_CONFIG_CONSOLE_WIDTH +] = {0}; + +9797 if!* + gle + ) { + +9798 + gd +:: +memt + +le +, +C +, +CATCH_CONFIG_CONSOLE_WIDTH +-1 ); + +9799 + gle +[ +CATCH_CONFIG_CONSOLE_WIDTH +-1] = 0; + +9801  + gle +; + +9804  + gTeEvtLiBa + : +SmgR܋rBa + { + +9805 +TeEvtLiBa + +R܋rCfig + cڡ& +_cfig + ) + +9806 : +SmgR܋rBa + +_cfig + ) + +9809 +vtu +  +asiSg + +AsiInfo + cڡ& ) +CATCH_OVERRIDE + {} + +9810 +vtu + +bo + +asiEnded + +AsiSts + cڡ& ) +CATCH_OVERRIDE + { + +9811  +l +; + +9818  + #TWOBLUECUBES_CATCH_REPORTER_REGISTRARS_HPP_INCLUDED + + + ) + +9820 +mea + + gCch + { + +9822 + gme +< +tyme + + gT +> + +9823 as + cLegacyR܋rRegir + { + +9825 as + cR܋rFay + : +public + +IR܋rFay + { + +9826 +vtu + +ISmgR܋r +* + + +R܋rCfig + cڡ& +cfig + ) const { + +9827  +w + +LegacyR܋rAdr +w +T + +cfig + ) ); + +9830 +vtu + + gd +:: +rg + +gDesti +() const { + +9831  +T +:: +gDesti +(); + +9835 + gpublic +: + +9837 +LegacyR܋rRegir + +d +:: +rg + cڡ& +me + ) { + +9838 +gMubRegiryHub +(). +giR܋r + +me +, +w + +R܋rFay +() ); + +9842 + gme +< +tyme + + gT +> + +9843 as + cR܋rRegir + { + +9845 +ass + + gR܋rFay + : +public + +ShedIm +< +IR܋rFay +> { + +9858 +vtu + +ISmgR܋r +* + + +R܋rCfig + cڡ& +cfig + ) const { + +9859  +w + +T + +cfig + ); + +9862 +vtu + + gd +:: +rg + +gDesti +() const { + +9863  +T +:: +gDesti +(); + +9867 + gpublic +: + +9869 +R܋rRegir + +d +:: +rg + cڡ& +me + ) { + +9870 +gMubRegiryHub +(). +giR܋r + +me +, +w + +R܋rFay +() ); + +9874 + gme +< +tyme + + gT +> + +9875 as + cLiRegir + { + +9877 +ass + + gLiFay + : +public + +ShedIm +< +IR܋rFay +> { + +9879 +vtu + +ISmgR܋r +* + + +R܋rCfig + cڡ& +cfig + ) const { + +9880  +w + +T + +cfig + ); + +9882 +vtu + + gd +:: +rg + +gDesti +() const { + +9883  +d +:: +rg +(); + +9887 + gpublic +: + +9889 +LiRegir +() { + +9890 +gMubRegiryHub +(). +giLi + +w + +LiFay +() ); + +9895  + #INTERNAL_CATCH_REGISTER_LEGACY_REPORTER + +me +, +p܋rTy + ) \ + +9896 +mea +{ +Cch +:: +LegacyR܋rRegir +< +p܋rTy +> +tch__RegirF +## + `p܋rTy + +me + ); } + + ) + +9898  + #INTERNAL_CATCH_REGISTER_REPORTER + +me +, +p܋rTy + ) \ + +9899 +mea +{ +Cch +:: +R܋rRegir +< +p܋rTy +> +tch__RegirF +## + `p܋rTy + +me + ); } + + ) + +9902  + #INTERNAL_CATCH_REGISTER_LISTENER + +liTy + ) \ + +9903 +mea +{ +Cch +:: +LiRegir +< +liTy +> +tch__RegirF +##liTy; } + + ) + +9905  + #CATCH_REGISTER_LISTENER + +liTy + ) \ + +9906 +mea +{ +Cch +:: +LiRegir +< +liTy +> +tch__RegirF +##liTy; } + + ) + +9909  + #TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED + + + ) + +9911  + ~ + +9912  + ~ + +9913  + ~ + +9914  + ~ + +9916 +mea + + gCch + { + +9918 as + cXmlEncode + { + +9919 + gpublic +: + +9920 + eFWh + { +FTextNodes +, + gFAribus + }; + +9922 +XmlEncode + +d +:: +rg + cڡ& +r +, +FWh + +fWh + = +FTextNodes + ) + +9923 : +m_r + +r + ), + +9924 +m_fWh + +fWh + ) + +9927  +codeTo + +d +:: +oam +& +os + ) const { + +9932  +d +:: +size_t + +i + = 0; + gi + < + gm_r +. +size +(); ++ i ) { + +9933  + gc + = +m_r +[ +i +]; + +9934  + gc + ) { + +9935 '<': +os + << "<"; ; + +9936 '&': +os + << "&"; ; + +9940 if +i + > 2 && +m_r +[i-1] == ']' && m_str[i-2] == ']' ) + +9941 +os + << ">"; + +9943 + gos + << + gc +; + +9947 if +m_fWh + = +FAribus + ) + +9948 +os + << """; + +9950 + gos + << + gc +; + +9956 i +c + >= 0 && c < '\x09' ) || ( c > '\x0D' && c < '\x20') || c=='\x7F' ) { + +9958 +os + << "\\x" << +d +:: +u + << std:: +hex + << std:: +tfl +('0'<< std:: +tw +(2) + +9959 << +ic_ +<> +c + ); + +9962 + gos + << + gc +; + +9967 +nd + + gd +:: +oam +& +ݔ + << ( +d +::oam& +os +, +XmlEncode + cڡ& + gxmlEncode + ) { + +9968 + gxmlEncode +. +codeTo + +os + ); + +9969  + gos +; + +9972 + give +: + +9973 +d +:: +rg + +m_r +; + +9974 +FWh + + gm_fWh +; + +9977 as + cXmlWr + { + +9978 + gpublic +: + +9980 as + cScedEmt + { + +9981 +public +: + +9982 +ScedEmt + +XmlWr +* +wr + ) + +9983 : +m_wr + +wr + ) + +9986 +ScedEmt +ScedEmcڡ& +h + ) + +9987 : +m_wr + +h +.m_writer ){ + +9988 +h +. +m_wr + = +CATCH_NULL +; + +9991 ~ +ScedEmt +() { + +9992 if + gm_wr + ) + +9993 + gm_wr +-> +dEmt +(); + +9996 + gScedEmt +& +wreText + +d +:: +rg + cڡ& +xt +, +bo + +dt + = +ue + ) { + +9997 +m_wr +-> +wreText + +xt +, +dt + ); + +9998  * + gthis +; + +10001 + gme +< +tyme + + gT +> + +10002 + gScedEmt +& +wreAribu + +d +:: +rg + cڡ& +me +, +T + cڡ& +ibu + ) { + +10003 + gm_wr +-> +wreAribu + +me +, +ibu + ); + +10004  * + gthis +; + +10007 + give +: + +10008 +mub + +XmlWr +* +m_wr +; + +10011 +XmlWr +() + +10012 : +m_gIsOn + +l + ), + +10013 +m_edsNewle + +l + ), + +10014 +m_os + +Cch +:: +cout +() ) + +10016 +wreDei +(); + +10019 +XmlWr + +d +:: +oam +& +os + ) + +10020 : +m_gIsOn + +l + ), + +10021 +m_edsNewle + +l + ), + +10022 +m_os + +os + ) + +10024 +wreDei +(); + +10027 ~ +XmlWr +() { + +10028  ! + gm_gs +. +emy +() ) + +10029 +dEmt +(); + +10032 + gXmlWr +& +tEmt + +d +:: +rg + cڡ& +me + ) { + +10033 +suTagClod +(); + +10034 +wleIfNesry +(); + +10035 + gm_os + << + gm_dt + << '<' << + gme +; + +10036 + gm_gs +. +push_back + +me + ); + +10037 + gm_dt + += " "; + +10038 + gm_gIsOn + = +ue +; + +10039  * + gthis +; + +10042 +ScedEmt + +scedEmt + +d +:: +rg + cڡ& +me + ) { + +10043 +ScedEmt + +sced + +this + ); + +10044 +tEmt + +me + ); + +10045  + gsced +; + +10048 + gXmlWr +& +dEmt +() { + +10049 +wleIfNesry +(); + +10050 + gm_dt + = +m_dt +. +subr +0, m_dt. +size +()-2 ); + +10051 if + gm_gIsOn + ) { + +10052 + gm_os + << "/>"; + +10053 + gm_gIsOn + = +l +; + +10056 + gm_os + << + gm_dt + << ""; + +10058 + gm_os + << + gd +:: +dl +; + +10059 + gm_gs +. +p_back +(); + +10060  * + gthis +; + +10063 + gXmlWr +& +wreAribu + +d +:: +rg + cڡ& +me +, std::rg cڡ& +ibu + ) { + +10064 if! +me +. +emy +(&& ! +ibu +.empty() ) + +10065 +m_os + << ' ' << +me + << "=\"" << +XmlEncode + +ibu +, XmlEncode:: +FAribus + ) << '"'; + +10066  * + gthis +; + +10069 + gXmlWr +& +wreAribu + +d +:: +rg + cڡ& +me +, +bo + +ibu + ) { + +10070 + gm_os + << ' ' << + gme + << "=\"" << ( + gibu + ? "true" : "false" ) << '"'; + +10071  * + gthis +; + +10074 + gme +< +tyme + + gT +> + +10075 + gXmlWr +& +wreAribu + +d +:: +rg + cڡ& +me +, +T + cڡ& +ibu + ) { + +10076 + gd +:: +orgam + +oss +; + +10077 + goss + << + gibu +; + +10078  +wreAribu + +me +, +oss +. +r +() ); + +10081 + gXmlWr +& +wreText + +d +:: +rg + cڡ& +xt +, +bo + +dt + = +ue + ) { + +10082 if! +xt +. +emy +() ){ + +10083 +bo + +gWasOn + = +m_gIsOn +; + +10084 +suTagClod +(); + +10085 if + ggWasOn + && + gdt + ) + +10086 + gm_os + << + gm_dt +; + +10087 + gm_os + << +XmlEncode + +xt + ); + +10088 + gm_edsNewle + = +ue +; + +10090  * + gthis +; + +10093 + gXmlWr +& +wreCommt + +d +:: +rg + cڡ& +xt + ) { + +10094 +suTagClod +(); + +10095 + gm_os + << + gm_dt + << ""; + +10096 + gm_edsNewle + = +ue +; + +10097  * + gthis +; + +10100  +wreStyshtRef + +d +:: +rg + cڡ& +u + ) { + +10101 +m_os + << "\n"; + +10104 + gXmlWr +& +wreBnkLe +() { + +10105 +suTagClod +(); + +10106 + gm_os + << '\n'; + +10107  * + gthis +; + +10110  +suTagClod +() { + +10111 if + gm_gIsOn + ) { + +10112 + gm_os + << ">" << + gd +:: +dl +; + +10113 + gm_gIsOn + = +l +; + +10117 + give +: + +10118 +XmlWr +( XmlWriter const& ); + +10119  + gݔ += +XmlWr + const& ); + +10121  +wreDei +() { + +10122 + gm_os + << "\n"; + +10125  +wleIfNesry +() { + +10126 if + gm_edsNewle + ) { + +10127 + gm_os + << + gd +:: +dl +; + +10128 + gm_edsNewle + = +l +; + +10132 +bo + + gm_gIsOn +; + +10133 +bo + + gm_edsNewle +; + +10134 + gd +:: +ve +< +d +:: +rg +> +m_gs +; + +10135 + gd +:: +rg + +m_dt +; + +10136 + gd +:: +oam +& +m_os +; + +10141 +mea + + gCch + { + +10142 as + cXmlR܋r + : +public + +SmgR܋rBa + { + +10143 +public +: + +10144 +XmlR܋r + +R܋rCfig + cڡ& +_cfig + ) + +10145 : +SmgR܋rBa + +_cfig + ), + +10146 +m_xml +( +_cfig +. +am +()), + +10147 +m_iDth +( 0 ) + +10149 + gm_p܋rPfs +. + gshouldRedeStdOut + = +ue +; + +10152 + gvtu + ~ +XmlR܋r +( + gCATCH_OVERRIDE +; + +10154  + gd +:: +rg + +gDesti +() { + +10158 +vtu + + gd +:: +rg + +gStyshtRef +() const { + +10159  +d +:: +rg +(); + +10162  +wreSourInfo + +SourLeInfo + cڡ& +sourInfo + ) { + +10163 + gm_xml + + +10164 . +wreAribu +"fame", +sourInfo +. +fe + ) + +10165 . +wreAribu +"le", +sourInfo +. +le + ); + +10168 + gpublic +: + +10170 +vtu +  +noMchgTeCas + +d +:: +rg + cڡ& +s + ) +CATCH_OVERRIDE + { + +10171 +SmgR܋rBa +:: +noMchgTeCas + +s + ); + +10174 +vtu +  +RunSg + +TeRunInfo + cڡ& +Info + ) + gCATCH_OVERRIDE + { + +10175 + gSmgR܋rBa +:: +RunSg + +Info + ); + +10176 + gd +:: +rg + +yshtRef + = +gStyshtRef +(); + +10177 if! + gyshtRef +. +emy +() ) + +10178 + gm_xml +. +wreStyshtRef + +yshtRef + ); + +10179 + gm_xml +. +tEmt +( "Catch" ); + +10180 if! + gm_cfig +-> +me +(). +emy +() ) + +10181 + gm_xml +. +wreAribu +"me", +m_cfig +-> +me +() ); + +10184 +vtu +  +GroupSg + +GroupInfo + cڡ& +groupInfo + ) + gCATCH_OVERRIDE + { + +10185 + gSmgR܋rBa +:: +GroupSg + +groupInfo + ); + +10186 + gm_xml +. +tEmt +( "Group" ) + +10187 . +wreAribu +"me", +groupInfo +. +me + ); + +10190 +vtu +  +CaSg + +TeCaInfo + cڡ& +Info + ) + gCATCH_OVERRIDE + { + +10191 + gSmgR܋rBa +:: +CaSg +( +Info +); + +10192 + gm_xml +. +tEmt +( "TestCase" ) + +10193 . +wreAribu +"me", +im + +Info +. +me + ) ) + +10194 . +wreAribu +"desti", +Info +. +desti + ) + +10195 . +wreAribu +"gs", +Info +. +gsAsSg + ); + +10197 +wreSourInfo + +Info +. +leInfo + ); + +10199 i + gm_cfig +-> +showDutis +(= +ShowDutis +:: +Always + ) + +10200 +m_CaTim +. +t +(); + +10201 + gm_xml +. +suTagClod +(); + +10204 +vtu +  +iSg + +SeiInfo + cڡ& +iInfo + ) + gCATCH_OVERRIDE + { + +10205 + gSmgR܋rBa +:: +iSg + +iInfo + ); + +10206 if + gm_iDth +++ > 0 ) { + +10207 + gm_xml +. +tEmt +( "Section" ) + +10208 . +wreAribu +"me", +im + +iInfo +. +me + ) ) + +10209 . +wreAribu +"desti", +iInfo +. +desti + ); + +10210 +wreSourInfo + +iInfo +. +leInfo + ); + +10211 + gm_xml +. +suTagClod +(); + +10215 +vtu +  +asiSg + +AsiInfo + cڡ& ) + gCATCH_OVERRIDE + { } + +10217 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +asiSts + ) + gCATCH_OVERRIDE + { + +10219 +AsiResu + cڡ& + gsu + = +asiSts +. +asiResu +; + +10221 +bo + + gudeResus + = +m_cfig +-> +udeSucssfulResus +(|| ! +su +. +isOk +(); + +10223 if + gudeResus + ) { + +10225  + gd +:: +ve +< +MesgeInfo +>:: +cڡ_ + + + = +asiSts +. +foMesges +. +beg +(), + gEnd + =siSts.foMesges. +d +(); + +10226 + g + ! +End +; + +10227 ++ + g + ) { + +10228 if + g +-> + gty + = +ResuWas +:: +Info + ) { + +10229 +m_xml +. +scedEmt +( "Info" ) + +10230 . +wreText + + +-> +mesge + ); + +10231 } i + g +-> + gty + = +ResuWas +:: +Wng + ) { + +10232 +m_xml +. +scedEmt +( "Warning" ) + +10233 . +wreText + + +-> +mesge + ); + +10239 if! + gudeResus + && + gsu +. +gResuTy +(! +ResuWas +:: +Wng + ) + +10240  +ue +; + +10243 if + gsu +. +hasExessi +() ) { + +10244 + gm_xml +. +tEmt +( "Expression" ) + +10245 . +wreAribu +"sucss", +su +. +suceded +() ) + +10246 . +wreAribu +"ty", +su +. +gTeMaoName +() ); + +10248 +wreSourInfo + +su +. +gSourInfo +() ); + +10250 + gm_xml +. +scedEmt +( "Original" ) + +10251 . +wreText + +su +. +gExessi +() ); + +10252 + gm_xml +. +scedEmt +( "Expanded" ) + +10253 . +wreText + +su +. +gExndedExessi +() ); + +10257  + gsu +. +gResuTy +() ) { + +10258  + gResuWas +:: +ThwExi +: + +10259 +m_xml +. +tEmt +( "Exception" ); + +10260 +wreSourInfo + +su +. +gSourInfo +() ); + +10261 + gm_xml +. +wreText + +su +. +gMesge +() ); + +10262 + gm_xml +. +dEmt +(); + +10264  + gResuWas +:: +FECdi +: + +10265 +m_xml +. +tEmt +( "FatalErrorCondition" ); + +10266 +wreSourInfo + +su +. +gSourInfo +() ); + +10267 + gm_xml +. +wreText + +su +. +gMesge +() ); + +10268 + gm_xml +. +dEmt +(); + +10270  + gResuWas +:: +Info +: + +10271 +m_xml +. +scedEmt +( "Info" ) + +10272 . +wreText + +su +. +gMesge +() ); + +10274  + gResuWas +:: +Wng +: + +10277  + gResuWas +:: +ExicFau +: + +10278 +m_xml +. +tEmt +( "Failure" ); + +10279 +wreSourInfo + +su +. +gSourInfo +() ); + +10280 + gm_xml +. +wreText + +su +. +gMesge +() ); + +10281 + gm_xml +. +dEmt +(); + +10287 if + gsu +. +hasExessi +() ) + +10288 + gm_xml +. +dEmt +(); + +10290  + gue +; + +10293 +vtu +  +iEnded + +SeiSts + cڡ& +iSts + ) + gCATCH_OVERRIDE + { + +10294 + gSmgR܋rBa +:: +iEnded + +iSts + ); + +10295 if-- + gm_iDth + > 0 ) { + +10296 + gXmlWr +:: +ScedEmt + +e + = +m_xml +. +scedEmt +( "OverallResults" ); + +10297 + ge +. +wreAribu +"sucss", +iSts +. +asis +. +sd + ); + +10298 + ge +. +wreAribu +"us", +iSts +. +asis +. +ed + ); + +10299 + ge +. +wreAribu +"exedFaus", +iSts +. +asis +. +edButOk + ); + +10301 i + gm_cfig +-> +showDutis +(= +ShowDutis +:: +Always + ) + +10302 +e +. +wreAribu +"dutiInSecds", +iSts +. +dutiInSecds + ); + +10304 + gm_xml +. +dEmt +(); + +10308 +vtu +  +CaEnded + +TeCaSts + cڡ& +CaSts + ) + gCATCH_OVERRIDE + { + +10309 + gSmgR܋rBa +:: +CaEnded + +CaSts + ); + +10310 + gXmlWr +:: +ScedEmt + +e + = +m_xml +. +scedEmt +( "OverallResult" ); + +10311 + ge +. +wreAribu +"sucss", +CaSts +. +tٮs +. +asis +. +lOk +() ); + +10313 i + gm_cfig +-> +showDutis +(= +ShowDutis +:: +Always + ) + +10314 +e +. +wreAribu +"dutiInSecds", +m_CaTim +. +gEpdSecds +() ); + +10316 if! + gCaSts +. + gdOut +. +emy +() ) + +10317 + gm_xml +. +scedEmt +"StdOut" ). +wreText + +im + +CaSts +. +dOut + ), +l + ); + +10318 if! + gCaSts +. + gdE +. +emy +() ) + +10319 + gm_xml +. +scedEmt +"StdE" ). +wreText + +im + +CaSts +. +dE + ), +l + ); + +10321 + gm_xml +. +dEmt +(); + +10324 +vtu +  +GroupEnded + +TeGroupSts + cڡ& +GroupSts + ) + gCATCH_OVERRIDE + { + +10325 + gSmgR܋rBa +:: +GroupEnded + +GroupSts + ); + +10326 + gm_xml +. +scedEmt +( "OverallResults" ) + +10327 . +wreAribu +"sucss", +GroupSts +. +tٮs +. +asis +. +sd + ) + +10328 . +wreAribu +"us", +GroupSts +. +tٮs +. +asis +. +ed + ) + +10329 . +wreAribu +"exedFaus", +GroupSts +. +tٮs +. +asis +. +edButOk + ); + +10330 + gm_xml +. +dEmt +(); + +10333 +vtu +  +RunEnded + +TeRunSts + cڡ& +RunSts + ) + gCATCH_OVERRIDE + { + +10334 + gSmgR܋rBa +:: +RunEnded + +RunSts + ); + +10335 + gm_xml +. +scedEmt +( "OverallResults" ) + +10336 . +wreAribu +"sucss", +RunSts +. +tٮs +. +asis +. +sd + ) + +10337 . +wreAribu +"us", +RunSts +. +tٮs +. +asis +. +ed + ) + +10338 . +wreAribu +"exedFaus", +RunSts +. +tٮs +. +asis +. +edButOk + ); + +10339 + gm_xml +. +dEmt +(); + +10342 + give +: + +10343 +Tim + +m_CaTim +; + +10344 +XmlWr + + gm_xml +; + +10345  + gm_iDth +; + +10348 +INTERNAL_CATCH_REGISTER_REPORTER +"xml", +XmlR܋r + ) + +10353  + #TWOBLUECUBES_CATCH_REPORTER_JUNIT_HPP_INCLUDED + + + ) + +10355  + ~ + +10357 +mea + + gCch + { + +10359 + gmea + { + +10360 + gd +:: +rg + +gCutTimeamp +() { + +10363 +time_t + +wtime +; + +10364 + gd +:: +time +(& +wtime +); + +10365 cڡ +size_t + + gtimeSmpSize + = ("2017-01-16T17:06:45Z"); + +10367 #ifde +_MSC_VER + + +10368 + gd +:: +tm + +timeInfo + = {}; + +10369 +gmtime_s +(& +timeInfo +, & +wtime +); + +10371 + gd +:: +tm +* +timeInfo +; + +10372 + gtimeInfo + = +d +:: +gmtime +(& +wtime +); + +10375  + gtimeSmp +[ +timeSmpSize +]; + +10376 cڡ * cڡ + gfmt + = "%Y-%m-%dT%H:%M:%SZ"; + +10378 #ifde +_MSC_VER + + +10379 + gd +:: +rime +( +timeSmp +, +timeSmpSize +, +fmt +, & +timeInfo +); + +10381 + gd +:: +rime +( +timeSmp +, +timeSmpSize +, +fmt +, +timeInfo +); + +10383  + gd +:: +rg +( +timeSmp +); + +10388 as + cJunR܋r + : +public + +CumutiveR܋rBa + { + +10389 +public +: + +10390 +JunR܋r + +R܋rCfig + cڡ& +_cfig + ) + +10391 : +CumutiveR܋rBa + +_cfig + ), + +10392 +xml + +_cfig +. +am +() ), + +10393 +uxedExis +( 0 ), + +10394 +m_okToFa + +l + ) + +10396 + gm_p܋rPfs +. + gshouldRedeStdOut + = +ue +; + +10399 + gvtu + ~ +JunR܋r +( + gCATCH_OVERRIDE +; + +10401  + gd +:: +rg + +gDesti +() { + +10405 +vtu +  +noMchgTeCas + +d +:: +rg + cڡ& ) +CATCH_OVERRIDE + {} + +10407 +vtu +  +RunSg + +TeRunInfo + cڡ& +runInfo + ) +CATCH_OVERRIDE + { + +10408 +CumutiveR܋rBa +:: +RunSg + +runInfo + ); + +10409 + gxml +. +tEmt +( "testsuites" ); + +10412 +vtu +  +GroupSg + +GroupInfo + cڡ& +groupInfo + ) + gCATCH_OVERRIDE + { + +10413 + gsueTim +. +t +(); + +10414 + gdOutFSue +. +r +(""); + +10415 + gdEFSue +. +r +(""); + +10416 + guxedExis + = 0; + +10417 + gCumutiveR܋rBa +:: +GroupSg + +groupInfo + ); + +10420 +vtu +  +CaSg + +TeCaInfo + cڡ& +CaInfo + ) + gCATCH_OVERRIDE + { + +10421 + gm_okToFa + = +CaInfo +. +okToFa +(); + +10423 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +asiSts + ) + gCATCH_OVERRIDE + { + +10424 if + gasiSts +. + gasiResu +. +gResuTy +(= +ResuWas +:: +ThwExi + && ! +m_okToFa + ) + +10425 +uxedExis +++; + +10426  + gCumutiveR܋rBa +:: +asiEnded + +asiSts + ); + +10429 +vtu +  +CaEnded + +TeCaSts + cڡ& +CaSts + ) + gCATCH_OVERRIDE + { + +10430 + gdOutFSue + << + gCaSts +. + gdOut +; + +10431 + gdEFSue + << + gCaSts +. + gdE +; + +10432 + gCumutiveR܋rBa +:: +CaEnded + +CaSts + ); + +10435 +vtu +  +GroupEnded + +TeGroupSts + cڡ& +GroupSts + ) + gCATCH_OVERRIDE + { + +10436  + gsueTime + = +sueTim +. +gEpdSecds +(); + +10437 + gCumutiveR܋rBa +:: +GroupEnded + +GroupSts + ); + +10438 +wreGroup +* +m_Groups +. +back +(), +sueTime + ); + +10441 +vtu +  +RunEndedCumutive +( + gCATCH_OVERRIDE + { + +10442 + gxml +. +dEmt +(); + +10445  +wreGroup + +TeGroupNode + cڡ& +groupNode +,  +sueTime + ) { + +10446 + gXmlWr +:: +ScedEmt + +e + = +xml +. +scedEmt +( "testsuite" ); + +10447 +TeGroupSts + cڡ& + gs + = +groupNode +. +vue +; + +10448 + gxml +. +wreAribu +"me", +s +. +groupInfo +. +me + ); + +10449 + gxml +. +wreAribu +"rs", +uxedExis + ); + +10450 + gxml +. +wreAribu +"us", +s +. +tٮs +. +asis +. +ed +- +uxedExis + ); + +10451 + gxml +. +wreAribu +"s", +s +. +tٮs +. +asis +. +tٮ +() ); + +10452 + gxml +. +wreAribu +( "hostname", "tbd" ); + +10453 if + gm_cfig +-> +showDutis +(= +ShowDutis +:: +Nev + ) + +10454 +xml +. +wreAribu +( "time", "" ); + +10456 + gxml +. +wreAribu +"time", +sueTime + ); + +10457 + gxml +. +wreAribu +"timeamp", +gCutTimeamp +() ); + +10460  + gTeGroupNode +:: +ChdNodes +:: +cڡ_ + + +10461 + + = +groupNode +. +chdn +. +beg +(), + gEnd + = groupNode.chdn. +d +(); + +10462 + g + ! +End +; + +10463 ++ + g + ) + +10464 +wreTeCa +** + + ); + +10466 + gxml +. +scedEmt +"syem-out" ). +wreText + +im + +dOutFSue +. +r +(), +l + ); + +10467 + gxml +. +scedEmt +"syem-r" ). +wreText + +im + +dEFSue +. +r +(), +l + ); + +10470  +wreTeCa + +TeCaNode + cڡ& +CaNode + ) { + +10471 +TeCaSts + cڡ& + gs + = +CaNode +. +vue +; + +10475 +as + +CaNode +. +chdn +. +size +() == 1 ); + +10476 +SeiNode + cڡ& + groSei + = * +CaNode +. +chdn +. +t +(); + +10478 + gd +:: +rg + +assName + = +s +. +Info +.className; + +10480 if + gassName +. +emy +() ) { + +10481 if + groSei +. + gchdSeis +. +emy +() ) + +10482 + gassName + = "global"; + +10484 +wreSei + +assName +, "", +roSei + ); + +10487  +wreSei + +d +:: +rg + cڡ& +assName +, + +10488 +d +:: +rg + cڡ& +roName +, + +10489 +SeiNode + cڡ& +iNode + ) { + +10490 + gd +:: +rg + +me + = +im + +iNode +. +s +. +iInfo +.name ); + +10491 if! + groName +. +emy +() ) + +10492 + gme + = +roName + + '/' + +me +; + +10494 if! + giNode +. + gasis +. +emy +() || + +10495 ! + giNode +. + gdOut +. +emy +() || + +10496 ! + giNode +. + gdE +. +emy +() ) { + +10497 + gXmlWr +:: +ScedEmt + +e + = +xml +. +scedEmt +( "testcase" ); + +10498 if + gassName +. +emy +() ) { + +10499 + gxml +. +wreAribu +"asame", +me + ); + +10500 + gxml +. +wreAribu +( "name", "root" ); + +10503 + gxml +. +wreAribu +"asame", +assName + ); + +10504 + gxml +. +wreAribu +"me", +me + ); + +10506 + gxml +. +wreAribu +"time", +Cch +:: +toSg + +iNode +. +s +. +dutiInSecds + ) ); + +10508 +wreAsis + +iNode + ); + +10510 if! + giNode +. + gdOut +. +emy +() ) + +10511 + gxml +. +scedEmt +"syem-out" ). +wreText + +im + +iNode +. +dOut + ), +l + ); + +10512 if! + giNode +. + gdE +. +emy +() ) + +10513 + gxml +. +scedEmt +"syem-r" ). +wreText + +im + +iNode +. +dE + ), +l + ); + +10515  + gSeiNode +:: +ChdSeis +:: +cڡ_ + + +10516 + + = +iNode +. +chdSeis +. +beg +(), + +10517 + gEnd + = +iNode +. +chdSeis +. +d +(); + +10518 + g + ! +End +; + +10519 ++ + g + ) + +10520 if + gassName +. +emy +() ) + +10521 +wreSei + +me +, "", ** + + ); + +10523 +wreSei + +assName +, +me +, ** + + ); + +10526  +wreAsis + +SeiNode + cڡ& +iNode + ) { + +10527  + gSeiNode +:: +Asis +:: +cڡ_ + + +10528 + + = +iNode +. +asis +. +beg +(), + gEnd + = seiNode.asis. +d +(); + +10529 + g + ! +End +; + +10530 ++ + g + ) + +10531 +wreAsi +* + + ); + +10533  +wreAsi + +AsiSts + cڡ& +s + ) { + +10534 +AsiResu + cڡ& + gsu + = +s +. +asiResu +; + +10535 if! + gsu +. +isOk +() ) { + +10536 + gd +:: +rg + +emtName +; + +10537  + gsu +. +gResuTy +() ) { + +10538  + gResuWas +:: +ThwExi +: + +10539  +ResuWas +:: +FECdi +: + +10540 +emtName + = "error"; + +10542  + gResuWas +:: +ExicFau +: + +10543 +emtName + = "failure"; + +10545  + gResuWas +:: +ExessiFaed +: + +10546 +emtName + = "failure"; + +10548  + gResuWas +:: +DidThrowExi +: + +10549 +emtName + = "failure"; + +10553  + gResuWas +:: +Info +: + +10554  +ResuWas +:: +Wng +: + +10555  +ResuWas +:: +Ok +: + +10556  +ResuWas +:: +Unknown +: + +10557  +ResuWas +:: +FauB +: + +10558  +ResuWas +:: +Exi +: + +10559 +emtName + = "internalError"; + +10563 + gXmlWr +:: +ScedEmt + +e + = +xml +. +scedEmt + +emtName + ); + +10565 + gxml +. +wreAribu +"mesge", +su +. +gExndedExessi +() ); + +10566 + gxml +. +wreAribu +"ty", +su +. +gTeMaoName +() ); + +10568 + gd +:: +orgam + +oss +; + +10569 if! + gsu +. +gMesge +(). +emy +() ) + +10570 + goss + << + gsu +. +gMesge +() << '\n'; + +10571  + gd +:: +ve +< +MesgeInfo +>:: +cڡ_ + + +10572 + + = +s +. +foMesges +. +beg +(), + +10573 + gEnd + = +s +. +foMesges +. +d +(); + +10574 + g + ! +End +; + +10575 ++ + g + ) + +10576 if + g +-> + gty + = +ResuWas +:: +Info + ) + +10577 +oss + << + +-> +mesge + << '\n'; + +10579 + goss + << " " << + gsu +. +gSourInfo +(); + +10580 + gxml +. +wreText + +oss +. +r +(), +l + ); + +10584 +XmlWr + + gxml +; + +10585 +Tim + + gsueTim +; + +10586 + gd +:: +orgam + +dOutFSue +; + +10587 + gd +:: +orgam + +dEFSue +; + +10588  + guxedExis +; + +10589 +bo + + gm_okToFa +; + +10592 +INTERNAL_CATCH_REGISTER_REPORTER +"jun", +JunR܋r + ) + +10597  + #TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED + + + ) + +10599  + ~ + +10600  + ~ + +10602 +mea + + gCch + { + +10604  + gCseR܋r + : +SmgR܋rBa + { + +10605 +CseR܋r + +R܋rCfig + cڡ& +_cfig + ) + +10606 : +SmgR܋rBa + +_cfig + ), + +10607 +m_hdPrd + +l + ) + +10610 + gvtu + ~ +CseR܋r +( + gCATCH_OVERRIDE +; + +10611  + gd +:: +rg + +gDesti +() { + +10615 +vtu +  +noMchgTeCas + +d +:: +rg + cڡ& +ec + ) +CATCH_OVERRIDE + { + +10616 +am + << "N؋ camched '" << +ec + << '\'' << +d +:: +dl +; + +10619 +vtu +  +asiSg + +AsiInfo + cڡ& ) + gCATCH_OVERRIDE + { + +10622 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +_asiSts + ) + gCATCH_OVERRIDE + { + +10623 +AsiResu + cڡ& + gsu + = +_asiSts +. +asiResu +; + +10625 +bo + + gudeResus + = +m_cfig +-> +udeSucssfulResus +(|| ! +su +. +isOk +(); + +10628 if! + gudeResus + && + gsu +. +gResuTy +(! +ResuWas +:: +Wng + ) + +10629  +l +; + +10631 +zyPrt +(); + +10633 +AsiPrr + +r + +am +, +_asiSts +, +udeResus + ); + +10634 + gr +. +t +(); + +10635 + gam + << + gd +:: +dl +; + +10636  + gue +; + +10639 +vtu +  +iSg + +SeiInfo + cڡ& +_iInfo + ) + gCATCH_OVERRIDE + { + +10640 + gm_hdPrd + = +l +; + +10641 + gSmgR܋rBa +:: +iSg + +_iInfo + ); + +10643 +vtu +  +iEnded + +SeiSts + cڡ& +_iSts + ) + gCATCH_OVERRIDE + { + +10644 if + g_iSts +. + gmissgAsis + ) { + +10645 +zyPrt +(); + +10646 +Cour + +cour +Cour:: +ResuE + ); + +10647 if + gm_iSck +. +size +() > 1 ) + +10648 + gam + << "\nNossertions in section"; + +10650 + gam + << "\nNossertions inest case"; + +10651 + gam + << " '" << + g_iSts +. + giInfo +. + gme + << "'\n" << + gd +:: +dl +; + +10653 if + gm_cfig +-> +showDutis +(= +ShowDutis +:: +Always + ) { + +10654 +am + << +gFmdDuti +( +_iSts +. +dutiInSecds +<< " s: " << _iSts. +iInfo +. +me + << +d +:: +dl +; + +10656 if + gm_hdPrd + ) { + +10657 + gm_hdPrd + = +l +; + +10659 + gSmgR܋rBa +:: +iEnded + +_iSts + ); + +10662 +vtu +  +CaEnded + +TeCaSts + cڡ& +_CaSts + ) + gCATCH_OVERRIDE + { + +10663 + gSmgR܋rBa +:: +CaEnded + +_CaSts + ); + +10664 + gm_hdPrd + = +l +; + +10666 +vtu +  +GroupEnded + +TeGroupSts + cڡ& +_GroupSts + ) + gCATCH_OVERRIDE + { + +10667 if + gcutGroupInfo +. + gud + ) { + +10668 +tSummyDivid +(); + +10669 + gam + << "Summy f grou'" << + g_GroupSts +. + ggroupInfo +. + gme + << "':\n"; + +10670 +tTٮs + +_GroupSts +. +tٮs + ); + +10671 + gam + << '\n' << + gd +:: +dl +; + +10673 + gSmgR܋rBa +:: +GroupEnded + +_GroupSts + ); + +10675 +vtu +  +RunEnded + +TeRunSts + cڡ& +_RunSts + ) + gCATCH_OVERRIDE + { + +10676 +tTٮsDivid + +_RunSts +. +tٮs + ); + +10677 +tTٮs + +_RunSts +. +tٮs + ); + +10678 + gam + << + gd +:: +dl +; + +10679 + gSmgR܋rBa +:: +RunEnded + +_RunSts + ); + +10682 + give +: + +10684 as + cAsiPrr + { + +10685  +ݔ + +AsiPrr + const& ); + +10686 + gpublic +: + +10687 +AsiPrr + +d +:: +oam +& +_am +, +AsiSts + cڡ& +_s +, +bo + +_tInfoMesges + ) + +10688 : +am + +_am + ), + +10689 +s + +_s + ), + +10690 +su + +_s +. +asiResu + ), + +10691 +cour + +Cour +:: +Ne + ), + +10692 +mesge + +su +. +gMesge +() ), + +10693 +mesges + +_s +. +foMesges + ), + +10694 +tInfoMesges + +_tInfoMesges + ) + +10696  + gsu +. +gResuTy +() ) { + +10697  + gResuWas +:: +Ok +: + +10698 +cour + = +Cour +:: +Sucss +; + +10699 + gssOrFa + = "PASSED"; + +10701 if + g_s +. + gfoMesges +. +size +() == 1 ) + +10702 +mesgeLab + = "with message"; + +10703 if + g_s +. + gfoMesges +. +size +() > 1 ) + +10704 + gmesgeLab + = "with messages"; + +10706  + gResuWas +:: +ExessiFaed +: + +10707 if +su +. +isOk +() ) { + +10708 +cour + = +Cour +:: +Sucss +; + +10709 + gssOrFa + = "FAILED - but was ok"; + +10712 + gcour + = +Cour +:: +E +; + +10713 + gssOrFa + = "FAILED"; + +10715 if + g_s +. + gfoMesges +. +size +() == 1 ) + +10716 +mesgeLab + = "with message"; + +10717 if + g_s +. + gfoMesges +. +size +() > 1 ) + +10718 + gmesgeLab + = "with messages"; + +10720  + gResuWas +:: +ThwExi +: + +10721 +cour + = +Cour +:: +E +; + +10722 + gssOrFa + = "FAILED"; + +10723 + gmesgeLab + = "dueo unexpectedxception with "; + +10724 i( + g_s +. + gfoMesges +. +size +() == 1) + +10725 +mesgeLab + += "message"; + +10726 i( + g_s +. + gfoMesges +. +size +() > 1) + +10727 + gmesgeLab + += "messages"; + +10729  + gResuWas +:: +FECdi +: + +10730 +cour + = +Cour +:: +E +; + +10731 + gssOrFa + = "FAILED"; + +10732 + gmesgeLab + = "dueo fatalrror condition"; + +10734  + gResuWas +:: +DidThrowExi +: + +10735 +cour + = +Cour +:: +E +; + +10736 + gssOrFa + = "FAILED"; + +10737 + gmesgeLab + = "becauseoxception washrown where one wasxpected"; + +10739  + gResuWas +:: +Info +: + +10740 +mesgeLab + = "info"; + +10742  + gResuWas +:: +Wng +: + +10743 +mesgeLab + = "warning"; + +10745  + gResuWas +:: +ExicFau +: + +10746 +ssOrFa + = "FAILED"; + +10747 + gcour + = +Cour +:: +E +; + +10748 if + g_s +. + gfoMesges +. +size +() == 1 ) + +10749 +mesgeLab + = "explicitly with message"; + +10750 if + g_s +. + gfoMesges +. +size +() > 1 ) + +10751 + gmesgeLab + = "explicitly with messages"; + +10754  + gResuWas +:: +Unknown +: + +10755  +ResuWas +:: +FauB +: + +10756  +ResuWas +:: +Exi +: + +10757 +ssOrFa + = "** internalrror **"; + +10758 + gcour + = +Cour +:: +E +; + +10763  +t +() const { + +10764 +tSourInfo +(); + +10765 if + gs +. + gtٮs +. + gasis +. +tٮ +() > 0 ) { + +10766 if + gsu +. +isOk +() ) + +10767 + gam + << '\n'; + +10768 +tResuTy +(); + +10769 +tOrigExessi +(); + +10770 +tRecڡruedExessi +(); + +10773 + gam + << '\n'; + +10775 +tMesge +(); + +10778 + give +: + +10779  +tResuTy +() const { + +10780 if! +ssOrFa +. +emy +() ) { + +10781 +Cour + +courGud + +cour + ); + +10782 + gam + << + gssOrFa + << ":\n"; + +10785  +tOrigExessi +() const { + +10786 if + gsu +. +hasExessi +() ) { + +10787 +Cour + +courGud +Cour:: +OrigExessi + ); + +10788 + gam + << " "; + +10789 + gam + << + gsu +. +gExessiInMao +(); + +10790 + gam + << '\n'; + +10793  +tRecڡruedExessi +() const { + +10794 if + gsu +. +hasExndedExessi +() ) { + +10795 + gam + << "withxpansion:\n"; + +10796 +Cour + +courGud +Cour:: +RecڡruedExessi + ); + +10797 + gam + << +Text + +su +. +gExndedExessi +(), +TextAribus +(). +tIndt +(2) ) << '\n'; + +10800  +tMesge +() const { + +10801 if! + gmesgeLab +. +emy +() ) + +10802 + gam + << + gmesgeLab + << ':' << '\n'; + +10803  + gd +:: +ve +< +MesgeInfo +>:: +cڡ_ + + + = +mesges +. +beg +(), + gEnd + = mesges. +d +(); + +10804 + g + ! +End +; + +10805 ++ + g + ) { + +10807 if + gtInfoMesges + || + g +-> + gty + ! +ResuWas +:: +Info + ) + +10808 +am + << +Text + + +-> +mesge +, +TextAribus +(). +tIndt +(2) ) << '\n'; + +10811  +tSourInfo +() const { + +10812 +Cour + +courGud +Cour:: +FeName + ); + +10813 + gam + << + gsu +. +gSourInfo +() << ": "; + +10816 + gd +:: +oam +& +am +; + +10817 +AsiSts + cڡ& + gs +; + +10818 +AsiResu + cڡ& + gsu +; + +10819 + gCour +:: +Code + +cour +; + +10820 + gd +:: +rg + +ssOrFa +; + +10821 + gd +:: +rg + +mesgeLab +; + +10822 + gd +:: +rg + +mesge +; + +10823 + gd +:: +ve +< +MesgeInfo +> +mesges +; + +10824 +bo + + gtInfoMesges +; + +10827  +zyPrt +() { + +10829 if! + gcutTeRunInfo +. + gud + ) + +10830 +zyPrtRunInfo +(); + +10831 if! + gcutGroupInfo +. + gud + ) + +10832 +zyPrtGroupInfo +(); + +10834 if! + gm_hdPrd + ) { + +10835 +tTeCaAndSeiHd +(); + +10836 + gm_hdPrd + = +ue +; + +10839  +zyPrtRunInfo +() { + +10840 + gam + << '\n' << + ggLeOfChs +<'~'>() << '\n'; + +10841 +Cour + +cour +Cour:: +SecdyText + ); + +10842 + gam + << + gcutTeRunInfo +-> + gme + + +10843 << " iCch v" << +libryVsi +() << " hostpplication.\n" + +10846 if + gm_cfig +-> +gSd +() != 0 ) + +10847 +am + << "Rdomsededo: " << +m_cfig +-> +gSd +() << "\n\n"; + +10849 + gcutTeRunInfo +. + gud + = +ue +; + +10851  +zyPrtGroupInfo +() { + +10852 if! + gcutGroupInfo +-> + gme +. +emy +(&& cutGroupInfo-> + ggroupsCous + > 1 ) { + +10853 +tClodHd +"Group: " + +cutGroupInfo +-> +me + ); + +10854 + gcutGroupInfo +. + gud + = +ue +; + +10857  +tTeCaAndSeiHd +() { + +10858 +as +! +m_iSck +. +emy +() ); + +10859 +tOnHd + +cutTeCaInfo +-> +me + ); + +10861 if + gm_iSck +. +size +() > 1 ) { + +10862 +Cour + +courGud +Cour:: +Hds + ); + +10864 + gd +:: +ve +< +SeiInfo +>:: +cڡ_ + + +10865 + + = +m_iSck +. +beg +()+1, + +10866 + gEnd + = +m_iSck +. +d +(); + +10867  ; + g + ! +End +; ++it ) + +10868 +tHdSg + + +-> +me +, 2 ); + +10871 +SourLeInfo + + gleInfo + = +m_iSck +. +back +(). +leInfo +; + +10873 if! + gleInfo +. +emy +() ){ + +10874 + gam + << + ggLeOfChs +<'-'>() << '\n'; + +10875 +Cour + +courGud +Cour:: +FeName + ); + +10876 + gam + << + gleInfo + << '\n'; + +10878 + gam + << + ggLeOfChs +<'.'>(<< '\n' << + gd +:: +dl +; + +10881  +tClodHd + +d +:: +rg + cڡ& +_me + ) { + +10882 +tOnHd + +_me + ); + +10883 + gam + << + ggLeOfChs +<'.'>() << '\n'; + +10885  +tOnHd + +d +:: +rg + cڡ& +_me + ) { + +10886 +am + << +gLeOfChs +<'-'>() << '\n'; + +10888 +Cour + +courGud +Cour:: +Hds + ); + +10889 +tHdSg + +_me + ); + +10895  +tHdSg + +d +:: +rg + cڡ& +_rg +, std:: +size_t + +dt + = 0 ) { + +10896 +d +:: +size_t + +i + = +_rg +. +fd +( ": " ); + +10897 if + gi + ! +d +:: +rg +:: +os + ) + +10898 +i ++=2; + +10900 + gi + = 0; + +10901 + gam + << +Text + +_rg +, +TextAribus +() + +10902 . +tIndt + +dt ++ +i +) + +10903 . +tInlIndt + +dt + ) ) << '\n'; + +10906  + sSummyCumn + { + +10908 +SummyCumn + +d +:: +rg + cڡ& +_b +, +Cour +:: +Code + +_cour + ) + +10909 : +b + +_b + ), + +10910 +cour + +_cour + ) + +10912 +SummyCumn + +addRow + +d +:: +size_t + +cou + ) { + +10913 +d +:: +orgam + +oss +; + +10914 + goss + << + gcou +; + +10915 + gd +:: +rg + +row + = +oss +. +r +(); + +10916  + gd +:: +ve +< +d +:: +rg +>:: + + + + = +rows +. +beg +(); + g + !rows. +d +(); ++it ) { + +10917  + g +-> +size +(< + grow +.size() ) + +10918 * + g + = ' ' + * + +; + +10919  + g +-> +size +(> + grow +.size() ) + +10920 + grow + = ' ' + +row +; + +10922 + grows +. +push_back + +row + ); + +10923  * + gthis +; + +10926 + gd +:: +rg + +b +; + +10927 + gCour +:: +Code + +cour +; + +10928 + gd +:: +ve +< +d +:: +rg +> +rows +; + +10932  +tTٮs + +Tٮs + cڡ& +tٮs + ) { + +10933 if + gtٮs +. + gCas +. +tٮ +() == 0 ) { + +10934 +am + << +Cour +Cour:: +Wng + ) << "Noestsan\n"; + +10936 if + gtٮs +. + gasis +. +tٮ +(> 0 &&ٮs. + gCas +. +lPasd +() ) { + +10937 + gam + << +Cour +Cour:: +ResuSucss + ) << "Allestsassed"; + +10938 + gam + << " (" + +10939 << +uli + +tٮs +. +asis +. +sd +, "assertion" ) << " in " + +10940 << +uli + +tٮs +. +Cas +. +sd +, "test case" ) << ')' + +10945 + gd +:: +ve +< +SummyCumn +> +cumns +; + +10946 + gcumns +. +push_back + +SummyCumn +"", +Cour +:: +Ne + ) + +10947 . +addRow + +tٮs +. +Cas +. +tٮ +() ) + +10948 . +addRow + +tٮs +. +asis +. +tٮ +() ) ); + +10949 + gcumns +. +push_back + +SummyCumn +"sd", +Cour +:: +Sucss + ) + +10950 . +addRow + +tٮs +. +Cas +. +sd + ) + +10951 . +addRow + +tٮs +. +asis +. +sd + ) ); + +10952 + gcumns +. +push_back + +SummyCumn +"ed", +Cour +:: +ResuE + ) + +10953 . +addRow + +tٮs +. +Cas +. +ed + ) + +10954 . +addRow + +tٮs +. +asis +. +ed + ) ); + +10955 + gcumns +. +push_back + +SummyCumn +"edexed", +Cour +:: +ResuExedFau + ) + +10956 . +addRow + +tٮs +. +Cas +. +edButOk + ) + +10957 . +addRow + +tٮs +. +asis +. +edButOk + ) ); + +10959 +tSummyRow +" cas", +cumns +, 0 ); + +10960 +tSummyRow +"asis", +cumns +, 1 ); + +10963  +tSummyRow + +d +:: +rg + cڡ& +b +, std:: +ve +< +SummyCumn +> cڡ& +cs +, std:: +size_t + +row + ) { + +10964  +d +:: +ve +< +SummyCumn +>:: +cڡ_ + + + = +cs +. +beg +(); + g + !cs. +d +(); ++it ) { + +10965 + gd +:: +rg + +vue + = + +-> +rows +[ +row +]; + +10966 if + g +-> + gb +. +emy +() ) { + +10967 + gam + << + gb + << ": "; + +10968 if + gvue + != "0" ) + +10969 +am + << +vue +; + +10971 + gam + << +Cour +Cour:: +Wng + ) << "-one -"; + +10973 if + gvue + != "0" ) { + +10974 +am + << +Cour +Cour:: +LightGy + ) << " | "; + +10975 + gam + << +Cour + + +-> +cour + ) + +10976 << + gvue + << ' ' << + g +-> + gb +; + +10979 + gam + << '\n'; + +10982  + gd +:: +size_t + +makeRio + +d +::size_ +numb +, std::size_ +tٮ + ) { + +10983 +d +:: +size_t + +tio + = +tٮ + > 0 ? +CATCH_CONFIG_CONSOLE_WIDTH + * +numb +/otal : 0; + +10984  ( + gtio + =0 && +numb + > 0 ) ? 1 : +tio +; + +10986  + gd +:: +size_t +& +fdMax + +d +::size_t& +i +, std::size_t& +j +, std::size_t& +k + ) { + +10987 if +i + > +j + && i > +k + ) + +10988  +i +; + +10989 if + gj + > + gk + ) + +10990  + gj +; + +10992  + gk +; + +10995  +tTٮsDivid + +Tٮs + cڡ& +tٮs + ) { + +10996 if + gtٮs +. + gCas +. +tٮ +() > 0 ) { + +10997 + gd +:: +size_t + +edRio + = +makeRio + +tٮs +. +Cas +. +ed +,ٮs.Cas. +tٮ +() ); + +10998 + gd +:: +size_t + +edButOkRio + = +makeRio + +tٮs +. +Cas +. +edButOk +,ٮs.Cas. +tٮ +() ); + +10999 + gd +:: +size_t + +sdRio + = +makeRio + +tٮs +. +Cas +. +sd +,ٮs.Cas. +tٮ +() ); + +11000  + gedRio + + + gedButOkRio + + + gsdRio + < + gCATCH_CONFIG_CONSOLE_WIDTH +-1 ) + +11001 +fdMax + +edRio +, +edButOkRio +, +sdRio + )++; + +11002  + gedRio + + + gedButOkRio + + + gsdRio + > + gCATCH_CONFIG_CONSOLE_WIDTH +-1 ) + +11003 +fdMax + +edRio +, +edButOkRio +, +sdRio + )--; + +11005 + gam + << +Cour +Cour:: +E + ) << +d +:: +rg + +edRio +, '=' ); + +11006 + gam + << +Cour +Cour:: +ResuExedFau + ) << +d +:: +rg + +edButOkRio +, '=' ); + +11007 if + gtٮs +. + gCas +. +lPasd +() ) + +11008 + gam + << +Cour +Cour:: +ResuSucss + ) << +d +:: +rg + +sdRio +, '=' ); + +11010 + gam + << +Cour +Cour:: +Sucss + ) << +d +:: +rg + +sdRio +, '=' ); + +11013 + gam + << +Cour +Cour:: +Wng + ) << +d +:: +rg + +CATCH_CONFIG_CONSOLE_WIDTH +-1, '=' ); + +11015 + gam + << '\n'; + +11017  +tSummyDivid +() { + +11018 + gam + << + ggLeOfChs +<'-'>() << '\n'; + +11021 + give +: + +11022 +bo + +m_hdPrd +; + +11025 +INTERNAL_CATCH_REGISTER_REPORTER +"cse", +CseR܋r + ) + +11030  + #TWOBLUECUBES_CATCH_REPORTER_COMPACT_HPP_INCLUDED + + + ) + +11032 +mea + + gCch + { + +11034  + gComR܋r + : +SmgR܋rBa + { + +11036 +ComR܋r + +R܋rCfig + cڡ& +_cfig + ) + +11037 : +SmgR܋rBa + +_cfig + ) + +11040 +vtu + ~ +ComR܋r +(); + +11042  + gd +:: +rg + +gDesti +() { + +11046 +vtu + +R܋rPns + +gPns +() const { + +11047 +R܋rPns + + gefs +; + +11048 + gefs +. + gshouldRedeStdOut + = +l +; + +11049  + gefs +; + +11052 +vtu +  +noMchgTeCas + +d +:: +rg + cڡ& +ec + ) { + +11053 +am + << "N؋ camched '" << +ec + << '\'' << +d +:: +dl +; + +11056 +vtu +  +asiSg + +AsiInfo + const& ) {} + +11058 +vtu + +bo + +asiEnded + +AsiSts + cڡ& +_asiSts + ) { + +11059 +AsiResu + cڡ& + gsu + = +_asiSts +. +asiResu +; + +11061 +bo + + gtInfoMesges + = +ue +; + +11064 if! + gm_cfig +-> +udeSucssfulResus +(&& + gsu +. +isOk +() ) { + +11065 if + gsu +. +gResuTy +(! +ResuWas +:: +Wng + ) + +11066  +l +; + +11067 + gtInfoMesges + = +l +; + +11070 +AsiPrr + +r + +am +, +_asiSts +, +tInfoMesges + ); + +11071 + gr +. +t +(); + +11073 + gam + << + gd +:: +dl +; + +11074  + gue +; + +11077 +vtu +  +iEnded +( +SeiSts + cڡ& +_iSts + + gCATCH_OVERRIDE + { + +11078 i( + gm_cfig +-> +showDutis +(= +ShowDutis +:: +Always +) { + +11079 +am + << +gFmdDuti +( +_iSts +. +dutiInSecds +<< " s: " << _iSts. +iInfo +. +me + << +d +:: +dl +; + +11083 +vtu +  +RunEnded + +TeRunSts + cڡ& +_RunSts + ) { + +11084 +tTٮs + +_RunSts +. +tٮs + ); + +11085 + gam + << '\n' << + gd +:: +dl +; + +11086 + gSmgR܋rBa +:: +RunEnded + +_RunSts + ); + +11089 + give +: + +11090 as + cAsiPrr + { + +11091  +ݔ + +AsiPrr + const& ); + +11092 + gpublic +: + +11093 +AsiPrr + +d +:: +oam +& +_am +, +AsiSts + cڡ& +_s +, +bo + +_tInfoMesges + ) + +11094 : +am + +_am + ) + +11095 , +s + +_s + ) + +11096 , +su + +_s +. +asiResu + ) + +11097 , +mesges + +_s +. +foMesges + ) + +11098 , +Mesge + +_s +. +foMesges +. +beg +() ) + +11099 , +tInfoMesges + +_tInfoMesges + ) + +11102  +t +() { + +11103 +tSourInfo +(); + +11105 + gMesge + = +mesges +. +beg +(); + +11107  + gsu +. +gResuTy +() ) { + +11108  + gResuWas +:: +Ok +: + +11109 +tResuTy + +Cour +:: +ResuSucss +, +sdSg +() ); + +11110 +tOrigExessi +(); + +11111 +tRecڡruedExessi +(); + +11112 i! + gsu +. +hasExessi +() ) + +11113 +tRemagMesges + +Cour +:: +Ne + ); + +11115 +tRemagMesges +(); + +11117  + gResuWas +:: +ExessiFaed +: + +11118 if +su +. +isOk +() ) + +11119 +tResuTy + +Cour +:: +ResuSucss +, +edSg +(+ +d +:: +rg +( " - but was ok" ) ); + +11121 +tResuTy + +Cour +:: +E +, +edSg +() ); + +11122 +tOrigExessi +(); + +11123 +tRecڡruedExessi +(); + +11124 +tRemagMesges +(); + +11126  + gResuWas +:: +ThwExi +: + +11127 +tResuTy + +Cour +:: +E +, +edSg +() ); + +11128 +tIssue +( "unexpectedxception with message:" ); + +11129 +tMesge +(); + +11130 +tExessiWas +(); + +11131 +tRemagMesges +(); + +11133  + gResuWas +:: +FECdi +: + +11134 +tResuTy + +Cour +:: +E +, +edSg +() ); + +11135 +tIssue +( "fatalrror condition with message:" ); + +11136 +tMesge +(); + +11137 +tExessiWas +(); + +11138 +tRemagMesges +(); + +11140  + gResuWas +:: +DidThrowExi +: + +11141 +tResuTy + +Cour +:: +E +, +edSg +() ); + +11142 +tIssue +( "expectedxception, gotone" ); + +11143 +tExessiWas +(); + +11144 +tRemagMesges +(); + +11146  + gResuWas +:: +Info +: + +11147 +tResuTy + +Cour +:: +Ne +, "info" ); + +11148 +tMesge +(); + +11149 +tRemagMesges +(); + +11151  + gResuWas +:: +Wng +: + +11152 +tResuTy + +Cour +:: +Ne +, "warning" ); + +11153 +tMesge +(); + +11154 +tRemagMesges +(); + +11156  + gResuWas +:: +ExicFau +: + +11157 +tResuTy + +Cour +:: +E +, +edSg +() ); + +11158 +tIssue +( "explicitly" ); + +11159 +tRemagMesges + +Cour +:: +Ne + ); + +11162  + gResuWas +:: +Unknown +: + +11163  +ResuWas +:: +FauB +: + +11164  +ResuWas +:: +Exi +: + +11165 +tResuTy + +Cour +:: +E +, "** internalrror **" ); + +11170 + give +: + +11173  +Cour +:: +Code + +dimCour +({  Cour:: +FeName +; } + +11175 #ifde +CATCH_PLATFORM_MAC + + +11176 cڡ * +edSg +() {  "FAILED"; } + +11177 cڡ * +sdSg +() {  "PASSED"; } + +11179 cڡ * +edSg +() {  "failed"; } + +11180 cڡ * +sdSg +() {  "passed"; } + +11183  +tSourInfo +() const { + +11184 +Cour + +courGud +Cour:: +FeName + ); + +11185 + gam + << + gsu +. +gSourInfo +() << ':'; + +11188  +tResuTy + +Cour +:: +Code + +cour +, +d +:: +rg + cڡ& +ssOrFa + ) const { + +11189 if! +ssOrFa +. +emy +() ) { + +11191 +Cour + +courGud + +cour + ); + +11192 + gam + << ' ' << + gssOrFa +; + +11194 + gam + << ':'; + +11198  +tIssue + +d +:: +rg + cڡ& +issue + ) const { + +11199 +am + << ' ' << +issue +; + +11202  +tExessiWas +() { + +11203 if + gsu +. +hasExessi +() ) { + +11204 + gam + << ';'; + +11206 +Cour + +cour + +dimCour +() ); + +11207 + gam + << "xpression was:"; + +11209 +tOrigExessi +(); + +11213  +tOrigExessi +() const { + +11214 if + gsu +. +hasExessi +() ) { + +11215 + gam + << ' ' << + gsu +. +gExessi +(); + +11219  +tRecڡruedExessi +() const { + +11220 if + gsu +. +hasExndedExessi +() ) { + +11222 +Cour + +cour + +dimCour +() ); + +11223 + gam + << " for: "; + +11225 + gam + << + gsu +. +gExndedExessi +(); + +11229  +tMesge +() { + +11230 i + gMesge + ! +mesges +. +d +() ) { + +11231 +am + << " '" << +Mesge +-> +mesge + << '\''; + +11232 ++ + gMesge +; + +11236  +tRemagMesges + +Cour +:: +Code + +cour + = +dimCour +() ) { + +11237 i +Mesge + = +mesges +. +d +() ) + +11241 + gd +:: +ve +< +MesgeInfo +>:: +cڡ_ + +End + = +mesges +. +d +(); + +11242 cڡ + gd +:: +size_t + +N + = +ic_ +< +d +::size_t>Сd:: +di + +Mesge +, +End + ) ); + +11245 +Cour + +courGud + +cour + ); + +11246 + gam + << " wh " << +uli + +N +, "message" ) << ':'; + +11249 ; + gMesge + ! +End +; ) { + +11251 if + gtInfoMesges + || + gMesge +-> + gty + ! +ResuWas +:: +Info + ) { + +11252 +am + << " '" << +Mesge +-> +mesge + << '\''; + +11253 i++ + gMesge + ! +End + ) { + +11254 +Cour + +courGud + +dimCour +() ); + +11255 + gam + << "nd"; + +11261 + give +: + +11262 +d +:: +oam +& +am +; + +11263 +AsiSts + cڡ& + gs +; + +11264 +AsiResu + cڡ& + gsu +; + +11265 + gd +:: +ve +< +MesgeInfo +> +mesges +; + +11266 + gd +:: +ve +< +MesgeInfo +>:: +cڡ_ + +Mesge +; + +11267 +bo + + gtInfoMesges +; + +11277 + gd +:: +rg + +bhOrA + +d +:: +size_t + +cou + ) const { + +11278  +cou + =1 ? +d +:: +rg +() : count == 2 ? "both " : "all " ; + +11281  +tTٮs +cڡ +Tٮs +& +tٮs + ) const { + +11282 if + gtٮs +. + gCas +. +tٮ +() == 0 ) { + +11283 +am + << "Noestsan."; + +11285 if + gtٮs +. + gCas +. + ged + = +tٮs +. +Cas +. +tٮ +() ) { + +11286 +Cour + +cour +Cour:: +ResuE + ); + +11287 cڡ + gd +:: +rg + +quify_asis_ed + = + +11288 +tٮs +. +asis +. +ed + =tٮs.asis. +tٮ +() ? + +11289 +bhOrA + +tٮs +. +asis +. +ed + ) : +d +:: +rg +(); + +11290 + gam + << + +11291 "Faed " << +bhOrA + +tٮs +. +Cas +. +ed + ) + +11292 << +uli + +tٮs +. +Cas +. +ed +, "test case" ) << ", " + +11293 "ed " << + gquify_asis_ed + << + +11294 +uli + +tٮs +. +asis +. +ed +, "assertion" ) << '.'; + +11296 if + gtٮs +. + gasis +. +tٮ +() == 0 ) { + +11297 +am + << + +11298 "Pasd " << +bhOrA + +tٮs +. +Cas +. +tٮ +() ) + +11299 << +uli + +tٮs +. +Cas +. +tٮ +(), "test case" ) + +11302 if + gtٮs +. + gasis +. + ged + ) { + +11303 +Cour + +cour +Cour:: +ResuE + ); + +11304 + gam + << + +11305 "Faed " << +uli + +tٮs +. +Cas +. +ed +, "test case" ) << ", " + +11306 "ed " << +uli + +tٮs +. +asis +. +ed +, "assertion" ) << '.'; + +11309 +Cour + +cour +Cour:: +ResuSucss + ); + +11310 + gam + << + +11311 "Pasd " << +bhOrA + +tٮs +. +Cas +. +sd + ) + +11312 << +uli + +tٮs +. +Cas +. +sd +, "test case" ) << + +11313 " wh " << +uli + +tٮs +. +asis +. +sd +, "assertion" ) << '.'; + +11318 +INTERNAL_CATCH_REGISTER_REPORTER +"com", +ComR܋r + ) + +11322 +mea + + gCch + { + +11325 + gNCyab +::~ +NCyab +() {} + +11326 +IShed +::~IShared() {} + +11327 +ISm +::~ISm( +CATCH_NOEXCEPT + {} + +11328 +FeSm +::~FeSm( +CATCH_NOEXCEPT + {} + +11329 +CoutSm +::~CoutSm( +CATCH_NOEXCEPT + {} + +11330 +DebugOutSm +::~DebugOutSm( +CATCH_NOEXCEPT + {} + +11331 +SmBufBa +::~SmBufBa( +CATCH_NOEXCEPT + {} + +11332 +ICڋxt +::~IContext() {} + +11333 +IResuCtu +::~IResultCapture() {} + +11334 +ITeCa +::~ITestCase() {} + +11335 +ITeCaRegiry +::~ITestCaseRegistry() {} + +11336 +IRegiryHub +::~IRegistryHub() {} + +11337 +IMubRegiryHub +::~IMutableRegistryHub() {} + +11338 +IExiTn +::~IExceptionTranslator() {} + +11339 +IExiTnRegiry +::~IExceptionTranslatorRegistry() {} + +11340 +IR܋r +::~IReporter() {} + +11341 +IR܋rFay +::~IReporterFactory() {} + +11342 +IR܋rRegiry +::~IReporterRegistry() {} + +11343 +ISmgR܋r +::~IStreamingReporter() {} + +11344 +AsiSts +::~AssertionStats() {} + +11345 +SeiSts +::~SectionStats() {} + +11346 +TeCaSts +::~TestCaseStats() {} + +11347 +TeGroupSts +::~TestGroupStats() {} + +11348 +TeRunSts +::~TestRunStats() {} + +11349 +CumutiveR܋rBa +:: +SeiNode +::~SectionNode() {} + +11350 +CumutiveR܋rBa +::~CumulativeReporterBase() {} + +11352 +SmgR܋rBa +::~StreamingReporterBase() {} + +11353 +CseR܋r +::~ConsoleReporter() {} + +11354 +ComR܋r +::~CompactReporter() {} + +11355 +IRu” +::~IRunner() {} + +11356 +IMubCڋxt +::~IMutableContext() {} + +11357 +ICfig +::~IConfig() {} + +11358 +XmlR܋r +::~XmlReporter() {} + +11359 +JunR܋r +::~JunitReporter() {} + +11360 +TeRegiry +::~TestRegistry() {} + +11361 +FeFuniTeCa +::~FreeFunctionTestCase() {} + +11362 +IGInfo +::~IGeneratorInfo() {} + +11363 +IGsFTe +::~IGeneratorsForTest() {} + +11364 +WdrdP +::~WildcardPattern() {} + +11365 +TeSc +:: +P +::~Pattern() {} + +11366 +TeSc +:: +NameP +::~NamePattern() {} + +11367 +TeSc +:: +TagP +::~TagPattern() {} + +11368 +TeSc +:: +ExudedP +::~ExcludedPattern() {} + +11369 +Mchs +:: +Im +:: +MchUydBa +::~MatcherUntypedBase() {} + +11371  +Cfig +:: +dummy +() {} + +11373 +mea + +TeCaTckg + { + +11374 +ITck +::~ITracker() {} + +11375 +TckBa +::~TrackerBase() {} + +11376 +SeiTck +::~SectionTracker() {} + +11377 +IndexTck +::~IndexTracker() {} + +11381 #ifde +__g__ + + +11382 #agm +g + +dgnoic + +p + + +11387 #ifde +CATCH_CONFIG_MAIN + + +11389  + #TWOBLUECUBES_CATCH_DEFAULT_MAIN_HPP_INCLUDED + + + ) + +11391 #ide +__OBJC__ + + +11393 #i +defed +( +WIN32 +&& defed( +_UNICODE +&& !defed( +DO_NOT_USE_WMAIN +) + +11395 "C"  + $wma + ( +gc +, +wch_t + * +gv +[], wchar_t * []) { + +11398  + $ma + ( +gc +, * +gv +[]) { + +11401  +su + = +Cch +:: + `Sessi +(). + `run + +gc +, +gv + ); + +11402  ( +su + < 0xff ?esult : 0xff ); + +11403 + } +} + +11408  + $ma + ( +gc +, * cڡ +gv +[]) { + +11409 #i! +CATCH_ARC_ENABLED + + +11410 +NSAutܖPo + * +po + = [[NSAutܖPo +loc +] + +]; + +11413 +Cch +:: + `giTeMhods +(); + +11414  +su + = +Cch +:: + `Sessi +(). + `run + +gc +, (* cڡ*) +gv + ); + +11416 #i! +CATCH_ARC_ENABLED + + +11417 [ +po + +d +]; + +11420  ( +su + < 0xff ?esult : 0xff ); + +11421 + } +} + +11427 #ifde +CLARA_CONFIG_MAIN_NOT_DEFINED + + +11428 #unde +CLARA_CONFIG_MAIN + + +11434 #ifde +CATCH_CONFIG_PREFIX_ALL + + +11436 #i +defed +( +CATCH_CONFIG_FAST_COMPILE +) + +11437  + #CATCH_REQUIRE + +ex + ) + `INTERNAL_CATCH_TEST_NO_TRY +"CATCH_REQUIRE", +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11438  + #CATCH_REQUIRE_FALSE + +ex + ) + `INTERNAL_CATCH_TEST_NO_TRY +"CATCH_REQUIRE_FALSE", +Cch +:: +ResuDiosi +:: +Nm + | Cch::ResuDiosi:: +FTe +,x ) + + ) + +11440  + #CATCH_REQUIRE + +ex + ) + `INTERNAL_CATCH_TEST +"CATCH_REQUIRE", +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11441  + #CATCH_REQUIRE_FALSE + +ex + ) + `INTERNAL_CATCH_TEST +"CATCH_REQUIRE_FALSE", +Cch +:: +ResuDiosi +:: +Nm + | Cch::ResuDiosi:: +FTe +,x ) + + ) + +11444  + #CATCH_REQUIRE_THROWS + +ex + ) + `INTERNAL_CATCH_THROWS +"CATCH_REQUIRE_THROWS", +Cch +:: +ResuDiosi +:: +Nm +, "",x ) + + ) + +11445  + #CATCH_REQUIRE_THROWS_AS + +ex +, +exiTy + ) + `INTERNAL_CATCH_THROWS_AS +"CATCH_REQUIRE_THROWS_AS",xiTy, +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11446  + #CATCH_REQUIRE_THROWS_WITH + +ex +, +mch + ) + `INTERNAL_CATCH_THROWS +"CATCH_REQUIRE_THROWS_WITH", +Cch +:: +ResuDiosi +:: +Nm +, mch,x ) + + ) + +11447  + #CATCH_REQUIRE_NOTHROW + +ex + ) + `INTERNAL_CATCH_NO_THROW +"CATCH_REQUIRE_NOTHROW", +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11449  + #CATCH_CHECK + +ex + ) + `INTERNAL_CATCH_TEST +"CATCH_CHECK", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11450  + #CATCH_CHECK_FALSE + +ex + ) + `INTERNAL_CATCH_TEST +"CATCH_CHECK_FALSE", +Cch +:: +ResuDiosi +:: +CtueOnFau + | Cch::ResuDiosi:: +FTe +,x ) + + ) + +11451  + #CATCH_CHECKED_IF + +ex + ) + `INTERNAL_CATCH_IF +"CATCH_CHECKED_IF", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11452  + #CATCH_CHECKED_ELSE + +ex + ) + `INTERNAL_CATCH_ELSE +"CATCH_CHECKED_ELSE", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11453  + #CATCH_CHECK_NOFAIL + +ex + ) + `INTERNAL_CATCH_TEST +"CATCH_CHECK_NOFAIL", +Cch +:: +ResuDiosi +:: +CtueOnFau + | Cch::ResuDiosi:: +SussFa +,x ) + + ) + +11455  + #CATCH_CHECK_THROWS + +ex + ) + `INTERNAL_CATCH_THROWS +"CATCH_CHECK_THROWS", +Cch +:: +ResuDiosi +:: +CtueOnFau +, "",x ) + + ) + +11456  + #CATCH_CHECK_THROWS_AS + +ex +, +exiTy + ) + `INTERNAL_CATCH_THROWS_AS +"CATCH_CHECK_THROWS_AS",xiTy, +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11457  + #CATCH_CHECK_THROWS_WITH + +ex +, +mch + ) + `INTERNAL_CATCH_THROWS +"CATCH_CHECK_THROWS_WITH", +Cch +:: +ResuDiosi +:: +CtueOnFau +, mch,x ) + + ) + +11458  + #CATCH_CHECK_NOTHROW + +ex + ) + `INTERNAL_CATCH_NO_THROW +"CATCH_CHECK_NOTHROW", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11460  + #CATCH_CHECK_THAT + +g +, +mch + ) + `INTERNAL_CHECK_THAT +"CATCH_CHECK_THAT", mch, +Cch +:: +ResuDiosi +:: +CtueOnFau +,rg ) + + ) + +11462 #i +defed +( +CATCH_CONFIG_FAST_COMPILE +) + +11463  + #CATCH_REQUIRE_THAT + +g +, +mch + ) + `INTERNAL_CHECK_THAT_NO_TRY +"CATCH_REQUIRE_THAT", mch, +Cch +:: +ResuDiosi +:: +Nm +,rg ) + + ) + +11465  + #CATCH_REQUIRE_THAT + +g +, +mch + ) + `INTERNAL_CHECK_THAT +"CATCH_REQUIRE_THAT", mch, +Cch +:: +ResuDiosi +:: +Nm +,rg ) + + ) + +11468  + #CATCH_INFO + +msg + ) + `INTERNAL_CATCH_INFO +"CATCH_INFO", msg ) + + ) + +11469  + #CATCH_WARN + +msg + ) + `INTERNAL_CATCH_MSG +"CATCH_WARN", +Cch +:: +ResuWas +:: +Wng +, Cch:: +ResuDiosi +:: +CtueOnFau +, msg ) + + ) + +11470  + #CATCH_SCOPED_INFO + +msg + ) + `INTERNAL_CATCH_INFO +"CATCH_INFO", msg ) + + ) + +11471  + #CATCH_CAPTURE + +msg + ) + `INTERNAL_CATCH_INFO +"CATCH_CAPTURE", #msg " :" << +Cch +:: + `toSg +(msg) + + ) + +11472  + #CATCH_SCOPED_CAPTURE + +msg + ) + `INTERNAL_CATCH_INFO +"CATCH_CAPTURE", #msg " :" << +Cch +:: + `toSg +(msg) + + ) + +11474 #ifde +CATCH_CONFIG_VARIADIC_MACROS + + +11475  + #CATCH_TEST_CASE +... ) + `INTERNAL_CATCH_TESTCASE + +__VA_ARGS__ + ) + + ) + +11476  + #CATCH_TEST_CASE_METHOD + +assName +, ... ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName, +__VA_ARGS__ + ) + + ) + +11477  + #CATCH_METHOD_AS_TEST_CASE + +mhod +, ... ) + `INTERNAL_CATCH_METHOD_AS_TEST_CASE +mhod, +__VA_ARGS__ + ) + + ) + +11478  + #CATCH_REGISTER_TEST_CASE + +Funi +, ... ) + `INTERNAL_CATCH_REGISTER_TESTCASE +Funi, +__VA_ARGS__ + ) + + ) + +11479  + #CATCH_SECTION +... ) + `INTERNAL_CATCH_SECTION + +__VA_ARGS__ + ) + + ) + +11480  + #CATCH_FAIL +... ) + `INTERNAL_CATCH_MSG +"CATCH_FAIL", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +Nm +, +__VA_ARGS__ + ) + + ) + +11481  + #CATCH_FAIL_CHECK +... ) + `INTERNAL_CATCH_MSG +"CATCH_FAIL_CHECK", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +CtueOnFau +, +__VA_ARGS__ + ) + + ) + +11482  + #CATCH_SUCCEED +... ) + `INTERNAL_CATCH_MSG +"CATCH_SUCCEED", +Cch +:: +ResuWas +:: +Ok +, Cch:: +ResuDiosi +:: +CtueOnFau +, +__VA_ARGS__ + ) + + ) + +11484  + #CATCH_TEST_CASE + +me +, +desti + ) + `INTERNAL_CATCH_TESTCASE +me, desti ) + + ) + +11485  + #CATCH_TEST_CASE_METHOD + +assName +, +me +, +desti + ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName,ame, desti ) + + ) + +11486  + #CATCH_METHOD_AS_TEST_CASE + +mhod +, +me +, +desti + ) + `INTERNAL_CATCH_METHOD_AS_TEST_CASE +mhod,ame, desti ) + + ) + +11487  + #CATCH_REGISTER_TEST_CASE + +funi +, +me +, +desti + ) + `INTERNAL_CATCH_REGISTER_TESTCASE +funi,ame, desti ) + + ) + +11488  + #CATCH_SECTION + +me +, +desti + ) + `INTERNAL_CATCH_SECTION +me, desti ) + + ) + +11489  + #CATCH_FAIL + +msg + ) + `INTERNAL_CATCH_MSG +"CATCH_FAIL", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +Nm +, msg ) + + ) + +11490  + #CATCH_FAIL_CHECK + +msg + ) + `INTERNAL_CATCH_MSG +"CATCH_FAIL_CHECK", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +CtueOnFau +, msg ) + + ) + +11491  + #CATCH_SUCCEED + +msg + ) + `INTERNAL_CATCH_MSG +"CATCH_SUCCEED", +Cch +:: +ResuWas +:: +Ok +, Cch:: +ResuDiosi +:: +CtueOnFau +, msg ) + + ) + +11493  + #CATCH_ANON_TEST_CASE +( + `INTERNAL_CATCH_TESTCASE +"", "" ) + + ) + +11495  + #CATCH_REGISTER_REPORTER + +me +, +p܋rTy + ) + `INTERNAL_CATCH_REGISTER_REPORTER +me,܋rTy ) + + ) + +11496  + #CATCH_REGISTER_LEGACY_REPORTER + +me +, +p܋rTy + ) + `INTERNAL_CATCH_REGISTER_LEGACY_REPORTER +me,܋rTy ) + + ) + +11498  + #CATCH_GENERATE + +ex + + `INTERNAL_CATCH_GENERATE +ex ) + + ) + +11501 #ifde +CATCH_CONFIG_VARIADIC_MACROS + + +11502  + #CATCH_SCENARIO +... ) + `CATCH_TEST_CASE +"Srio: " +__VA_ARGS__ + ) + + ) + +11503  + #CATCH_SCENARIO_METHOD + +assName +, ... ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName, "Srio: " +__VA_ARGS__ + ) + + ) + +11505  + #CATCH_SCENARIO + +me +, +gs + ) + `CATCH_TEST_CASE +"Srio: "ame,ag) + + ) + +11506  + #CATCH_SCENARIO_METHOD + +assName +, +me +, +gs + ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName, "Srio: "ame,ag) + + ) + +11508  + #CATCH_GIVEN + +desc + ) + `CATCH_SECTION + +d +:: + `rg +"Giv: "+ desc, "" ) + + ) + +11509  + #CATCH_WHEN + +desc + ) + `CATCH_SECTION + +d +:: + `rg +" Wh: "+ desc, "" ) + + ) + +11510  + #CATCH_AND_WHEN + +desc + ) + `CATCH_SECTION + +d +:: + `rg +" And: "+ desc, "" ) + + ) + +11511  + #CATCH_THEN + +desc + ) + `CATCH_SECTION + +d +:: + `rg +" Th: "+ desc, "" ) + + ) + +11512  + #CATCH_AND_THEN + +desc + ) + `CATCH_SECTION + +d +:: + `rg +" And: "+ desc, "" ) + + ) + +11517 #i +defed +( +CATCH_CONFIG_FAST_COMPILE +) + +11518  + #REQUIRE + +ex + ) + `INTERNAL_CATCH_TEST_NO_TRY +"REQUIRE", +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11519  + #REQUIRE_FALSE + +ex + ) + `INTERNAL_CATCH_TEST_NO_TRY +"REQUIRE_FALSE", +Cch +:: +ResuDiosi +:: +Nm + | Cch::ResuDiosi:: +FTe +,x ) + + ) + +11522  + #REQUIRE + +ex + ) + `INTERNAL_CATCH_TEST +"REQUIRE", +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11523  + #REQUIRE_FALSE + +ex + ) + `INTERNAL_CATCH_TEST +"REQUIRE_FALSE", +Cch +:: +ResuDiosi +:: +Nm + | Cch::ResuDiosi:: +FTe +,x ) + + ) + +11526  + #REQUIRE_THROWS + +ex + ) + `INTERNAL_CATCH_THROWS +"REQUIRE_THROWS", +Cch +:: +ResuDiosi +:: +Nm +, "",x ) + + ) + +11527  + #REQUIRE_THROWS_AS + +ex +, +exiTy + ) + `INTERNAL_CATCH_THROWS_AS +"REQUIRE_THROWS_AS",xiTy, +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11528  + #REQUIRE_THROWS_WITH + +ex +, +mch + ) + `INTERNAL_CATCH_THROWS +"REQUIRE_THROWS_WITH", +Cch +:: +ResuDiosi +:: +Nm +, mch,x ) + + ) + +11529  + #REQUIRE_NOTHROW + +ex + ) + `INTERNAL_CATCH_NO_THROW +"REQUIRE_NOTHROW", +Cch +:: +ResuDiosi +:: +Nm +,x ) + + ) + +11531  + #CHECK + +ex + ) + `INTERNAL_CATCH_TEST +"CHECK", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11532  + #CHECK_FALSE + +ex + ) + `INTERNAL_CATCH_TEST +"CHECK_FALSE", +Cch +:: +ResuDiosi +:: +CtueOnFau + | Cch::ResuDiosi:: +FTe +,x ) + + ) + +11533  + #CHECKED_IF + +ex + ) + `INTERNAL_CATCH_IF +"CHECKED_IF", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11534  + #CHECKED_ELSE + +ex + ) + `INTERNAL_CATCH_ELSE +"CHECKED_ELSE", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11535  + #CHECK_NOFAIL + +ex + ) + `INTERNAL_CATCH_TEST +"CHECK_NOFAIL", +Cch +:: +ResuDiosi +:: +CtueOnFau + | Cch::ResuDiosi:: +SussFa +,x ) + + ) + +11537  + #CHECK_THROWS + +ex + ) + `INTERNAL_CATCH_THROWS +"CHECK_THROWS", +Cch +:: +ResuDiosi +:: +CtueOnFau +, "",x ) + + ) + +11538  + #CHECK_THROWS_AS + +ex +, +exiTy + ) + `INTERNAL_CATCH_THROWS_AS +"CHECK_THROWS_AS",xiTy, +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11539  + #CHECK_THROWS_WITH + +ex +, +mch + ) + `INTERNAL_CATCH_THROWS +"CHECK_THROWS_WITH", +Cch +:: +ResuDiosi +:: +CtueOnFau +, mch,x ) + + ) + +11540  + #CHECK_NOTHROW + +ex + ) + `INTERNAL_CATCH_NO_THROW +"CHECK_NOTHROW", +Cch +:: +ResuDiosi +:: +CtueOnFau +,x ) + + ) + +11542  + #CHECK_THAT + +g +, +mch + ) + `INTERNAL_CHECK_THAT +"CHECK_THAT", mch, +Cch +:: +ResuDiosi +:: +CtueOnFau +,rg ) + + ) + +11544 #i +defed +( +CATCH_CONFIG_FAST_COMPILE +) + +11545  + #REQUIRE_THAT + +g +, +mch + ) + `INTERNAL_CHECK_THAT_NO_TRY +"REQUIRE_THAT", mch, +Cch +:: +ResuDiosi +:: +Nm +,rg ) + + ) + +11547  + #REQUIRE_THAT + +g +, +mch + ) + `INTERNAL_CHECK_THAT +"REQUIRE_THAT", mch, +Cch +:: +ResuDiosi +:: +Nm +,rg ) + + ) + +11550  + #INFO + +msg + ) + `INTERNAL_CATCH_INFO +"INFO", msg ) + + ) + +11551  + #WARN + +msg + ) + `INTERNAL_CATCH_MSG +"WARN", +Cch +:: +ResuWas +:: +Wng +, Cch:: +ResuDiosi +:: +CtueOnFau +, msg ) + + ) + +11552  + #SCOPED_INFO + +msg + ) + `INTERNAL_CATCH_INFO +"INFO", msg ) + + ) + +11553  + #CAPTURE + +msg + ) + `INTERNAL_CATCH_INFO +"CAPTURE", #msg " :" << +Cch +:: + `toSg +(msg) + + ) + +11554  + #SCOPED_CAPTURE + +msg + ) + `INTERNAL_CATCH_INFO +"CAPTURE", #msg " :" << +Cch +:: + `toSg +(msg) + + ) + +11556 #ifde +CATCH_CONFIG_VARIADIC_MACROS + + +11557  + #TEST_CASE +... ) + `INTERNAL_CATCH_TESTCASE + +__VA_ARGS__ + ) + + ) + +11558  + #TEST_CASE_METHOD + +assName +, ... ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName, +__VA_ARGS__ + ) + + ) + +11559  + #METHOD_AS_TEST_CASE + +mhod +, ... ) + `INTERNAL_CATCH_METHOD_AS_TEST_CASE +mhod, +__VA_ARGS__ + ) + + ) + +11560  + #REGISTER_TEST_CASE + +Funi +, ... ) + `INTERNAL_CATCH_REGISTER_TESTCASE +Funi, +__VA_ARGS__ + ) + + ) + +11561  + #SECTION +... ) + `INTERNAL_CATCH_SECTION + +__VA_ARGS__ + ) + + ) + +11562  + #FAIL +... ) + `INTERNAL_CATCH_MSG +"FAIL", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +Nm +, +__VA_ARGS__ + ) + + ) + +11563  + #FAIL_CHECK +... ) + `INTERNAL_CATCH_MSG +"FAIL_CHECK", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +CtueOnFau +, +__VA_ARGS__ + ) + + ) + +11564  + #SUCCEED +... ) + `INTERNAL_CATCH_MSG +"SUCCEED", +Cch +:: +ResuWas +:: +Ok +, Cch:: +ResuDiosi +:: +CtueOnFau +, +__VA_ARGS__ + ) + + ) + +11566  + #TEST_CASE + +me +, +desti + ) + `INTERNAL_CATCH_TESTCASE +me, desti ) + + ) + +11567  + #TEST_CASE_METHOD + +assName +, +me +, +desti + ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName,ame, desti ) + + ) + +11568  + #METHOD_AS_TEST_CASE + +mhod +, +me +, +desti + ) + `INTERNAL_CATCH_METHOD_AS_TEST_CASE +mhod,ame, desti ) + + ) + +11569  + #REGISTER_TEST_CASE + +mhod +, +me +, +desti + ) + `INTERNAL_CATCH_REGISTER_TESTCASE +mhod,ame, desti ) + + ) + +11570  + #SECTION + +me +, +desti + ) + `INTERNAL_CATCH_SECTION +me, desti ) + + ) + +11571  + #FAIL + +msg + ) + `INTERNAL_CATCH_MSG +"FAIL", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +Nm +, msg ) + + ) + +11572  + #FAIL_CHECK + +msg + ) + `INTERNAL_CATCH_MSG +"FAIL_CHECK", +Cch +:: +ResuWas +:: +ExicFau +, Cch:: +ResuDiosi +:: +CtueOnFau +, msg ) + + ) + +11573  + #SUCCEED + +msg + ) + `INTERNAL_CATCH_MSG +"SUCCEED", +Cch +:: +ResuWas +:: +Ok +, Cch:: +ResuDiosi +:: +CtueOnFau +, msg ) + + ) + +11575  + #ANON_TEST_CASE +( + `INTERNAL_CATCH_TESTCASE +"", "" ) + + ) + +11577  + #REGISTER_REPORTER + +me +, +p܋rTy + ) + `INTERNAL_CATCH_REGISTER_REPORTER +me,܋rTy ) + + ) + +11578  + #REGISTER_LEGACY_REPORTER + +me +, +p܋rTy + ) + `INTERNAL_CATCH_REGISTER_LEGACY_REPORTER +me,܋rTy ) + + ) + +11580  + #GENERATE + +ex + + `INTERNAL_CATCH_GENERATE +ex ) + + ) + +11584  + #CATCH_TRANSLATE_EXCEPTION + +sigtu + ) + `INTERNAL_CATCH_TRANSLATE_EXCEPTION +sigtu ) + + ) + +11587 #ifde +CATCH_CONFIG_VARIADIC_MACROS + + +11588  + #SCENARIO +... ) + `TEST_CASE +"Srio: " +__VA_ARGS__ + ) + + ) + +11589  + #SCENARIO_METHOD + +assName +, ... ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName, "Srio: " +__VA_ARGS__ + ) + + ) + +11591  + #SCENARIO + +me +, +gs + ) + `TEST_CASE +"Srio: "ame,ag) + + ) + +11592  + #SCENARIO_METHOD + +assName +, +me +, +gs + ) + `INTERNAL_CATCH_TEST_CASE_METHOD +assName, "Srio: "ame,ag) + + ) + +11594  + #GIVEN + +desc + ) + `SECTION + +d +:: + `rg +(" Giv: "+ desc, "" ) + + ) + +11595  + #WHEN + +desc + ) + `SECTION + +d +:: + `rg +(" Wh: "+ desc, "" ) + + ) + +11596  + #AND_WHEN + +desc + ) + `SECTION + +d +:: + `rg +("And wh: "+ desc, "" ) + + ) + +11597  + #THEN + +desc + ) + `SECTION + +d +:: + `rg +(" Th: "+ desc, "" ) + + ) + +11598  + #AND_THEN + +desc + ) + `SECTION + +d +:: + `rg +(" And: "+ desc, "" ) + + ) + +11600 +usg + +Cch +:: +Da +:: +Arox +; + +11604  + #TWOBLUECUBES_CATCH_REENABLE_WARNINGS_H_INCLUDED + + + ) + +11606 #ifde +__g__ + + +11607 #ifde +__ICC + + +11608 #agm +wng +( +p +) + +11610 #agm +g + +dgnoic + +p + + +11612 #i +defed + +__GNUC__ + + +11613 #agm +GCC + +dgnoic + +p + + + @lib_standalone/ArduinoJson/src/ArduinoJson.h + +5 #agm + + + +7 #ifde +__lulus + + +9  + ~"ArduoJs.h +" + +11 +usg + +mea + + gArduoJs +; + +15 #r +ArduoJs + +ques + +a + +C +++ +comp +, + + +chge + +fe + +exnsi + +to + . +cc + + + . +p + + + @lib_standalone/ArduinoJson/src/ArduinoJson.hpp + +5 #agm + + + +7  + ~"ArduoJs/Cfiguti.h +" + +9 #i! +ARDUINOJSON_DEBUG + + +10 #ifde +__g__ + + +11 #agm +g + +syem_hd + + +12 #i +defed + +__GNUC__ + + +13 #agm +GCC + +syem_hd + + +17  + ~"ArduoJs/Aay/AayRef.h +" + +18  + ~"ArduoJs/Obje/ObjeRef.h +" + +19  + ~"ArduoJs/V/VRef.h +" + +21  + ~"ArduoJs/Documt/DymicJsDocumt.h +" + +22  + ~"ArduoJs/Documt/SticJsDocumt.h +" + +24  + ~"ArduoJs/Aay/AayIm.h +" + +25  + ~"ArduoJs/Aay/EmtProxy.h +" + +26  + ~"ArduoJs/Aay/Uts.h +" + +27  + ~"ArduoJs/Ci/CiIm.h +" + +28  + ~"ArduoJs/Obje/MembProxy.h +" + +29  + ~"ArduoJs/Obje/ObjeIm.h +" + +30  + ~"ArduoJs/V/VAsIm.h +" + +31  + ~"ArduoJs/V/VIm.h +" + +33  + ~"ArduoJs/Js/JsDerliz.h +" + +34  + ~"ArduoJs/Js/JsSliz.h +" + +35  + ~"ArduoJs/Js/PyJsSliz.h +" + +36  + ~"ArduoJs/MsgPack/MsgPackDerliz.h +" + +37  + ~"ArduoJs/MsgPack/MsgPackSliz.h +" + +39  + ~"ArduoJs/comtiby.h +" + +41 +mea + + gArduoJs + { + +42  + gARDUINOJSON_NAMESPACE +:: + tAayCڡRef + + tJsAayCڡ +; + +43  + gARDUINOJSON_NAMESPACE +:: + tAayRef + + tJsAay +; + +44  + gARDUINOJSON_NAMESPACE +:: + tFlt + + tJsFlt +; + +45  + gARDUINOJSON_NAMESPACE +:: + tIeg + + tJsIeg +; + +46  + gARDUINOJSON_NAMESPACE +:: + tObjeCڡRef + + tJsObjeCڡ +; + +47  + gARDUINOJSON_NAMESPACE +:: + tObjeRef + + tJsObje +; + +48  + gARDUINOJSON_NAMESPACE +:: + tPa + + tJsPa +; + +49  + gARDUINOJSON_NAMESPACE +:: + tPaCڡ + + tJsPaCڡ +; + +50  + gARDUINOJSON_NAMESPACE +:: + tSg + + tJsSg +; + +51  + gARDUINOJSON_NAMESPACE +:: + tUI + + tJsUI +; + +52  + gARDUINOJSON_NAMESPACE +:: + tVCڡRef + + tJsVCڡ +; + +53  + gARDUINOJSON_NAMESPACE +:: + tVRef + + tJsV +; + +54 +usg + + gARDUINOJSON_NAMESPACE +:: +BasicJsDocumt +; + +55 +usg + + gARDUINOJSON_NAMESPACE +:: +cyAay +; + +56 +usg + + gARDUINOJSON_NAMESPACE +:: +DerliziE +; + +57 +usg + + gARDUINOJSON_NAMESPACE +:: +derlizeJs +; + +58 +usg + + gARDUINOJSON_NAMESPACE +:: +derlizeMsgPack +; + +59 +usg + + gARDUINOJSON_NAMESPACE +:: +DymicJsDocumt +; + +60 +usg + + gARDUINOJSON_NAMESPACE +:: +JsDocumt +; + +61 +usg + + gARDUINOJSON_NAMESPACE +:: +msuJs +; + +62 +usg + + gARDUINOJSON_NAMESPACE +:: +rlized +; + +63 +usg + + gARDUINOJSON_NAMESPACE +:: +rlizeJs +; + +64 +usg + + gARDUINOJSON_NAMESPACE +:: +rlizeJsPy +; + +65 +usg + + gARDUINOJSON_NAMESPACE +:: +rlizeMsgPack +; + +66 +usg + + gARDUINOJSON_NAMESPACE +:: +SticJsDocumt +; + +68 +mea + + gDerliziOi + { + +69 +usg + + gARDUINOJSON_NAMESPACE +:: +Fr +; + +70 +usg + + gARDUINOJSON_NAMESPACE +:: +NegLim +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +le + +VDa + * +yAdd +( +CiDa + * +r +, +MemyPo + * +po +) { + +12  + gr + ?-> +addEmt +( +po +) : 0; + +15 + gme + < +tyme + + gVis +> + +16 +le +  +yAc +(cڡ +CiDa + * +r +, +Vis + & +vis +) { + +17 i( + gr +) + +18 + gvis +. +visAay +(* +r +); + +20 + gvis +. +visNu +(); + +23 +le + +bo + +yEqus +(cڡ +CiDa + * +lhs +, cڡ CiD* +rhs +) { + +24 i( + glhs + = +rhs +) + +25  +ue +; + +26 i(! + glhs + || ! + grhs +) + +27  + gl +; + +28  + glhs +-> +equsAay +(* +rhs +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTAay +> + +13 +le + +AayRef + + gAayShtcuts +< + gTAay +>:: +NeedAay +() const { + +14  +im +()-> +addEmt +(). +me + +to +< +AayRef +>(); + +17 + gme + < +tyme + + gTAay +> + +18 +le + +ObjeRef + + gAayShtcuts +< + gTAay +>:: +NeedObje +() const { + +19  +im +()-> +addEmt +(). +me + +to +< +ObjeRef +>(); + +22 + gme + < +tyme + + gTAay +> + +23 +le + + gEmtProxy +< + gTAay +> + gAayShtcuts +:: +ݔ +[]( + +24 +size_t + +dex +) const { + +25  +EmtProxy +< +TAay +>(* +im +(), + gdex +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cVP + { + +13 + gpublic +: + +14 +VP +( +MemyPo + * +po +, +VDa + * +da +: +_v +(pool, data) {} + +16 +VRef + * + gݔ +->() { + +17  & + g_v +; + +20 + gVRef + & + gݔ +*() { + +21  + g_v +; + +24 + give +: + +25 +VRef + +_v +; + +28 as + cAayIt + { + +29 + gpublic +: + +30 +AayIt +(: +_ +(0) {} + +31 +exic + +AayIt +( +MemyPo + * +po +, +VSl + * + +) + +32 : +_po +( +po +), +_ +( + +) {} + +34 +VRef + + gݔ +*() const { + +35  +VRef +( +_po +, +_ +-> +da +()); + +37 +VP + + gݔ +->() { + +38  +VP +( +_po +, +_ +-> +da +()); + +41 +bo + + gݔ +==(cڡ +AayIt + & +h +) const { + +42  +_ + = +h +._slot; + +45 +bo + + gݔ +!=(cڡ +AayIt + & +h +) const { + +46  +_ + ! +h +._slot; + +49 + gAayIt + & + gݔ +++() { + +50 + g_ + = +_ +-> +xt +(); + +51  * + gthis +; + +54 + gAayIt + & + gݔ ++=( +size_t + +di +) { + +55 +_ + = _-> +xt +( +di +); + +56  * + gthis +; + +59 +VSl + * + +() { + +60  + g_ +; + +63 + give +: + +64 +MemyPo + * +_po +; + +65 +VSl + * + g_ +; + +68 as + cVCڡP + { + +69 + gpublic +: + +70 +VCڡP +(cڡ +VDa + * +da +: +_v +(data) {} + +72 +VCڡRef + * +ݔ +->() { + +73  & +_v +; + +76 + gVCڡRef + & + gݔ +*() { + +77  + g_v +; + +80 + give +: + +81 +VCڡRef + +_v +; + +84 as + cAayCڡRefIt + { + +85 + gpublic +: + +86 +AayCڡRefIt +(: +_ +(0) {} + +87 +exic + +AayCڡRefIt +(cڡ +VSl + * + +: +_ +(slot) {} + +89 +VCڡRef + +ݔ +*() const { + +90  +VCڡRef +( +_ +-> +da +()); + +92 +VCڡP + + gݔ +->() { + +93  +VCڡP +( +_ +-> +da +()); + +96 +bo + + gݔ +==(cڡ +AayCڡRefIt + & +h +) const { + +97  +_ + = +h +._slot; + +100 +bo + + gݔ +!=(cڡ +AayCڡRefIt + & +h +) const { + +101  +_ + ! +h +._slot; + +104 + gAayCڡRefIt + & + gݔ +++() { + +105 + g_ + = +_ +-> +xt +(); + +106  * + gthis +; + +109 + gAayCڡRefIt + & + gݔ ++=( +size_t + +di +) { + +110 +_ + = _-> +xt +( +di +); + +111  * + gthis +; + +114 cڡ +VSl + * + +() { + +115  + g_ +; + +118 + give +: + +119 cڡ +VSl + * +_ +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +13  + #JSON_ARRAY_SIZE +( +NUMBER_OF_ELEMENTS +) \ + +14 (( +NUMBER_OF_ELEMENTS +* ( +ARDUINOJSON_NAMESPACE +:: +VSl +)) + + ) + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 +ass + + gObjeRef +; + +19 + gme + < + gtyme +> + +20 +ass + + gEmtProxy +; + +22 + gme + < +tyme + + gTDa +> + +23 as + cAayRefBa + { + +24 + gpublic +: + +25 +ݔ + +VCڡRef +() const { + +26 cڡ * +da + = +_da +; + +27  +VCڡRef +( +t_ +( +da +)); + +30 + gme + < +tyme + + gVis +> + +31 +FORCE_INLINE +  +ac +( +Vis +& +vis +) const { + +32 +yAc +( +_da +, +vis +); + +35 +FORCE_INLINE + +bo + +isNu +() const { + +36  + g_da + == 0; + +39 +FORCE_INLINE + +ݔ + +bo +() const { + +40  + g_da + != 0; + +43 +FORCE_INLINE + +size_t + +memyUge +() const { + +44  + g_da + ? _da-> +memyUge +() : 0; + +47 +FORCE_INLINE + +size_t + +ág +() const { + +48  + g_da + ? _da-> +ág +() : 0; + +51 +FORCE_INLINE + +size_t + +size +() const { + +52  + g_da + ? _da-> +size +() : 0; + +55 + geed +: + +56 +AayRefBa +( +TDa +* +da +: +_da +(data) {} + +57 +TDa +* +_da +; + +60 +ass + + gAayCڡRef + : +public + +AayRefBa +, + +61 +public + + gVisab + { + +62 +nd + +ass + + gAayRef +; + +63  + gAayRefBa + + tba_ty +; + +65 + gpublic +: + +66  +AayCڡRefIt + + t +; + +68 +FORCE_INLINE + + + +beg +() const { + +69 i(! + g_da +) + +70  + +(); + +71  + +( +_da +-> +hd +()); + +74 +FORCE_INLINE + + + +d +() const { + +75  + +(); + +78 +FORCE_INLINE + +AayCڡRef +(: +ba_ty +(0) {} + +79 +FORCE_INLINE + +AayCڡRef +(cڡ +CiDa +* +da +: +ba_ty +(data) {} + +81 +FORCE_INLINE + +bo + +ݔ +==( +AayCڡRef + +rhs +) const { + +82  +yEqus +( +_da +, +rhs +._data); + +85 +FORCE_INLINE + +VCڡRef + + gݔ +[]( +size_t + + gdex +) const { + +86  +gEmt +( +dex +); + +89 +FORCE_INLINE + +VCڡRef + +gEmt +( +size_t + +dex +) const { + +90  +VCڡRef +( +_da + ? _da-> +gEmt +( +dex +) : 0); + +94 +ass + + gAayRef + : +public + +AayRefBa +< +CiDa +>, + +95 +public + + gAayShtcuts +< + gAayRef +>, + +96 +public + + gVisab + { + +97  + gAayRefBa +< + tCiDa +> + tba_ty +; + +99 + gpublic +: + +100  +AayIt + + t +; + +102 +FORCE_INLINE + +AayRef +(: +ba_ty +(0), +_po +(0) {} + +103 +FORCE_INLINE + +AayRef +( +MemyPo +* +po +, +CiDa +* +da +) + +104 : +ba_ty +( +da +), +_po +( +po +) {} + +106 +ݔ + +VRef +() { + +107 * + gda + = +_da +; + +108  +VRef +( +_po +, +t_ +< +VDa +*>( +da +)); + +111 +ݔ + +AayCڡRef +() const { + +112  +AayCڡRef +( +_da +); + +115 +VRef + +addEmt +() const { + +116  +VRef +( +_po +, +yAdd +( +_da +, _pool)); + +119 +FORCE_INLINE + + + +beg +() const { + +120 i(! + g_da +) + +121  + +(); + +122  + +( +_po +, +_da +-> +hd +()); + +125 +FORCE_INLINE + + + +d +() const { + +126  + +(); + +130 +FORCE_INLINE + +bo + +t +( +AayCڡRef + +c +) const { + +131 i(! + g_da + || ! + gc +._data) + +132  + gl +; + +133  + g_da +-> +cyFrom +(* +c +. +_da +, +_po +); + +136 +FORCE_INLINE + +bo + + gݔ +==( +AayRef + +rhs +) const { + +137  +yEqus +( +_da +, +rhs +._data); + +141 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t + +dex +) const { + +142  +VRef +( +_po +, +_da + ? _da-> +gOrAddEmt +( +dex +, _pool) : 0); + +146 +FORCE_INLINE + +VRef + +gEmt +( +size_t + +dex +) const { + +147  +VRef +( +_po +, +_da + ? _da-> +gEmt +( +dex +) : 0); + +151 +FORCE_INLINE +  +move +( + + + +) const { + +152 i(! + g_da +) + +154 + g_da +-> +moveSl +( + +. + +()); + +158 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +159 i(! + g_da +) + +161 + g_da +-> +moveEmt +( +dex +); + +164 + give +: + +165 +MemyPo +* +_po +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < + gtyme +> + +13 +ass + + gEmtProxy +; + +15 + gme + < +tyme + + gTAay +> + +16 as + cAayShtcuts + { + +17 + gpublic +: + +19 +FORCE_INLINE + +EmtProxy +< +TAay +> +ݔ +[]( +size_t + +dex +) const; + +21 +FORCE_INLINE + +ObjeRef + +NeedObje +() const; + +23 +FORCE_INLINE + +AayRef + +NeedAay +() const; + +30 + gme + < +tyme + + gT +> + +31 +FORCE_INLINE + +bo + +add +(cڡ +T + & +vue +) const { + +32  +im +()-> +addEmt +(). +t +( +vue +); + +37 + gme + < +tyme + + gT +> + +38 +FORCE_INLINE + +bo + +add +( +T + * +vue +) const { + +39  +im +()-> +addEmt +(). +t +( +vue +); + +42 + give +: + +43 cڡ +TAay + * +im +() const { + +44  +ic_ +( +this +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 #ifde +_MSC_VER + + +12 #agm +wng +( +push +) + +13 #agm +wng +( +dib + : 4522) + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 + gme + < +tyme + + gTAay +> + +19 +ass + + gEmtProxy + : +public + +VOts +< +EmtProxy +< +TAay +> >, + +20 +public + + gVisab + { + +21  + gEmtProxy +< + tTAay +> + tthis_ty +; + +23 + gpublic +: + +24 +FORCE_INLINE + +EmtProxy +( +TAay + +y +, +size_t + +dex +) + +25 : +_y +( +y +), +_dex +( +dex +) {} + +27 +FORCE_INLINE + +EmtProxy +(cڡ EmtProxy& +c +) + +28 : +_y +( +c +._y), +_dex +(src._index) {} + +30 +FORCE_INLINE + + gthis_ty +& + gݔ +=(cڡ +this_ty +& +c +) { + +31 +gOrAddUpamEmt +(). +t +( +c +. +as +< +VCڡRef +>()); + +32  * + gthis +; + +40 + gme + < +tyme + + gT +> + +41 +FORCE_INLINE + + gthis_ty +& + gݔ +=(cڡ +T +& +c +) { + +42 +gOrAddUpamEmt +(). +t +( +c +); + +43  * + gthis +; + +48 + gme + < +tyme + + gT +> + +49 +FORCE_INLINE + + gthis_ty +& + gݔ +=( +T +* +c +) { + +50 +gOrAddUpamEmt +(). +t +( +c +); + +51  * + gthis +; + +54 +FORCE_INLINE + +bo + + gݔ +==( +VCڡRef + +rhs +) const { + +55  +ic_ +< +VCڡRef +>( +gUpamEmt +()= +rhs +; + +58 +FORCE_INLINE + +bo + + gݔ +!=( +VCڡRef + +rhs +) const { + +59  +ic_ +< +VCڡRef +>( +gUpamEmt +()! +rhs +; + +62 +FORCE_INLINE +  +r +() const { + +63 +gUpamEmt +(). +r +(); + +66 +FORCE_INLINE + +bo + +isNu +() const { + +67  +gUpamEmt +(). +isNu +(); + +70 + gme + < +tyme + + gT +> + +71 +FORCE_INLINE + +tyme + + gVAs +< + gT +>:: +ty + +as +() const { + +72  +gUpamEmt +(). +me + +as +< +T +>(); + +75 + gme + < +tyme + + gT +> + +76 +FORCE_INLINE + +bo + +is +() const { + +77  +gUpamEmt +(). +me + + gis +< + gT +>(); + +80 + gme + < +tyme + + gT +> + +81 +FORCE_INLINE + +tyme + + gVTo +< + gT +>:: +ty + +to +() const { + +82  +gOrAddUpamEmt +(). +me + +to +< +T +>(); + +90 + gme + < +tyme + + gTVue +> + +91 +FORCE_INLINE + +bo + +t +(cڡ +TVue +& +vue +) const { + +92  +gOrAddUpamEmt +(). +t +( +vue +); + +97 + gme + < +tyme + + gTVue +> + +98 +FORCE_INLINE + +bo + +t +( +TVue +* +vue +) const { + +99  +gOrAddUpamEmt +(). +t +( +vue +); + +102 + gme + < +tyme + + gVis +> + +103  +ac +( +Vis +& +vis +) const { + +104  +gUpamEmt +(). +ac +( +vis +); + +107 +FORCE_INLINE + +size_t + +size +() const { + +108  +gUpamEmt +(). +size +(); + +111 + gme + < +tyme + + gTNeedKey +> + +112 +VRef + +gMemb +( +TNeedKey +* +key +) const { + +113  +gUpamEmt +(). +gMemb +( +key +); + +116 + gme + < +tyme + + gTNeedKey +> + +117 +VRef + +gMemb +(cڡ +TNeedKey +& +key +) const { + +118  +gUpamEmt +(). +gMemb +( +key +); + +121 + gme + < +tyme + + gTNeedKey +> + +122 +VRef + +gOrAddMemb +( +TNeedKey +* +key +) const { + +123  +gOrAddUpamEmt +(). +gOrAddMemb +( +key +); + +126 + gme + < +tyme + + gTNeedKey +> + +127 +VRef + +gOrAddMemb +(cڡ +TNeedKey +& +key +) const { + +128  +gOrAddUpamEmt +(). +gOrAddMemb +( +key +); + +131 +VRef + +addEmt +() const { + +132  +gOrAddUpamEmt +(). +addEmt +(); + +135 +VRef + +gEmt +( +size_t + +dex +) const { + +136  +gOrAddUpamEmt +(). +gEmt +( +dex +); + +139 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +140 +gUpamEmt +(). +move +( +dex +); + +145 + gme + < +tyme + + gTCh +> + +146 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +>:: +ty + +move +( + +147 +TCh +* +key +) const { + +148 +gUpamEmt +(). +move +( +key +); + +152 + gme + < +tyme + + gTSg +> + +153 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +154 cڡ +TSg +& +key +) const { + +155 +gUpamEmt +(). +move +( +key +); + +158 + give +: + +159 +FORCE_INLINE + +VRef + +gUpamEmt +() const { + +160  +_y +. +gEmt +( +_dex +); + +163 +FORCE_INLINE + +VRef + +gOrAddUpamEmt +() const { + +164  + g_y +. +gOrAddEmt +( +_dex +); + +167 +TAay + + g_y +; + +168 cڡ +size_t + + g_dex +; + +173 #ifde +_MSC_VER + + +174 #agm +wng +( +p +) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +, +size_t + + gN +> + +13 +le + +bo + +cyAay +( +T + (& +c +)[ +N +], +AayRef + +d +) { + +14  +cyAay +( +c +, +N +, +d +); + +18 + gme + < +tyme + + gT +> + +19 +le + +bo + +cyAay +( +T +* +c +, +size_t + +n +, +AayRef + +d +) { + +20 +bo + + gok + = +ue +; + +21  +size_t + + gi + = 0; i < + gn +; i++) { + +22 + gok + & +d +. +add +( +c +[ +i +]); + +24  + gok +; + +28 + gme + < +tyme + + gT +, +size_t + + gN1 +, size_ + gN2 +> + +29 +le + +bo + +cyAay +( +T + (& +c +)[ +N1 +][ +N2 +], +AayRef + +d +) { + +30 +bo + + gok + = +ue +; + +31  +size_t + + gi + = 0; i < + gN1 +; i++) { + +32 +AayRef + + gáedAay + = +d +. +NeedAay +(); + +33  +size_t + + gj + = 0; j < + gN2 +; j++) { + +34 + gok + & +áedAay +. +add +( +c +[ +i +][ +j +]); + +37  + gok +; + +41 + gme + < +tyme + + gT +, +size_t + + gN +> + +42 +le + +size_t + +cyAay +( +AayCڡRef + +c +, +T + (& +d +)[ +N +]) { + +43  +cyAay +( +c +, +d +, +N +); + +47 + gme + < +tyme + + gT +> + +48 +le + +size_t + +cyAay +( +AayCڡRef + +c +, +T +* +d +, size_ +n +) { + +49 +size_t + + gi + = 0; + +50  + gAayCڡRef +:: + + + + = +c +. +beg +(); + g + !c. +d +(&& +i + < +n +; + +51 ++ + g +) + +52 + gd +[ +i +++] = * + +; + +53  + gi +; + +57 + gme + < +tyme + + gT +, +size_t + + gN1 +, size_ + gN2 +> + +58 +le +  +cyAay +( +AayCڡRef + +c +, +T + (& +d +)[ +N1 +][ +N2 +]) { + +59 +size_t + + gi + = 0; + +60  + gAayCڡRef +:: + + + + = +c +. +beg +(); + g + !c. +d +(&& +i + < +N1 +; + +61 ++ + g +) { + +62 +cyAay +( + +-> +as +< +AayCڡRef +>(), +d +[ +i +++]); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 +ass + + gMemyPo +; + +15 +ass + + gVDa +; + +16 +ass + + gVSl +; + +18 as + cCiDa + { + +19 +VSl + * + g_hd +; + +20 +VSl + * + g_ +; + +22 + gpublic +: + +31 +VDa + * +addEmt +( +MemyPo + * +po +); + +33 +VDa + * +gEmt +( +size_t + +dex +) const; + +35 +VDa + * +gOrAddEmt +( +size_t + +dex +, +MemyPo + * +po +); + +37  +moveEmt +( +size_t + +dex +); + +39 +bo + +equsAay +(cڡ +CiDa + & +h +) const; + +43 + gme + < +tyme + + gTAddSg +> + +44 +VDa + * +addMemb +( +TAddSg + +key +, +MemyPo + * +po +); + +46 + gme + < +tyme + + gTAddSg +> + +47 +VDa + * +gMemb +( +TAddSg + +key +) const; + +49 + gme + < +tyme + + gTAddSg +> + +50 +VDa + * +gOrAddMemb +( +TAddSg + +key +, +MemyPo + * +po +); + +52 + gme + < +tyme + + gTAddSg +> + +53  +moveMemb +( +TAddSg + +key +) { + +54 +moveSl +( +gSl +( +key +)); + +57 + gme + < +tyme + + gTAddSg +> + +58 +bo + +cڏsKey +(cڡ +TAddSg + & +key +) const; + +60 +bo + +equsObje +(cڡ +CiDa + & +h +) const; + +64  +r +(); + +65 +size_t + +memyUge +() const; + +66 +size_t + +ág +() const; + +67 +size_t + +size +() const; + +69 +VSl + * +addSl +( +MemyPo + *); + +70  +moveSl +( +VSl + * + +); + +72 +bo + +cyFrom +(cڡ +CiDa + & +c +, +MemyPo + * +po +); + +74 +VSl + * +hd +() const { + +75  + g_hd +; + +78  +movePors +( +rdiff_t + +rgDi +,diff_ +vDi +); + +80 + give +: + +81 +VSl + * +gSl +( +size_t + +dex +) const; + +83 + gme + < +tyme + + gTAddSg +> + +84 +VSl + * +gSl +( +TAddSg + +key +) const; + +86 +VSl + * +gPviousSl +(VariantSlot *) const; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 +le + +VSl +* + gCiDa +:: +addSl +( +MemyPo +* +po +) { + +13 +VSl +* + + = +po +-> +locV +(); + +14 i(! + g +) + +17 i( + g_ +) { + +18 + g_ +-> +tNextNNu +( + +); + +19 + g_ + = + +; + +21 + g_hd + = + +; + +22 + g_ + = + +; + +25 + g +-> +r +(); + +26  + g +; + +29 +le + +VDa +* + gCiDa +:: +addEmt +( +MemyPo +* +po +) { + +30  +Da +( +addSl +( +po +)); + +33 + gme + < +tyme + + gTAddSg +> + +34 +le + +VDa +* + gCiDa +:: +addMemb +( +TAddSg + +key +, + +35 +MemyPo +* +po +) { + +36 +VSl +* + g + = +addSl +( +po +); + +37 i(! +SKey +( + +, +key +, +po +)) { + +38 +moveSl +( + +); + +41  + g +-> +da +(); + +44 +le +  + gCiDa +:: +r +() { + +45 +_hd + = 0; + +46 + g_ + = 0; + +49 + gme + < +tyme + + gTAddSg +> + +50 +le + +bo + + gCiDa +:: +cڏsKey +(cڡ +TAddSg +& +key +) const { + +51  +gSl +( +key +) != 0; + +54 +le + +bo + + gCiDa +:: +cyFrom +(cڡ +CiDa +& +c +, + +55 +MemyPo +* +po +) { + +56 +r +(); + +57  +VSl +* + gs + = +c +. +_hd +; s; s = +s +-> +xt +()) { + +58 +VDa +* +v +; + +59 i( + gs +-> +key +() != 0) { + +60 i( +s +-> +ownsKey +()) + +61 +v + = +addMemb +( +RamSgAdr +( +s +-> +key +()), +po +); + +63 + gv + = +addMemb +( +CڡRamSgAdr +( +s +-> +key +()), +po +); + +65 + gv + = +addEmt +( +po +); + +67 i(! + gv +) + +68  + gl +; + +69 i(! + gv +-> +cyFrom +(* +s +-> +da +(), +po +)) + +70  + gl +; + +72  + gue +; + +75 +le + +bo + + gCiDa +:: +equsObje +(cڡ +CiDa +& +h +) const { + +76 +size_t + +cou + = 0; + +77  +VSl +* + g + = +_hd +; sl; sl = + +-> +xt +()) { + +78 +VDa +* +v1 + = + +-> +da +(); + +79 +VDa +* + gv2 + = +h +. +gMemb +( +adtSg +( + +-> +key +())); + +80 i(! +vEqus +( +v1 +, +v2 +)) + +81  + gl +; + +82 + gcou +++; + +84  + gcou + = +h +. +size +(); + +87 +le + +bo + + gCiDa +:: +equsAay +(cڡ +CiDa +& +h +) const { + +88 +VSl +* +s1 + = +_hd +; + +89 +VSl +* + gs2 + = +h +. +_hd +; + +91 i( + gs1 + = +s2 +) + +92  +ue +; + +93 i(! + gs1 + || ! + gs2 +) + +94  + gl +; + +95 i(! +vEqus +( +s1 +-> +da +(), +s2 +->data())) + +96  + gl +; + +97 + gs1 + = +s1 +-> +xt +(); + +98 + gs2 + = +s2 +-> +xt +(); + +102 + gme + < +tyme + + gTAddSg +> + +103 +le + +VSl +* + gCiDa +:: +gSl +( +TAddSg + +key +) const { + +104 +VSl +* + + = +_hd +; + +105  + g +) { + +106 i( + gkey +. +equs +( + +-> +key +())) + +108 + g + = + +-> +xt +(); + +110  + g +; + +113 +le + +VSl +* + gCiDa +:: +gSl +( +size_t + +dex +) const { + +114  +_hd +-> +xt +( +dex +); + +117 +le + +VSl +* + gCiDa +:: +gPviousSl +(VSl* +rg +) const { + +118 +VSl +* +cut + = +_hd +; + +119  + gcut +) { + +120 +VSl +* + gxt + = +cut +-> +xt +(); + +121 i( + gxt + = +rg +) + +122  +cut +; + +123 + gcut + = +xt +; + +128 + gme + < +tyme + + gTAddSg +> + +129 +le + +VDa +* + gCiDa +:: +gMemb +( +TAddSg + +key +) const { + +130 +VSl +* + + = +gSl +( +key +); + +131  + g + ? sl-> +da +() : 0; + +134 + gme + < +tyme + + gTAddSg +> + +135 +le + +VDa +* + gCiDa +:: +gOrAddMemb +( +TAddSg + +key +, + +136 +MemyPo +* +po +) { + +138 i( + gkey +. +isNu +()) + +142 +VSl +* + g + = +gSl +( +key +); + +143 i( + g +) + +144  + g +-> +da +(); + +146  +addMemb +( +key +, +po +); + +149 +le + +VDa +* + gCiDa +:: +gEmt +( +size_t + +dex +) const { + +150 +VSl +* + + = +gSl +( +dex +); + +151  + g + ? sl-> +da +() : 0; + +154 +le + +VDa +* + gCiDa +:: +gOrAddEmt +( +size_t + +dex +, + +155 +MemyPo +* +po +) { + +156 +VSl +* + g + = +_hd +; + +157  + g + && + gdex + > 0) { + +158 + g + = + +-> +xt +(); + +159 + gdex +--; + +161 i(! + g +) + +162 + gdex +++; + +163  + gdex + > 0) { + +164 + g + = +addSl +( +po +); + +165 + gdex +--; + +167  +Da +( + +); + +170 +le +  + gCiDa +:: +moveSl +( +VSl +* + +) { + +171 i(! + +) + +173 +VSl +* + gev + = +gPviousSl +( + +); + +174 +VSl +* + gxt + = + +-> +xt +(); + +175 i( + gev +) + +176 + gev +-> +tNext +( +xt +); + +178 + g_hd + = +xt +; + +179 i(! + gxt +) + +180 + g_ + = +ev +; + +183 +le +  + gCiDa +:: +moveEmt +( +size_t + +dex +) { + +184 +moveSl +( +gSl +( +dex +)); + +187 +le + +size_t + + gCiDa +:: +memyUge +() const { + +188 +size_t + +tٮ + = 0; + +189  +VSl +* + gs + = +_hd +; s; s = +s +-> +xt +()) { + +190 +tٮ + +( +VSl ++ +s +-> +da +()-> +memyUge +(); + +191 i( + gs +-> +ownsKey +()) + +192 + gtٮ + + + +( +s +-> +key +()) + 1; + +194  + gtٮ +; + +197 +le + +size_t + + gCiDa +:: +ág +() const { + +198 +size_t + +maxChdNeg + = 0; + +199  +VSl +* + gs + = +_hd +; s; s = +s +-> +xt +()) { + +200 +size_t + +chdNeg + = +s +-> +da +()-> +ág +(); + +201 i( + gchdNeg + > + gmaxChdNeg +) + +202 + gmaxChdNeg + = +chdNeg +; + +204  + gmaxChdNeg + + 1; + +207 +le + +size_t + + gCiDa +:: +size +() const { + +208  +Size +( +_hd +); + +211 + gme + < +tyme + + gT +> + +212 +le +  +movePor +( +T +*& +p +, +rdiff_t + +offt +) { + +213 i(! + gp +) + +215 + gp + = +t_ +< +T +*>( + +216 +t_ +<*>et_<*>( +p ++ +offt +)); + +217 +ARDUINOJSON_ASSERT +( +isAligd +( +p +)); + +220 +le +  + gCiDa +:: +movePors +( +rdiff_t + +rgDi +, + +221 +rdiff_t + +vDi +) { + +222 +movePor +( +_hd +, +vDi +); + +223 +movePor +( +_ +, +vDi +); + +224  +VSl +* + g + = +_hd +; sl; sl = + +-> +xt +()) + +225 + +-> +movePors +( +rgDi +, +vDi +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Configuration.hpp + +5 #agm + + + +7 #i +defed +( +_MSC_VER +) + +8  + #ARDUINOJSON_HAS_INT64 + 1 + + ) + +10  + #ARDUINOJSON_HAS_INT64 + 0 + + ) + +13 #i +__lulus + >= 201103L + +14  + #ARDUINOJSON_HAS_LONG_LONG + 1 + + ) + +15  + #ARDUINOJSON_HAS_NULLPTR + 1 + + ) + +16  + #ARDUINOJSON_HAS_RVALUE_REFERENCES + 1 + + ) + +18  + #ARDUINOJSON_HAS_LONG_LONG + 0 + + ) + +19  + #ARDUINOJSON_HAS_NULLPTR + 0 + + ) + +20  + #ARDUINOJSON_HAS_RVALUE_REFERENCES + 0 + + ) + +24 #ide +ARDUINOJSON_EMBEDDED_MODE + + +25 #i +defed +( +ARDUINO +) \ + +26 || +defed +( +__IAR_SYSTEMS_ICC__ +) \ + +27 || +defed +( +__XC +) \ + +28 || +defed +( +__ARMCC_VERSION +) \ + +29 || + $defed +( +__AVR +) + +30  + #ARDUINOJSON_EMBEDDED_MODE + 1 + + ) + +32  + #ARDUINOJSON_EMBEDDED_MODE + 0 + + ) + +38 #i! + `defed +( +ARDUINOJSON_ENABLE_STD_STREAM +&& defed( +__has_ude +) + +39 #i + `__has_ude +(< +iam +>) && \ + +40 + `__has_ude +(< +oam +>) && \ + +41 ! + `defed +( +m +) && \ + +42 ! + $defed +( +max +) + +43  + #ARDUINOJSON_ENABLE_STD_STREAM + 1 + + ) + +45  + #ARDUINOJSON_ENABLE_STD_STREAM + 0 + + ) + +51 #i! + `defed +( +ARDUINOJSON_ENABLE_STD_STRING +&& defed( +__has_ude +) + +52 #i + `__has_ude +(< +rg +>&& ! + `defed +( +m +&& !defed( +max +) + +53  + #ARDUINOJSON_ENABLE_STD_STRING + 1 + + ) + +55  + #ARDUINOJSON_ENABLE_STD_STRING + 0 + + ) + +59 #i +ARDUINOJSON_EMBEDDED_MODE + + +62 #ide +ARDUINOJSON_USE_DOUBLE + + +63  + #ARDUINOJSON_USE_DOUBLE + 0 + + ) + +67 #ide +ARDUINOJSON_USE_LONG_LONG + + +68  + #ARDUINOJSON_USE_LONG_LONG + 0 + + ) + +72 #ide +ARDUINOJSON_ENABLE_STD_STRING + + +73  + #ARDUINOJSON_ENABLE_STD_STRING + 0 + + ) + +77 #ide +ARDUINOJSON_ENABLE_STD_STREAM + + +78  + #ARDUINOJSON_ENABLE_STD_STREAM + 0 + + ) + +82 #ide +ARDUINOJSON_DEFAULT_NESTING_LIMIT + + +83  + #ARDUINOJSON_DEFAULT_NESTING_LIMIT + 10 + + ) + +89 #ide +ARDUINOJSON_USE_DOUBLE + + +90  + #ARDUINOJSON_USE_DOUBLE + 1 + + ) + +94 #ide +ARDUINOJSON_USE_LONG_LONG + + +95 #i +ARDUINOJSON_HAS_LONG_LONG + || +ARDUINOJSON_HAS_INT64 + + +96  + #ARDUINOJSON_USE_LONG_LONG + 1 + + ) + +98  + #ARDUINOJSON_USE_LONG_LONG + 0 + + ) + +103 #ide +ARDUINOJSON_ENABLE_STD_STRING + + +104  + #ARDUINOJSON_ENABLE_STD_STRING + 1 + + ) + +108 #ide +ARDUINOJSON_ENABLE_STD_STREAM + + +109  + #ARDUINOJSON_ENABLE_STD_STREAM + 1 + + ) + +113 #ide +ARDUINOJSON_DEFAULT_NESTING_LIMIT + + +114  + #ARDUINOJSON_DEFAULT_NESTING_LIMIT + 50 + + ) + +119 #ifde +ARDUINO + + +121  + ~ + +124 #ide +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +125  + #ARDUINOJSON_ENABLE_ARDUINO_STRING + 1 + + ) + +129 #ide +ARDUINOJSON_ENABLE_ARDUINO_STREAM + + +130  + #ARDUINOJSON_ENABLE_ARDUINO_STREAM + 1 + + ) + +134 #ide +ARDUINOJSON_ENABLE_ARDUINO_PRINT + + +135  + #ARDUINOJSON_ENABLE_ARDUINO_PRINT + 1 + + ) + +141 #ide +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +142  + #ARDUINOJSON_ENABLE_ARDUINO_STRING + 0 + + ) + +146 #ide +ARDUINOJSON_ENABLE_ARDUINO_STREAM + + +147  + #ARDUINOJSON_ENABLE_ARDUINO_STREAM + 0 + + ) + +151 #ide +ARDUINOJSON_ENABLE_ARDUINO_PRINT + + +152  + #ARDUINOJSON_ENABLE_ARDUINO_PRINT + 0 + + ) + +157 #ide +ARDUINOJSON_ENABLE_PROGMEM + + +158 #ifde +PROGMEM + + +159  + #ARDUINOJSON_ENABLE_PROGMEM + 1 + + ) + +161  + #ARDUINOJSON_ENABLE_PROGMEM + 0 + + ) + +166 #ide +ARDUINOJSON_DECODE_UNICODE + + +167  + #ARDUINOJSON_DECODE_UNICODE + 0 + + ) + +171 #ide +ARDUINOJSON_ENABLE_COMMENTS + + +172  + #ARDUINOJSON_ENABLE_COMMENTS + 0 + + ) + +176 #ide +ARDUINOJSON_ENABLE_NAN + + +177  + #ARDUINOJSON_ENABLE_NAN + 0 + + ) + +181 #ide +ARDUINOJSON_ENABLE_INFINITY + + +182  + #ARDUINOJSON_ENABLE_INFINITY + 0 + + ) + +187 #ide +ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD + + +188  + #ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD + 1e7 + + ) + +192 #ide +ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD + + +193  + #ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD + 1e-5 + + ) + +196 #ide +ARDUINOJSON_LITTLE_ENDIAN + + +197 #i + `defed +( +_MSC_VER +) || \ + +198 ( + `defed +( +__BYTE_ORDER__ +&& __BYTE_ORDER__ = +__ORDER_LITTLE_ENDIAN__ +) || \ + +199 + `defed +( +__LITTLE_ENDIAN__ +|| defed( +__i386 +|| + $defed +( +__x86_64 +) + +200  + #ARDUINOJSON_LITTLE_ENDIAN + 1 + + ) + +202  + #ARDUINOJSON_LITTLE_ENDIAN + 0 + + ) + +206 #ide +ARDUINOJSON_TAB + + +207  + #ARDUINOJSON_TAB + " " + + ) + +210 #ide +ARDUINOJSON_STRING_BUFFER_SIZE + + +211  + #ARDUINOJSON_STRING_BUFFER_SIZE + 32 + + ) + +214 #ide +ARDUINOJSON_DEBUG + + +215 #ifde +__PLATFORMIO_BUILD_DEBUG__ + + +216  + #ARDUINOJSON_DEBUG + 1 + + ) + +218  + #ARDUINOJSON_DEBUG + 0 + + ) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp + +5 #agm + + + +7  + ~ + +9 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +10  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 as + cDerliziE + { + +17 ( + gDerliziE +::* + tbo_ty +)() const; + +18  +BoHr +() const {} + +20 + gpublic +: + +21 + eCode + { + +22 +Ok +, + +23 + gIncomeIut +, + +24 + gInvidIut +, + +25 + gNoMemy +, + +26 + gNSu܋d +, + +27 + gTooDp + + +30 +DerliziE +() {} + +31 +DerliziE +( +Code + +c +: +_code +(c) {} + +34 +nd + +bo + +ݔ +==(cڡ +DerliziE +& +lhs +, + +35 cڡ + gDerliziE +& + grhs +) { + +36  + glhs +. + g_code + = +rhs +. +_code +; + +38 +nd + +bo + + gݔ +!=(cڡ +DerliziE +& +lhs +, + +39 cڡ + gDerliziE +& + grhs +) { + +40  + glhs +. + g_code + ! +rhs +. +_code +; + +44 +nd + +bo + + gݔ +==(cڡ +DerliziE +& +lhs +, +Code + + grhs +) { + +45  + glhs +. + g_code + = +rhs +; + +47 +nd + +bo + + gݔ +==( +Code + +lhs +, cڡ + gDerliziE +& + grhs +) { + +48  + glhs + = +rhs +. +_code +; + +50 +nd + +bo + + gݔ +!=(cڡ +DerliziE +& +lhs +, +Code + + grhs +) { + +51  + glhs +. + g_code + ! +rhs +; + +53 +nd + +bo + + gݔ +!=( +Code + +lhs +, cڡ + gDerliziE +& + grhs +) { + +54  + glhs + ! +rhs +. +_code +; + +58 +ݔ + +bo_ty +() const { + +59  + g_code + ! +Ok + ? & +DerliziE +:: +BoHr + : 0; + +61 +nd + +bo + + gݔ +==(bo +vue +, cڡ + gDerliziE +& + gr +) { + +62  + gic_ +< + gbo +>( + gr += +vue +; + +64 +nd + +bo + + gݔ +==(cڡ +DerliziE +& +r +, bo + gvue +) { + +65  + gic_ +< + gbo +>( + gr += +vue +; + +67 +nd + +bo + + gݔ +!=(bo +vue +, cڡ + gDerliziE +& + gr +) { + +68  + gic_ +< + gbo +>( + gr +! +vue +; + +70 +nd + +bo + + gݔ +!=(cڡ +DerliziE +& +r +, bo + gvue +) { + +71  + gic_ +< + gbo +>( + gr +! +vue +; + +75 +Code + +code +() const { + +76  + g_code +; + +79 cڡ * +c_r +() const { + +80  + g_code +) { + +81  + gOk +: + +83  + gTooDp +: + +85  + gNoMemy +: + +87  + gInvidIut +: + +89  + gIncomeIut +: + +91  + gNSu܋d +: + +98 + give +: + +99 +Code + +_code +; + +102 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +103 +le + + gd +:: +oam +& +ݔ +<<( +d +::oam& +s +, + +104 cڡ + gDerliziE +& + ge +) { + +105 + gs + << + ge +. +c_r +(); + +106  + gs +; + +109 +le + + gd +:: +oam +& +ݔ +<<( +d +::oam& +s +, + gDerliziE +:: +Code + +c +) { + +110 +s + << +DerliziE +( +c +). +c_r +(); + +111  + gs +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cFr + { + +12 + gpublic +: + +13 +exic + +Fr +( +VCڡRef + +v +: +_v +(v) {} + +15 +bo + +low +() const { + +16  +_v +; + +19 +bo + +lowAay +() const { + +20  + g_v + = +ue + || +_v +. +is +< +AayRef +>(); + +23 +bo + +lowObje +() const { + +24  + g_v + = +ue + || +_v +. +is +< +ObjeRef +>(); + +27 +bo + +lowVue +() const { + +28  + g_v + = +ue +; + +31 + gme + < +tyme + + gTKey +> + +32 +Fr + + gݔ +[](cڡ + gTKey +& + gkey +) const { + +33 i( + g_v + = +ue +) + +34  * +this +; + +36  +Fr +( +_v +[ +key +]); + +39 + give +: + +40 +VCڡRef + +_v +; + +43  + sAowAFr + { + +44 +bo + +low +() const { + +45  + gue +; + +48 +bo + +lowAay +() const { + +49  + gue +; + +52 +bo + +lowObje +() const { + +53  + gue +; + +56 +bo + +lowVue +() const { + +57  + gue +; + +60 + gme + < +tyme + + gTKey +> + +61 +AowAFr + + gݔ +[](cڡ + gTKey +&) const { + +62  +AowAFr +(); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cNegLim + { + +13 + gpublic +: + +14 +NegLim +(: +_vue +( +ARDUINOJSON_DEFAULT_NESTING_LIMIT +) {} + +15 +exic + +NegLim +( +ut8_t + +n +: +_vue +(n) {} + +17 +NegLim + +deemt +() const { + +18 +ARDUINOJSON_ASSERT +( +_vue + > 0); + +19  +NegLim +( +ic_ +< +ut8_t +>( +_vue + - 1)); + +22 +bo + +ached +() const { + +23  + g_vue + == 0; + +26 + give +: + +27 +ut8_t + +_vue +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +tyme + + gTSour +,ym + gEb + = > + +15  + sRd + { + +16 +public +: + +17 +Rd +( +TSour +& +sour +: +_sour +(&source) {} + +19  +ad +() { + +20  +_sour +-> +ad +(); + +23 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +24  + g_sour +-> +adBys +( +bufr +, +ngth +); + +27 + give +: + +28 +TSour +* +_sour +; + +31 + gme + < +tyme + + gTSour +,ym + gEb + = > + +32  + sBoundedRd + { + +38  + ~ + +39  + ~ + +41 #i +ARDUINOJSON_ENABLE_ARDUINO_STREAM + + +42  + ~ + +45 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +46  + ~ + +49 #i +ARDUINOJSON_ENABLE_PROGMEM + + +50  + ~ + +53 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +54  + ~ + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTSour +> + +12  + gRd +< + gTSour +, + +13 +tyme + + gab_if +< + gis_ba_of +< + gSm +, + gTSour +>:: +vue +>:: +ty +> { + +14 +public +: + +15 +exic + +Rd +( +Sm +& +am +: +_am +(&stream) {} + +17  +ad +() { + +19  +c +; + +20  + g_am +-> +adBys +(& +c +, 1? + gic_ +<>( + gc +) : -1; + +23 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +24  + g_am +-> +adBys +( +bufr +, +ngth +); + +27 + give +: + +28 +Sm +* +_am +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + < +tyme + + gTSour +> + +10  + gRd +< + gTSour +, + +11 +tyme + + gab_if +< + gis_ba_of +< :: +Sg +, + gTSour +>:: +vue +>:: +ty +> + +12 : +BoundedRd + { + +13 +exic + +Rd +(cڡ :: +Sg +& +s +) + +14 : +BoundedRd +( +s +. +c_r +(), + gs +. +ngth +()) {} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + <> + +10  + gRd + { + +11 cڡ * + g_r +; + +13 + gpublic +: + +14 +exic + +Rd +(cڡ +__FshSgHr +* +r +) + +15 : +_r +( +t_ +( +r +)) {} + +17  +ad +() { + +18  +pgm_ad_by +( +_r +++); + +21 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +22 +memy_P +( +bufr +, +_r +, +ngth +); + +23 + g_r + + +ngth +; + +24  + gngth +; + +28 + gme + <> + +29  + gBoundedRd + { + +30 cڡ * + g_r +; + +31 cڡ * + g_d +; + +33 + gpublic +: + +34 +exic + +BoundedRd +(cڡ +__FshSgHr +* +r +, +size_t + +size +) + +35 : +_r +( +t_ +( +r +)), +_d +(_+ +size +) {} + +37  +ad +() { + +38 i( + g_r + < + g_d +) + +39  +pgm_ad_by +( +_r +++); + +44 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +45 +size_t + + gavaab + = +ic_ +( +_d + - +_r +); + +46 i( + gavaab + < + gngth +) + +47 + gngth + = +avaab +; + +48 +memy_P +( +bufr +, +_r +, +ngth +); + +49 + g_r + + +ngth +; + +50  + gngth +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + < +tyme + + gTIt +> + +10 as + cItRd + { + +11 +TIt + + g_r +, + g_d +; + +13 + gpublic +: + +14 +exic + +ItRd +( +TIt + +beg +, TIt +d +) + +15 : +_r +( +beg +), +_d +( +d +) {} + +17  +ad +() { + +18 i( + g_r + < + g_d +) + +19  + gic_ +<>(* + g_r +++); + +24 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +25 +size_t + + gi + = 0; + +26  + gi + < + gngth + && + g_r + < + g_d + + gbufr +[ +i +++] = * +_r +++; + +27  + gi +; + +31 + gme + < +tyme + + gT +> + +32  + svoid_ + { + +33  + tty +; + +36 + gme + < +tyme + + gTSour +> + +37  + gRd +< + gTSour +, +tyme + + gvoid_ +:: +ty +> + +38 : +ItRd +< +tyme + +TSour +:: +cڡ_ +> { + +39 +exic + +Rd +(cڡ +TSour +& +sour +) + +40 : +ItRd +< +tyme + +TSour +:: +cڡ_ +>( +sour +. +beg +(), + +41 + gsour +. +d +()) {} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12  + sIsChOrVoid + { + +13 cڡ +bo + + gvue + = + +14 +is_me +< +T +, >:: +vue + || is_same::value || + +15 +is_me +< +T +, >:: +vue + || is_same::value; + +18 + gme + < +tyme + + gT +> + +19  + gIsChOrVoid + : +IsChOrVoid +< +T +> {}; + +21 + gme + < +tyme + + gTSour +> + +22  + gRd +< + gTSour +*, + +23 +tyme + + gab_if +< + gIsChOrVoid +< + gTSour +>:: +vue +>:: +ty +> { + +24 cڡ * +_r +; + +26 + gpublic +: + +27 +exic + +Rd +(cڡ * +r +) + +28 : +_r +( +r + ? +t_ +(ptr) : "") {} + +30  +ad +() { + +31  +ic_ +<>(* +_r +++); + +34 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +35  +size_t + + gi + = 0; i < + gngth +; i++ + gbufr +[ +i +] = * +_r +++; + +36  + gngth +; + +40 + gme + < +tyme + + gTSour +> + +41  + gBoundedRd +< + gTSour +*, + +42 +tyme + + gab_if +< + gIsChOrVoid +< + gTSour +>:: +vue +>:: +ty +> + +43 : +public + +ItRd + { + +44 +public +: + +45 +exic + +BoundedRd +(cڡ * +r +, +size_t + +n +) + +46 : +ItRd +( +t_ +( +r +), + +47 + gt_ +( + gr ++ + gn +) {} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTSour +> + +12  + gRd +< + gTSour +, +tyme + + gab_if +< + +13 + gis_ba_of +< + gd +:: +iam +, + gTSour +>:: +vue +>:: +ty +> { + +14 +public +: + +15 +exic + +Rd +( +d +:: +iam +& +am +: +_am +(&stream) {} + +17  +ad +() { + +18  +_am +-> +g +(); + +21 +size_t + +adBys +(* +bufr +, size_ +ngth +) { + +22 + g_am +-> +ad +( +bufr +, +ic_ +< +d +:: +amsize +>( +ngth +)); + +23  + gic_ +< + gsize_t +>( + g_am +-> +gcou +()); + +26 + give +: + +27 +d +:: +iam +* +_am +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + +ass + + gTDerliz +, +tyme + + gTRd +, + +16 +tyme + + gTWr +> + +17 + gTDerliz +< + gTRd +, + gTWr +> +makeDerliz +( +MemyPo + & +po +, + +18 +TRd + +ad +, + +19 +TWr + +wr +) { + +20  + gTDerliz +< + gTRd +, + gTWr +>( + gpo +, + gad +, + gwr +); + +28 + gme + +ass + + gTDerliz +, +tyme + + gTSg +, + +29 +tyme + + gTFr +> + +30 +tyme + + gab_if +:: +vue +, + gDerliziE +>:: +ty + + +31 +derlize +( +JsDocumt + & +doc +, cڡ +TSg + & +put +, +NegLim + +ágLim +, + +32 +TFr + +fr +) { + +33 + gRd +< + gTSg +> +ad +( +put +); + +34 + gdoc +. +r +(); + +35  + gmakeDerliz +< + gTDerliz +>( + +36 + gdoc +. +memyPo +(), + gad +, + +37 +makeSgStage +( +doc +. +memyPo +(), +put +)) + +38 . +r +( +doc +. +da +(), +fr +, +ágLim +); + +44 + gme + +ass + + gTDerliz +, +tyme + + gTCh +, + +45 +tyme + + gTFr +> + +46 +DerliziE + +derlize +( +JsDocumt + & +doc +, +TCh + * +put +, + +47 +size_t + +putSize +, +NegLim + +ágLim +, + +48 +TFr + +fr +) { + +49 + gBoundedRd +< + gTCh + *> +ad +( +put +, +putSize +); + +50 + gdoc +. +r +(); + +51  + gmakeDerliz +< + gTDerliz +>( + +52 + gdoc +. +memyPo +(), + gad +, + +53 +makeSgStage +( +doc +. +memyPo +(), +put +)) + +54 . +r +( +doc +. +da +(), +fr +, +ágLim +); + +59 + gme + +ass + + gTDerliz +, +tyme + + gTSm +, + +60 +tyme + + gTFr +> + +61 +DerliziE + +derlize +( +JsDocumt + & +doc +, +TSm + & +put +, + +62 +NegLim + +ágLim +, +TFr + +fr +) { + +63 + gRd +< + gTSm +> +ad +( +put +); + +64 + gdoc +. +r +(); + +65  + gmakeDerliz +< + gTDerliz +>( + +66 + gdoc +. +memyPo +(), + gad +, + +67 +makeSgStage +( +doc +. +memyPo +(), +put +)) + +68 . +r +( +doc +. +da +(), +fr +, +ágLim +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gTAot +> + +14 as + cAotOwr + { + +15 + gpublic +: + +16 +AotOwr +() {} + +17 +AotOwr +(cڡ AotOwr& +c +: +_lot +(src._allocator) {} + +18 +AotOwr +( +TAot + +a +: +_lot +(a) {} + +20 * +lo +( +size_t + +size +) { + +21  +_lot +. +lo +( +size +); + +24  +do +(* +r +) { + +25 i( + gr +) + +26 + g_lot +. +do +( +r +); + +29 * +lo +(* +r +, +size_t + +w_size +) { + +30  + g_lot +. +lo +( +r +, +w_size +); + +33 + gTAot +& +lot +() { + +34  + g_lot +; + +37 + give +: + +38 +TAot + +_lot +; + +41 + gme + < +tyme + + gTAot +> + +42 +ass + + gBasicJsDocumt + : +AotOwr +< +TAot +>, +public + + gJsDocumt + { + +43 + gpublic +: + +44 +exic + +BasicJsDocumt +( +size_t + + +, +TAot + +loc + = TAllocator()) + +45 : +AotOwr +< +TAot +>( +loc +), +JsDocumt +( +locPo +( + +)) {} + +48 +BasicJsDocumt +(cڡ BasicJsDocumt& +c +) + +49 : +AotOwr +< +TAot +>( +c +), +JsDocumt +() { + +50 +cyAssignFrom +( +c +); + +54 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +55 +BasicJsDocumt +(BasicJsDocumt&& +c +: +AotOwr +< +TAot +>(src) { + +56 +moveAssignFrom +( +c +); + +60 +BasicJsDocumt +(cڡ +JsDocumt +& +c +) { + +61 +cyAssignFrom +( +c +); + +65 + gme + < +tyme + + gT +> + +66 +BasicJsDocumt +( + +67 cڡ +T +& +c +, + +68 +tyme + +ab_if +< + +69 +is_me +< +T +, +VRef +>:: +vue + || is_me::value || + +70 +is_me +< +T +, +AayRef +>:: +vue + || is_me::value || + +71 +is_me +< +T +, +ObjeRef +>:: +vue + || + +72 +is_me +< +T +, +ObjeCڡRef +>:: +vue +>:: +ty +* = 0) + +73 : +JsDocumt +( +locPo +( +c +. +memyUge +())) { + +74 +t +( +c +); + +78 +BasicJsDocumt +( +VRef + +c +) + +79 : +JsDocumt +( +locPo +( +c +. +memyUge +())) { + +80 +t +( +c +); + +83 ~ +BasicJsDocumt +() { + +84 +Po +(); + +87 + gBasicJsDocumt +& + gݔ +=(cڡ +BasicJsDocumt +& +c +) { + +88 +cyAssignFrom +( +c +); + +89  * + gthis +; + +92 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +93 + gBasicJsDocumt +& + gݔ +=( +BasicJsDocumt +&& +c +) { + +94 +moveAssignFrom +( +c +); + +95  * + gthis +; + +99 + gme + < +tyme + + gT +> + +100 + gBasicJsDocumt +& + gݔ +=(cڡ +T +& +c +) { + +101 +locPoIfTooSml +( +c +. +memyUge +()); + +102 +t +( +c +); + +103  * + gthis +; + +106  +shrkToF +() { + +107 +rdiff_t + + gbys_aimed + = +_po +. +squash +(); + +108 i( + gbys_aimed + == 0) + +111 * + gd_r + = +_po +. +bufr +(); + +112 * + gw_r + = +this +-> +lo +( +d_r +, +_po +. +cy +()); + +114 +rdiff_t + + gr_offt + = + +115 +ic_ +<*>( +w_r +- stic_<*>( +d_r +); + +117 + g_po +. +movePors +( +r_offt +); + +118 + g_da +. +movePors +( +r_offt +,_off- +bys_aimed +); + +121 +bo + +gbageC +() { + +123 +BasicJsDocumt + +tmp +(* +this +); + +124 i(! + gtmp +. +cy +()) + +125  + gl +; + +126 + gtmp +. +t +(* +this +); + +127 +moveAssignFrom +( +tmp +); + +128  + gue +; + +131 +usg + + gAotOwr +< + gTAot +>:: +lot +; + +133 + give +: + +134 +MemyPo + +locPo +( +size_t + +quedSize +) { + +135 +size_t + + + = +addPaddg +( +quedSize +); + +136  +MemyPo +( +t_ +<*>( +this +-> +lo +( + +)), capa); + +139  +locPoIfTooSml +( +size_t + +quedSize +) { + +140 i( + gquedSize + < +cy +()) + +142 +Po +(); + +143 +aPo +( +locPo +( +addPaddg +( +quedSize +))); + +146  +Po +() { + +147 + gthis +-> +do +( +memyPo +(). +bufr +()); + +150  +cyAssignFrom +(cڡ +JsDocumt +& +c +) { + +151 +locPoIfTooSml +( +c +. +cy +()); + +152 +t +( +c +); + +155  +moveAssignFrom +( +BasicJsDocumt +& +c +) { + +156 +Po +(); + +157 + g_da + = +c +. +_da +; + +158 + g_po + = +c +. +_po +; + +159 + gc +. + g_da +. +tNu +(); + +160 + gc +. + g_po + = +MemyPo +(0, 0); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13  + sDeuAot + { + +14 * +lo +( +size_t + +size +) { + +15  +mloc +( +size +); + +18  +do +(* +r +) { + +19 + +( +r +); + +22 * +lo +(* +r +, +size_t + +w_size +) { + +23  +loc +( +r +, +w_size +); + +27  + gBasicJsDocumt +< + tDeuAot +> + tDymicJsDocumt +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 as + cJsDocumt + : +public + +Visab + { + +17 +public +: + +18 +me + < +tyme + +Vis +> + +19  +ac +( +Vis +& +vis +) const { + +20  +gV +(). +ac +( +vis +); + +23 + gme + < +tyme + + gT +> + +24 +tyme + + gVAs +< + gT +>:: +ty + +as +() { + +25  +gV +(). +me + +as +< +T +>(); + +28 + gme + < +tyme + + gT +> + +29 +tyme + + gVCڡAs +< + gT +>:: +ty + +as +() const { + +30  +gV +(). +me + +as +< +T +>(); + +33  +r +() { + +34 + g_po +. +r +(); + +35 + g_da +. +tNu +(); + +38 + gme + < +tyme + + gT +> + +39 +bo + +is +() const { + +40  +gV +(). +me + + gis +< + gT +>(); + +43 +bo + +isNu +() const { + +44  +gV +(). +isNu +(); + +47 +size_t + +memyUge +() const { + +48  + g_po +. +size +(); + +51 +size_t + +ág +() const { + +52  + g_da +. +ág +(); + +55 +size_t + +cy +() const { + +56  + g_po +. +cy +(); + +59 +size_t + +size +() const { + +60  + g_da +. +size +(); + +63 +bo + +t +(cڡ +JsDocumt +& +c +) { + +64  + gto +< + gVRef +>(). +t +( +c +. +as +< +VRef +>()); + +67 + gme + < +tyme + + gT +> + +68 +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +t +( + +69 cڡ +T +& +c +) { + +70  +to +< +VRef +>(). +t +( +c +); + +73 + gme + < +tyme + + gT +> + +74 +tyme + + gVTo +< + gT +>:: +ty + +to +() { + +75 +r +(); + +76  +gV +(). +me + + gto +< + gT +>(); + +80 + gMemyPo +& +memyPo +() { + +81  + g_po +; + +84 + gVDa +& +da +() { + +85  + g_da +; + +88 +AayRef + +NeedAay +() { + +89  +addEmt +(). + gto +< + gAayRef +>(); + +95 + gme + < +tyme + + gTCh +> + +96 +AayRef + +NeedAay +( +TCh +* +key +) { + +97  +gOrAddMemb +( +key +). +me + + gto +< + gAayRef +>(); + +102 + gme + < +tyme + + gTSg +> + +103 +AayRef + +NeedAay +(cڡ +TSg +& +key +) { + +104  +gOrAddMemb +( +key +). +me + + gto +< + gAayRef +>(); + +107 +ObjeRef + +NeedObje +() { + +108  +addEmt +(). + gto +< + gObjeRef +>(); + +114 + gme + < +tyme + + gTCh +> + +115 +ObjeRef + +NeedObje +( +TCh +* +key +) { + +116  +gOrAddMemb +( +key +). +me + + gto +< + gObjeRef +>(); + +121 + gme + < +tyme + + gTSg +> + +122 +ObjeRef + +NeedObje +(cڡ +TSg +& +key +) { + +123  +gOrAddMemb +( +key +). +me + + gto +< + gObjeRef +>(); + +129 + gme + < +tyme + + gTCh +> + +130 +bo + +cڏsKey +( +TCh +* +key +) const { + +131  ! +gMemb +( +key +). +isUndefed +(); + +136 + gme + < +tyme + + gTSg +> + +137 +bo + +cڏsKey +(cڡ +TSg +& +key +) const { + +138  ! +gMemb +( +key +). +isUndefed +(); + +143 + gme + < +tyme + + gTSg +> + +144 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + +145 + gMembProxy +< + gJsDocumt +&, + gTSg +> >:: +ty + + +146 +ݔ +[](cڡ +TSg +& +key +) { + +147  +MembProxy +< +JsDocumt +&, + gTSg +>(* + gthis +, + gkey +); + +153 + gme + < +tyme + + gTCh +> + +154 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + +155 + gMembProxy +< + gJsDocumt +&, + gTCh +*> >:: +ty + + +156 +ݔ +[]( +TCh +* +key +) { + +157  +MembProxy +< +JsDocumt +&, + gTCh +*>(* + gthis +, + gkey +); + +162 + gme + < +tyme + + gTSg +> + +163 +FORCE_INLINE + + +164 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +165 +ݔ +[](cڡ +TSg +& +key +) const { + +166  +gMemb +( +key +); + +172 + gme + < +tyme + + gTCh +> + +173 +FORCE_INLINE + + +174 +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + gVCڡRef +>:: +ty + + +175 +ݔ +[]( +TCh +* +key +) const { + +176  +gMemb +( +key +); + +179 +FORCE_INLINE + + gEmtProxy +< + gJsDocumt +&> + gݔ +[]( +size_t + + gdex +) { + +180  + gEmtProxy +< + gJsDocumt +&>(* + gthis +, + gdex +); + +183 +FORCE_INLINE + +VCڡRef + + gݔ +[]( +size_t + + gdex +) const { + +184  +gEmt +( +dex +); + +187 +FORCE_INLINE + +VRef + +gEmt +( +size_t + +dex +) { + +188  +VRef +(& +_po +, +_da +. +gEmt +( +dex +)); + +191 +FORCE_INLINE + +VCڡRef + +gEmt +( +size_t + +dex +) const { + +192  +VCڡRef +( +_da +. +gEmt +( +dex +)); + +195 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t + +dex +) { + +196  +VRef +(& +_po +, +_da +. +gOrAddEmt +( +dex +, &_pool)); + +202 + gme + < +tyme + + gTCh +> + +203 +FORCE_INLINE + +VCڡRef + +gMemb +( +TCh +* +key +) const { + +204  +VCڡRef +( +_da +. +gMemb +( +adtSg +( +key +))); + +209 + gme + < +tyme + + gTSg +> + +210 +FORCE_INLINE + + +211 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +212 +gMemb +(cڡ +TSg +& +key +) const { + +213  +VCڡRef +( +_da +. +gMemb +( +adtSg +( +key +))); + +219 + gme + < +tyme + + gTCh +> + +220 +FORCE_INLINE + +VRef + +gMemb +( +TCh +* +key +) { + +221  +VRef +(& +_po +, +_da +. +gMemb +( +adtSg +( +key +))); + +226 + gme + < +tyme + + gTSg +> + +227 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVRef +>:: +ty + + +228 +gMemb +(cڡ +TSg +& +key +) { + +229  +VRef +(& +_po +, +_da +. +gMemb +( +adtSg +( +key +))); + +235 + gme + < +tyme + + gTCh +> + +236 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh +* +key +) { + +237  +VRef +(& +_po +, +_da +. +gOrAddMemb +( +adtSg +( +key +), &_pool)); + +242 + gme + < +tyme + + gTSg +> + +243 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg +& +key +) { + +244  +VRef +(& +_po +, +_da +. +gOrAddMemb +( +adtSg +( +key +), &_pool)); + +247 +FORCE_INLINE + +VRef + +addEmt +() { + +248  +VRef +(& +_po +, +_da +. +addEmt +(&_pool)); + +251 + gme + < +tyme + + gTVue +> + +252 +FORCE_INLINE + +bo + +add +(cڡ +TVue +& +vue +) { + +253  +addEmt +(). +t +( +vue +); + +259 + gme + < +tyme + + gTCh +> + +260 +FORCE_INLINE + +bo + +add +( +TCh +* +vue +) { + +261  +addEmt +(). +t +( +vue +); + +264 +FORCE_INLINE +  +move +( +size_t + +dex +) { + +265 + g_da +. +move +( +dex +); + +270 + gme + < +tyme + + gTCh +> + +271 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +>:: +ty + +move +( + +272 +TCh +* +key +) { + +273 +_da +. +move +( +adtSg +( +key +)); + +277 + gme + < +tyme + + gTSg +> + +278 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +279 cڡ +TSg +& +key +) { + +280 +_da +. +move +( +adtSg +( +key +)); + +283 +FORCE_INLINE + +ݔ + +VCڡRef +() const { + +284  +VCڡRef +(& +_da +); + +287 +bo + + gݔ +==( +VCڡRef + +rhs +) const { + +288  +gV +(= +rhs +; + +291 +bo + + gݔ +!=( +VCڡRef + +rhs +) const { + +292  +gV +(! +rhs +; + +295 + geed +: + +296 +JsDocumt +(: +_po +(0, 0) { + +297 + g_da +. +tNu +(); + +300 +JsDocumt +( +MemyPo + +po +: +_po +(pool) { + +301 +_da +. +tNu +(); + +304 +JsDocumt +(* +buf +, +size_t + + +: +_po +(buf, capa) { + +305 + g_da +. +tNu +(); + +308  +aPo +( +MemyPo + +po +) { + +309 + g_po + = +po +; + +312 +VRef + +gV +() { + +313  +VRef +(& +_po +, & +_da +); + +316 +VCڡRef + +gV +() const { + +317  +VCڡRef +(& +_da +); + +320 +MemyPo + + g_po +; + +321 +VDa + + g_da +; + +323 + give +: + +324 +JsDocumt +(const JsonDocument&); + +325 + gJsDocumt +& + gݔ +=(cڡ +JsDocumt +&); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +size_t + + gdesedCacy +> + +12 as + cSticJsDocumt + : +public + +JsDocumt + { + +13 cڡ +size_t + +_cy + = + +14 +AddPaddg +< +Max +<1, + gdesedCacy +>:: +vue +>::value; + +16 + gpublic +: + +17 +SticJsDocumt +(: +JsDocumt +( +_bufr +, +_cy +) {} + +19 +SticJsDocumt +(cڡ SticJsDocumt& +c +) + +20 : +JsDocumt +( +_bufr +, +_cy +) { + +21 +t +( +c +); + +24 + gme + < +tyme + + gT +> + +25 +SticJsDocumt +(cڡ +T +& +c +, + +26 +tyme + +ab_if +< +IsVisab +< +T +>:: +vue +>:: +ty +* = 0) + +27 : +JsDocumt +( +_bufr +, +_cy +) { + +28 +t +( +c +); + +32 +SticJsDocumt +( +VRef + +c +: +JsDocumt +( +_bufr +, +_cy +) { + +33 +t +( +c +); + +36 +SticJsDocumt + + gݔ +=(cڡ SticJsDocumt& +c +) { + +37 +t +( +c +); + +38  * + gthis +; + +41 + gme + < +tyme + + gT +> + +42 +SticJsDocumt + + gݔ +=(cڡ +T +& +c +) { + +43 +t +( +c +); + +44  * + gthis +; + +47  +gbageC +() { + +48 +SticJsDocumt + +tmp +(* +this +); + +49 +t +( +tmp +); + +52 + give +: + +53  +_bufr +[ +_cy +]; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cEsSequ + { + +12 + gpublic +: + +14  +esCh +( +c +) { + +15 cڡ * +p + = +esTab +( +ue +); + +16  + gp +[0] &&[1] ! +c +) { + +17 +p + += 2; + +19  + gp +[0]; + +23  +usCh +( +c +) { + +24 cڡ * + gp + = +esTab +( +l +); + +26 i( + gp +[0] == '\0') + +28 i( + gp +[0] = +c +) + +29  +p +[1]; + +30 + gp + += 2; + +34 + give +: + +35 cڡ * +esTab +( +bo + +exudeSidus +) { + +36  &"//\"\"\\\\b\bf\\\\t"[ +exudeSidus + ? 2 : 0]; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +18 +mea + + gARDUINOJSON_NAMESPACE + { + +20 + gme + < +tyme + + gTRd +,ym + gTSgStage +> + +21 as + cJsDerliz + { + +22  +tyme + + tmove_n +< + tTSgStage +>:: + tty +:: + tSgBud + + +23 + tSgBud +; + +25  + sSgOrE + { + +26 +DerliziE + + gr +; + +27 cڡ * + gvue +; + +29 +SgOrE +( +DerliziE + +e +: +r +(e) {} + +30 +SgOrE +( +DerliziE +:: +Code + +c +: +r +(c) {} + +31 +SgOrE +(cڡ * +s +: +r +( +DerliziE +:: +Ok +), +vue +(s) {} + +34 + gpublic +: + +35 +JsDerliz +( +MemyPo + & +po +, +TRd + +ad +, + +36 +TSgStage + +rgStage +) + +37 : +_po +(& +po +), +_rgStage +( +rgStage +), +_tch +( +ad +) {} + +39 + gme + < +tyme + + gTFr +> + +40 +DerliziE + +r +( +VDa + & +v +, +TFr + +fr +, + +41 +NegLim + +ágLim +) { + +42 +DerliziE + + gr + = +rV +( +v +, +fr +, +ágLim +); + +44 i(! + gr + && + g_tch +. +ϡ +(!0 && ! +v +. +isEnod +()) { + +46 +r + = +DerliziE +:: +InvidIut +; + +49  + gr +; + +52 + give +: + +53 +JsDerliz + & +ݔ +=(const JsonDeserializer &); + +55  +cut +() { + +56  + g_tch +. +cut +(); + +59  +move +() { + +60 + g_tch +. +r +(); + +63 +bo + +t +( +chToSk +) { + +64 i( +cut +(! +chToSk +) + +65  +l +; + +66 +move +(); + +67  + gue +; + +70 + gme + < +tyme + + gTFr +> + +71 +DerliziE + +rV +( +VDa + & +v +, +TFr + +fr +, + +72 +NegLim + +ágLim +) { + +73 +DerliziE + + gr + = +skSsAndCommts +(); + +74 i( + gr +) + +75  + gr +; + +77  +cut +()) { + +79 i( +fr +. +lowAay +()) + +80  +rAay +( +v +. +toAay +(), +fr +, +ágLim +); + +82  +skAay +( +ágLim +); + +85 i( +fr +. +lowObje +()) + +86  +rObje +( +v +. +toObje +(), +fr +, +ágLim +); + +88  +skObje +( +ágLim +); + +92 i( +fr +. +lowVue +()) + +93  +rSgVue +( +v +); + +95  +skSg +(); + +98 i( +fr +. +lowVue +()) + +99  +rNumicVue +( +v +); + +101  +skNumicVue +(); + +105 +DerliziE + +skV +( +NegLim + +ágLim +) { + +106 +DerliziE + + gr + = +skSsAndCommts +(); + +107 i( + gr +) + +108  + gr +; + +110  +cut +()) { + +112  +skAay +( +ágLim +); + +115  +skObje +( +ágLim +); + +119  +skSg +(); + +122  +skNumicVue +(); + +126 + gme + < +tyme + + gTFr +> + +127 +DerliziE + +rAay +( +CiDa + & +y +, +TFr + +fr +, + +128 +NegLim + +ágLim +) { + +129 i( + gágLim +. +ached +()) + +130  + gDerliziE +:: +TooDp +; + +133 +ARDUINOJSON_ASSERT +( +cut +() == '['); + +134 +move +(); + +137 +DerliziE + + gr + = +skSsAndCommts +(); + +138 i( + gr +) + +139  + gr +; + +142 i( +t +(']')) + +143  + gDerliziE +:: +Ok +; + +145 +TFr + + gmembFr + = +fr +[0UL]; + +149 i( + gmembFr +. +low +()) { + +151 +VDa + * + gvue + = +y +. +addEmt +( +_po +); + +152 i(! + gvue +) + +153  + gDerliziE +:: +NoMemy +; + +156 + gr + = +rV +(* +vue +, +membFr +, +ágLim +. +deemt +()); + +157 i( + gr +) + +158  + gr +; + +160 + gr + = +skV +( +ágLim +. +deemt +()); + +161 i( + gr +) + +162  + gr +; + +166 + gr + = +skSsAndCommts +(); + +167 i( + gr +) + +168  + gr +; + +171 i( +t +(']')) + +172  + gDerliziE +:: +Ok +; + +173 i(! +t +(',')) + +174  + gDerliziE +:: +InvidIut +; + +178 +DerliziE + +skAay +( +NegLim + +ágLim +) { + +179 i( + gágLim +. +ached +()) + +180  + gDerliziE +:: +TooDp +; + +183 +ARDUINOJSON_ASSERT +( +cut +() == '['); + +184 +move +(); + +189 +DerliziE + + gr + = +skV +( +ágLim +. +deemt +()); + +190 i( + gr +) + +191  + gr +; + +194 + gr + = +skSsAndCommts +(); + +195 i( + gr +) + +196  + gr +; + +199 i( +t +(']')) + +200  + gDerliziE +:: +Ok +; + +201 i(! +t +(',')) + +202  + gDerliziE +:: +InvidIut +; + +206 + gme + < +tyme + + gTFr +> + +207 +DerliziE + +rObje +( +CiDa + & +obje +, +TFr + +fr +, + +208 +NegLim + +ágLim +) { + +209 i( + gágLim +. +ached +()) + +210  + gDerliziE +:: +TooDp +; + +213 +ARDUINOJSON_ASSERT +( +cut +() == '{'); + +214 +move +(); + +217 +DerliziE + + gr + = +skSsAndCommts +(); + +218 i( + gr +) + +219  + gr +; + +222 i( +t +('}')) + +223  + gDerliziE +:: +Ok +; + +228 +SgOrE + + gkey + = +rKey +(); + +229 + gr + = +key +. +r +; + +230 i( + gr +) + +231  + gr +; + +234 + gr + = +skSsAndCommts +(); + +235 i( + gr +) + +236  + gr +; + +237 i(! +t +(':')) + +238  + gDerliziE +:: +InvidIut +; + +240 +TFr + + gmembFr + = +fr +[ +key +. +vue +]; + +242 i( + gmembFr +. +low +()) { + +243 +VDa + * + gv + = +obje +. +gMemb +( +adtSg +( +key +. +vue +)); + +244 i(! + gv +) { + +246 +VSl + * + g + = +obje +. +addSl +( +_po +); + +247 i(! + g +) + +248  + gDerliziE +:: +NoMemy +; + +250 + g +-> +tOwdKey +( +make_n_nu +( +key +. +vue +)); + +252 + gv + = + +-> +da +(); + +256 + gr + = +rV +(* +v +, +membFr +, +ágLim +. +deemt +()); + +257 i( + gr +) + +258  + gr +; + +260 + g_rgStage +. +aim +( +key +. +vue +); + +261 + gr + = +skV +( +ágLim +. +deemt +()); + +262 i( + gr +) + +263  + gr +; + +267 + gr + = +skSsAndCommts +(); + +268 i( + gr +) + +269  + gr +; + +272 i( +t +('}')) + +273  + gDerliziE +:: +Ok +; + +274 i(! +t +(',')) + +275  + gDerliziE +:: +InvidIut +; + +278 + gr + = +skSsAndCommts +(); + +279 i( + gr +) + +280  + gr +; + +284 +DerliziE + +skObje +( +NegLim + +ágLim +) { + +285 i( + gágLim +. +ached +()) + +286  + gDerliziE +:: +TooDp +; + +289 +ARDUINOJSON_ASSERT +( +cut +() == '{'); + +290 +move +(); + +293 +DerliziE + + gr + = +skSsAndCommts +(); + +294 i( + gr +) + +295  + gr +; + +298 i( +t +('}')) + +299  + gDerliziE +:: +Ok +; + +304 + gr + = +skV +( +ágLim +. +deemt +()); + +305 i( + gr +) + +306  + gr +; + +309 + gr + = +skSsAndCommts +(); + +310 i( + gr +) + +311  + gr +; + +314 i(! +t +(':')) + +315  + gDerliziE +:: +InvidIut +; + +318 + gr + = +skV +( +ágLim +. +deemt +()); + +319 i( + gr +) + +320  + gr +; + +323 + gr + = +skSsAndCommts +(); + +324 i( + gr +) + +325  + gr +; + +328 i( +t +('}')) + +329  + gDerliziE +:: +Ok +; + +330 i(! +t +(',')) + +331  + gDerliziE +:: +InvidIut +; + +335 +SgOrE + +rKey +() { + +336 i( +isQue +( +cut +())) { + +337  +rQuedSg +(); + +339  +rNQuedSg +(); + +343 +DerliziE + +rSgVue +( +VDa + & +v +) { + +344 +SgOrE + + gsu + = +rQuedSg +(); + +345 i( + gsu +. + gr +) + +346  + gsu +. + gr +; + +347 + gv +. +tOwdSg +( +make_n_nu +( +su +. +vue +)); + +348  + gDerliziE +:: +Ok +; + +351 +SgOrE + +rQuedSg +() { + +352 +SgBud + + gbud + = +_rgStage +. +tSg +(); + +353 #i +ARDUINOJSON_DECODE_UNICODE + + +354 + gUtf16 +:: +Codot + +codot +; + +356 cڡ  + gCh + = +cut +(); + +358 +move +(); + +360  + gc + = +cut +(); + +361 +move +(); + +362 i( + gc + = +Ch +) + +365 i( + gc + == '\0') + +366  +DerliziE +:: +IncomeIut +; + +368 i( + gc + == '\\') { + +369 +c + = +cut +(); + +370 i( + gc + == '\0') + +371  +DerliziE +:: +IncomeIut +; + +372 i( + gc + == 'u') { + +373 #i +ARDUINOJSON_DECODE_UNICODE + + +374 +move +(); + +375 +ut16_t + + gcodeun +; + +376 +DerliziE + + gr + = +rHex4 +( +codeun +); + +377 i( + gr +) + +378  + gr +; + +379 i( + gcodot +. +nd +( +codeun +)) + +380 + gUtf8 +:: +codeCodot +( +codot +. +vue +(), +bud +); + +383  + gDerliziE +:: +NSu܋d +; + +387 + gc + = +EsSequ +:: +usCh +( +c +); + +388 i( + gc + == '\0') + +389  +DerliziE +:: +InvidIut +; + +390 +move +(); + +393 + gbud +. +nd +( +c +); + +396 cڡ * + gsu + = +bud +. +come +(); + +397 i(! + gsu +) + +398  + gDerliziE +:: +NoMemy +; + +399  + gsu +; + +402 +SgOrE + +rNQuedSg +() { + +403 +SgBud + + gbud + = +_rgStage +. +tSg +(); + +405  + gc + = +cut +(); + +406 +ARDUINOJSON_ASSERT +( +c +); + +408 i( +nBeInNQuedSg +( +c +)) { + +410 +move +(); + +411 + gbud +. +nd +( +c +); + +412 + gc + = +cut +(); + +413 }  +nBeInNQuedSg +( +c +)); + +415  + gDerliziE +:: +InvidIut +; + +418 cڡ * + gsu + = +bud +. +come +(); + +419 i(! + gsu +) + +420  + gDerliziE +:: +NoMemy +; + +421  + gsu +; + +424 +DerliziE + +skSg +() { + +425 cڡ  + gCh + = +cut +(); + +427 +move +(); + +429  + gc + = +cut +(); + +430 +move +(); + +431 i( + gc + = +Ch +) + +433 i( + gc + == '\0') + +434  +DerliziE +:: +IncomeIut +; + +435 i( + gc + == '\\') { + +436 i( +cut +() != '\0') + +437 +move +(); + +441  + gDerliziE +:: +Ok +; + +444 +DerliziE + +rNumicVue +( +VDa + & +su +) { + +445  + gbufr +[64]; + +446 +ut8_t + + gn + = 0; + +448  + gc + = +cut +(); + +449  +nBeInNQuedSg +( +c +&& + gn + < 63) { + +450 +move +(); + +451 + gbufr +[ +n +++] = +c +; + +452 + gc + = +cut +(); + +454 + gbufr +[ +n +] = 0; + +456 + gc + = +bufr +[0]; + +457 i( + gc + == 't') { + +458 +su +. +tBoޗn +( +ue +); + +459  + gn + =4 ? +DerliziE +:: +Ok + + +460 : +DerliziE +:: +IncomeIut +; + +462 i( + gc + == 'f') { + +463 +su +. +tBoޗn +( +l +); + +464  + gn + =5 ? +DerliziE +:: +Ok + + +465 : +DerliziE +:: +IncomeIut +; + +467 i( + gc + == 'n') { + +469  +n + =4 ? +DerliziE +:: +Ok + + +470 : +DerliziE +:: +IncomeIut +; + +473 + gPdNumb +< + gFlt +, + gUI +> + gnum + = +rNumb +< +Flt +, UI>( + gbufr +); + +475  + gnum +. +ty +()) { + +476  + gVALUE_IS_NEGATIVE_INTEGER +: + +477 +su +. +tNegiveIeg +( +num +. +utVue +); + +478  + gDerliziE +:: +Ok +; + +480  + gVALUE_IS_POSITIVE_INTEGER +: + +481 +su +. +tPosiveIeg +( +num +. +utVue +); + +482  + gDerliziE +:: +Ok +; + +484  + gVALUE_IS_FLOAT +: + +485 +su +. +tFlt +( +num +. +tVue +); + +486  + gDerliziE +:: +Ok +; + +489  + gDerliziE +:: +InvidIut +; + +492 +DerliziE + +skNumicVue +() { + +493  + gc + = +cut +(); + +494  +nBeInNQuedSg +( +c +)) { + +495 +move +(); + +496 + gc + = +cut +(); + +498  + gDerliziE +:: +Ok +; + +501 +DerliziE + +rHex4 +( +ut16_t + & +su +) { + +502 + gsu + = 0; + +503  +ut8_t + + gi + = 0; i < 4; ++i) { + +504  + gdig + = +cut +(); + +505 i(! + gdig +) + +506  + gDerliziE +:: +IncomeIut +; + +507 +ut8_t + + gvue + = +decodeHex +( +dig +); + +508 i( + gvue + > 0x0F) + +509  + gDerliziE +:: +InvidIut +; + +510 + gsu + = +ut16_t +(( +su + << 4| +vue +); + +511 +move +(); + +513  + gDerliziE +:: +Ok +; + +516  +le + +bo + +isBwn +( +c +,  +m +,  +max +) { + +517  + gm + < +c + && c < +max +; + +520  +le + +bo + +nBeInNQuedSg +( +c +) { + +521  +isBwn +( +c +, '0', '9') || isBetween(c, '_', 'z') || + +522 +isBwn +( +c +, 'A', 'Z'|| + gc + == '+' || c == '-' || c == '.'; + +525  +le + +bo + +isQue +( +c +) { + +526  + gc + ='\'' || +c + == '\"'; + +529  +le + +ut8_t + +decodeHex +( +c +) { + +530 i( + gc + < 'A') + +531  +ut8_t +( +c + - '0'); + +532 + gc + = ( +c + & ~0x20); + +533  +ut8_t +( +c + - 'A' + 10); + +536 +DerliziE + +skSsAndCommts +() { + +538  +cut +()) { + +541  +DerliziE +:: +IncomeIut +; + +548 +move +(); + +551 #i +ARDUINOJSON_ENABLE_COMMENTS + + +554 +move +(); + +555  +cut +()) { + +558 +move +(); + +559 +bo + + gwasSr + = +l +; + +561  + gc + = +cut +(); + +562 i( + gc + == '\0') + +563  +DerliziE +:: +IncomeIut +; + +564 i( + gc + ='/' && +wasSr +) { + +565 +move +(); + +568 + gwasSr + = +c + == '*'; + +569 +move +(); + +578 +move +(); + +579  + gc + = +cut +(); + +580 i( + gc + == '\0') + +581  +DerliziE +:: +IncomeIut +; + +582 i( + gc + == '\n') + +589  +DerliziE +:: +InvidIut +; + +595  +DerliziE +:: +Ok +; + +600 +MemyPo + * + g_po +; + +601 +TSgStage + + g_rgStage +; + +602 + gLch +< + gTRd +> + g_tch +; + +606 + gme + < +tyme + + gTIut +> + +607 +DerliziE + +derlizeJs +( + +608 +JsDocumt + & +doc +, cڡ +TIut + & +put +, + +609 +NegLim + +ágLim + = + $NegLim +()) { + +610  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, + +611 + `AowAFr +()); + +612 + } +} + +613 + gme + < +tyme + + gTIut +> + +614 +DerliziE + +derlizeJs +( + +615 +JsDocumt + & +doc +, cڡ +TIut + & +put +, +Fr + +fr +, + +616 +NegLim + +ágLim + = + $NegLim +()) { + +617  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +618 + } +} + +619 + gme + < +tyme + + gTIut +> + +620 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, cڡ +TIut + & +put +, + +621 +NegLim + +ágLim +, +Fr + +fr +) { + +622  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +623 + } +} + +626 + gme + < +tyme + + gTIut +> + +627 +DerliziE + +derlizeJs +( + +628 +JsDocumt + & +doc +, +TIut + & +put +, + +629 +NegLim + +ágLim + = + $NegLim +()) { + +630  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, + +631 + `AowAFr +()); + +632 + } +} + +633 + gme + < +tyme + + gTIut +> + +634 +DerliziE + +derlizeJs +( + +635 +JsDocumt + & +doc +, +TIut + & +put +, +Fr + +fr +, + +636 +NegLim + +ágLim + = + $NegLim +()) { + +637  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +638 + } +} + +639 + gme + < +tyme + + gTIut +> + +640 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, +TIut + & +put +, + +641 +NegLim + +ágLim +, +Fr + +fr +) { + +642  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +643 + } +} + +646 + gme + < +tyme + + gTCh +> + +647 +DerliziE + +derlizeJs +( + +648 +JsDocumt + & +doc +, +TCh + * +put +, + +649 +NegLim + +ágLim + = + $NegLim +()) { + +650  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, + +651 + `AowAFr +()); + +652 + } +} + +653 + gme + < +tyme + + gTCh +> + +654 +DerliziE + +derlizeJs +( + +655 +JsDocumt + & +doc +, +TCh + * +put +, +Fr + +fr +, + +656 +NegLim + +ágLim + = + $NegLim +()) { + +657  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +658 + } +} + +659 + gme + < +tyme + + gTCh +> + +660 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, +TCh + * +put +, + +661 +NegLim + +ágLim +, +Fr + +fr +) { + +662  +derlize +< +JsDerliz +>( +doc +, +put +, +ágLim +, +fr +); + +663 + } +} + +666 + gme + < +tyme + + gTCh +> + +667 +DerliziE + +derlizeJs +( + +668 +JsDocumt + & +doc +, +TCh + * +put +, +size_t + +putSize +, + +669 +NegLim + +ágLim + = + $NegLim +()) { + +670  +derlize +< +JsDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +671 + `AowAFr +()); + +672 + } +} + +673 + gme + < +tyme + + gTCh +> + +674 +DerliziE + +derlizeJs +( + +675 +JsDocumt + & +doc +, +TCh + * +put +, +size_t + +putSize +, +Fr + +fr +, + +676 +NegLim + +ágLim + = + $NegLim +()) { + +677  +derlize +< +JsDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +678 +fr +); + +679 + } +} + +680 + gme + < +tyme + + gTCh +> + +681 +DerliziE + + $derlizeJs +( +JsDocumt + & +doc +, +TCh + * +put +, + +682 +size_t + +putSize +, + +683 +NegLim + +ágLim +, +Fr + +fr +) { + +684  +derlize +< +JsDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +685 +fr +); + +686 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +tyme + + gTWr +> + +15 as + cJsSliz + { + +16 + gpublic +: + +17 +JsSliz +( +TWr + +wr +: +_fmr +(writer) {} + +19 +FORCE_INLINE +  +visAay +(cڡ +CiDa + & +y +) { + +20 +wre +('['); + +22 +VSl + * + g + = +y +. +hd +(); + +24  + g + != 0) { + +25 + +-> +da +()-> +ac +(* +this +); + +27 + g + = + +-> +xt +(); + +28 i( + g + == 0) + +31 +wre +(','); + +34 +wre +(']'); + +37  +visObje +(cڡ +CiDa + & +obje +) { + +38 +wre +('{'); + +40 +VSl + * + g + = +obje +. +hd +(); + +42  + g + != 0) { + +43 +_fmr +. +wreSg +( + +-> +key +()); + +44 +wre +(':'); + +45 + g +-> +da +()-> +ac +(* +this +); + +47 + g + = + +-> +xt +(); + +48 i( + g + == 0) + +51 +wre +(','); + +54 +wre +('}'); + +57  +visFlt +( +Flt + +vue +) { + +58 + g_fmr +. +wreFlt +( +vue +); + +61  +visSg +(cڡ * +vue +) { + +62 + g_fmr +. +wreSg +( +vue +); + +65  +visRawJs +(cڡ * +da +, +size_t + +n +) { + +66 + g_fmr +. +wreRaw +( +da +, +n +); + +69  +visNegiveIeg +( +UI + +vue +) { + +70 + g_fmr +. +wreNegiveIeg +( +vue +); + +73  +visPosiveIeg +( +UI + +vue +) { + +74 + g_fmr +. +wrePosiveIeg +( +vue +); + +77  +visBoޗn +( +bo + +vue +) { + +78 + g_fmr +. +wreBoޗn +( +vue +); + +81  +visNu +() { + +82 + g_fmr +. +wreRaw +("null"); + +85 +size_t + +bysWrn +() const { + +86  + g_fmr +. +bysWrn +(); + +89 + geed +: + +90  +wre +( +c +) { + +91 +_fmr +. +wreRaw +( +c +); + +94  +wre +(cڡ * +s +) { + +95 + g_fmr +. +wreRaw +( +s +); + +98 + give +: + +99 +TextFmr +< +TWr +> +_fmr +; + +102 + gme + < +tyme + + gTSour +,ym + gTDei +> + +103 +size_t + + $rlizeJs +(cڡ +TSour + & +sour +, +TDei + & +dei +) { + +104  +rlize +< +JsSliz +>( +sour +, +dei +); + +105 + } +} + +107 + gme + < +tyme + + gTSour +> + +108 +size_t + + $rlizeJs +(cڡ +TSour + & +sour +, * +bufr +, +size_t + +bufrSize +) { + +109  +rlize +< +JsSliz +>( +sour +, +bufr +, +bufrSize +); + +110 + } +} + +112 + gme + < +tyme + + gTSour +> + +113 +size_t + + $msuJs +(cڡ +TSour + & +sour +) { + +114  +msu +< +JsSliz +>( +sour +); + +115 + } +} + +117 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +118 + gme + < +tyme + + gT +> + +119 +le + +tyme + + gab_if +< + gIsVisab +< + gT +>:: +vue +, + gd +:: +oam + &>:: +ty + + +120 +ݔ +<<( +d +:: +oam + & +os +, cڡ + gT + & + gsour +) { + +121 +rlizeJs +( +sour +, +os +); + +122  + gos +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/Latch.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTRd +> + +12 as + cLch + { + +13 + gpublic +: + +14 +Lch +( +TRd + +ad +: +_ad +ԗd), +_lded +( +l +) { + +15 #i +ARDUINOJSON_DEBUG + + +16 + g_ded + = +l +; + +20  +r +() { + +21 + g_lded + = +l +; + +24  +ϡ +() const { + +25  + g_cut +; + +28 +FORCE_INLINE +  +cut +() { + +29 i(! + g_lded +) { + +30 +ld +(); + +32  + g_cut +; + +35 + give +: + +36  +ld +() { + +37 +ARDUINOJSON_ASSERT +(! +_ded +); + +38  + gc + = +_ad +. +ad +(); + +39 #i +ARDUINOJSON_DEBUG + + +40 i( + gc + <= 0) + +41 +_ded + = +ue +; + +43 + g_cut + = +ic_ +<>( +c + > 0 ? c : 0); + +44 + g_lded + = +ue +; + +47 +TRd + + g_ad +; + +48  + g_cut +; + +49 +bo + + g_lded +; + +50 #i +ARDUINOJSON_DEBUG + + +51 +bo + + g_ded +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +tyme + + gTWr +> + +15 +ass + + gPyJsSliz + : +public + +JsSliz +< +TWr +> { + +16  +JsSliz +< + tTWr +> + tba +; + +18 + gpublic +: + +19 +PyJsSliz +( +TWr + & +wr +: +ba +(wr), +_ág +(0) {} + +21  +visAay +(cڡ +CiDa + & +y +) { + +22 +VSl + * + g + = +y +. +hd +(); + +23 i(! + g +) + +24  + gba +:: +wre +("[]"); + +26 + gba +:: +wre +("[\r\n"); + +27 + g_ág +++; + +28  + g + != 0) { + +29 +dt +(); + +30 + g +-> +da +()-> +ac +(* +this +); + +32 + g + = + +-> +xt +(); + +33 + gba +:: +wre +( + + ? ",\r\n" : "\r\n"); + +35 + g_ág +--; + +36 +dt +(); + +37 + gba +:: +wre +("]"); + +40  +visObje +(cڡ +CiDa + & +obje +) { + +41 +VSl + * + g + = +obje +. +hd +(); + +42 i(! + g +) + +43  + gba +:: +wre +("{}"); + +45 + gba +:: +wre +("{\r\n"); + +46 + g_ág +++; + +47  + g + != 0) { + +48 +dt +(); + +49 + gba +:: +visSg +( + +-> +key +()); + +50 + gba +:: +wre +(": "); + +51 + g +-> +da +()-> +ac +(* +this +); + +53 + g + = + +-> +xt +(); + +54 + gba +:: +wre +( + + ? ",\r\n" : "\r\n"); + +56 + g_ág +--; + +57 +dt +(); + +58 + gba +:: +wre +("}"); + +61 + give +: + +62  +dt +() { + +63  +ut8_t + +i + = 0; + gi + < + g_ág +; i++ + gba +:: +wre +( +ARDUINOJSON_TAB +); + +66 +ut8_t + + g_ág +; + +69 + gme + < +tyme + + gTSour +,ym + gTDei +> + +70 +size_t + +rlizeJsPy +(cڡ +TSour + & +sour +, +TDei + & +dei +) { + +71  + grlize +< + gPyJsSliz +>( + gsour +, + gdei +); + +74 + gme + < +tyme + + gTSour +> + +75 +size_t + +rlizeJsPy +(cڡ +TSour + & +sour +, * +bufr +, + +76 +size_t + +bufrSize +) { + +77  + grlize +< + gPyJsSliz +>( + gsour +, + gbufr +, + gbufrSize +); + +80 + gme + < +tyme + + gTSour +> + +81 +size_t + +msuJsPy +(cڡ +TSour + & +sour +) { + +82  + gmsu +< + gPyJsSliz +>( + gsour +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 + gme + < +tyme + + gTWr +> + +19 as + cTextFmr + { + +20 + gpublic +: + +21 +exic + +TextFmr +( +TWr + +wr +: +_wr +(wr), +_ngth +(0) {} + +24 +size_t + +bysWrn +() const { + +25  + g_ngth +; + +28  +wreBoޗn +( +bo + +vue +) { + +29 i( + gvue +) + +30 +wreRaw +("true"); + +32 +wreRaw +("false"); + +35  +wreSg +(cڡ * +vue +) { + +36 +ARDUINOJSON_ASSERT +( +vue + ! +NULL +); + +37 +wreRaw +('\"'); + +38 * + gvue + +wreCh +(* +vue +++); + +39 +wreRaw +('\"'); + +42  +wreCh +( +c +) { + +43  + geclCh + = +EsSequ +:: +esCh +( +c +); + +44 i( + geclCh +) { + +45 +wreRaw +('\\'); + +46 +wreRaw +( +eclCh +); + +48 +wreRaw +( +c +); + +52 + gme + < +tyme + + gT +> + +53  +wreFlt +( +T + +vue +) { + +54 i( +i +( +vue +)) + +55  +wreRaw +( +ARDUINOJSON_ENABLE_NAN + ? "NaN" : "null"); + +57 #i +ARDUINOJSON_ENABLE_INFINITY + + +58 i( + gvue + < 0.0) { + +59 +wreRaw +('-'); + +60 + gvue + = - +vue +; + +63 i( +isf +( +vue +)) + +64  +wreRaw +("Infinity"); + +66 i( +isf +( +vue +)) + +67  +wreRaw +("null"); + +69 i( + gvue + < 0.0) { + +70 +wreRaw +('-'); + +71 + gvue + = - +vue +; + +75 + gFltPts +< + gT +> +s +( +vue +); + +77 +wrePosiveIeg +( +s +. +gl +); + +78 i( + gs +. + gdecimPs +) + +79 +wreDecims +( +s +. +decim +,ts. +decimPs +); + +81 i( + gs +. + gexpڒt + < 0) { + +82 +wreRaw +("e-"); + +83 +wrePosiveIeg +(- +s +. +expڒt +); + +86 i( + gs +. + gexpڒt + > 0) { + +87 +wreRaw +('e'); + +88 +wrePosiveIeg +( +s +. +expڒt +); + +92  +wreNegiveIeg +( +UI + +vue +) { + +93 +wreRaw +('-'); + +94 +wrePosiveIeg +( +vue +); + +97 + gme + < +tyme + + gT +> + +98  +wrePosiveIeg +( +T + +vue +) { + +99  + gbufr +[22]; + +100 * + gd + = +bufr + + (buffer); + +101 * + gbeg + = +d +; + +105 *-- + gbeg + = ( +vue + % 10 + '0'); + +106 + gvue + = +T +( +vue + / 10); + +107 }  + gvue +); + +110 +wreRaw +( +beg +, +d +); + +113  +wreDecims +( +ut32_t + +vue +, +t8_t + +width +) { + +115  + gbufr +[16]; + +116 * + gd + = +bufr + + (buffer); + +117 * + gbeg + = +d +; + +120  + gwidth +--) { + +121 *-- + gbeg + = ( +vue + % 10 + '0'); + +122 + gvue + /= 10; + +124 *-- + gbeg + = '.'; + +127 +wreRaw +( +beg +, +d +); + +130  +wreRaw +(cڡ * +s +) { + +131 + g_ngth + + +_wr +. +wre +( +t_ +( +s +), + +(s)); + +134  +wreRaw +(cڡ * +s +, +size_t + +n +) { + +135 + g_ngth + + +_wr +. +wre +( +t_ +( +s +), +n +); + +138  +wreRaw +(cڡ * +beg +, cڡ * +d +) { + +139 + g_ngth + + +_wr +. +wre +( +t_ +( +beg +), + +140 +ic_ +< +size_t +>( +d + - +beg +)); + +143 + gme + < +size_t + + gN +> + +144  +wreRaw +(cڡ (& +s +)[ +N +]) { + +145 + g_ngth + + +_wr +. +wre +( +t_ +( +s +), +N + - 1); + +147  +wreRaw +( +c +) { + +148 + g_ngth + + +_wr +. +wre +( +ic_ +< +ut8_t +>( +c +)); + +151 + geed +: + +152 +TWr + +_wr +; + +153 +size_t + + g_ngth +; + +155 + give +: + +156 +TextFmr + & +ݔ +=(const TextFormatter &); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +14 #i +defed +( +__GNUC__ +) + +15 #i +__GNUC__ + >= 7 + +16 #agm +GCC + +dgnoic + +push + + +17 #agm +GCC + +dgnoic + +igned + "-Wmaybe-uninitialized" + +21 +mea + + gARDUINOJSON_NAMESPACE + { + +23 +mea + + gUtf16 + { + +24 +le + +bo + +isHighSuoge +( +ut16_t + +codeun +) { + +25  + gcodeun + >0xD800 && +codeun + < 0xDC00; + +28 +le + +bo + +isLowSuoge +( +ut16_t + +codeun +) { + +29  + gcodeun + >0xDC00 && +codeun + < 0xE000; + +32 as + cCodot + { + +33 + gpublic +: + +34 +bo + +nd +( +ut16_t + +codeun +) { + +35 i( +isHighSuoge +( +codeun +)) { + +36 +_highSuoge + = +codeun + & 0x3FF; + +37  + gl +; + +40 i( +isLowSuoge +( +codeun +)) { + +41 + g_codot + = + +42 +ut32_t +(0x10000 + (( +_highSuoge + << 10| ( +codeun + & 0x3FF))); + +43  + gue +; + +46 + g_codot + = +codeun +; + +47  + gue +; + +50 +ut32_t + +vue +() const { + +51  + g_codot +; + +54 + give +: + +55 +ut16_t + +_highSuoge +; + +56 +ut32_t + + g_codot +; + +61 #i +defed +( +__GNUC__ +) + +62 #i +__GNUC__ + >= 8 + +63 #agm +GCC + +dgnoic + +p + + + @lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +mea + + gUtf8 + { + +12 + gme + < +tyme + + gTSgBud +> + +13 +le +  +codeCodot +( +ut32_t + +codot32 +, +TSgBud +& +r +) { + +17  + gbuf +[5]; + +18 * + gp + = +buf +; + +20 *( + gp +++) = 0; + +21 i( + gcodot32 + < 0x80) { + +22 *( + gp +++(( +codot32 +)); + +24 *( + gp +++(( +codot32 + | 0x80) & 0xBF); + +25 +ut16_t + + gcodot16 + = ut16_t( +codot32 + >> 6); + +26 i( + gcodot16 + < 0x20) { + +27 *( + gp +++( +codot16 + | 0xC0); + +29 *( + gp +++(( +codot16 + | 0x80) & 0xBF); + +30 + gcodot16 + = +ut16_t +( +codot16 + >> 6); + +31 i( + gcodot16 + < 0x10) { + +32 *( + gp +++( +codot16 + | 0xE0); + +34 *( + gp +++(( +codot16 + | 0x80) & 0xBF); + +35 + gcodot16 + = +ut16_t +( +codot16 + >> 6); + +36 *( + gp +++( +codot16 + | 0xF0); + +41 *(-- + gp +)) { + +42 + gr +. +nd +(* +p +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 +le + +bo + +isAligd +(* +r +) { + +14 cڡ +size_t + + gmask + = (*) - 1; + +15 +size_t + + gaddr + = +t_ +( +r +); + +16  ( + gaddr + & + gmask +) == 0; + +19 +le + +size_t + +addPaddg +(size_ +bys +) { + +20 cڡ +size_t + + gmask + = (*) - 1; + +21  ( + gbys + + + gmask +) & ~mask; + +24 + gme + < +tyme + + gT +> + +25 +le + +T + * +addPaddg +(T * +p +) { + +26 +size_t + + gaddss + = +addPaddg +( +t_ +( +p +)); + +27  + gt_ +< + gT + *>( + gaddss +); + +30 + gme + < +size_t + + gbys +> + +31  + sAddPaddg + { + +32 cڡ +size_t + + gmask + = (*) - 1; + +33 cڡ +size_t + + gvue + = ( +bys + + +mask +) & ~mask; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13  + ~ + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +25 as + cMemyPo + { + +26 + gpublic +: + +27 +MemyPo +(* +buf +, +size_t + + +) + +28 : +_beg +( +buf +), + +29 +_ +( +buf +), + +30 +_right +( +buf + ? bu+ + + : 0), + +31 +_d +( +buf + ? bu+ + + : 0) { + +32 +ARDUINOJSON_ASSERT +( +isAligd +( +_beg +)); + +33 +ARDUINOJSON_ASSERT +( +isAligd +( +_right +)); + +34 +ARDUINOJSON_ASSERT +( +isAligd +( +_d +)); + +37 * +bufr +() { + +38  + g_beg +; + +42 +size_t + +cy +() const { + +43  +size_t +( +_d + - +_beg +); + +46 +size_t + +size +() const { + +47  +size_t +( +_ + - +_beg + + +_d + - +_right +); + +50 +VSl +* +locV +() { + +51  + glocRight +< + gVSl +>(); + +54 * +locFrozSg +( +size_t + +n +) { + +55 i(! +nAoc +( +n +)) + +57 * + gs + = +_ +; + +58 + g_ + + +n +; + +59 +checkInvs +(); + +60  + gs +; + +63 +SgSl + +locExndabSg +() { + +64 +SgSl + + gs +; + +65 + gs +. + gvue + = +_ +; + +66 + gs +. + gsize + = +size_t +( +_right + - +_ +); + +67 + g_ + = +_right +; + +68 +checkInvs +(); + +69  + gs +; + +72  +zeSg +( +SgSl +& +s +, +size_t + +wSize +) { + +73 + g_ + -( +s +. +size + - +wSize +); + +74 + gs +. + gsize + = +wSize +; + +75 +checkInvs +(); + +78  +aimLaSg +(cڡ * +s +) { + +79 + g_ + = +cڡ_ +<*>( +s +); + +82  +r +() { + +83 + g_ + = +_beg +; + +84 + g_right + = +_d +; + +87 +bo + +nAoc +( +size_t + +bys +) const { + +88  + g_ + + + gbys + < +_right +; + +91 +bo + +owns +(* +p +) const { + +92  + g_beg + < +p + && < +_d +; + +95 + gme + < +tyme + + gT +> + +96 +T +* +locRight +() { + +97  + gt_ +< + gT +*>( +locRight +(( +T +))); + +100 * +locRight +( +size_t + +bys +) { + +101 i(! +nAoc +( +bys +)) + +103 + g_right + - +bys +; + +104  + g_right +; + +108 * +ݔ + +w +( +size_t +, * +p +) { + +109  + gp +; + +123 +rdiff_t + +squash +() { + +124 * + gw_right + = +addPaddg +( +_ +); + +125 i( + gw_right + > +_right +) + +128 +size_t + + gright_size + = +ic_ +( +_d + - +_right +); + +129 +memmove +( +w_right +, +_right +, +right_size +); + +131 +rdiff_t + + gbys_aimed + = +_right + - +w_right +; + +132 + g_right + = +w_right +; + +133 + g_d + = +w_right + + +right_size +; + +134  + gbys_aimed +; + +139  +movePors +( +rdiff_t + +offt +) { + +140 + g_beg + + +offt +; + +141 + g_ + + +offt +; + +142 + g_right + + +offt +; + +143 + g_d + + +offt +; + +146 + give +: + +147 +SgSl +* +locSgSl +() { + +148  +locRight +< +SgSl +>(); + +151  +checkInvs +() { + +152 +ARDUINOJSON_ASSERT +( +_beg + < +_ +); + +153 +ARDUINOJSON_ASSERT +( +_ + < +_right +); + +154 +ARDUINOJSON_ASSERT +( +_right + < +_d +); + +155 +ARDUINOJSON_ASSERT +( +isAligd +( +_right +)); + +158 * + g_beg +, * + g_ +, * + g_right +, * + g_d +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cSgBud + { + +12 + gpublic +: + +13 +exic + +SgBud +( +MemyPo +* + +: +_ +լt), +_size +(0) { + +14 + g_ + = +_ +-> +locExndabSg +(); + +17  +nd +(cڡ * +s +) { + +18 * + gs + +nd +(* +s +++); + +21  +nd +(cڡ * +s +, +size_t + +n +) { + +22  + gn +-- > 0 +nd +(* +s +++); + +25  +nd +( +c +) { + +26 i(! + g_ +. + gvue +) + +29 i( + g_size + > +_ +. +size +) { + +30 +_ +. +vue + = 0; + +34 + g_ +. + gvue +[ +_size +++] = +c +; + +37 * +come +() { + +38 +nd +('\0'); + +39 i( + g_ +. + gvue +) { + +40 + g_ +-> +zeSg +( +_ +, +_size +); + +42  + g_ +. + gvue +; + +45 + give +: + +46 +MemyPo +* +_ +; + +47 +size_t + + g_size +; + +48 +SgSl + + g_ +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringSlot.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11  + #JSON_STRING_SIZE +( +SIZE +(SIZE) + + ) + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15  + sSgSl + { + +16 * + gvue +; + +17 +size_t + + gsize +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13 as + cSlizedVue + { + +14 + gpublic +: + +15 +exic + +SlizedVue +( +T + +r +: +_r +(str) {} + +16 +ݔ + +T +() const { + +17  +_r +; + +20 cڡ * +da +() const { + +21  + g_r +. +c_r +(); + +24 +size_t + +size +() const { + +26  + g_r +. +ngth +(); + +29 + give +: + +30 +T + +_r +; + +33 + gme + < +tyme + + gTCh +> + +34 +ass + + gSlizedVue +< + gTCh +*> { + +35 + gpublic +: + +36 +exic + +SlizedVue +( +TCh +* +p +, +size_t + +n +: +_da +), +_size +(n) {} + +37 +ݔ + + gTCh +*() const { + +38  + g_da +; + +41 +TCh +* +da +() const { + +42  + g_da +; + +45 +size_t + +size +() const { + +46  + g_size +; + +49 + give +: + +50 +TCh +* +_da +; + +51 +size_t + + g_size +; + +54 + gme + < +tyme + + gT +> + +55 +le + + gSlizedVue +< + gT +> + $rlized +( +T + +r +) { + +56  +SlizedVue +< +T +>( +r +); + +57 + } +} + +59 + gme + < +tyme + + gTCh +> + +60 +le + + gSlizedVue +< + gTCh +*> + $rlized +( +TCh +* +p +) { + +61  +SlizedVue +< +TCh +*>( +p +, + `adtSg +). + `size +()); + +62 + } +} + +64 + gme + < +tyme + + gTCh +> + +65 +le + + gSlizedVue +< + gTCh +*> + $rlized +( +TCh +* +p +, +size_t + +n +) { + +66  +SlizedVue +< +TCh +*>( +p +, +n +); + +67 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11  + sVisab + { + +16 + gme + < +tyme + + gT +> + +17  + gIsVisab + : +is_ba_of +< +Visab +, + gT +> {}; + +19 + gme + < +tyme + + gT +> + +20  + gIsVisab +< + gT +&> : +IsVisab +< +T +> {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 + gme + < +tyme + + gTRd +,ym + gTSgStage +> + +17 as + cMsgPackDerliz + { + +18  +tyme + + tmove_n +< + tTSgStage +>:: + tty +:: + tSgBud + + +19 + tSgBud +; + +21 + gpublic +: + +22 +MsgPackDerliz +( +MemyPo + & +po +, +TRd + +ad +, + +23 +TSgStage + +rgStage +) + +24 : +_po +(& +po +), +_ad +( +ad +), +_rgStage +( +rgStage +) {} + +26 +DerliziE + +r +( +VDa + & +v +, +AowAFr +, + +27 +NegLim + +ágLim +) { + +28  +r +( +v +, +ágLim +); + +31 +DerliziE + +r +( +VDa + & +v +, +NegLim + +ágLim +) { + +32 +ut8_t + + gcode +; + +33 i(! +adBy +( +code +)) + +34  + gDerliziE +:: +IncomeIut +; + +36 i(( + gcode + & 0x80) == 0) { + +37 +v +. +tUnsigdIeg +( +code +); + +38  + gDerliziE +:: +Ok +; + +41 i(( + gcode + & 0xe0) == 0xe0) { + +42 +v +. +tSigdIeg +( +ic_ +< +t8_t +>( +code +)); + +43  + gDerliziE +:: +Ok +; + +46 i(( + gcode + & 0xe0) == 0xa0) { + +47  +adSg +( +v +, +code + & 0x1f); + +50 i(( + gcode + & 0xf0) == 0x90) { + +51  +adAay +( +v +. +toAay +(), +code + & 0x0F, +ágLim +); + +54 i(( + gcode + & 0xf0) == 0x80) { + +55  +adObje +( +v +. +toObje +(), +code + & 0x0F, +ágLim +); + +58  + gcode +) { + +61  +DerliziE +:: +Ok +; + +64 +v +. +tBoޗn +( +l +); + +65  + gDerliziE +:: +Ok +; + +68 +v +. +tBoޗn +( +ue +); + +69  + gDerliziE +:: +Ok +; + +72  +adIeg +< +ut8_t +>( +v +); + +75  +adIeg +< +ut16_t +>( +v +); + +78  +adIeg +< +ut32_t +>( +v +); + +81 #i +ARDUINOJSON_USE_LONG_LONG + + +82  +adIeg +< +ut64_t +>( +v +); + +84  + gDerliziE +:: +NSu܋d +; + +88  +adIeg +< +t8_t +>( +v +); + +91  +adIeg +< +t16_t +>( +v +); + +94  +adIeg +< +t32_t +>( +v +); + +97 #i +ARDUINOJSON_USE_LONG_LONG + + +98  +adIeg +< +t64_t +>( +v +); + +100  + gDerliziE +:: +NSu܋d +; + +104  +adFlt +<>( +v +); + +107  +adDoub +<>( +v +); + +110  +adSg +< +ut8_t +>( +v +); + +113  +adSg +< +ut16_t +>( +v +); + +116  +adSg +< +ut32_t +>( +v +); + +119  +adAay +< +ut16_t +>( +v +. +toAay +(), + gágLim +); + +122  +adAay +< +ut32_t +>( +v +. +toAay +(), + gágLim +); + +125  +adObje +< +ut16_t +>( +v +. +toObje +(), + gágLim +); + +128  +adObje +< +ut32_t +>( +v +. +toObje +(), + gágLim +); + +131  +DerliziE +:: +NSu܋d +; + +135 + give +: + +137 +MsgPackDerliz + & +ݔ +=(const MsgPackDeserializer &); + +139 +bo + +adBy +( +ut8_t + & +vue +) { + +140  + gc + = +_ad +. +ad +(); + +141 i( + gc + < 0) + +142  + gl +; + +143 + gvue + = +ic_ +< +ut8_t +>( +c +); + +144  + gue +; + +147 +bo + +adBys +( +ut8_t + * +p +, +size_t + +n +) { + +148  + g_ad +. +adBys +( +t_ +<*>( +p +), +n +) ==; + +151 + gme + < +tyme + + gT +> + +152 +bo + +adBys +( +T + & +vue +) { + +153  +adBys +( +t_ +< +ut8_t + *>(& +vue +), (value)); + +156 + gme + < +tyme + + gT +> + +157 +T + +adIeg +() { + +158 +T + + gvue +; + +159 +adBys +( +vue +); + +160 +fixEndss +( +vue +); + +161  + gvue +; + +164 + gme + < +tyme + + gT +> + +165 +bo + +adIeg +( +T + & +vue +) { + +166 i(! +adBys +( +vue +)) + +167  + gl +; + +168 +fixEndss +( +vue +); + +169  + gue +; + +172 + gme + < +tyme + + gT +> + +173 +DerliziE + +adIeg +( +VDa + & +v +) { + +174 +T + + gvue +; + +175 i(! +adIeg +( +vue +)) + +176  + gDerliziE +:: +IncomeIut +; + +177 + gv +. +tIeg +( +vue +); + +178  + gDerliziE +:: +Ok +; + +181 + gme + < +tyme + + gT +> + +182 +tyme + + gab_if +<( + gT +=4, + gDerliziE +>:: +ty + +adFlt +( + +183 +VDa + & +v +) { + +184 +T + +vue +; + +185 i(! +adBys +( +vue +)) + +186  + gDerliziE +:: +IncomeIut +; + +187 +fixEndss +( +vue +); + +188 + gv +. +tFlt +( +vue +); + +189  + gDerliziE +:: +Ok +; + +192 + gme + < +tyme + + gT +> + +193 +tyme + + gab_if +<( + gT +=8, + gDerliziE +>:: +ty + +adDoub +( + +194 +VDa + & +v +) { + +195 +T + +vue +; + +196 i(! +adBys +( +vue +)) + +197  + gDerliziE +:: +IncomeIut +; + +198 +fixEndss +( +vue +); + +199 + gv +. +tFlt +( +vue +); + +200  + gDerliziE +:: +Ok +; + +203 + gme + < +tyme + + gT +> + +204 +tyme + + gab_if +<( + gT +=4, + gDerliziE +>:: +ty + +adDoub +( + +205 +VDa + & +v +) { + +206 +ut8_t + +i +[8]; + +207 +T + + gvue +; + +208 +ut8_t + * + go + = +t_ +(& +vue +); + +209 i(! +adBys +( +i +, 8)) + +210  + gDerliziE +:: +IncomeIut +; + +211 +doubToFlt +( +i +, +o +); + +212 +fixEndss +( +vue +); + +213 + gv +. +tFlt +( +vue +); + +214  + gDerliziE +:: +Ok +; + +217 + gme + < +tyme + + gT +> + +218 +DerliziE + +adSg +( +VDa + & +v +) { + +219 +T + + gsize +; + +220 i(! +adIeg +( +size +)) + +221  + gDerliziE +:: +IncomeIut +; + +222  +adSg +( +v +, +size +); + +225 + gme + < +tyme + + gT +> + +226 +DerliziE + +adSg +(cڡ *& +r +) { + +227 +T + + gsize +; + +228 i(! +adIeg +( +size +)) + +229  + gDerliziE +:: +IncomeIut +; + +230  +adSg +( +r +, +size +); + +233 +DerliziE + +adSg +( +VDa + & +v +, +size_t + +n +) { + +234 cڡ * + gs + = 0; + +235 +DerliziE + + gr + = +adSg +( +s +, +n +); + +236 i(! + gr +) + +237 + gv +. +tOwdSg +( +make_n_nu +( +s +)); + +238  + gr +; + +241 +DerliziE + +adSg +(cڡ *& +su +, +size_t + +n +) { + +242 +SgBud + + gbud + = +_rgStage +. +tSg +(); + +243 ; + gn +; --n) { + +244 +ut8_t + + gc +; + +245 i(! +adBys +( +c +)) + +246  + gDerliziE +:: +IncomeIut +; + +247 + gbud +. +nd +( +ic_ +<>( +c +)); + +249 + gsu + = +bud +. +come +(); + +250 i(! + gsu +) + +251  + gDerliziE +:: +NoMemy +; + +252  + gDerliziE +:: +Ok +; + +255 + gme + < +tyme + + gTSize +> + +256 +DerliziE + +adAay +( +CiDa + & +y +, + +257 +NegLim + +ágLim +) { + +258 +TSize + + gsize +; + +259 i(! +adIeg +( +size +)) + +260  + gDerliziE +:: +IncomeIut +; + +261  +adAay +( +y +, +size +, +ágLim +); + +264 +DerliziE + +adAay +( +CiDa + & +y +, +size_t + +n +, + +265 +NegLim + +ágLim +) { + +266 i( + gágLim +. +ached +()) + +267  + gDerliziE +:: +TooDp +; + +269 ; + gn +; --n) { + +270 +VDa + * + gvue + = +y +. +addEmt +( +_po +); + +271 i(! + gvue +) + +272  + gDerliziE +:: +NoMemy +; + +274 +DerliziE + + gr + = +r +(* +vue +, +ágLim +. +deemt +()); + +275 i( + gr +) + +276  + gr +; + +279  + gDerliziE +:: +Ok +; + +282 + gme + < +tyme + + gTSize +> + +283 +DerliziE + +adObje +( +CiDa + & +obje +, + +284 +NegLim + +ágLim +) { + +285 +TSize + + gsize +; + +286 i(! +adIeg +( +size +)) + +287  + gDerliziE +:: +IncomeIut +; + +288  +adObje +( +obje +, +size +, +ágLim +); + +291 +DerliziE + +adObje +( +CiDa + & +obje +, +size_t + +n +, + +292 +NegLim + +ágLim +) { + +293 i( + gágLim +. +ached +()) + +294  + gDerliziE +:: +TooDp +; + +296 ; + gn +; --n) { + +297 +VSl + * + g + = +obje +. +addSl +( +_po +); + +298 i(! + g +) + +299  + gDerliziE +:: +NoMemy +; + +301 cڡ * + gkey + = 0; + +302 +DerliziE + + gr + = +rKey +( +key +); + +303 i( + gr +) + +304  + gr +; + +305 + g +-> +tOwdKey +( +make_n_nu +( +key +)); + +307 + gr + = +r +(* + +-> +da +(), +ágLim +. +deemt +()); + +308 i( + gr +) + +309  + gr +; + +312  + gDerliziE +:: +Ok +; + +315 +DerliziE + +rKey +(cڡ *& +key +) { + +316 +ut8_t + + gcode +; + +317 i(! +adBy +( +code +)) + +318  + gDerliziE +:: +IncomeIut +; + +320 i(( + gcode + & 0xe0) == 0xa0) + +321  +adSg +( +key +, +code + & 0x1f); + +323  + gcode +) { + +325  +adSg +< +ut8_t +>( +key +); + +328  +adSg +< +ut16_t +>( +key +); + +331  +adSg +< +ut32_t +>( +key +); + +334  +DerliziE +:: +NSu܋d +; + +338 +MemyPo + * + g_po +; + +339 +TRd + + g_ad +; + +340 +TSgStage + + g_rgStage +; + +343 + gme + < +tyme + + gTIut +> + +344 +DerliziE + +derlizeMsgPack +( + +345 +JsDocumt + & +doc +, cڡ +TIut + & +put +, + +346 +NegLim + +ágLim + = + $NegLim +()) { + +347  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, + +348 + `AowAFr +()); + +349 + } +} + +351 + gme + < +tyme + + gTIut +> + +352 +DerliziE + +derlizeMsgPack +( + +353 +JsDocumt + & +doc +, +TIut + * +put +, + +354 +NegLim + +ágLim + = + $NegLim +()) { + +355  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, + +356 + `AowAFr +()); + +357 + } +} + +359 + gme + < +tyme + + gTIut +> + +360 +DerliziE + +derlizeMsgPack +( + +361 +JsDocumt + & +doc +, +TIut + * +put +, +size_t + +putSize +, + +362 +NegLim + +ágLim + = + $NegLim +()) { + +363  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +putSize +, +ágLim +, + +364 + `AowAFr +()); + +365 + } +} + +367 + gme + < +tyme + + gTIut +> + +368 +DerliziE + +derlizeMsgPack +( + +369 +JsDocumt + & +doc +, +TIut + & +put +, + +370 +NegLim + +ágLim + = + $NegLim +()) { + +371  +derlize +< +MsgPackDerliz +>( +doc +, +put +, +ágLim +, + +372 + `AowAFr +()); + +373 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 + gme + < +tyme + + gTWr +> + +17 as + cMsgPackSliz + { + +18 + gpublic +: + +19 +MsgPackSliz +( +TWr + +wr +: +_wr +(wr), +_bysWrn +(0) {} + +21 + gme + < +tyme + + gT +> + +22 +tyme + + gab_if +<( + gT +=4>:: +ty + +visFlt +( +T + +vue32 +) { + +23 +wreBy +(0xCA); + +24 +wreIeg +( +vue32 +); + +27 + gme + < +tyme + + gT +> + +28 +ARDUINOJSON_NO_SANITIZE +("float-cast-overflow") + +29 +tyme + + gab_if +<( + gT +=8>:: +ty + +visFlt +( +T + +vue64 +) { + +30  +vue32 + = ( +vue64 +); + +31 i( + gvue32 + = +vue64 +) { + +32 +wreBy +(0xCA); + +33 +wreIeg +( +vue32 +); + +35 +wreBy +(0xCB); + +36 +wreIeg +( +vue64 +); + +40  +visAay +(cڡ +CiDa +& +y +) { + +41 +size_t + + gn + = +y +. +size +(); + +42 i( + gn + < 0x10) { + +43 +wreBy +( +ut8_t +(0x90 + +y +. +size +())); + +44 } i( + gn + < 0x10000) { + +45 +wreBy +(0xDC); + +46 +wreIeg +( +ut16_t +( +n +)); + +48 +wreBy +(0xDD); + +49 +wreIeg +( +ut32_t +( +n +)); + +51  +VSl +* + g + = +y +. +hd +(); sl; sl = + +-> +xt +()) { + +52 + +-> +da +()-> +ac +(* +this +); + +56  +visObje +(cڡ +CiDa +& +obje +) { + +57 +size_t + + gn + = +obje +. +size +(); + +58 i( + gn + < 0x10) { + +59 +wreBy +( +ut8_t +(0x80 + +n +)); + +60 } i( + gn + < 0x10000) { + +61 +wreBy +(0xDE); + +62 +wreIeg +( +ut16_t +( +n +)); + +64 +wreBy +(0xDF); + +65 +wreIeg +( +ut32_t +( +n +)); + +67  +VSl +* + g + = +obje +. +hd +(); sl; sl = + +-> +xt +()) { + +68 +visSg +( + +-> +key +()); + +69 + g +-> +da +()-> +ac +(* +this +); + +73  +visSg +(cڡ * +vue +) { + +74 +ARDUINOJSON_ASSERT +( +vue + ! +NULL +); + +76 +size_t + + gn + = + +( +vue +); + +78 i( + gn + < 0x20) { + +79 +wreBy +( +ut8_t +(0xA0 + +n +)); + +80 } i( + gn + < 0x100) { + +81 +wreBy +(0xD9); + +82 +wreIeg +( +ut8_t +( +n +)); + +83 } i( + gn + < 0x10000) { + +84 +wreBy +(0xDA); + +85 +wreIeg +( +ut16_t +( +n +)); + +87 +wreBy +(0xDB); + +88 +wreIeg +( +ut32_t +( +n +)); + +90 +wreBys +( +t_ +( +vue +), +n +); + +93  +visRawJs +(cڡ * +da +, +size_t + +size +) { + +94 +wreBys +( +t_ +( +da +), +size +); + +97  +visNegiveIeg +( +UI + +vue +) { + +98 +UI + + gged + = UI(~ +vue + + 1); + +99 i( + gvue + <= 0x20) { + +100 +wreIeg +( +t8_t +( +ged +)); + +101 } i( + gvue + <= 0x80) { + +102 +wreBy +(0xD0); + +103 +wreIeg +( +t8_t +( +ged +)); + +104 } i( + gvue + <= 0x8000) { + +105 +wreBy +(0xD1); + +106 +wreIeg +( +t16_t +( +ged +)); + +107 } i( + gvue + <= 0x80000000) { + +108 +wreBy +(0xD2); + +109 +wreIeg +( +t32_t +( +ged +)); + +111 #i +ARDUINOJSON_USE_LONG_LONG + + +113 +wreBy +(0xD3); + +114 +wreIeg +( +t64_t +( +ged +)); + +119  +visPosiveIeg +( +UI + +vue +) { + +120 i( + gvue + <= 0x7F) { + +121 +wreIeg +( +ut8_t +( +vue +)); + +122 } i( + gvue + <= 0xFF) { + +123 +wreBy +(0xCC); + +124 +wreIeg +( +ut8_t +( +vue +)); + +125 } i( + gvue + <= 0xFFFF) { + +126 +wreBy +(0xCD); + +127 +wreIeg +( +ut16_t +( +vue +)); + +128 } i( + gvue + <= 0xFFFFFFFF) { + +129 +wreBy +(0xCE); + +130 +wreIeg +( +ut32_t +( +vue +)); + +132 #i +ARDUINOJSON_USE_LONG_LONG + + +134 +wreBy +(0xCF); + +135 +wreIeg +( +ut64_t +( +vue +)); + +140  +visBoޗn +( +bo + +vue +) { + +141 +wreBy +( +vue + ? 0xC3 : 0xC2); + +144  +visNu +() { + +145 +wreBy +(0xC0); + +148 +size_t + +bysWrn +() const { + +149  + g_bysWrn +; + +152 + give +: + +153  +wreBy +( +ut8_t + +c +) { + +154 +_bysWrn + + +_wr +. +wre +( +c +); + +157  +wreBys +(cڡ +ut8_t +* +p +, +size_t + +n +) { + +158 + g_bysWrn + + +_wr +. +wre +( +p +, +n +); + +161 + gme + < +tyme + + gT +> + +162  +wreIeg +( +T + +vue +) { + +163 +fixEndss +( +vue +); + +164 +wreBys +( +t_ +< +ut8_t +*>(& +vue +), (value)); + +167 +TWr + + g_wr +; + +168 +size_t + + g_bysWrn +; + +171 + gme + < +tyme + + gTSour +,ym + gTDei +> + +172 +le + +size_t + + $rlizeMsgPack +(cڡ +TSour +& +sour +, +TDei +& +ouut +) { + +173  +rlize +< +MsgPackSliz +>( +sour +, +ouut +); + +174 + } +} + +176 + gme + < +tyme + + gTSour +> + +177 +le + +size_t + + $rlizeMsgPack +(cڡ +TSour +& +sour +, * +ouut +, + +178 +size_t + +size +) { + +179  +rlize +< +MsgPackSliz +>( +sour +, +ouut +, +size +); + +180 + } +} + +182 + gme + < +tyme + + gTSour +> + +183 +le + +size_t + + $msuMsgPack +(cڡ +TSour +& +sour +) { + +184  +msu +< +MsgPackSliz +>( +sour +); + +185 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 #i +ARDUINOJSON_LITTLE_ENDIAN + + +13 +le +  +fixEndss +( +ut8_t + * +p +, +gl_cڡt +< +size_t +, 8>) { + +14 +sw +( +p +[0],[7]); + +15 +sw +( +p +[1],[6]); + +16 +sw +( +p +[2],[5]); + +17 +sw +( +p +[3],[4]); + +20 +le +  +fixEndss +( +ut8_t + * +p +, +gl_cڡt +< +size_t +, 4>) { + +21 +sw +( +p +[0],[3]); + +22 +sw +( +p +[1],[2]); + +25 +le +  +fixEndss +( +ut8_t + * +p +, +gl_cڡt +< +size_t +, 2>) { + +26 +sw +( +p +[0],[1]); + +29 +le +  +fixEndss +( +ut8_t + *, +gl_cڡt +< +size_t +, 1>) {} + +31 + gme + < +tyme + + gT +> + +32 +le +  +fixEndss +( +T + & +vue +) { + +33 +fixEndss +( +t_ +< +ut8_t + *>(& +vue +), + +34 +gl_cڡt +< +size_t +, ( +T +)>()); + +37 + gme + < +tyme + + gT +> + +38 +le +  +fixEndss +( +T + &) {} + + @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +le +  +doubToFlt +(cڡ +ut8_t + +d +[8], ut8_ +f +[4]) { + +12 + gf +[0] = +ut8_t +(( +d +[0] & 0xC0) | (d[0] << 3 & 0x3f) | (d[1] >> 5)); + +13 + gf +[1] = +ut8_t +(( +d +[1] << 3) | (d[2] >> 5)); + +14 + gf +[2] = +ut8_t +(( +d +[2] << 3) | (d[3] >> 5)); + +15 + gf +[3] = +ut8_t +(( +d +[3] << 3) | (d[4] >> 5)); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Namespace.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + #ARDUINOJSON_DO_CONCAT +( +A +, +B +A## + ) +B + +11  + #ARDUINOJSON_CONCAT2 +( +A +, +B + + `ARDUINOJSON_DO_CONCAT +(A, B) + + ) + +12  + #ARDUINOJSON_CONCAT4 +( +A +, +B +, +C +, +D +) \ + +13 + `ARDUINOJSON_CONCAT2 +(ARDUINOJSON_CONCAT2( +A +, +B +), ARDUINOJSON_CONCAT2( +C +, +D +)) + + ) + +14  + #ARDUINOJSON_CONCAT8 +( +A +, +B +, +C +, +D +, +E +, +F +, +G +, +H +) \ + +15 + `ARDUINOJSON_CONCAT2 +( + `ARDUINOJSON_CONCAT4 +( +A +, +B +, +C +, +D +), \ + +16 + `ARDUINOJSON_CONCAT4 +( +E +, +F +, +G +, +H +)) + + ) + +17  + #ARDUINOJSON_CONCAT12 +( +A +, +B +, +C +, +D +, +E +, +F +, +G +, +H +, +I +, +J +, +K +, +L +) \ + +18 + `ARDUINOJSON_CONCAT8 +( +A +, +B +, +C +, +D +, +E +, +F +, +G +, \ + +19 + `ARDUINOJSON_CONCAT4 +( +H +, +I +, +J +, + `ARDUINOJSON_CONCAT2 +( +K +, +L +))) + + ) + +21  + #ARDUINOJSON_NAMESPACE + \ + +22 + `ARDUINOJSON_CONCAT12 +( \ + +23 +ArduoJs +, +ARDUINOJSON_VERSION_MAJOR +, +ARDUINOJSON_VERSION_MINOR +, \ + +24 +ARDUINOJSON_VERSION_REVISION +, +_ +, +ARDUINOJSON_USE_LONG_LONG +, \ + +25 +ARDUINOJSON_USE_DOUBLE +, +ARDUINOJSON_DECODE_UNICODE +, \ + +26 +ARDUINOJSON_ENABLE_NAN +, +ARDUINOJSON_ENABLE_INFINITY +, \ + +27 +ARDUINOJSON_ENABLE_PROGMEM +, +ARDUINOJSON_ENABLE_COMMENTS +) + + ) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 #i +ARDUINOJSON_USE_DOUBLE + + +13  + tFlt +; + +15  + tFlt +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gTFlt +> + +14  + sFltPts + { + +15 +ut32_t + + ggl +; + +16 +ut32_t + + gdecim +; + +17 +t16_t + + gexpڒt +; + +18 +t8_t + + gdecimPs +; + +20 +FltPts +( +TFlt + +vue +) { + +21 +ut32_t + + gmaxDecimPt + = ( +TFlt +) >= 8 ? 1000000000 : 1000000; + +22 + gdecimPs + = ( +TFlt +) >= 8 ? 9 : 6; + +24 + gexpڒt + = +nmize +( +vue +); + +26 + ggl + = +ut32_t +( +vue +); + +28  +ut32_t + + gtmp + = +gl +;mp >= 10;mp /= 10) { + +29 +maxDecimPt + /= 10; + +30 + gdecimPs +--; + +33 +TFlt + + gmad + = ( +vue + - TFlt( +gl +)* TFlt( +maxDecimPt +); + +35 + gdecim + = +ut32_t +( +mad +); + +36 + gmad + = +mad + - +TFlt +( +decim +); + +40 + gdecim + + +ut32_t +( +mad + * 2); + +41 i( + gdecim + > +maxDecimPt +) { + +42 +decim + = 0; + +43 + ggl +++; + +44 i( + gexpڒt + && + ggl + >= 10) { + +45 +expڒt +++; + +46 + ggl + = 1; + +51  + gdecim + % 10 =0 && +decimPs + > 0) { + +52 +decim + /= 10; + +53 + gdecimPs +--; + +57  +t16_t + +nmize +( +TFlt +& +vue +) { + +58  + gFltTs +< + tTFlt +> + tas +; + +59 +t16_t + + gpowsOf10 + = 0; + +61 +t8_t + + gdex + = ( +TFlt +) == 8 ? 8 : 5; + +62  + gb + = 1 << +dex +; + +64 i( + gvue + > +ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD +) { + +65 ; + gdex + >= 0; index--) { + +66 i( + gvue + > +as +:: +posiveByPowOfT +( +dex +)) { + +67 +vue + * +as +:: +giveByPowOfT +( +dex +); + +68 + gpowsOf10 + = +t16_t +( +powsOf10 + + +b +); + +70 + gb + >>= 1; + +74 i( + gvue + > 0 && vu< +ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD +) { + +75 ; + gdex + >= 0; index--) { + +76 i( + gvue + < + gas +:: +giveByPowOfTPlusO +( +dex +)) { + +77 +vue + * +as +:: +posiveByPowOfT +( +dex +); + +78 + gpowsOf10 + = +t16_t +( +powsOf10 + - +b +); + +80 + gb + >>= 1; + +84  + gpowsOf10 +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 + gme + < +tyme + + gT +, + gsize_t + = ( +T +)> + +17  + sFltTs + {}; + +19 + gme + < +tyme + + gT +> + +20  + gFltTs +< + gT +, 8 > { + +21  +ut64_t + + tmtis_ty +; + +22 cڡ  + gmtis_bs + = 52; + +23 cڡ +mtis_ty + + gmtis_max + = + +24 ( +mtis_ty +(1<< +mtis_bs +) - 1; + +26  +t16_t + + texpڒt_ty +; + +27 cڡ +expڒt_ty + + gexpڒt_max + = 308; + +29 + gme + < +tyme + + gTExpڒt +> + +30  +T + +make_t +(T +m +, +TExpڒt + +e +) { + +31 i( + ge + > 0) { + +32  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +33 i( + ge + & 1) + +34 + gm + * +posiveByPowOfT +( +dex +); + +35 + ge + >>= 1; + +38 + ge + = +TExpڒt +(- +e +); + +39  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +40 i( + ge + & 1) + +41 + gm + * +giveByPowOfT +( +dex +); + +42 + ge + >>= 1; + +45  + gm +; + +48  +T + +posiveByPowOfT +( +dex +) { + +49  +T + + gs +[] = { + +55 +fge +(0x4693B8B5, 0xB5056E17), + +56 +fge +(0x4D384F03, 0xE93FF9F5), + +57 +fge +(0x5A827748, 0xF9301D32), + +58 +fge +(0x75154FDD, 0x7F73BF3C) + +60  + gs +[ +dex +]; + +63  +T + +giveByPowOfT +( +dex +) { + +64  +T + + gs +[] = { + +65 +fge +(0x3FB99999, 0x9999999A), + +66 +fge +(0x3F847AE1, 0x47AE147B), + +67 +fge +(0x3F1A36E2, 0xEB1C432D), + +68 +fge +(0x3E45798E, 0xE2308C3A), + +69 +fge +(0x3C9CD2B2, 0x97D889BC), + +70 +fge +(0x3949F623, 0xD5A8A733), + +71 +fge +(0x32A50FFD, 0x44F4A73D), + +72 +fge +(0x255BBA08, 0xCF8C979D), + +73 +fge +(0x0AC80628, 0x64AC6F43) + +75  + gs +[ +dex +]; + +78  +T + +giveByPowOfTPlusO +( +dex +) { + +79  +T + + gs +[] = { + +81 +fge +(0x3FB99999, 0x9999999A), + +82 +fge +(0x3F50624D, 0xD2F1A9FC), + +83 +fge +(0x3E7AD7F2, 0x9ABCAF48), + +84 +fge +(0x3CD203AF, 0x9EE75616), + +85 +fge +(0x398039D6, 0x65896880), + +86 +fge +(0x32DA53FC, 0x9631D10D), + +87 +fge +(0x25915445, 0x81B7DEC2), + +88 +fge +(0x0AFE07B2, 0x7DD78B14) + +90  + gs +[ +dex +]; + +93  +T + +n +() { + +94  +fge +(0x7ff80000, 0x00000000); + +97  +T + +f +() { + +98  +fge +(0x7ff00000, 0x00000000); + +101  +T + +highe +() { + +102  +fge +(0x7FEFFFFF, 0xFFFFFFFF); + +105  +T + +lowe +() { + +106  +fge +(0xFFEFFFFF, 0xFFFFFFFF); + +112  +T + +fge +( +ut32_t + +msb +, ut32_ +lsb +) { + +113  + gs_ +< + gT +>(( +ut64_t +( +msb +<< 32| + glsb +); + +117 + gme + < +tyme + + gT +> + +118  + gFltTs +< + gT +, 4 > { + +119  +ut32_t + + tmtis_ty +; + +120 cڡ  + gmtis_bs + = 23; + +121 cڡ +mtis_ty + + gmtis_max + = + +122 ( +mtis_ty +(1<< +mtis_bs +) - 1; + +124  +t8_t + + texpڒt_ty +; + +125 cڡ +expڒt_ty + + gexpڒt_max + = 38; + +127 + gme + < +tyme + + gTExpڒt +> + +128  +T + +make_t +(T +m +, +TExpڒt + +e +) { + +129 i( + ge + > 0) { + +130  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +131 i( + ge + & 1) + +132 + gm + * +posiveByPowOfT +( +dex +); + +133 + ge + >>= 1; + +136 + ge + = - +e +; + +137  +ut8_t + + gdex + = 0; + ge + != 0; index++) { + +138 i( + ge + & 1) + +139 + gm + * +giveByPowOfT +( +dex +); + +140 + ge + >>= 1; + +143  + gm +; + +146  +T + +posiveByPowOfT +( +dex +) { + +147  +T + + gs +[] = {1e1f, 1e2f, 1e4f, 1e8f, 1e16f, 1e32f}; + +148  + gs +[ +dex +]; + +151  +T + +giveByPowOfT +( +dex +) { + +152  +T + + gs +[] = {1e-1f, 1e-2f, 1e-4f, 1e-8f, 1e-16f, 1e-32f}; + +153  + gs +[ +dex +]; + +156  +T + +giveByPowOfTPlusO +( +dex +) { + +157  +T + + gs +[] = {1e0f, 1e-1f, 1e-3f, 1e-7f, 1e-15f, 1e-31f}; + +158  + gs +[ +dex +]; + +161  +T + +fge +( +ut32_t + +bs +) { + +162  + gs_ +< + gT +>( + gbs +); + +165  +T + +n +() { + +166  +fge +(0x7fc00000); + +169  +T + +f +() { + +170  +fge +(0x7f800000); + +173  +T + +highe +() { + +174  +fge +(0x7f7fffff); + +177  +T + +lowe +() { + +178  +fge +(0xFf7fffff); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 #i +ARDUINOJSON_USE_LONG_LONG + + +15  +t64_t + + tIeg +; + +16  +ut64_t + + tUI +; + +18  + tIeg +; + +19  + tUI +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp + +5 #agm + + + +7 #i +defed +( +__g__ +) + +8 #agm +g + +dgnoic + +push + + +9 #agm +g + +dgnoic + +igned + "-Wconversion" + +10 #i +defed +( +__GNUC__ +) + +11 #i +__GNUC__ + > 4 || (__GNUC__ =4 && +__GNUC_MINOR__ + >= 6) + +12 #agm +GCC + +dgnoic + +push + + +14 #agm +GCC + +dgnoic + +igned + "-Wconversion" + +17  + ~ + +18  + ~ + +19  + ~ + +20  + ~ + +22 +mea + + gARDUINOJSON_NAMESPACE + { + +24 + gme + < +tyme + + gTOut +,ym + gTIn +> + +25 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && ( +TOut +<( +TIn +), + +26 + gbo +>:: +ty + + +27 +nStePosiveIeg +( +TIn + +vue +) { + +28  +vue + < +TIn +( +numic_lims +< +TOut +>:: +highe +()); + +31 + gme + < +tyme + + gTOut +,ym + gTIn +> + +32 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && ( +TIn +< ( +TOut +), + +33 + gbo +>:: +ty + + +34 +nStePosiveIeg +( +TIn +) { + +35  +ue +; + +38 + gme + < +tyme + + gTOut +,ym + gTIn +> + +39 +tyme + + gab_if +< + gis_tg_pot +< + gTOut +>:: +vue +, + gbo +>:: +ty + + +40 +nStePosiveIeg +( +TIn +) { + +41  +ue +; + +44 + gme + < +tyme + + gTOut +,ym + gTIn +> + +45 +tyme + + gab_if +< + gis_tg_pot +< + gTOut +>:: +vue +, + gbo +>:: +ty + + +46 +nSteNegiveIeg +( +TIn +) { + +47  +ue +; + +50 + gme + < +tyme + + gTOut +,ym + gTIn +> + +51 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && +is_sigd +< +TOut +>::value && + +52 ( +TOut +<( +TIn +), + +53 + gbo +>:: +ty + + +54 +nSteNegiveIeg +( +TIn + +vue +) { + +55  +vue + < +TIn +( +numic_lims +< +TOut +>:: +highe +()) + 1; + +58 + gme + < +tyme + + gTOut +,ym + gTIn +> + +59 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && +is_sigd +< +TOut +>::value && + +60 ( +TIn +< ( +TOut +), + +61 + gbo +>:: +ty + + +62 +nSteNegiveIeg +( +TIn +) { + +63  +ue +; + +66 + gme + < +tyme + + gTOut +,ym + gTIn +> + +67 +tyme + + gab_if +< + gis_gl +< + gTOut +>:: +vue + && +is_unsigd +< +TOut +>::value, + +68 + gbo +>:: +ty + + +69 +nSteNegiveIeg +( +TIn +) { + +70  +l +; + +73 + gme + < +tyme + + gTOut +,ym + gTIn +> + +74 +TOut + +cvtPosiveIeg +( +TIn + +vue +) { + +75  + gnStePosiveIeg +< + gTOut +>( + gvue +? +TOut +( +vue +) : 0; + +78 + gme + < +tyme + + gTOut +,ym + gTIn +> + +79 +TOut + +cvtNegiveIeg +( +TIn + +vue +) { + +80  + gnSteNegiveIeg +< + gTOut +>( + gvue +? +TOut +(~ +vue + + 1) : 0; + +83 + gme + < +tyme + + gTOut +,ym + gTIn +> + +84 +tyme + + gab_if +< + gis_tg_pot +< + gTOut +>:: +vue +, TOut>:: +ty + +cvtFlt +( + +85 +TIn + +vue +) { + +86  +TOut +( +vue +); + +89 + gme + < +tyme + + gTOut +,ym + gTIn +> + +90 +tyme + + gab_if +:: +vue +, TOut>:: +ty + +cvtFlt +( + +91 +TIn + +vue +) { + +92  +vue + > +numic_lims +< +TOut +>:: +lowe +() && + +93 +vue + < +numic_lims +< +TOut +>:: +highe +() + +94 ? +TOut +( +vue +) + +99 #i +defed +( +__g__ +) + +100 #agm +g + +dgnoic + +p + + +101 #i +defed +( +__GNUC__ +) + +102 #i +__GNUC__ + > 4 || (__GNUC__ =4 && +__GNUC_MINOR__ + >= 6) + +103 #agm +GCC + +dgnoic + +p + + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseFloat.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13 +le + +T + +rFlt +(cڡ * +s +) { + +15  +tyme + + tchoo_rge +< + tFlt +, + tT +>:: + tty + + tTFlt +; + +16  + grNumb +< + gTFlt +, + gUI +>( + gs +). +me + + gas +< + gT +>(); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseInteger.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13 +T + +rIeg +(cڡ * +s +) { + +15  +tyme + + tchoo_rge +< + tUI +, + ttyme + + tmake_unsigd +< + tT +>:: + tty +>::type + +16 + tTUI +; + +17  + grNumb +< + gFlt +, + gTUI +>( + gs +). +me + + gas +< + gT +>(); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gTFlt +,ym + gTUI +> + +18  + sPdNumb + { + +19 +PdNumb +(: +utVue +(0), +tVue +(0), +_ty +( +VALUE_IS_NULL +) {} + +21 +PdNumb +( +TUI + +vue +, +bo + +is_give +) + +22 : +utVue +( +vue +), + +23 +tVue +( +TFlt +( +vue +)), + +24 +_ty +( +ut8_t +( +is_give + ? +VALUE_IS_NEGATIVE_INTEGER + + +25 : +VALUE_IS_POSITIVE_INTEGER +)) {} + +26 +PdNumb +( +TFlt + +vue +: +tVue +(vue), +_ty +( +VALUE_IS_FLOAT +) {} + +28 + gme + < +tyme + + gT +> + +29 +T + +as +() const { + +30  + g_ty +) { + +31  + gVALUE_IS_NEGATIVE_INTEGER +: + +32  +cvtNegiveIeg +< +T +>( +utVue +); + +33  + gVALUE_IS_POSITIVE_INTEGER +: + +34  +cvtPosiveIeg +< +T +>( +utVue +); + +35  + gVALUE_IS_FLOAT +: + +36  +cvtFlt +< +T +>( +tVue +); + +42 +ut8_t + +ty +() const { + +43  + g_ty +; + +46 +TUI + + gutVue +; + +47 +TFlt + + gtVue +; + +48 +ut8_t + + g_ty +; + +51 + gme + < +tyme + + gA +,ym + gB +> + +52  + gchoo_rge + : +cdiڮ +<(( +A +> ( +B +)), + gA +, + gB +> {}; + +54 + gme + < +tyme + + gTFlt +,ym + gTUI +> + +55 +le + + gPdNumb +< + gTFlt +, + gTUI +> +rNumb +(cڡ * +s +) { + +56  + gFltTs +< + tTFlt +> + tas +; + +57  +tyme + + tchoo_rge +< + ttyme + + tas +:: + tmtis_ty +, + tTUI +>:: + tty + + +58 + tmtis_t +; + +59  +tyme + + tas +:: + texpڒt_ty + + texpڒt_t +; + +60  + gPdNumb +< + tTFlt +, + tTUI +> + ttu_ty +; + +62 +ARDUINOJSON_ASSERT +( +s + != 0); + +64 +bo + + gis_give + = +l +; + +65 * + gs +) { + +67 +is_give + = +ue +; + +68 + gs +++; + +71 +s +++; + +75 #i +ARDUINOJSON_ENABLE_NAN + + +76 i(* + gs + ='n' || * +s + == 'N') + +77  +as +:: +n +(); + +80 #i +ARDUINOJSON_ENABLE_INFINITY + + +81 i(* + gs + ='i' || * +s + == 'I') + +82  +is_give + ? - +as +:: +f +() :raits::inf(); + +85 i(! +isdig +(* +s +&& * + gs + != '.') + +86  +tu_ty +(); + +88 +mtis_t + + gmtis + = 0; + +89 +expڒt_t + + gexpڒt_offt + = 0; + +90 cڡ +mtis_t + + gmaxUt + = +TUI +(-1); + +92  +isdig +(* +s +)) { + +93 +ut8_t + + gdig + = ut8_t(* +s + - '0'); + +94 i( + gmtis + > + gmaxUt + / 10) + +96 + gmtis + *= 10; + +97 i( + gmtis + > + gmaxUt + - + gdig +) + +99 + gmtis + + +dig +; + +100 + gs +++; + +103 i(* + gs + == '\0') + +104  +tu_ty +( +TUI +( +mtis +), +is_give +); + +107  + gmtis + > + gas +:: +mtis_max +) { + +108 +mtis + /= 10; + +109 + gexpڒt_offt +++; + +113  +isdig +(* +s +)) { + +114 + gexpڒt_offt +++; + +115 + gs +++; + +118 i(* + gs + == '.') { + +119 +s +++; + +120  +isdig +(* +s +)) { + +121 i( + gmtis + < + gas +:: +mtis_max + / 10) { + +122 +mtis + = mtis * 10 + +ut8_t +(* +s + - '0'); + +123 + gexpڒt_offt +--; + +125 + gs +++; + +129  + gexpڒt + = 0; + +130 i(* + gs + ='e' || * +s + == 'E') { + +131 +s +++; + +132 +bo + + ggive_expڒt + = +l +; + +133 i(* + gs + == '-') { + +134 +give_expڒt + = +ue +; + +135 + gs +++; + +136 } i(* + gs + == '+') { + +137 +s +++; + +140  +isdig +(* +s +)) { + +141 + gexpڒt + = +expڒt + * 10 + (* +s + - '0'); + +142 i( + gexpڒt + + + gexpڒt_offt + > + gas +:: +expڒt_max +) { + +143 i( +give_expڒt +) + +144  +is_give + ? -0.0f : 0.0f; + +146  + gis_give + ? - + gas +:: +f +(: +as +::inf(); + +148 + gs +++; + +150 i( + ggive_expڒt +) + +151 + gexpڒt + = - +expڒt +; + +153 + gexpڒt + + +expڒt_offt +; + +156 i(* + gs + != '\0') + +157  +tu_ty +(); + +159 +TFlt + + gsu + = +as +:: +make_t +( +ic_ +( +mtis +), +expڒt +); + +161  + gis_give + ? - + gsu + : +su +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 #ifde +_MSC_VER + + +12 #agm +wng +( +push +) + +13 #agm +wng +( +dib + : 4522) + +16 +mea + + gARDUINOJSON_NAMESPACE + { + +18 + gme + < +tyme + + gTObje +,ym + gTSgRef +> + +19 +ass + + gMembProxy + : +public + +VOts +< +MembProxy +< +TObje +, + gTSgRef +> >, + +20 +public + + gVisab + { + +21  + gMembProxy +< + tTObje +, + tTSgRef +> + tthis_ty +; + +23 + gpublic +: + +24 +FORCE_INLINE + +MembProxy +( +TObje + +v +, +TSgRef + +key +) + +25 : +_obje +( +v +), +_key +( +key +) {} + +27 +FORCE_INLINE + +MembProxy +(cڡ MembProxy & +c +) + +28 : +_obje +( +c +._obje), +_key +(src._key) {} + +30 +FORCE_INLINE + +ݔ + +VCڡRef +() const { + +31  +gUpamMemb +(); + +34 +FORCE_INLINE + + gthis_ty + & + gݔ +=(cڡ +this_ty + & +c +) { + +35 +gOrAddUpamMemb +(). +t +( +c +); + +36  * + gthis +; + +39 + gme + < +tyme + + gTVue +> + +40 +FORCE_INLINE + +tyme + + gab_if +:: +vue +, + gthis_ty + &>:: +ty + + +41 +ݔ +=(cڡ +TVue + & +c +) { + +42 +gOrAddUpamMemb +(). +t +( +c +); + +43  * + gthis +; + +49 + gme + < +tyme + + gTCh +> + +50 +FORCE_INLINE + + gthis_ty + & + gݔ +=( +TCh + * +c +) { + +51 +gOrAddUpamMemb +(). +t +( +c +); + +52  * + gthis +; + +55 +FORCE_INLINE + +bo + + gݔ +==( +VCڡRef + +rhs +) const { + +56  +ic_ +< +VCڡRef +>( +gUpamMemb +()= +rhs +; + +59 +FORCE_INLINE + +bo + + gݔ +!=( +VCڡRef + +rhs +) const { + +60  +ic_ +< +VCڡRef +>( +gUpamMemb +()! +rhs +; + +63 +FORCE_INLINE +  +r +() const { + +64 +gUpamMemb +(). +r +(); + +67 +FORCE_INLINE + +bo + +isNu +() const { + +68  +gUpamMemb +(). +isNu +(); + +71 + gme + < +tyme + + gTVue +> + +72 +FORCE_INLINE + +tyme + + gVAs +< + gTVue +>:: +ty + +as +() const { + +73  +gUpamMemb +(). +me + +as +< +TVue +>(); + +76 + gme + < +tyme + + gTVue +> + +77 +FORCE_INLINE + +bo + +is +() const { + +78  +gUpamMemb +(). +me + + gis +< + gTVue +>(); + +81 +FORCE_INLINE + +size_t + +size +() const { + +82  +gUpamMemb +(). +size +(); + +85 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +86 +gUpamMemb +(). +move +( +dex +); + +91 + gme + < +tyme + + gTCh +> + +92 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +>:: +ty + +move +( + +93 +TCh + * +key +) const { + +94 +gUpamMemb +(). +move +( +key +); + +98 + gme + < +tyme + + gTSg +> + +99 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +100 cڡ +TSg + & +key +) const { + +101 +gUpamMemb +(). +move +( +key +); + +104 + gme + < +tyme + + gTVue +> + +105 +FORCE_INLINE + +tyme + + gVTo +< + gTVue +>:: +ty + +to +() { + +106  +gOrAddUpamMemb +(). +me + +to +< +TVue +>(); + +109 + gme + < +tyme + + gTVue +> + +110 +FORCE_INLINE + +bo + +t +(cڡ +TVue + & +vue +) { + +111  +gOrAddUpamMemb +(). +t +( +vue +); + +117 + gme + < +tyme + + gTCh +> + +118 +FORCE_INLINE + +bo + +t +( +TCh + * +vue +) { + +119  +gOrAddUpamMemb +(). +t +( +vue +); + +122 + gme + < +tyme + + gVis +> + +123  +ac +( +Vis + & +vis +) const { + +124  +gUpamMemb +(). +ac +( +vis +); + +127 +FORCE_INLINE + +VRef + +addEmt +() const { + +128  +gOrAddUpamMemb +(). +addEmt +(); + +131 +FORCE_INLINE + +VRef + +gEmt +( +size_t + +dex +) const { + +132  +gUpamMemb +(). +gEmt +( +dex +); + +135 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t + +dex +) const { + +136  +gOrAddUpamMemb +(). +gOrAddEmt +( +dex +); + +142 + gme + < +tyme + + gTCh +> + +143 +FORCE_INLINE + +VRef + +gMemb +( +TCh + * +key +) const { + +144  +gUpamMemb +(). +gMemb +( +key +); + +149 + gme + < +tyme + + gTSg +> + +150 +FORCE_INLINE + +VRef + +gMemb +(cڡ +TSg + & +key +) const { + +151  +gUpamMemb +(). +gMemb +( +key +); + +157 + gme + < +tyme + + gTCh +> + +158 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh + * +key +) const { + +159  +gOrAddUpamMemb +(). +gOrAddMemb +( +key +); + +164 + gme + < +tyme + + gTSg +> + +165 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg + & +key +) const { + +166  +gOrAddUpamMemb +(). +gOrAddMemb +( +key +); + +169 + give +: + +170 +FORCE_INLINE + +VRef + +gUpamMemb +() const { + +171  +_obje +. +gMemb +( +_key +); + +174 +FORCE_INLINE + +VRef + +gOrAddUpamMemb +() const { + +175  + g_obje +. +gOrAddMemb +( +_key +); + +178 +TObje + + g_obje +; + +179 +TSgRef + + g_key +; + +184 #ifde +_MSC_VER + + +185 #agm +wng +( +p +) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gVis +> + +12  +objeAc +(cڡ +CiDa + * +obj +, +Vis + & +vis +) { + +13 i( + gobj +) + +14 + gvis +. +visObje +(* +obj +); + +16 + gvis +. +visNu +(); + +19 +le + +bo + +objeEqus +(cڡ +CiDa + * +lhs +, cڡ CiD* +rhs +) { + +20 i( + glhs + = +rhs +) + +21  +ue +; + +22 i(! + glhs + || ! + grhs +) + +23  + gl +; + +24  + glhs +-> +equsObje +(* +rhs +); + +27 + gme + < +tyme + + gTAddSg +> + +28 +le + +VDa + * +objeGMemb +(cڡ +CiDa + * +obj +, + +29 +TAddSg + +key +) { + +30 i(! + gobj +) + +32  + gobj +-> +gMemb +( +key +); + +35 + gme + < +tyme + + gTAddSg +> + +36  +objeRemove +( +CiDa + * +obj +, +TAddSg + +key +) { + +37 i(! + gobj +) + +39 + gobj +-> +moveMemb +( +key +); + +42 + gme + < +tyme + + gTAddSg +> + +43 +le + +VDa + * +objeGOrAddMemb +( +CiDa + * +obj +, + +44 +TAddSg + +key +, +MemyPo + * +po +) { + +45 i(! + gobj +) + +48  + gobj +-> +gOrAddMemb +( +key +, +po +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTObje +> + +13 + gme + < +tyme + + gTSg +> + +14 +le + +AayRef + + gObjeShtcuts +< + gTObje +>:: +NeedAay +( + +15 cڡ +TSg +& +key +) const { + +16  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +AayRef +>(); + +19 + gme + < +tyme + + gTObje +> + +20 + gme + < +tyme + + gTCh +> + +21 +le + +AayRef + + gObjeShtcuts +< + gTObje +>:: +NeedAay +( +TCh +* +key +) const { + +22  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +AayRef +>(); + +25 + gme + < +tyme + + gTObje +> + +26 + gme + < +tyme + + gTSg +> + +27 +le + +ObjeRef + + gObjeShtcuts +< + gTObje +>:: +NeedObje +( + +28 cڡ +TSg +& +key +) const { + +29  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +ObjeRef +>(); + +32 + gme + < +tyme + + gTObje +> + +33 + gme + < +tyme + + gTCh +> + +34 +le + +ObjeRef + + gObjeShtcuts +< + gTObje +>:: +NeedObje +( + +35 +TCh +* +key +) const { + +36  +im +()-> +gOrAddMemb +( +key +). +me + +to +< +ObjeRef +>(); + +39 + gme + < +tyme + + gTObje +> + +40 + gme + < +tyme + + gTSg +> + +41 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gbo +>:: +ty + + +42 +ObjeShtcuts +< +TObje +>:: +cڏsKey +(cڡ +TSg +& +key +) const { + +43  ! +im +()-> +gMemb +( +key +). +isUndefed +(); + +46 + gme + < +tyme + + gTObje +> + +47 + gme + < +tyme + + gTCh +> + +48 +le + +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + gbo +>:: +ty + + +49 +ObjeShtcuts +< +TObje +>:: +cڏsKey +( +TCh +* +key +) const { + +50  ! +im +()-> +gMemb +( +key +). +isUndefed +(); + +53 + gme + < +tyme + + gTObje +> + +54 + gme + < +tyme + + gTSg +> + +55 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +*>:: +vue +, + +56 + gMembProxy +< + gTObje +, + gTSg +*> >:: +ty + + +57 +ObjeShtcuts +< +TObje +>:: +ݔ +[]( +TSg +* +key +) const { + +58  +MembProxy +< +TObje +, + gTSg +*>(* +im +(), + gkey +); + +61 + gme + < +tyme + + gTObje +> + +62 + gme + < +tyme + + gTSg +> + +63 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + +64 + gMembProxy +< + gTObje +, + gTSg +> >:: +ty + + +65 +ObjeShtcuts +< +TObje +>:: +ݔ +[](cڡ +TSg +& +key +) const { + +66  +MembProxy +< +TObje +, + gTSg +>(* +im +(), + gkey +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cPaP + { + +13 + gpublic +: + +14 +PaP +( +MemyPo + * +po +, +VSl + * + +: +_ +(pool, slot) {} + +16 cڡ +Pa + * + gݔ +->() const { + +17  & + g_ +; + +20 cڡ + gPa + & + gݔ +*() const { + +21  + g_ +; + +24 + give +: + +25 +Pa + +_ +; + +28 as + cObjeIt + { + +29 + gpublic +: + +30 +ObjeIt +(: +_ +(0) {} + +32 +exic + +ObjeIt +( +MemyPo + * +po +, +VSl + * + +) + +33 : +_po +( +po +), +_ +( + +) {} + +35 +Pa + + gݔ +*() const { + +36  +Pa +( +_po +, +_ +); + +38 +PaP + + gݔ +->() { + +39  +PaP +( +_po +, +_ +); + +42 +bo + + gݔ +==(cڡ +ObjeIt + & +h +) const { + +43  +_ + = +h +._slot; + +46 +bo + + gݔ +!=(cڡ +ObjeIt + & +h +) const { + +47  +_ + ! +h +._slot; + +50 + gObjeIt + & + gݔ +++() { + +51 + g_ + = +_ +-> +xt +(); + +52  * + gthis +; + +55 + gObjeIt + & + gݔ ++=( +size_t + +di +) { + +56 +_ + = _-> +xt +( +di +); + +57  * + gthis +; + +60 +VSl + * + +() { + +61  + g_ +; + +64 + give +: + +65 +MemyPo + * +_po +; + +66 +VSl + * + g_ +; + +69 as + cPaCڡP + { + +70 + gpublic +: + +71 +PaCڡP +(cڡ +VSl + * + +: +_ +(slot) {} + +73 cڡ +PaCڡ + * +ݔ +->() const { + +74  & +_ +; + +77 cڡ + gPaCڡ + & + gݔ +*() const { + +78  + g_ +; + +81 + give +: + +82 +PaCڡ + +_ +; + +85 as + cObjeCڡIt + { + +86 + gpublic +: + +87 +ObjeCڡIt +(: +_ +(0) {} + +89 +exic + +ObjeCڡIt +(cڡ +VSl + * + +: +_ +(slot) {} + +91 +PaCڡ + +ݔ +*() const { + +92  +PaCڡ +( +_ +); + +94 +PaCڡP + + gݔ +->() { + +95  +PaCڡP +( +_ +); + +98 +bo + + gݔ +==(cڡ +ObjeCڡIt + & +h +) const { + +99  +_ + = +h +._slot; + +102 +bo + + gݔ +!=(cڡ +ObjeCڡIt + & +h +) const { + +103  +_ + ! +h +._slot; + +106 + gObjeCڡIt + & + gݔ +++() { + +107 + g_ + = +_ +-> +xt +(); + +108  * + gthis +; + +111 + gObjeCڡIt + & + gݔ ++=( +size_t + +di +) { + +112 +_ + = _-> +xt +( +di +); + +113  * + gthis +; + +116 cڡ +VSl + * + +() { + +117  + g_ +; + +120 + give +: + +121 cڡ +VSl + * +_ +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +12  + #JSON_OBJECT_SIZE +( +NUMBER_OF_ELEMENTS +) \ + +13 (( +NUMBER_OF_ELEMENTS +* ( +ARDUINOJSON_NAMESPACE +:: +VSl +)) + + ) + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gTDa +> + +18 as + cObjeRefBa + { + +19 + gpublic +: + +20 +ݔ + +VCڡRef +() const { + +21 cڡ * +da + = +_da +; + +22  +VCڡRef +( +t_ +( +da +)); + +25 + gme + < +tyme + + gVis +> + +26 +FORCE_INLINE +  +ac +( +Vis +& +vis +) const { + +27 +objeAc +( +_da +, +vis +); + +30 +FORCE_INLINE + +bo + +isNu +() const { + +31  + g_da + == 0; + +34 +FORCE_INLINE + +ݔ + +bo +() const { + +35  + g_da + != 0; + +38 +FORCE_INLINE + +size_t + +memyUge +() const { + +39  + g_da + ? _da-> +memyUge +() : 0; + +42 +FORCE_INLINE + +size_t + +ág +() const { + +43  + g_da + ? _da-> +ág +() : 0; + +46 +FORCE_INLINE + +size_t + +size +() const { + +47  + g_da + ? _da-> +size +() : 0; + +50 + geed +: + +51 +ObjeRefBa +( +TDa +* +da +: +_da +(data) {} + +52 +TDa +* +_da +; + +55 +ass + + gObjeCڡRef + : +public + +ObjeRefBa +, + +56 +public + + gVisab + { + +57 +nd + +ass + + gObjeRef +; + +58  + gObjeRefBa + + tba_ty +; + +60 + gpublic +: + +61  +ObjeCڡIt + + t +; + +63 +ObjeCڡRef +(: +ba_ty +(0) {} + +64 +ObjeCڡRef +(cڡ +CiDa +* +da +: +ba_ty +(data) {} + +66 +FORCE_INLINE + + + +beg +() const { + +67 i(! +_da +) + +68  + +(); + +69  + +( +_da +-> +hd +()); + +72 +FORCE_INLINE + + + +d +() const { + +73  + +(); + +78 + gme + < +tyme + + gTSg +> + +79 +FORCE_INLINE + +bo + +cڏsKey +(cڡ +TSg +& +key +) const { + +80  ! +gMemb +( +key +). +isUndefed +(); + +86 + gme + < +tyme + + gTCh +> + +87 +FORCE_INLINE + +bo + +cڏsKey +( +TCh +* +key +) const { + +88  ! +gMemb +( +key +). +isUndefed +(); + +93 + gme + < +tyme + + gTSg +> + +94 +FORCE_INLINE + +VCڡRef + +gMemb +(cڡ +TSg +& +key +) const { + +95  +g_im +( +adtSg +( +key +)); + +101 + gme + < +tyme + + gTCh +> + +102 +FORCE_INLINE + +VCڡRef + +gMemb +( +TCh +* +key +) const { + +103  +g_im +( +adtSg +( +key +)); + +108 + gme + < +tyme + + gTSg +> + +109 +FORCE_INLINE + + +110 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +111 +ݔ +[](cڡ +TSg +& +key +) const { + +112  +g_im +( +adtSg +( +key +)); + +118 + gme + < +tyme + + gTCh +> + +119 +FORCE_INLINE + + +120 +tyme + + gab_if +< + gIsSg +< + gTCh +*>:: +vue +, + gVCڡRef +>:: +ty + + +121 +ݔ +[]( +TCh +* +key +) const { + +122  +g_im +( +adtSg +( +key +)); + +125 +FORCE_INLINE + +bo + + gݔ +==( +ObjeCڡRef + +rhs +) const { + +126  +objeEqus +( +_da +, +rhs +._data); + +129 + give +: + +130 +me + < +tyme + +TAddSg +> + +131 +FORCE_INLINE + +VCڡRef + +g_im +( +TAddSg + +key +) const { + +132  +VCڡRef +( +objeGMemb +( +_da +, +key +)); + +136 +ass + + gObjeRef + : +public + +ObjeRefBa +< +CiDa +>, + +137 +public + + gObjeShtcuts +< + gObjeRef +>, + +138 +public + + gVisab + { + +139  + gObjeRefBa +< + tCiDa +> + tba_ty +; + +141 + gpublic +: + +142  +ObjeIt + + t +; + +144 +FORCE_INLINE + +ObjeRef +(: +ba_ty +(0), +_po +(0) {} + +145 +FORCE_INLINE + +ObjeRef +( +MemyPo +* +buf +, +CiDa +* +da +) + +146 : +ba_ty +( +da +), +_po +( +buf +) {} + +148 +ݔ + +VRef +() const { + +149 * + gda + = +_da +; + +150  +VRef +( +_po +, +t_ +< +VDa +*>( +da +)); + +153 +ݔ + +ObjeCڡRef +() const { + +154  +ObjeCڡRef +( +_da +); + +157 +FORCE_INLINE + + + +beg +() const { + +158 i(! + g_da +) + +159  + +(); + +160  + +( +_po +, +_da +-> +hd +()); + +163 +FORCE_INLINE + + + +d +() const { + +164  + +(); + +167  +r +() const { + +168 i(! + g_da +) + +170 + g_da +-> +r +(); + +173 +FORCE_INLINE + +bo + +t +( +ObjeCڡRef + +c +) { + +174 i(! + g_da + || ! + gc +._data) + +175  + gl +; + +176  + g_da +-> +cyFrom +(* +c +. +_da +, +_po +); + +181 + gme + < +tyme + + gTSg +> + +182 +FORCE_INLINE + +VRef + +gMemb +(cڡ +TSg +& +key +) const { + +183  +VRef +( +_po +, +objeGMemb +( +_da +, +adtSg +( +key +))); + +189 + gme + < +tyme + + gTCh +> + +190 +FORCE_INLINE + +VRef + +gMemb +( +TCh +* +key +) const { + +191  +VRef +( +_po +, +objeGMemb +( +_da +, +adtSg +( +key +))); + +196 + gme + < +tyme + + gTSg +> + +197 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg +& +key +) const { + +198  +VRef +( +_po +, + +199 +objeGOrAddMemb +( +_da +, +adtSg +( +key +), +_po +)); + +205 + gme + < +tyme + + gTCh +> + +206 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh +* +key +) const { + +207  +VRef +( +_po +, + +208 +objeGOrAddMemb +( +_da +, +adtSg +( +key +), +_po +)); + +211 +FORCE_INLINE + +bo + + gݔ +==( +ObjeRef + +rhs +) const { + +212  +objeEqus +( +_da +, +rhs +._data); + +215 +FORCE_INLINE +  +move +( + + + +) const { + +216 i(! + g_da +) + +218 + g_da +-> +moveSl +( + +. + +()); + +223 + gme + < +tyme + + gTSg +> + +224 +FORCE_INLINE +  +move +(cڡ +TSg +& +key +) const { + +225 +objeRemove +( +_da +, +adtSg +( +key +)); + +231 + gme + < +tyme + + gTCh +> + +232 +FORCE_INLINE +  +move +( +TCh +* +key +) const { + +233 +objeRemove +( +_da +, +adtSg +( +key +)); + +236 + give +: + +237 +MemyPo +* +_po +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTPt +,ym + gTSgRef +> + +13 +ass + + gMembProxy +; + +15 + gme + < +tyme + + gTObje +> + +16 as + cObjeShtcuts + { + +17 + gpublic +: + +20 +me + < +tyme + +TSg +> + +21 +FORCE_INLINE + +tyme + +ab_if +< +IsSg +< +TSg +>:: +vue +, + gbo +>:: +ty + + +22 +cڏsKey +(cڡ +TSg + & +key +) const; + +27 + gme + < +tyme + + gTCh +> + +28 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +, + gbo +>:: +ty + + +29 +cڏsKey +( +TCh + * +key +) const; + +33 + gme + < +tyme + + gTSg +> + +34 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + +35 + gMembProxy +< + gTObje +, + gTSg +> >:: +ty + + +36 +ݔ +[](cڡ +TSg + & +key +) const; + +41 + gme + < +tyme + + gTCh +> + +42 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +, + +43 + gMembProxy +< + gTObje +, + gTCh + *> >:: +ty + + +44 +ݔ +[]( +TCh + * +key +) const; + +48 + gme + < +tyme + + gTSg +> + +49 +FORCE_INLINE + +AayRef + +NeedAay +(cڡ +TSg + & +key +) const; + +54 + gme + < +tyme + + gTCh +> + +55 +FORCE_INLINE + +AayRef + +NeedAay +( +TCh + * +key +) const; + +59 + gme + < +tyme + + gTSg +> + +60 +ObjeRef + +NeedObje +(cڡ +TSg + & +key +) const; + +65 + gme + < +tyme + + gTCh +> + +66 +ObjeRef + +NeedObje +( +TCh + * +key +) const; + +68 + give +: + +69 cڡ +TObje + * +im +() const { + +70  +ic_ +( +this +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Object/Pair.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cPa + { + +13 + gpublic +: + +14 +Pa +( +MemyPo +* +po +, +VSl +* + +) { + +15 i( + g +) { + +16 + g_key + = +Sg +( + +-> +key +(), !-> +ownsKey +()); + +17 + g_vue + = +VRef +( +po +, + +-> +da +()); + +21 +Sg + +key +() const { + +22  + g_key +; + +25 +VRef + +vue +() const { + +26  + g_vue +; + +29 + give +: + +30 +Sg + +_key +; + +31 +VRef + + g_vue +; + +34 as + cPaCڡ + { + +35 + gpublic +: + +36 +PaCڡ +(cڡ +VSl +* + +) { + +37 i( + +) { + +38 +_key + = +Sg +( + +-> +key +(), !-> +ownsKey +()); + +39 + g_vue + = +VCڡRef +( + +-> +da +()); + +43 +Sg + +key +() const { + +44  + g_key +; + +47 +VCڡRef + +vue +() const { + +48  + g_vue +; + +51 + give +: + +52 +Sg + +_key +; + +53 +VCڡRef + + g_vue +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantCasts.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTIm +> + +12 as + cVCas + { + +13 + gpublic +: + +14 +me + < +tyme + +T +> + +15 +FORCE_INLINE + +ݔ + +T +() const { + +16  +im +()-> +me + +as +< +T +>(); + +19 + give +: + +20 cڡ +TIm + * +im +() const { + +21  +ic_ +( +this +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantComparisons.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +,ym + gEb + = > + +12  +Comr +; + +14 + gme + < +tyme + + gT +> + +15  + gComr +< + gT +, +tyme + + gab_if +< + gIsSg +:: +vue +>:: +ty +> { + +16 +T + +rhs +; + +17  + gsu +; + +19 +exic + +Comr +( +T + +vue +: +rhs +(vue), +su +(1) {} + +21  +visAay +(cڡ +CiDa + &) {} + +22  +visObje +(cڡ +CiDa + &) {} + +23  +visFlt +( +Flt +) {} + +24  +visSg +(cڡ * +lhs +) { + +25 + gsu + = - +adtSg +( +rhs +). +com +( +lhs +); + +27  +visRawJs +(cڡ *, +size_t +) {} + +28  +visNegiveIeg +( +UI +) {} + +29  +visPosiveIeg +( +UI +) {} + +30  +visBoޗn +( +bo +) {} + +31  +visNu +() { + +32 + gsu + = +adtSg +( +rhs +). +com +( +NULL +); + +36 + gme + < +tyme + + gT +> + +37 +tyme + + gab_if +< + gis_sigd +< + gT +>:: +vue +, >:: +ty + +sign +(cڡ +T + &value) { + +38  +vue + < 0 ? -1 : value > 0 ? 1 : 0; + +41 + gme + < +tyme + + gT +> + +42 +tyme + + gab_if +< + gis_unsigd +< + gT +>:: +vue +, >:: +ty + +sign +(cڡ +T + &value) { + +43  +vue + > 0 ? 1 : 0; + +46 + gme + < +tyme + + gT +> + +47  + gComr +< + gT +, +tyme + + gab_if +< + gis_gl +:: +vue + || + +48 +is_tg_pot +< +T +>:: +vue +>:: +ty +> { + +49 +T + +rhs +; + +50  + gsu +; + +52 +exic + +Comr +( +T + +vue +: +rhs +(vue), +su +(1) {} + +54  +visAay +(cڡ +CiDa + &) {} + +55  +visObje +(cڡ +CiDa + &) {} + +56  +visFlt +( +Flt + +lhs +) { + +57 + gsu + = +sign +( +lhs + - +ic_ +< +Flt +>( +rhs +)); + +59  +visSg +(const *) {} + +60  +visRawJs +(cڡ *, +size_t +) {} + +61  +visNegiveIeg +( +UI + +lhs +) { + +62 + gsu + = - +sign +( +ic_ +< +T +>( +lhs ++ +rhs +); + +64  +visPosiveIeg +( +UI + +lhs +) { + +65 + gsu + = +ic_ +< +T +>( +lhs +< +rhs + ? -1 : static_cast(lhs) >hs ? 1 : 0; + +67  +visBoޗn +( +bo +) {} + +68  +visNu +() {} + +71 + gme + <> + +72  + gComr +< + gbo +, > { + +73 +bo + + grhs +; + +74  + gsu +; + +76 +exic + +Comr +( +bo + +vue +: +rhs +(vue), +su +(1) {} + +78  +visAay +(cڡ +CiDa + &) {} + +79  +visObje +(cڡ +CiDa + &) {} + +80  +visFlt +( +Flt +) {} + +81  +visSg +(const *) {} + +82  +visRawJs +(cڡ *, +size_t +) {} + +83  +visNegiveIeg +( +UI +) {} + +84  +visPosiveIeg +( +UI +) {} + +85  +visBoޗn +( +bo + +lhs +) { + +86 + gsu + = +ic_ +<>( +lhs + - +rhs +); + +88  +visNu +() {} + +91 #i +ARDUINOJSON_HAS_NULLPTR + + +92 + gme + <> + +93  + gComr +< +dety +( +nuαr +), > { + +94  + gsu +; + +96 +exic + +Comr +( +dety +( +nuαr +): +su +(1) {} + +98  +visAay +(cڡ +CiDa + &) {} + +99  +visObje +(cڡ +CiDa + &) {} + +100  +visFlt +( +Flt +) {} + +101  +visSg +(const *) {} + +102  +visRawJs +(cڡ *, +size_t +) {} + +103  +visNegiveIeg +( +UI +) {} + +104  +visPosiveIeg +( +UI +) {} + +105  +visBoޗn +( +bo +) {} + +106  +visNu +() { + +107 + gsu + = 0; + +112 + gme + < +tyme + + gTV +> + +113 as + cVComriss + { + +114 + give +: + +115 +me + < +tyme + +T +> + +116  +com +( +TV + +lhs +, cڡ +T + & +rhs +) { + +117 + gComr +< + gT +> +comr +( +rhs +); + +118 + glhs +. +ac +( +comr +); + +119  + gcomr +. + gsu +; + +122 + gpublic +: + +124 +me + < +tyme + +T +> + +125 +nd + +bo + +ݔ +==( +T + * +lhs +, +TV + + grhs +) { + +126  +com +( +rhs +, +lhs +) == 0; + +128 + gme + < +tyme + + gT +> + +129 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +==( + +130 cڡ +T + & +lhs +, +TV + + grhs +) { + +131  +com +( +rhs +, +lhs +) == 0; + +135 + gme + < +tyme + + gT +> + +136 +nd + +bo + + gݔ +==( +TV + +lhs +, +T + * + grhs +) { + +137  +com +( +lhs +, +rhs +) == 0; + +139 + gme + < +tyme + + gT +> + +140 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +==( + +141 +TV + +lhs +, cڡ + gT + & + grhs +) { + +142  +com +( +lhs +, +rhs +) == 0; + +146 + gme + < +tyme + + gT +> + +147 +nd + +bo + + gݔ +!=( +T + * +lhs +, +TV + + grhs +) { + +148  +com +( +rhs +, +lhs +) != 0; + +150 + gme + < +tyme + + gT +> + +151 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +!=( + +152 cڡ +T + & +lhs +, +TV + + grhs +) { + +153  +com +( +rhs +, +lhs +) != 0; + +157 + gme + < +tyme + + gT +> + +158 +nd + +bo + + gݔ +!=( +TV + +lhs +, +T + * + grhs +) { + +159  +com +( +lhs +, +rhs +) != 0; + +161 + gme + < +tyme + + gT +> + +162 +nd + +tyme + + gab_if +:: +vue +, + gbo +>:: +ty + +ݔ +!=( + +163 +TV + +lhs +, cڡ + gT + & + grhs +) { + +164  +com +( +lhs +, +rhs +) != 0; + +168 + gme + < +tyme + + gT +> + +169 +nd + +bo + + gݔ +<( +T + * + glhs +, +TV + + grhs +) { + +170  +com +( +rhs +, +lhs +) > 0; + +172 + gme + < +tyme + + gT +> + +173 +nd + +bo + + gݔ +<(cڡ + gT + & + glhs +, +TV + + grhs +) { + +174  +com +( +rhs +, +lhs +) > 0; + +178 + gme + < +tyme + + gT +> + +179 +nd + +bo + + gݔ +<( +TV + + glhs +, +T + * + grhs +) { + +180  +com +( +lhs +, +rhs +) < 0; + +182 + gme + < +tyme + + gT +> + +183 +nd + +bo + + gݔ +<( +TV + + glhs +, cڡ + gT + & + grhs +) { + +184  +com +( +lhs +, +rhs +) < 0; + +188 + gme + < +tyme + + gT +> + +189 +nd + +bo + + gݔ +<=( +T + * +lhs +, +TV + + grhs +) { + +190  +com +( +rhs +, +lhs +) >= 0; + +192 + gme + < +tyme + + gT +> + +193 +nd + +bo + + gݔ +<=(cڡ +T + & +lhs +, +TV + + grhs +) { + +194  +com +( +rhs +, +lhs +) >= 0; + +198 + gme + < +tyme + + gT +> + +199 +nd + +bo + + gݔ +<=( +TV + +lhs +, +T + * + grhs +) { + +200  +com +( +lhs +, +rhs +) <= 0; + +202 + gme + < +tyme + + gT +> + +203 +nd + +bo + + gݔ +<=( +TV + +lhs +, cڡ + gT + & + grhs +) { + +204  +com +( +lhs +, +rhs +) <= 0; + +208 + gme + < +tyme + + gT +> + +209 +nd + +bo + + gݔ +>( +T + * + glhs +, +TV + + grhs +) { + +210  +com +( +rhs +, +lhs +) < 0; + +212 + gme + < +tyme + + gT +> + +213 +nd + +bo + + gݔ +>(cڡ + gT + & + glhs +, +TV + + grhs +) { + +214  +com +( +rhs +, +lhs +) < 0; + +218 + gme + < +tyme + + gT +> + +219 +nd + +bo + + gݔ +>( +TV + + glhs +, +T + * + grhs +) { + +220  +com +( +lhs +, +rhs +) > 0; + +222 + gme + < +tyme + + gT +> + +223 +nd + +bo + + gݔ +>( +TV + + glhs +, cڡ + gT + & + grhs +) { + +224  +com +( +lhs +, +rhs +) > 0; + +228 + gme + < +tyme + + gT +> + +229 +nd + +bo + + gݔ +>=( +T + * +lhs +, +TV + + grhs +) { + +230  +com +( +rhs +, +lhs +) <= 0; + +232 + gme + < +tyme + + gT +> + +233 +nd + +bo + + gݔ +>=(cڡ +T + & +lhs +, +TV + + grhs +) { + +234  +com +( +rhs +, +lhs +) <= 0; + +238 + gme + < +tyme + + gT +> + +239 +nd + +bo + + gݔ +>=( +TV + +lhs +, +T + * + grhs +) { + +240  +com +( +lhs +, +rhs +) >= 0; + +242 + gme + < +tyme + + gT +> + +243 +nd + +bo + + gݔ +>=( +TV + +lhs +, cڡ + gT + & + grhs +) { + +244  +com +( +lhs +, +rhs +) >= 0; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOperators.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +tyme + + gTIm +> + +15 +ass + + gVOts + : +public + +VCas +< +TIm +>, + +16 +public + + gVComriss +< + gTIm +>, + +17 +public + + gVOr +< + gTIm +>, + +18 +public + + gVShtcuts +< + gTIm +> {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOr.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gTIm +> + +14 as + cVOr + { + +15 + gpublic +: + +17 +me + < +tyme + +T +> + +18 +T + +ݔ +|(cڡ T & +deuVue +) const { + +19 i( +im +()-> +me + +is +< +T +>()) + +20  +im +()-> +me + +as +< +T +>(); + +22  + gdeuVue +; + +27 cڡ * + gݔ +|(cڡ * + gdeuVue +) const { + +28 cڡ * + gvue + = +im +()-> +me + +as +(); + +29  + gvue + ? vu: +deuVue +; + +32 + give +: + +33 cڡ +TIm + * +im +() const { + +34  +ic_ +( +this +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantShortcuts.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTV +> + +13 +ass + + gVShtcuts + : +public + +ObjeShtcuts +< +TV +>, + +14 +public + + gAayShtcuts +< + gTV +> { + +15 + gpublic +: + +16 +usg + +AayShtcuts +< +TV +>:: +NeedAay +; + +17 +usg + + gAayShtcuts +< + gTV +>:: +NeedObje +; + +18 +usg + + gAayShtcuts +< + gTV +>:: +ݔ +[]; + +19 +usg + + gObjeShtcuts +< + gTV +>:: +NeedAay +; + +20 +usg + + gObjeShtcuts +< + gTV +>:: +NeedObje +; + +21 +usg + + gObjeShtcuts +< + gTV +>:: +ݔ +[]; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~"mh.h +" + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + < +tyme + + gT +,ym + gF +> + +16  + ss__t + { + +18 +F + + gw +; + +19 +T + + gda +; + +23 + gme + < +tyme + + gT +,ym + gF +> + +24 +T + +s_ +( +F + +w_da +) { + +25 + gs__t +< + gT +, + gF +> + gac +; + +26 + gac +. + gw + = +w_da +; + +27  + gac +. + gda +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp + +5 #agm + + + +7  + ~ + +9 #i +ARDUINOJSON_DEBUG + + +10  + ~ + +11  + #ARDUINOJSON_ASSERT +( +X + + `as +(X) + + ) + +13  + #ARDUINOJSON_ASSERT +( +X +(()0) + + ) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp + +5 #agm + + + +7 #ifde +_MSC_VER + + +9  + #FORCE_INLINE + + +10  + #NO_INLINE + + `__deec +( +nole +) + + ) + +11  + #DEPRECATED +( +msg + + `__deec +( + `dd +(msg)) + + ) + +13 #i +defed +( +__GNUC__ +) + +15  + #FORCE_INLINE + + `__ibu__ +(( +ways_le +)) + + ) + +16  + #NO_INLINE + + `__ibu__ +(( +nole +)) + + ) + +17 #i +__GNUC__ + > 4 || (__GNUC__ =4 && +__GNUC_MINOR__ + >= 5) + +18  + #DEPRECATED +( +msg + + `__ibu__ +(( + `dd +(msg))) + + ) + +20  + #DEPRECATED +( +msg + + `__ibu__ +(( +dd +)) + + ) + +25  + #FORCE_INLINE + + + ) + +26  + #NO_INLINE + + + ) + +27  + #DEPRECATED +( +msg +) + + ) + +31 #i +__lulus + >= 201103L + +32  + #NOEXCEPT + +nx + + + ) + +34  + #NOEXCEPT + + `throw +() + + ) + +37 #i +defed +( +__has_ibu +) + +38 #i +__has_ibu +( +no_nize +) + +39  + #ARDUINOJSON_NO_SANITIZE +( +check + + `__ibu__ +(( + `no_nize +(check))) + + ) + +41  + #ARDUINOJSON_NO_SANITIZE +( +check +) + + ) + +44  + #ARDUINOJSON_NO_SANITIZE +( +check +) + + ) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +le + +bo + +isdig +( +c +) { + +12  '0' < +c + && c <= '9'; + +15 +le + +bo + +issign +( +c +) { + +16  '-' = +c + || c == '+'; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/gsl/not_null.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13 as + cn_nu + { + +14 + gpublic +: + +15 +exic + +n_nu +( +T + +r +: +_r +(ptr) { + +16 +ARDUINOJSON_ASSERT +( +r + ! +NULL +); + +19 +T + +g +() const { + +20 +ARDUINOJSON_ASSERT +( +_r + ! +NULL +); + +21  + g_r +; + +24 + give +: + +25 +T + +_r +; + +28 + gme + < +tyme + + gT +> + +29 + gn_nu +< + gT +> + $make_n_nu +( +T + +r +) { + +30 + `ARDUINOJSON_ASSERT +( +r + ! +NULL +); + +31  +n_nu +< +T +>( +r +); + +32 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp + +5 #agm + + + +7  + ~"ty_as.h +" + +9 #ifde +_MSC_VER + + +10 #agm +wng +( +push +) + +11 #agm +wng +( +dib + : 4310) + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gT +,ym + gEb + = > + +18  +numic_lims +; + +20 + gme + < +tyme + + gT +> + +21  + gnumic_lims +< + gT +, +tyme + + gab_if +< + gis_unsigd +:: +vue +>:: +ty +> { + +22  +T + +lowe +() { + +25  +T + +highe +() { + +26  +T +(-1); + +30 + gme + < +tyme + + gT +> + +31  + gnumic_lims +< + +32 + gT +, +tyme + + gab_if +< + gis_gl +:: +vue + && +is_sigd +< +T +>::vue>:: +ty +> { + +33  +T + +lowe +() { + +34  +T +(T(1) << ((T) * 8 - 1)); + +36  +T + +highe +() { + +37  +T +(~ +lowe +()); + +43 #ifde +_MSC_VER + + +44 #agm +wng +( +p +) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +14 #ide +i + + +15 + gme + < +tyme + + gT +> + +16 +bo + +i +( +T + +x +) { + +17  + gx + ! +x +; + +21 #ide +isf + + +22 + gme + < +tyme + + gT +> + +23 +bo + +isf +( +T + +x +) { + +24  + gx + !0.0 && +x + * 2 == x; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +size_t + + gX +, size_ + gY +, +bo + + gMaxIsX + = ( +X + > +Y +)> + +15  + sMax + {}; + +17 + gme + < +size_t + + gX +, size_ + gY +> + +18  + gMax +< + gX +, + gY +, + gue +> { + +19 cڡ +size_t + + gvue + = +X +; + +22 + gme + < +size_t + + gX +, size_ + gY +> + +23  + gMax +< + gX +, + gY +, + gl +> { + +24 cڡ +size_t + + gvue + = +Y +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +13  + spgm_p + { + +14 +pgm_p +(cڡ * +p +: +addss +(p) {} + +15 cڡ * +addss +; + +19 #ide +_P + + +20 +le + +size_t + + $_P +( +ARDUINOJSON_NAMESPACE +:: +pgm_p + +s +) { + +21 cڡ * +p + = +s +. +addss +; + +22 + `ARDUINOJSON_ASSERT +( +p + ! +NULL +); + +23  + `pgm_ad_by +( +p +))++; + +24  + `size_t +( +p + - +s +. +addss +); + +25 + } +} + +28 #ide +cmp_P + + +29 +le +  + $cmp_P +(cڡ * +a +, +ARDUINOJSON_NAMESPACE +:: +pgm_p + +b +, +size_t + +n +) { + +30 cڡ * +s1 + = +a +; + +31 cڡ * +s2 + = +b +. +addss +; + +32 + `ARDUINOJSON_ASSERT +( +s1 + ! +NULL +); + +33 + `ARDUINOJSON_ASSERT +( +s2 + ! +NULL +); + +34  +n +-- > 0) { + +35  +c1 + = * +s1 +++; + +36  +c2 + = +ic_ +<>( + `pgm_ad_by +( +s2 +++)); + +37 i( +c1 + < +c2 +) + +39 i( +c1 + > +c2 +) + +41 i( +c1 + == 0 ) + +45 + } +} + +48 #ide +rcmp_P + + +49 +le +  + $rcmp_P +(cڡ * +a +, +ARDUINOJSON_NAMESPACE +:: +pgm_p + +b +) { + +50 cڡ * +s1 + = +a +; + +51 cڡ * +s2 + = +b +. +addss +; + +52 + `ARDUINOJSON_ASSERT +( +s1 + ! +NULL +); + +53 + `ARDUINOJSON_ASSERT +( +s2 + ! +NULL +); + +55  +c1 + = * +s1 +++; + +56  +c2 + = +ic_ +<>( + `pgm_ad_by +( +s2 +++)); + +57 i( +c1 + < +c2 +) + +59 i( +c1 + > +c2 +) + +61 i( +c1 + == 0 ) + +64 + } +} + +67 #ide +memy_P + + +68 +le + * + $memy_P +(* +d +, +ARDUINOJSON_NAMESPACE +:: +pgm_p + +c +, +size_t + +n +) { + +69 +ut8_t +* +d + = +t_ +( +d +); + +70 cڡ * +s + = +c +. +addss +; + +71 + `ARDUINOJSON_ASSERT +( +d + ! +NULL +); + +72 + `ARDUINOJSON_ASSERT +( +s + ! +NULL +); + +73  +n +-- > 0) { + +74 * +d +++ = + `pgm_ad_by +( +s +++); + +76  +d +; + +77 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 +le +  +_rcmp +(cڡ * +a +, cڡ * +b +) { + +14 i( + ga + = +b +) + +16 i(! + ga +) + +18 i(! + gb +) + +20  +rcmp +( +a +, +b +); + +23 +le +  +_cmp +(cڡ * +a +, cڡ * +b +, +size_t + +n +) { + +24 i( + ga + = +b +) + +26 i(! + ga +) + +28 i(! + gb +) + +30  +cmp +( +a +, +b +, +n +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp + +5 #agm + + + +7  + ~"ty_as/cdiڮ.h +" + +8  + ~"ty_as/ab_if.h +" + +9  + ~"ty_as/gl_cڡt.h +" + +10  + ~"ty_as/is_y.h +" + +11  + ~"ty_as/is_ba_of.h +" + +12  + ~"ty_as/is_ass.h +" + +13  + ~"ty_as/is_cڡ.h +" + +14  + ~"ty_as/is_cvtib.h +" + +15  + ~"ty_as/is_um.h +" + +16  + ~"ty_as/is_tg_pot.h +" + +17  + ~"ty_as/is_gl.h +" + +18  + ~"ty_as/is_me.h +" + +19  + ~"ty_as/is_sigd.h +" + +20  + ~"ty_as/is_unsigd.h +" + +21  + ~"ty_as/make_unsigd.h +" + +22  + ~"ty_as/move_cڡ.h +" + +23  + ~"ty_as/move_n.h +" + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +bo + + gCdi +, +ass + + gTrueTy +, cs + gFTy +> + +12  + scdiڮ + { + +13  +TrueTy + + tty +; + +16 + gme + < +ass + + gTrueTy +, cs + gFTy +> + +17  + gcdiڮ +< + gl +, + gTrueTy +, + gFTy +> { + +18  +FTy + + tty +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12 +T + +dev +(); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +bo + + gCdi +, +tyme + + gT + = > + +13  + sab_if + {}; + +15 + gme + < +tyme + + gT +> + +16  + gab_if +< + gue +, + gT +> { + +17  +T + + tty +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +, +T + + gv +> + +12  + sgl_cڡt + { + +13 cڡ +T + + gvue + = +v +; + +16  + ggl_cڡt +< + tbo +, + tue +> + tue_ty +; + +17  + ggl_cڡt +< + tbo +, + tl +> + tl_ty +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gT +> + +14  + gis_y + : +l_ty + {}; + +16 + gme + < +tyme + + gT +> + +17  + gis_y +< + gT +[]> : +ue_ty + {}; + +19 + gme + < +tyme + + gT +, +size_t + + gN +> + +20  + gis_y +< + gT +[ +N +]> : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gTBa +,ym + gTDived +> + +14 as + cis_ba_of + { + +15 + geed +: + +16  + tYes +[1]; + +17  + tNo +[2]; + +19  + gYes + & +obe +(cڡ +TBa + *); + +20  + gNo + & +obe +(...); + +22 + gpublic +: + +23 cڡ +bo + +vue + = + +24 ( +obe +( +t_ +< +TDived + *>(0))=( +Yes +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp + +5 #agm + + + +7  + ~"dev.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12  + sis_ass + { + +13 + geed +: + +14  + tYes +[1]; + +15  + tNo +[2]; + +17 + gme + < +tyme + + gU +> + +18  + gYes + & +obe +(( +U +::*)()); + +19 + gme + < + gtyme +> + +20  + gNo + & +obe +(...); + +22 + gpublic +: + +23 cڡ +bo + +vue + = ( +obe +< +T +>(0)=( +Yes +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13  + gis_cڡ + : +l_ty + {}; + +15 + gme + < +tyme + + gT +> + +16  + gis_cڡ + : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp + +5 #agm + + + +7  + ~"dev.h +" + +9 #ifde +_MSC_VER + + +10 #agm +wng +( +push +) + +12 #agm +wng +( +dib + : 4244) + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gFrom +,ym + gTo +> + +18  + sis_cvtib + { + +19 + geed +: + +20  + tYes +[1]; + +21  + tNo +[2]; + +23  + gYes + & +obe +( +To +); + +24  + gNo + & +obe +(...); + +26 + gpublic +: + +27 cڡ +bo + +vue + = ( +obe +( +dev +< +From +>())=( +Yes +); + +32 #ifde +_MSC_VER + + +33 #agm +wng +( +p +) + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp + +5 #agm + + + +7  + ~"is_ass.h +" + +8  + ~"is_cvtib.h +" + +9  + ~"is_tg_pot.h +" + +10  + ~"is_gl.h +" + +11  + ~"is_me.h +" + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 + gme + < +tyme + + gT +> + +16  + sis_um + { + +17 cڡ +bo + + gvue + = +is_cvtib +< +T +, >:: +vue + && + +18 ! +is_ass +< +T +>:: +vue + && ! +is_gl +::value && + +19 ! +is_tg_pot +< +T +>:: +vue + && + +20 ! +is_me +< +T +, + gbo +>:: +vue +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < + gtyme +> + +12  + gis_tg_pot + : +l_ty + {}; + +14 + gme + <> + +15  + gis_tg_pot +<> : +ue_ty + {}; + +17 + gme + <> + +18  + gis_tg_pot +<> : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp + +5 #agm + + + +7  + ~ + +8  + ~"is_me.h +" + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gT +> + +14  + sis_gl + { + +15 cڡ +bo + + gvue + = + +16 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +17 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +18 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +19 +is_me +< +T +, sigd >:: +vue + || is_same::value || + +20 #i +ARDUINOJSON_HAS_LONG_LONG + + +21 +is_me +< +T +, sigd >:: +vue + || + +22 +is_me +< +T +, >:: +vue + || + +24 #i +ARDUINOJSON_HAS_INT64 + + +25 +is_me +< +T +, sigd + g__t64 +>:: +vue + || + +26 +is_me +< +T +,  + g__t64 +>:: +vue + || + +28 +is_me +< +T +, >:: +vue +; + +33 + gme + < +tyme + + gT +> + +34  + gis_gl + : +is_gl +< +T +> {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +,ym + gU +> + +13  + gis_me + : +l_ty + {}; + +15 + gme + < +tyme + + gT +> + +16  + gis_me +< + gT +, T> : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +8 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < + gtyme +> + +11  + gis_sigd + : +l_ty + {}; + +13 + gme + <> + +14  + gis_sigd +<> : +ue_ty + {}; + +16 + gme + <> + +17  + gis_sigd + : +ue_ty + {}; + +19 + gme + <> + +20  + gis_sigd + : +ue_ty + {}; + +22 + gme + <> + +23  + gis_sigd + : +ue_ty + {}; + +25 + gme + <> + +26  + gis_sigd + : +ue_ty + {}; + +28 + gme + <> + +29  + gis_sigd +<> : +ue_ty + {}; + +31 + gme + <> + +32  + gis_sigd +<> : +ue_ty + {}; + +34 #i +ARDUINOJSON_HAS_LONG_LONG + + +35 + gme + <> + +36  + gis_sigd + : +ue_ty + {}; + +39 #i +ARDUINOJSON_HAS_INT64 + + +40 + gme + <> + +41  + gis_sigd + : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +8 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < + gtyme +> + +11  + gis_unsigd + : +l_ty + {}; + +13 + gme + <> + +14  + gis_unsigd +< + gbo +> : +ue_ty + {}; + +16 + gme + <> + +17  + gis_unsigd +<> : +ue_ty + {}; + +19 + gme + <> + +20  + gis_unsigd +<> : +ue_ty + {}; + +22 + gme + <> + +23  + gis_unsigd +<> : +ue_ty + {}; + +25 + gme + <> + +26  + gis_unsigd +<> : +ue_ty + {}; + +28 #i +ARDUINOJSON_HAS_INT64 + + +29 + gme + <> + +30  + gis_unsigd +< + g__t64 +> : +ue_ty + {}; + +33 #i +ARDUINOJSON_HAS_LONG_LONG + + +34 + gme + <> + +35  + gis_unsigd +<> : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp + +5 #agm + + + +7  + ~"ty_idty.h +" + +8 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < +tyme + + gT +> + +11  + gmake_unsigd +; + +13 + gme + <> + +14  + gmake_unsigd +<> : +ty_idty +<> {}; + +16 + gme + <> + +17  + gmake_unsigd + : +ty_idty +<> {}; + +18 + gme + <> + +19  + gmake_unsigd +<> : +ty_idty +<> {}; + +21 + gme + <> + +22  + gmake_unsigd + : +ty_idty +<> {}; + +23 + gme + <> + +24  + gmake_unsigd +<> : +ty_idty +<> {}; + +26 + gme + <> + +27  + gmake_unsigd + : +ty_idty +<> {}; + +28 + gme + <> + +29  + gmake_unsigd +<> : +ty_idty +<> {}; + +31 + gme + <> + +32  + gmake_unsigd + : +ty_idty +<> {}; + +33 + gme + <> + +34  + gmake_unsigd +<> : +ty_idty +<> {}; + +36 #i +ARDUINOJSON_HAS_LONG_LONG + + +37 + gme + <> + +38  + gmake_unsigd + : +ty_idty +<> {}; + +39 + gme + <> + +40  + gmake_unsigd +<> : +ty_idty +<> {}; + +43 #i +ARDUINOJSON_HAS_INT64 + + +44 + gme + <> + +45  + gmake_unsigd + : +ty_idty +< +__t64 +> {}; + +46 + gme + <> + +47  + gmake_unsigd +< + g__t64 +> : +ty_idty +< +__t64 +> {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13  + smove_cڡ + { + +14  +T + + tty +; + +16 + gme + < +tyme + + gT +> + +17  + gmove_cڡ + { + +18  +T + + tty +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gT +> + +13  + smove_n + { + +14  +T + + tty +; + +16 + gme + < +tyme + + gT +> + +17  + gmove_n +< + gT +&> { + +18  +T + + tty +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp + +5 #agm + + + +7  + ~"gl_cڡt.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gT +> + +12  + sty_idty + { + +13  +T + + tty +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp + +5 #agm + + + +7  + ~"ty_as.h +" + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < +tyme + + gT +> + +11 +le +  +sw +( +T +& +a +, T& +b +) { + +12 +T + +t +( +a +); + +13 + ga + = +b +; + +14 + gb + = +t +; + +17 #i +ARDUINOJSON_HAS_RVALUE_REFERENCES + + +18 + gme + < +tyme + + gT +> + +19 +tyme + + gmove_n +< + gT +>:: +ty +&& +move +( +T +&& +t +) { + +20  +ic_ +< +tyme + +move_n +< +T +>:: +ty +&&>( +t +); + +23 + gme + < +tyme + + gT +> + +24 + gT +& +move +( +T +& +t +) { + +25  + gt +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTDei +,ym + gEb + = > + +13 as + cWr + { + +14 +public +: + +15 +exic + +Wr +( +TDei +& +de +: +_de +(&dest) {} + +17 +size_t + +wre +( +ut8_t + +c +) { + +18  +_de +-> +wre +( +c +); + +21 +size_t + +wre +(cڡ +ut8_t +* +s +, size_ +n +) { + +22  + g_de +-> +wre +( +s +, +n +); + +25 + give +: + +26 +TDei +* +_de +; + +31  + ~ + +33 #i +ARDUINOJSON_ENABLE_STD_STRING + + +34  + ~ + +37 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +38  + ~ + +41 #i +ARDUINOJSON_ENABLE_STD_STREAM + + +42  + ~ + +45 #i +ARDUINOJSON_ENABLE_ARDUINO_PRINT + + +46  + ~ + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + <> + +12 +ass + + gWr +< :: +Sg +, > { + +13 cڡ +size_t + + gbufrCacy + = +ARDUINOJSON_STRING_BUFFER_SIZE +; + +15 + gpublic +: + +16 +exic + +Wr +(:: +Sg + & +r +: +_dei +(&str) { + +17 +_size + = 0; + +20 ~ +Wr +() { + +21 +ush +(); + +24 +size_t + +wre +( +ut8_t + +c +) { + +25 +ARDUINOJSON_ASSERT +( +_size + < +bufrCacy +); + +26 + g_bufr +[ +_size +++] = +ic_ +<>( +c +); + +27 i( + g_size + + 1 > +bufrCacy +) + +28 +ush +(); + +32 +size_t + +wre +(cڡ +ut8_t + * +s +, size_ +n +) { + +33  +size_t + + gi + = 0; i < + gn +; i++) { + +34 +wre +( +s +[ +i +]); + +36  + gn +; + +39 + give +: + +40  +ush +() { + +41 +ARDUINOJSON_ASSERT +( +_size + < +bufrCacy +); + +42 + g_bufr +[ +_size +] = 0; + +43 * + g_dei + + +_bufr +; + +44 + g_size + = 0; + +47 :: +Sg + * +_dei +; + +48  + g_bufr +[ +bufrCacy +]; + +49 +size_t + + g_size +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cDummyWr + { + +12 + gpublic +: + +13 +size_t + +wre +( +ut8_t +) { + +17 +size_t + +wre +(cڡ +ut8_t +*, size_ +n +) { + +18  + gn +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 + gme + < +tyme + + gTDei +> + +10 +ass + + gWr +< + +11 + gTDei +, + +12 +tyme + + gab_if +< + gis_ba_of +< :: +Prt +, + gTDei +>:: +vue +>:: +ty +> { + +13 +public +: + +14 +exic + +Wr +(:: +Prt +& +t +: +_t +(&print) {} + +16 +size_t + +wre +( +ut8_t + +c +) { + +17  +_t +-> +wre +( +c +); + +20 +size_t + +wre +(cڡ +ut8_t +* +s +, size_ +n +) { + +21  + g_t +-> +wre +( +s +, +n +); + +24 + give +: + +25 :: +Prt +* +_t +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cSticSgWr + { + +13 + gpublic +: + +14 +SticSgWr +(* +buf +, +size_t + +size +: +d +(bu+ siz- 1), +p +(buf) { + +15 * + gp + = '\0'; + +18 +size_t + +wre +( +ut8_t + +c +) { + +19 i( + gp + > +d +) + +21 * + gp +++ = +ic_ +<>( +c +); + +22 * + gp + = '\0'; + +26 +size_t + +wre +(cڡ +ut8_t + * +s +, size_ +n +) { + +27 * + gbeg + = +p +; + +28  + gp + < + gd + && + gn + > 0) { + +29 * + gp +++ = +ic_ +<>(* +s +++); + +30 + gn +--; + +32 * + gp + = '\0'; + +33  +size_t +( +p + - +beg +); + +36 + give +: + +37 * +d +; + +38 * + gp +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gTDei +> + +12 +ass + + gWr +< + +13 + gTDei +, + +14 +tyme + + gab_if +< + gis_ba_of +< + gd +:: +oam +, + gTDei +>:: +vue +>:: +ty +> { + +15 +public +: + +16 +exic + +Wr +( +d +:: +oam +& +os +: +_os +(&os) {} + +18 +size_t + +wre +( +ut8_t + +c +) { + +19 +_os +-> +put +( +ic_ +<>( +c +)); + +23 +size_t + +wre +(cڡ +ut8_t +* +s +, size_ +n +) { + +24 + g_os +-> +wre +( +t_ +( +s +), + +25 +ic_ +< +d +:: +amsize +>( +n +)); + +26  + gn +; + +29 + give +: + +30 +d +:: +oam +* +_os +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 + gme + < +ass + + gT +> + +15  + gis_d_rg + : +l_ty + {}; + +17 + gme + < +ass + + gTChTs +, cs + gTAot +> + +18  + gis_d_rg +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > + +19 : +ue_ty + {}; + +21 + gme + < +tyme + + gTDei +> + +22 +ass + + gWr +< + gTDei +, + +23 +tyme + + gab_if +< + gis_d_rg +< + gTDei +>:: +vue +>:: +ty +> { + +24 +public +: + +25 +Wr +( +TDei + & +r +: +_r +(&str) {} + +27 +size_t + +wre +( +ut8_t + +c +) { + +28 +_r +-> +ݔ ++=( +ic_ +<>( +c +)); + +32 +size_t + +wre +(cڡ +ut8_t + * +s +, size_ +n +) { + +33 + g_r +-> +nd +( +t_ +( +s +), +n +); + +34  + gn +; + +37 + give +: + +38 +TDei + * +_r +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + +ass + + gTSliz +, +tyme + + gTSour +> + +12 +size_t + +msu +(cڡ +TSour + & +sour +) { + +13 +DummyWr + + gdp +; + +14 + gTSliz +< + gDummyWr +> +rliz +( +dp +); + +15 + gsour +. +ac +( +rliz +); + +16  + grliz +. +bysWrn +(); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + +ass + + gTSliz +, +tyme + + gTSour +, + +12 +tyme + + gTWr +> + +13 +size_t + +doSlize +(cڡ +TSour + & +sour +, +TWr + +wr +) { + +14 + gTSliz +< + gTWr +> +rliz +( +wr +); + +15 + gsour +. +ac +( +rliz +); + +16  + grliz +. +bysWrn +(); + +19 + gme + +ass + + gTSliz +, +tyme + + gTSour +, + +20 +tyme + + gTDei +> + +21 +size_t + +rlize +(cڡ +TSour + & +sour +, +TDei + & +dei +) { + +22 + gWr +< + gTDei +> +wr +( +dei +); + +23  + gdoSlize +< + gTSliz +>( + gsour +, + gwr +); + +26 + gme + +ass + + gTSliz +, +tyme + + gTSour +> + +27 +size_t + +rlize +(cڡ +TSour + & +sour +, * +bufr +, size_ +bufrSize +) { + +28 +SticSgWr + +wr +( +t_ +<*>( +bufr +), +bufrSize +); + +29  + gdoSlize +< + gTSliz +>( + gsour +, + gwr +); + +32 + gme + +ass + + gTSliz +, +tyme + + gTSour +, + +33 +tyme + + gTCh +, +size_t + + gN +> + +34 #i +defed + +_MSC_VER + && _MSC_VER < 1900 + +35 +tyme + + gab_if +<( + gmove_n +< + gTCh +>:: +ty +=1, + gsize_t +>::type + +37 +tyme + +ab_if +<( +TCh +=1, + gsize_t +>:: +ty + + +39 +rlize +(cڡ +TSour + & +sour +, +TCh + (& +bufr +)[ +N +]) { + +40 +SticSgWr + +wr +( +t_ +<*>( +bufr +), +N +); + +41  + gdoSlize +< + gTSliz +>( + gsour +, + gwr +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 as + cSgCݛr + { + +13 + gpublic +: + +14  +ARDUINOJSON_NAMESPACE +:: + tSgBud + StringBuilder; + +16 +SgCݛr +( +MemyPo +* +po +: +_po +(pool) {} + +18 +SgBud + +tSg +() { + +19  +SgBud +( +_po +); + +22  +aim +(cڡ * +s +) { + +23 + g_po +-> +aimLaSg +( +s +); + +26 + give +: + +27 +MemyPo +* +_po +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 as + cSgMov + { + +12 + gpublic +: + +13 as + cSgBud + { + +14 +public +: + +15 +SgBud +(** +r +: +_wreP +Ռ), +_tP +(*ptr) {} + +17  +nd +( +c +) { + +18 *(* + g_wreP +)++ = ( +c +); + +21 * +come +() const { + +22 *(* + g_wreP +)++ = 0; + +23  + g_tP +; + +26 + give +: + +27 ** +_wreP +; + +28 * + g_tP +; + +31 +SgMov +(* +r +: +_r +(ptr) {} + +33 +SgBud + +tSg +() { + +34  +SgBud +(& +_r +); + +38  +aim +(cڡ * +r +) { + +39 + g_r + = +cڡ_ +<*>( +r +); + +42 + give +: + +43 * +_r +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTIut +,ym + gEb + = > + +13  + sSgStage + { + +14  +SgCݛr + + tty +; + +16  +ty + + +( +MemyPo +& +po +, +TIut +&) { + +17  +ty +(& +po +); + +21 + gme + < +tyme + + gTCh +> + +22  + gSgStage +< + gTCh +*, + +23 +tyme + + gab_if +:: +vue +>:: +ty +> { + +24  +SgMov + + tty +; + +26  +ty + + +( +MemyPo +&, +TCh +* +put +) { + +27  +ty +( +t_ +<*>( +put +)); + +31 + gme + < +tyme + + gTIut +> + +32 +tyme + + gSgStage +< + gTIut +>:: +ty + +makeSgStage +( +MemyPo +& +po +, + +33 +TIut +& +put +) { + +34  + gSgStage +< + gTIut +>:: + +( +po +, +put +); + +37 + gme + < +tyme + + gTCh +> + +38 +tyme + + gSgStage +< + gTCh +*>:: +ty + +makeSgStage +( +MemyPo +& +po +, + +39 +TCh +* +put +) { + +40  + gSgStage +< + gTCh +*>:: + +( +po +, +put +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 as + cArduoSgAdr + { + +16 + gpublic +: + +17 +ArduoSgAdr +(cڡ :: +Sg +& +r +: +_r +(&str) {} + +19 * +ve +( +MemyPo +* +po +) const { + +20 i( +isNu +()) + +21  +NULL +; + +22 +size_t + + gn + = +_r +-> +ngth +() + 1; + +23 * + gdup + = +po +-> +locFrozSg +( +n +); + +24 i( + gdup +) + +25 +memy +( +dup +, +_r +-> +c_r +(), +n +); + +26  + gdup +; + +29 +bo + +isNu +() const { + +31  ! + g_r +-> +c_r +(); + +34  +com +(cڡ * +h +) const { + +36 cڡ * + gme + = +_r +-> +c_r +(); + +37  +_rcmp +( +me +, +h +); + +40 +bo + +equs +(cڡ * +exed +) const { + +41  +com +( +exed +) == 0; + +44 +size_t + +size +() const { + +45  + g_r +-> +ngth +(); + +48  + gage_picy +:: + te_by_cy + + tage_picy +; + +50 + give +: + +51 cڡ :: +Sg +* +_r +; + +54 + gme + <> + +55  + gIsSg +< :: +Sg +> : +ue_ty + {}; + +57 + gme + <> + +58  + gIsSg +< :: +SgSumHr +> : +ue_ty + {}; + +60 +le + +ArduoSgAdr + + $adtSg +(cڡ :: +Sg +& +r +) { + +61  + `ArduoSgAdr +( +r +); + +62 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 as + cCڡRamSgAdr + { + +17 + gpublic +: + +18 +CڡRamSgAdr +(cڡ * +r + = 0: +_r +(str) {} + +20  +com +(cڡ * +h +) const { + +21  +_rcmp +( +_r +, +h +); + +24 +bo + +equs +(cڡ * +exed +) const { + +25  +com +( +exed +) == 0; + +28 +bo + +isNu +() const { + +29  ! + g_r +; + +32 +size_t + +size +() const { + +33 i(! + g_r +) + +35  + +( +_r +); + +38 cڡ * +da +() const { + +39  + g_r +; + +42  + gage_picy +:: + te_by_addss + + tage_picy +; + +44 + geed +: + +45 cڡ * +_r +; + +48 +le + +CڡRamSgAdr + + $adtSg +(cڡ * +r +) { + +49  + `CڡRamSgAdr +( +r +); + +50 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 as + cFshSgAdr + { + +15 + gpublic +: + +16 +FshSgAdr +(cڡ +__FshSgHr +* +r +: +_r +(str) {} + +18  +com +(cڡ * +h +) const { + +19 i(! +h + && ! +_r +) + +21 i(! + g_r +) + +23 i(! + gh +) + +25  - +rcmp_P +( +h +, +t_ +( +_r +)); + +28 +bo + +equs +(cڡ * +exed +) const { + +29  +com +( +exed +) == 0; + +32 +bo + +isNu +() const { + +33  ! + g_r +; + +36 * +ve +( +MemyPo +* +po +) const { + +37 i(! + g_r +) + +38  + gNULL +; + +39 +size_t + + gn + = +size +() + 1; + +40 * + gdup + = +po +-> +locFrozSg +( +n +); + +41 i( + gdup +) + +42 +memy_P +( +dup +, +t_ +( +_r +), +n +); + +43  + gdup +; + +46 +size_t + +size +() const { + +47 i(! + g_r +) + +49  +_P +( +t_ +( +_r +)); + +52  + gage_picy +:: + te_by_cy + + tage_picy +; + +54 + give +: + +55 cڡ +__FshSgHr +* +_r +; + +58 +le + +FshSgAdr + + $adtSg +(cڡ +__FshSgHr +* +r +) { + +59  + `FshSgAdr +( +r +); + +60 + } +} + +62 + gme + <> + +63  + gIsSg + : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +10 + gme + < + gtyme +> + +11  + gIsSg + : +l_ty + {}; + +13 + gme + < +tyme + + gT +> + +14  + gIsSg + : +IsSg +< +T +> {}; + +16 + gme + < +tyme + + gT +> + +17  + gIsSg +< + gT +&> : +IsSg +< +T +> {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +11  + ~ + +14 #i +ARDUINOJSON_ENABLE_STD_STRING + + +15  + ~ + +18 +mea + + gARDUINOJSON_NAMESPACE + { + +20 + gme + < + gtyme +> + +21  + gIsWrbSg + : +l_ty + {}; + +23 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +25 + gme + <> + +26  + gIsWrbSg +< :: +Sg +> : +ue_ty + {}; + +30 #i +ARDUINOJSON_ENABLE_STD_STRING + + +32 + gme + < +tyme + + gTChTs +,ym + gTAot +> + +33  + gIsWrbSg +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > + +34 : +ue_ty + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12 +mea + + gARDUINOJSON_NAMESPACE + { + +14 as + cRamSgAdr + : +public + +CڡRamSgAdr + { + +15 +public +: + +16 +RamSgAdr +(cڡ * +r +: +CڡRamSgAdr +(str) {} + +18 * +ve +( +MemyPo +* +po +) const { + +19 i(! +_r +) + +20  +NULL +; + +21 +size_t + + gn + = +size +() + 1; + +22 * + gdup + = +po +-> +locFrozSg +( +n +); + +23 i( + gdup +) + +24 +memy +( +dup +, +_r +, +n +); + +25  + gdup +; + +28  + gARDUINOJSON_NAMESPACE +:: + tage_picy +:: + te_by_cy + storage_policy; + +31 + gme + < +tyme + + gTCh +> + +32 +le + +RamSgAdr + + $adtSg +(cڡ +TCh +* +r +) { + +33  + `RamSgAdr +( +t_ +( +r +)); + +34 + } +} + +36 +le + +RamSgAdr + + $adtSg +(* +r +) { + +37  + `RamSgAdr +( +r +); + +38 + } +} + +40 + gme + < +tyme + + gTCh +> + +41  + gIsSg +< + gTCh +*> { + +42 cڡ +bo + + gvue + = ( +TCh +) == 1; + +45 + gme + <> + +46  + gIsSg +<*> { + +47 cڡ +bo + + gvue + = +l +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 as + cSizedFshSgAdr + { + +14 + gpublic +: + +15 +SizedFshSgAdr +(cڡ +__FshSgHr +* +r +, +size_t + +sz +) + +16 : +_r +( +r +), +_size +( +sz +) {} + +18  +com +(cڡ * +h +) const { + +19 i(! + gh + && ! + g_r +) + +21 i(! + g_r +) + +23 i(! + gh +) + +25  - +cmp_P +( +h +, +t_ +( +_r +), +_size +); + +28 +bo + +equs +(cڡ * +exed +) const { + +29  +com +( +exed +) == 0; + +32 +bo + +isNu +() const { + +33  ! + g_r +; + +36 * +ve +( +MemyPo +* +po +) const { + +37 i(! + g_r +) + +38  + gNULL +; + +39 * + gdup + = +po +-> +locFrozSg +( +_size +); + +40 i( + gdup +) + +41 +memy_P +( +dup +, +t_ +( +_r +), +_size +); + +42  + gdup +; + +45 +size_t + +size +() const { + +46  + g_size +; + +49  + gage_picy +:: + te_by_cy + + tage_picy +; + +51 + give +: + +52 cڡ +__FshSgHr +* +_r +; + +53 +size_t + + g_size +; + +56 +le + +SizedFshSgAdr + + $adtSg +(cڡ +__FshSgHr +* +r +, + +57 +size_t + +sz +) { + +58  + `SizedFshSgAdr +( +r +, +sz +); + +59 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15 as + cSizedRamSgAdr + { + +16 + gpublic +: + +17 +SizedRamSgAdr +(cڡ * +r +, +size_t + +n +: +_r +(r), +_size +(n) {} + +19  +com +(cڡ * +h +) const { + +20  +_cmp +( +_r +, +h +, +_size +); + +23 +bo + +equs +(cڡ * +exed +) const { + +24  +com +( +exed +) == 0; + +27 +bo + +isNu +() const { + +28  ! + g_r +; + +31 * +ve +( +MemyPo +* +po +) const { + +32 i(! + g_r +) + +33  + gNULL +; + +34 * + gdup + = +po +-> +locFrozSg +( +_size +); + +35 i( + gdup +) + +36 +memy +( +dup +, +_r +, +_size +); + +37  + gdup +; + +40 +size_t + +size +() const { + +41  + g_size +; + +44  + gage_picy +:: + te_by_cy + + tage_picy +; + +46 + give +: + +47 cڡ * +_r +; + +48 +size_t + + g_size +; + +51 + gme + < +tyme + + gTCh +> + +52 +le + +SizedRamSgAdr + + $adtSg +(cڡ +TCh +* +r +, +size_t + +size +) { + +53  + `SizedRamSgAdr +( +t_ +( +r +), +size +); + +54 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StlStringAdapter.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +12  + ~ + +14 +mea + + gARDUINOJSON_NAMESPACE + { + +16 + gme + < +tyme + + gTSg +> + +17 as + cSSgAdr + { + +18 + gpublic +: + +19 +SSgAdr +(cڡ +TSg +& +r +: +_r +(&str) {} + +21 * +ve +( +MemyPo +* +po +) const { + +22 +size_t + +n + = +_r +-> +ngth +() + 1; + +23 * + gdup + = +po +-> +locFrozSg +( +n +); + +24 i( + gdup +) + +25 +memy +( +dup +, +_r +-> +c_r +(), +n +); + +26  + gdup +; + +29 +bo + +isNu +() const { + +30  + gl +; + +33  +com +(cڡ * +h +) const { + +34 i(! + gh +) + +36  + g_r +-> +com +( +h +); + +39 +bo + +equs +(cڡ * +exed +) const { + +40 i(! + gexed +) + +41  + gl +; + +42  * + g_r + = +exed +; + +45 +size_t + +size +() const { + +46  + g_r +-> +size +(); + +49  + gage_picy +:: + te_by_cy + + tage_picy +; + +51 + give +: + +52 cڡ +TSg +* +_r +; + +55 + gme + < +tyme + + gTChTs +,ym + gTAot +> + +56  + gIsSg +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > : +ue_ty + { + +59 + gme + < +tyme + + gTChTs +,ym + gTAot +> + +60 +le + + gSSgAdr +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> > + +61 +adtSg +(cڡ +d +:: +basic_rg +<, +TChTs +, +TAot +>& +r +) { + +62  + gSSgAdr +< + gd +:: +basic_rg +<, + gTChTs +, + gTAot +> >( + +63 + gr +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp + +5 #agm + + + +7 +mea + + gARDUINOJSON_NAMESPACE + { + +9 +mea + + gage_picy + { + +10  + se_by_addss + {}; + +11  + se_by_cy + {}; + +12  + sdecide__ruime + {}; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/String.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 as + cSg + { + +14 + gpublic +: + +15 +Sg +(: +_da +(0), +_isStic +( +ue +) {} + +16 +Sg +(cڡ * +da +, +bo + +isSticDa + = +ue +) + +17 : +_da +( +da +), +_isStic +( +isSticDa +) {} + +19 cڡ * +c_r +() const { + +20  + g_da +; + +23 +bo + +isNu +() const { + +24  ! + g_da +; + +27 +bo + +isStic +() const { + +28  + g_isStic +; + +31 +nd + +bo + + gݔ +==( +Sg + +lhs +, Sg + grhs +) { + +32 i( + glhs +. + g_da + = +rhs +. +_da +) + +33  +ue +; + +34 i(! + glhs +. + g_da +) + +35  + gl +; + +36 i(! + grhs +. + g_da +) + +37  + gl +; + +38  +rcmp +( +lhs +. +_da +, +rhs +._data) == 0; + +41  + gage_picy +:: + tdecide__ruime + + tage_picy +; + +43 + give +: + +44 cڡ * +_da +; + +45 +bo + + g_isStic +; + +48 as + cSgAdr + : +public + +RamSgAdr + { + +49 +public +: + +50 +SgAdr +(cڡ +Sg +& +r +) + +51 : +RamSgAdr +( +r +. +c_r +()), +_isStic +(r. +isStic +()) {} + +53 +bo + +isStic +() const { + +54  + g_isStic +; + +57 cڡ * +ve +( +MemyPo +* +po +) const { + +58 i( + g_isStic +) + +59  +da +(); + +60  + gRamSgAdr +:: +ve +( +po +); + +63 + give +: + +64 +bo + +_isStic +; + +67 + gme + <> + +68  + gIsSg +< + gSg +> : +ue_ty + {}; + +70 +le + +SgAdr + + $adtSg +(cڡ +Sg +& +r +) { + +71  + `SgAdr +( +r +); + +72 + } +} + + @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 #i +ARDUINOJSON_ENABLE_STD_STRING + + +12  + ~ + +15 #i +ARDUINOJSON_ENABLE_ARDUINO_STRING + + +16  + ~ + +19 #i +ARDUINOJSON_ENABLE_PROGMEM + + +20  + ~ + +21  + ~ + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10 +mea + + gARDUINOJSON_NAMESPACE + { + +12 + gme + < +tyme + + gTAddSg +> + +13 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +* +po +) { + +14 i(! + gv +) + +15  + gl +; + +16  +SKey +( +v +, +key +, +po +, +tyme + +TAddSg +:: +age_picy +()); + +19 + gme + < +tyme + + gTAddSg +> + +20 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +* +po +, + +21 +age_picy +:: +decide__ruime +) { + +22 i( +key +. +isStic +()) { + +23  +SKey +( +v +, +key +, +po +, +age_picy +:: +e_by_addss +()); + +25  +SKey +( +v +, +key +, +po +, +age_picy +:: +e_by_cy +()); + +27  + gue +; + +30 + gme + < +tyme + + gTAddSg +> + +31 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +*, + +32 +age_picy +:: +e_by_addss +) { + +33 +ARDUINOJSON_ASSERT +( +v +); + +34 + gv +-> +tLkedKey +( +make_n_nu +( +key +. +da +())); + +35  + gue +; + +38 + gme + < +tyme + + gTAddSg +> + +39 +le + +bo + +SKey +( +VSl +* +v +, +TAddSg + +key +, +MemyPo +* +po +, + +40 +age_picy +:: +e_by_cy +) { + +41 cڡ * +dup + = +key +. +ve +( +po +); + +42 i(! + gdup +) + +43  + gl +; + +44 +ARDUINOJSON_ASSERT +( +v +); + +45 + gv +-> +tOwdKey +( +make_n_nu +( +dup +)); + +46  + gue +; + +49 +le + +size_t + +Size +(cڡ +VSl +* +v +) { + +50 +size_t + + gn + = 0; + +51  + gv +) { + +52 + gn +++; + +53 + gv + = +v +-> +xt +(); + +55  + gn +; + +58 +le + +VDa +* +Da +( +VSl +* + +) { + +59  + gt_ +< + gVDa +*>( + g +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 +ass + + gAayRef +; + +12 +ass + + gAayCڡRef +; + +13 +ass + + gObjeRef +; + +14 +ass + + gObjeCڡRef +; + +15 +ass + + gVRef +; + +16 +ass + + gVCڡRef +; + +20 + gme + < +tyme + + gT +> + +21  + sVAs + { + +22  +T + + tty +; + +25 + gme + <> + +26  + gVAs +<*> { + +27 cڡ * + tty +; + +32 + gme + < +tyme + + gT +> + +33  + sVCڡAs + { + +34  +tyme + + tVAs +< + tT +>:: + tty +ype; + +37 + gme + <> + +38  + gVCڡAs +< + gVRef +> { + +39  +VCڡRef + + tty +; + +42 + gme + <> + +43  + gVCڡAs +< + gObjeRef +> { + +44  +ObjeCڡRef + + tty +; + +47 + gme + <> + +48  + gVCڡAs +< + gAayRef +> { + +49  +AayCڡRef + + tty +; + +54 + gme + < +tyme + + gT +> + +55 +le + +tyme + + gab_if +< + gis_gl +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +56 cڡ +VDa +* +_da +) { + +57  +_da + !0 ? _da-> +asIegl +< +T +>() : T(0); + +60 + gme + < +tyme + + gT +> + +61 +le + +tyme + + gab_if +< + gis_me +< + gT +, + gbo +>:: +vue +, T>:: +ty + +vAs +( + +62 cڡ +VDa +* +_da +) { + +63  +_da + !0 ? _da-> +asBoޗn +(: +l +; + +66 + gme + < +tyme + + gT +> + +67 +le + +tyme + + gab_if +< + gis_tg_pot +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +68 cڡ +VDa +* +_da +) { + +69  +_da + !0 ? _da-> +asFlt +< +T +>() : T(0); + +72 + gme + < +tyme + + gT +> + +73 +le + +tyme + + gab_if +< + gis_me +< + gT +, cڡ *>:: +vue + || + +74 +is_me +< +T +, *>:: +vue +, + +75 cڡ *>:: +ty + + +76 +vAs +(cڡ +VDa +* +_da +) { + +77  +_da + !0 ? _da-> +asSg +() : 0; + +80 + gme + < +tyme + + gT +> + +81 +le + +tyme + + gab_if +< + gis_me +< + gAayCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +82 cڡ +VDa +* +_da +); + +84 + gme + < +tyme + + gT +> + +85 +le + +tyme + + gab_if +< + gis_me +< + gObjeCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +86 cڡ +VDa +* +_da +); + +88 + gme + < +tyme + + gT +> + +89 +le + +tyme + + gab_if +< + gis_me +< + gVCڡRef +, + gT +>:: +vue +, T>:: +ty + + +90 +vAs +(cڡ +VDa +* +_da +); + +92 + gme + < +tyme + + gT +> + +93 +le + +tyme + + gab_if +< + gIsWrbSg +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +94 cڡ +VDa +* +_da +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11 +mea + + gARDUINOJSON_NAMESPACE + { + +13 + gme + < +tyme + + gT +> + +14 +le + +tyme + + gab_if +< + gis_me +< + gAayCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +15 cڡ +VDa +* +_da +) { + +16  +AayCڡRef +( +vAsAay +( +_da +)); + +19 + gme + < +tyme + + gT +> + +20 +le + +tyme + + gab_if +< + gis_me +< + gObjeCڡRef +, + gT +>:: +vue +, T>:: +ty + +vAs +( + +21 cڡ +VDa +* +_da +) { + +22  +ObjeCڡRef +( +vAsObje +( +_da +)); + +25 + gme + < +tyme + + gT +> + +26 +le + +tyme + + gab_if +< + gis_me +< + gVCڡRef +, + gT +>:: +vue +, T>:: +ty + + +27 +vAs +(cڡ +VDa +* +_da +) { + +28  +VCڡRef +( +_da +); + +31 + gme + < +tyme + + gT +> + +32 +le + +tyme + + gab_if +< + gIsWrbSg +< + gT +>:: +vue +, T>:: +ty + +vAs +( + +33 cڡ +VDa +* +_da +) { + +34 cڡ * +cr + = +_da + !0 ? _da-> +asSg +() : 0; + +35 i( + gcr +) + +36  +T +( +cr +); + +37 +T + + gs +; + +38 +rlizeJs +( +VCڡRef +( +_da +), +s +); + +39  + gs +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp + +5 #agm + + + +7  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gVALUE_MASK + = 0x7F, + +19 + gVALUE_IS_OWNED + = 0x01, + +20 + gVALUE_IS_NULL + = 0, + +21 + gVALUE_IS_LINKED_RAW + = 0x02, + +22 + gVALUE_IS_OWNED_RAW + = 0x03, + +23 + gVALUE_IS_LINKED_STRING + = 0x04, + +24 + gVALUE_IS_OWNED_STRING + = 0x05, + +27 + gVALUE_IS_BOOLEAN + = 0x06, + +28 + gVALUE_IS_POSITIVE_INTEGER + = 0x08, + +29 + gVALUE_IS_NEGATIVE_INTEGER + = 0x0A, + +30 + gVALUE_IS_FLOAT + = 0x0C, + +32 + gCOLLECTION_MASK + = 0x60, + +33 + gVALUE_IS_OBJECT + = 0x20, + +34 + gVALUE_IS_ARRAY + = 0x40, + +36 + gKEY_IS_OWNED + = 0x80 + +39  + sRawDa + { + +40 cڡ * + gda +; + +41 +size_t + + gsize +; + +44  + uVCڋ + { + +45 +Flt + + gasFlt +; + +46 +UI + + gasIeg +; + +47 +CiDa + + gasCi +; + +48 cڡ * + gasSg +; + +50 cڡ * + gda +; + +51 +size_t + + gsize +; + +52 } + gasRaw +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +15 #i +defed +( +__GNUC__ +) + +16 #i +__GNUC__ + >= 7 + +17 #agm +GCC + +dgnoic + +push + + +18 #agm +GCC + +dgnoic + +igned + "-Wmaybe-uninitialized" + +19 #agm +GCC + +dgnoic + +igned + "-Wuninitialized" + +23 +mea + + gARDUINOJSON_NAMESPACE + { + +25 as + cVDa + { + +26 +VCڋ + + g_cڋ +; + +27 +ut8_t + + g_ags +; + +29 + gpublic +: + +36 +me + < +tyme + +Vis +> + +37  +ac +( +Vis + & +vis +) const { + +38  +ty +()) { + +39  +VALUE_IS_FLOAT +: + +40  +vis +. +visFlt +( +_cڋ +. +asFlt +); + +42  + gVALUE_IS_ARRAY +: + +43  +vis +. +visAay +( +_cڋ +. +asCi +); + +45  + gVALUE_IS_OBJECT +: + +46  +vis +. +visObje +( +_cڋ +. +asCi +); + +48  + gVALUE_IS_LINKED_STRING +: + +49  +VALUE_IS_OWNED_STRING +: + +50  +vis +. +visSg +( +_cڋ +. +asSg +); + +52  + gVALUE_IS_OWNED_RAW +: + +53  +VALUE_IS_LINKED_RAW +: + +54  +vis +. +visRawJs +( +_cڋ +. +asRaw +. +da +, _cڋ.asRaw. +size +); + +56  + gVALUE_IS_NEGATIVE_INTEGER +: + +57  +vis +. +visNegiveIeg +( +_cڋ +. +asIeg +); + +59  + gVALUE_IS_POSITIVE_INTEGER +: + +60  +vis +. +visPosiveIeg +( +_cڋ +. +asIeg +); + +62  + gVALUE_IS_BOOLEAN +: + +63  +vis +. +visBoޗn +( +_cڋ +. +asIeg + != 0); + +66  +vis +. +visNu +(); + +70 + gme + < +tyme + + gT +> + +71 +T + +asIegl +() const; + +73 + gme + < +tyme + + gT +> + +74 +T + +asFlt +() const; + +76 cڡ * +asSg +() const; + +78 +bo + +asBoޗn +() const; + +80 +CiDa + * +asAay +() { + +81  +isAay +(? & + g_cڋ +. + gasCi + : 0; + +84 cڡ +CiDa + * +asAay +() const { + +85  + gcڡ_ +< + gVDa + *>( + gthis +)-> +asAay +(); + +88 +CiDa + * +asObje +() { + +89  +isObje +(? & + g_cڋ +. + gasCi + : 0; + +92 cڡ +CiDa + * +asObje +() const { + +93  + gcڡ_ +< + gVDa + *>( + gthis +)-> +asObje +(); + +96 +bo + +cyFrom +(cڡ +VDa + & +c +, +MemyPo + * +po +) { + +97  + gc +. +ty +()) { + +98  + gVALUE_IS_ARRAY +: + +99  +toAay +(). +cyFrom +( +c +. +_cڋ +. +asCi +, +po +); + +100  + gVALUE_IS_OBJECT +: + +101  +toObje +(). +cyFrom +( +c +. +_cڋ +. +asCi +, +po +); + +102  + gVALUE_IS_OWNED_STRING +: + +103  +tOwdSg +( +RamSgAdr +( +c +. +_cڋ +. +asSg +), +po +); + +104  + gVALUE_IS_OWNED_RAW +: + +105  +tOwdRaw +( + +106 +rlized +( +c +. +_cڋ +. +asRaw +. +da +, src._cڋ.asRaw. +size +), +po +); + +108 +tTy +( +c +. +ty +()); + +109 + g_cڋ + = +c +. +_cڋ +; + +110  + gue +; + +114 +bo + +equs +(cڡ +VDa + & +h +) const { + +116 i(( +ty +(| + gVALUE_IS_OWNED +!( +h +.ty(| +VALUE_IS_OWNED +)) + +117  +l +; + +119  +ty +()) { + +120  + gVALUE_IS_LINKED_STRING +: + +121  +VALUE_IS_OWNED_STRING +: + +122  ! +rcmp +( +_cڋ +. +asSg +, +h +._content.asString); + +124  + gVALUE_IS_LINKED_RAW +: + +125  +VALUE_IS_OWNED_RAW +: + +126  +_cڋ +. +asRaw +. +size + = +h +._content.asRaw.size && + +127 ! +memcmp +( +_cڋ +. +asRaw +. +da +, +h +._content.asRaw.data, + +128 +_cڋ +. +asRaw +. +size +); + +130  + gVALUE_IS_BOOLEAN +: + +131  +VALUE_IS_POSITIVE_INTEGER +: + +132  +VALUE_IS_NEGATIVE_INTEGER +: + +133  +_cڋ +. +asIeg + = +h +._content.asInteger; + +135  + gVALUE_IS_ARRAY +: + +136  +_cڋ +. +asCi +. +equsAay +( +h +._content.asCollection); + +138  + gVALUE_IS_OBJECT +: + +139  +_cڋ +. +asCi +. +equsObje +( +h +._content.asCollection); + +141  + gVALUE_IS_FLOAT +: + +142  +_cڋ +. +asFlt + = +h +._content.asFloat; + +144  + gVALUE_IS_NULL +: + +146  +ue +; + +150 +bo + +isAay +() const { + +151  ( + g_ags + & + gVALUE_IS_ARRAY +) != 0; + +154 +bo + +isBoޗn +() const { + +155  +ty +(= +VALUE_IS_BOOLEAN +; + +158 +bo + +isCi +() const { + +159  ( + g_ags + & + gCOLLECTION_MASK +) != 0; + +162 + gme + < +tyme + + gT +> + +163 +bo + +isIeg +() const { + +164  +ty +()) { + +165  + gVALUE_IS_POSITIVE_INTEGER +: + +166  +nStePosiveIeg +< +T +>( +_cڋ +. +asIeg +); + +168  + gVALUE_IS_NEGATIVE_INTEGER +: + +169  +nSteNegiveIeg +< +T +>( +_cڋ +. +asIeg +); + +172  +l +; + +176 +bo + +isFlt +() const { + +177  +ty +(= +VALUE_IS_FLOAT + ||y(= +VALUE_IS_POSITIVE_INTEGER + || + +178 +ty +(= +VALUE_IS_NEGATIVE_INTEGER +; + +181 +bo + +isSg +() const { + +182  +ty +(= +VALUE_IS_LINKED_STRING + ||y(= +VALUE_IS_OWNED_STRING +; + +185 +bo + +isObje +() const { + +186  ( + g_ags + & + gVALUE_IS_OBJECT +) != 0; + +189 +bo + +isNu +() const { + +190  +ty +(= +VALUE_IS_NULL +; + +193 +bo + +isEnod +() const { + +194  ! +isFlt +(); + +197  +move +( +size_t + +dex +) { + +198 i( +isAay +()) + +199 + g_cڋ +. + gasCi +. +moveEmt +( +dex +); + +202 + gme + < +tyme + + gTAddSg +> + +203  +move +( +TAddSg + +key +) { + +204 i( +isObje +()) + +205 + g_cڋ +. + gasCi +. +moveMemb +( +key +); + +208  +tBoޗn +( +bo + +vue +) { + +209 +tTy +( +VALUE_IS_BOOLEAN +); + +210 + g_cڋ +. + gasIeg + = +ic_ +< +UI +>( +vue +); + +213  +tFlt +( +Flt + +vue +) { + +214 +tTy +( +VALUE_IS_FLOAT +); + +215 + g_cڋ +. + gasFlt + = +vue +; + +218  +tLkedRaw +( +SlizedVue + +vue +) { + +219 i( + gvue +. +da +()) { + +220 +tTy +( +VALUE_IS_LINKED_RAW +); + +221 + g_cڋ +. + gasRaw +. + gda + = +vue +. +da +(); + +222 + g_cڋ +. + gasRaw +. + gsize + = +vue +. +size +(); + +224 +tTy +( +VALUE_IS_NULL +); + +228 + gme + < +tyme + + gT +> + +229 +bo + +tOwdRaw +( +SlizedVue +< +T +> +vue +, +MemyPo + * +po +) { + +230 * + gdup + = +adtSg +( +vue +. +da +(), vue. +size +()). +ve +( +po +); + +231 i( + gdup +) { + +232 +tTy +( +VALUE_IS_OWNED_RAW +); + +233 + g_cڋ +. + gasRaw +. + gda + = +dup +; + +234 + g_cڋ +. + gasRaw +. + gsize + = +vue +. +size +(); + +235  + gue +; + +237 +tTy +( +VALUE_IS_NULL +); + +238  + gl +; + +242 + gme + < +tyme + + gT +> + +243 +tyme + + gab_if +< + gis_unsigd +< + gT +>:: +vue +>:: +ty + +tIeg +( +T + value) { + +244 +tUnsigdIeg +( +vue +); + +247 + gme + < +tyme + + gT +> + +248 +tyme + + gab_if +< + gis_sigd +< + gT +>:: +vue +>:: +ty + +tIeg +( +T + value) { + +249 +tSigdIeg +( +vue +); + +252 + gme + < +tyme + + gT +> + +253  +tSigdIeg +( +T + +vue +) { + +254 i( + gvue + >= 0) { + +255 +tPosiveIeg +( +ic_ +< +UI +>( +vue +)); + +257 +tNegiveIeg +(~ +ic_ +< +UI +>( +vue +) + 1); + +261  +tPosiveIeg +( +UI + +vue +) { + +262 +tTy +( +VALUE_IS_POSITIVE_INTEGER +); + +263 + g_cڋ +. + gasIeg + = +vue +; + +266  +tNegiveIeg +( +UI + +vue +) { + +267 +tTy +( +VALUE_IS_NEGATIVE_INTEGER +); + +268 + g_cڋ +. + gasIeg + = +vue +; + +271  +tLkedSg +(cڡ * +vue +) { + +272 i( + gvue +) { + +273 +tTy +( +VALUE_IS_LINKED_STRING +); + +274 + g_cڋ +. + gasSg + = +vue +; + +276 +tTy +( +VALUE_IS_NULL +); + +280  +tNu +() { + +281 +tTy +( +VALUE_IS_NULL +); + +284  +tOwdSg +( +n_nu + +s +) { + +285 +tTy +( +VALUE_IS_OWNED_STRING +); + +286 + g_cڋ +. + gasSg + = +s +. +g +(); + +289 +bo + +tOwdSg +(cڡ * +s +) { + +290 i( + gs +) { + +291 +tOwdSg +( +make_n_nu +( +s +)); + +292  + gue +; + +294 +tTy +( +VALUE_IS_NULL +); + +295  + gl +; + +299 + gme + < +tyme + + gT +> + +300 +bo + +tOwdSg +( +T + +vue +, +MemyPo + * +po +) { + +301  +tOwdSg +( +vue +. +ve +( +po +)); + +304  +tUnsigdIeg +( +UI + +vue +) { + +305 +tTy +( +VALUE_IS_POSITIVE_INTEGER +); + +306 + g_cڋ +. + gasIeg + = +ic_ +< +UI +>( +vue +); + +309 + gCiDa + & +toAay +() { + +310 +tTy +( +VALUE_IS_ARRAY +); + +311 + g_cڋ +. + gasCi +. +r +(); + +312  + g_cڋ +. + gasCi +; + +315 + gCiDa + & +toObje +() { + +316 +tTy +( +VALUE_IS_OBJECT +); + +317 + g_cڋ +. + gasCi +. +r +(); + +318  + g_cڋ +. + gasCi +; + +321 +size_t + +memyUge +() const { + +322  +ty +()) { + +323  + gVALUE_IS_OWNED_STRING +: + +324  + +( +_cڋ +. +asSg +) + 1; + +325  + gVALUE_IS_OWNED_RAW +: + +326  +_cڋ +. +asRaw +. +size +; + +327  + gVALUE_IS_OBJECT +: + +328  +VALUE_IS_ARRAY +: + +329  +_cڋ +. +asCi +. +memyUge +(); + +335 +size_t + +ág +() const { + +336  +isCi +(? + g_cڋ +. + gasCi +. +ág +() : 0; + +339 +size_t + +size +() const { + +340  +isCi +(? + g_cڋ +. + gasCi +. +size +() : 0; + +343 +VDa + * +addEmt +( +MemyPo + * +po +) { + +344 i( +isNu +()) + +345 +toAay +(); + +346 i(! +isAay +()) + +348  + g_cڋ +. + gasCi +. +addEmt +( +po +); + +351 +VDa + * +gEmt +( +size_t + +dex +) const { + +352  +isAay +(? + g_cڋ +. + gasCi +. +gEmt +( +dex +) : 0; + +355 +VDa + * +gOrAddEmt +( +size_t + +dex +, +MemyPo + * +po +) { + +356 i( +isNu +()) + +357 +toAay +(); + +358 i(! +isAay +()) + +360  + g_cڋ +. + gasCi +. +gOrAddEmt +( +dex +, +po +); + +363 + gme + < +tyme + + gTAddSg +> + +364 +VDa + * +gMemb +( +TAddSg + +key +) const { + +365  +isObje +(? + g_cڋ +. + gasCi +. +gMemb +( +key +) : 0; + +368 + gme + < +tyme + + gTAddSg +> + +369 +VDa + * +gOrAddMemb +( +TAddSg + +key +, +MemyPo + * +po +) { + +370 i( +isNu +()) + +371 +toObje +(); + +372 i(! +isObje +()) + +374  + g_cڋ +. + gasCi +. +gOrAddMemb +( +key +, +po +); + +377  +movePors +( +rdiff_t + +rgDi +,diff_ +vDi +) { + +378 i( + g_ags + & + gVALUE_IS_OWNED +) + +379 + g_cڋ +. + gasSg + + +rgDi +; + +380 i( + g_ags + & + gCOLLECTION_MASK +) + +381 + g_cڋ +. + gasCi +. +movePors +( +rgDi +, +vDi +); + +384 + give +: + +385 +ut8_t + +ty +() const { + +386  +_ags + & +VALUE_MASK +; + +389  +tTy +( +ut8_t + +t +) { + +390 + g_ags + & +KEY_IS_OWNED +; + +391 + g_ags + | +t +; + +397 #i +defed +( +__GNUC__ +) + +398 #i +__GNUC__ + >= 8 + +399 #agm +GCC + +dgnoic + +p + + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +11 + gme + < +tyme + + gVis +> + +12 +le +  +vAc +(cڡ +VDa + * +v +, +Vis + & +vis +) { + +13 i( + gv + != 0) + +14 +v +-> +ac +( +vis +); + +16 + gvis +. +visNu +(); + +19 +le + cڡ +CiDa + * +vAsAay +(cڡ +VDa + * +v +) { + +20  + gv + !0 ? +v +-> +asAay +() : 0; + +23 +le + cڡ +CiDa + * +vAsObje +(cڡ +VDa + * +v +) { + +24  + gv + !0 ? +v +-> +asObje +() : 0; + +27 +le + +CiDa + * +vAsObje +( +VDa + * +v +) { + +28  + gv + !0 ? +v +-> +asObje +() : 0; + +31 +le + +bo + +vCyFrom +( +VDa + * +d +, cڡ VD* +c +, + +32 +MemyPo + * +po +) { + +33 i(! + gd +) + +34  + gl +; + +35 i(! + gc +) { + +36 + gd +-> +tNu +(); + +37  + gue +; + +39  + gd +-> +cyFrom +(* +c +, +po +); + +42 +le + +bo + +vEqus +(cڡ +VDa + * +a +, cڡ VD* +b +) { + +43 i( + ga + = +b +) + +44  +ue +; + +45 i(! + ga + || ! + gb +) + +46  + gl +; + +47  + ga +-> +equs +(* +b +); + +50 +le + +bo + +vIsAay +(cڡ +VDa + * +v +) { + +51  + gv + && v-> +isAay +(); + +54 +le + +bo + +vIsBoޗn +(cڡ +VDa + * +v +) { + +55  + gv + && v-> +isBoޗn +(); + +58 + gme + < +tyme + + gT +> + +59 +le + +bo + +vIsIeg +(cڡ +VDa + * +v +) { + +60  + gv + && v-> + gisIeg +< + gT +>(); + +63 +le + +bo + +vIsFlt +(cڡ +VDa + * +v +) { + +64  + gv + && v-> +isFlt +(); + +67 +le + +bo + +vIsSg +(cڡ +VDa + * +v +) { + +68  + gv + && v-> +isSg +(); + +71 +le + +bo + +vIsObje +(cڡ +VDa + * +v +) { + +72  + gv + && v-> +isObje +(); + +75 +le + +bo + +vIsNu +(cڡ +VDa + * +v +) { + +76  + gv + =0 || +v +-> +isNu +(); + +79 +le + +bo + +vSBoޗn +( +VDa + * +v +, bo +vue +) { + +80 i(! + gv +) + +81  + gl +; + +82 + gv +-> +tBoޗn +( +vue +); + +83  + gue +; + +86 +le + +bo + +vSFlt +( +VDa + * +v +, +Flt + +vue +) { + +87 i(! + gv +) + +88  + gl +; + +89 + gv +-> +tFlt +( +vue +); + +90  + gue +; + +93 +le + +bo + +vSLkedRaw +( +VDa + * +v +, + +94 +SlizedVue + +vue +) { + +95 i(! + gv +) + +96  + gl +; + +97 + gv +-> +tLkedRaw +( +vue +); + +98  + gue +; + +101 + gme + < +tyme + + gT +> + +102 +le + +bo + +vSOwdRaw +( +VDa + * +v +, +SlizedVue +< +T +> +vue +, + +103 +MemyPo + * +po +) { + +104  + gv + !0 && +v +-> +tOwdRaw +( +vue +, +po +); + +107 + gme + < +tyme + + gT +> + +108 +le + +bo + +vSSigdIeg +( +VDa + * +v +, +T + +vue +) { + +109 i(! + gv +) + +110  + gl +; + +111 + gv +-> +tSigdIeg +( +vue +); + +112  + gue +; + +115 +le + +bo + +vSLkedSg +( +VDa + * +v +, cڡ * +vue +) { + +116 i(! + gv +) + +117  + gl +; + +118 + gv +-> +tLkedSg +( +vue +); + +119  + gue +; + +122 +le +  +vSNu +( +VDa + * +v +) { + +123 i(! + gv +) + +125 + gv +-> +tNu +(); + +128 +le + +bo + +vSOwdSg +( +VDa + * +v +, * +vue +) { + +129 i(! + gv +) + +130  + gl +; + +131 + gv +-> +tOwdSg +( +vue +); + +132  + gue +; + +135 + gme + < +tyme + + gT +> + +136 +le + +bo + +vSOwdSg +( +VDa + * +v +, +T + +vue +, +MemyPo + * +po +) { + +137  + gv + !0 && +v +-> +tOwdSg +( +vue +, +po +); + +140 +le + +bo + +vSUnsigdIeg +( +VDa + * +v +, +UI + +vue +) { + +141 i(! + gv +) + +142  + gl +; + +143 + gv +-> +tUnsigdIeg +( +vue +); + +144  + gue +; + +147 +le + +size_t + +vSize +(cڡ +VDa + * +v +) { + +148  + gv + !0 ? +v +-> +size +() : 0; + +151 +le + +CiDa + * +vToAay +( +VDa + * +v +) { + +152 i(! + gv +) + +154  & + gv +-> +toAay +(); + +157 +le + +CiDa + * +vToObje +( +VDa + * +v +) { + +158 i(! + gv +) + +160  & + gv +-> +toObje +(); + +163 +le + +NO_INLINE + +VDa + * +vAddEmt +(VD* +v +, + +164 +MemyPo + * +po +) { + +165  + gv + !0 ? +v +-> +addEmt +( +po +) : 0; + +168 +le + +NO_INLINE + +VDa + * +vGOrAddEmt +(VD* +v +, + +169 +size_t + +dex +, + +170 +MemyPo + * +po +) { + +171  + gv + !0 ? +v +-> +gOrAddEmt +( +dex +, +po +) : 0; + +174 + gme + < +tyme + + gTCh +> + +175 +NO_INLINE + +VDa + * +vGOrAddMemb +(VD* +v +, +TCh + * +key +, + +176 +MemyPo + * +po +) { + +177  + gv + !0 ? +v +-> +gOrAddMemb +( +adtSg +( +key +), +po +) : 0; + +180 + gme + < +tyme + + gTSg +> + +181 +NO_INLINE + +VDa + * +vGOrAddMemb +(VD* +v +, + +182 cڡ +TSg + & +key +, + +183 +MemyPo + * +po +) { + +184  + gv + !0 ? +v +-> +gOrAddMemb +( +adtSg +( +key +), +po +) : 0; + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +13  + ~ + +15 +mea + + gARDUINOJSON_NAMESPACE + { + +17 + gme + < +tyme + + gT +> + +18 +le + +T + + gVDa +:: +asIegl +() const { + +19  +ty +()) { + +20  +VALUE_IS_POSITIVE_INTEGER +: + +21  +VALUE_IS_BOOLEAN +: + +22  +cvtPosiveIeg +< +T +>( +_cڋ +. +asIeg +); + +23  + gVALUE_IS_NEGATIVE_INTEGER +: + +24  +cvtNegiveIeg +< +T +>( +_cڋ +. +asIeg +); + +25  + gVALUE_IS_LINKED_STRING +: + +26  +VALUE_IS_OWNED_STRING +: + +27  +rIeg +< +T +>( +_cڋ +. +asSg +); + +28  + gVALUE_IS_FLOAT +: + +29  +cvtFlt +< +T +>( +_cڋ +. +asFlt +); + +35 +le + +bo + + gVDa +:: +asBoޗn +() const { + +36  +ty +()) { + +37  +VALUE_IS_POSITIVE_INTEGER +: + +38  +VALUE_IS_BOOLEAN +: + +39  +VALUE_IS_NEGATIVE_INTEGER +: + +40  +_cڋ +. +asIeg + != 0; + +41  + gVALUE_IS_FLOAT +: + +42  +_cڋ +. +asFlt + != 0; + +43  + gVALUE_IS_NULL +: + +44  +l +; + +46  +ue +; + +51 + gme + < +tyme + + gT +> + +52 +le + +T + + gVDa +:: +asFlt +() const { + +53  +ty +()) { + +54  +VALUE_IS_POSITIVE_INTEGER +: + +55  +VALUE_IS_BOOLEAN +: + +56  +ic_ +< +T +>( +_cڋ +. +asIeg +); + +57  + gVALUE_IS_NEGATIVE_INTEGER +: + +58  - +ic_ +< +T +>( +_cڋ +. +asIeg +); + +59  + gVALUE_IS_LINKED_STRING +: + +60  +VALUE_IS_OWNED_STRING +: + +61  +rFlt +< +T +>( +_cڋ +. +asSg +); + +62  + gVALUE_IS_FLOAT +: + +63  +ic_ +< +T +>( +_cڋ +. +asFlt +); + +69 +le + cڡ * + gVDa +:: +asSg +() const { + +70  +ty +()) { + +71  +VALUE_IS_LINKED_STRING +: + +72  +VALUE_IS_OWNED_STRING +: + +73  +_cڋ +. +asSg +; + +79 + gme + < +tyme + + gTV +> + +80 +tyme + + gab_if +< + gIsVisab +< + gTV +>:: +vue +, + gbo +>:: +ty + +VRef +:: +t +( + +81 cڡ +TV + & +vue +) const { + +82 +VCڡRef + +v + = +vue +; + +83  +vCyFrom +( +_da +, +v +._da, +_po +); + +86 + gme + < +tyme + + gT +> + +87 +le + +tyme + + gab_if +< + gis_me +< + gT +, + gAayRef +>:: +vue +, T>:: +ty + +VRef +:: +as +() + +89  +AayRef +( +_po +, +_da + !0 ? _da-> +asAay +() : 0); + +92 + gme + < +tyme + + gT +> + +93 +le + +tyme + + gab_if +< + gis_me +< + gT +, + gObjeRef +>:: +vue +, T>:: +ty + + +94 +VRef +:: +as +() const { + +95  +ObjeRef +( +_po +, +vAsObje +( +_da +)); + +98 + gme + < +tyme + + gT +> + +99 +le + +tyme + + gab_if +< + gis_me +< + gT +, + gAayRef +>:: +vue +, AayRef>:: +ty + + +100 +VRef +:: +to +() const { + +101  +AayRef +( +_po +, +vToAay +( +_da +)); + +104 + gme + < +tyme + + gT +> + +105 +tyme + + gab_if +< + gis_me +< + gT +, + gObjeRef +>:: +vue +, ObjeRef>:: +ty + + +106 +VRef +:: +to +() const { + +107  +ObjeRef +( +_po +, +vToObje +( +_da +)); + +110 + gme + < +tyme + + gT +> + +111 +tyme + + gab_if +< + gis_me +< + gT +, + gVRef +>:: +vue +, VRef>:: +ty + + +112 +VRef +:: +to +() const { + +113 +vSNu +( +_da +); + +114  * + gthis +; + +117 +le + +VCڡRef + + gVCڡRef +:: +gEmt +( +size_t + +dex +) const { + +118  +AayCڡRef +( +_da + !0 ? _da-> +asAay +(: 0)[ +dex +]; + +121 +le + +VRef + + gVRef +:: +addEmt +() const { + +122  +VRef +( +_po +, +vAddEmt +( +_da +, _pool)); + +125 +le + +VRef + + gVRef +:: +gEmt +( +size_t + +dex +) const { + +126  +VRef +( +_po +, +_da + !0 ? _da-> +gEmt +( +dex +) : 0); + +129 +le + +VRef + + gVRef +:: +gOrAddEmt +( +size_t + +dex +) const { + +130  +VRef +( +_po +, +vGOrAddEmt +( +_da +, +dex +, _pool)); + +133 + gme + < +tyme + + gTCh +> + +134 +le + +VRef + + gVRef +:: +gMemb +( +TCh + * +key +) const { + +135  +VRef +( +_po +, +_da + !0 ? _da-> +gMemb +( +adtSg +( +key +)) : 0); + +138 + gme + < +tyme + + gTSg +> + +139 +le + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVRef +>:: +ty + + +140 +VRef +:: +gMemb +(cڡ +TSg + & +key +) const { + +141  +VRef +( +_po +, +_da + !0 ? _da-> +gMemb +( +adtSg +( +key +)) : 0); + +144 + gme + < +tyme + + gTCh +> + +145 +le + +VRef + + gVRef +:: +gOrAddMemb +( +TCh + * +key +) const { + +146  +VRef +( +_po +, +vGOrAddMemb +( +_da +, +key +, _pool)); + +149 + gme + < +tyme + + gTSg +> + +150 +le + +VRef + + gVRef +:: +gOrAddMemb +(cڡ +TSg + & +key +) const { + +151  +VRef +( +_po +, +vGOrAddMemb +( +_da +, +key +, _pool)); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +13  + ~ + +14  + ~ + +15  + ~ + +16  + ~ + +18 +mea + + gARDUINOJSON_NAMESPACE + { + +21 +ass + + gAayRef +; + +22 +ass + + gObjeRef +; + +24 + gme + < + gtyme +,ypename> + +25 +ass + + gMembProxy +; + +28 + gme + < +tyme + + gTDa +> + +29 as + cVRefBa + { + +30 + gpublic +: + +43 +me + < +tyme + +T +> + +44 +FORCE_INLINE + +tyme + +ab_if +< +is_gl +< +T +>:: +vue +, + gbo +>:: +ty + +is +() + +46  +vIsIeg +< +T +>( +_da +); + +51 + gme + < +tyme + + gT +> + +52 +FORCE_INLINE + +tyme + + gab_if +< + gis_tg_pot +< + gT +>:: +vue +, + gbo +>:: +ty + +is +() + +54  +vIsFlt +( +_da +); + +58 + gme + < +tyme + + gT +> + +59 +FORCE_INLINE + +tyme + + gab_if +< + gis_me +< + gT +, + gbo +>:: +vue +, bo>:: +ty + +is +() + +61  +vIsBoޗn +( +_da +); + +68 + gme + < +tyme + + gT +> + +69 +FORCE_INLINE + +tyme + + gab_if +< + gis_me +< + gT +, cڡ *>:: +vue + || + +70 +is_me +< +T +, *>:: +vue + || + +71 +IsWrbSg +< +T +>:: +vue +, + +72 + gbo +>:: +ty + + +73 +is +() const { + +74  +vIsSg +( +_da +); + +79 + gme + < +tyme + + gT +> + +80 +FORCE_INLINE + +tyme + + gab_if +< + +81 + gis_me +< +tyme + + gmove_cڡ +< + gT +>:: +ty +, + gAayRef +>:: +vue +, + gbo +>::type + +82 +is +() const { + +83  +vIsAay +( +_da +); + +88 + gme + < +tyme + + gT +> + +89 +FORCE_INLINE + +tyme + + gab_if +< + +90 + gis_me +< +tyme + + gmove_cڡ +< + gT +>:: +ty +, + gObjeRef +>:: +vue +, + gbo +>::type + +91 +is +() const { + +92  +vIsObje +( +_da +); + +94 #i +ARDUINOJSON_HAS_NULLPTR + + +97 + gme + < +tyme + + gT +> + +98 +FORCE_INLINE + + +99 +tyme + + gab_if +< + gis_me +< + gT +, +dety +( +nuαr +)>:: +vue +, + gbo +>:: +ty + + +100 +is +() const { + +101  +vIsNu +( +_da +); + +105 +FORCE_INLINE + +bo + +isNu +() const { + +106  +vIsNu +( +_da +); + +109 +FORCE_INLINE + +bo + +isUndefed +() const { + +110  ! + g_da +; + +113 +FORCE_INLINE + +size_t + +memyUge +() const { + +114  + g_da + ? _da-> +memyUge +() : 0; + +117 +FORCE_INLINE + +size_t + +ág +() const { + +118  + g_da + ? _da-> +ág +() : 0; + +121 +size_t + +size +() const { + +122  +vSize +( +_da +); + +125 + geed +: + +126 +VRefBa +( +TDa + * +da +: +_da +(data) {} + +127 +TDa + * +_da +; + +137 +ass + + gVRef + : +public + +VRefBa +< +VDa +>, + +138 +public + + gVOts +< + gVRef +>, + +139 +public + + gVisab + { + +140  + gVRefBa +< + tVDa +> + tba_ty +; + +141 +nd + +ass + + gVCڡRef +; + +143 + gpublic +: + +145 +FORCE_INLINE + +VRef +( +MemyPo + * +po +, +VDa + * +da +) + +146 : +ba_ty +( +da +), +_po +( +po +) {} + +149 +FORCE_INLINE + +VRef +(: +ba_ty +(0), +_po +(0) {} + +151 +FORCE_INLINE +  +r +() const { + +152  +vSNu +( +_da +); + +156 + gme + < +tyme + + gT +> + +157 +FORCE_INLINE + +bo + +t +( + +158 +T + +vue +, +tyme + +ab_if +< +is_me +::vue>:: +ty + * = 0) const { + +159  +vSBoޗn +( +_da +, +vue +); + +164 + gme + < +tyme + + gT +> + +165 +FORCE_INLINE + +bo + +t +( + +166 +T + +vue +, + +167 +tyme + +ab_if +< +is_tg_pot +< +T +>:: +vue +>:: +ty + * = 0) const { + +168  +vSFlt +( +_da +, +ic_ +< +Flt +>( +vue +)); + +176 + gme + < +tyme + + gT +> + +177 +FORCE_INLINE + +bo + +t +( + +178 +T + +vue +, + +179 +tyme + +ab_if +< +is_gl +< +T +>:: +vue + && +is_sigd +::vue>:: +ty + * = + +181  +vSSigdIeg +( +_da +, +vue +); + +187 + gme + < +tyme + + gT +> + +188 +FORCE_INLINE + +bo + +t +( + +189 +T + +vue +, +tyme + +ab_if +< +is_gl +::value && + +190 +is_unsigd +< +T +>:: +vue +>:: +ty + * = 0) const { + +191  +vSUnsigdIeg +( +_da +, +ic_ +< +UI +>( +vue +)); + +195 +FORCE_INLINE + +bo + +t +( +SlizedVue + +vue +) const { + +196  +vSLkedRaw +( +_da +, +vue +); + +202 + gme + < +tyme + + gT +> + +203 +FORCE_INLINE + +bo + +t +( + +204 +SlizedVue +< +T +> +vue +, + +205 +tyme + +ab_if +:: +vue +>:: +ty + * = 0) const { + +206  +vSOwdRaw +( +_da +, +vue +, +_po +); + +211 + gme + < +tyme + + gT +> + +212 +FORCE_INLINE + +bo + +t +( + +213 cڡ +T + & +vue +, + +214 +tyme + +ab_if +< +IsSg +< +T +>:: +vue +>:: +ty + * = 0) const { + +215  +vSOwdSg +( +_da +, +adtSg +( +vue +), +_po +); + +220 + gme + < +tyme + + gT +> + +221 +FORCE_INLINE + +bo + +t +( + +222 +T + * +vue +, +tyme + +ab_if +< +IsSg +::vue>:: +ty + * = 0) const { + +223  +vSOwdSg +( +_da +, +adtSg +( +vue +), +_po +); + +227 +FORCE_INLINE + +bo + +t +(cڡ * +vue +) const { + +228  +vSLkedSg +( +_da +, +vue +); + +238 + gme + < +tyme + + gTV +> + +239 +tyme + + gab_if +< + gIsVisab +< + gTV +>:: +vue +, + gbo +>:: +ty + +t +( + +240 cڡ +TV + & +vue +) const; + +243 + gme + < +tyme + + gT +> + +244 +FORCE_INLINE + +bo + +t +( + +245 +T + +vue +, +tyme + +ab_if +< +is_um +::vue>:: +ty + * = 0) const { + +246  +vSSigdIeg +( +_da +, +ic_ +< +Ieg +>( +vue +)); + +253 + gme + < +tyme + + gT +> + +254 +FORCE_INLINE + +tyme + + gab_if +:: +vue + && + +255 ! +is_me +< +T +, + gObjeRef +>:: +vue + && + +256 ! +is_me +< +T +, + gVRef +>:: +vue +, + +257 +tyme + + gVAs +< + gT +>:: +ty +>::type + +258 +as +() const { + +259  +vAs +< +T +>( +_da +); + +264 + gme + < +tyme + + gT +> + +265 +FORCE_INLINE + +tyme + + gab_if +< + gis_me +< + gT +, + gAayRef +>:: +vue +, T>:: +ty + +as +() + +270 + gme + < +tyme + + gT +> + +271 +FORCE_INLINE + +tyme + + gab_if +< + gis_me +< + gT +, + gObjeRef +>:: +vue +, T>:: +ty + +as +() + +275 + gme + < +tyme + + gT +> + +276 +FORCE_INLINE + +tyme + + gab_if +< + gis_me +< + gT +, + gVRef +>:: +vue +, T>:: +ty + +as +() + +278  * +this +; + +281 + gme + < +tyme + + gVis +> + +282  +ac +( +Vis + & +vis +) const { + +283 +vAc +( +_da +, +vis +); + +286 +FORCE_INLINE + +bo + + gݔ +==( +VRef + +lhs +) const { + +287  +vEqus +( +_da +, +lhs +._data); + +290 +FORCE_INLINE + +bo + + gݔ +!=( +VRef + +lhs +) const { + +291  ! +vEqus +( +_da +, +lhs +._data); + +297 + gme + < +tyme + + gT +> + +298 +tyme + + gab_if +< + gis_me +< + gT +, + gAayRef +>:: +vue +, AayRef>:: +ty + +to +() const; + +301 + gme + < +tyme + + gT +> + +302 +tyme + + gab_if +< + gis_me +< + gT +, + gObjeRef +>:: +vue +, ObjeRef>:: +ty + +to +() const; + +305 + gme + < +tyme + + gT +> + +306 +tyme + + gab_if +< + gis_me +< + gT +, + gVRef +>:: +vue +, VRef>:: +ty + +to +() + +309 +VRef + +addEmt +() const; + +311 +FORCE_INLINE + +VRef + +gEmt +( +size_t +) const; + +313 +FORCE_INLINE + +VRef + +gOrAddEmt +( +size_t +) const; + +317 + gme + < +tyme + + gTCh +> + +318 +FORCE_INLINE + +VRef + +gMemb +( +TCh + *) const; + +322 + gme + < +tyme + + gTSg +> + +323 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVRef +>:: +ty + + +324 +gMemb +(cڡ +TSg + &) const; + +329 + gme + < +tyme + + gTCh +> + +330 +FORCE_INLINE + +VRef + +gOrAddMemb +( +TCh + *) const; + +334 + gme + < +tyme + + gTSg +> + +335 +FORCE_INLINE + +VRef + +gOrAddMemb +(cڡ +TSg + &) const; + +337 +FORCE_INLINE +  +move +( +size_t + +dex +) const { + +338 i( + g_da +) + +339 + g_da +-> +move +( +dex +); + +344 + gme + < +tyme + + gTCh +> + +345 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +>:: +ty + +move +( + +346 +TCh + * +key +) const { + +347 i( +_da +) + +348 +_da +-> +move +( +adtSg +( +key +)); + +352 + gme + < +tyme + + gTSg +> + +353 +FORCE_INLINE + +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +>:: +ty + +move +( + +354 cڡ +TSg + & +key +) const { + +355 i( +_da +) + +356 +_da +-> +move +( +adtSg +( +key +)); + +359 + give +: + +360 +MemyPo + * +_po +; + +363 +ass + + gVCڡRef + : +public + +VRefBa +, + +364 +public + + gVOts +< + gVCڡRef +>, + +365 +public + + gVisab + { + +366  + gVRefBa + + tba_ty +; + +367 +nd + +ass + + gVRef +; + +369 + gpublic +: + +370 +VCڡRef +(: +ba_ty +(0) {} + +371 +VCڡRef +(cڡ +VDa + * +da +: +ba_ty +(data) {} + +372 +VCڡRef +( +VRef + +v +: +ba_ty +(v. +_da +) {} + +374 +me + < +tyme + +Vis +> + +375  +ac +( +Vis + & +vis +) const { + +376 +vAc +( +_da +, +vis +); + +381 + gme + < +tyme + + gT +> + +382 +FORCE_INLINE + +tyme + + gVCڡAs +< + gT +>:: +ty + +as +() const { + +383  +vAs +< +tyme + +VCڡAs +< +T +>:: +ty +>( +_da +); + +386 +FORCE_INLINE + +VCڡRef + +gEmt +( +size_t +) const; + +388 +FORCE_INLINE + +VCڡRef + + gݔ +[]( +size_t + + gdex +) const { + +389  +gEmt +( +dex +); + +394 + gme + < +tyme + + gTSg +> + +395 +FORCE_INLINE + +VCڡRef + +gMemb +(cڡ +TSg + & +key +) const { + +396  +VCڡRef +( + +397 +objeGMemb +( +vAsObje +( +_da +), +adtSg +( +key +))); + +403 + gme + < +tyme + + gTCh +> + +404 +FORCE_INLINE + +VCڡRef + +gMemb +( +TCh + * +key +) const { + +405 cڡ +CiDa + * + gobj + = +vAsObje +( +_da +); + +406  +VCڡRef +( +obj + ? obj-> +gMemb +( +adtSg +( +key +)) : 0); + +411 + gme + < +tyme + + gTSg +> + +412 +FORCE_INLINE + + +413 +tyme + + gab_if +< + gIsSg +< + gTSg +>:: +vue +, + gVCڡRef +>:: +ty + + +414 +ݔ +[](cڡ +TSg + & +key +) const { + +415  +gMemb +( +key +); + +421 + gme + < +tyme + + gTCh +> + +422 +FORCE_INLINE + + +423 +tyme + + gab_if +< + gIsSg +< + gTCh + *>:: +vue +, + gVCڡRef +>:: +ty + + +424 +ݔ +[]( +TCh + * +key +) const { + +425  +gMemb +( +key +); + +428 +FORCE_INLINE + +bo + + gݔ +==( +VCڡRef + +lhs +) const { + +429  +vEqus +( +_da +, +lhs +._data); + +432 +FORCE_INLINE + +bo + + gݔ +!=( +VCڡRef + +lhs +) const { + +433  ! +vEqus +( +_da +, +lhs +._data); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp + +5 #agm + + + +7  + ~ + +8  + ~ + +9  + ~ + +11  + ~ + +13 +mea + + gARDUINOJSON_NAMESPACE + { + +15  + gcdiڮ +<(*<2, + tt8_t +, + tt16_t +>:: + tty + + tVSlDiff +; + +17 as + cVSl + { + +21 +VCڋ + + g_cڋ +; + +22 +ut8_t + + g_ags +; + +23 +VSlDiff + + g_xt +; + +24 cڡ * + g_key +; + +26 + gpublic +: + +33 +VDa +* +da +() { + +34  +t_ +< +VDa +*>(& +_cڋ +); + +37 cڡ +VDa +* +da +() const { + +38  + gt_ +(& + g_cڋ +); + +41 +VSl +* +xt +() { + +42  + g_xt + ? + gthis + + _next : 0; + +45 cڡ +VSl +* +xt +() const { + +46  + gcڡ_ +< + gVSl +*>( + gthis +)-> +xt +(); + +49 +VSl +* +xt +( +size_t + +di +) { + +50 +VSl +* + g + = +this +; + +51  + gdi +--) { + +52 i(! + g +-> + g_xt +) + +54 + g + + + +-> +_xt +; + +56  + g +; + +59 cڡ +VSl +* +xt +( +size_t + +di +) const { + +60  + gcڡ_ +< + gVSl +*>( + gthis +)-> +xt +( +di +); + +63  +tNext +( +VSl +* + +) { + +64 + g_xt + = +VSlDiff +( + + ? sl - +this + : 0); + +67  +tNextNNu +( +VSl +* + +) { + +68 +ARDUINOJSON_ASSERT +( + + != 0); + +69 + g_xt + = +VSlDiff +( + + - +this +); + +72  +tOwdKey +( +n_nu + +k +) { + +73 + g_ags + | +KEY_IS_OWNED +; + +74 + g_key + = +k +. +g +(); + +77  +tLkedKey +( +n_nu + +k +) { + +78 + g_ags + & +VALUE_MASK +; + +79 + g_key + = +k +. +g +(); + +82 cڡ * +key +() const { + +83  + g_key +; + +86 +bo + +ownsKey +() const { + +87  ( + g_ags + & + gKEY_IS_OWNED +) != 0; + +90  +r +() { + +91 + g_xt + = 0; + +92 + g_ags + = 0; + +93 + g_key + = 0; + +96  +movePors +( +rdiff_t + +rgDi +,diff_ +vDi +) { + +97 i( + g_ags + & + gKEY_IS_OWNED +) + +98 + g_key + + +rgDi +; + +99 i( + g_ags + & + gVALUE_IS_OWNED +) + +100 + g_cڋ +. + gasSg + + +rgDi +; + +101 i( + g_ags + & + gCOLLECTION_MASK +) + +102 + g_cڋ +. + gasCi +. +movePors +( +rgDi +, +vDi +); + + @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp + +5 #agm + + + +7  + ~ + +9 +mea + + gARDUINOJSON_NAMESPACE + { + +10 +ass + + gAayRef +; + +11 +ass + + gObjeRef +; + +12 +ass + + gVRef +; + +16 + gme + < +tyme + + gT +> + +17  + sVTo + {}; + +19 + gme + <> + +20  + gVTo +< + gAayRef +> { + +21  +AayRef + + tty +; + +23 + gme + <> + +24  + gVTo +< + gObjeRef +> { + +25  +ObjeRef + + tty +; + +27 + gme + <> + +28  + gVTo +< + gVRef +> { + +29  +VRef + + tty +; + + @lib_standalone/ArduinoJson/src/ArduinoJson/compatibility.hpp + +7 #ifde +__GNUC__ + + +9  + #ARDUINOJSON_PRAGMA +( +x + + `_Pgma +(#x) + + ) + +11  + #ARDUINOJSON_COMPILE_ERROR +( +msg + + `ARDUINOJSON_PRAGMA +( +GCC + +r + msg) + + ) + +13  + #ARDUINOJSON_STRINGIFY +( +S +#S + + ) + +15  + #ARDUINOJSON_DEPRECATION_ERROR +( +X +, +Y +) \ + +16 + `ARDUINOJSON_COMPILE_ERROR +( + `ARDUINOJSON_STRINGIFY +( +X + +is + +a + +Y + +om + +ArduoJs + 5. +Pa + +e + +duojs +. +g +/ +upgde + +to + +ˬn + +how +upgd +your + +ogm +ArduoJs +vsi + 6)) + + ) + +18  + #SticJsBufr + + `ARDUINOJSON_DEPRECATION_ERROR +( +SticJsBufr +, +ass +) + + ) + +19  + #DymicJsBufr + + `ARDUINOJSON_DEPRECATION_ERROR +( +DymicJsBufr +, +ass +) + + ) + +20  + #JsBufr + + `ARDUINOJSON_DEPRECATION_ERROR +( +JsBufr +, +ass +) + + ) + +21  + #RawJs + + `ARDUINOJSON_DEPRECATION_ERROR +( +RawJs +, +funi +) + + ) + + @lib_standalone/ArduinoJson/src/ArduinoJson/version.hpp + +5 #agm + + + +7  + #ARDUINOJSON_VERSION + "6.15.0" + + ) + +8  + #ARDUINOJSON_VERSION_MAJOR + 6 + + ) + +9  + #ARDUINOJSON_VERSION_MINOR + 15 + + ) + +10  + #ARDUINOJSON_VERSION_REVISION + 0 + + ) + + @lib_standalone/AsyncJson.h + +2 #ide +ASYNC_JSON_H_ + + +3  + #ASYNC_JSON_H_ + + + ) + +4  + ~ + +5  + ~ + +7  + #DYNAMIC_JSON_DOCUMENT_SIZE + 1024 + + ) + +9 +cڡex + cڡ * + gJSON_MIMETYPE + = "application/json"; + +11 as + cChunkPrt + : +public + +Prt + { + +12 +ive +: + +13 +ut8_t + * +_dei +; + +14 +size_t + + m_to_sk +; + +15 +size_t + + m_to_wre +; + +16 +size_t + + m_pos +; + +18 + mpublic +: + +19 + $ChunkPrt +( +ut8_t + * +dei +, +size_t + +om +, size_ +n +) + +20 : + `_dei +( +dei +) + +21 , + `_to_sk +( +om +) + +22 , + `_to_wre +( +n +) + +23 , +_pos +{0} { + +24 + } +} + +25 + gvtu + ~ + $ChunkPrt +() { + +26 + } +} + +27 +size_t + + $wre +( +ut8_t + +c +) { + +28 i( +_to_sk + > 0) { + +29 +_to_sk +--; + +31 } i( +_to_wre + > 0) { + +32 +_to_wre +--; + +33 +_dei +[ +_pos +++] = +c +; + +37 + } +} + +38 +size_t + + $wre +(cڡ +ut8_t + * +bufr +, +size_t + +size +) { + +39  +this +-> +Prt +:: + `wre +( +bufr +, +size +); + +40 + } +} + +43 as + cAsyncJsReڣ + { + +44 + meed +: + +45 +DymicJsDocumt + +_jsBufr +; + +47 +JsV + + m_ro +; + +48 +bo + + m_isVid +; + +50 + mpublic +: + +51 + $AsyncJsReڣ +( +bo + +isAay + = +l +, +size_t + +maxJsBufrSize + = +DYNAMIC_JSON_DOCUMENT_SIZE +) + +52 : + `_jsBufr +( +maxJsBufrSize +) + +53 , +_isVid +{ +l +} { + +54 i( +isAay +) + +55 +_ro + = +_jsBufr +. + `NeedAay +(); + +57 +_ro + = +_jsBufr +. + `NeedObje +(); + +58 + } +} + +59 ~ + $AsyncJsReڣ +() { + +60 + } +} + +61 + gJsV + & + $gRo +() { + +62  +_ro +; + +63 + } +} + +64 +bo + + $_sourVid +() const { + +65  +_isVid +; + +66 + } +} + +67 +size_t + + $tLgth +() { + +69 + } +} + +71 +size_t + + $gSize +() { + +72  +_jsBufr +. + `size +(); + +73 + } +} + +75 +size_t + + $_flBufr +( +ut8_t + * +da +, +size_t + +n +) { + +76  +n +; + +77 + } +} + +80  + gd +:: + tfuni +<( + tAsyncWebSvReque + * + tque +, + tJsV + & + tjs +)> + tArJsRequeHdrFuni +; + +82 as + cAsyncClbackJsWebHdr + : +public + +AsyncWebHdr + { + +83 +ive +: + +84 +eed +: + +85 cڡ +Sg + +_uri +; + +86 +WebRequeMhodCompose + + m_mhod +; + +87 +ArJsRequeHdrFuni + + m_Reque +; + +88 +size_t + + m_cڋLgth +; + +89 +size_t + + m_maxCڋLgth +; + +91 + mpublic +: + +92 + $AsyncClbackJsWebHdr +(cڡ +Sg + & +uri +, +ArJsRequeHdrFuni + +Reque +, +size_t + +maxJsBufrSize + = +DYNAMIC_JSON_DOCUMENT_SIZE +) + +93 : + `_uri +( +uri +) + +94 , + `_mhod +( +HTTP_POST + | +HTTP_PUT + | +HTTP_PATCH +) + +95 , + `_Reque +( +Reque +) + +96 , + $_maxCڋLgth +(16384) { + +99  + $tMhod +( +WebRequeMhodCompose + +mhod +) { + +100 +_mhod + = +mhod +; + +101 + } +} + +102  + $tMaxCڋLgth +( +maxCڋLgth +) { + +103 +_maxCڋLgth + = +maxCڋLgth +; + +104 + } +} + +105  + $Reque +( +ArJsRequeHdrFuni + + +) { + +106 +_Reque + = + +; + +107 + } +} + +109 +vtu + +bo + + $nHd +( +AsyncWebSvReque + * +que + +ovride + +f + { + +110 i(! +_Reque +) + +111  +l +; + +113 i(!( +_mhod + & +que +-> + `mhod +())) + +114  +l +; + +116 +que +-> + `addIegHd +("ANY"); + +117  +ue +; + +118 + } +} + +120 +vtu +  + $hdReque +( +AsyncWebSvReque + * +que + +ovride + +f + { + +121 i( +_Reque +) { + +122 i( +que +-> +_mpObje + ! +NULL +) { + +123 +DymicJsDocumt + + `jsBufr +(1024); + +124 +DerliziE + +r + = + `derlizeJs +( +jsBufr +, ( +ut8_t + *)( +que +-> +_mpObje +)); + +125 i(! +r +) { + +126 +JsV + +js + = +jsBufr +. +as +(); + +128 + `_Reque +( +que +, +js +); + +132 +que +-> + `nd +( +_cڋLgth + > +_maxCڋLgth + ? 413 : 400); + +134 +que +-> + `nd +(500); + +136 + } +} + +137 +vtu +  + $hdUd +( +AsyncWebSvReque + * +que +, cڡ +Sg + & +fame +, +size_t + +dex +, +ut8_t + * +da +, size_ +n +, +bo + +f + +ovride + final { + +138 + } +} + +139 +vtu +  + $hdBody +( +AsyncWebSvReque + * +que +, +ut8_t + * +da +, +size_t + +n +, size_ +dex +, size_ +tٮ + +ovride + +f + { + +140 i( +_Reque +) { + +141 +_cڋLgth + = +tٮ +; + +142 i( +tٮ + > 0 && +que +-> +_mpObje + = +NULL + &&ٮ < +_maxCڋLgth +) { + +143 +que +-> +_mpObje + = + `mloc +( +tٮ +); + +145 i( +que +-> +_mpObje + ! +NULL +) { + +146 + `memy +(( +ut8_t + *)( +que +-> +_mpObje ++ +dex +, +da +, +n +); + +149 + } +} + +150 +vtu + +bo + + $isRequeHdrTrivl +( +ovride + +f + { + +151  +_Reque + ? +l + : +ue +; + +152 + } +} + + @lib_standalone/AsyncMqttClient.h + +1 #ide +ASYNCMQTTCLIENT_H_ + + +2  + #ASYNCMQTTCLIENT_H_ + + + ) + +4  + ~"Arduo.h +" + +5  + ~ + +7 as + cAsyncMqClDiscRs + : +t8_t + { + +8 +TCP_DISCONNECTED + = 0, + +10 + mMQTT_UNACCEPTABLE_PROTOCOL_VERSION + = 1, + +11 + mMQTT_IDENTIFIER_REJECTED + = 2, + +12 + mMQTT_SERVER_UNAVAILABLE + = 3, + +13 + mMQTT_MALFORMED_CREDENTIALS + = 4, + +14 + mMQTT_NOT_AUTHORIZED + = 5, + +16 + mESP8266_NOT_ENOUGH_SPACE + = 6, + +18 + mTLS_BAD_FINGERPRINT + = 7 + +21  + sAsyncMqClMesgePrݔts + { + +22 +ut8_t + + mqos +; + +23 +bo + + mdup +; + +24 +bo + + m +; + +27 +mea + + gAsyncMqClIls + { + +29  + gd +:: + tfuni +<( + tbo + + tssiP +)> + tOnCUrClback +; + +30  + gd +:: + tfuni +<( + tAsyncMqClDiscRs + + tas +)> + tOnDiscUrClback +; + +31  + gd +:: + tfuni +<( + tut16_t + + tckId +, + tut8_t + + tqos +)> + tOnSubsibeUrClback +; + +32  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnUnsubsibeUrClback +; + +33  + gd +:: + tfuni +<(* + ttic +, * + tyld +, + tAsyncMqClMesgePrݔts + + tݔts +, + tsize_t + + tn +, size_ + tdex +, size_ + ttٮ +)> + tOnMesgeUrClback +; + +34  + gd +:: + tfuni +<( + tut16_t + + tckId +)> + tOnPublishUrClback +; + +37 as + cAsyncMqCl + { + +38 + mpublic +: + +39 +AsyncMqCl +(); + +40 ~ +AsyncMqCl +(); + +42 + mAsyncMqCl + & +tKpAlive +( +ut16_t + +kpAlive +); + +43 + mAsyncMqCl + & +tClId +(cڡ * +Id +); + +44 + mAsyncMqCl + & +tC˪Sessi +( +bo + +nSessi +); + +45 + mAsyncMqCl + & +tMaxTicLgth +( +ut16_t + +maxTicLgth +); + +46 + mAsyncMqCl + & +tCdtls +(cڡ * +uame +, cڡ * +sswd + = +nuαr +); + +47 + mAsyncMqCl + & + $tWl +(cڡ * +tic +, +ut8_t + +qos +, +bo + + +, cڡ * +yld + = +nuαr +, +size_t + +ngth + = 0) { + +48  * +this +; + +50 +AsyncMqCl + & + `tSv +( +IPAddss + + +, +ut16_t + +pt +); + +51 +AsyncMqCl + & + `tSv +(cڡ * +ho +, +ut16_t + +pt +); + +53 +AsyncMqCl + & + $C +( +AsyncMqClIls +:: +OnCUrClback + +back +) { + +54  * +this +; + +55 + } +} + +56 + gAsyncMqCl + & + $Disc +( +AsyncMqClIls +:: +OnDiscUrClback + +back +) { + +57  * +this +; + +58 + } +} + +59 + gAsyncMqCl + & + $Subsibe +( +AsyncMqClIls +:: +OnSubsibeUrClback + +back +) { + +60  * +this +; + +61 + } +} + +62 + gAsyncMqCl + & + $Unsubsibe +( +AsyncMqClIls +:: +OnUnsubsibeUrClback + +back +) { + +63  * +this +; + +64 + } +} + +65 + gAsyncMqCl + & + $Mesge +( +AsyncMqClIls +:: +OnMesgeUrClback + +back +) { + +66  * +this +; + +67 + } +} + +68 + gAsyncMqCl + & + $Publish +( +AsyncMqClIls +:: +OnPublishUrClback + +back +) { + +69  * +this +; + +70 + } +} + +72 +bo + + $ced +() const { + +73  +l +; + +74 + } +} + +75  + $c +() { + +76 + } +} + +77  + $disc +( +bo + +f + = +l +) { + +78 + } +} + +79 +ut16_t + + $subsibe +(cڡ * +tic +, +ut8_t + +qos +) { + +81 + } +} + +82 +ut16_t + + $unsubsibe +(cڡ * +tic +) { + +84 + } +} + +85 +ut16_t + + $publish +(cڡ * +tic +, +ut8_t + +qos +, +bo + + +, cڡ * +yld + = +nuαr +, +size_t + +ngth + = 0, bo +dup + = +l +, +ut16_t + +mesge_id + = 0) { + +87 + } +} + +89 cڡ * + $gClId +() { + +91 + } +} + +93 + give +: + +94 +bo + +_ced +; + +95 +bo + + g_cPackNEnoughS +; + +96 +bo + + g_discOnPl +; + +97 +bo + + g_sBadFgt +; + +98 +ut32_t + + g_ϡClAivy +; + +99 +ut32_t + + g_ϡSvAivy +; + +100 +ut32_t + + g_ϡPgRequeTime +; + +101  + g_gedClId +[18 + 1]; + +102 +IPAddss + + g_ +; + +103 cڡ * + g_ho +; + +104 +bo + + g_uIp +; + +105 +ut16_t + + g_pt +; + +106 +ut16_t + + g_kpAlive +; + +107 +bo + + g_nSessi +; + +108 cڡ * + g_Id +; + +109 cڡ * + g_uame +; + +110 cڡ * + g_sswd +; + +111 cڡ * + g_wlTic +; + +112 cڡ * + g_wlPayld +; + +113 +ut16_t + + g_wlPayldLgth +; + +114 +ut8_t + + g_wlQos +; + +115 +bo + + g_wlRa +; + + @lib_standalone/AsyncTCP.h + +1 #ide +ASYNCTCP_H_ + + +2  + #ASYNCTCP_H_ + + + ) + +4  + ~"Arduo.h +" + +5  + ~ + +7 +ass + + gAsyncCl +; + +9  + gt_pcb +; + +10  + g_addr +; + +12 as + cAsyncCl + { + +13 + mpublic +: + +14 +AsyncCl +( +t_pcb + * +pcb + = 0); + +15 ~ +AsyncCl +(); + +18 as + cAsyncSv + { + +19 + mpublic +: + +20 + $AsyncSv +( +ut16_t + +pt +) + +21 : + $_pt +( +pt +){}; + +22 ~ + $AsyncSv +(){ + } +}; + +24 + geed +: + +25 +ut16_t + +_pt +; + + @lib_standalone/ESP8266React.h + +1 #ide +ESP8266R_h + + +2  + #ESP8266R_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +8  + ~ + +9  + ~ + +10  + ~ + +11  + ~ + +12  + ~ + +14 as + cDummyStgs + { + +15 + mpublic +: + +16 +ut8_t + +tx_mode + = 1; + +17 +ut8_t + + mems_bus_id + = 0x0B; + +18 +bo + + msyem_hbt + = +l +; + +19 +t8_t + + msyog_v + = 1; + +20 +ut32_t + + msyog_mk_rv + = 0; + +21 +Sg + + msyog_ho + = "192.168.1.4"; + +22 +ut8_t + + mma_thmo + = 0; + +23 +bo + + mshow_tim + = +l +; + +24 +bo + + mshow_t + = +l +; + +25 +bo + + mhide_d + = +l +; + +26 +ut16_t + + mpublish_time + = 10; + +27 +ut8_t + + mmq_fm + = 3; + +28 +ut8_t + + mmq_qos + = 0; + +29 +Sg + + mhome + = "ems-esp"; + +30 +Sg + + mjwtSe + = "ems-esp"; + +31 +Sg + + mssid + = "ems-esp"; + +32 +Sg + + msswd + = "ems-esp"; + +33 +ut16_t + + mpublish_time_bo +; + +34 +ut16_t + + mpublish_time_thmo +; + +35 +ut16_t + + mpublish_time_sެ +; + +36 +ut16_t + + mpublish_time_mixg +; + +37 +ut16_t + + mpublish_time_h +; + +38 +ut16_t + + mpublish_time_ns +; + +40  + $ad +( +DummyStgs + & +gs +, +JsObje + & +ro +){}; + +41  + $ad +( +DummyStgs + & +gs +){ + } +}; + +43  +SUpdeResu + + $upde +( +JsObje + & +ro +, +DummyStgs + & +gs +) { + +44  +SUpdeResu +:: +CHANGED +; + +45 + } +} + +48 +ass + + gDummyStgsSvi + : +public + +SfulSvi +< +DummyStgs +> { + +49 +public +: + +50 +DummyStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +){}; + +52  +beg +(); + +53  +lo +(); + +55 + give +: + +58  + #WiFiStgs + +DummyStgs + + + ) + +59  + #SecuryStgs + +DummyStgs + + + ) + +60  + #MqStgs + +DummyStgs + + + ) + +62 as + cESP8266R + { + +63 + mpublic +: + +64 + $ESP8266R +( +AsyncWebSv + * +rv +, +FS + * +fs +) + +65 : + `_gs +( +rv +, +fs +, +nuαr +) + +66 , + $_curyStgsSvi +( +rv +, +fs +){}; + +68  + $beg +(){ + } +}; + +69  + $lo +(){ + } +}; + +71 +SecuryMag + * + $gSecuryMag +() { + +72  & +_curyStgsSvi +; + +73 + } +} + +75 +AsyncMqCl + * + $gMqCl +() { + +76  +_mqCl +; + +77 + } +} + +79 + gSfulSvi +< + gDummyStgs +> * + $gWiFiStgsSvi +() { + +80  & +_gs +; + +81 + } +} + +83 + gSfulSvi +< + gDummyStgs +> * + $gSecuryStgsSvi +() { + +84  & +_gs +; + +85 + } +} + +87 + gSfulSvi +< + gDummyStgs +> * + $gMqStgsSvi +() { + +88  & +_gs +; + +89 + } +} + +91 + give +: + +92 +DummyStgsSvi + +_gs +; + +93 +SecuryStgsSvi + + g_curyStgsSvi +; + +95 +AsyncMqCl + * + g_mqCl +; + +98 as + cEMSESPStgsSvi + { + +99 + mpublic +: + +100 +EMSESPStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +); + +102  +beg +(); + +104 + mive +: + + @lib_standalone/ESPAsyncWebServer.h + +1 #ide +_ESPAsyncWebSv_H_ + + +2  + #_ESPAsyncWebSv_H_ + + + ) + +4  + ~"Arduo.h +" + +6  + ~ + +7  + ~ + +8  + ~ + +10 +ass + + gAsyncWebSv +; + +11 +ass + + gAsyncWebSvReque +; + +12 +ass + + gAsyncWebSvReڣ +; + +13 +ass + + gAsyncJsReڣ +; + +16 + mHTTP_GET + = 0b00000001, + +17 + mHTTP_POST + = 0b00000010, + +18 + mHTTP_DELETE + = 0b00000100, + +19 + mHTTP_PUT + = 0b00001000, + +20 + mHTTP_PATCH + = 0b00010000, + +21 + mHTTP_HEAD + = 0b00100000, + +22 + mHTTP_OPTIONS + = 0b01000000, + +23 + mHTTP_ANY + = 0b01111111, + +24 } + tWebRequeMhod +; + +26  +ut8_t + + tWebRequeMhodCompose +; + +27  + gd +:: + tfuni +<()> + tArDiscHdr +; + +29 as + cAsyncWebSvReque + { + +30 +nd + +ass + + mAsyncWebSv +; + +31 +nd + +ass + + mAsyncClbackWebHdr +; + +33 + mive +: + +34 +AsyncCl + * +_ +; + +35 +AsyncWebSv + * + m_rv +; + +36 +WebRequeMhodCompose + + m_mhod +; + +38 + mpublic +: + +39 * +_mpObje +; + +41 +AsyncWebSvReque +( +AsyncWebSv + *, +AsyncCl + *); + +42 ~ +AsyncWebSvReque +(); + +44 +AsyncCl + * + $ +() { + +45  +_ +; + +48 +WebRequeMhodCompose + + $mhod +() const { + +49  +_mhod +; + +50 + } +} + +52  + $addIegHd +(cڡ +Sg + & +me +){ + } +}; + +54  + $nd +( +AsyncWebSvReڣ + * +ڣ +){ + } +}; + +55  + $nd +( +AsyncJsReڣ + * +ڣ +){ + } +}; + +56  +nd +( +code +, cڡ +Sg + & +cڋTy + = Sg(), cڡ Sg & +cڋ + = + $Sg +()){ + } +}; + +58 +AsyncWebSvReڣ + * +begReڣ +( +code +, cڡ +Sg + & +cڋTy + = Sg(), cڡ Sg & +cڋ + = + $Sg +()) { + +60  +nuαr +; + +61 + } +} + +63 +size_t + + $hds +() const; + +64 +size_t + + $ms +() const; + +65 + } +}; + +67  + gd +:: + tfuni +< + tbo +( + tAsyncWebSvReque + * + tque +)> + tArRequeFrFuni +; + +69 as + cAsyncWebHdr + { + +70 + meed +: + +71 +Sg + +_uame +; + +72 +Sg + + m_sswd +; + +74 + mpublic +: + +75 + $AsyncWebHdr +() + +76 : + `_uame +("") + +77 , + `_sswd +("") { + +80 +vtu + ~ + $AsyncWebHdr +() { + +81 + } +} + +82 +vtu + +bo + +nHd +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +))) { + +83  + gl +; + +85 +vtu +  +hdReque +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +))) { + +87 +vtu +  +hdUd +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +)), + +88 cڡ +Sg + & +fame + +__ibu__ +(( +unud +)), + +89 +size_t + +dex + +__ibu__ +(( +unud +)), + +90 +ut8_t + * +da + +__ibu__ +(( +unud +)), + +91 +size_t + +n + +__ibu__ +(( +unud +)), + +92 +bo + +f + +__ibu__ +(( +unud +))) { + +94 +vtu +  +hdBody +( +AsyncWebSvReque + * +que + +__ibu__ +(( +unud +)), + +95 +ut8_t + * +da + +__ibu__ +(( +unud +)), + +96 +size_t + +n + +__ibu__ +(( +unud +)), + +97 +size_t + +dex + +__ibu__ +(( +unud +)), + +98 +size_t + +tٮ + +__ibu__ +(( +unud +))) { + +101 +vtu + +bo + + $isRequeHdrTrivl +() { + +102  +ue +; + +103 + } +} + +106 as + cAsyncWebSvReڣ + { + +107 + mpublic +: + +108 +AsyncWebSvReڣ +(); + +109 + mvtu + ~ +AsyncWebSvReڣ +(); + +112  + gd +:: + tfuni +<( + tAsyncWebSvReque + * + tque +)> + tArRequeHdrFuni +; + +113  + gd +:: + tfuni +<( + tAsyncWebSvReque + * + tque +, cڡ + tSg + & + tfame +, + tsize_t + + tdex +, + tut8_t + * + tda +, size_ + tn +, + tbo + + tf +)> + tArUdHdrFuni +; + +114  + gd +:: + tfuni +<( + tAsyncWebSvReque + * + tque +, + tut8_t + * + tda +, + tsize_t + + tn +, size_ + tdex +, size_ + ttٮ +)> + tArBodyHdrFuni +; + +116 as + cAsyncWebSv + { + +117 + meed +: + +118 +AsyncSv + +_rv +; + +120 + mpublic +: + +121 + $AsyncWebSv +( +ut16_t + +pt +) + +122 : + $_rv +( +pt +){}; + +124 ~ + $AsyncWebSv +(){ + } +}; + +126  + $beg +(){ + } +}; + +127  +d +(); + +129 + gAsyncWebHdr + & + $addHdr +( +AsyncWebHdr + * +hdr +) { + +130  * +hdr +; + +131 + } +} + +133  + $ +(cڡ * +uri +, +WebRequeMhodCompose + +mhod +, +ArRequeHdrFuni + +Reque +){ + } +}; + + @lib_standalone/FS.h + +1 #ide +FS_h + + +2  + #FS_h + + + ) + +4 as + cFS + { + +5 +bo + + $ݒ +() { + +6  +ue +; + +8 + } +}; + + @lib_standalone/FSPersistence.h + +1 #ide +FSPsi_h + + +2  + #FSPsi_h + + + ) + +4  + ~ + +5  + ~ + +7 + gme + < +ass + + gT +> + +8 as + cFSPsi + { + +9 + mpublic +: + +10 +FSPsi +( +JsSRd +< +T +> +eRd +, + +11 +JsSUpd +< +T +> +eUpd +, + +12 +SfulSvi +< +T +> * +efulSvi +, + +13 +FS + * +fs +, + +14 cڡ * +fePh +, + +15 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) + +16 : +_eRd +( +eRd +) + +17 , +_eUpd +( +eUpd +) + +18 , +_efulSvi +( +efulSvi +) + +19 , +_fs +( +fs +) + +20 , +_fePh +( +fePh +) + +21 , +_bufrSize +( +bufrSize +) + +22 , + $_updeHdrId +(0) { + +23 + `abUpdeHdr +(); + +26  + $adFromFS +() { + +27 + `yDeus +(); + +28 + } +} + +30 +bo + + $wreToFS +() { + +31 +DymicJsDocumt + +jsDocumt + = + `DymicJsDocumt +( +_bufrSize +); + +32 +JsObje + +jsObje + = +jsDocumt +. +to +(); + +33 +_efulSvi +-> + `ad +( +jsObje +, +_eRd +); + +34  +ue +; + +35 + } +} + +37  + $dibUpdeHdr +() { + +38 i( +_updeHdrId +) { + +39 +_efulSvi +-> + `moveUpdeHdr +( +_updeHdrId +); + +40 +_updeHdrId + = 0; + +42 + } +} + +44  + $abUpdeHdr +() { + +45 i(! +_updeHdrId +) { + +46 +_updeHdrId + = +_efulSvi +-> + `addUpdeHdr +([&](cڡ +Sg + & +igId +{ + `wreToFS +(); }); + +48 + } +} + +50 + give +: + +51 +JsSRd +< +T +> +_eRd +; + +52 + gJsSUpd +< + gT +> + g_eUpd +; + +53 + gSfulSvi +< + gT +> * + g_efulSvi +; + +54 +FS + * + g_fs +; + +55 cڡ * + g_fePh +; + +56 +size_t + + g_bufrSize +; + +57 +upde_hdr_id_t + + g_updeHdrId +; + +59 + geed +: + +60 +vtu +  + $yDeus +() { + +61 +DymicJsDocumt + +jsDocumt + = + `DymicJsDocumt +( +_bufrSize +); + +62 +JsObje + +jsObje + = +jsDocumt +. +as +(); + +63 +_efulSvi +-> + `updeWhoutPragi +( +jsObje +, +_eUpd +); + +64 + } +} + + @lib_standalone/Features.h + +1 #ide +Ftus_h + + +2  + #Ftus_h + + + ) + +4  + #FT_ENABLED +( +u + + ) +feature + +7 #ide +FT_PROJECT + + +8  + #FT_PROJECT + 0 + + ) + +12 #ide +FT_SECURITY + + +13  + #FT_SECURITY + 0 + + ) + +17 #ide +FT_MQTT + + +18  + #FT_MQTT + 0 + + ) + +22 #ide +FT_NTP + + +23  + #FT_NTP + 0 + + ) + +27 #ide +FT_OTA + + +28  + #FT_OTA + 0 + + ) + +32 #ide +FT_UPLOAD_FIRMWARE + + +33  + #FT_UPLOAD_FIRMWARE + 0 + + ) + + @lib_standalone/HttpEndpoint.h + +1 #ide +HpEndpot_h + + +2  + #HpEndpot_h + + + ) + +4  + ~ + +6  + ~ + +7  + ~ + +9  + ~ + +10  + ~ + +12  + #HTTP_ENDPOINT_ORIGIN_ID + "hp" + + ) + +14 + gme + < +ass + + gT +> + +15 as + cHpGEndpot + { + +16 + mpublic +: + +17 +HpGEndpot +( +JsSRd +< +T +> +eRd +, + +18 +SfulSvi +< +T +>* +efulSvi +, + +19 +AsyncWebSv +* +rv +, + +20 cڡ +Sg +& +rviPh +, + +21 +SecuryMag +* +curyMag +, + +22 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +23 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +24 +_eRd +( +eRd +), +_efulSvi +( +efulSvi +), + $_bufrSize +( +bufrSize +) { + +27 + `HpGEndpot +( +JsSRd +< +T +> +eRd +, + +28 +SfulSvi +< +T +>* +efulSvi +, + +29 +AsyncWebSv +* +rv +, + +30 cڡ +Sg +& +rviPh +, + +31 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +32 + `_eRd +( +eRd +), + `_efulSvi +( +efulSvi +), + $_bufrSize +( +bufrSize +) { + +33 + } +} + +35 + geed +: + +36 +JsSRd +< +T +> +_eRd +; + +37 + gSfulSvi +< + gT +>* + g_efulSvi +; + +38 +size_t + + g_bufrSize +; + +40  + $tchStgs +( +AsyncWebSvReque +* +que +) { + +41 + } +} + +44 + gme + < +ass + + gT +> + +45 as + cHpPoEndpot + { + +46 + mpublic +: + +47 +HpPoEndpot +( +JsSRd +< +T +> +eRd +, + +48 +JsSUpd +< +T +> +eUpd +, + +49 +SfulSvi +< +T +>* +efulSvi +, + +50 +AsyncWebSv +* +rv +, + +51 cڡ +Sg +& +rviPh +, + +52 +SecuryMag +* +curyMag +, + +53 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +54 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +55 +_eRd +( +eRd +), + +56 +_eUpd +( +eUpd +), + +57 +_efulSvi +( +efulSvi +), + +58 + $_bufrSize +( +bufrSize +) { + +61 + `HpPoEndpot +( +JsSRd +< +T +> +eRd +, + +62 +JsSUpd +< +T +> +eUpd +, + +63 +SfulSvi +< +T +>* +efulSvi +, + +64 +AsyncWebSv +* +rv +, + +65 cڡ +Sg +& +rviPh +, + +66 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +67 + `_eRd +( +eRd +), + +68 + `_eUpd +( +eUpd +), + +69 + `_efulSvi +( +efulSvi +), + +70 + $_bufrSize +( +bufrSize +) { + +71 + } +} + +73 + geed +: + +74 +JsSRd +< +T +> +_eRd +; + +75 + gJsSUpd +< + gT +> + g_eUpd +; + +76 + gSfulSvi +< + gT +>* + g_efulSvi +; + +77 +size_t + + g_bufrSize +; + +79  + $updeStgs +( +AsyncWebSvReque +* +que +, +JsV +& +js +) { + +80 i(! +js +. +is +< +JsObje +>()) { + +83 +JsObje + +jsObje + = +js +. +as +(); + +84 +SUpdeResu + +outcome + = +_efulSvi +-> + `updeWhoutPragi +( +jsObje +, +_eUpd +); + +85 i( +outcome + = +SUpdeResu +:: +ERROR +) { + +88 i( +outcome + = +SUpdeResu +:: +CHANGED +) { + +90 + } +} + +93 + gme + < +ass + + gT +> + +94 +ass + + gHpEndpot + : +public + +HpGEndpot +< +T +>,ubli + gHpPoEndpot +< + gT +> { + +95 + gpublic +: + +96 +HpEndpot +( +JsSRd +< +T +> +eRd +, + +97 +JsSUpd +< +T +> +eUpd +, + +98 +SfulSvi +< +T +>* +efulSvi +, + +99 +AsyncWebSv +* +rv +, + +100 cڡ +Sg +& +rviPh +, + +101 +SecuryMag +* +curyMag +, + +102 +AuthtitiPdi + +authtitiPdi + = +AuthtitiPdis +:: +IS_ADMIN +, + +103 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +104 +HpGEndpot +< +T +>( +eRd +, + +105 + gefulSvi +, + +106 + grv +, + +107 + grviPh +, + +108 + gcuryMag +, + +109 + gauthtitiPdi +, + +110 + gbufrSize +), + +111 + gHpPoEndpot +< + gT +>( + geRd +, + +112 + geUpd +, + +113 + gefulSvi +, + +114 + grv +, + +115 + grviPh +, + +116 + gcuryMag +, + +117 + gauthtitiPdi +, + +118 + gbufrSize +) { + +121 +HpEndpot +( +JsSRd +< +T +> +eRd +, + +122 +JsSUpd +< +T +> +eUpd +, + +123 +SfulSvi +< +T +>* +efulSvi +, + +124 +AsyncWebSv +* +rv +, + +125 cڡ +Sg +& +rviPh +, + +126 +size_t + +bufrSize + = +DEFAULT_BUFFER_SIZE +) : + +127 +HpGEndpot +< +T +>( +eRd +, + gefulSvi +, + grv +, + grviPh +, + gbufrSize +), + +128 + gHpPoEndpot +< + gT +>( + geRd +, + geUpd +, + gefulSvi +, + grv +, + grviPh +, + gbufrSize +) { + + @lib_standalone/MqttPubSub.h + + @lib_standalone/SecurityManager.h + +1 #ide +SecuryMag_h + + +2  + #SecuryMag_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +8  + ~
  • + +10 #ide +FACTORY_JWT_SECRET + + +11  + #FACTORY_JWT_SECRET + +ESPUts +:: + `deuDeviVue +() + + ) + +14  + #ACCESS_TOKEN_PARAMATER + "acss_tok" + + ) + +16  + #AUTHORIZATION_HEADER + "Authizi" + + ) + +17  + #AUTHORIZATION_HEADER_PREFIX + "B" + + ) + +18  + #AUTHORIZATION_HEADER_PREFIX_LEN + 7 + + ) + +20  + #MAX_JWT_SIZE + 128 + + ) + +22 as + cUr + { + +23 + mpublic +: + +24 +Sg + +uame +; + +25 +Sg + + msswd +; + +26 +bo + + madm +; + +28 + mpublic +: + +29 + $Ur +( +Sg + +uame +, Sg +sswd +, +bo + +adm +) + +30 : + `uame +( +uame +) + +31 , + `sswd +( +sswd +) + +32 , + $adm +( +adm +) { + +34 + } +}; + +36 as + cAuthtiti + { + +37 + mpublic +: + +38 +Ur + * +ur +; + +39 +boޗn + + mauthtid +; + +41 + mpublic +: + +42 + $Authtiti +( +Ur + & +ur +) + +43 : + `ur +( +w + + `Ur +( +ur +)) + +44 , + $authtid +( +ue +) { + +46 + $Authtiti +() + +47 : + `ur +( +nuαr +) + +48 , + $authtid +( +l +) { + +49 + } +} + +50 ~ + $Authtiti +() { + +51 + `de + ( +ur +); + +52 + } +} + +55  + gd +:: + tfuni +< + tboޗn +( + tAuthtiti + & + tauthtiti +)> + tAuthtitiPdi +; + +57 as + cAuthtitiPdis + { + +58 + mpublic +: + +59  +bo + + $NONE_REQUIRED +( +Authtiti + & +authtiti +) { + +60  +ue +; + +62  +bo + + $IS_AUTHENTICATED +( +Authtiti + & +authtiti +) { + +63  +authtiti +. +authtid +; + +64 + } +}; + +65  +bo + + $IS_ADMIN +( +Authtiti + & +authtiti +) { + +66  +authtiti +. +authtid + &&uthtiti. +ur +-> +adm +; + +67 + } +}; + +70 as + cSecuryMag + { + +71 + mpublic +: + +72 #i + $FT_ENABLED +( +FT_SECURITY +) + +73 +vtu + +Authtiti + + `authti +(cڡ +Sg + & +uame +, cڡ Sg & +sswd +) = 0; + +74 +vtu + +Sg + + `geJWT +( +Ur + * +ur +) = 0; + +77 +vtu + +Authtiti + + `authtiReque +( +AsyncWebSvReque + * +que +) = 0; + +78 +vtu + +ArRequeFrFuni + + `frReque +( +AuthtitiPdi + +edi +) = 0; + +79 +vtu + +ArRequeHdrFuni + + `wpReque +(ArRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +) = 0; + +80 +vtu + +ArJsRequeHdrFuni + + `wpClback +(ArJsRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +) = 0; + + @lib_standalone/SecuritySettingsService.cpp + +1  + ~ + +3 #i +FT_ENABLED +( +FT_SECURITY +) + +5 + gSecuryStgsSvi +:: + $SecuryStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +) : + +6 + `_hpEndpot +( +SecuryStgs +:: +ad +, SecuryStgs:: +upde +, +this +, +rv +, +SECURITY_SETTINGS_PATH +,his), + +7 + `_fsPsi +( +SecuryStgs +:: +ad +, SecuryStgs:: +upde +, +this +, +fs +, +SECURITY_SETTINGS_FILE +), + +8 + $_jwtHdr +( +FACTORY_JWT_SECRET +) { + +9 + `addUpdeHdr +([&](cڡ +Sg +& +igId +{ + `cfiguJWTHdr +(); }, +l +); + +10 + } +} + +12  + gSecuryStgsSvi +:: + $beg +() { + +13 +_fsPsi +. + `adFromFS +(); + +14 + `cfiguJWTHdr +(); + +15 + } +} + +17 +Authtiti + + gSecuryStgsSvi +:: + $authtiReque +( +AsyncWebSvReque +* +que +) { + +18 +AsyncWebHd +* +authiziHd + = +que +-> + `gHd +( +AUTHORIZATION_HEADER +); + +19 i( +authiziHd +) { + +20 +Sg + +vue + = +authiziHd +-> + `vue +(); + +21 i( +vue +. + `tsWh +( +AUTHORIZATION_HEADER_PREFIX +)) { + +22 +vue + = vue. + `subrg +( +AUTHORIZATION_HEADER_PREFIX_LEN +); + +23  + `authtiJWT +( +vue +); + +25 } i( +que +-> + `hasPam +( +ACCESS_TOKEN_PARAMATER +)) { + +26 +AsyncWebPam +* +tokPam + = +que +-> + `gPam +( +ACCESS_TOKEN_PARAMATER +); + +27 +Sg + +vue + = +tokPam +-> + `vue +(); + +28  + `authtiJWT +( +vue +); + +30  + `Authtiti +(); + +31 + } +} + +33  + gSecuryStgsSvi +:: + $cfiguJWTHdr +() { + +34 +_jwtHdr +. + `tSe +( +_e +. +jwtSe +); + +35 + } +} + +37 +Authtiti + + gSecuryStgsSvi +:: + $authtiJWT +( +Sg +& +jwt +) { + +38 +DymicJsDocumt + + `yldDocumt +( +MAX_JWT_SIZE +); + +39 +_jwtHdr +. + `rJWT +( +jwt +, +yldDocumt +); + +40 i( +yldDocumt +. +is +< +JsObje +>()) { + +41 +JsObje + +rdPayld + = +yldDocumt +. +as +(); + +42 +Sg + +uame + = +rdPayld +["username"]; + +43  +Ur + +_ur + : +_e +. +urs +) { + +44 i( +_ur +. +uame + =uam&& + `videPayld +( +rdPayld +, &_user)) { + +45  + `Authtiti +( +_ur +); + +49  + `Authtiti +(); + +50 + } +} + +52 +Authtiti + + gSecuryStgsSvi +:: + $authti +(cڡ +Sg +& +uame +, cڡ Sg& +sswd +) { + +53  +Ur + +_ur + : +_e +. +urs +) { + +54 i( +_ur +. +uame + =uam&& _ur. +sswd + ==assword) { + +55  + `Authtiti +( +_ur +); + +58  + `Authtiti +(); + +59 + } +} + +61 +le +  + $puϋJWTPayld +( +JsObje +& +yld +, +Ur +* +ur +) { + +62 +yld +["uame"] = +ur +-> +uame +; + +63 +yld +["adm"] = +ur +-> +adm +; + +64 +yld +["vsi"] = +EMSESP_APP_VERSION +; + +65 + } +} + +67 +boޗn + + gSecuryStgsSvi +:: + $videPayld +( +JsObje +& +rdPayld +, +Ur +* +ur +) { + +68 +DymicJsDocumt + + `jsDocumt +( +MAX_JWT_SIZE +); + +69 +JsObje + +yld + = +jsDocumt +. +to +(); + +70 + `puϋJWTPayld +( +yld +, +ur +); + +71  +yld + = +rdPayld +; + +72 + } +} + +74 +Sg + + gSecuryStgsSvi +:: + $geJWT +( +Ur +* +ur +) { + +75 +DymicJsDocumt + + `jsDocumt +( +MAX_JWT_SIZE +); + +76 +JsObje + +yld + = +jsDocumt +. +to +(); + +77 + `puϋJWTPayld +( +yld +, +ur +); + +78  +_jwtHdr +. + `budJWT +( +yld +); + +79 + } +} + +81 +ArRequeFrFuni + + gSecuryStgsSvi +:: + $frReque +( +AuthtitiPdi + +edi +) { + +82  [ +this +, +edi +]( +AsyncWebSvReque +* +que +) { + +83 +Authtiti + +authtiti + = + `authtiReque +( +que +); + +84  + `edi +( +authtiti +); + +86 + } +} + +88 +ArRequeHdrFuni + + gSecuryStgsSvi +:: + $wpReque +( +ArRequeHdrFuni + +Reque +, + +89 +AuthtitiPdi + +edi +) { + +90  [ +this +, +Reque +, +edi +]( +AsyncWebSvReque +* +que +) { + +91 +Authtiti + +authtiti + = + `authtiReque +( +que +); + +92 i(! + `edi +( +authtiti +)) { + +93 +que +-> + `nd +(401); + +96 + `Reque +( +que +); + +98 + } +} + +100 +ArJsRequeHdrFuni + + gSecuryStgsSvi +:: + $wpClback +( +ArJsRequeHdrFuni + +Reque +, + +101 +AuthtitiPdi + +edi +) { + +102  [ +this +, +Reque +, +edi +]( +AsyncWebSvReque +* +que +, +JsV +& +js +) { + +103 +Authtiti + +authtiti + = + `authtiReque +( +que +); + +104 i(! + `edi +( +authtiti +)) { + +105 +que +-> + `nd +(401); + +108 + `Reque +( +que +, +js +); + +110 + } +} + +114 +Ur + + gADMIN_USER + = Ur( +FACTORY_ADMIN_USERNAME +, +FACTORY_ADMIN_PASSWORD +, +ue +); + +116 + gSecuryStgsSvi +:: + $SecuryStgsSvi +( +AsyncWebSv +* +rv +, +FS +* +fs +: + $SecuryMag +() { + +117 + } +} + +118 +SecuryStgsSvi +::~ + $SecuryStgsSvi +() { + +119 + } +} + +121 +ArRequeFrFuni + +SecuryStgsSvi +:: + $frReque +( +AuthtitiPdi + +edi +) { + +122  [ +this +, +edi +]( +AsyncWebSvReque +* +que +{  +ue +; }; + +123 + } +} + +126 +Authtiti + + gSecuryStgsSvi +:: + $authtiReque +( +AsyncWebSvReque +* +que +) { + +127  + `Authtiti +( +ADMIN_USER +); + +128 + } +} + +131 +ArRequeHdrFuni + + gSecuryStgsSvi +:: + $wpReque +( +ArRequeHdrFuni + +Reque +, + +132 +AuthtitiPdi + +edi +) { + +133  +Reque +; + +134 + } +} + +136 +ArJsRequeHdrFuni + + gSecuryStgsSvi +:: + $wpClback +( +ArJsRequeHdrFuni + +Reque +, + +137 +AuthtitiPdi + +edi +) { + +138  +Reque +; + +139 + } +} + + @lib_standalone/SecuritySettingsService.h + +1 #ide +SecuryStgsSvi_h + + +2  + #SecuryStgsSvi_h + + + ) + +4  + ~ + +5  + ~ + +6  + ~ + +7  + ~ + +9  + ~"../../c/vsi.h +" + +11 #ide +FACTORY_ADMIN_USERNAME + + +12  + #FACTORY_ADMIN_USERNAME + "adm" + + ) + +15 #ide +FACTORY_ADMIN_PASSWORD + + +16  + #FACTORY_ADMIN_PASSWORD + "adm" + + ) + +19 #ide +FACTORY_GUEST_USERNAME + + +20  + #FACTORY_GUEST_USERNAME + "gue" + + ) + +23 #ide +FACTORY_GUEST_PASSWORD + + +24  + #FACTORY_GUEST_PASSWORD + "gue" + + ) + +27  + #SECURITY_SETTINGS_FILE + "/cfig/curyStgs.js" + + ) + +28  + #SECURITY_SETTINGS_PATH + "//curyStgs" + + ) + +30 #i +FT_ENABLED +( +FT_SECURITY +) + +32 as + cSecuryStgs + { + +33 + mpublic +: + +34 +Sg + +jwtSe +; + +35 + md +:: +li +< +Ur +> +urs +; + +37  + $ad +( +SecuryStgs + & +gs +, +JsObje + & +ro +) { + +39 +ro +["jwt_"] = +gs +. +jwtSe +; + +42 +JsAay + +urs + = +ro +. + `NeedAay +("users"); + +43  +Ur + +ur + : +gs +. +urs +) { + +44 +JsObje + +urRo + = +urs +. + `NeedObje +(); + +45 +urRo +["uame"] = +ur +. +uame +; + +46 +urRo +["sswd"] = +ur +. +sswd +; + +47 +urRo +["adm"] = +ur +. +adm +; + +51  +SUpdeResu + + $upde +( +JsObje + & +ro +, +SecuryStgs + & +gs +) { + +53 +gs +. +jwtSe + = +ro +["jwt_"] | +FACTORY_JWT_SECRET +; + +56 +gs +. +urs +. + `r +(); + +57 i( +ro +["urs"]. +is +< +JsAay +>()) { + +58  +JsV + +ur + : +ro +["urs"]. +as +< +JsAay +>()) { + +59 +gs +. +urs +. + `push_back +( + `Ur +( +ur +["username"], user["password"], user["admin"])); + +62 +gs +. +urs +. + `push_back +( + `Ur +( +FACTORY_ADMIN_USERNAME +, +FACTORY_ADMIN_PASSWORD +, +ue +)); + +63 +gs +. +urs +. + `push_back +( + `Ur +( +FACTORY_GUEST_USERNAME +, +FACTORY_GUEST_PASSWORD +, +l +)); + +65  +SUpdeResu +:: +CHANGED +; + +66 + } +} + +69 +ass + + gSecuryStgsSvi + : +public + +SfulSvi +< +SecuryStgs +>,ubli + gSecuryMag + { + +70 + gpublic +: + +71 +SecuryStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +); + +73  +beg +(); + +76 +Authtiti + +authti +(cڡ +Sg + & +uame +, cڡ Sg & +sswd +); + +77 +Authtiti + +authtiReque +( +AsyncWebSvReque + * +que +); + +78 +Sg + +geJWT +( +Ur + * +ur +); + +79 +ArRequeFrFuni + +frReque +( +AuthtitiPdi + +edi +); + +80 +ArRequeHdrFuni + +wpReque +(ArRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +); + +81 +ArJsRequeHdrFuni + +wpClback +(ArJsRequeHdrFuni +back +, +AuthtitiPdi + +edi +); + +83 + give +: + +84 +HpEndpot +< +SecuryStgs +> +_hpEndpot +; + +85 + gFSPsi +< + gSecuryStgs +> + g_fsPsi +; + +86 +ArduoJsJWT + + g_jwtHdr +; + +88  +cfiguJWTHdr +(); + +89 +Authtiti + +authtiJWT +( +Sg + & +jwt +); + +90 +boޗn + +videPayld +( +JsObje + & +rdPayld +, +Ur + * +ur +); + +95 as + cSecuryStgsSvi + : +public + +SecuryMag + { + +96 +public +: + +97 +SecuryStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +); + +98 ~ +SecuryStgsSvi +(); + +101 +Authtiti + +authtiReque +( +AsyncWebSvReque + * +que +); + +102 +ArRequeFrFuni + +frReque +( +AuthtitiPdi + +edi +); + +103 +ArRequeHdrFuni + +wpReque +(ArRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +); + +104 +ArJsRequeHdrFuni + +wpClback +(ArJsRequeHdrFuni +Reque +, +AuthtitiPdi + +edi +); + + @lib_standalone/StatefulService.cpp + +1  + ~ + +3 +upde_hdr_id_t + + gSUpdeHdrInfo +:: +cutUpdedHdrId + = 0; + + @lib_standalone/StatefulService.h + +1 #ide +SfulSvi_h + + +2  + #SfulSvi_h + + + ) + +4  + ~ + +5  + ~ + +7  + ~
  • + +8  + ~ + +10 #ide +DEFAULT_BUFFER_SIZE + + +11  + #DEFAULT_BUFFER_SIZE + 1024 + + ) + +14 as + cSUpdeResu + { + +15 + mCHANGED + = 0, + +16 + mUNCHANGED +, + +17 + mERROR + + +20 + gme + < +tyme + + gT +> + +21 +usg + + gJsSUpd + = +d +:: +funi +< +SUpdeResu +( +JsObje + & +ro +, +T + & +gs +)>; + +23 + gme + < +tyme + + gT +> + +24 +usg + + gJsSRd + = +d +:: +funi +<( +T + & +gs +, + gJsObje + & + gro +)>; + +26  +size_t + + tupde_hdr_id_t +; + +27  + gd +:: + tfuni +<(cڡ + tSg + & + tigId +)> + tSUpdeClback +; + +29  + sSUpdeHdrInfo + { + +30  +upde_hdr_id_t + + mcutUpdedHdrId +; + +31 +upde_hdr_id_t + + m_id +; + +32 +SUpdeClback + + m_cb +; + +33 +bo + + m_lowRemove +; + +34 +SUpdeHdrInfo +( +SUpdeClback + +cb +, +bo + +lowRemove +) + +35 : +_id +(++ +cutUpdedHdrId +) + +36 , +_cb +( +cb +) + +37 , +_lowRemove +( +lowRemove +){}; + +38 } + tSUpdeHdrInfo_t +; + +40 + gme + < +ass + + gT +> + +41 as + cSfulSvi + { + +42 + mpublic +: + +43 +me + < +tyme +... +Args +> + +44 #ifde +ESP32 + + +45 + $SfulSvi +( +Args + &&... +gs +) + +46 : + `_e +( +d +:: +fwd +< +Args +>( +gs +)...) + +47 , + `_acssMux +( + $xSemheCeRecursiveMux +()) { + +50 + $SfulSvi +( +Args + &&... +gs +) + +51 : + `_e +( +d +:: +fwd +< +Args +>( +gs +)...) { + +52 + } +} + +55 +upde_hdr_id_t + + $addUpdeHdr +( +SUpdeClback + +cb +, +bo + +lowRemove + = +ue +) { + +56 i(! +cb +) { + +59 +SUpdeHdrInfo_t + + `updeHdr +( +cb +, +lowRemove +); + +60 +_updeHdrs +. + `push_back +( +updeHdr +); + +61  +updeHdr +. +_id +; + +62 + } +} + +64  + $moveUpdeHdr +( +upde_hdr_id_t + +id +) { + +65 aut +i + = +_updeHdrs +. + `beg +(); i !_updeHdrs. + `d +();) { + +66 i((* +i +). +_lowRemove + && (*i). +_id + = +id +) { + +67 +i + = +_updeHdrs +. + `a +(i); + +69 ++ +i +; + +72 + } +} + +74 +SUpdeResu + +upde +( +d +:: +funi + +eUpd +, cڡ +Sg + & +igId +) { + +75 +begTni +(); + +76 +SUpdeResu + + gsu + = +eUpd +( +_e +); + +77 +dTni +(); + +78 i( + gsu + = +SUpdeResu +:: +CHANGED +) { + +79 +UpdeHdrs +( +igId +); + +81  + gsu +; + +84 +SUpdeResu + +updeWhoutPragi +( +d +:: +funi + +eUpd +) { + +85 +begTni +(); + +86 +SUpdeResu + + gsu + = +eUpd +( +_e +); + +87 +dTni +(); + +88  + gsu +; + +91 +SUpdeResu + +upde +( +JsObje + & +jsObje +, +JsSUpd +< +T +> +eUpd +, cڡ +Sg + & +igId +) { + +92 +begTni +(); + +93 +SUpdeResu + + gsu + = +eUpd +( +jsObje +, +_e +); + +94 +dTni +(); + +95 i( + gsu + = +SUpdeResu +:: +CHANGED +) { + +96 +UpdeHdrs +( +igId +); + +98  + gsu +; + +101 +SUpdeResu + +updeWhoutPragi +( +JsObje + & +jsObje +, +JsSUpd +< +T +> +eUpd +) { + +102 +begTni +(); + +103 +SUpdeResu + + gsu + = +eUpd +( +jsObje +, +_e +); + +104 +dTni +(); + +105  + gsu +; + +108  +ad +( +d +:: +funi +<( +T + &)> +eRd +) { + +109 +begTni +(); + +110 +eRd +( +_e +); + +111 +dTni +(); + +114  +ad +( +JsObje + & +jsObje +, +JsSRd +< +T +> +eRd +) { + +115 +begTni +(); + +116 +eRd +( +_e +, +jsObje +); + +117 +dTni +(); + +120  + $UpdeHdrs +(cڡ +Sg + & +igId +) { + +121 cڡ +SUpdeHdrInfo_t + & +updeHdr + : +_updeHdrs +) { + +122 +updeHdr +. + `_cb +( +igId +); + +124 + } +} + +126 + geed +: + +127 +T + +_e +; + +129 +le +  + $begTni +() { + +130 #ifde +ESP32 + + +131 + `xSemheTakeRecursive +( +_acssMux +, +ptMAX_DELAY +); + +133 + } +} + +135 +le +  + $dTni +() { + +136 #ifde +ESP32 + + +137 + `xSemheGiveRecursive +( +_acssMux +); + +139 + } +} + +141 + give +: + +142 #ifde +ESP32 + + +143 +SemheHd_t + +_acssMux +; + +145 + gd +:: +li +< +SUpdeHdrInfo_t +> +_updeHdrs +; + + @lib_standalone/WString.cpp + +2  + ~ + +3  + ~"WSg.h +" + +12 +size_t + + $y +(* +__ri + +d +, cڡ * __ri +c +, +size_t + +dsize +) { + +13 cڡ * +oc + = +c +; + +14 +size_t + +e + = +dsize +; + +17 i( +e + != 0) { + +18 -- +e + != 0) { + +19 i((* +d +++ = * +c +++) == '\0') + +25 i( +e + == 0) { + +26 i( +dsize + != 0) + +27 * +d + = '\0'; + +28 * +c +++) + +32  ( +c + - +oc + - 1); + +33 + } +} + +44 +size_t + + $t +(* +d +, cڡ * +c +, +size_t + +siz +) { + +45 * +d + = +d +; + +46 cڡ * +s + = +c +; + +47 +size_t + +n + = +siz +; + +48 +size_t + +dn +; + +51  +n +-- !0 && * +d + != '\0') + +52 +d +++; + +53 +dn + = +d + - +d +; + +54 +n + = +siz + - +dn +; + +56 i( +n + == 0) + +57  ( +dn + + + ` +( +s +)); + +58 * +s + != '\0') { + +59 i( +n + != 1) { + +60 * +d +++ = * +s +; + +61 +n +--; + +63 +s +++; + +65 * +d + = '\0'; + +67  ( +dn + + ( +s + - +c +)); + +68 + } +} + + @lib_standalone/WString.h + +2 #ide +WSTRING_H + + +3  + #WSTRING_H + + + ) + +5  + ~ + +8 as + cSg + { + +9 + mpublic +: + +10 +Sg + & +ݔ ++=(cڡ * +rhs +) { + +11 +_r + + +rhs +; + +12  * + mthis +; + +15 +size_t + + $ngth +() const { + +16  +_r +. + `size +(); + +17 + } +} + +19 +Sg +(cڡ * +r + = "") + +20 : + $_r +( +r +) { + +21 + } +} + +23 cڡ * + $c_r +() const { + +24  +_r +. + `c_r +(); + +25 + } +} + +27 +bo + + gݔ +==(cڡ * +s +) const { + +28  +_r + = +s +; + +31 +nd + + gd +:: +oam + & +ݔ +<<( +d +::oam & +lhs +, cڡ :: +Sg + & +rhs +) { + +32 +lhs + << +rhs +. +_r +; + +33  + glhs +; + +37 +bo + + $isEmy +() { + +38  +_r +. + `emy +(); + +39 + } +} + +45 +bo + + $equs +(cڡ * +s +) { + +46  +_r + = +s +; + +47 + } +} + +50 + give +: + +51 +d +:: +rg + +_r +; + +54 +ass + + gSgSumHr +; + +56 +le + +bo + + gݔ +==(cڡ +d +:: +rg + & +lhs +, cڡ :: +Sg + & +rhs +) { + +57  +lhs + = +rhs +. +c_r +(); + +61 +size_t + +y +(* +__ri + +d +, cڡ * __ri +c +, size_ +dsize +); + +62 +size_t + +t +(* +d +, cڡ * +c +, size_ +siz +); + +64  + #_P + + + + + ) + +65  + #y_P + +y + + + ) + +66  + #rcmp_P + +rcmp + + + ) + +67  + #ry_P + +ry + + + ) + + @lib_standalone/WebSocketTxRx.h + + @lib_standalone/emsuart_standalone.cpp + +19  + ~"emsut_de.h +" + +21 #agm +GCC + +dgnoic + +push + + +22 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +24 +mea + + gem + { + +29  + gEMSut +:: +t +( +ut8_t + +tx_mode +, ut8_ +rx_gpio +, ut8_ +tx_gpio +) { + +36  + gEMSut +:: + +() { + +42  +EMSut +:: +t +() { + +49  +EMSut +:: +nd_pl +( +ut8_t + +da +) { + +57 +ut16_t + +EMSut +:: +sm +( +ut8_t + * +buf +, ut8_ +n +) { + +58 i( + gn + == 0) { + +59  +EMS_TX_STATUS_OK +; + +64 + gSl +. +t +("UART SENDING: "); + +65  + gs +[5]; + +66  +ut8_t + + gi + = 0; i < + gn +; i++) { + +67 + gSl +. +t +( +hext +( +s +, +buf +[ +i +])); + +68 + gSl +. +t +(" "); + +70 + gSl +. +n +(); + +72  + gEMS_TX_STATUS_OK +; + +76 * + gEMSut +:: +hext +(* +su +, cڡ +ut8_t + +vue +) { + +77 * + gp + = +su +; + +78 +ut8_t + + gnib1 + = ( +vue + >> 4) & 0x0F; + +79 +ut8_t + + gnib2 + = ( +vue + >> 0) & 0x0F; + +80 * + gp +++ = +nib1 + < 0xA ? '0' +ib1 : 'A' +ib1 - 0xA; + +81 * + gp +++ = +nib2 + < 0xA ? '0' +ib2 : 'A' +ib2 - 0xA; + +82 * + gp + = '\0'; + +83  + gsu +; + +88 #agm +GCC + +dgnoic + +p + + + @lib_standalone/emsuart_standalone.h + +19 #ide +EMSESP_EMSUART_H + + +20  + #EMSESP_EMSUART_H + + + ) + +22  + ~ + +24 +mea + + gem + { + +26  + #EMS_TX_STATUS_ERR + 0 + + ) + +27  + #EMS_TX_STATUS_OK + 1 + + ) + +29 as + cEMSut + { + +30 + gpublic +: + +31 +EMSut +() = ; + +32 ~ +EMSut +() = ; + +34  +t +( +ut8_t + +tx_mode +, ut8_ +rx_gpio +, ut8_ +tx_gpio +); + +35  + +(); + +36  +t +(); + +37  +nd_pl +( +ut8_t + +da +); + +38  +ut16_t + +sm +( +ut8_t + * +buf +, ut8_ +n +); + +40 + give +: + +41 * +hext +(* +su +, cڡ +ut8_t + +vue +); + + @src/EMSESPDevicesService.cpp + +19  + ~"EMSESPDevisSvi.h +" + +20  + ~"em.h +" + +21  + ~"mq.h +" + +23 +mea + + gem + { + +25 +usg + +mea + + gd +:: +ahds +; + +27 + gEMSESPDevisSvi +:: +EMSESPDevisSvi +( +AsyncWebSv + * +rv +, +SecuryMag + * +curyMag +) + +28 : +_devi_daHdr +( +DEVICE_DATA_SERVICE_PATH +, + +29 +curyMag +-> +wpClback +( +d +:: +bd +(& +EMSESPDevisSvi +:: +devi_da +, +this +, +_1 +, +_2 +), +AuthtitiPdis +:: +IS_AUTHENTICATED +)) { + +30 +rv +-> + +( +EMSESP_DEVICES_SERVICE_PATH +, + +31 +HTTP_GET +, + +32 +curyMag +-> +wpReque +( +d +:: +bd +(& +EMSESPDevisSvi +:: +l_devis +, +this +, +_1 +), +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +34 + grv +-> + +( +SCAN_DEVICES_SERVICE_PATH +, + +35 +HTTP_GET +, + +36 +curyMag +-> +wpReque +( +d +:: +bd +(& +EMSESPDevisSvi +:: +sn_devis +, +this +, +_1 +), +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +38 + g_devi_daHdr +. +tMhod +( +HTTP_POST +); + +39 + g_devi_daHdr +. +tMaxCڋLgth +(256); + +40 + grv +-> +addHdr +(& +_devi_daHdr +); + +43  + gEMSESPDevisSvi +:: +sn_devis +( +AsyncWebSvReque + * +que +) { + +44 +EMSESP +:: +sn_devis +(); + +45 + gque +-> +nd +(200); + +48  + gEMSESPDevisSvi +:: +l_devis +( +AsyncWebSvReque + * +que +) { + +49 +AsyncJsReڣ + * +ڣ + = +w + AsyncJsReڣ( +l +, +MAX_EMSESP_DEVICE_SIZE +); + +50 +JsObje + + gro + = +ڣ +-> +gRo +(); + +52 +JsAay + + gdevis + = +ro +. +NeedAay +("devices"); + +53 cڡut& + gemsdevi + : +EMSESP +:: +emsdevis +) { + +54 i( +emsdevi +) { + +55 +JsObje + +obj + = +devis +. +NeedObje +(); + +56 + gobj +["id"] = +emsdevi +-> +unique_id +(); + +57 + gobj +["ty"] = +emsdevi +-> +devi_ty_me +(); + +58 + gobj +["bnd"] = +emsdevi +-> +bnd_to_rg +(); + +59 + gobj +["me"] = +emsdevi +-> +me +(); + +60 + gobj +["deviid"] = +emsdevi +-> +g_devi_id +(); + +61 + gobj +["oduid"] = +emsdevi +-> +odu_id +(); + +62 + gobj +["vsi"] = +emsdevi +-> +vsi +(); + +66 +JsAay + + gnss + = +ro +. +NeedAay +("sensors"); + +67 i(! + gEMSESP +:: +ns_devis +(). +emy +()) { + +68 cڡut& +ns + : +EMSESP +:: +ns_devis +()) { + +69 +JsObje + +obj + = +nss +. +NeedObje +(); + +70 + gobj +["id"] = +ns +. +to_rg +(); + +71 + gobj +["mp"] = +ns +. +mtu_c +; + +75 + gڣ +-> +tLgth +(); + +76 + gque +-> +nd +( +ڣ +); + +79  + gEMSESPDevisSvi +:: +devi_da +( +AsyncWebSvReque + * +que +, +JsV + & +js +) { + +80 i( + gjs +. + gis +< + gJsObje +>()) { + +81 +AsyncJsReڣ + * + gڣ + = +w + AsyncJsReڣ( +l +, +MAX_EMSESP_DEVICE_SIZE +); + +82 #ide +EMSESP_STANDALONE + + +83 +ut8_t + + gid + = +js +["id"]; + +84 + gEMSESP +:: +devi_fo_web +( +id +, ( +JsObje + &) +ڣ +-> +gRo +()); + +86 + gڣ +-> +tLgth +(); + +87 + gque +-> +nd +( +ڣ +); + +89 +AsyncWebSvReڣ + * + gڣ + = +que +-> +begReڣ +(200); + +90 + gque +-> +nd +( +ڣ +); + + @src/EMSESPDevicesService.h + +19 #ide +EMSESPDevisSvi_h + + +20  + #EMSESPDevisSvi_h + + + ) + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +27  + #MAX_EMSESP_DEVICE_SIZE + 1700 + + ) + +29  + #EMSESP_DEVICES_SERVICE_PATH + "//lDevis" + + ) + +30  + #SCAN_DEVICES_SERVICE_PATH + "//snDevis" + + ) + +31  + #DEVICE_DATA_SERVICE_PATH + "//deviDa" + + ) + +33 +mea + + gem + { + +35 as + cEMSESPDevisSvi + { + +36 + gpublic +: + +37 +EMSESPDevisSvi +( +AsyncWebSv + * +rv +, +SecuryMag + * +curyMag +); + +39 + give +: + +40  +l_devis +( +AsyncWebSvReque + * +que +); + +41  +sn_devis +( +AsyncWebSvReque + * +que +); + +42  +devi_da +( +AsyncWebSvReque + * +que +, +JsV + & +js +); + +44 +AsyncClbackJsWebHdr + + g_devi_daHdr +; + + @src/EMSESPSettingsService.cpp + +19  + ~"EMSESPStgsSvi.h +" + +20  + ~"em.h +" + +22 +mea + + gem + { + +24 + gEMSESPStgsSvi +:: +EMSESPStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +) + +25 : +_hpEndpot +( +EMSESPStgs +:: +ad +, EMSESPStgs:: +upde +, +this +, +rv +, +EMSESP_SETTINGS_SERVICE_PATH +, +curyMag +) + +26 , +_fsPsi +( +EMSESPStgs +:: +ad +, EMSESPStgs:: +upde +, +this +, +fs +, +EMSESP_SETTINGS_FILE +) { + +27 +addUpdeHdr +([&](cڡ +Sg + & +igId +{ +Upde +(); }, +l +); + +30  + gEMSESPStgs +:: +ad +( +EMSESPStgs + & +gs +, +JsObje + & +ro +) { + +31 + gro +["tx_mode"] = +gs +. +tx_mode +; + +32 + gro +["ems_bus_id"] = +gs +. +ems_bus_id +; + +33 + gro +["syog_v"] = +gs +. +syog_v +; + +34 + gro +["syog_mk_rv"] = +gs +. +syog_mk_rv +; + +35 + gro +["syog_ho"] = +gs +. +syog_ho +; + +36 + gro +["ma_thmo"] = +gs +. +ma_thmo +; + +37 + gro +["show_tim"] = +gs +. +show_tim +; + +38 + gro +["show_t"] = +gs +. +show_t +; + +39 + gro +["rx_gpio"] = +gs +. +rx_gpio +; + +40 + gro +["tx_gpio"] = +gs +. +tx_gpio +; + +41 + gro +["ds_gpio"] = +gs +. +ds_gpio +; + +42 + gro +["ds_se"] = +gs +. +ds_se +; + +43 + gro +["d_gpio"] = +gs +. +d_gpio +; + +44 + gro +["hide_d"] = +gs +. +hide_d +; + +47 +SUpdeResu + + gEMSESPStgs +:: +upde +( +JsObje + & +ro +, +EMSESPStgs + & +gs +) { + +48 + ggs +. + gtx_mode + = +ro +["tx_mode"] | +EMSESP_DEFAULT_TX_MODE +; + +49 + ggs +. + gems_bus_id + = +ro +["ems_bus_id"] | +EMSESP_DEFAULT_EMS_BUS_ID +; + +50 + ggs +. + gsyog_v + = +ro +["syog_v"] | +EMSESP_DEFAULT_SYSLOG_LEVEL +; + +51 + ggs +. + gsyog_mk_rv + = +ro +["syog_mk_rv"] | +EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL +; + +52 + ggs +. + gsyog_ho + = +ro +["syog_ho"] | +EMSESP_DEFAULT_SYSLOG_HOST +; + +53 + ggs +. + gma_thmo + = +ro +["ma_thmo"] | +EMSESP_DEFAULT_MASTER_THERMOSTAT +; + +54 + ggs +. + gshow_tim + = +ro +["show_tim"] | +EMSESP_DEFAULT_SHOWER_TIMER +; + +55 + ggs +. + gshow_t + = +ro +["show_t"] | +EMSESP_DEFAULT_SHOWER_ALERT +; + +56 + ggs +. + grx_gpio + = +ro +["rx_gpio"] | +EMSESP_DEFAULT_RX_GPIO +; + +57 + ggs +. + gtx_gpio + = +ro +["tx_gpio"] | +EMSESP_DEFAULT_TX_GPIO +; + +58 + ggs +. + gds_gpio + = +ro +["ds_gpio"] | +EMSESP_DEFAULT_DALLAS_GPIO +; + +59 + ggs +. + gds_se + = +ro +["ds_se"] | +EMSESP_DEFAULT_DALLAS_PARASITE +; + +60 + ggs +. + gd_gpio + = +ro +["d_gpio"] | +EMSESP_DEFAULT_LED_GPIO +; + +61 + ggs +. + ghide_d + = +ro +["hide_d"] | +EMSESP_DEFAULT_HIDE_LED +; + +63  + gSUpdeResu +:: +CHANGED +; + +68  + gEMSESPStgsSvi +:: +Upde +() { + +69 +EMSESP +:: +show_ +. +t +(); + +71 + gEMSESP +:: +_tx +(); + +72 + gSyem +:: +t_d +(); + +73 +Sss + + gnss_ +; + +74 + gnss_ +. +t +(); + +77  + gEMSESPStgsSvi +:: +beg +() { + +78 +_fsPsi +. +adFromFS +(); + +81  + gEMSESPStgsSvi +:: +ve +() { + +82 +_fsPsi +. +wreToFS +(); + + @src/EMSESPSettingsService.h + +19 #ide +EMSESPStgsCfig_h + + +20  + #EMSESPStgsCfig_h + + + ) + +22  + ~ + +23  + ~ + +25  + #EMSESP_SETTINGS_FILE + "/cfig/emStgs.js" + + ) + +26  + #EMSESP_SETTINGS_SERVICE_PATH + "//emStgs" + + ) + +28  + #EMSESP_DEFAULT_TX_MODE + 1 + +29  + #EMSESP_DEFAULT_EMS_BUS_ID + 0x0B + +30  + #EMSESP_DEFAULT_SYSLOG_LEVEL + -1 + +31  + #EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL + 0 + + ) + +32  + #EMSESP_DEFAULT_SYSLOG_HOST + "" + + ) + +33  + #EMSESP_DEFAULT_MASTER_THERMOSTAT + 0 + +34  + #EMSESP_DEFAULT_SHOWER_TIMER + +l + + + ) + +35  + #EMSESP_DEFAULT_SHOWER_ALERT + +l + + + ) + +36  + #EMSESP_DEFAULT_HIDE_LED + +l + + + ) + +37  + #EMSESP_DEFAULT_DALLAS_PARASITE + +l + + + ) + +40 #i +defed +( +ESP8266 +) + +41  + #EMSESP_DEFAULT_RX_GPIO + 13 + +42  + #EMSESP_DEFAULT_TX_GPIO + 15 + +43  + #EMSESP_DEFAULT_DALLAS_GPIO + 14 + +44  + #EMSESP_DEFAULT_LED_GPIO + 2 + +45 #i + `defed +( +ESP32 +) + + ) + +46  + #EMSESP_DEFAULT_RX_GPIO + 23 + +47  + #EMSESP_DEFAULT_TX_GPIO + 5 + +48  + #EMSESP_DEFAULT_DALLAS_GPIO + 18 + +49  + #EMSESP_DEFAULT_LED_GPIO + 2 + +50 # + + ) + +52  + #EMSESP_DEFAULT_RX_GPIO + 0 + + ) + +53  + #EMSESP_DEFAULT_TX_GPIO + 0 + + ) + +54  + #EMSESP_DEFAULT_DALLAS_GPIO + 0 + + ) + +55  + #EMSESP_DEFAULT_LED_GPIO + 0 + + ) + +58 +mea + + gem + { + +60 + gMQTT_fm + : +ut8_t + { +SINGLE + = 1, + gNESTED +, + gHA +, + gCUSTOM + }; + +62 as + cEMSESPStgs + { + +63 + gpublic +: + +64 +ut8_t + +tx_mode +; + +65 +ut8_t + + gems_bus_id +; + +66 +ut8_t + + gma_thmo +; + +67 +bo + + gshow_tim +; + +68 +bo + + gshow_t +; + +69 +t8_t + + gsyog_v +; + +70 +ut32_t + + gsyog_mk_rv +; + +71 +Sg + + gsyog_ho +; + +72 +ut8_t + + grx_gpio +; + +73 +ut8_t + + gtx_gpio +; + +74 +ut8_t + + gds_gpio +; + +75 +bo + + gds_se +; + +76 +ut8_t + + gd_gpio +; + +77 +bo + + ghide_d +; + +79  +ad +( +EMSESPStgs + & +gs +, +JsObje + & +ro +); + +80  +SUpdeResu + +upde +( +JsObje + & +ro +, +EMSESPStgs + & +gs +); + +83 +ass + + gEMSESPStgsSvi + : +public + +SfulSvi +< +EMSESPStgs +> { + +84 +public +: + +85 +EMSESPStgsSvi +( +AsyncWebSv + * +rv +, +FS + * +fs +, +SecuryMag + * +curyMag +); + +87  +beg +(); + +88  +ve +(); + +90 + give +: + +91 +HpEndpot +< +EMSESPStgs +> +_hpEndpot +; + +92 + gFSPsi +< + gEMSESPStgs +> + g_fsPsi +; + +94  +Upde +(); + + @src/EMSESPStatusService.cpp + +19  + ~"EMSESPStusSvi.h +" + +20  + ~"em.h +" + +21  + ~"mq.h +" + +22  + ~"vsi.h +" + +24 +mea + + gem + { + +26 + gEMSESPStusSvi +:: +EMSESPStusSvi +( +AsyncWebSv + * +rv +, +SecuryMag + * +curyMag +) { + +28 + grv +-> + +( +EMSESP_STATUS_SERVICE_PATH +, + +29 +HTTP_GET +, + +30 +curyMag +-> +wpReque +( +d +:: +bd +(& +EMSESPStusSvi +:: +emStusSvi +, +this +, std:: +ahds +:: +_1 +), + +31 +AuthtitiPdis +:: +IS_AUTHENTICATED +)); + +34 #ifde +ESP32 + + +35 + gWiFi +. +Evt +( +StiModeDisced +, +WiFiEvt_t +:: +SYSTEM_EVENT_STA_DISCONNECTED +); + +36 + gWiFi +. +Evt +( +StiModeGIP +, +WiFiEvt_t +:: +SYSTEM_EVENT_STA_GOT_IP +); + +37 #i +defed +( +ESP8266 +) + +38 + g_StiModeDiscedHdr + = +WiFi +. +StiModeDisced +(onStationModeDisconnected); + +39 + g_StiModeGIPHdr + = +WiFi +. +StiModeGIP +(onStationModeGotIP); + +43 #ifde +ESP32 + + +44  + gEMSESPStusSvi +:: +StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +45 + gEMSESP +:: +logg +(). +debug +( +F +("WiFDisced. Rs code=%d"), +fo +. +disced +. +as +); + +47  + gEMSESPStusSvi +:: +StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +) { + +48 + gEMSESP +:: +logg +(). +debug +( +F +("WiFCed wh IP=%s, home=%s"), +WiFi +. +lolIP +(). +toSg +(). +c_r +(), WiFi. +gHome +()); + +49 + gEMSESP +:: +syem_ +. +nd_hbt +(); + +51 #i +defed +( +ESP8266 +) + +52  + gEMSESPStusSvi +:: +StiModeDisced +(cڡ +WiFiEvtStiModeDisced + & +evt +) { + +53 +EMSESP +:: +logg +(). +debug +( +F +("WiFDisced. Rs code=%d"), +evt +. +as +); + +55  + gEMSESPStusSvi +:: +StiModeGIP +(cڡ +WiFiEvtStiModeGIP + & +evt +) { + +56 +EMSESP +:: +logg +(). +debug +( +F +("WiFCed wh IP=%s, home=%s"), +evt +. + +. +toSg +(). +c_r +(), +WiFi +. +home +().c_str()); + +57 + gEMSESP +:: +syem_ +. +nd_hbt +(); + +61  + gEMSESPStusSvi +:: +emStusSvi +( +AsyncWebSvReque + * +que +) { + +62 +AsyncJsReڣ + * +ڣ + = +w + AsyncJsReڣ( +l +, +MAX_EMSESP_STATUS_SIZE +); + +63 +JsObje + + gro + = +ڣ +-> +gRo +(); + +65 + gro +["us"] = +EMSESP +:: +bus_us +(); + +66 + gro +["rx_ived"] = +EMSESP +:: +rxrvi_ +. +gm_cou +(); + +67 + gro +["tx_"] = +EMSESP +:: +txrvi_ +. +gm_ad_cou +(+ EMSESP::txrvi_. +gm_wre_cou +(); + +68 + gro +["c_rs"] = +EMSESP +:: +rxrvi_ +. +gm_r_cou +(); + +69 + gro +["tx_rs"] = +EMSESP +:: +txrvi_ +. +gm__cou +(); + +71 + gڣ +-> +tLgth +(); + +72 + gque +-> +nd +( +ڣ +); + + @src/EMSESPStatusService.h + +19 #ide +EMSESPStusSvi_h + + +20  + #EMSESPStusSvi_h + + + ) + +22  + ~ + +23  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +28  + #MAX_EMSESP_STATUS_SIZE + 1024 + + ) + +29  + #EMSESP_STATUS_SERVICE_PATH + "//emStus" + + ) + +31 +mea + + gem + { + +33 as + cEMSESPStusSvi + { + +34 + gpublic +: + +35 +EMSESPStusSvi +( +AsyncWebSv + * +rv +, +SecuryMag + * +curyMag +); + +37 + give +: + +38  +emStusSvi +( +AsyncWebSvReque + * +que +); + +40 #ifde +ESP32 + + +41  +StiModeDisced +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +42  +StiModeGIP +( +WiFiEvt_t + +evt +, +WiFiEvtInfo_t + +fo +); + +43 #i +defed +( +ESP8266 +) + +44 +WiFiEvtHdr + + g_StiModeDiscedHdr +; + +45 +WiFiEvtHdr + + g_StiModeGIPHdr +; + +46  +StiModeDisced +(cڡ +WiFiEvtStiModeDisced + & +evt +); + +47  +StiModeGIP +(cڡ +WiFiEvtStiModeGIP + & +evt +); + + @src/console.cpp + +19  + ~"cse.h +" + +20  + ~"em.h +" + +21  + ~"vsi.h +" + +23 #i +defed +( +EMSESP_DEBUG +) + +24  + ~"/.h +" + +27 +mea + + gem + { + +29 + gd +:: +shed_r +< +Commds +> +EMSESPShl +:: +commds + = [] { + +30 +d +:: +shed_r +< +Commds +> +commds + = std:: +make_shed +(); + +31  + gcommds +; + +34  + gd +:: +shed_r +< +EMSESPShl +> +shl +; + +36 + gd +:: +ve +< +bo +> +EMSESPSmCse +:: +ys_ +; + +38 #ide +EMSESP_STANDALONE + + +39 + guuid +:: +ʑ +:: +TtSvi + +ʑ_ +([]( +Sm + & +am +, cڡ +IPAddss + & +addr +, +ut16_t + +pt +-> +d +:: +shed_r +< +uuid +:: +cse +:: +Shl +> { + +40  +d +:: +make_shed +< +EMSESPSmCse +>( +am +, +addr +, +pt +); + +44 + gEMSESPShl +:: +EMSESPShl +() + +45 : +Shl +() { + +48  +EMSESPShl +:: +d +() { + +49 +logg +(). +log +( +LogLev +:: +INFO +, +LogFacy +:: +CONSOLE +, +F +("Ussi od ocsސ%s"), +cse_me +(). +c_r +()); + +52  + gEMSESPShl +:: +ݳd +() { + +53 i( +has_ags +( +CommdFgs +:: +ADMIN +)) { + +54 +logg +(). +log +( +LogLev +:: +INFO +, +LogFacy +:: +AUTH +, +F +("Adm sessi clod ocsސ%s"), +cse_me +(). +c_r +()); + +56 +logg +(). +log +( +LogLev +:: +INFO +, +LogFacy +:: +CONSOLE +, +F +("Ussi clod ocsސ%s"), +cse_me +(). +c_r +()); + +59 + gcommds +-> +move_l_commds +(); + +61 + gcse_commds_lded_ + = +l +; + +66  + gEMSESPShl +:: +diy_br +() { + +67 +n +(); + +68 +tn +( +F +("┌──────────────────────────────────────────┐")); + +69 +tn +( +F +("│ %sEMS-ESP vsi %-10s% │"), +COLOR_BOLD_ON +, +EMSESP_APP_VERSION +, +COLOR_BOLD_OFF +); + +70 +tn +( +F +("│ %s%shps://ghub.com/oddy/EMS-ESP% │"), +COLOR_BRIGHT_GREEN +, +COLOR_UNDERLINE +, +COLOR_RESET +); + +71 +tn +( +F +("│ │")); + +72 +tn +( +F +("│y %shp%tshowvaab commd │"), +COLOR_UNDERLINE +, +COLOR_RESET +); + +73 +tn +( +F +("└──────────────────────────────────────────┘")); + +74 +n +(); + +77 + gEMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +ad +([&]( +WiFiStgs + & +wifiStgs +{ +cse_home_ + = wifiStgs. +home +. +c_r +(); }); + +79 i( + gcse_home_ +. +emy +()) { + +80 + gcse_home_ +. +size +(16, '\0'); + +81 #i +defed +( +ESP8266 +) + +82 +tf_P +(& +cse_home_ +[0], cse_home_. +cy +(+ 1, +PSTR +("esp8266")); + +84 +tf_P +(& +cse_home_ +[0], cse_home_. +cy +(+ 1, +PSTR +("esp32")); + +89 +add_cse_commds +(); + +92 + gem +:: +EMSESP +:: +wch_id +( +WATCH_ID_NONE +); + +93 #i +defed +( +EMSESP_STANDALONE +) + +94 + gem +:: +EMSESP +:: +wch +(EMSESP:: +WATCH_ON +); + +96 + gem +:: +EMSESP +:: +wch +(EMSESP:: +WATCH_OFF +); + +102  + gEMSESPShl +:: +add_cse_commds +() { + +105 i( +cse_commds_lded_ +) { + +111 + gcommds +-> +move_l_commds +(); + +113 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +114 +CommdFgs +:: +USER +, + +115 +ash_rg_ve +{ +F_ +( +tch +)}, + +116 [&]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +117 +shl +. +tn +( +F +("Requesting data from EMS devices")); + +118 +EMSESP +:: +tch_devi_vues +(); + +121 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +122 +CommdFgs +:: +USER +, + +123 +ash_rg_ve +{ +F_ +( +show +)}, + +124 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +125 +shl +. +tn +( +F +("%s%sEMS-ESP vsi %s%s"), +COLOR_BRIGHT_GREEN +, +COLOR_BOLD_ON +, +EMSESP_APP_VERSION +, +COLOR_RESET +); + +126 +shl +. +n +(); + +127 +EMSESP +:: +show_devi_vues +( +shl +); + +128 +EMSESP +:: +show_ns_vues +( +shl +); + +131 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +132 +CommdFgs +:: +USER +, + +133 +ash_rg_ve +{ +F_ +( +show +), F_( +devis +)}, + +134 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +)){ +EMSESP +:: +show_devis +(shell); }); + +137 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +138 +CommdFgs +:: +USER +, + +139 +ash_rg_ve +{ +F_ +( +show +), F_( +ems +)}, + +140 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +)){ +EMSESP +:: +show_ems +(shell); }); + +142 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +143 +CommdFgs +:: +USER +, + +144 +ash_rg_ve +{ +F_ +( +show +), F_( +vues +)}, + +145 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +)){ +EMSESP +:: +show_devi_vues +(shell); }); + +147 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +148 +CommdFgs +:: +USER +, + +149 +ash_rg_ve +{ +F_ +( +show +), F_( +mq +)}, + +150 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +)){ +Mq +:: +show_mq +(shell); }); + +152 + gcommds +-> +add_commd +( + +153 +ShlCڋxt +:: +MAIN +, + +154 +CommdFgs +:: +ADMIN +, + +155 +ash_rg_ve +{ +F_ +( +t +), F_( +bus_id +)}, + +156 +ash_rg_ve +{ +F_ +( +deviid_mdy +)}, + +157 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +158 +ut8_t + +devi_id + = +Hrs +:: +hextot +( +gumts +. +t +(). +c_r +()); + +159 i(( +devi_id + == 0x0B) || (device_id == 0x0D) || (device_id == 0x0A) || (device_id == 0x0F) || (device_id == 0x12)) { + +160 +EMSESP +:: +emStgsSvi +. +upde +( + +161 [&]( +EMSESPStgs + & +gs +) { + +162 +gs +. +ems_bus_id + = +devi_id +; + +163 +shl +. +tn +( +F_ +( +bus_id_fmt +), +gs +. +ems_bus_id +); + +164  +SUpdeResu +:: +CHANGED +; + +168 +shl +. +n +( +F +("Must be 0B, 0D, 0A, 0F or 12")); + +171 []( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts + __attribute__((unused))) -> const std::vector { + +172  +d +:: +ve +{ + +173 +ad_ash_rg +( +F +("0B")), + +174 +ad_ash_rg +( +F +("0D")), + +175 +ad_ash_rg +( +F +("0A")), + +176 +ad_ash_rg +( +F +("0F")), + +177 +ad_ash_rg +( +F +("12")), + +182 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +183 +CommdFgs +:: +ADMIN +, + +184 +ash_rg_ve +{ +F_ +( +t +), F_( +tx_mode +)}, + +185 +ash_rg_ve +{ +F_ +( +n_mdy +)}, + +186 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +187 +ut8_t + +tx_mode + = +d +:: + +( +gumts +[0]. +c_r +(), +nuαr +, 10); + +189 +EMSESP +:: +emStgsSvi +. +upde +( + +190 [&]( +EMSESPStgs + & +gs +) { + +191 +gs +. +tx_mode + =x_mode; + +192 +shl +. +tn +( +F_ +( +tx_mode_fmt +), +gs +. +tx_mode +); + +193  +SUpdeResu +:: +CHANGED +; + +198 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +199 +CommdFgs +:: +ADMIN +, + +200 +ash_rg_ve +{ +F_ +( +sn +), F_( +devis +)}, + +201 +ash_rg_ve +{ +F_ +( +dp_tiڮ +)}, + +202 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +203 i( +gumts +. +size +() == 0) { + +204 +EMSESP +:: +sn_devis +(); + +206 +shl +. +tn +( +F +("Performing deep scan...")); + +207 +EMSESP +:: +r_l_devis +(); + +208 +d +:: +ve +< +ut8_t +> +Devi_Ids +; + +210 +Devi_Ids +. +push_back +(0x08); + +211 +Devi_Ids +. +push_back +(0x38); + +212 +Devi_Ids +. +push_back +(0x30); + +213 +Devi_Ids +. +push_back +(0x09); + +214 +Devi_Ids +. +push_back +(0x02); + +215 +Devi_Ids +. +push_back +(0x48); + +216 +Devi_Ids +. +push_back +(0x20); + +217 +Devi_Ids +. +push_back +(0x21); + +218 +Devi_Ids +. +push_back +(0x22); + +219 +Devi_Ids +. +push_back +(0x23); + +220 +Devi_Ids +. +push_back +(0x28); + +221 +Devi_Ids +. +push_back +(0x29); + +222 +Devi_Ids +. +push_back +(0x10); + +223 +Devi_Ids +. +push_back +(0x17); + +224 +Devi_Ids +. +push_back +(0x18); + +225 +Devi_Ids +. +push_back +(0x19); + +226 +Devi_Ids +. +push_back +(0x1A); + +227 +Devi_Ids +. +push_back +(0x1B); + +228 +Devi_Ids +. +push_back +(0x11); + +231 cڡ +ut8_t + +devi_id + : +Devi_Ids +) { + +232 +EMSESP +:: +nd_ad_que +( +EMSdevi +:: +EMS_TYPE_VERSION +, +devi_id +); + +237 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +238 +CommdFgs +:: +USER +, + +239 +ash_rg_ve +{ +F_ +( +t +)}, + +240 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +241 +EMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +242 +shl +. +tn +( +F_ +( +tx_mode_fmt +), +gs +. +tx_mode +); + +243 +shl +. +tn +( +F_ +( +bus_id_fmt +), +gs +. +ems_bus_id +); + +247 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +248 +CommdFgs +:: +ADMIN +, + +249 +ash_rg_ve +{ +F_ +( +ad +)}, + +250 +ash_rg_ve +{ +F_ +( +deviid_mdy +), F_( +tyid_mdy +)}, + +251 [=]( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts +) { + +252 +ut8_t + +devi_id + = +Hrs +:: +hextot +( +gumts +. +t +(). +c_r +()); + +253 +ut16_t + +ty_id + = +Hrs +:: +hextot +( +gumts +. +back +(). +c_r +()); + +254 +EMSESP +:: +t_ad_id +( +ty_id +); + +255 +EMSESP +:: +nd_ad_que +( +ty_id +, +devi_id +); + +263 + gcommds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +264 +CommdFgs +:: +USER +, + +265 +ash_rg_ve +{ +F_ +( +syem +)}, + +266 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +267 +Syem +:: +cse_commds +( +shl +, +ShlCڋxt +:: +SYSTEM +); + +272 + gEMSESP +:: +add_cڋxt_mus +(); + +274 + gCse +:: +ld_dd_commds +( +ShlCڋxt +:: +MAIN +); + +276 + gcse_commds_lded_ + = +ue +; + +279 + gd +:: +rg + +EMSESPShl +:: +home_xt +() { + +280  +cse_home_ +; + +284 +bo + + gEMSESPShl +:: +ex_cڋxt +() { + +285  +cut_cڋxt + = +cڋxt +(); + +286 + gcommds +-> +move_cڋxt_commds +( +cut_cڋxt +); + +288 i( + gcut_cڋxt + = +ShlCڋxt +:: +MAIN +) { + +289 +Shl +:: + +(); + +290  + gue +; + +292  + gShl +:: +ex_cڋxt +(); + +296  + gCse +:: +r_cuom_cڋxt +( +Shl + & +shl +,  +cڋxt +) { + +297 +ld_dd_commds +( +cڋxt +); + +300 i( + gcڋxt + ! +ShlCڋxt +:: +MAIN +) { + +301 +shl +. +r_cڋxt +( +cڋxt +); + +306  + gCse +:: +ld_dd_commds +( +cڋxt +) { + +307 #i +defed +( +EMSESP_DEBUG +) + +308 +EMSESPShl +:: +commds +-> +add_commd +( +cڋxt +, + +309 +CommdFgs +:: +USER +, + +310 +ash_rg_ve +{ +F_ +( + +)}, + +311 +ash_rg_ve +{ +F_ +( +me_tiڮ +)}, + +312 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +313 i( +gumts +. +size +() == 0) { + +314 +Te +:: +run_ +( +shl +, "default"); + +316 +Te +:: +run_ +( +shl +, +gumts +. +t +()); + +321 + gEMSESPShl +:: +commds +-> +add_commd +( + +322 +cڋxt +, + +323 +CommdFgs +:: +USER +, + +324 +ash_rg_ve +{ +F_ +( +log +)}, + +325 +ash_rg_ve +{ +F_ +( +log_v_tiڮ +)}, + +326 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +327 i(! +gumts +. +emy +()) { + +328 +uuid +:: +log +:: +Lev + +v +; + +329 i( +uuid +:: +log +:: +r_v_low +( +gumts +[0], +v +)) { + +330 +shl +. +log_v +( +v +); + +332 +shl +. +tn +( +F_ +( +vid_log_v +)); + +336 +shl +. +t +( +F +("levels: ")); + +337 +d +:: +ve + +v + = +uuid +:: +log +:: +vs_low +(); + +338 +size_t + +i + = +v +. +size +(); + +339  +i +--) { + +340 +shl +. +tf +( +v +[ +i +]. +c_r +()); + +341 +shl +. +t +(' '); + +343 +shl +. +n +(); + +345 +shl +. +tn +( +F_ +( +log_v_fmt +), +uuid +:: +log +:: +fm_v_low +(shl. +log_v +())); + +347 []( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts + __attribute__((unused))) -> std::vector { + +348  +uuid +:: +log +:: +vs_low +(); + +351 + gEMSESPShl +:: +commds +-> +add_commd +( +cڋxt +, + +352 +CommdFgs +:: +USER +, + +353 +ash_rg_ve +{ +F_ +( +hp +)}, + +354 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +355 +shl +. +t_l_avaab_commds +(); + +358 + gEMSESPShl +:: +commds +-> +add_commd +( +cڋxt +, + +359 +CommdFgs +:: +USER +, + +360 +ash_rg_ve +{ +F_ +( +ex +)}, + +361 [=]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +363 +EMSESPShl +:: +commds +-> +move_cڋxt_commds +( +cڋxt +); + +364 +shl +. +ex_cڋxt +(); + +367 + gEMSESPShl +:: +commds +-> +add_commd +( +cڋxt +, + +368 +CommdFgs +:: +USER +, + +369 +ash_rg_ve +{ +F_ +( +su +)}, + +370 [=]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +371 aut +become_adm + = []( +Shl + & +shl +) { + +372 +shl +. +logg +(). +log +( +LogLev +:: +NOTICE +, +LogFacy +:: +AUTH +, +F +("Admin session opened on console")); + +373 +shl +. +add_ags +( +CommdFgs +:: +ADMIN +); + +376 i( +shl +. +has_ags +( +CommdFgs +:: +LOCAL +)) { + +377 +become_adm +( +shl +); + +379 +shl +. +r_sswd +( +F_ +( +sswd_om +), [=]( +Shl + & shl, +bo + +comed +, cڡ +d +:: +rg + & +sswd +) { + +380 i( +comed +) { + +381 +ut64_t + +now + = +uuid +:: +g_uime_ms +(); + +383 +EMSESP +:: +e8266R +. +gSecuryStgsSvi +()-> +ad +([&]( +SecuryStgs + & +curyStgs +) { + +384 i( +curyStgs +. +jwtSe +. +equs +( +sswd +. +c_r +())) { + +385 +become_adm +( +shl +); + +387 +shl +. +day_u +( +now + + +INVALID_PASSWORD_DELAY_MS +, []( +Shl + & shell) { + +388 +shl +. +logg +(). +log +( +LogLev +:: +NOTICE +, +LogFacy +:: +AUTH +, +F +("Invaliddminassword on console")); + +389 +shl +. +n +( +F +("su: incorrectassword")); + +398 + gEMSESPShl +:: +commds +-> +add_commd +( +cڋxt +, + +399 +CommdFgs +:: +ADMIN +, + +400 +ash_rg_ve +{ +F_ +( +nd +), F_( +gm +)}, + +401 +ash_rg_ve +{ +F_ +( +da_mdy +)}, + +402 []( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts +) { + +403 +EMSESP +:: +nd_w_gm +( +gumts +. +t +(). +c_r +()); + +406 + gEMSESPShl +:: +commds +-> +add_commd +( +cڋxt +, + +407 +CommdFgs +:: +USER +, + +408 +ash_rg_ve +{ +F_ +( +wch +)}, + +409 +ash_rg_ve +{ +F_ +( +wch_fm_tiڮ +), F_( +wchid_tiڮ +)}, + +410 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +411 +ut16_t + +wch_id + = +WATCH_ID_NONE +; + +413 i(! +gumts +. +emy +()) { + +415 i( +gumts +[0] = +ad_ash_rg +( +F_ +( +w +))) { + +416 +em +:: +EMSESP +:: +wch +(EMSESP:: +WATCH_RAW +); + +417 } i( +gumts +[0] = +ad_ash_rg +( +F_ +( + +))) { + +418 +em +:: +EMSESP +:: +wch +(EMSESP:: +WATCH_ON +); + +419 } i( +gumts +[0] = +ad_ash_rg +( +F_ +( +off +))) { + +420 +em +:: +EMSESP +:: +wch +(EMSESP:: +WATCH_OFF +); + +421 } i( +em +:: +EMSESP +:: +wch +(=EMSESP:: +WATCH_OFF +) { + +422 +shl +. +tn +( +F_ +( +vid_wch +)); + +425 +wch_id + = +Hrs +:: +hextot +( +gumts +[0]. +c_r +()); + +428 i( +gumts +. +size +() == 2) { + +430 +wch_id + = +Hrs +:: +hextot +( +gumts +[1]. +c_r +()); + +433 +em +:: +EMSESP +:: +wch_id +(watch_id); + +436 +ut8_t + +wch + = +em +:: +EMSESP +::watch(); + +437 i( +wch + = +EMSESP +:: +WATCH_OFF +) { + +438 +shl +. +tn +( +F +("Watchingelegrams is off")); + +443 i(! +shl +. +logg +(). +abd +( +Lev +:: +NOTICE +)) { + +444 +shl +. +log_v +( +Lev +:: +NOTICE +); + +447 i( +wch + = +EMSESP +:: +WATCH_ON +) { + +448 +shl +. +tn +( +F +("Watching incomingelegrams, displayed in decoded format")); + +450 +shl +. +tn +( +F +("Watching incomingelegrams, displayedsaw bytes")); + +453 +wch_id + = +em +:: +EMSESP +::watch_id(); + +454 i( +wch_id + > 0x80) { + +455 +shl +. +tn +( +F +("Frg oyegmth mchegmy o0x%02X"), +wch_id +); + +456 } i( +wch_id + ! +WATCH_ID_NONE +) { + +457 +shl +. +tn +( +F +("Frg oyegmth mch devi ID ogmy o0x%02X"), +wch_id +); + +463 + gd +:: +rg + +EMSESPShl +:: +cڋxt_xt +() { + +464  +ic_ +< +ShlCڋxt +>( +cڋxt +())) { + +465  +ShlCڋxt +:: +MAIN +: + +466  +d +:: +rg +{'/'}; + +468  + gShlCڋxt +:: +BOILER +: + +469  +d +:: +rg +{"/boiler"}; + +471  + gShlCڋxt +:: +SYSTEM +: + +472  +d +:: +rg +{"/system"}; + +474  + gShlCڋxt +:: +THERMOSTAT +: + +475  +d +:: +rg +{"/thermostat"}; + +478  +d +:: +rg +{}; + +483 + gd +:: +rg + +EMSESPShl +:: +om_suffix +() { + +484 i( +has_ags +( +CommdFgs +:: +ADMIN +)) { + +485  +d +:: +rg +{'#'}; + +487  + gd +:: +rg +{'$'}; + +491  + gEMSESPShl +:: +d_of_smissi +() { + +492 +voke_commd +( +uuid +:: +ad_ash_rg +( +F_ +( +ex +))); + +495 + gEMSESPSmCse +:: +EMSESPSmCse +( +Sm + & +am +, +bo + +lol +) + +496 : +uuid +:: +cse +:: +Shl +( +commds +, +ShlCڋxt +:: +MAIN +, +lol + ? ( +CommdFgs +:: +USER + | CommdFgs:: +LOCAL +) : CommandFlags::USER) + +497 , + guuid +:: +cse +:: +SmCse +( +am +) + +498 , +EMSESPShl +() + +499 , +me_ +( +uuid +:: +ad_ash_rg +( +F +("Serial"))) + +500 , +y_ +( +d +:: +numic_lims +< +size_t +>:: +max +()) + +501 , +addr_ +() + +502 , +pt_ +(0) { + +505 + gEMSESPSmCse +:: +EMSESPSmCse +( +Sm + & +am +, cڡ +IPAddss + & +addr +, +ut16_t + +pt +) + +506 : +uuid +:: +cse +:: +Shl +( +commds +, +ShlCڋxt +:: +MAIN +, +CommdFgs +:: +USER +) + +507 , + guuid +:: +cse +:: +SmCse +( +am +) + +508 , +EMSESPShl +() + +509 , +addr_ +( +addr +) + +510 , +pt_ +( +pt +) { + +511 + gd +:: +ve +<> +xt +(16); + +513 + gy_ + = 0; + +514  + gy_ + < + gys_ +. +size +(&&tys_[ +y_ +]) + +515 + gy_ +++; + +516 i( + gy_ + = +ys_ +. +size +()) { + +517 +ys_ +. +push_back +( +ue +); + +519 + gys_ +[ +y_ +] = +ue +; + +522 +tf_P +( +xt +. +da +(),ext. +size +(), +PSTR +("y%u"), +y_ +); + +523 + gme_ + = +xt +. +da +(); + +524 #ide +EMSESP_STANDALONE + + +525 +logg +(). +fo +( +F +("Aod csސ%f ci from [%s]:%u"), +me_ +. +c_r +(), +uuid +:: +b_to_rg +( +addr_ +).c_r(), +pt_ +); + +529 + gEMSESPSmCse +::~ +EMSESPSmCse +() { + +530 i( +y_ + ! +SIZE_MAX +) { + +531 #ide +EMSESP_STANDALONE + + +532 +logg +(). +fo +( +F +("Shutdowcsސ%f ci from [%s]:%u"), +me_ +. +c_r +(), +uuid +:: +b_to_rg +( +addr_ +).c_r(), +pt_ +); + +534 + gys_ +[ +y_ +] = +l +; + +535 + gys_ +. +shrk_to_f +(); + +537 + gEMSESPShl +:: +commds +-> +move_l_commds +(); + +541 + gd +:: +rg + +EMSESPSmCse +:: +cse_me +() { + +542  +me_ +; + +547  + gCse +:: +t +() { + +550 #i +defed +( +ESP32 +|| defed( +EMSESP_STANDALONE +|| defed( +EMSESP_FORCE_SERIAL +) + +551 +rl_cse_ +. +beg +( +SERIAL_CONSOLE_BAUD_RATE +); + +552 + grl_cse_ +. +n +(); + +554 + gshl + = +d +:: +make_shed +< +EMSESPSmCse +>( +rl_cse_ +, + gue +); + +555 + gshl +-> +maximum_log_mesges +(100); + +556 + gshl +-> +t +(); + +559 #ide +ESP8266 + + +560 #i +defed +( +EMSESP_DEBUG +) + +561 + gshl +-> +log_v +( +uuid +:: +log +:: +Lev +:: +DEBUG +); + +565 #i +defed +( +EMSESP_FORCE_SERIAL +) + +566 + gshl +-> +log_v +( +uuid +:: +log +:: +Lev +:: +DEBUG +); + +570 #i +defed +( +EMSESP_STANDALONE +) + +572 + gshl +-> +add_ags +( +CommdFgs +:: +ADMIN +); + +578 #ide +EMSESP_STANDALONE + + +579 + gʑ_ +. +t +(); + +580 + gʑ_ +. +deu_wre_timeout +(1000); + +588  + gCse +:: +lo +() { + +589 +uuid +:: +lo +(); + +591 #ide +EMSESP_STANDALONE + + +592 + gʑ_ +. +lo +(); + +595 #i +defed +( +ESP8266 +) + +596 i(! + gEMSut +:: +ndg +()) { + +597 +Shl +:: +lo_l +(); + +600 + gShl +:: +lo_l +(); + + @src/console.h + +19 #ide +EMSESP_CONSOLE_H + + +20  + #EMSESP_CONSOLE_H + + + ) + +22  + ~ + +24  + ~ + +25  + ~ + +27  + ~ + +28  + ~ + +30  + ~"hrs.h +" + +31  + ~"syem.h +" + +32  + ~"mq.h +" + +34 +usg + + guuid +:: +ash_rg_ve +; + +35 +usg + + guuid +:: +ad_ash_rg +; + +36 +usg + + guuid +:: +cse +:: +Commds +; + +37 +usg + + guuid +:: +cse +:: +Shl +; + +38 +usg + + guuid +:: +log +:: +Lev +; + +40  + #LOG_DEBUG +(... +logg_ +. + `debug +( +__VA_ARGS__ +) + + ) + +41  + #LOG_INFO +(... +logg_ +. + `fo +( +__VA_ARGS__ +) + + ) + +42  + #LOG_TRACE +(... +logg_ +. + `a +( +__VA_ARGS__ +) + + ) + +43  + #LOG_NOTICE +(... +logg_ +. + `ni +( +__VA_ARGS__ +) + + ) + +44  + #LOG_WARNING +(... +logg_ +. + `wng +( +__VA_ARGS__ +) + + ) + +45  + #LOG_ERROR +(... +logg_ +. + `r +( +__VA_ARGS__ +) + + ) + +48  + #MAKE_PSTR +( +rg_me +, +rg_l +cڡ  +__pr__ +##rg_me[] + `__ibu__ +(( + `__igd__ +(())) +PROGMEM + = sg_l; + + ) + +49  + #MAKE_PSTR_WORD +( +rg_me + + `MAKE_PSTR +(rg_me, #rg_me) + + ) + +50  + #F_ +( +rg_me + + `FPSTR +( +__pr__ +##rg_me) + + ) + +54  + ~"lo_EN.h +" + +56 #ifde +LOCAL + + +57 #unde +LOCAL + + +60  +cڡex + +ut32_t + + gINVALID_PASSWORD_DELAY_MS + = 3000; + +62 +mea + + gem + { + +64 +usg + + gLogLev + = :: +uuid +:: +log +:: +Lev +; + +65 +usg + + gLogFacy + = :: +uuid +:: +log +:: +Facy +; + +67 + gCommdFgs + : +ut8_t + { + +69 +USER + = 0, + +70 + gADMIN + = (1 << 0), + +71 + gLOCAL + = (1 << 1) + +75 + gShlCڋxt + : +ut8_t + { + +77 +MAIN + = 0, + +78 + gSYSTEM +, + +79 + gBOILER +, + +80 + gTHERMOSTAT +, + +81 + gSOLAR +, + +82 + gMIXING + + +86 as + cEMSESPShl + : +vtu + +public + +uuid +:: +cse +:: +Shl + { + +87 +public +: + +88 ~ +EMSESPShl +( +ovride + = ; + +90 +vtu + + gd +:: +rg + +cse_me +() = 0; + +92  + gd +:: +shed_r +< +uuid +:: +cse +:: +Commds +> +commds +; + +93  + gd +:: +shed_r +< +EMSESPShl +> +shl +; + +95 + geed +: + +96 +EMSESPShl +(); + +99  +d +( + govride +; + +100  +ݳd +( + govride +; + +101  +diy_br +( + govride +; + +102 + gd +:: +rg + +home_xt +( +ovride +; + +103 + gd +:: +rg + +cڋxt_xt +( +ovride +; + +104 + gd +:: +rg + +om_suffix +( +ovride +; + +105  +d_of_smissi +( + govride +; + +106 +bo + +ex_cڋxt +( + govride +; + +108 + give +: + +109  +add_cse_commds +(); + +110 +bo + + gcse_commds_lded_ + = +l +; + +111 + gd +:: +rg + +cse_home_ +; + +114 +ass + + gEMSESPSmCse + : +public + +uuid +:: +cse +:: +SmCse +,ubli + gEMSESPShl + { + +115 + gpublic +: + +116 +EMSESPSmCse +( +Sm + & +am +, +bo + +lol +); + +117 +EMSESPSmCse +( +Sm + & +am +, cڡ +IPAddss + & +addr +, +ut16_t + +pt +); + +118 ~ +EMSESPSmCse +( + govride +; + +120 + gd +:: +rg + +cse_me +( +ovride +; + +122 + give +: + +123  +d +:: +ve +< +bo +> +ys_ +; + +125 + gd +:: +rg + +me_ +; + +126 +size_t + + gy_ +; + +127 +IPAddss + + gaddr_ +; + +128 +ut16_t + + gpt_ +; + +131 as + cCse + { + +132 + gpublic +: + +133  +lo +(); + +134  +t +(); + +136 + guuid +:: +log +:: +Lev + +log_v +(); + +138  +r_cuom_cڋxt +( +Shl + & +shl +,  +cڋxt +); + +139  +ld_dd_commds +( +cڋxt +); + +141 + give +: + +142  +cڡex +  +SERIAL_CONSOLE_BAUD_RATE + = 115200; + +143  +cڡex +ut& + grl_cse_ + = +Sl +; + + @src/device_library.h + +27 { 64, + gDeviTy +:: +BOILER +, +F +("BK13/BK15/Sme/GB1x2"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +28 { 72, + gDeviTy +:: +BOILER +, +F +("GB125/MC10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +29 { 84, + gDeviTy +:: +BOILER +, +F +("Logamax PluGB022"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +30 { 95, + gDeviTy +:: +BOILER +, +F +("Cd2500/Logamax/Logomic/CuT/G/GiHT3"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +31 {115, + gDeviTy +:: +BOILER +, +F +("Tle/GB162"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +32 {122, + gDeviTy +:: +BOILER +, +F +("Prޚe"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +33 {123, + gDeviTy +:: +BOILER +, +F +("GBx72/Tndle/Cur/G Si/27i"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +34 {131, + gDeviTy +:: +BOILER +, +F +("GB212"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +35 {133, + gDeviTy +:: +BOILER +, +F +("GB125/LogamiMC110"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +36 {170, + gDeviTy +:: +BOILER +, +F +("LogGB212"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +37 {172, + gDeviTy +:: +BOILER +, +F +("Enve/Comes6000AW"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +38 {195, + gDeviTy +:: +BOILER +, +F +("Cd5000i"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +39 {203, + gDeviTy +:: +BOILER +, +F +("Logamax U122/Cur"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +40 {208, + gDeviTy +:: +BOILER +, +F +("Logamax Plus/GB192/CdGC9000"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +41 {234, + gDeviTy +:: +BOILER +, +F +("Logamax PluGB122"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +44 { 68, + gDeviTy +:: +CONTROLLER +, +F +("BC10/RFM20"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +45 { 89, + gDeviTy +:: +CONTROLLER +, +F +("BC10 GB142"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +46 { 95, + gDeviTy +:: +CONTROLLER +, +F +("HT3"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +47 {114, + gDeviTy +:: +CONTROLLER +, +F +("BC10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +48 {125, + gDeviTy +:: +CONTROLLER +, +F +("BC25"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +49 {152, + gDeviTy +:: +CONTROLLER +, +F +("Cڌr"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +50 {169, + gDeviTy +:: +CONTROLLER +, +F +("BC40"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +51 {190, + gDeviTy +:: +CONTROLLER +, +F +("BC10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +52 {194, + gDeviTy +:: +CONTROLLER +, +F +("BC10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +53 {207, + gDeviTy +:: +CONTROLLER +, +F +("S II/CS200"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +54 {209, + gDeviTy +:: +CONTROLLER +, +F +("ErP"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +55 {218, + gDeviTy +:: +CONTROLLER +, +F +("M200/RFM200"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +56 {224, + gDeviTy +:: +CONTROLLER +, +F +("9000i"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +57 {230, + gDeviTy +:: +CONTROLLER +, +F +("BC Ba"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +58 {241, + gDeviTy +:: +CONTROLLER +, +F +("Cd5000i"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +61 {202, + gDeviTy +:: +THERMOSTAT +, +F +("LogamiTC100/ModulEasy"), + gDeviFgs +:: +EMS_DEVICE_FLAG_EASY + | +DeviFgs +:: +EMS_DEVICE_FLAG_NO_WRITE +}, + +62 {203, + gDeviTy +:: +THERMOSTAT +, +F +("EasyCڌ CT200"), + gDeviFgs +:: +EMS_DEVICE_FLAG_EASY + | +DeviFgs +:: +EMS_DEVICE_FLAG_NO_WRITE +}, + +65 { 67, + gDeviTy +:: +THERMOSTAT +, +F +("RC30"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC30_1 +}, + +66 { 77, + gDeviTy +:: +THERMOSTAT +, +F +("RC20/Modul300"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC20 +}, + +67 { 78, + gDeviTy +:: +THERMOSTAT +, +F +("Modul400"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC30 +}, + +68 { 79, + gDeviTy +:: +THERMOSTAT +, +F +("RC10/Modul100"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC10 +}, + +69 { 80, + gDeviTy +:: +THERMOSTAT +, +F +("Modul200"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC10 +}, + +70 { 86, + gDeviTy +:: +THERMOSTAT +, +F +("RC35"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC35 +}, + +71 { 93, + gDeviTy +:: +THERMOSTAT +, +F +("RC20RF"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC20 +}, + +72 { 94, + gDeviTy +:: +THERMOSTAT +, +F +("RFM20 Reme"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +73 {157, + gDeviTy +:: +THERMOSTAT +, +F +("RC200/CW100"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC100 +}, + +74 {158, + gDeviTy +:: +THERMOSTAT +, +F +("RC300/RC310/Modul3000/CW400/S II"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC300 +}, + +75 {165, + gDeviTy +:: +THERMOSTAT +, +F +("RC100/Modul1000/1010"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC100 +}, + +78 { 76, + gDeviTy +:: +THERMOSTAT +, +F +("ES73"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC35 +}, + +79 {113, + gDeviTy +:: +THERMOSTAT +, +F +("ES72/RC20"), + gDeviFgs +:: +EMS_DEVICE_FLAG_RC20_2 +}, + +82 {105, + gDeviTy +:: +THERMOSTAT +, +F +("FW100"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS +}, + +83 {106, + gDeviTy +:: +THERMOSTAT +, +F +("FW200"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS +}, + +84 {107, + gDeviTy +:: +THERMOSTAT +, +F +("FR100"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS + | +DeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS_2 +}, + +85 {108, + gDeviTy +:: +THERMOSTAT +, +F +("FR110"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS + | +DeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS_2 +}, + +86 {111, + gDeviTy +:: +THERMOSTAT +, +F +("FR10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS +}, + +87 {147, + gDeviTy +:: +THERMOSTAT +, +F +("FR50"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS +}, + +88 {191, + gDeviTy +:: +THERMOSTAT +, +F +("FR120"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS +}, + +89 {192, + gDeviTy +:: +THERMOSTAT +, +F +("FW120"), + gDeviFgs +:: +EMS_DEVICE_FLAG_JUNKERS +}, + +92 { 73, + gDeviTy +:: +SOLAR +, +F +("SM10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_SM10 +}, + +93 {101, + gDeviTy +:: +SOLAR +, +F +("ISM1"), + gDeviFgs +:: +EMS_DEVICE_FLAG_ISM +}, + +94 {162, + gDeviTy +:: +SOLAR +, +F +("SM50"), + gDeviFgs +:: +EMS_DEVICE_FLAG_SM100 +}, + +95 {163, + gDeviTy +:: +SOLAR +, +F +("SM100/MS100"), + gDeviFgs +:: +EMS_DEVICE_FLAG_SM100 +}, + +96 {164, + gDeviTy +:: +SOLAR +, +F +("SM200/MS200"), + gDeviFgs +:: +EMS_DEVICE_FLAG_SM100 +}, + +99 { 69, + gDeviTy +:: +MIXING +, +F +("MM10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_MM10 +}, + +100 {102, + gDeviTy +:: +MIXING +, +F +("IPM"), + gDeviFgs +:: +EMS_DEVICE_FLAG_IPM +}, + +101 {159, + gDeviTy +:: +MIXING +, +F +("MM50"), + gDeviFgs +:: +EMS_DEVICE_FLAG_MMPLUS +}, + +102 {160, + gDeviTy +:: +MIXING +, +F +("MM100"), + gDeviFgs +:: +EMS_DEVICE_FLAG_MMPLUS +}, + +103 {161, + gDeviTy +:: +MIXING +, +F +("MM200"), + gDeviFgs +:: +EMS_DEVICE_FLAG_MMPLUS +}, + +106 {200, + gDeviTy +:: +HEATPUMP +, +F +("HP Modu"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +107 {252, + gDeviTy +:: +HEATPUMP +, +F +("HP Modu"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +110 {171, + gDeviTy +:: +CONNECT +, +F +("OnThm Cvr"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +111 {205, + gDeviTy +:: +CONNECT +, +F +("ModulEasy C"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +112 {206, + gDeviTy +:: +CONNECT +, +F +("Easy C"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +115 { 71, + gDeviTy +:: +SWITCH +, +F +("WM10"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +}, + +118 {189, + gDeviTy +:: +GATEWAY +, +F +("KM200/MB LAN 2"), + gDeviFgs +:: +EMS_DEVICE_FLAG_NONE +} + + @src/devices/boiler.cpp + +19  + ~"bo.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Bo +, +EMSdevi +:: +DeviTy +:: +BOILER +) + +25 +uuid +:: +log +:: +Logg + +Bo +:: +logg_ +{ +F_ +( +bo +), + guuid +::log:: +Facy +:: +CONSOLE +}; + +27 + gBo +:: +Bo +( +ut8_t + +devi_ty +, +t8_t + +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +29 + gthis +-> +rve_mem +(20); + +31 +LOG_DEBUG +( +F +("Addgew Bo wh devi ID 0x%02X"), +devi_id +); + +34 +gi_gm_ty +(0x10, +F +("UBAEMesge1"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAEMesge +(t); }); + +35 +gi_gm_ty +(0x11, +F +("UBAEMesge2"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAEMesge +(t); }); + +36 +gi_gm_ty +(0x18, +F +("UBAMڙFa"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAMڙFa +(t); }); + +37 +gi_gm_ty +(0x19, +F +("UBAMڙSlow"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_UBAMڙSlow +(t); }); + +38 +gi_gm_ty +(0x34, +F +("UBAMڙWW"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAMڙWW +(t); }); + +39 +gi_gm_ty +(0x1C, +F +("UBAManStus"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAManStus +(t); }); + +40 +gi_gm_ty +(0x2A, +F +("MC10Stus"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_MC10Stus +(t); }); + +41 +gi_gm_ty +(0x33, +F +("UBAPamWW"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_UBAPamWW +(t); }); + +42 +gi_gm_ty +(0x14, +F +("UBATٮUime"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_UBATٮUime +(t); }); + +43 +gi_gm_ty +(0x35, +F +("UBAFgs"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAFgs +(t); }); + +44 +gi_gm_ty +(0x15, +F +("UBAManDa"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAManDa +(t); }); + +45 +gi_gm_ty +(0x16, +F +("UBAPams"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_UBAPams +(t); }); + +46 +gi_gm_ty +(0x1A, +F +("UBASPots"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBASPots +(t); }); + +47 +gi_gm_ty +(0xD1, +F +("UBAOutdoTemp"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAOutdoTemp +(t); }); + +48 +gi_gm_ty +(0xE3, +F +("UBAMڙSlowPlus"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAMڙSlowPlus2 +(t); }); + +49 +gi_gm_ty +(0xE4, +F +("UBAMڙFaPlus"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAMڙFaPlus +(t); }); + +50 +gi_gm_ty +(0xE5, +F +("UBAMڙSlowPlus"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBAMڙSlowPlus +(t); }); + +51 +gi_gm_ty +(0xE9, +F +("UBADHWStus"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_UBADHWStus +(t); }); + +54 +gi_mq_cmd +( +F +("comft"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_wmw_mode +(value, id); }); + +55 +gi_mq_cmd +( +F +("wwaived"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_wmw_aived +(value, id); }); + +56 +gi_mq_cmd +( +F +("wwived"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_pwmw_aived +(value, id); }); + +57 +gi_mq_cmd +( +F +("wwڑime"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_wmw_ڑime +(value, id); }); + +58 +gi_mq_cmd +( +F +("wwccuti"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_wmw_ccuti +(value, id); }); + +59 +gi_mq_cmd +( +F +("owmp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_ow_mp +(value, id); }); + +60 +gi_mq_cmd +( +F +("wwmp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_wmw_mp +(value, id); }); + +61 +gi_mq_cmd +( +F +("bumaxpow"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_max_pow +(value, id); }); + +62 +gi_mq_cmd +( +F +("bumpow"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_m_pow +(value, id); }); + +63 +gi_mq_cmd +( +F +("bohy"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_hy_ +(value, id); }); + +64 +gi_mq_cmd +( +F +("bohyoff"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_hy_off +(value, id); }); + +65 +gi_mq_cmd +( +F +("buriod"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_bu_riod +(value, id); }); + +66 +gi_mq_cmd +( +F +("pumpday"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_pump_day +(value, id); }); + +68 + gEMSESP +:: +e8266R +. +gMqStgsSvi +()-> +ad +([&]( +MqStgs + & +gs +) { + +69 +mq_fm_ + = +gs +. +mq_fm +; + +71 i( +mq_fm_ + = +MQTT_fm +:: +HA +) { + +72 +gi_mq_ha_cfig +(); + +78  + gBo +:: +add_cڋxt_mu +() { + +79 +EMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +80 +CommdFgs +:: +USER +, + +81 +ash_rg_ve +{ +F_ +( +bo +)}, + +82 [&]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +83 +Bo +:: +cse_commds +( +shl +, +ShlCڋxt +:: +BOILER +); + +84 +add_cڋxt_commds +( +ShlCڋxt +:: +BOILER +); + +92  + gBo +:: +gi_mq_ha_cfig +() { + +93 +SticJsDocumt +< +EMSESP_MAX_JSON_SIZE_MEDIUM +> +doc +; + +107  + gBo +:: +devi_fo_web +( +JsAay + & +ro +) { + +108 +JsObje + +daEmt +; + +110 i( + grviCodeCh_ +[0] && + gHrs +:: +hasVue +( +rviCode_ +)) { + +111 +daEmt + = +ro +. +NeedObje +(); + +112 + gdaEmt +["me"] = +F +("Service Code"); + +113  + gs +[12]; + +114 +tf_P +( +s +, 12, +PSTR +("%(%d)"), +rviCodeCh_ +, +rviCode_ +); + +115 + gdaEmt +["vue"] = +s +; + +118 i( + gHrs +:: +hasVue +( +p_w_aive_ +, +EMS_VALUE_BOOL +)) { + +119 + gdaEmt + = +ro +. +NeedObje +(); + +120 + gdaEmt +["me"] = +F +("Hotap water"); + +121 + gdaEmt +["vue"] = +p_w_aive_ + ? +F +("running") : F("off"); + +124 i( + gHrs +:: +hasVue +( +htg_aive_ +, +EMS_VALUE_BOOL +)) { + +125 + gdaEmt + = +ro +. +NeedObje +(); + +126 + gdaEmt +["me"] = +F +("Central heating"); + +127 + gdaEmt +["vue"] = +htg_aive_ + ? +F +("active") : F("off"); + +130 +nd_vue_js +( +ro +, "", +F +("Seed flowemtu"), +lFlowTemp_ +, +F_ +( +deges +)); + +131 +nd_vue_js +( +ro +, "", +F +("Cuowemtu"), +curFlowTemp_ +, +F_ +( +deges +), 10); + +132 +nd_vue_js +( +ro +, "", +F +("Wm W seedemtu"), +wWSTemp_ +, +F_ +( +deges +)); + +133 +nd_vue_js +( +ro +, "", +F +("Wm W semtu"), +wWSTmp_ +, +F_ +( +deges +)); + +134 +nd_vue_js +( +ro +, "", +F +("Wm W cumtu ()"), +wWCurTmp_ +, +F_ +( +deges +), 10); + +135 +nd_vue_js +( +ro +, "", +F +("Wm W cumtu (ex)"), +wWCurTmp2_ +, +F_ +( +deges +), 10); + +136 +nd_vue_js +( +ro +, "", +F +("Pummoduti"), +pumpMod_ +, +F_ +( +r +)); + +137 +nd_vue_js +( +ro +, "", +F +("HPummoduti"), +pumpMod2_ +, +F_ +( +r +)); + +141  + gBo +:: +publish_vues +() { + +144 +SticJsDocumt +< +EMSESP_MAX_JSON_SIZE_LARGE +> +doc +; + +146  + gs +[10]; + +148 i( + gHrs +:: +hasVue +( +wWComft_ +)) { + +149 i( +wWComft_ + == 0x00) { + +150 +doc +["wWComfort"] = "Hot"; + +151 } i( + gwWComft_ + == 0xD8) { + +152 +doc +["wWComfort"] = "Eco"; + +153 } i( + gwWComft_ + == 0xEC) { + +154 +doc +["wWComfort"] = "Intelligent"; + +158 i( + gHrs +:: +hasVue +( +wWSTemp_ +)) { + +159 +doc +["wWSTemp"] = +wWSTemp_ +; + +161 i( + gHrs +:: +hasVue +( +wWSTmp_ +)) { + +162 +doc +["wWSTemp"] = +wWSTmp_ +; + +164 i( + gHrs +:: +hasVue +( +wWDisTemp_ +)) { + +165 +doc +["wWDisiTemp"] = +wWDisTemp_ +; + +167 i( + gHrs +:: +hasVue +( +lFlowTemp_ +)) { + +168 +doc +["lFlowTemp"] = +lFlowTemp_ +; + +170 i( + gHrs +:: +hasVue +( +lBuPow_ +)) { + +171 +doc +["lBuPow"] = +lBuPow_ +; + +173 i( + gHrs +:: +hasVue +( +curBuPow_ +)) { + +174 +doc +["curBuPow"] = +curBuPow_ +; + +176 i( + gHrs +:: +hasVue +( +pumpMod_ +)) { + +177 +doc +["pumpMod"] = +pumpMod_ +; + +179 i( + gHrs +:: +hasVue +( +pumpMod2_ +)) { + +180 +doc +["pumpMod2"] = +pumpMod2_ +; + +182 i( + gHrs +:: +hasVue +( +wWCcPump_ +, +EMS_VALUE_BOOL +)) { + +183 + gdoc +["wWCcPump"] = +Hrs +:: +nd_vue +( +s +, +wWCcPump_ +, +EMS_VALUE_BOOL +); + +185 i( + gHrs +:: +hasVue +( +wWCcPumpTy_ +, +EMS_VALUE_BOOL +)) { + +186 + gdoc +["wWCiPuTy"] = +wWCcPumpTy_ + ? "valve" : "pump"; + +188 i( + gHrs +:: +hasVue +( +wWCcPumpMode_ +)) { + +189 +doc +["wWCiPuMode"] = +wWCcPumpMode_ +; + +191 i( + gHrs +:: +hasVue +( +wWCc_ +, +EMS_VALUE_BOOL +)) { + +192 + gdoc +["wWCc"] = +Hrs +:: +nd_vue +( +s +, +wWCc_ +, +EMS_VALUE_BOOL +); + +194 i( + gHrs +:: +hasVue +( +extTemp_ +)) { + +195 +doc +["outdoTemp"] = () +extTemp_ + / 10; + +197 i( + gHrs +:: +hasVue +( +wWCurTmp_ +)) { + +198 +doc +["wWCurTmp"] = () +wWCurTmp_ + / 10; + +200 i( + gHrs +:: +hasVue +( +wWCurTmp2_ +)) { + +201 +doc +["wWCurTmp2"] = () +wWCurTmp2_ + / 10; + +203 i( + gHrs +:: +hasVue +( +wWCurFlow_ +)) { + +204 +doc +["wWCurFlow"] = () +wWCurFlow_ + / 10; + +206 i( + gHrs +:: +hasVue +( +curFlowTemp_ +)) { + +207 +doc +["curFlowTemp"] = () +curFlowTemp_ + / 10; + +209 i( + gHrs +:: +hasVue +( +tTemp_ +)) { + +210 +doc +["tTemp"] = () +tTemp_ + / 10; + +212 i( + gHrs +:: +hasVue +( +swchTemp_ +)) { + +213 +doc +["swchTemp"] = () +swchTemp_ + / 10; + +215 i( + gHrs +:: +hasVue +( +sysPss_ +)) { + +216 +doc +["sysPss"] = () +sysPss_ + / 10; + +218 i( + gHrs +:: +hasVue +( +boTemp_ +)) { + +219 +doc +["boTemp"] = () +boTemp_ + / 10; + +221 i( + gHrs +:: +hasVue +( +wwStageTemp1_ +)) { + +222 +doc +["wwStageTemp1"] = () +wwStageTemp1_ + / 10; + +224 i( + gHrs +:: +hasVue +( +wwStageTemp2_ +)) { + +225 +doc +["wwStageTemp2"] = () +wwStageTemp2_ + / 10; + +227 i( + gHrs +:: +hasVue +( +exhauTemp_ +)) { + +228 +doc +["exhauTemp"] = () +exhauTemp_ + / 10; + +230 i( + gHrs +:: +hasVue +( +wWAived_ +, +EMS_VALUE_BOOL +)) { + +231 + gdoc +["wWAived"] = +Hrs +:: +nd_vue +( +s +, +wWAived_ +, +EMS_VALUE_BOOL +); + +233 i( + gHrs +:: +hasVue +( +wWOTime_ +, +EMS_VALUE_BOOL +)) { + +234 + gdoc +["wWOtime"] = +Hrs +:: +nd_vue +( +s +, +wWOTime_ +, +EMS_VALUE_BOOL +); + +236 i( + gHrs +:: +hasVue +( +wWDisg_ +, +EMS_VALUE_BOOL +)) { + +237 + gdoc +["wWDisg"] = +Hrs +:: +nd_vue +( +s +, +wWDisg_ +, +EMS_VALUE_BOOL +); + +239 i( + gHrs +:: +hasVue +( +wWRdess_ +, +EMS_VALUE_BOOL +)) { + +240 + gdoc +["wWRdy"] = +Hrs +:: +nd_vue +( +s +, +wWRdess_ +, +EMS_VALUE_BOOL +); + +242 i( + gHrs +:: +hasVue +( +wWRechgg_ +, +EMS_VALUE_BOOL +)) { + +243 + gdoc +["wWRechge"] = +Hrs +:: +nd_vue +( +s +, +wWRechgg_ +, +EMS_VALUE_BOOL +); + +245 i( + gHrs +:: +hasVue +( +wWTemtuOK_ +, +EMS_VALUE_BOOL +)) { + +246 + gdoc +["wWTempOK"] = +Hrs +:: +nd_vue +( +s +, +wWTemtuOK_ +, +EMS_VALUE_BOOL +); + +248 i( + gHrs +:: +hasVue +( +wWCc_ +, +EMS_VALUE_BOOL +)) { + +249 + gdoc +["wWCc"] = +Hrs +:: +nd_vue +( +s +, +wWCc_ +, +EMS_VALUE_BOOL +); + +251 i( + gHrs +:: +hasVue +( +buGas_ +, +EMS_VALUE_BOOL +)) { + +252 + gdoc +["buGas"] = +Hrs +:: +nd_vue +( +s +, +buGas_ +, +EMS_VALUE_BOOL +); + +254 i( + gHrs +:: +hasVue +( +ameCu_ +)) { + +255 +doc +["ameCu"] = ()( +t16_t +) +ameCu_ + / 10; + +257 i( + gHrs +:: +hasVue +( +htPmp_ +, +EMS_VALUE_BOOL +)) { + +258 + gdoc +["htPump"] = +Hrs +:: +nd_vue +( +s +, +htPmp_ +, +EMS_VALUE_BOOL +); + +260 i( + gHrs +:: +hasVue +( +nWk_ +, +EMS_VALUE_BOOL +)) { + +261 + gdoc +["nWk"] = +Hrs +:: +nd_vue +( +s +, +nWk_ +, +EMS_VALUE_BOOL +); + +263 i( + gHrs +:: +hasVue +( +ignWk_ +, +EMS_VALUE_BOOL +)) { + +264 + gdoc +["ignWk"] = +Hrs +:: +nd_vue +( +s +, +ignWk_ +, +EMS_VALUE_BOOL +); + +266 i( + gHrs +:: +hasVue +( +wWHt_ +, +EMS_VALUE_BOOL +)) { + +267 + gdoc +["wWHt"] = +Hrs +:: +nd_vue +( +s +, +wWHt_ +, +EMS_VALUE_BOOL +); + +269 i( + gHrs +:: +hasVue +( +htg_mp_ +)) { + +270 +doc +["htgTemp"] = +htg_mp_ +; + +272 i( + gHrs +:: +hasVue +( +pump_mod_max_ +)) { + +273 +doc +["pumpModMax"] = +pump_mod_max_ +; + +275 i( + gHrs +:: +hasVue +( +pump_mod_m_ +)) { + +276 +doc +["pumpModM"] = +pump_mod_m_ +; + +278 i( + gHrs +:: +hasVue +( +pumpDay_ +)) { + +279 +doc +["pumpDay"] = +pumpDay_ +; + +281 i( + gHrs +:: +hasVue +( +buPiod_ +)) { + +282 +doc +["buMPiod"] = +buPiod_ +; + +284 i( + gHrs +:: +hasVue +( +buPowm_ +)) { + +285 +doc +["buMPow"] = +buPowm_ +; + +287 i( + gHrs +:: +hasVue +( +buPowmax_ +)) { + +288 +doc +["buMaxPow"] = +buPowmax_ +; + +290 i( + gHrs +:: +hasVue +( +boTemp__ +)) { + +291 +doc +["boHyOn"] = +boTemp__ +; + +293 i( + gHrs +:: +hasVue +( +boTemp_off_ +)) { + +294 +doc +["boHyOff"] = +boTemp_off_ +; + +296 i( + gHrs +:: +hasVue +( +tFlowTemp_ +)) { + +297 +doc +["tFlowTemp"] = +tFlowTemp_ +; + +299 i( + gHrs +:: +hasVue +( +tWWPumpPow_ +)) { + +300 +doc +["wWSPumpPow"] = +tWWPumpPow_ +; + +302 i( + gHrs +:: +hasVue +( +wWSs_ +)) { + +303 +doc +["wWSs"] = +wWSs_ +; + +305 i( + gHrs +:: +hasVue +( +wWWkM_ +)) { + +306 +doc +["wWWkM"] = +wWWkM_ +; + +308 i( + gHrs +:: +hasVue +( +UBAuime_ +)) { + +309 +doc +["UBAuime"] = +UBAuime_ +; + +311 i( + gHrs +:: +hasVue +( +buSs_ +)) { + +312 +doc +["buSs"] = +buSs_ +; + +314 i( + gHrs +:: +hasVue +( +buWkM_ +)) { + +315 +doc +["buWkM"] = +buWkM_ +; + +317 i( + gHrs +:: +hasVue +( +htWkM_ +)) { + +318 +doc +["htWkM"] = +htWkM_ +; + +320 i( + gHrs +:: +hasVue +( +rviCode_ +)) { + +321 +doc +["rviCode"] = +rviCodeCh_ +; + +322 + gdoc +["rviCodeNumb"] = +rviCode_ +; + +326 i(! + gdoc +. +isNu +()) { + +327 + gMq +:: +publish +( +F +("bo_da"), +doc +); + +332 +bo + + gBo +:: +upded_vues +() { + +333 i( +chged_ +) { + +334 +chged_ + = +l +; + +335  + gue +; + +337  + gl +; + +341  + gBo +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +342 +EMSdevi +:: +show_vues +( +shl +); + +344 i( + gHrs +:: +hasVue +( +p_w_aive_ +, +EMS_VALUE_BOOL +)) { + +345 +t_vue +( +shl +, 2, +F +("Hف w"), +p_w_aive_ + ? F("running") : F("off")); + +348 i( + gHrs +:: +hasVue +( +htg_aive_ +, +EMS_VALUE_BOOL +)) { + +349 +t_vue +( +shl +, 2, +F +("C htg"), +htg_aive_ + ? F("active") : F("off")); + +352 +t_vue +( +shl +, 2, +F +("Wm Wived"), +wWAived_ +, +nuαr +, +EMS_VALUE_BOOL +); + +353 i( + gHrs +:: +hasVue +( +wWCcPumpTy_ +, +EMS_VALUE_BOOL +)) { + +354 +t_vue +( +shl +, 2, +F +("Wm W chggy"), +wWCcPumpTy_ + ? F("3-way valve") : F("chargeump")); + +356 +t_vue +( +shl +, 2, +F +("Wm W ccutiڅumavaab"), +wWCcPump_ +, +nuαr +, +EMS_VALUE_BOOL +); + +358 i( + gHrs +:: +hasVue +( +wWCcPumpMode_ +)) { + +359 i( +wWCcPumpMode_ + == 7) { + +360 +t_vue +( +shl +, 2, +F +("Warm Water circulationump freq"), F("continuous")); + +362  + gs +[7]; + +363  + gbufr +[2]; + +364 + gbufr +[0] = ( +wWCcPumpMode_ + % 10) + '0'; + +365 + gbufr +[1] = '\0'; + +366 +y +( +s +, +bufr +, 7); + +367 +t +( +s +, "x3min", 7); + +368 +t_vue +( +shl +, 2, +F +("Wm W ccutiڅumeq"), +s +); + +372 +t_vue +( +shl +, 2, +F +("Wm W ccutiڇive"), +wWCc_ +, +nuαr +, +EMS_VALUE_BOOL +); + +374 i( + gwWComft_ + == 0x00) { + +375 +t_vue +( +shl +, 2, +F +("Warm Water comfort setting"), F("Hot")); + +376 } i( + gwWComft_ + == 0xD8) { + +377 +t_vue +( +shl +, 2, +F +("Warm Water comfort setting"), F("Eco")); + +378 } i( + gwWComft_ + == 0xEC) { + +379 +t_vue +( +shl +, 2, +F +("Warm Water comfort setting"), F("Intelligent")); + +382 +t_vue +( +shl +, 2, +F +("Wm w mixemtu"), +wwMixTemtu_ +, +F_ +( +deges +), 10); + +383 +t_vue +( +shl +, 2, +F +("Wm w bufboemtu"), +wwBufrBoTemtu_ +, +F_ +( +deges +), 10); + +384 +t_vue +( +shl +, 2, +F +("Wm W disiځemtu"), +wWDisTemp_ +, +F_ +( +deges +)); + +385 +t_vue +( +shl +, 2, +F +("Wm W seedemtu"), +wWSTemp_ +, +F_ +( +deges +)); + +386 +t_vue +( +shl +, 2, +F +("Wm W semtu"), +wWSTmp_ +, +F_ +( +deges +)); + +387 +t_vue +( +shl +, 2, +F +("Wm W cumtu ()"), +wWCurTmp_ +, +F_ +( +deges +), 10); + +388 +t_vue +( +shl +, 2, +F +("Wm w stagmtu ()"), +wwStageTemp1_ +, +F_ +( +deges +), 10); + +389 +t_vue +( +shl +, 2, +F +("Wm W cumtu (ex)"), +wWCurTmp2_ +, +F_ +( +deges +), 10); + +390 +t_vue +( +shl +, 2, +F +("Wm w stagmtu (ex)"), +wwStageTemp2_ +, +F_ +( +deges +), 10); + +391 +t_vue +( +shl +, 2, +F +("Wm W cuw flow"), +wWCurFlow_ +, F("l/min"), 10); + +392 +t_vue +( +shl +, 2, +F +("Wm W # ss"), +wWSs_ +, +nuαr +); + +393 i( + gHrs +:: +hasVue +( +wWWkM_ +)) { + +394 +shl +. +tn +( +F +(" Wm Wivtime: %d day%d hour%d mus"), +wWWkM_ + / 1440, (wWWorkM_ % 1440) / 60, wWWorkM_ % 60); + +396 +t_vue +( +shl +, 2, +F +("Wm W chgg"), +wWHt_ +, +nuαr +, +EMS_VALUE_BOOL +); + +397 +t_vue +( +shl +, 2, +F +("Wm W disg"), +wWDisg_ +, +nuαr +, +EMS_VALUE_BOOL +); + +398 +t_vue +( +shl +, 2, +F +("Seed flowemtu"), +lFlowTemp_ +, +F_ +( +deges +)); + +399 +t_vue +( +shl +, 2, +F +("Cuowemtu"), +curFlowTemp_ +, +F_ +( +deges +), 10); + +400 +t_vue +( +shl +, 2, +F +("Max boemtu"), +boTemp_ +, +F_ +( +deges +), 10); + +401 +t_vue +( +shl +, 2, +F +("Ruemtu"), +tTemp_ +, +F_ +( +deges +), 10); + +402 +t_vue +( +shl +, 2, +F +("Gas"), +buGas_ +, +nuαr +, +EMS_VALUE_BOOL +); + +403 +t_vue +( +shl +, 2, +F +("Boump"), +htPmp_ +, +nuαr +, +EMS_VALUE_BOOL +); + +404 +t_vue +( +shl +, 2, +F +("F"), +nWk_ +, +nuαr +, +EMS_VALUE_BOOL +); + +405 +t_vue +( +shl +, 2, +F +("Igni"), +ignWk_ +, +nuαr +, +EMS_VALUE_BOOL +); + +407 +t_vue +( +shl +, 2, +F +("Bu seed maxow"), +lBuPow_ +, +F_ +( +r +)); + +408 +t_vue +( +shl +, 2, +F +("Bu cupow"), +curBuPow_ +, +F_ +( +r +)); + +409 +t_vue +( +shl +, 2, +F +("Fmcut"), +ameCu_ +, F("uA"), 10); + +410 +t_vue +( +shl +, 2, +F +("Syemssu"), +sysPss_ +, F("bar"), 10); + +411 i( + gHrs +:: +hasVue +( +rviCode_ +)) { + +412 +shl +. +tn +( +F +(" Syem svi code: %(%d)"), +rviCodeCh_ +, +rviCode_ +); + +413 } i( + grviCodeCh_ +[0] != '\0') { + +414 +t_vue +( +shl +, 2, +F +("Syem svi code"), +rviCodeCh_ +); + +418 +t_vue +( +shl +, 2, +F +("Htgemtu stg othbo"), +htg_mp_ +, +F_ +( +deges +)); + +419 +t_vue +( +shl +, 2, +F +("Bo ccuummoduti maxow"), +pump_mod_max_ +, +F_ +( +r +)); + +420 +t_vue +( +shl +, 2, +F +("Bo ccuummoduti mow"), +pump_mod_m_ +, +F_ +( +r +)); + +421 +t_vue +( +shl +, 2, +F +("Bo ccuumdayime"), +pumpDay_ +, F("min")); + +422 +t_vue +( +shl +, 2, +F +("Boemhyesi"), +boTemp__ +, +F_ +( +deges +)); + +423 +t_vue +( +shl +, 2, +F +("Boemhyesioff"), +boTemp_off_ +, +F_ +( +deges +)); + +424 +t_vue +( +shl +, 2, +F +("Bo bu miod"), +buPiod_ +, F("min")); + +425 +t_vue +( +shl +, 2, +F +("Bo bu mow"), +buPowm_ +, +F_ +( +r +)); + +426 +t_vue +( +shl +, 2, +F +("Bo bu maxow"), +buPowmax_ +, +F_ +( +r +)); + +429 +t_vue +( +shl +, 2, +F +("S Flowemtu"), +tFlowTemp_ +, +F_ +( +deges +)); + +430 +t_vue +( +shl +, 2, +F +("Bo bu sow"), +tBuPow_ +, +F_ +( +r +)); + +431 +t_vue +( +shl +, 2, +F +("Wm Wumpow"), +tWWPumpPow_ +, +F_ +( +r +)); + +434 i( + gHrs +:: +hasVue +( +extTemp_ +)) { + +435 +t_vue +( +shl +, 2, +F +("Outsidmtu"), +extTemp_ +, +F_ +( +deges +), 10); + +438 +t_vue +( +shl +, 2, +F +("Exhauemtu"), +exhauTemp_ +, +F_ +( +deges +), 10); + +439 +t_vue +( +shl +, 2, +F +("Pummoduti"), +pumpMod_ +, +F_ +( +r +)); + +440 +t_vue +( +shl +, 2, +F +("HPummoduti"), +pumpMod2_ +, +F_ +( +r +)); + +441 +t_vue +( +shl +, 2, +F +("Bu # ss"), +buSs_ +, +nuαr +); + +442 i( + gHrs +:: +hasVue +( +buWkM_ +)) { + +443 +shl +. +tn +( +F +(" Tٮ bu otgime: %d day%d hour%d mus"), +buWkM_ + / 1440, (burnWorkMin_ % 1440) / 60, burnWorkMin_ % 60); + +445 i( + gHrs +:: +hasVue +( +htWkM_ +)) { + +446 +shl +. +tn +( +F +(" Tٮ hݔgime: %d day%d hour%d mus"), +htWkM_ + / 1440, (heatWorkMin_ % 1440) / 60, heatWorkMin_ % 60); + +448 i( + gHrs +:: +hasVue +( +UBAuime_ +)) { + +449 +shl +. +tn +( +F +(" Tٮ UBA wkgime: %d day%d hour%d mus"), +UBAuime_ + / 1440, (UBAuptime_ % 1440) / 60, UBAuptime_ % 60); + +452 + gshl +. +n +(); + +459  + gBo +:: +check_aive +() { + +462 i( +Hrs +:: +hasVue +( +wWCurFlow_ +&& Hrs::hasVue( +buGas_ +)) { + +463 +p_w_aive_ + = (( +wWCurFlow_ + !0&& ( +buGas_ + ! +EMS_VALUE_BOOL_OFF +)); + +464 + gEMSESP +:: +p_w_aive +( +p_w_aive_ +); + +469 i( + gHrs +:: +hasVue +( +lFlowTemp_ +&& +Hrs +::hasVue( +buGas_ +)) { + +470 +htg_aive_ + = (! +p_w_aive_ + && (( +lFlowTemp_ + > +EMS_BOILER_SELFLOWTEMP_HEATING +&& ( +buGas_ + ! +EMS_VALUE_BOOL_OFF +))); + +475 i( + gHrs +:: +hasVue +( +p_w_aive_ +, +EMS_VALUE_BOOL +&& Hrs::hasVue( +htg_aive_ +, EMS_VALUE_BOOL)) { + +476 +ut8_t + + gϋ_boS + = ( +p_w_aive_ + << 1+ +htg_aive_ +; + +477 i( + gϋ_boS + ! +ϡ_boS +) { + +478 +ϡ_boS + = +ϋ_boS +; + +479 + gMq +:: +publish +( +F +("pw_aive"), +p_w_aive_ +); + +480 + gMq +:: +publish +( +F +("htg_aive"), +htg_aive_ +); + +486  + gBo +:: +oss_UBAPamWW +( +d +:: +shed_r + +gm +) { + +487 +chged_ + | +gm +-> +ad_vue +( +wWAived_ +, 1); + +488 + gchged_ + | +gm +-> +ad_vue +( +wWCcPump_ +, 6); + +489 + gchged_ + | +gm +-> +ad_vue +( +wWCcPumpMode_ +, 7); + +490 + gchged_ + | +gm +-> +ad_vue +( +wWCcPumpTy_ +, 10); + +491 + gchged_ + | +gm +-> +ad_vue +( +wWSTemp_ +, 2); + +492 + gchged_ + | +gm +-> +ad_vue +( +wWDisTemp_ +, 8); + +493 + gchged_ + | +gm +-> +ad_vue +( +wWComft_ +, 9); + +497  + gBo +:: +oss_UBAMڙFa +( +d +:: +shed_r + +gm +) { + +498 +chged_ + | +gm +-> +ad_vue +( +lFlowTemp_ +, 0); + +499 + gchged_ + | +gm +-> +ad_vue +( +curFlowTemp_ +, 1); + +500 + gchged_ + | +gm +-> +ad_vue +( +lBuPow_ +, 3); + +501 + gchged_ + | +gm +-> +ad_vue +( +curBuPow_ +, 4); + +503 + gchged_ + | +gm +-> +ad_bvue +( +buGas_ +, 7, 0); + +504 + gchged_ + | +gm +-> +ad_bvue +( +nWk_ +, 7, 2); + +505 + gchged_ + | +gm +-> +ad_bvue +( +ignWk_ +, 7, 3); + +506 + gchged_ + | +gm +-> +ad_bvue +( +htPmp_ +, 7, 5); + +507 + gchged_ + | +gm +-> +ad_bvue +( +wWHt_ +, 7, 6); + +508 + gchged_ + | +gm +-> +ad_bvue +( +wWCc_ +, 7, 7); + +512 + gchged_ + | +gm +-> +ad_vue +( +wwStageTemp1_ +, 9); + +513 + gchged_ + | +gm +-> +ad_vue +( +wwStageTemp2_ +, 11); + +515 + gchged_ + | +gm +-> +ad_vue +( +tTemp_ +, 13); + +516 + gchged_ + | +gm +-> +ad_vue +( +ameCu_ +, 15); + +517 + gchged_ + | +gm +-> +ad_vue +( +rviCode_ +, 20); + +520 + gchged_ + | +gm +-> +ad_vue +( +sysPss_ +, 17); + +523 i(( + ggm +-> + gmesge_ngth + > 18&& (gm-> + gofft + == 0)) { + +524 +chged_ + | +gm +-> +ad_vue +( +rviCodeCh_ +[0], 18); + +525 + gchged_ + | +gm +-> +ad_vue +( +rviCodeCh_ +[1], 19); + +526 + grviCodeCh_ +[2] = '\0'; + +530 +check_aive +(); + +537  + gBo +:: +oss_UBATٮUime +( +d +:: +shed_r + +gm +) { + +538 +chged_ + | +gm +-> +ad_vue +( +UBAuime_ +, 0, 3); + +544  + gBo +:: +oss_UBAPams +( +d +:: +shed_r + +gm +) { + +545 +chged_ + | +gm +-> +ad_vue +( +htg_mp_ +, 1); + +546 + gchged_ + | +gm +-> +ad_vue +( +buPowmax_ +, 2); + +547 + gchged_ + | +gm +-> +ad_vue +( +buPowm_ +, 3); + +548 + gchged_ + | +gm +-> +ad_vue +( +boTemp_off_ +, 4); + +549 + gchged_ + | +gm +-> +ad_vue +( +boTemp__ +, 5); + +550 + gchged_ + | +gm +-> +ad_vue +( +buPiod_ +, 6); + +551 + gchged_ + | +gm +-> +ad_vue +( +pumpDay_ +, 8); + +552 + gchged_ + | +gm +-> +ad_vue +( +pump_mod_max_ +, 9); + +553 + gchged_ + | +gm +-> +ad_vue +( +pump_mod_m_ +, 10); + +560  + gBo +:: +oss_UBAMڙWW +( +d +:: +shed_r + +gm +) { + +561 +chged_ + | +gm +-> +ad_vue +( +wWSTmp_ +, 0); + +562 + gchged_ + | +gm +-> +ad_vue +( +wWCurTmp_ +, 1); + +563 + gchged_ + | +gm +-> +ad_vue +( +wWCurTmp2_ +, 3); + +564 + gchged_ + | +gm +-> +ad_vue +( +wWCurFlow_ +, 9); + +566 + gchged_ + | +gm +-> +ad_vue +( +wWWkM_ +, 10, 3); + +567 + gchged_ + | +gm +-> +ad_vue +( +wWSs_ +, 13, 3); + +569 + gchged_ + | +gm +-> +ad_bvue +( +wWOTime_ +, 5, 1); + +570 + gchged_ + | +gm +-> +ad_bvue +( +wWDisg_ +, 5, 2); + +571 + gchged_ + | +gm +-> +ad_bvue +( +wWRdess_ +, 5, 3); + +572 + gchged_ + | +gm +-> +ad_bvue +( +wWRechgg_ +, 5, 4); + +573 + gchged_ + | +gm +-> +ad_bvue +( +wWTemtuOK_ +, 5, 5); + +580  + gBo +:: +oss_UBAMڙFaPlus +( +d +:: +shed_r + +gm +) { + +581 +chged_ + | +gm +-> +ad_vue +( +lFlowTemp_ +, 6); + +582 + gchged_ + | +gm +-> +ad_bvue +( +buGas_ +, 11, 0); + +583 + gchged_ + | +gm +-> +ad_bvue +( +wWHt_ +, 11, 2); + +584 + gchged_ + | +gm +-> +ad_vue +( +curBuPow_ +, 10); + +585 + gchged_ + | +gm +-> +ad_vue +( +lBuPow_ +, 9); + +586 + gchged_ + | +gm +-> +ad_vue +( +curFlowTemp_ +, 7); + +587 + gchged_ + | +gm +-> +ad_vue +( +ameCu_ +, 19); + +590 i(( + ggm +-> + gmesge_ngth + > 4&& (gm-> + gofft + == 0)) { + +591 +chged_ + | +gm +-> +ad_vue +( +rviCodeCh_ +[0], 4); + +592 + gchged_ + | +gm +-> +ad_vue +( +rviCodeCh_ +[1], 5); + +593 + grviCodeCh_ +[2] = '\0'; + +597 +check_aive +(); + +607  + gBo +:: +oss_UBAMڙSlow +( +d +:: +shed_r + +gm +) { + +608 +chged_ + | +gm +-> +ad_vue +( +extTemp_ +, 0); + +609 + gchged_ + | +gm +-> +ad_vue +( +boTemp_ +, 2); + +610 + gchged_ + | +gm +-> +ad_vue +( +exhauTemp_ +, 4); + +611 + gchged_ + | +gm +-> +ad_vue +( +swchTemp_ +, 25); + +612 + gchged_ + | +gm +-> +ad_vue +( +pumpMod_ +, 9); + +613 + gchged_ + | +gm +-> +ad_vue +( +buSs_ +, 10, 3); + +614 + gchged_ + | +gm +-> +ad_vue +( +buWkM_ +, 13, 3); + +615 + gchged_ + | +gm +-> +ad_vue +( +htWkM_ +, 19, 3); + +621  + gBo +:: +oss_UBAMڙSlowPlus2 +( +d +:: +shed_r + +gm +) { + +622 +chged_ + | +gm +-> +ad_vue +( +pumpMod2_ +, 13); + +628  + gBo +:: +oss_UBAMڙSlowPlus +( +d +:: +shed_r + +gm +) { + +629 +chged_ + | +gm +-> +ad_bvue +( +nWk_ +, 2, 2); + +630 + gchged_ + | +gm +-> +ad_bvue +( +ignWk_ +, 2, 3); + +631 + gchged_ + | +gm +-> +ad_bvue +( +htPmp_ +, 2, 5); + +632 + gchged_ + | +gm +-> +ad_bvue +( +wWCc_ +, 2, 7); + +633 + gchged_ + | +gm +-> +ad_vue +( +buSs_ +, 10, 3); + +634 + gchged_ + | +gm +-> +ad_vue +( +buWkM_ +, 13, 3); + +635 + gchged_ + | +gm +-> +ad_vue +( +htWkM_ +, 19, 3); + +636 + gchged_ + | +gm +-> +ad_vue +( +pumpMod_ +, 25); + +641  + gBo +:: +oss_UBADHWStus +( +d +:: +shed_r + +gm +) { + +642 +chged_ + | +gm +-> +ad_vue +( +wWSTmp_ +, 0); + +643 + gchged_ + | +gm +-> +ad_vue +( +wWCurTmp_ +, 1); + +644 + gchged_ + | +gm +-> +ad_vue +( +wWCurTmp2_ +, 3); + +646 + gchged_ + | +gm +-> +ad_vue +( +wWWkM_ +, 17, 3); + +647 + gchged_ + | +gm +-> +ad_vue +( +wWSs_ +, 14, 3); + +649 + gchged_ + | +gm +-> +ad_bvue +( +wWOTime_ +, 12, 2); + +650 + gchged_ + | +gm +-> +ad_bvue +( +wWDisg_ +, 12, 3); + +651 + gchged_ + | +gm +-> +ad_bvue +( +wWRdess_ +, 12, 4); + +652 + gchged_ + | +gm +-> +ad_bvue +( +wWRechgg_ +, 13, 4); + +653 + gchged_ + | +gm +-> +ad_bvue +( +wWTemtuOK_ +, 13, 5); + +654 + gchged_ + | +gm +-> +ad_bvue +( +wWCcPump_ +, 13, 2); + +656 + gchged_ + | +gm +-> +ad_vue +( +wWAived_ +, 20); + +657 + gchged_ + | +gm +-> +ad_vue +( +wWSTemp_ +, 10); + +658 + gchged_ + | +gm +-> +ad_vue +( +wWDisTemp_ +, 9); + +664  + gBo +:: +oss_MC10Stus +( +d +:: +shed_r + +gm +) { + +665 +chged_ + | +gm +-> +ad_vue +( +wwMixTemtu_ +, 14); + +666 + gchged_ + | +gm +-> +ad_vue +( +wwBufrBoTemtu_ +, 18); + +672  + gBo +:: +oss_UBAOutdoTemp +( +d +:: +shed_r + +gm +) { + +673 +chged_ + | +gm +-> +ad_vue +( +extTemp_ +, 0); + +677  + gBo +:: +oss_UBASPots +( +d +:: +shed_r + +gm +) { + +678 +chged_ + | +gm +-> +ad_vue +( +tFlowTemp_ +, 0); + +679 + gchged_ + | +gm +-> +ad_vue +( +tBuPow_ +, 1); + +680 + gchged_ + | +gm +-> +ad_vue +( +tWWPumpPow_ +, 2); + +683 #agm +GCC + +dgnoic + +push + + +684 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +688  + gBo +:: +oss_UBAFgs +( +d +:: +shed_r + +gm +) { + +693  +Bo +:: +oss_UBAManStus +( +d +:: +shed_r + +gm +) { + +699  +Bo +:: +oss_UBAEMesge +( +d +:: +shed_r + +gm +) { + +703 #agm +GCC + +dgnoic + +p + + +706  +Bo +:: +oss_UBAManDa +( +d +:: +shed_r + +gm +) { + +709 i( +gm +-> +mesge_da +[0] == 3) { + +710 +LOG_WARNING +( +F +("Boiler has booted.")); + +720  + gBo +:: +t_wmw_mp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +721  + gv + = 0; + +722 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +726 +LOG_INFO +( +F +("Stg bo wm wemtu%d C"), +v +); + +727 +wre_commd +( +EMS_TYPE_UBAPamWW +, 2, +v +, EMS_TYPE_UBAParameterWW); + +728 +wre_commd +( +EMS_TYPE_UBAFgs +, 3, +v +, +EMS_TYPE_UBAPamWW +); + +732  + gBo +:: +t_ow_mp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +733  + gv + = 0; + +734 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +738 +LOG_INFO +( +F +("Stg bo flowemtu%d C"), +v +); + +739 +wre_commd +( +EMS_TYPE_UBASPots +, 0, +v +, EMS_TYPE_UBASetPoints); + +743  + gBo +:: +t_m_pow +(cڡ * +vue +, cڡ +t8_t + +id +) { + +744  + gv + = 0; + +745 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +748 +LOG_INFO +( +F +("Stg bo mow"), +v +); + +749 +wre_commd +( +EMS_TYPE_UBAPams +, 3, +v +, EMS_TYPE_UBAParameters); + +753  + gBo +:: +t_max_pow +(cڡ * +vue +, cڡ +t8_t + +id +) { + +754  + gv + = 0; + +755 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +759 +LOG_INFO +( +F +("Stg bo maxow%d C"), +v +); + +760 +wre_commd +( +EMS_TYPE_UBAPams +, 2, +v +, EMS_TYPE_UBAParameters); + +764  + gBo +:: +t_hy_ +(cڡ * +vue +, cڡ +t8_t + +id +) { + +765  + gv + = 0; + +766 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +770 +LOG_INFO +( +F +("Stg bo hyesiځ%d C"), +v +); + +771 +wre_commd +( +EMS_TYPE_UBAPams +, 5, +v +, EMS_TYPE_UBAParameters); + +775  + gBo +:: +t_hy_off +(cڡ * +vue +, cڡ +t8_t + +id +) { + +776  + gv + = 0; + +777 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +781 +LOG_INFO +( +F +("Stg bo hyesioft%d C"), +v +); + +782 +wre_commd +( +EMS_TYPE_UBAPams +, 4, +v +, EMS_TYPE_UBAParameters); + +786  + gBo +:: +t_bu_riod +(cڡ * +vue +, cڡ +t8_t + +id +) { + +787  + gv + = 0; + +788 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +792 +LOG_INFO +( +F +("Stg bu m.iod%d m"), +v +); + +793 +wre_commd +( +EMS_TYPE_UBAPams +, 6, +v +, EMS_TYPE_UBAParameters); + +797  + gBo +:: +t_pump_day +(cڡ * +vue +, cڡ +t8_t + +id +) { + +798  + gv + = 0; + +799 i(! + gHrs +:: +vue2numb +( +vue +, +v +)) { + +803 +LOG_INFO +( +F +("Stg boumday%d m"), +v +); + +804 +wre_commd +( +EMS_TYPE_UBAPams +, 8, +v +, EMS_TYPE_UBAParameters); + +809  + gBo +:: +t_wmw_mode +(cڡ * +vue +, cڡ +t8_t + +id +) { + +810 i( + gvue + = +nuαr +) { + +813 +ut8_t + + gt +; + +814 i( +rcmp +( +vue +, "hot") == 0) { + +815 +LOG_INFO +( +F +("Setting boiler warm watero Hot")); + +816 + gt + = 0x00; + +817 } i( +rcmp +( +vue +, "eco") == 0) { + +818 +LOG_INFO +( +F +("Setting boiler warm watero Eco")); + +819 + gt + = 0xD8; + +820 } i( +rcmp +( +vue +, "intelligent") == 0) { + +821 +LOG_INFO +( +F +("Setting boiler warm watero Intelligent")); + +822 + gt + = 0xEC; + +826 +wre_commd +( +EMS_TYPE_UBAPamWW +, 9, +t +, EMS_TYPE_UBAParameterWW); + +830  + gBo +:: +t_wmw_aived +(cڡ * +vue +, cڡ +t8_t + +id +) { + +831 +bo + + gv + = +l +; + +832 i(! + gHrs +:: +vue2bo +( +vue +, +v +)) { + +836 +LOG_INFO +( +F +("Stg bo wm w %s"), +v + ? "on" : "off"); + +839 +ut8_t + + gn +; + +840 i( + gEMSbus +:: +is_ht3 +()) { + +841 +n + = ( +v + ? 0x08 : 0x00); + +843 + gn + = ( +v + ? 0xFF : 0x00); + +845 +wre_commd +( +EMS_TYPE_UBAPamWW +, 1, +n +, EMS_TYPE_UBAParameterWW); + +850  + gBo +:: +t_pwmw_aived +(cڡ * +vue +, cڡ +t8_t + +id +) { + +851 +bo + + gv + = +l +; + +852 i(! + gHrs +:: +vue2bo +( +vue +, +v +)) { + +856 +LOG_INFO +( +F +("Stg wm w %s"), +v + ? "on" : "off"); + +857 +ut8_t + + gmesge_da +[ +EMS_MAX_TELEGRAM_MESSAGE_LENGTH +]; + +858  +ut8_t + + gi + = 0; i < ( + gmesge_da +); i++) { + +859 + gmesge_da +[ +i +] = 0x00; + +865 i(! + gv +) { + +867 + gmesge_da +[0] = 0x5A; + +868 + gmesge_da +[1] = 0x00; + +869 + gmesge_da +[3] = 0x64; + +870 + gmesge_da +[4] = 0xFF; + +874 + gmesge_da +[4] = 0x00; + +877 +wre_commd +( +EMS_TYPE_UBAFuniTe +, 0, +mesge_da +, (message_data), 0); + +883  + gBo +:: +t_wmw_ڑime +(cڡ * +vue +, cڡ +t8_t + +id +) { + +884 +bo + + gv + = +l +; + +885 i(! + gHrs +:: +vue2bo +( +vue +, +v +)) { + +889 +LOG_INFO +( +F +("Stg bo wm w OTimldg %s"), +v + ? "on" : "off"); + +890 +wre_commd +( +EMS_TYPE_UBAFgs +, 0, ( +v + ? 0x22 : 0x02), 0x18); + +895  + gBo +:: +t_wmw_ccuti +(cڡ * +vue +, cڡ +t8_t + +id +) { + +896 +bo + + gv + = +l +; + +897 i(! + gHrs +:: +vue2bo +( +vue +, +v +)) { + +901 +LOG_INFO +( +F +("Stg bo wm w ccuti %s"), +v + ? "on" : "off"); + +902 +wre_commd +( +EMS_TYPE_UBAFgs +, 1, ( +v + ? 0x22 : 0x02), 0x18); + +906  + gBo +:: +cse_commds +( +Shl + & +shl +,  +cڋxt +) { + +907 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +BOILER +, + +908 +CommdFgs +:: +ADMIN +, + +909 +ash_rg_ve +{ +F_ +( +ad +)}, + +910 +ash_rg_ve +{ +F_ +( +tyid_mdy +)}, + +911 [=]( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts +) { + +912 +ut16_t + +ty_id + = +Hrs +:: +hextot +( +gumts +. +t +(). +c_r +()); + +913 +EMSESP +:: +t_ad_id +( +ty_id +); + +914 +EMSESP +:: +nd_ad_que +( +ty_id +, +g_devi_id +()); + +917 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +BOILER +, + +918 +CommdFgs +:: +USER +, + +919 +ash_rg_ve +{ +F_ +( +show +)}, + +920 [&]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +)){ +show_vues +(shell); }); + +923 + gCse +:: +r_cuom_cڋxt +( +shl +, +cڋxt +); + + @src/devices/boiler.h + +19 #ide +EMSESP_BOILER_H + + +20  + #EMSESP_BOILER_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~ + +29  + ~"emsdevi.h +" + +30  + ~"gm.h +" + +31  + ~"em.h +" + +32  + ~"hrs.h +" + +33  + ~"mq.h +" + +35 +mea + + gem + { + +37 as + cBo + : +public + +EMSdevi + { + +38 +public +: + +39 +Bo +( +ut8_t + +devi_ty +, +t8_t + +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +41 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +42 +vtu +  +publish_vues +(); + +43 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +44 +vtu + +bo + +upded_vues +(); + +45 +vtu +  +add_cڋxt_mu +(); + +47 + give +: + +48  +uuid +:: +log +:: +Logg + +logg_ +; + +50  +cse_commds +( +Shl + & +shl +,  +cڋxt +); + +51  +gi_mq_ha_cfig +(); + +52  +check_aive +(); + +54 +ut8_t + + gϡ_boS + = 0xFF; + +55 +ut8_t + + gmq_fm_ +; + +56 +bo + + gchged_ + = +l +; + +58  +cڡex + +ut8_t + + gEMS_TYPE_UBAPamWW + = 0x33; + +59  +cڡex + +ut8_t + + gEMS_TYPE_UBAFuniTe + = 0x1D; + +60  +cڡex + +ut8_t + + gEMS_TYPE_UBAFgs + = 0x35; + +61  +cڡex + +ut8_t + + gEMS_TYPE_UBASPots + = 0x1A; + +62  +cڡex + +ut8_t + + gEMS_TYPE_UBAPams + = 0x16; + +64  +cڡex + +ut8_t + + gEMS_BOILER_SELFLOWTEMP_HEATING + = 20; + +67 +ut8_t + + gwWAived_ + = +EMS_VALUE_BOOL_NOTSET +; + +68 +ut8_t + + gwWSTemp_ + = +EMS_VALUE_UINT_NOTSET +; + +69 +ut8_t + + gwWCcPump_ + = +EMS_VALUE_BOOL_NOTSET +; + +70 +ut8_t + + gwWCcPumpMode_ + = +EMS_VALUE_UINT_NOTSET +; + +71 +ut8_t + + gwWCcPumpTy_ + = +EMS_VALUE_BOOL_NOTSET +; + +72 +ut8_t + + gwWDisTemp_ + = +EMS_VALUE_UINT_NOTSET +; + +73 +ut8_t + + gwWComft_ + = +EMS_VALUE_UINT_NOTSET +; + +76 +ut16_t + + gwwMixTemtu_ + = +EMS_VALUE_USHORT_NOTSET +; + +77 +ut16_t + + gwwBufrBoTemtu_ + = +EMS_VALUE_USHORT_NOTSET +; + +80 +ut8_t + + glFlowTemp_ + = +EMS_VALUE_UINT_NOTSET +; + +81 +ut16_t + + gcurFlowTemp_ + = +EMS_VALUE_USHORT_NOTSET +; + +82 +ut16_t + + gwwStageTemp1_ + = +EMS_VALUE_USHORT_NOTSET +; + +83 +ut16_t + + gwwStageTemp2_ + = +EMS_VALUE_USHORT_NOTSET +; + +84 +ut16_t + + gtTemp_ + = +EMS_VALUE_USHORT_NOTSET +; + +85 +ut8_t + + gbuGas_ + = +EMS_VALUE_BOOL_NOTSET +; + +86 +ut8_t + + gnWk_ + = +EMS_VALUE_BOOL_NOTSET +; + +87 +ut8_t + + gignWk_ + = +EMS_VALUE_BOOL_NOTSET +; + +88 +ut8_t + + ghtPmp_ + = +EMS_VALUE_BOOL_NOTSET +; + +89 +ut8_t + + gwWHt_ + = +EMS_VALUE_BOOL_NOTSET +; + +90 +ut8_t + + gwWCc_ + = +EMS_VALUE_BOOL_NOTSET +; + +91 +ut8_t + + glBuPow_ + = +EMS_VALUE_UINT_NOTSET +; + +92 +ut8_t + + gcurBuPow_ + = +EMS_VALUE_UINT_NOTSET +; + +93 +ut16_t + + gameCu_ + = +EMS_VALUE_USHORT_NOTSET +; + +94 +ut8_t + + gsysPss_ + = +EMS_VALUE_UINT_NOTSET +; + +95  + grviCodeCh_ +[3] = {'\0'}; + +96 +ut16_t + + grviCode_ + = +EMS_VALUE_USHORT_NOTSET +; + +99 +t16_t + + gextTemp_ + = +EMS_VALUE_SHORT_NOTSET +; + +100 +ut16_t + + gboTemp_ + = +EMS_VALUE_USHORT_NOTSET +; + +101 +ut16_t + + gexhauTemp_ + = +EMS_VALUE_USHORT_NOTSET +; + +102 +ut8_t + + gpumpMod_ + = +EMS_VALUE_UINT_NOTSET +; + +103 +ut32_t + + gbuSs_ + = +EMS_VALUE_ULONG_NOTSET +; + +104 +ut32_t + + gbuWkM_ + = +EMS_VALUE_ULONG_NOTSET +; + +105 +ut32_t + + ghtWkM_ + = +EMS_VALUE_ULONG_NOTSET +; + +106 +ut16_t + + gswchTemp_ + = +EMS_VALUE_USHORT_NOTSET +; + +109 +ut8_t + + gwWSTmp_ + = +EMS_VALUE_UINT_NOTSET +; + +110 +ut16_t + + gwWCurTmp_ + = +EMS_VALUE_USHORT_NOTSET +; + +111 +ut16_t + + gwWCurTmp2_ + = +EMS_VALUE_USHORT_NOTSET +; + +112 +ut32_t + + gwWSs_ + = +EMS_VALUE_ULONG_NOTSET +; + +113 +ut32_t + + gwWWkM_ + = +EMS_VALUE_ULONG_NOTSET +; + +114 +ut8_t + + gwWOTime_ + = +EMS_VALUE_BOOL_NOTSET +; + +115 +ut8_t + + gwWDisg_ + = +EMS_VALUE_BOOL_NOTSET +; + +116 +ut8_t + + gwWRdess_ + = +EMS_VALUE_BOOL_NOTSET +; + +117 +ut8_t + + gwWRechgg_ + = +EMS_VALUE_BOOL_NOTSET +; + +118 +ut8_t + + gwWTemtuOK_ + = +EMS_VALUE_BOOL_NOTSET +; + +119 +ut8_t + + gwWCurFlow_ + = +EMS_VALUE_UINT_NOTSET +; + +122 +ut32_t + + gUBAuime_ + = +EMS_VALUE_ULONG_NOTSET +; + +125 +ut8_t + + ghtg_mp_ + = +EMS_VALUE_UINT_NOTSET +; + +126 +ut8_t + + gpump_mod_max_ + = +EMS_VALUE_UINT_NOTSET +; + +127 +ut8_t + + gpump_mod_m_ + = +EMS_VALUE_UINT_NOTSET +; + +128 +ut8_t + + gbuPowm_ + = +EMS_VALUE_UINT_NOTSET +; + +129 +ut8_t + + gbuPowmax_ + = +EMS_VALUE_UINT_NOTSET +; + +130 +t8_t + + gboTemp_off_ + = +EMS_VALUE_INT_NOTSET +; + +131 +t8_t + + gboTemp__ + = +EMS_VALUE_INT_NOTSET +; + +132 +ut8_t + + gbuPiod_ + = +EMS_VALUE_UINT_NOTSET +; + +133 +ut8_t + + gpumpDay_ + = +EMS_VALUE_UINT_NOTSET +; + +136 +ut8_t + + gtFlowTemp_ + = +EMS_VALUE_UINT_NOTSET +; + +137 +ut8_t + + gtBuPow_ + = +EMS_VALUE_UINT_NOTSET +; + +138 +ut8_t + + gtWWPumpPow_ + = +EMS_VALUE_UINT_NOTSET +; + +141 +ut8_t + + gp_w_aive_ + = +EMS_VALUE_BOOL_NOTSET +; + +142 +ut8_t + + ghtg_aive_ + = +EMS_VALUE_BOOL_NOTSET +; + +143 +ut8_t + + gpumpMod2_ + = +EMS_VALUE_UINT_NOTSET +; + +145  +oss_UBAPamWW +( +d +:: +shed_r + +gm +); + +146  +oss_UBAMڙFa +( +d +:: +shed_r + +gm +); + +147  +oss_UBATٮUime +( +d +:: +shed_r + +gm +); + +148  +oss_UBAPams +( +d +:: +shed_r + +gm +); + +149  +oss_UBAMڙWW +( +d +:: +shed_r + +gm +); + +150  +oss_UBAMڙFaPlus +( +d +:: +shed_r + +gm +); + +151  +oss_UBAMڙSlow +( +d +:: +shed_r + +gm +); + +152  +oss_UBAMڙSlowPlus +( +d +:: +shed_r + +gm +); + +153  +oss_UBAMڙSlowPlus2 +( +d +:: +shed_r + +gm +); + +154  +oss_UBAOutdoTemp +( +d +:: +shed_r + +gm +); + +155  +oss_UBASPots +( +d +:: +shed_r + +gm +); + +156  +oss_UBAFgs +( +d +:: +shed_r + +gm +); + +157  +oss_MC10Stus +( +d +:: +shed_r + +gm +); + +158  +oss_UBAManStus +( +d +:: +shed_r + +gm +); + +159  +oss_UBAManDa +( +d +:: +shed_r + +gm +); + +160  +oss_UBAEMesge +( +d +:: +shed_r + +gm +); + +161  +oss_UBADHWStus +( +d +:: +shed_r + +gm +); + +164  +t_wmw_mode +(cڡ * +vue +, cڡ +t8_t + +id +); + +165  +t_wmw_aived +(cڡ * +vue +, cڡ +t8_t + +id +); + +166  +t_pwmw_aived +(cڡ * +vue +, cڡ +t8_t + +id +); + +167  +t_wmw_ڑime +(cڡ * +vue +, cڡ +t8_t + +id +); + +168  +t_wmw_ccuti +(cڡ * +vue +, cڡ +t8_t + +id +); + +169  +t_wmw_mp +(cڡ * +vue +, cڡ +t8_t + +id +); + +170  +t_ow_mp +(cڡ * +vue +, cڡ +t8_t + +id +); + +171  +t_m_pow +(cڡ * +vue +, cڡ +t8_t + +id +); + +172  +t_max_pow +(cڡ * +vue +, cڡ +t8_t + +id +); + +173  +t_hy_ +(cڡ * +vue +, cڡ +t8_t + +id +); + +174  +t_hy_off +(cڡ * +vue +, cڡ +t8_t + +id +); + +175  +t_bu_riod +(cڡ * +vue +, cڡ +t8_t + +id +); + +176  +t_pump_day +(cڡ * +vue +, cڡ +t8_t + +id +); + + @src/devices/connect.cpp + +19  + ~"c.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +C +, +EMSdevi +:: +DeviTy +:: +CONNECT +); + +25 + guuid +:: +log +:: +Logg + +C +:: +logg_ +{ +F_ +( +c +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gC +:: +C +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +31  + gC +:: +devi_fo_web +( +JsAay + & +ro +) { + +34  +C +:: +add_cڋxt_mu +() { + +38  +C +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +43  +C +:: +publish_vues +() { + +47 +bo + +C +:: +upded_vues +() { + +48  +l +; + +52  + gC +:: +cse_commds +() { + + @src/devices/connect.h + +19 #ide +EMSESP_CONNECT_H + + +20  + #EMSESP_CONNECT_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"hrs.h +" + +30  + ~"mq.h +" + +32 +mea + + gem + { + +34 as + cC + : +public + +EMSdevi + { + +35 +public +: + +36 +C +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +38 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +39 +vtu +  +publish_vues +(); + +40 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +41 +vtu + +bo + +upded_vues +(); + +42 +vtu +  +add_cڋxt_mu +(); + +44 + give +: + +45  +uuid +:: +log +:: +Logg + +logg_ +; + +47  +cse_commds +(); + + @src/devices/controller.cpp + +19  + ~"cڌr.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Cڌr +, +EMSdevi +:: +DeviTy +:: +CONTROLLER +); + +25 + guuid +:: +log +:: +Logg + +Cڌr +:: +logg_ +{ +F_ +( +cڌr +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gCڌr +:: +Cڌr +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +31  + gCڌr +:: +add_cڋxt_mu +() { + +34  +Cڌr +:: +devi_fo_web +( +JsAay + & +ro +) { + +38  +Cڌr +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +43  +Cڌr +:: +publish_vues +() { + +47 +bo + +Cڌr +:: +upded_vues +() { + +48  +l +; + +52  + gCڌr +:: +cse_commds +() { + + @src/devices/controller.h + +19 #ide +EMSESP_CONTROLLER_H + + +20  + #EMSESP_CONTROLLER_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"hrs.h +" + +30  + ~"mq.h +" + +32 +mea + + gem + { + +34 as + cCڌr + : +public + +EMSdevi + { + +35 +public +: + +36 +Cڌr +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +38 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +39 +vtu +  +publish_vues +(); + +40 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +41 +vtu + +bo + +upded_vues +(); + +42 +vtu +  +add_cڋxt_mu +(); + +44 + give +: + +45  +uuid +:: +log +:: +Logg + +logg_ +; + +47  +cse_commds +(); + + @src/devices/gateway.cpp + +19  + ~"geway.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Geway +, +EMSdevi +:: +DeviTy +:: +GATEWAY +); + +25 + guuid +:: +log +:: +Logg + +Geway +:: +logg_ +{ +F_ +( +geway +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gGeway +:: +Geway +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +31  + gGeway +:: +add_cڋxt_mu +() { + +34  +Geway +:: +devi_fo_web +( +JsAay + & +ro +) { + +38  +Geway +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +39 +EMSdevi +:: +show_vues +( +shl +); + +43  + gGeway +:: +publish_vues +() { + +47 +bo + +Geway +:: +upded_vues +() { + +48  +l +; + +52  + gGeway +:: +cse_commds +() { + + @src/devices/gateway.h + +19 #ide +EMSESP_GATEWAY_H + + +20  + #EMSESP_GATEWAY_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"hrs.h +" + +30  + ~"mq.h +" + +32 +mea + + gem + { + +34 as + cGeway + : +public + +EMSdevi + { + +35 +public +: + +36 +Geway +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +38 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +39 +vtu +  +publish_vues +(); + +40 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +41 +vtu + +bo + +upded_vues +(); + +42 +vtu +  +add_cڋxt_mu +(); + +44 + give +: + +45  +uuid +:: +log +:: +Logg + +logg_ +; + +47  +cse_commds +(); + + @src/devices/heatpump.cpp + +19  + ~"hump.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Hump +, +EMSdevi +:: +DeviTy +:: +HEATPUMP +); + +25 + guuid +:: +log +:: +Logg + +Hump +:: +logg_ +{ +F_ +( +hump +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gHump +:: +Hump +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +29 +LOG_DEBUG +( +F +("Addgew HPummodu wh devi ID 0x%02X"), +devi_id +); + +32 +gi_gm_ty +(0x047B, +F +("HP1"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_HPMڙ1 +(t); }); + +33 +gi_gm_ty +(0x042B, +F +("HP2"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_HPMڙ2 +(t); }); + +37  + gHump +:: +add_cڋxt_mu +() { + +40  +Hump +:: +devi_fo_web +( +JsAay + & +ro +) { + +44  +Hump +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +49  +Hump +:: +publish_vues +() { + +53 +bo + +Hump +:: +upded_vues +() { + +54  +l +; + +58  + gHump +:: +cse_commds +() { + +61 #agm +GCC + +dgnoic + +push + + +62 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +68  +Hump +:: +oss_HPMڙ1 +( +d +:: +shed_r + +gm +) { + +76  +Hump +:: +oss_HPMڙ2 +( +d +:: +shed_r + +gm +) { + +80 #agm +GCC + +dgnoic + +p + + + @src/devices/heatpump.h + +19 #ide +EMSESP_HEATPUMP_H + + +20  + #EMSESP_HEATPUMP_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"hrs.h +" + +30  + ~"mq.h +" + +32 +mea + + gem + { + +34 as + cHump + : +public + +EMSdevi + { + +35 +public +: + +36 +Hump +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +38 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +39 +vtu +  +publish_vues +(); + +40 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +41 +vtu + +bo + +upded_vues +(); + +42 +vtu +  +add_cڋxt_mu +(); + +44 + give +: + +45  +uuid +:: +log +:: +Logg + +logg_ +; + +47  +cse_commds +(); + +49  +oss_HPMڙ1 +( +d +:: +shed_r + +gm +); + +50  +oss_HPMڙ2 +( +d +:: +shed_r + +gm +); + + @src/devices/mixing.cpp + +19  + ~"mixg.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Mixg +, +EMSdevi +:: +DeviTy +:: +MIXING +); + +25 + guuid +:: +log +:: +Logg + +Mixg +:: +logg_ +{ +F_ +( +mixg +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gMixg +:: +Mixg +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +29 +LOG_DEBUG +( +F +("Addgew Mixg modu wh devi ID 0x%02X"), +devi_id +); + +31 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_MMPLUS +) { + +32 i( +devi_id + <= 0x27) { + +34 +gi_gm_ty +( +devi_id + - 0x20 + 0x02D7, +F +("MMPLUSStusMesge_HC"), +ue +, [&]( +d +:: +shed_r + +t +) { + +35 +oss_MMPLUSStusMesge_HC +( +t +); + +39 +gi_gm_ty +( +devi_id + - 0x28 + 0x0331, +F +("MMPLUSStusMesge_WWC"), +ue +, [&]( +d +:: +shed_r + +t +) { + +40 +oss_MMPLUSStusMesge_WWC +( +t +); + +46 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_MM10 +) { + +47 +gi_gm_ty +(0x00AA, +F +("MMCfigMesge"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_MMCfigMesge +(t); }); + +48 +gi_gm_ty +(0x00AB, +F +("MMStusMesge"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_MMStusMesge +(t); }); + +49 +gi_gm_ty +(0x00AC, +F +("MMSMesge"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_MMSMesge +(t); }); + +53 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_IPM +) { + +54 +gi_gm_ty +(0x010C, +F +("IPMSMesge"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_IPMStusMesge +(t); }); + +59  + gMixg +:: +add_cڋxt_mu +() { + +63  +Mixg +:: +devi_fo_web +( +JsAay + & +ro +) { + +64 i( +ty_ + = +Ty +:: +NONE +) { + +68 i( + gty_ + = +Ty +:: +WWC +) { + +69 +nd_vue_js +( +ro +, "", +F +("Wm W Ccu"), +hc_ +, +nuαr +); + +70 +nd_vue_js +( +ro +, "", +F +("Cuwm wemtu"), +owTemp_ +, +F_ +( +deges +), 10); + +71 +nd_vue_js +( +ro +, "", +F +("Cupumus"), +pump_ +, +nuαr +); + +72 +nd_vue_js +( +ro +, "", +F +("Cumtu stus"), +us_ +, +nuαr +); + +74 +nd_vue_js +( +ro +, "", +F +("Htg Ccu"), +hc_ +, +nuαr +); + +75 +nd_vue_js +( +ro +, "", +F +("Cuowemtu"), +owTemp_ +, +F_ +( +deges +), 10); + +76 +nd_vue_js +( +ro +, "", +F +("Spoowemtu"), +owSTemp_ +, +F_ +( +deges +)); + +77 +nd_vue_js +( +ro +, "", +F +("Cupumus"), +pump_ +, +nuαr +, +EMS_VALUE_BOOL +); + +78 +nd_vue_js +( +ro +, "", +F +("Cuvvus"), +us_ +, +F_ +( +r +)); + +83 +bo + + gMixg +:: +upded_vues +() { + +84 i( +chged_ +) { + +85 +chged_ + = +l +; + +86  + gue +; + +88  + gl +; + +92  + gMixg +:: +cse_commds +() { + +96  +Mixg +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +97 +EMSdevi +:: +show_vues +( +shl +); + +99 i( + gty_ + = +Ty +:: +NONE +) { + +103 i( + gty_ + = +Ty +:: +WWC +) { + +104 +t_vue +( +shl +, 2, +F +("Wm W Ccu"), +hc_ +, +nuαr +); + +105 +t_vue +( +shl +, 4, +F +("Cuwm wemtu"), +owTemp_ +, +F_ +( +deges +), 10); + +106 +t_vue +( +shl +, 4, +F +("Cupumus"), +pump_ +, +nuαr +); + +107 +t_vue +( +shl +, 4, +F +("Cumtu stus"), +us_ +, +nuαr +); + +109 +t_vue +( +shl +, 2, +F +("Htg Ccu"), +hc_ +, +nuαr +); + +110 +t_vue +( +shl +, 4, +F +("Cuowemtu"), +owTemp_ +, +F_ +( +deges +), 10); + +111 +t_vue +( +shl +, 4, +F +("Spoowemtu"), +owSTemp_ +, +F_ +( +deges +)); + +112 +t_vue +( +shl +, 4, +F +("Cupumus"), +pump_ +, +nuαr +, +EMS_VALUE_BOOL +); + +113 +t_vue +( +shl +, 4, +F +("Cuvvus"), +us_ +, +F_ +( +r +)); + +117 + gshl +. +n +(); + +122  + gMixg +:: +publish_vues +() { + +123 +SticJsDocumt +< +EMSESP_MAX_JSON_SIZE_SMALL +> +doc +; + +124  + gs +[5]; + +126  + gty_ +) { + +127  + gTy +:: +HC +: + +128 +doc +["type"] = "hc"; + +129 i( + gHrs +:: +hasVue +( +owTemp_ +)) { + +130 +doc +["owTemp"] = () +owTemp_ + / 10; + +132 i( + gHrs +:: +hasVue +( +owSTemp_ +)) { + +133 +doc +["owSTemp"] = +owSTemp_ +; + +135 i( + gHrs +:: +hasVue +( +pump_ +)) { + +136 +doc +["pumpStus"] = +Hrs +:: +nd_vue +( +s +, +pump_ +, +EMS_VALUE_BOOL +); + +138 i( + gHrs +:: +hasVue +( +us_ +)) { + +139 +doc +["vveStus"] = +us_ +; + +142  + gTy +:: +WWC +: + +143 +doc +["type"] = "wwc"; + +144 i( + gHrs +:: +hasVue +( +owTemp_ +)) { + +145 +doc +["wwTemp"] = () +owTemp_ + / 10; + +147 i( + gHrs +:: +hasVue +( +pump_ +)) { + +148 +doc +["pumpStus"] = +pump_ +; + +150 i( + gHrs +:: +hasVue +( +us_ +)) { + +151 +doc +["mpStus"] = +us_ +; + +154  + gTy +:: +NONE +: + +159  + gtic +[30]; + +160 +y +( +tic +, "mixing_data", 30); + +161 +t +( +tic +, +Hrs +:: + +( +s +, +g_devi_id +() - 0x20 + 1), 30); + +162 + gMq +:: +publish +( +tic +, +doc +); + +168  + gMixg +:: +oss_MMPLUSStusMesge_HC +( +d +:: +shed_r + +gm +) { + +169 +ty_ + = +Ty +:: +HC +; + +170 + ghc_ + = +gm +-> +ty_id + - 0x02D7 + 1; + +171 + gchged_ + | +gm +-> +ad_vue +( +owTemp_ +, 3); + +172 + gchged_ + | +gm +-> +ad_vue +( +owSTemp_ +, 5); + +173 + gchged_ + | +gm +-> +ad_vue +( +pump_ +, 0); + +174 + gchged_ + | +gm +-> +ad_vue +( +us_ +, 2); + +180  + gMixg +:: +oss_MMPLUSStusMesge_WWC +( +d +:: +shed_r + +gm +) { + +181 +ty_ + = +Ty +:: +WWC +; + +182 + ghc_ + = +gm +-> +ty_id + - 0x0331 + 1; + +183 + gchged_ + | +gm +-> +ad_vue +( +owTemp_ +, 0); + +184 + gchged_ + | +gm +-> +ad_vue +( +pump_ +, 2); + +185 + gchged_ + | +gm +-> +ad_vue +( +us_ +, 11); + +191  + gMixg +:: +oss_IPMStusMesge +( +d +:: +shed_r + +gm +) { + +192 +ty_ + = +Ty +:: +HC +; + +193 + ghc_ + = +g_devi_id +() - 0x20 + 1; + +194 +ut8_t + + gismixed + = 0; + +195 + gchged_ + | +gm +-> +ad_vue +( +ismixed +, 0); + +196 i( + gismixed + == 0) { + +199 i( + gismixed + == 2) { + +200 +chged_ + | +gm +-> +ad_vue +( +owTemp_ +, 3); + +201 + gchged_ + | +gm +-> +ad_vue +( +owSTemp_ +, 5); + +202 + gchged_ + | +gm +-> +ad_vue +( +us_ +, 2); + +204 + gchged_ + | +gm +-> +ad_bvue +( +pump_ +, 1, 0); + +210  + gMixg +:: +oss_MMStusMesge +( +d +:: +shed_r + +gm +) { + +211 +ty_ + = +Ty +:: +HC +; + +216 + ghc_ + = +g_devi_id +() - 0x20 + 1; + +217 + gchged_ + | +gm +-> +ad_vue +( +owTemp_ +, 1); + +218 + gchged_ + | +gm +-> +ad_vue +( +pump_ +, 3); + +219 + gchged_ + | +gm +-> +ad_vue +( +owSTemp_ +, 0); + +220 + gchged_ + | +gm +-> +ad_vue +( +us_ +, 4); + +223 #agm +GCC + +dgnoic + +push + + +224 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +228  + gMixg +:: +oss_MMCfigMesge +( +d +:: +shed_r + +gm +) { + +229 +hc_ + = +g_devi_id +() - 0x20 + 1; + +236  + gMixg +:: +oss_MMSMesge +( +d +:: +shed_r + +gm +) { + +237 +hc_ + = +g_devi_id +() - 0x20 + 1; + +242 #agm +GCC + +dgnoic + +p + + + @src/devices/mixing.h + +19 #ide +EMSESP_MIXING_H + + +20  + #EMSESP_MIXING_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"hrs.h +" + +30  + ~"mq.h +" + +32 +mea + + gem + { + +34 as + cMixg + : +public + +EMSdevi + { + +35 +public +: + +36 +Mixg +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +38 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +39 +vtu +  +publish_vues +(); + +40 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +41 +vtu + +bo + +upded_vues +(); + +42 +vtu +  +add_cڋxt_mu +(); + +44 + give +: + +45  +uuid +:: +log +:: +Logg + +logg_ +; + +47  +cse_commds +(); + +49  +oss_MMPLUSStusMesge_HC +( +d +:: +shed_r + +gm +); + +50  +oss_MMPLUSStusMesge_WWC +( +d +:: +shed_r + +gm +); + +51  +oss_IPMStusMesge +( +d +:: +shed_r + +gm +); + +52  +oss_MMStusMesge +( +d +:: +shed_r + +gm +); + +53  +oss_MMCfigMesge +( +d +:: +shed_r + +gm +); + +54  +oss_MMSMesge +( +d +:: +shed_r + +gm +); + +56 as + cTy + { + +57 + gNONE +, + +58 + gHC +, + +59 + gWWC + + +62 + give +: + +63 +ut16_t + +hc_ + = +EMS_VALUE_USHORT_NOTSET +; + +64 +ut16_t + + gowTemp_ + = +EMS_VALUE_USHORT_NOTSET +; + +65 +ut8_t + + gpump_ + = +EMS_VALUE_UINT_NOTSET +; + +66 +t8_t + + gus_ + = +EMS_VALUE_UINT_NOTSET +; + +67 +ut8_t + + gowSTemp_ + = +EMS_VALUE_UINT_NOTSET +; + +68 +Ty + + gty_ + = Ty:: +NONE +; + +69 +bo + + gchged_ + = +l +; + + @src/devices/solar.cpp + +19  + ~"sެ.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Sެ +, +EMSdevi +:: +DeviTy +:: +SOLAR +); + +25 + guuid +:: +log +:: +Logg + +Sެ +:: +logg_ +{ +F_ +( +sެ +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gSެ +:: +Sެ +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +29 +LOG_DEBUG +( +F +("Addgew Sެ modu wh devi ID 0x%02X"), +devi_id +); + +32 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_SM10 +) { + +33 +gi_gm_ty +(0x0097, +F +("SM10Mڙ"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_SM10Mڙ +(t); }); + +36 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_SM100 +) { + +37 +gi_gm_ty +(0x0362, +F +("SM100Mڙ"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_SM100Mڙ +(t); }); + +38 +gi_gm_ty +(0x0363, +F +("SM100Mڙ2"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_SM100Mڙ2 +(t); }); + +39 +gi_gm_ty +(0x0366, +F +("SM100Cfig"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_SM100Cfig +(t); }); + +41 +gi_gm_ty +(0x0364, +F +("SM100Stus"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_SM100Stus +(t); }); + +42 +gi_gm_ty +(0x036A, +F +("SM100Stus2"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_SM100Stus2 +(t); }); + +43 +gi_gm_ty +(0x038E, +F +("SM100Ergy"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_SM100Ergy +(t); }); + +46 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_ISM +) { + +47 +gi_gm_ty +(0x0103, +F +("ISM1StusMesge"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_ISM1StusMesge +(t); }); + +48 +gi_gm_ty +(0x0101, +F +("ISM1S"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_ISM1S +(t); }); + +53  + gSެ +:: +add_cڋxt_mu +() { + +57  +Sެ +:: +devi_fo_web +( +JsAay + & +ro +) { + +58 +nd_vue_js +( +ro +, "", +F +("C܁emtu (TS1)"), +cTemp_ +, +F_ +( +deges +), 10); + +59 +nd_vue_js +( +ro +, "", +F +("Tk btomemtu (TS2)"), +nkBtomTemp_ +, +F_ +( +deges +), 10); + +60 +nd_vue_js +( +ro +, "", +F +("Tk btomemtu (TS5)"), +nkBtomTemp2_ +, +F_ +( +deges +), 10); + +61 +nd_vue_js +( +ro +, "", +F +("Hexchgemtu (TS6)"), +htExchgTemp_ +, +F_ +( +deges +), 10); + +62 +nd_vue_js +( +ro +, "", +F +("Sެummoduti (PS1)"), +sެPumpModuti_ +, +F_ +( +r +)); + +63 +nd_vue_js +( +ro +, "", +F +("Cyldummoduti (PS5)"), +cyldPumpModuti_ +, +F_ +( +r +)); + +64 +nd_vue_js +( +ro +, "", +F +("Vv(VS2衩us"), +vveStus_ +, +nuαr +, +EMS_VALUE_BOOL +); + +65 +nd_vue_js +( +ro +, "", +F +("Sެ Pum(PS1aive"), +sެPump_ +, +nuαr +, +EMS_VALUE_BOOL +); + +67 i( + gHrs +:: +hasVue +( +pumpWkM_ +)) { + +68 +JsObje + +daEmt +; + +69 + gdaEmt + = +ro +. +NeedObje +(); + +70 + gdaEmt +["me"] = +F +("Pump workingime"); + +71 + gd +:: +rg + +time_r +(60, '\0'); + +72 +tf_P +(& +time_r +[0],ime_r. +cy +(+ 1, +PSTR +("%d day%d hour%d mus"), +pumpWkM_ + / 1440, (pumpWorkMin_ % 1440) / 60,umpWorkMin_ % 60); + +73 + gdaEmt +["vue"] = +time_r +; + +76 +nd_vue_js +( +ro +, "", +F +("Tk Hd"), +nkHd_ +, +nuαr +, +EMS_VALUE_BOOL +); + +77 +nd_vue_js +( +ro +, "", +F +("C shutdown"), +cShutdown_ +, +nuαr +, +EMS_VALUE_BOOL +); + +79 +nd_vue_js +( +ro +, "", +F +("Ergya hour"), +gyLaHour_ +, +F_ +( +wh +), 10); + +80 +nd_vue_js +( +ro +, "", +F +("Ergyoday"), +gyToday_ +, +F_ +( +wh +)); + +81 +nd_vue_js +( +ro +, "", +F +("Ergyٮ"), +gyTٮ_ +, +F_ +( +kwh +), 10); + +85  + gSެ +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +86 +EMSdevi +:: +show_vues +( +shl +); + +88 +t_vue +( +shl +, 2, +F +("C܁emtu (TS1)"), +cTemp_ +, +F_ +( +deges +), 10); + +89 +t_vue +( +shl +, 2, +F +("Btomemtu (TS2)"), +nkBtomTemp_ +, +F_ +( +deges +), 10); + +90 +t_vue +( +shl +, 2, +F +("Btomemtu (TS5)"), +nkBtomTemp2_ +, +F_ +( +deges +), 10); + +91 +t_vue +( +shl +, 2, +F +("Hexchgemtu (TS6)"), +htExchgTemp_ +, +F_ +( +deges +), 10); + +92 +t_vue +( +shl +, 2, +F +("Sެummoduti (PS1)"), +sެPumpModuti_ +, +F_ +( +r +)); + +93 +t_vue +( +shl +, 2, +F +("Cyldummoduti (PS5)"), +cyldPumpModuti_ +, +F_ +( +r +)); + +94 +t_vue +( +shl +, 2, +F +("Vv(VS2衩us"), +vveStus_ +, +nuαr +, +EMS_VALUE_BOOL +); + +95 +t_vue +( +shl +, 2, +F +("Sެ Pum(PS1aive"), +sެPump_ +, +nuαr +, +EMS_VALUE_BOOL +); + +97 i( + gHrs +:: +hasVue +( +pumpWkM_ +)) { + +98 +shl +. +tn +( +F +(" Pumwkgime: %d day%d hour%d mus"), +pumpWkM_ + / 1440, (pumpWorkMin_ % 1440) / 60,umpWorkMin_ % 60); + +101 +t_vue +( +shl +, 2, +F +("Tk Hd"), +nkHd_ +, +nuαr +, +EMS_VALUE_BOOL +); + +102 +t_vue +( +shl +, 2, +F +("C shutdown"), +cShutdown_ +, +nuαr +, +EMS_VALUE_BOOL +); + +104 +t_vue +( +shl +, 2, +F +("Ergya hour"), +gyLaHour_ +, +F_ +( +wh +), 10); + +105 +t_vue +( +shl +, 2, +F +("Ergyoday"), +gyToday_ +, +F_ +( +wh +)); + +106 +t_vue +( +shl +, 2, +F +("Ergyٮ"), +gyTٮ_ +, +F_ +( +kwh +), 10); + +110  + gSެ +:: +publish_vues +() { + +111 +SticJsDocumt +< +EMSESP_MAX_JSON_SIZE_MEDIUM +> +doc +; + +113  + gs +[10]; + +115 i( + gHrs +:: +hasVue +( +cTemp_ +)) { + +116 +doc +["cTemp"] = () +cTemp_ + / 10; + +119 i( + gHrs +:: +hasVue +( +nkBtomTemp_ +)) { + +120 +doc +["nkBtomTemp"] = () +nkBtomTemp_ + / 10; + +123 i( + gHrs +:: +hasVue +( +nkBtomTemp2_ +)) { + +124 +doc +["nkBtomTemp2"] = () +nkBtomTemp2_ + / 10; + +127 i( + gHrs +:: +hasVue +( +htExchgTemp_ +)) { + +128 +doc +["htExchgTemp"] = () +htExchgTemp_ + / 10; + +131 i( + gHrs +:: +hasVue +( +sެPumpModuti_ +)) { + +132 +doc +["sެPumpModuti"] = +sެPumpModuti_ +; + +135 i( + gHrs +:: +hasVue +( +cyldPumpModuti_ +)) { + +136 +doc +["cyldPumpModuti"] = +cyldPumpModuti_ +; + +139 i( + gHrs +:: +hasVue +( +sެPump_ +, +EMS_VALUE_BOOL +)) { + +140 + gdoc +["sެPump"] = +Hrs +:: +nd_vue +( +s +, +sެPump_ +, +EMS_VALUE_BOOL +); + +143 i( + gHrs +:: +hasVue +( +vveStus_ +, +EMS_VALUE_BOOL +)) { + +144 + gdoc +["vveStus"] = +Hrs +:: +nd_vue +( +s +, +vveStus_ +, +EMS_VALUE_BOOL +); + +147 i( + gHrs +:: +hasVue +( +pumpWkM_ +)) { + +148 +doc +["pumpWkM"] = +pumpWkM_ +; + +151 i( + gHrs +:: +hasVue +( +nkHd_ +, +EMS_VALUE_BOOL +)) { + +152 + gdoc +["nkHd"] = +Hrs +:: +nd_vue +( +s +, +nkHd_ +, +EMS_VALUE_BOOL +); + +155 i( + gHrs +:: +hasVue +( +cShutdown_ +, +EMS_VALUE_BOOL +)) { + +156 + gdoc +["cShutdown"] = +Hrs +:: +nd_vue +( +s +, +cShutdown_ +, +EMS_VALUE_BOOL +); + +159 i( + gHrs +:: +hasVue +( +gyLaHour_ +)) { + +160 +doc +["gyLaHour"] = () +gyLaHour_ + / 10; + +163 i( + gHrs +:: +hasVue +( +gyToday_ +)) { + +164 +doc +["gyToday"] = +gyToday_ +; + +167 i( + gHrs +:: +hasVue +( +gyTٮ_ +)) { + +168 +doc +["gyTٮ"] = () +gyTٮ_ + / 10; + +172 i(! + gdoc +. +isNu +()) { + +173 + gMq +:: +publish +( +F +("sm_da"), +doc +); + +178 +bo + + gSެ +:: +upded_vues +() { + +179 i( +chged_ +) { + +180 +chged_ + = +l +; + +181  + gue +; + +183  + gl +; + +187  + gSެ +:: +cse_commds +() { + +191  +Sެ +:: +oss_SM10Mڙ +( +d +:: +shed_r + +gm +) { + +192 +chged_ + | +gm +-> +ad_vue +( +cTemp_ +, 2); + +193 + gchged_ + | +gm +-> +ad_vue +( +nkBtomTemp_ +, 5); + +194 + gchged_ + | +gm +-> +ad_vue +( +sެPumpModuti_ +, 4); + +195 + gchged_ + | +gm +-> +ad_bvue +( +sެPump_ +, 7, 1); + +196 + gchged_ + | +gm +-> +ad_vue +( +pumpWkM_ +, 8); + +210  + gSެ +:: +oss_SM100Mڙ +( +d +:: +shed_r + +gm +) { + +211 +chged_ + | +gm +-> +ad_vue +( +cTemp_ +, 0); + +212 + gchged_ + | +gm +-> +ad_vue +( +nkBtomTemp_ +, 2); + +213 + gchged_ + | +gm +-> +ad_vue +( +nkBtomTemp2_ +, 16); + +214 + gchged_ + | +gm +-> +ad_vue +( +htExchgTemp_ +, 20); + +217 #agm +GCC + +dgnoic + +push + + +218 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +222  + gSެ +:: +oss_SM100Mڙ2 +( +d +:: +shed_r + +gm +) { + +226 #agm +GCC + +dgnoic + +p + + +230  +Sެ +:: +oss_SM100Cfig +( +d +:: +shed_r + +gm +) { + +231 +chged_ + | +gm +-> +ad_vue +( +avaabyFg_ +, 0); + +232 + gchged_ + | +gm +-> +ad_vue +( +cfigFg_ +, 1); + +233 + gchged_ + | +gm +-> +ad_vue +( +urFg_ +, 2); + +242  + gSެ +:: +oss_SM100Stus +( +d +:: +shed_r + +gm +) { + +243 +ut8_t + +sެpumpmod + = +sެPumpModuti_ +; + +244 +ut8_t + + gcyldpumpmod + = +cyldPumpModuti_ +; + +245 + gchged_ + | +gm +-> +ad_vue +( +cyldPumpModuti_ +, 8); + +246 + gchged_ + | +gm +-> +ad_vue +( +sެPumpModuti_ +, 9); + +248 i( + gsެpumpmod + =0 && +sެPumpModuti_ + == 100) { + +249 +sެPumpModuti_ + = 15; + +252 i( + gcyldpumpmod + =0 && +cyldPumpModuti_ + == 100) { + +253 +cyldPumpModuti_ + = 15; + +255 + gchged_ + | +gm +-> +ad_bvue +( +nkHd_ +, 3, 1); + +256 + gchged_ + | +gm +-> +ad_bvue +( +cShutdown_ +, 3, 0); + +265  + gSެ +:: +oss_SM100Stus2 +( +d +:: +shed_r + +gm +) { + +266 +chged_ + | +gm +-> +ad_bvue +( +vveStus_ +, 4, 2); + +267 + gchged_ + | +gm +-> +ad_bvue +( +sެPump_ +, 10, 2); + +274  + gSެ +:: +oss_SM100Ergy +( +d +:: +shed_r + +gm +) { + +275 +chged_ + | +gm +-> +ad_vue +( +gyLaHour_ +, 0); + +276 + gchged_ + | +gm +-> +ad_vue +( +gyToday_ +, 4); + +277 + gchged_ + | +gm +-> +ad_vue +( +gyTٮ_ +, 8); + +284  + gSެ +:: +oss_ISM1StusMesge +( +d +:: +shed_r + +gm +) { + +285 +chged_ + | +gm +-> +ad_vue +( +cTemp_ +, 4); + +286 + gchged_ + | +gm +-> +ad_vue +( +nkBtomTemp_ +, 6); + +287 +ut16_t + + gWh + = 0xFFFF; + +288 + gchged_ + | +gm +-> +ad_vue +( +Wh +, 2); + +290 i( + gWh + != 0xFFFF) { + +291 +gyLaHour_ + = +Wh + * 10; + +294 + gchged_ + | +gm +-> +ad_bvue +( +sެPump_ +, 8, 0); + +295 + gchged_ + | +gm +-> +ad_vue +( +pumpWkM_ +, 10, 3); + +296 + gchged_ + | +gm +-> +ad_bvue +( +cShutdown_ +, 9, 0); + +297 + gchged_ + | +gm +-> +ad_bvue +( +nkHd_ +, 9, 2); + +303  + gSެ +:: +oss_ISM1S +( +d +:: +shed_r + +gm +) { + +304 +chged_ + | +gm +-> +ad_vue +( +ot_maxBtomTemp_ +, 6); + + @src/devices/solar.h + +19 #ide +EMSESP_SOLAR_H + + +20  + #EMSESP_SOLAR_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"hrs.h +" + +30  + ~"mq.h +" + +32 +mea + + gem + { + +34 as + cSެ + : +public + +EMSdevi + { + +35 +public +: + +36 +Sެ +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +38 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +39 +vtu +  +publish_vues +(); + +40 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +41 +vtu + +bo + +upded_vues +(); + +42 +vtu +  +add_cڋxt_mu +(); + +44 + give +: + +45  +uuid +:: +log +:: +Logg + +logg_ +; + +47  +cse_commds +(); + +49 +t16_t + + gcTemp_ + = +EMS_VALUE_SHORT_NOTSET +; + +50 +t16_t + + gnkBtomTemp_ + = +EMS_VALUE_SHORT_NOTSET +; + +51 +t16_t + + gnkBtomTemp2_ + = +EMS_VALUE_SHORT_NOTSET +; + +52 +t16_t + + ghtExchgTemp_ + = +EMS_VALUE_SHORT_NOTSET +; + +53 +ut8_t + + gsެPumpModuti_ + = +EMS_VALUE_UINT_NOTSET +; + +54 +ut8_t + + gcyldPumpModuti_ + = +EMS_VALUE_UINT_NOTSET +; + +55 +ut8_t + + gsެPump_ + = +EMS_VALUE_BOOL_NOTSET +; + +56 +ut8_t + + gvveStus_ + = +EMS_VALUE_BOOL_NOTSET +; + +57 +t16_t + + got_maxBtomTemp_ + = +EMS_VALUE_SHORT_NOTSET +; + +58 +ut32_t + + ggyLaHour_ + = +EMS_VALUE_ULONG_NOTSET +; + +59 +ut32_t + + ggyToday_ + = +EMS_VALUE_ULONG_NOTSET +; + +60 +ut32_t + + ggyTٮ_ + = +EMS_VALUE_ULONG_NOTSET +; + +61 +ut32_t + + gpumpWkM_ + = +EMS_VALUE_ULONG_NOTSET +; + +62 +ut8_t + + gnkHd_ + = +EMS_VALUE_BOOL_NOTSET +; + +63 +ut8_t + + gcShutdown_ + = +EMS_VALUE_BOOL_NOTSET +; + +65 +ut8_t + + gavaabyFg_ + = +EMS_VALUE_BOOL_NOTSET +; + +66 +ut8_t + + gcfigFg_ + = +EMS_VALUE_BOOL_NOTSET +; + +67 +ut8_t + + gurFg_ + = +EMS_VALUE_BOOL_NOTSET +; + +68 +bo + + gchged_ + = +l +; + +70  +oss_SM10Mڙ +( +d +:: +shed_r + +gm +); + +71  +oss_SM100Mڙ +( +d +:: +shed_r + +gm +); + +72  +oss_SM100Mڙ2 +( +d +:: +shed_r + +gm +); + +74  +oss_SM100Cfig +( +d +:: +shed_r + +gm +); + +76  +oss_SM100Stus +( +d +:: +shed_r + +gm +); + +77  +oss_SM100Stus2 +( +d +:: +shed_r + +gm +); + +78  +oss_SM100Ergy +( +d +:: +shed_r + +gm +); + +80  +oss_ISM1StusMesge +( +d +:: +shed_r + +gm +); + +81  +oss_ISM1S +( +d +:: +shed_r + +gm +); + + @src/devices/switch.cpp + +19  + ~"swch.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Swch +, +EMSdevi +:: +DeviTy +:: +SWITCH +); + +25 + guuid +:: +log +:: +Logg + +Swch +:: +logg_ +{ +F_ +(), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gSwch +:: +Swch +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +31  + gSwch +:: +add_cڋxt_mu +() { + +34  +Swch +:: +devi_fo_web +( +JsAay + & +ro +) { + +38  +Swch +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +43  +Swch +:: +publish_vues +() { + +47 +bo + +Swch +:: +upded_vues +() { + +48  +l +; + +52  + gSwch +:: +cse_commds +() { + + @src/devices/switch.h + +19 #ide +EMSESP_SWITCH_H + + +20  + #EMSESP_SWITCH_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"hrs.h +" + +30  + ~"mq.h +" + +32 +mea + + gem + { + +34 as + cSwch + : +public + +EMSdevi + { + +35 +public +: + +36 +Swch +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +38 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +39 +vtu +  +publish_vues +(); + +40 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +41 +vtu + +bo + +upded_vues +(); + +42 +vtu +  +add_cڋxt_mu +(); + +44 + give +: + +45  +uuid +:: +log +:: +Logg + +logg_ +; + +47  +cse_commds +(); + + @src/devices/thermostat.cpp + +19  + ~"thmo.h +" + +21 +mea + + gem + { + +23 +REGISTER_FACTORY +( +Thmo +, +EMSdevi +:: +DeviTy +:: +THERMOSTAT +); + +25 + guuid +:: +log +:: +Logg + +Thmo +:: +logg_ +{ +F_ +( +thmo +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gThmo +:: +Thmo +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +28 : +EMSdevi +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +) { + +29 +ut8_t + + gau_ma_thmo + = +EMSESP +:: +au_ma_thmo +(); + +30 +ut8_t + + gma_thmo + = +EMSESP_DEFAULT_MASTER_THERMOSTAT +; + +31 + gEMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +32 +ma_thmo + = +gs +.master_thermostat; + +35 +ut8_t + + gmod + = +this +-> +mod +(); + +40 i(( + gma_thmo + = +devi_id +) + +41 || (( +ma_thmo + = +EMSESP_DEFAULT_MASTER_THERMOSTAT +&& ( +devi_id + < 0x19) + +42 && (( +au_ma_thmo + = +EMSESP_DEFAULT_MASTER_THERMOSTAT +|| ( +devi_id + +rve_mem +(25); + +48 +gi_gm_ty +( +EMS_TYPE_RCOutdoTemp +, +F +("RCOutdoTemp"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RCOutdoTemp +(t); }); + +49 +gi_gm_ty +( +EMS_TYPE_RCTime +, +F +("RCTime"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RCTime +(t); }); + +52 i( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC10 +) { + +53 +mڙ_tyids + = {0xB1}; + +54 + gt_tyids + = {0xB0}; + +55  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +56 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("RC10Mڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC10Mڙ +(t); }); + +57 +gi_gm_ty +( +t_tyids +[ +i +], +F +("RC10S"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC10S +(t); }); + +61 } i(( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC35 +|| ( +mod + =EMSdevi:: +EMS_DEVICE_FLAG_RC30_1 +)) { + +62 +mڙ_tyids + = {0x3E, 0x48, 0x52, 0x5C}; + +63 + gt_tyids + = {0x3D, 0x47, 0x51, 0x5B}; + +64 + gtim_tyids + = {0x3F, 0x49, 0x53, 0x5D}; + +65  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +66 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("RC35Mڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC35Mڙ +(t); }); + +67 +gi_gm_ty +( +t_tyids +[ +i +], +F +("RC35S"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC35S +(t); }); + +69 +gi_gm_ty +( +EMS_TYPE_IBAStgs +, +F +("IBAStgs"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_IBAStgs +(t); }); + +70 +gi_gm_ty +( +EMS_TYPE_wwStgs +, +F +("WWStgs"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_RC35wwStgs +(t); }); + +73 } i( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC20 +) { + +74 +mڙ_tyids + = {0x91}; + +75 + gt_tyids + = {0xA8}; + +76 i( + gau_ma_thmo + = +devi_id +) { + +77  +ut8_t + +i + = 0; + gi + < + gmڙ_tyids +. +size +(); i++) { + +78 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("RC20Mڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC20Mڙ +(t); }); + +79 +gi_gm_ty +( +t_tyids +[ +i +], +F +("RC20S"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC20S +(t); }); + +82 +gi_gm_ty +(0xAF, +F +("RC20Reme"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC20Reme +(t); }); + +85 } i( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC20_2 +) { + +86 +mڙ_tyids + = {0xAE}; + +87 + gt_tyids + = {0xAD}; + +88 i( + gau_ma_thmo + = +devi_id +) { + +89  +ut8_t + +i + = 0; + gi + < + gmڙ_tyids +. +size +(); i++) { + +90 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("RC20Mڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC20Mڙ_2 +(t); }); + +91 +gi_gm_ty +( +t_tyids +[ +i +], +F +("RC20S"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC20S_2 +(t); }); + +94 +gi_gm_ty +(0xAF, +F +("RC20Reme"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC20Reme +(t); }); + +97 } i( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC30 +) { + +98 +mڙ_tyids + = {0x41}; + +99 + gt_tyids + = {0xA7}; + +100  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +101 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("RC30Mڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC30Mڙ +(t); }); + +102 +gi_gm_ty +( +t_tyids +[ +i +], +F +("RC30S"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC30S +(t); }); + +106 } i( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_EASY +) { + +107 +mڙ_tyids + = {0x0A}; + +108 + gt_tyids + = {}; + +109 +gi_gm_ty +( +mڙ_tyids +[0], +F +("EasyMڙ"), +ue +, [&]( +d +:: +shed_r + +t +{ +oss_EasyMڙ +(t); }); + +112 } i(( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC300 +|| ( +mod + =EMSdevi:: +EMS_DEVICE_FLAG_RC100 +)) { + +113 +mڙ_tyids + = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; + +114 + gt_tyids + = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; + +115  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +116 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("RC300Mڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC300Mڙ +(t); }); + +117 +gi_gm_ty +( +t_tyids +[ +i +], +F +("RC300S"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC300S +(t); }); + +119 +gi_gm_ty +(0x31D, +F +("RC300WWmode"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC300WWmode +(t); }); + +120 +gi_gm_ty +(0x31E, +F +("RC300WWmode"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_RC300WWmode +(t); }); + +123 } i( + gmod + = +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +) { + +124 +mڙ_tyids + = {0x016F, 0x0170, 0x0171, 0x0172}; + +125 + gt_tyids + = {0x0165, 0x0166, 0x0167, 0x0168}; + +126  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +127 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("JunksMڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_JunksMڙ +(t); }); + +128 +gi_gm_ty +( +t_tyids +[ +i +], +F +("JunksS"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_JunksS +(t); }); + +131 } i( + gmod + =( +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS + | EMSdevi:: +EMS_DEVICE_FLAG_JUNKERS_2 +)) { + +132 +mڙ_tyids + = {0x016F, 0x0170, 0x0171, 0x0172}; + +133 + gt_tyids + = {0x0179, 0x017A, 0x017B, 0x017C}; + +134  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +135 +gi_gm_ty +( +mڙ_tyids +[ +i +], +F +("JunksMڙ"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_JunksMڙ +(t); }); + +136 +gi_gm_ty +( +t_tyids +[ +i +], +F +("JunksS"), +l +, [&]( +d +:: +shed_r + +t +{ +oss_JunksS2 +(t); }); + +140 + gEMSESP +:: +e8266R +. +gMqStgsSvi +()-> +ad +([&]( +MqStgs + & +gs +) { + +141 +mq_fm_ + = +gs +. +mq_fm +; + +144 i( + gau_ma_thmo + ! +devi_id +) { + +145 +LOG_DEBUG +( +F +("Addgewhmo wh devi ID 0x%02X"), +devi_id +); + +148 +LOG_DEBUG +( +F +("Addgewhmo wh devi ID 0x%02X (ama)"), +devi_id +); + +149 +add_commds +(); + +152 + ghtg_ccus_ +. +rve +(4); + +156  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +157 + gEMSESP +:: +nd_ad_que +( +mڙ_tyids +[ +i +], +devi_id +); + +160  +ut8_t + + gi + = 0; i < + gt_tyids +. +size +(); i++) { + +161 + gEMSESP +:: +nd_ad_que +( +t_tyids +[ +i +], +devi_id +); + +166  + gThmo +:: +devi_fo_web +( +JsAay + & +ro +) { + +167 +ut8_t + +ags + = +this +-> +mod +(); + +169 cڡut& + ghc + : +htg_ccus_ +) { + +170 i(! +Hrs +:: +hasVue +( +hc +-> +ot_roomTemp +)) { + +175 +ut8_t + + gfm_ot +, + gfm_cu +; + +176  + gags +) { + +177  + gEMS_DEVICE_FLAG_EASY +: + +178 +fm_ot + = 100; + +179 + gfm_cu + = 100; + +181  + gEMS_DEVICE_FLAG_JUNKERS +: + +182 +fm_ot + = 10; + +183 + gfm_cu + = 10; + +186 +fm_ot + = 2; + +187 + gfm_cu + = 10; + +192 + gd +:: +rg + +hc_r +(5, '\0'); + +193 +tf_P +(& +hc_r +[0], hc_r. +cy +(+ 1, +PSTR +("hc%d: "), +hc +-> +hc_num +()); + +195 +nd_vue_js +( +ro +, +hc_r +, +F +("Curoomemtu"), +hc +-> +cu_roomTemp +, +F_ +( +deges +), +fm_cu +); + +196 +nd_vue_js +( +ro +, +hc_r +, +F +("Sporoomemtu"), +hc +-> +ot_roomTemp +, +F_ +( +deges +), +fm_ot +); + +197 i( + gHrs +:: +hasVue +( +hc +-> +mode +)) { + +198 +JsObje + +daEmt +; + +199 + gdaEmt + = +ro +. +NeedObje +(); + +200 + gd +:: +rg + +mode_r +(15, '\0'); + +201 +tf_P +(& +mode_r +[0], mode_r. +cy +(+ 1, +PSTR +("%sMode"), +hc_r +. +c_r +()); + +202 + gdaEmt +["me"] = +mode_r +; + +203 + gd +:: +rg + +mody_r +(20, '\0'); + +204 i( + gHrs +:: +hasVue +( +hc +-> +summ_mode +) && hc->summer_mode) { + +205 +tf_P +(& +mody_r +[0], mody_r. +cy +(+ 1, +PSTR +("%- summ"), +mode_torg +( +hc +-> +g_mode +( +ags +)). +c_r +()); + +206 } i( + gHrs +:: +hasVue +( +hc +-> +hiday_mode +) && hc->holiday_mode) { + +207 +tf_P +(& +mody_r +[0], mody_r. +cy +(+ 1, +PSTR +("%- hiday"), +mode_torg +( +hc +-> +g_mode +( +ags +)). +c_r +()); + +208 } i( + gHrs +:: +hasVue +( +hc +-> +mode_ty +)) { + +209 +tf_P +(& +mody_r +[0], + +210 +mody_r +. +cy +() + 1, + +211 +PSTR +("%s - %s"), + +212 +mode_torg +( +hc +-> +g_mode +( +ags +)). +c_r +(), + +213 +mode_torg +( +hc +-> +g_mode_ty +( +ags +)). +c_r +()); + +215 +tf_P +(& +mody_r +[0], mody_r. +cy +(+ 1, +mode_torg +( +hc +-> +g_mode +( +ags +)). +c_r +()); + +217 + gdaEmt +["vue"] = +mody_r +; + +223  + gThmo +:: +add_cڋxt_mu +() { + +225 i( +this +-> +g_devi_id +(! +EMSESP +:: +au_ma_thmo +()) { + +229 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +MAIN +, + +230 +CommdFgs +:: +USER +, + +231 +ash_rg_ve +{ +F_ +( +thmo +)}, + +232 [&]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +233 +Thmo +:: +cse_commds +( +shl +, +ShlCڋxt +:: +THERMOSTAT +); + +234 +add_cڋxt_commds +( +ShlCڋxt +:: +THERMOSTAT +); + +240 +bo + + gThmo +:: +upded_vues +() { + +242 i( +EMSESP +:: +au_ma_thmo +(! +this +-> +g_devi_id +()) { + +243  +l +; + +245 i( + gchged_ +) { + +246 + gchged_ + = +l +; + +247  + gue +; + +249  + gl +; + +253  + gThmo +:: +publish_vues +() { + +255 i( +EMSESP +:: +au_ma_thmo +(! +this +-> +g_devi_id +()) { + +259 +ut8_t + + gags + = +this +-> +mod +(); + +261 + gSticJsDocumt +< + gEMSESP_MAX_JSON_SIZE_MEDIUM +> + gdoc +; + +262 +JsObje + + groThmo + = +doc +. +to +(); + +263 +JsObje + + gdaThmo +; + +267 i( + gags + = +EMS_DEVICE_FLAG_RC35 + || +ags + = +EMS_DEVICE_FLAG_RC30_1 +) { + +268 i( +dime_ +. +size +()) { + +269 +roThmo +["time"] = +dime_ +. +c_r +(); + +271 i( + gHrs +:: +hasVue +( +damdoutdo܋mp_ +)) { + +272 +roThmo +["damdmp"] = +damdoutdo܋mp_ +; + +274 i( + gHrs +:: +hasVue +( +mpns1_ +)) { + +275 +roThmo +["emp1"] = () +mpns1_ + / 10; + +277 i( + gHrs +:: +hasVue +( +mpns2_ +)) { + +278 +roThmo +["emp2"] = () +mpns2_ + / 10; + +280 i( + gHrs +:: +hasVue +( +ibaCITemtu_ +)) { + +281 +roThmo +["tofft"] = () +ibaCITemtu_ + / 2; + +283 i( + gHrs +:: +hasVue +( +ibaMExtTemtu_ +)) { + +284 +roThmo +["mexemp"] = () +ibaMExtTemtu_ +; + +286 i( + gHrs +:: +hasVue +( +ibaBudgTy_ +)) { + +287 i( +ibaBudgTy_ + == 0) { + +288 +roThmo +["building"] = "light"; + +289 } i( + gibaBudgTy_ + == 1) { + +290 +roThmo +["building"] = "medium"; + +291 } i( + gibaBudgTy_ + == 2) { + +292 +roThmo +["building"] = "heavy"; + +295 i( + gHrs +:: +hasVue +( +wwMode_ +)) { + +296 i( +wwMode_ + == 0) { + +297 +roThmo +["wwmode"] = "off"; + +298 } i( + gwwMode_ + == 1) { + +299 +roThmo +["wwmode"] = "on"; + +300 } i( + gwwMode_ + == 2) { + +301 +roThmo +["wwmode"] = "auto"; + +306 i( + gmq_fm_ + ! +MQTT_fm +:: +NESTED +) { + +307 +Mq +:: +publish +( +F +("thmo_da"), +doc +); + +308 + groThmo + = +doc +. +to +< +JsObje +>(); + +313 +bo + + ghas_da + = +l +; + +314 cڡut& + ghc + : +htg_ccus_ +) { + +315 i( +hc +-> +is_aive +()) { + +316 +has_da + = +ue +; + +320 i(( + gmq_fm_ + = +MQTT_fm +:: +NESTED +|| ( +mq_fm_ + =MQTT_fm:: +HA +)) { + +321  +hc_me +[10]; + +322 +y +( +hc_me +, "hc", 10); + +323  + gs +[3]; + +324 +t +( +hc_me +, +Hrs +:: + +( +s +, +hc +-> +hc_num +()), 10); + +325 + gdaThmo + = +roThmo +. +NeedObje +( +hc_me +); + +327 + gdaThmo + = +roThmo +; + +331 +ut8_t + + got_mp_divid +; + +332 +ut8_t + + gcu_mp_divid +; + +333 i( + gags + = +EMS_DEVICE_FLAG_EASY +) { + +334 +ot_mp_divid + = 100; + +335 + gcu_mp_divid + = 100; + +336 } i( + gags + = +EMS_DEVICE_FLAG_JUNKERS +) { + +337 +ot_mp_divid + = 10; + +338 + gcu_mp_divid + = 10; + +340 + got_mp_divid + = 2; + +341 + gcu_mp_divid + = 10; + +344 i( + gHrs +:: +hasVue +( +hc +-> +ot_roomTemp +)) { + +345 +daThmo +["emp"] = +Hrs +:: +round2 +(() +hc +-> +ot_roomTemp + / +ot_mp_divid +); + +348 i( + gHrs +:: +hasVue +( +hc +-> +cu_roomTemp +)) { + +349 +daThmo +["cump"] = +Hrs +:: +round2 +(() +hc +-> +cu_roomTemp + / +cu_mp_divid +); + +352 i( + gHrs +:: +hasVue +( +hc +-> +daymp +)) { + +353 i( +ags + = +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +) { + +354 +daThmo +["hemp"] = () +hc +-> +daymp + / 2; + +356 + gdaThmo +["daymp"] = () +hc +-> +daymp + / 2; + +359 i( + gHrs +:: +hasVue +( +hc +-> +nighemp +)) { + +360 i( +ags + = +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +) { + +361 +daThmo +["ecemp"] = () +hc +-> +nighemp + / 2; + +363 + gdaThmo +["nighemp"] = () +hc +-> +nighemp + / 2; + +366 i( + gHrs +:: +hasVue +( +hc +-> +hidaymp +)) { + +367 +daThmo +["hidaymp"] = () +hc +-> +hidaymp + / 2; + +370 i( + gHrs +:: +hasVue +( +hc +-> +noomp +)) { + +371 +daThmo +["noomp"] = () +hc +-> +noomp + / 2; + +374 i( + gHrs +:: +hasVue +( +hc +-> +htgty +)) { + +375 +daThmo +["htgty"] = +hc +-> +htgty +; + +378 i( + gHrs +:: +hasVue +( +hc +-> +rgowmp +)) { + +379 +daThmo +["rgowmp"] = +hc +-> +rgowmp +; + +382 i( + gHrs +:: +hasVue +( +hc +-> +offemp +)) { + +383 +daThmo +["offemp"] = +hc +-> +offemp + / 2; + +386 i( + gHrs +:: +hasVue +( +hc +-> +desigemp +)) { + +387 +daThmo +["desigemp"] = +hc +-> +desigemp +; + +389 i( + gHrs +:: +hasVue +( +hc +-> +summmp +)) { + +390 +daThmo +["summmp"] = +hc +-> +summmp +; + +394 i(( + gHrs +:: +hasVue +( +hc +-> +mode +)|| ( +mq_fm_ + = +MQTT_fm +:: +HA +)) { + +395 +ut8_t + +hc_mode + = +hc +-> +g_mode +( +ags +); + +397 i( + gmq_fm_ + = +MQTT_fm +:: +HA +) { + +398 i(( +hc_mode + = +HtgCcu +:: +Mode +:: +MANUAL +|| (hc_mod=HtgCcu::Mode:: +DAY +)) { + +399 +hc_mode + = +HtgCcu +:: +Mode +:: +HEAT +; + +400 } i(( + ghc_mode + = +HtgCcu +:: +Mode +:: +NIGHT +|| ( +hc_mode + =HtgCcu::Mode:: +OFF +)) { + +401 +hc_mode + = +HtgCcu +:: +Mode +:: +OFF +; + +403 + ghc_mode + = +HtgCcu +:: +Mode +:: +AUTO +; + +406 + gdaThmo +["mode"] = +mode_torg +( +hc_mode +); + +411 i( + gHrs +:: +hasVue +( +hc +-> +summ_mode +) && hc->summer_mode) { + +412 +daThmo +["mody"] = +F +("summer"); + +413 } i( + gHrs +:: +hasVue +( +hc +-> +hiday_mode +) && hc->holiday_mode) { + +414 +daThmo +["mody"] = +F +("holiday"); + +415 } i( + gHrs +:: +hasVue +( +hc +-> +mode_ty +)) { + +416 +daThmo +["mody"] = +mode_torg +( +hc +-> +g_mode_ty +( +ags +)); + +422 i(( + gmq_fm_ + = +MQTT_fm +:: +SINGLE +|| ( +mq_fm_ + =MQTT_fm:: +CUSTOM +)) { + +423  +tic +[30]; + +424  + gs +[3]; + +425 +y +( +tic +, "thermostat_data", 30); + +426 +t +( +tic +, +Hrs +:: + +( +s +, +hc +-> +hc_num +()), 30); + +427 + gMq +:: +publish +( +tic +, +doc +); + +428 + groThmo + = +doc +. +to +< +JsObje +>(); + +429 } i( + gmq_fm_ + = +MQTT_fm +:: +HA +) { + +431 i(! +hc +-> +ha_gied +()) { + +432 +gi_mq_ha_cfig +( +hc +-> +hc_num +()); + +433 + ghc +-> +ha_gied +( +ue +); + +436 + gd +:: +rg + +tic +(100, '\0'); + +437 +tf_P +(& +tic +[0],ic. +cy +(+ 1, +PSTR +("homssit/ime/ems-e/hc%d/e"), +hc +-> +hc_num +()); + +438 + gMq +:: +publish +( +tic +, +doc +); + +443 i(! + ghas_da +) { + +448 i( + gmq_fm_ + = +MQTT_fm +:: +NESTED +) { + +449 +Mq +:: +publish +( +F +("thmo_da"), +doc +); + +455 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> Thmo:: +htg_ccu +(cڡ +ut8_t + +hc_num +) { + +457 i( +hc_num + = +AUTO_HEATING_CIRCUIT +) { + +458 cڡut& +htg_ccu + : +htg_ccus_ +) { + +459  +htg_ccu +; + +464 cڡut& + ghtg_ccu + : +htg_ccus_ +) { + +465 i( +htg_ccu +-> +hc_num +() == hc_num) { + +466  +htg_ccu +; + +470  + gnuαr +; + +476 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> Thmo:: +htg_ccu +( +d +::shed_r +gm +) { + +478 +ut8_t + +hc_num + = 0; + +479 +bo + + gtogg_ + = +l +; + +481  +ut8_t + + gi + = 0; i < + gmڙ_tyids +. +size +(); i++) { + +482 i( + gmڙ_tyids +[ +i +] = +gm +-> +ty_id +) { + +483 +hc_num + = +i + + 1; + +484 + gtogg_ + = +ue +; + +490 i( + ghc_num + == 0) { + +491  +ut8_t + +i + = 0; + gi + < + gt_tyids +. +size +(); i++) { + +492 i( + gt_tyids +[ +i +] = +gm +-> +ty_id +) { + +493 +hc_num + = +i + + 1; + +500 i( + ggm +-> + gc + >0x18 && +gm +-> +c + <= 0x1B) { + +501 +hc_num + = +gm +-> +c + - 0x17; + +505 i( + ghc_num + == 0) { + +506  +nuαr +; + +511 cڡut& + ghtg_ccu + : +htg_ccus_ +) { + +512 i( +htg_ccu +-> +hc_num +() == hc_num) { + +513  +htg_ccu +; + +518 aut + gw_hc + = +d +:: +make_shed +< +Thmo +:: +HtgCcu +>( +hc_num +); + +519 + ghtg_ccus_ +. +push_back +( +w_hc +); + +521 + gd +:: +st +( +htg_ccus_ +. +beg +(), htg_ccus_. +d +()); + +524 +togg_tch +( +mڙ_tyids +[ +hc_num + - 1], +togg_ +); + +526 i( + gt_tyids +. +size +()) { + +527 +togg_tch +( +t_tyids +[ +hc_num + - 1], +togg_ +); + +530  + ghtg_ccus_ +. +back +(); + +537  + gThmo +:: +gi_mq_ha_cfig +( +ut8_t + +hc_num +) { + +538 +SticJsDocumt +< +EMSESP_MAX_JSON_SIZE_MEDIUM +> +doc +; + +540 + gd +:: +rg + +hc_xt +(10, '\0'); + +541 +tf_P +(& +hc_xt +[0], hc_xt. +cy +(+ 1, +PSTR +("hc%d"), +hc_num +); + +542 + gdoc +["me"] = +hc_xt +; + +543 + gdoc +["uniq_id"] = +hc_xt +; + +546 + gd +:: +rg + +ro +(100, '\0'); + +547 +tf_P +(& +ro +[0],o. +cy +(+ 1, +PSTR +("homssit/ime/ems-e/hc%d"), +hc_num +); + +548 + gdoc +["~"] = +ro +; + +550 + gdoc +["mode_cmd_t"] = "~/cmd_mode"; + +551 + gdoc +["mode_stat_t"] = "~/state"; + +552 + gdoc +["temp_cmd_t"] = "~/cmd_temp"; + +553 + gdoc +["temp_stat_t"] = "~/state"; + +554 + gdoc +["curr_temp_t"] = "~/state"; + +556 + gd +:: +rg + +mode_r +(30, '\0'); + +557 +tf_P +(& +mode_r +[0], 30, +PSTR +("{{vue_js.hc%d.mode}}"), +hc_num +); + +558 + gdoc +["mode__l"] = +mode_r +; + +560 + gd +:: +rg + +emp_r +(30, '\0'); + +561 +tf_P +(& +emp_r +[0], 30, +PSTR +("{{vue_js.hc%d.emp}}"), +hc_num +); + +562 + gdoc +["mp__l"] = +emp_r +; + +564 + gd +:: +rg + +cump_r +(30, '\0'); + +565 +tf_P +(& +cump_r +[0], 30, +PSTR +("{{vue_js.hc%d.cump}}"), +hc_num +); + +566 + gdoc +["cu_mp_l"] = +cump_r +; + +568 + gdoc +["min_temp"] = "5"; + +569 + gdoc +["max_temp"] = "40"; + +570 + gdoc +["temp_step"] = "0.5"; + +572 +JsAay + + gmodes + = +doc +. +NeedAay +("modes"); + +573 +ut8_t + + gags + = +this +-> +mod +(); + +574 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC20_2 +) { + +575 +modes +. +add +("night"); + +576 + gmodes +. +add +("day"); + +577 } i(( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC300 +|| ( +ags + =EMSdevi:: +EMS_DEVICE_FLAG_RC100 +)) { + +578 +modes +. +add +("eco"); + +579 + gmodes +. +add +("comfort"); + +580 + gmodes +. +add +("auto"); + +581 } i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +) { + +582 +modes +. +add +("nofrost"); + +583 + gmodes +. +add +("eco"); + +584 + gmodes +. +add +("heat"); + +585 + gmodes +. +add +("auto"); + +587 + gmodes +. +add +("night"); + +588 + gmodes +. +add +("day"); + +589 + gmodes +. +add +("auto"); + +592 + gd +:: +rg + +tic +(100, '\0'); + +593 +tf_P +(& +tic +[0],ic. +cy +(+ 1, +PSTR +("homssit/ime/ems-e/hc%d/cfig"), +hc_num +); + +595 + gMq +:: +publish +( +tic +, +doc +, +ue +); + +598 +tf_P +(& +tic +[0],ic. +cy +(+ 1, +PSTR +("homssit/ime/ems-e/hc%d/cmd_mp"), +hc_num +); + +599 +gi_mq_tic +( +tic +, [&](cڡ * +m +{ +thmo_cmd_mp +(m); }); + +600 +tf_P +(& +tic +[0],ic. +cy +(+ 1, +PSTR +("homssit/ime/ems-e/hc%d/cmd_mode"), +hc_num +); + +601 +gi_mq_tic +( +tic +, [&](cڡ * +m +{ +thmo_cmd_mode +(m); }); + +606 +ut8_t + + gThmo +:: +HtgCcu +:: +g_mode +(ut8_ +ags +) const { + +607 i(! +Hrs +:: +hasVue +( +mode +)) { + +608  +HtgCcu +:: +Mode +:: +UNKNOWN +; + +611 + gags + &= 0x0F; + +613 i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC20 +) { + +614 i( +mode + == 0) { + +615  +HtgCcu +:: +Mode +:: +OFF +; + +616 } i( + gmode + == 1) { + +617  +HtgCcu +:: +Mode +:: +MANUAL +; + +618 } i( + gmode + == 2) { + +619  +HtgCcu +:: +Mode +:: +AUTO +; + +621 } i(( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_RC300 +|| ( +ags + =EMSdevi:: +EMS_DEVICE_FLAG_RC100 +)) { + +622 i( +mode + == 0) { + +623  +HtgCcu +:: +Mode +:: +MANUAL +; + +624 } i( + gmode + == 1) { + +625  +HtgCcu +:: +Mode +:: +AUTO +; + +627 } i( + gags + = +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +) { + +628 i( +mode + == 1) { + +629  +HtgCcu +:: +Mode +:: +MANUAL +; + +630 } i( + gmode + == 2) { + +631  +HtgCcu +:: +Mode +:: +AUTO +; + +632 } i( + gmode + == 3) { + +633  +HtgCcu +:: +Mode +:: +HOLIDAY +; + +636 i( + gmode + == 0) { + +637  +HtgCcu +:: +Mode +:: +NIGHT +; + +638 } i( + gmode + == 1) { + +639  +HtgCcu +:: +Mode +:: +DAY +; + +640 } i( + gmode + == 2) { + +641  +HtgCcu +:: +Mode +:: +AUTO +; + +645  + gHtgCcu +:: +Mode +:: +UNKNOWN +; + +650 +ut8_t + + gThmo +:: +HtgCcu +:: +g_mode_ty +(ut8_ +ags +) const { + +651 +ags + &= 0x0F; + +653 i( + gags + = +EMS_DEVICE_FLAG_JUNKERS +) { + +654 i( +mode_ty + == 3) { + +655  +HtgCcu +:: +Mode +:: +HEAT +; + +656 } i( + gmode_ty + == 2) { + +657  +HtgCcu +:: +Mode +:: +ECO +; + +658 } i( + gmode_ty + == 1) { + +659  +HtgCcu +:: +Mode +:: +NOFROST +; + +661 } i(( + gags + = +EMS_DEVICE_FLAG_RC35 +|| ( +ags + = +EMS_DEVICE_FLAG_RC30_1 +)) { + +662 i( +mode_ty + == 0) { + +663  +HtgCcu +:: +Mode +:: +NIGHT +; + +664 } i( + gmode_ty + == 1) { + +665  +HtgCcu +:: +Mode +:: +DAY +; + +667 } i( + gags + = +EMS_DEVICE_FLAG_RC300 +) { + +668 i( +mode_ty + == 0) { + +669  +HtgCcu +:: +Mode +:: +ECO +; + +670 } i( + gmode_ty + == 1) { + +671  +HtgCcu +:: +Mode +:: +COMFORT +; + +673 } i( + gags + = +EMS_DEVICE_FLAG_RC100 +) { + +674  +HtgCcu +:: +Mode +:: +DAY +; + +677  + gHtgCcu +:: +Mode +:: +DAY +; + +682 + gd +:: +rg + +Thmo +:: +mode_torg +( +ut8_t + +mode +) { + +683  +mode +) { + +684  +HtgCcu +:: +Mode +:: +OFF +: + +685  +ad_ash_rg +( +F +("off")); + +687  + gHtgCcu +:: +Mode +:: +MANUAL +: + +688  +ad_ash_rg +( +F +("manual")); + +690  + gHtgCcu +:: +Mode +:: +DAY +: + +691  +ad_ash_rg +( +F +("day")); + +693  + gHtgCcu +:: +Mode +:: +NIGHT +: + +694  +ad_ash_rg +( +F +("night")); + +696  + gHtgCcu +:: +Mode +:: +ECO +: + +697  +ad_ash_rg +( +F +("eco")); + +699  + gHtgCcu +:: +Mode +:: +COMFORT +: + +700  +ad_ash_rg +( +F +("comfort")); + +702  + gHtgCcu +:: +Mode +:: +HEAT +: + +703  +ad_ash_rg +( +F +("heat")); + +705  + gHtgCcu +:: +Mode +:: +HOLIDAY +: + +706  +ad_ash_rg +( +F +("holiday")); + +708  + gHtgCcu +:: +Mode +:: +NOFROST +: + +709  +ad_ash_rg +( +F +("nofrost")); + +711  + gHtgCcu +:: +Mode +:: +AUTO +: + +712  +ad_ash_rg +( +F +("auto")); + +714  + gHtgCcu +:: +Mode +:: +SUMMER +: + +715  +ad_ash_rg +( +F +("summer")); + +717  + gHtgCcu +:: +Mode +:: +OFFSET +: + +718  +ad_ash_rg +( +F +("offset")); + +720  + gHtgCcu +:: +Mode +:: +DESIGN +: + +721  +ad_ash_rg +( +F +("design")); + +724  +HtgCcu +:: +Mode +:: +UNKNOWN +: + +725  +ad_ash_rg +( +F +("unknown")); + +731  + gThmo +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +732 +EMSdevi +:: +show_vues +( +shl +); + +734 +ut8_t + + gags + = +this +-> +mod +(); + +736 i( + gdime_ +. +size +()) { + +737 + gshl +. +tn +( +F +(" Clock: %s"), +dime_ +. +c_r +()); + +738 i( + gHrs +:: +hasVue +( +ibaClockOfft_ +&& +ags + = +EMS_DEVICE_FLAG_RC30_1 +) { + +739 +t_vue +( +shl +, 2, +F +("Offock"), +ibaClockOfft_ +, +nuαr +); + +742 i( + gHrs +:: +hasVue +( +wwMode_ +)) { + +743 i( +wwMode_ + == 0) { + +744 +shl +. +tn +( +F +(" Warm Water mode: off")); + +745 } i( + gwwMode_ + == 1) { + +746 +shl +. +tn +( +F +(" Warm Water mode: on")); + +747 } i( + gwwMode_ + == 2) { + +748 +shl +. +tn +( +F +(" Warm Water mode:uto")); + +751 i( + gags + = +EMS_DEVICE_FLAG_RC35 +) { + +752 +t_vue +( +shl +, 2, +F +("Damd Outdo܁emtu"), +damdoutdo܋mp_ +, +F_ +( +deges +)); + +753 +t_vue +( +shl +, 2, +F +("Temns 1"), +mpns1_ +, +F_ +( +deges +), 10); + +754 +t_vue +( +shl +, 2, +F +("Temns 2"), +mpns2_ +, +F_ +( +deges +), 10); + +756 i( + gags + = +EMS_DEVICE_FLAG_RC30_1 +) { + +758 i( +Hrs +:: +hasVue +( +ibaMaDiy_ +)) { + +759 i( +ibaMaDiy_ + == 0) { + +760 +shl +. +tn +( +F +(" Display: internalemperature")); + +761 } i( + gibaMaDiy_ + == 1) { + +762 +shl +. +tn +( +F +(" Display: internal setpoint")); + +763 } i( + gibaMaDiy_ + == 2) { + +764 +shl +. +tn +( +F +(" Display:xternalemperature")); + +765 } i( + gibaMaDiy_ + == 3) { + +766 +shl +. +tn +( +F +(" Display: burneremperature")); + +767 } i( + gibaMaDiy_ + == 4) { + +768 +shl +. +tn +( +F +(" Display: WWemperature")); + +769 } i( + gibaMaDiy_ + == 5) { + +770 +shl +. +tn +( +F +(" Display: functioning mode")); + +771 } i( + gibaMaDiy_ + == 6) { + +772 +shl +. +tn +( +F +(" Display:ime")); + +773 } i( + gibaMaDiy_ + == 7) { + +774 +shl +. +tn +( +F +(" Display: date")); + +775 } i( + gibaMaDiy_ + == 8) { + +776 +shl +. +tn +( +F +(" Display: smokeemperature")); + +780 i( + gHrs +:: +hasVue +( +ibaLguage_ +)) { + +781 i( +ibaLguage_ + == 0) { + +782 +shl +. +tn +( +F +(" Language: German")); + +783 } i( + gibaLguage_ + == 1) { + +784 +shl +. +tn +( +F +(" Language: Dutch")); + +785 } i( + gibaLguage_ + == 2) { + +786 +shl +. +tn +( +F +(" Language: French")); + +787 } i( + gibaLguage_ + == 3) { + +788 +shl +. +tn +( +F +(" Language: Italian")); + +792 i( + gags + = +EMS_DEVICE_FLAG_RC35 + || +ags + = +EMS_DEVICE_FLAG_RC30_1 +) { + +793 i( +Hrs +:: +hasVue +( +ibaCITemtu_ +)) { + +794 +t_vue +( +shl +, 2, +F +("Offt.emtu"), +ibaCITemtu_ +, +F_ +( +deges +), 2); + +797 i( + gHrs +:: +hasVue +( +ibaMExtTemtu_ +)) { + +798 +t_vue +( +shl +, 2, +F +("Mxt.emtu"), +ibaMExtTemtu_ +, +F_ +( +deges +)); + +801 i( + gHrs +:: +hasVue +( +ibaBudgTy_ +)) { + +802 i( +ibaBudgTy_ + == 0) { + +803 +shl +. +tn +( +F +(" Building:ight")); + +804 } i( + gibaBudgTy_ + == 1) { + +805 +shl +. +tn +( +F +(" Building: medium")); + +806 } i( + gibaBudgTy_ + == 2) { + +807 +shl +. +tn +( +F +(" Building: heavy")); + +812 cڡut& + ghc + : +htg_ccus_ +) { + +813 i(! +hc +-> +is_aive +()) { + +817 + gshl +. +tn +( +F +(" Htg Ccu %d:"), +hc +-> +hc_num +()); + +820 +ut8_t + + gfm_ot +, + gfm_cu +; + +821  + gags +) { + +822  + gEMS_DEVICE_FLAG_EASY +: + +823 +fm_ot + = 100; + +824 + gfm_cu + = 100; + +826  + gEMS_DEVICE_FLAG_JUNKERS +: + +827 +fm_ot + = 10; + +828 + gfm_cu + = 10; + +831 +fm_ot + = 2; + +832 + gfm_cu + = 10; + +836 +t_vue +( +shl +, 4, +F +("Curoomemtu"), +hc +-> +cu_roomTemp +, +F_ +( +deges +), +fm_cu +); + +837 +t_vue +( +shl +, 4, +F +("Sporoomemtu"), +hc +-> +ot_roomTemp +, +F_ +( +deges +), +fm_ot +); + +838 i( + gHrs +:: +hasVue +( +hc +-> +mode +)) { + +839 +t_vue +( +shl +, 4, +F +("Mode"), +mode_torg +( +hc +-> +g_mode +( +ags +)). +c_r +()); + +841 i( + gHrs +:: +hasVue +( +hc +-> +mode_ty +)) { + +842 +t_vue +( +shl +, 4, +F +("ModTy"), +mode_torg +( +hc +-> +g_mode_ty +( +ags +)). +c_r +()); + +845 i( + gHrs +:: +hasVue +( +hc +-> +summ_mode +) && hc->summer_mode) { + +846 +shl +. +tn +( +F +(" Program is seto Summer mode")); + +847 } i( + gHrs +:: +hasVue +( +hc +-> +hiday_mode +) && hc->holiday_mode) { + +848 +shl +. +tn +( +F +(" Program is seto Holiday mode")); + +851 i( + gHrs +:: +hasVue +( +hc +-> +daymp +)) { + +852 i( +ags + = +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +) { + +853 +t_vue +( +shl +, 4, +F +("Hmtu"), +hc +-> +daymp +, +F_ +( +deges +), 2); + +855 +t_vue +( +shl +, 4, +F +("Dayemtu"), +hc +-> +daymp +, +F_ +( +deges +), 2); + +858 i( + gHrs +:: +hasVue +( +hc +-> +nighemp +)) { + +859 i( +ags + = +EMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +) { + +860 +t_vue +( +shl +, 4, +F +("Ec؋mtu"), +hc +-> +nighemp +, +F_ +( +deges +), 2); + +862 +t_vue +( +shl +, 4, +F +("Nighmtu"), +hc +-> +nighemp +, +F_ +( +deges +), 2); + +865 i( + gHrs +:: +hasVue +( +hc +-> +noomp +)) { + +866 +t_vue +( +shl +, 4, +F +("Nooemtu"), +hc +-> +noomp +, +F_ +( +deges +), 2); + +868 i( + gHrs +:: +hasVue +( +hc +-> +hidaymp +)) { + +869 +t_vue +( +shl +, 4, +F +("Hidayemtu"), +hc +-> +hidaymp +, +F_ +( +deges +), 2); + +871 i( + gHrs +:: +hasVue +( +hc +-> +offemp +)) { + +872 +t_vue +( +shl +, 4, +F +("Offmtu"), +hc +-> +offemp +, +F_ +( +deges +), 2); + +874 i( + gHrs +:: +hasVue +( +hc +-> +desigemp +)) { + +875 +t_vue +( +shl +, 4, +F +("Desigmtu"), +hc +-> +desigemp +, +F_ +( +deges +)); + +877 i( + gHrs +:: +hasVue +( +hc +-> +summmp +)) { + +878 +t_vue +( +shl +, 4, +F +("Summemtu"), +hc +-> +summmp +, +F_ +( +deges +)); + +880 i( + gHrs +:: +hasVue +( +hc +-> +rgowmp +)) { + +881 +t_vue +( +shl +, 4, +F +("Tg flowemtu"), +hc +-> +rgowmp +, +F_ +( +deges +)); + +885 + gshl +. +n +(); + +889  + gThmo +:: +oss_RC20S +( +d +:: +shed_r + +gm +) { + +890 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +892 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +mode +, 23); + +896  + gThmo +:: +oss_RC20Mڙ_2 +( +d +:: +shed_r + +gm +) { + +897 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +899 + gchged_ + | +gm +-> +ad_bvue +( +hc +-> +mode_ty +, 0, 7); + +900 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 2, 1); + +901 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 3); + +906  + gThmo +:: +oss_RC20S_2 +( +d +:: +shed_r + +gm +) { + +907 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +909 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +mode +, 3); + +913  + gThmo +:: +oss_RC20Reme +( +d +:: +shed_r + +gm +) { + +914 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +915 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 0); + +919  + gThmo +:: +oss_RC10Mڙ +( +d +:: +shed_r + +gm +) { + +920 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +922 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 1, 1); + +923 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 2); + +926 #agm +GCC + +dgnoic + +push + + +927 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +930  + gThmo +:: +oss_RC10S +( +d +:: +shed_r + +gm +) { + +933 #agm +GCC + +dgnoic + +p + + +936  +Thmo +:: +oss_JunksS +( +d +:: +shed_r + +gm +) { + +937 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +938 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +daymp +, 17); + +939 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +nighemp +, 16); + +940 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +noomp +, 15); + +943  + gThmo +:: +oss_JunksS2 +( +d +:: +shed_r + +gm +) { + +944 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +945 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +daymp +, 7); + +946 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +nighemp +, 6); + +947 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +noomp +, 5); + +951  + gThmo +:: +oss_RCOutdoTemp +( +d +:: +shed_r + +gm +) { + +952 +chged_ + | +gm +-> +ad_vue +( +damdoutdo܋mp_ +, 0); + +953 + gchged_ + | +gm +-> +ad_vue +( +mpns1_ +, 3); + +954 + gchged_ + | +gm +-> +ad_vue +( +mpns2_ +, 5); + +958  + gThmo +:: +oss_RC20Mڙ +( +d +:: +shed_r + +gm +) { + +959 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +961 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 1, 1); + +962 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 2); + +966  + gThmo +:: +oss_EasyMڙ +( +d +:: +shed_r + +gm +) { + +967 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +969 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 8); + +970 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 10); + +974  + gThmo +:: +oss_IBAStgs +( +d +:: +shed_r + +gm +) { + +976 +chged_ + |= + +977 +gm +-> +ad_vue +( +ibaMaDiy_ +, + +979 + gchged_ + | +gm +-> +ad_vue +( +ibaLguage_ +, 1); + +980 + gchged_ + | +gm +-> +ad_vue +( +ibaCITemtu_ +, 2); + +981 + gchged_ + | +gm +-> +ad_vue +( +ibaBudgTy_ +, 6); + +982 + gchged_ + | +gm +-> +ad_vue +( +ibaMExtTemtu_ +, 5); + +983 + gchged_ + | +gm +-> +ad_vue +( +ibaClockOfft_ +, 12); + +987  + gThmo +:: +oss_RC35wwStgs +( +d +:: +shed_r + +gm +) { + +988 +chged_ + | +gm +-> +ad_vue +( +wwMode_ +, 2); + +992  + gThmo +:: +oss_JunksMڙ +( +d +:: +shed_r + +gm +) { + +994 i( +gm +-> +mesge_ngth + <= 1) { + +998 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +1000 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 4); + +1001 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 2); + +1003 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +mode_ty +, 0); + +1004 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +mode +, 1); + +1008  + gThmo +:: +oss_RC300Mڙ +( +d +:: +shed_r + +gm +) { + +1009 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +1011 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 0); + +1013 + gchged_ + | +gm +-> +ad_bvue +( +hc +-> +mode_ty +, 10, 1); + +1014 + gchged_ + | +gm +-> +ad_bvue +( +hc +-> +mode +, 10, 0); + +1023 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 3, 1); + +1024 + gchged_ + | +gm +-> +ad_bvue +( +hc +-> +summ_mode +, 2, 4); + +1025 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +rgowmp +, 4); + +1029  + gThmo +:: +oss_RC300S +( +d +:: +shed_r + +gm +) { + +1030 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +1043 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +daymp +, 2); + +1044 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +nighemp +, 4); + +1048  + gThmo +:: +oss_RC300WWmode +( +d +:: +shed_r + +gm +) { + +1050 +wwSyem_ + = +gm +-> +ty_id + - 0x31D + 1; + +1051 + gchged_ + | +gm +-> +ad_vue +( +wwExa_ +, 0); + +1058  + gThmo +:: +oss_RC30Mڙ +( +d +:: +shed_r + +gm +) { + +1059 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +1061 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 1, 1); + +1062 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 2); + +1066  + gThmo +:: +oss_RC30S +( +d +:: +shed_r + +gm +) { + +1067 +d +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +1069 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +mode +, 23); + +1073  + gThmo +:: +oss_RC35Mڙ +( +d +:: +shed_r + +gm +) { + +1077 i( +gm +-> +mesge_da +[14] == 0x00) { + +1081 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +1083 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +ot_roomTemp +, 2, 1); + +1084 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +cu_roomTemp +, 3); + +1086 + gchged_ + | +gm +-> +ad_bvue +( +hc +-> +mode_ty +, 1, 1); + +1087 + gchged_ + | +gm +-> +ad_bvue +( +hc +-> +summ_mode +, 1, 0); + +1088 + gchged_ + | +gm +-> +ad_bvue +( +hc +-> +hiday_mode +, 0, 5); + +1090 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +rgowmp +, 14); + +1094  + gThmo +:: +oss_RC35S +( +d +:: +shed_r + +gm +) { + +1096 i( +gm +-> +mesge_da +[0] == 0x00) { + +1100 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +gm +); + +1102 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +mode +, 7); + +1103 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +daymp +, 2); + +1104 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +nighemp +, 1); + +1105 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +hidaymp +, 3); + +1106 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +htgty +, 0); + +1108 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +summmp +, 22); + +1109 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +noomp +, 23); + +1110 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +desigemp +, 17); + +1111 + gchged_ + | +gm +-> +ad_vue +( +hc +-> +offemp +, 6); + +1115  + gThmo +:: +oss_RCTime +( +d +:: +shed_r + +gm +) { + +1116 i( +this +-> +ags +(= +EMS_DEVICE_FLAG_EASY +) { + +1119 i( + ggm +-> + gmesge_ngth + < 7) { + +1122 i( + ggm +-> + gmesge_da +[7] & 0x0C) { + +1123 +t_dime +("ntp", -1); + +1126 i( + gdime_ +. +emy +()) { + +1127 + gdime_ +. +size +(25, '\0'); + +1129 aut + gtimed + = +dime_ +; + +1132  + gbuf1 +[6]; + +1133  + gbuf2 +[6]; + +1134  + gbuf3 +[6]; + +1135  + gbuf4 +[6]; + +1136  + gbuf5 +[6]; + +1137  + gbuf6 +[6]; + +1138 +tf_P +(& +dime_ +[0], + +1139 +dime_ +. +cy +() + 1, + +1140 +PSTR +("%s:%s:%s %s/%s/%s"), + +1141 +Hrs +:: +sml +( +buf1 +, +gm +-> +mesge_da +[2]), + +1142 +Hrs +:: +sml +( +buf2 +, +gm +-> +mesge_da +[4]), + +1143 +Hrs +:: +sml +( +buf3 +, +gm +-> +mesge_da +[5]), + +1144 +Hrs +:: +sml +( +buf4 +, +gm +-> +mesge_da +[3]), + +1145 +Hrs +:: +sml +( +buf5 +, +gm +-> +mesge_da +[1]), + +1146 +Hrs +:: + +( +buf6 +, +gm +-> +mesge_da +[0] + 2000, 10) + +1148 i( + gtimed + ! +dime_ +) { + +1149 +chged_ + = +ue +; + +1154  + gThmo +:: +cse_commds +( +Shl + & +shl +,  +cڋxt +) { + +1155 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +THERMOSTAT +, + +1156 +CommdFgs +:: +ADMIN +, + +1157 +ash_rg_ve +{ +F_ +( +t +), F_( +ma +)}, + +1158 +ash_rg_ve +{ +F_ +( +deviid_mdy +)}, + +1159 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +1160 +ut8_t + +vue + = +Hrs +:: +hextot +( +gumts +. +t +(). +c_r +()); + +1161 +EMSESP +:: +emStgsSvi +. +upde +( + +1162 [&]( +EMSESPStgs + & +gs +) { + +1163 +gs +. +ma_thmo + = +vue +; + +1164 +EMSESP +:: +au_ma_thmo +( +vue +); + +1165  +bufr +[5]; + +1166 +shl +. +tn +( +F_ +( +ma_thmo_fmt +), + +1167 ! +vue + ? +uuid +:: +ad_ash_rg +( +F_ +uto)). +c_r +(: +Hrs +:: +hext +( +bufr +, value)); + +1168  +SUpdeResu +:: +CHANGED +; + +1173 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +THERMOSTAT +, + +1174 +CommdFgs +:: +ADMIN +, + +1175 +ash_rg_ve +{ +F_ +( +ad +)}, + +1176 +ash_rg_ve +{ +F_ +( +tyid_mdy +)}, + +1177 [=]( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts +) { + +1178 +ut16_t + +ty_id + = +Hrs +:: +hextot +( +gumts +. +t +(). +c_r +()); + +1179 +EMSESP +:: +t_ad_id +( +ty_id +); + +1180 +EMSESP +:: +nd_ad_que +( +ty_id +, +this +-> +g_devi_id +()); + +1183 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +THERMOSTAT +, + +1184 +CommdFgs +:: +USER +, + +1185 +ash_rg_ve +{ +F_ +( +show +)}, + +1186 [&]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +)){ +show_vues +(shell); }); + +1188 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +THERMOSTAT +, + +1189 +CommdFgs +:: +USER +, + +1190 +ash_rg_ve +{ +F_ +( +t +)}, + +1191 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +1192 +EMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +1193  +bufr +[4]; + +1194 +shl +. +tn +( +F_ +( +ma_thmo_fmt +), + +1195 +gs +. +ma_thmo + =0 ? +uuid +:: +ad_ash_rg +( +F_ +uto)). +c_r +() + +1196 : +Hrs +:: +hext +( +bufr +, +gs +. +ma_thmo +)); + +1197 +shl +. +n +(); + +1202 + gCse +:: +r_cuom_cڋxt +( +shl +, +cڋxt +); + +1206  + gThmo +:: +t_mexemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1207  + gmt + = 0; + +1208 i(! + gHrs +:: +vue2numb +( +vue +, +mt +)) { + +1211 +LOG_INFO +( +F +("Stg mxemtu%d"), +mt +); + +1212 +wre_commd +( +EMS_TYPE_IBAStgs +, 5, +mt +, EMS_TYPE_IBASettings); + +1216  + gThmo +:: +t_ockofft +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1217  + gco + = 0; + +1218 i(! + gHrs +:: +vue2numb +( +vue +, +co +)) { + +1221 +LOG_INFO +( +F +("Stg clock offt%d"), +co +); + +1222 +wre_commd +( +EMS_TYPE_IBAStgs +, 12, +co +, EMS_TYPE_IBASettings); + +1226  + gThmo +:: +t_lemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1227  + g + = 0; + +1228 i(! + gHrs +:: +vue2numb +( +vue +, + +)) { + +1232 +LOG_INFO +( +F +("Cibtg iȋmtu%d.%d"), + + / 10, ct < 0 ? -ct % 10 : ct % 10); + +1233 +wre_commd +( +EMS_TYPE_IBAStgs +, 2, + +, EMS_TYPE_IBASettings); + +1237  + gThmo +:: +t_diy +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1238  + gds + = 0; + +1239 i(! + gHrs +:: +vue2numb +( +vue +, +ds +)) { + +1242 +LOG_INFO +( +F +("Stg diy%d"), +ds +); + +1243 +wre_commd +( +EMS_TYPE_IBAStgs +, 0, +ds +, EMS_TYPE_IBASettings); + +1246  + gThmo +:: +t_mّemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1247  + gf + = 0; + +1248 i(! + gHrs +:: +vue2t +( +vue +, +f +)) { + +1252 +ut8_t + + ghc_num + = ( +id + =-1? +AUTO_HEATING_CIRCUIT + : id; + +1254 i( + gf + > 100 || f < 0) { + +1255 + gRoom +:: +t_mّemp +( +hc_num + - 1, +EMS_VALUE_SHORT_NOTSET +); + +1257 + gRoom +:: +t_mّemp +( +hc_num + - 1, ( +t16_t +)( +f + * 10)); + +1262  + gThmo +:: +t_budg +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1263 + gd +:: +rg + +bd +(20, '\0'); + +1264 i(! + gHrs +:: +vue2rg +( +vue +, +bd +)) { + +1268 +ut8_t + + gbg + = 0; + +1269 i( + gbd + == "light") { + +1270 +bg + = 0; + +1271 } i( + gbd + == "medium") { + +1272 +bg + = 1; + +1273 } i( + gbd + == "heavy") { + +1274 +bg + = 2; + +1279 +LOG_INFO +( +F +("Stg budg%d"), +bg +); + +1280 +wre_commd +( +EMS_TYPE_IBAStgs +, 6, +bg +, EMS_TYPE_IBASettings); + +1284  + gThmo +:: +t_nguage +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1285  + glg + = 0; + +1286 i(! + gHrs +:: +vue2numb +( +vue +, +lg +)) { + +1289 +LOG_INFO +( +F +("Stgguagt%d"), +lg +); + +1290 +wre_commd +( +EMS_TYPE_IBAStgs +, 1, +lg +, EMS_TYPE_IBASettings); + +1294  + gThmo +:: +t_cڌ +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1295  + g + = 0; + +1296 i(! + gHrs +:: +vue2numb +( +vue +, + +)) { + +1300 +ut8_t + + ghc_num + = ( +id + =-1? +AUTO_HEATING_CIRCUIT + : id; + +1302 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +hc_num +); + +1303 i( + ghc + = +nuαr +) { + +1304 +LOG_WARNING +( +F +("S cڌ: Htg Ccu %d found oaived"), +hc_num +); + +1308 i( + g + > 2) { + +1309 +LOG_WARNING +( +F +("S cڌ: Invid cڌ mode: %d"), + +); + +1313 +LOG_INFO +( +F +("Stg ccu-cڌ f hc%d%d"), +hc_num +, + +); + +1314 +wre_commd +( +t_tyids +[ +hc +-> +hc_num +(- 1], 26, + +); + +1318  + gThmo +:: +t_wwmode +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1319 + gd +:: +rg + +v +(10, '\0'); + +1320 i(! + gHrs +:: +vue2rg +( +vue +, +v +)) { + +1324 +ut8_t + + gt + = 0xFF; + +1325 i( + gv + == "off") { + +1326 +t + = 0; + +1327 } i( + gv + == "on") { + +1328 +t + = 1; + +1329 } i( + gv + == "auto") { + +1330 +t + = 2; + +1333 i( + gt + != 0xFF) { + +1334 +LOG_INFO +( +F +("Stghmo wm w modt%s"), +v +. +c_r +()); + +1335 +wre_commd +( +EMS_TYPE_wwStgs +, 2, +t +, EMS_TYPE_wwSettings); + +1337 +LOG_WARNING +( +F +("Shmo wm w mode: Invid mode: %s"), +v +. +c_r +()); + +1342  + gThmo +:: +t_hiday +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1343 + gd +:: +rg + +hd +(30, '\0'); + +1344 i(! + gHrs +:: +vue2rg +( +vue +, +hd +)) { + +1347 +ut8_t + + ghc_num + = ( +id + =-1? +AUTO_HEATING_CIRCUIT + : id; + +1349 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +hc_num +); + +1350 i( + ghc + = +nuαr +) { + +1351 +LOG_WARNING +( +F +("S hiday: Htg Ccu %d found oaived f devi ID 0x%02X"), +hc_num +, +this +-> +g_devi_id +()); + +1354 +ut8_t + + gda +[6]; + +1355 + gda +[0] = ( +hd +[0] - '0') * 10 + (hd[1] - '0'); + +1356 + gda +[1] = ( +hd +[3] - '0') * 10 + (hd[4] - '0'); + +1357 + gda +[2] = ( +hd +[7] - '0') * 100 + (hd[8] - '0') * 10 + (hd[9] - '0'); + +1358 + gda +[3] = ( +hd +[11] - '0') * 10 + (hd[11] - '0'); + +1359 + gda +[4] = ( +hd +[14] - '0') * 10 + (hd[15] - '0'); + +1360 + gda +[5] = ( +hd +[18] - '0') * 100 + (hd[19] - '0') * 10 + (hd[20] - '0'); + +1362 +LOG_INFO +( +F +("Stg hiday f h%d"), +hc +-> +hc_num +()); + +1363 +wre_commd +( +tim_tyids +[ +hc +-> +hc_num +(- 1], 87, +da +, 6, 0); + +1367  + gThmo +:: +t_u +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1368  + ghrs + = 0; + +1369 i(! + gHrs +:: +vue2numb +( +vue +, +hrs +)) { + +1372 +ut8_t + + ghc_num + = ( +id + =-1? +AUTO_HEATING_CIRCUIT + : id; + +1374 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +hc_num +); + +1375 i( + ghc + = +nuαr +) { + +1376 +LOG_WARNING +( +F +("Sau: Htg Ccu %d found oaived f devi ID 0x%02X"), +hc_num +, +this +-> +g_devi_id +()); + +1379 +LOG_INFO +( +F +("Stgau: %d hours, hc: %d"), +hrs +, +hc +-> +hc_num +()); + +1380 +wre_commd +( +tim_tyids +[ +hc +-> +hc_num +(- 1], 85, +hrs +); + +1384  + gThmo +:: +t_y +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1385  + ghrs + = 0; + +1386 i(! + gHrs +:: +vue2numb +( +vue +, +hrs +)) { + +1389 +ut8_t + + ghc_num + = ( +id + =-1? +AUTO_HEATING_CIRCUIT + : id; + +1391 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +hc_num +); + +1392 i( + ghc + = +nuαr +) { + +1393 +LOG_WARNING +( +F +("Sty: Htg Ccu %d found oaived f devi ID 0x%02X"), +hc_num +, +this +-> +g_devi_id +()); + +1396 +LOG_INFO +( +F +("Stgty: %d hours, hc: %d"), +hrs +, +hc +-> +hc_num +()); + +1397 +wre_commd +( +tim_tyids +[ +hc +-> +hc_num +(- 1], 86, +hrs +); + +1403  + gThmo +:: +t_dime +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1404 + gd +:: +rg + +dt +(30, '\0'); + +1405 i(! + gHrs +:: +vue2rg +( +vue +, +dt +)) { + +1409 +ut8_t + + gda +[9]; + +1410 i( + gdt + == "ntp") { + +1411 +time_t + +now + = +time +( +nuαr +); + +1412 +tm + * + gtm_ + = +loime +(& +now +); + +1413 i( + gtm_ +-> + gtm_yr + < 110) { + +1414 +LOG_WARNING +( +F +("No NTPime. Cannot set RCtime")); + +1417 + gda +[0] = +tm_ +-> +tm_yr + - 100; + +1418 + gda +[1] = +tm_ +-> +tm_m +; + +1419 + gda +[2] = +tm_ +-> +tm_hour +; + +1420 + gda +[3] = +tm_ +-> +tm_mday +; + +1421 + gda +[4] = +tm_ +-> +tm_m +; + +1422 + gda +[5] = +tm_ +-> +tm_c +; + +1423 + gda +[6] = ( +tm_ +-> +tm_wday + + 6) % 7; + +1424 + gda +[7] = +tm_ +-> +tm_isd + + 2; + +1425  + gtime_rg +[25]; + +1426 +rime +( +time_rg +, 25, "%FT%T%z", +tm_ +); + +1427 +LOG_INFO +( +F +("Ddime: %s"), +time_rg +); + +1429 + gda +[0] = ( +dt +[16] - '0') * 100 + (dt[17] - '0') * 10 + (dt[18] - '0'); + +1430 + gda +[1] = ( +dt +[12] - '0') * 10 + (dt[13] - '0'); + +1431 + gda +[2] = ( +dt +[0] - '0') * 10 + (dt[1] - '0'); + +1432 + gda +[3] = ( +dt +[9] - '0') * 10 + (dt[10] - '0'); + +1433 + gda +[4] = ( +dt +[3] - '0') * 10 + (dt[4] - '0'); + +1434 + gda +[5] = ( +dt +[6] - '0') * 10 + (dt[7] - '0'); + +1435 + gda +[6] = ( +dt +[20] - '0'); + +1436 + gda +[7] = ( +dt +[22] - '0') + 2; + +1438 +LOG_INFO +( +F +("Setting datendime")); + +1439 +wre_commd +( +EMS_TYPE_time +, 0, +da +, 8, EMS_TYPE_time); + +1444  + gThmo +:: +t_mode +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1445 + gd +:: +rg + +mode +(10, '\0'); + +1446 i(! + gHrs +:: +vue2rg +( +vue +, +mode +)) { + +1450 +ut8_t + + ghc_num + = ( +id + =-1? +AUTO_HEATING_CIRCUIT + : id; + +1452 i( +mode_torg +( +HtgCcu +:: +Mode +:: +OFF += +mode +) { + +1453 +t_mode_n +( +HtgCcu +:: +Mode +:: +OFF +, +hc_num +); + +1454 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +MANUAL += +mode +) { + +1455 +t_mode_n +( +HtgCcu +:: +Mode +:: +MANUAL +, +hc_num +); + +1456 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +AUTO += +mode +) { + +1457 +t_mode_n +( +HtgCcu +:: +Mode +:: +AUTO +, +hc_num +); + +1458 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +DAY += +mode +) { + +1459 +t_mode_n +( +HtgCcu +:: +Mode +:: +DAY +, +hc_num +); + +1460 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +NIGHT += +mode +) { + +1461 +t_mode_n +( +HtgCcu +:: +Mode +:: +NIGHT +, +hc_num +); + +1462 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +HEAT += +mode +) { + +1463 +t_mode_n +( +HtgCcu +:: +Mode +:: +HEAT +, +hc_num +); + +1464 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +NOFROST += +mode +) { + +1465 +t_mode_n +( +HtgCcu +:: +Mode +:: +NOFROST +, +hc_num +); + +1466 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +ECO += +mode +) { + +1467 +t_mode_n +( +HtgCcu +:: +Mode +:: +ECO +, +hc_num +); + +1468 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +HOLIDAY += +mode +) { + +1469 +t_mode_n +( +HtgCcu +:: +Mode +:: +HOLIDAY +, +hc_num +); + +1470 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +COMFORT += +mode +) { + +1471 +t_mode_n +( +HtgCcu +:: +Mode +:: +COMFORT +, +hc_num +); + +1473 +LOG_WARNING +( +F +("Invid mod%s. Cn s"), +mode +. +c_r +()); + +1479  + gThmo +:: +t_mode_n +(cڡ +ut8_t + +mode +, cڡ ut8_ +hc_num +) { + +1481 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +hc_num +); + +1482 i( + ghc + = +nuαr +) { + +1483 +LOG_WARNING +( +F +("mode: Htg Ccu %d found oaived"), +hc_num +); + +1487 +ut8_t + + gt_mode_vue +, + gofft +; + +1488 +ut16_t + + gvide_tyid + = 0; + +1489 +ut8_t + + ghc_p + = +hc +-> +hc_num +() - 1; + +1492  + gmode +) { + +1493  + gHtgCcu +:: +Mode +:: +NIGHT +: + +1494  +HtgCcu +:: +Mode +:: +OFF +: + +1495 +t_mode_vue + = 0; + +1498  + gHtgCcu +:: +Mode +:: +DAY +: + +1499  +HtgCcu +:: +Mode +:: +HEAT +: + +1500  +HtgCcu +:: +Mode +:: +MANUAL +: + +1501  +HtgCcu +:: +Mode +:: +NOFROST +: + +1502 +t_mode_vue + = 1; + +1506  +HtgCcu +:: +Mode +:: +AUTO +: + +1507  +HtgCcu +:: +Mode +:: +ECO +: + +1508 +t_mode_vue + = 2; + +1512  + gthis +-> +mod +()) { + +1513  + gEMSdevi +:: +EMS_DEVICE_FLAG_RC20 +: + +1514 +offt + = +EMS_OFFSET_RC20S_mode +; + +1515 + gvide_tyid + = +t_tyids +[ +hc_p +]; + +1517  + gEMSdevi +:: +EMS_DEVICE_FLAG_RC20_2 +: + +1518 +offt + = +EMS_OFFSET_RC20_2_S_mode +; + +1519 + gvide_tyid + = +t_tyids +[ +hc_p +]; + +1521  + gEMSdevi +:: +EMS_DEVICE_FLAG_RC30 +: + +1522 +offt + = +EMS_OFFSET_RC30S_mode +; + +1523 + gvide_tyid + = +t_tyids +[ +hc_p +]; + +1525  + gEMSdevi +:: +EMS_DEVICE_FLAG_RC35 +: + +1526  +EMSdevi +:: +EMS_DEVICE_FLAG_RC30_1 +: + +1527 +offt + = +EMS_OFFSET_RC35S_mode +; + +1528 + gvide_tyid + = +t_tyids +[ +hc_p +]; + +1530  + gEMSdevi +:: +EMS_DEVICE_FLAG_RC300 +: + +1531  +EMSdevi +:: +EMS_DEVICE_FLAG_RC100 +: + +1532 +offt + = +EMS_OFFSET_RCPLUSS_mode +; + +1533 + gvide_tyid + = +mڙ_tyids +[ +hc_p +]; + +1534 i( + gmode + = +HtgCcu +:: +Mode +:: +AUTO +) { + +1535 +t_mode_vue + = 0xFF; + +1537 + gt_mode_vue + = 0; + +1540  + gEMSdevi +:: +EMS_DEVICE_FLAG_JUNKERS +: + +1541 i(( +this +-> +ags +(& +EMS_DEVICE_FLAG_JUNKERS_2 +) == EMS_DEVICE_FLAG_JUNKERS_2) { + +1542 +offt + = +EMS_OFFSET_JunksSMesge2_t_mode +; + +1544 + gofft + = +EMS_OFFSET_JunksSMesge_t_mode +; + +1546 + gvide_tyid + = +mڙ_tyids +[ +hc_p +]; + +1547 i( + gmode + = +HtgCcu +:: +Mode +:: +NOFROST +) { + +1548 +t_mode_vue + = 0x01; + +1549 } i( + gmode + = +HtgCcu +:: +Mode +:: +ECO + || ( +mode + =HtgCcu::Mode:: +NIGHT +)) { + +1550 +t_mode_vue + = 0x02; + +1551 } i(( + gmode + = +HtgCcu +:: +Mode +:: +DAY +|| ( +mode + =HtgCcu::Mode:: +HEAT +)) { + +1552 +t_mode_vue + = 0x03; + +1553 } i( + gmode + = +HtgCcu +:: +Mode +:: +AUTO +) { + +1554 +t_mode_vue + = 0x04; + +1558 +offt + = 0; + +1562 +LOG_INFO +( +F +("Stghmo modt%f htg ccu %d"), +mode_torg +( +mode +). +c_r +(), +hc +-> +hc_num +()); + +1566 +wre_commd +( +t_tyids +[ +hc +-> +hc_num +(- 1], +offt +, +t_mode_vue +, +vide_tyid +); + +1570  + gThmo +:: +t_mtu +(cڡ  +mtu +, cڡ +d +:: +rg + & +mode +, cڡ +ut8_t + +hc_num +) { + +1571 i( +mode_torg +( +HtgCcu +:: +Mode +:: +MANUAL += +mode +) { + +1572 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +MANUAL +, +hc_num +); + +1573 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +AUTO += +mode +) { + +1574 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +AUTO +, +hc_num +); + +1575 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +DAY += +mode +) { + +1576 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +DAY +, +hc_num +); + +1577 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +NIGHT += +mode +) { + +1578 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +NIGHT +, +hc_num +); + +1579 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +COMFORT += +mode +) { + +1580 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +COMFORT +, +hc_num +); + +1581 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +HEAT += +mode +) { + +1582 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +HEAT +, +hc_num +); + +1583 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +NOFROST += +mode +) { + +1584 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +NOFROST +, +hc_num +); + +1585 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +SUMMER += +mode +) { + +1586 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +SUMMER +, +hc_num +); + +1587 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +HOLIDAY += +mode +) { + +1588 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +HOLIDAY +, +hc_num +); + +1589 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +OFFSET += +mode +) { + +1590 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +OFFSET +, +hc_num +); + +1591 } i( +mode_torg +( +HtgCcu +:: +Mode +:: +DESIGN += +mode +) { + +1592 +t_mtu +( +mtu +, +HtgCcu +:: +Mode +:: +DESIGN +, +hc_num +); + +1594 +LOG_WARNING +( +F +("Invid mod%s."), +mode +. +c_r +()); + +1600  + gThmo +:: +t_mtu +(cڡ  +mtu +, cڡ +ut8_t + +mode +, cڡ ut8_ +hc_num +) { + +1602 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +hc + = +htg_ccu +( +hc_num +); + +1603 i( + ghc + = +nuαr +) { + +1604 +LOG_WARNING +( +F +("Semtu: Htg Ccu %d found oaived f devi ID 0x%02X"), +hc_num +, +this +-> +g_devi_id +()); + +1608 +ut8_t + + gmod + = +this +-> +mod +(); + +1609 +t8_t + + gofft + = -1; + +1610 +ut8_t + + g + = 2; + +1611 +ut16_t + + gvide_tyid + = +mڙ_tyids +[ +hc +-> +hc_num +() - 1]; + +1613 i( + gmod + = +EMS_DEVICE_FLAG_RC10 +) { + +1614 +offt + = +EMS_OFFSET_RC10S_mp +; + +1616 } i( + gmod + = +EMS_DEVICE_FLAG_RC20 +) { + +1617 +offt + = +EMS_OFFSET_RC20S_mp +; + +1619 } i( + gmod + = +EMS_DEVICE_FLAG_RC30 +) { + +1620 +offt + = +EMS_OFFSET_RC30S_mp +; + +1622 } i(( + gmod + = +EMS_DEVICE_FLAG_RC300 +|| ( +mod + = +EMS_DEVICE_FLAG_RC100 +)) { + +1623 +vide_tyid + = +t_tyids +[ +hc +-> +hc_num +() - 1]; + +1624  + gmode +) { + +1625  + gHtgCcu +:: +Mode +:: +MANUAL +: + +1626 +offt + = 0x0A; + +1628  + gHtgCcu +:: +Mode +:: +COMFORT +: + +1629 +offt + = 0x02; + +1632  +HtgCcu +:: +Mode +:: +AUTO +: + +1633 +offt + = 0x08; + +1634 + gvide_tyid + = +mڙ_tyids +[ +hc +-> +hc_num +() - 1]; + +1638 } i( + gmod + = +EMS_DEVICE_FLAG_RC20_2 +) { + +1639  +mode +) { + +1640  +HtgCcu +:: +Mode +:: +NIGHT +: + +1641 +offt + = +EMS_OFFSET_RC20_2_S_mp_night +; + +1643  + gHtgCcu +:: +Mode +:: +DAY +: + +1644 +offt + = +EMS_OFFSET_RC20_2_S_mp_day +; + +1647  +HtgCcu +:: +Mode +:: +AUTO +: + +1648 +ut8_t + +mode_ty + = +hc +-> +g_mode_ty +( +this +-> +ags +()); + +1649 + gofft + = ( +mode_ty + = +HtgCcu +:: +Mode +:: +NIGHT +? +EMS_OFFSET_RC20_2_S_mp_night + : +EMS_OFFSET_RC20_2_S_mp_day +; + +1653 } i(( + gmod + = +EMS_DEVICE_FLAG_RC35 +|| ( +mod + = +EMS_DEVICE_FLAG_RC30_1 +)) { + +1654 +vide_tyid + = +t_tyids +[ +hc +-> +hc_num +() - 1]; + +1655  + gmode +) { + +1656  + gHtgCcu +:: +Mode +:: +NIGHT +: + +1657 +offt + = +EMS_OFFSET_RC35S_mp_night +; + +1659  + gHtgCcu +:: +Mode +:: +DAY +: + +1660 +offt + = +EMS_OFFSET_RC35S_mp_day +; + +1662  + gHtgCcu +:: +Mode +:: +HOLIDAY +: + +1663 +offt + = +EMS_OFFSET_RC35S_mp_hiday +; + +1665  + gHtgCcu +:: +Mode +:: +OFFSET +: + +1666 +offt + = +EMS_OFFSET_RC35S_mp_offt +; + +1668  + gHtgCcu +:: +Mode +:: +DESIGN +: + +1669 +offt + = +EMS_OFFSET_RC35S_mp_design +; + +1670 + g + = 1; + +1672  + gHtgCcu +:: +Mode +:: +SUMMER +: + +1673 +offt + = +EMS_OFFSET_RC35S_mp_summ +; + +1674 + g + = 1; + +1676  + gHtgCcu +:: +Mode +:: +NOFROST +: + +1677 +offt + = +EMS_OFFSET_RC35S_mp_noo +; + +1678 + g + = 1; + +1681  +HtgCcu +:: +Mode +:: +AUTO +: + +1682 +vide_tyid + = +mڙ_tyids +[ +hc +-> +hc_num +() - 1]; + +1683 i( + gmod + = +EMS_DEVICE_FLAG_RC35 +) { + +1684 +ut8_t + +mode_ + = +hc +-> +g_mode +( +this +-> +ags +()); + +1685 i( + gmode_ + = +HtgCcu +:: +Mode +:: +NIGHT +) { + +1686 +offt + = +EMS_OFFSET_RC35S_mp_night +; + +1687 } i( + gmode_ + = +HtgCcu +:: +Mode +:: +DAY +) { + +1688 +offt + = +EMS_OFFSET_RC35S_mp_day +; + +1690 + gofft + = +EMS_OFFSET_RC35S_emp +; + +1693 +ut8_t + + gmode_ty + = +hc +-> +g_mode_ty +( +this +-> +ags +()); + +1694 + gofft + = ( +mode_ty + = +HtgCcu +:: +Mode +:: +NIGHT +? +EMS_OFFSET_RC35S_mp_night + : +EMS_OFFSET_RC35S_mp_day +; + +1699 } i( + gmod + = +EMS_DEVICE_FLAG_JUNKERS +) { + +1702 +bo + +d_junks + = (( +this +-> +ags +(& +EMS_DEVICE_FLAG_JUNKERS_2 +) == EMS_DEVICE_FLAG_JUNKERS_2); + +1703 i(! + gd_junks +) { + +1704  + gmode +) { + +1705  + gHtgCcu +:: +Mode +:: +NOFROST +: + +1706 +offt + = +EMS_OFFSET_JunksSMesge_no_o_mp +; + +1708  + gHtgCcu +:: +Mode +:: +NIGHT +: + +1709  +HtgCcu +:: +Mode +:: +ECO +: + +1710 +offt + = +EMS_OFFSET_JunksSMesge_night_mp +; + +1712  + gHtgCcu +:: +Mode +:: +HEAT +: + +1713  +HtgCcu +:: +Mode +:: +DAY +: + +1714 +offt + = +EMS_OFFSET_JunksSMesge_day_mp +; + +1717  +HtgCcu +:: +Mode +:: +AUTO +: + +1718 +ut8_t + +mode_ty + = +hc +-> +g_mode_ty +( +this +-> +ags +()); + +1719 i( + gmode_ty + = +HtgCcu +:: +Mode +:: +NIGHT + || +mode_ty + =HtgCcu::Mode:: +ECO +) { + +1720 +offt + = +EMS_OFFSET_JunksSMesge_night_mp +; + +1721 } i( + gmode_ty + = +HtgCcu +:: +Mode +:: +DAY + || +mode_ty + =HtgCcu::Mode:: +HEAT +) { + +1722 +offt + = +EMS_OFFSET_JunksSMesge_day_mp +; + +1724 + gofft + = +EMS_OFFSET_JunksSMesge_no_o_mp +; + +1731  + gmode +) { + +1732  + gHtgCcu +:: +Mode +:: +NOFROST +: + +1733 +offt + = +EMS_OFFSET_JunksSMesge2_no_o_mp +; + +1735  + gHtgCcu +:: +Mode +:: +ECO +: + +1736  +HtgCcu +:: +Mode +:: +NIGHT +: + +1737 +offt + = +EMS_OFFSET_JunksSMesge2_eco_mp +; + +1739  + gHtgCcu +:: +Mode +:: +HEAT +: + +1740  +HtgCcu +:: +Mode +:: +DAY +: + +1741 +offt + = +EMS_OFFSET_JunksSMesge2_ht_mp +; + +1744  +HtgCcu +:: +Mode +:: +AUTO +: + +1745 +ut8_t + +mode_ty + = +hc +-> +g_mode_ty +( +this +-> +ags +()); + +1746 i( + gmode_ty + = +HtgCcu +:: +Mode +:: +NIGHT + || +mode_ty + =HtgCcu::Mode:: +ECO +) { + +1747 +offt + = +EMS_OFFSET_JunksSMesge2_eco_mp +; + +1748 } i( + gmode_ty + = +HtgCcu +:: +Mode +:: +DAY + || +mode_ty + =HtgCcu::Mode:: +HEAT +) { + +1749 +offt + = +EMS_OFFSET_JunksSMesge2_ht_mp +; + +1751 + gofft + = +EMS_OFFSET_JunksSMesge2_no_o_mp +; + +1759 i( + gofft + != -1) { + +1760  +s +[10]; + +1761 +LOG_INFO +( +F +("Settinghermostatemperatureo %s for heating circuit %d, mode %s"), + +1762 +Hrs +:: +nd_vue +( +s +, +mtu +, 2), + +1763 +hc +-> +hc_num +(), + +1764 +mode_torg +( +mode +). +c_r +()); + +1768 +wre_commd +( +t_tyids +[ +hc +-> +hc_num +(- 1], +offt +, ( +ut8_t +)(() +mtu + * () + +), +vide_tyid +); + +1773  + gThmo +:: +thmo_cmd_mp +(cڡ * +mesge +) { + +1774  +f + = +of +((*) +mesge +, 0); + +1775 +t_mtu +( +f +, +HtgCcu +:: +Mode +:: +AUTO +, +AUTO_HEATING_CIRCUIT +); + +1780  + gThmo +:: +thmo_cmd_mode +(cڡ * +mesge +) { + +1781 +t_mode +( +mesge +, +AUTO_HEATING_CIRCUIT +); + +1784  + gThmo +:: +t_mtu_vue +(cڡ * +vue +, cڡ +t8_t + +id +, cڡ +ut8_t + +mode +) { + +1785  + gf + = 0; + +1786 +ut8_t + + ghc_num + = ( +id + =-1? +AUTO_HEATING_CIRCUIT + : id; + +1787 i( + gHrs +:: +vue2t +( +vue +, +f +)) { + +1788 +t_mtu +( +f +, +mode +, +hc_num +); + +1792  + gThmo +:: +t_mp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1793 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +AUTO +); + +1796  + gThmo +:: +t_nighemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1797 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +NIGHT +); + +1800  + gThmo +:: +t_daymp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1801 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +DAY +); + +1804  + gThmo +:: +t_noomp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1805 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +NOFROST +); + +1808  + gThmo +:: +t_ecemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1809 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +ECO +); + +1812  + gThmo +:: +t_hemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1813 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +HEAT +); + +1816  + gThmo +:: +t_summmp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1817 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +SUMMER +); + +1820  + gThmo +:: +t_desigemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1821 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +DESIGN +); + +1824  + gThmo +:: +t_offemp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1825 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +OFFSET +); + +1828  + gThmo +:: +t_hidaymp +(cڡ * +vue +, cڡ +t8_t + +id +) { + +1829 +t_mtu_vue +( +vue +, +id +, +HtgCcu +:: +Mode +:: +HOLIDAY +); + +1833  + gThmo +:: +add_commds +() { + +1835 i(( +this +-> +ags +(& +EMSdevi +:: +EMS_DEVICE_FLAG_NO_WRITE +) == EMSdevice::EMS_DEVICE_FLAG_NO_WRITE) { + +1840 +gi_mq_cmd +( +F +("wwmode"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_wwmode +(value, id); }); + +1841 +gi_mq_cmd +( +F +("mp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_mp +(value, id); }); + +1842 +gi_mq_cmd +( +F +("mode"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_mode +(value, id); }); + +1844 +ut8_t + + gmod + = +this +-> +mod +(); + +1845  + gmod +) { + +1846  + gEMS_DEVICE_FLAG_RC20_2 +: + +1847 +gi_mq_cmd +( +F +("nighemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_nighemp +(value, id); }); + +1848 +gi_mq_cmd +( +F +("daymp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_daymp +(value, id); }); + +1850  + gEMS_DEVICE_FLAG_RC30_1 +: + +1851 +gi_mq_cmd +( +F +("ockofft"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_ockofft +(value, id); }); + +1852 +gi_mq_cmd +( +F +("nguage"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_nguage +(value, id); }); + +1853 +gi_mq_cmd +( +F +("diy"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_diy +(value, id); }); + +1854  + gEMS_DEVICE_FLAG_RC35 +: + +1855 +gi_mq_cmd +( +F +("nighemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_nighemp +(value, id); }); + +1856 +gi_mq_cmd +( +F +("daymp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_daymp +(value, id); }); + +1857 +gi_mq_cmd +( +F +("noomp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_noomp +(value, id); }); + +1858 +gi_mq_cmd +( +F +("mّemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_mّemp +(value, id); }); + +1859 +gi_mq_cmd +( +F +("dime"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_dime +(value, id); }); + +1860 +gi_mq_cmd +( +F +("mexemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_mexemp +(value, id); }); + +1861 +gi_mq_cmd +( +F +("lemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_lemp +(value, id); }); + +1862 +gi_mq_cmd +( +F +("budg"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_budg +(value, id); }); + +1863 +gi_mq_cmd +( +F +("cڌ"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_cڌ +(value, id); }); + +1864 +gi_mq_cmd +( +F +("u"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_u +(value, id); }); + +1865 +gi_mq_cmd +( +F +("y"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_y +(value, id); }); + +1866 +gi_mq_cmd +( +F +("hiday"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_hiday +(value, id); }); + +1867 +gi_mq_cmd +( +F +("summmp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_summmp +(value, id); }); + +1868 +gi_mq_cmd +( +F +("desigemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_desigemp +(value, id); }); + +1869 +gi_mq_cmd +( +F +("offemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_offemp +(value, id); }); + +1870 +gi_mq_cmd +( +F +("hidaymp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_hidaymp +(value, id); }); + +1872  + gEMS_DEVICE_FLAG_JUNKERS +: + +1873 +gi_mq_cmd +( +F +("noomp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_noomp +(value, id); }); + +1874 +gi_mq_cmd +( +F +("ecemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_ecemp +(value, id); }); + +1875 +gi_mq_cmd +( +F +("hemp"), [&](cڡ * +vue +, cڡ +t8_t + +id +{ +t_hemp +(value, id); }); + + @src/devices/thermostat.h + +19 #ide +EMSESP_THERMOSTAT_H + + +20  + #EMSESP_THERMOSTAT_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +27  + ~"emsdevi.h +" + +28  + ~"gm.h +" + +29  + ~"em.h +" + +30  + ~"hrs.h +" + +31  + ~"mq.h +" + +33  + ~ + +34  + ~ + +36 +mea + + gem + { + +38 as + cThmo + : +public + +EMSdevi + { + +39 +public +: + +40 +Thmo +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +); + +41 as + cHtgCcu + { + +42 + gpublic +: + +43 +HtgCcu +(cڡ +ut8_t + +hc_num +) + +44 : +hc_num_ +( +hc_num +) + +45 , +ha_gied_ +( +l +) { + +47 ~ +HtgCcu +() = ; + +49 +t16_t + + got_roomTemp + = +EMS_VALUE_SHORT_NOTSET +; + +50 +t16_t + + gcu_roomTemp + = +EMS_VALUE_SHORT_NOTSET +; + +51 +ut8_t + + gmode + = +EMS_VALUE_UINT_NOTSET +; + +52 +ut8_t + + gmode_ty + = +EMS_VALUE_UINT_NOTSET +; + +53 +ut8_t + + gsumm_mode + = +EMS_VALUE_UINT_NOTSET +; + +54 +ut8_t + + ghiday_mode + = +EMS_VALUE_UINT_NOTSET +; + +55 +ut8_t + + gdaymp + = +EMS_VALUE_UINT_NOTSET +; + +56 +ut8_t + + gnighemp + = +EMS_VALUE_UINT_NOTSET +; + +57 +ut8_t + + ghidaymp + = +EMS_VALUE_UINT_NOTSET +; + +58 +ut8_t + + ghtgty + = +EMS_VALUE_UINT_NOTSET +; + +59 +ut8_t + + grgowmp + = +EMS_VALUE_UINT_NOTSET +; + +60 +ut8_t + + gsummmp + = +EMS_VALUE_UINT_NOTSET +; + +61 +ut8_t + + gnoomp + = +EMS_VALUE_UINT_NOTSET +; + +62 +ut8_t + + gdesigemp + = +EMS_VALUE_UINT_NOTSET +; + +63 +t8_t + + goffemp + = +EMS_VALUE_INT_NOTSET +; + +65 +ut8_t + +hc_num +() const { + +66  + ghc_num_ +; + +69 +bo + +ha_gied +() const { + +70  + gha_gied_ +; + +73  +ha_gied +( +bo + +b +) { + +74 + gha_gied_ + = +b +; + +78 +bo + +is_aive +() { + +79  + gHrs +:: +hasVue +( +ot_roomTemp +); + +82 +ut8_t + +g_mode +(ut8_ +ags +) const; + +83 +ut8_t + +g_mode_ty +(ut8_ +ags +) const; + +85 + gMode + : +ut8_t + { +UNKNOWN +, + gOFF +, + gMANUAL +, + gAUTO +, + gDAY +, + gNIGHT +, + gHEAT +, + gNOFROST +, + gECO +, + gHOLIDAY +, + gCOMFORT +, + gOFFSET +, + gDESIGN +, + gSUMMER + }; + +88 +nd + +le + +bo + + gݔ +<(cڡ + gd +:: +shed_r +< +HtgCcu +> & +lhs +, cڡ std::shed_r & +rhs +) { + +89  ( +lhs +-> +hc_num_ + < +rhs +->hc_num_); + +92 + give +: + +93 +ut8_t + +hc_num_ +; + +94 +bo + + gha_gied_ +; + +97  + gd +:: +rg + +mode_torg +( +ut8_t + +mode +); + +99 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +100 +vtu +  +publish_vues +(); + +101 +vtu +  +devi_fo_web +( +JsAay + & +ro +); + +102 +vtu + +bo + +upded_vues +(); + +103 +vtu +  +add_cڋxt_mu +(); + +105 + give +: + +106  +uuid +:: +log +:: +Logg + +logg_ +; + +108  +cse_commds +( +Shl + & +shl +,  +cڋxt +); + +109  +add_commds +(); + +112 +le + +ut8_t + +mod +() const { + +113  ( + gthis +-> +ags +() & 0x0F); + +117 + gd +:: +ve +< +ut16_t +> +mڙ_tyids +; + +118 + gd +:: +ve +< +ut16_t +> +t_tyids +; + +119 + gd +:: +ve +< +ut16_t +> +tim_tyids +; + +121 + gd +:: +rg + +dime_ +; + +123 +ut8_t + + gmq_fm_ +; + +124 +bo + + gchged_ + = +l +; + +127 +ut8_t + + gibaMaDiy_ + = + +128 +EMS_VALUE_UINT_NOTSET +; + +129 +ut8_t + + gibaLguage_ + = +EMS_VALUE_UINT_NOTSET +; + +130 +t8_t + + gibaCITemtu_ + = +EMS_VALUE_INT_NOTSET +; + +131 +t8_t + + gibaMExtTemtu_ + = +EMS_VALUE_INT_NOTSET +; + +132 +ut8_t + + gibaBudgTy_ + = +EMS_VALUE_UINT_NOTSET +; + +133 +ut8_t + + gibaClockOfft_ + = +EMS_VALUE_UINT_NOTSET +; + +135 +t8_t + + gdamdoutdo܋mp_ + = +EMS_VALUE_INT_NOTSET +; + +136 +ut16_t + + gmpns1_ + = +EMS_VALUE_USHORT_NOTSET +; + +137 +ut16_t + + gmpns2_ + = +EMS_VALUE_USHORT_NOTSET +; + +139 +ut8_t + + gwwSyem_ + = +EMS_VALUE_UINT_NOTSET +; + +140 +ut8_t + + gwwExa_ + = +EMS_VALUE_UINT_NOTSET +; + +141 +ut8_t + + gwwMode_ + = +EMS_VALUE_UINT_NOTSET +; + +143 + gd +:: +ve +< +d +:: +shed_r +< +HtgCcu +>> +htg_ccus_ +; + +146  +cڡex + +ut16_t + + gEMS_TYPE_RCTime + = 0x06; + +147  +cڡex + +ut16_t + + gEMS_TYPE_RCOutdoTemp + = 0xA3; + +150  +cڡex + +ut8_t + + gEMS_OFFSET_RC10StusMesge_ot + = 1; + +151  +cڡex + +ut8_t + + gEMS_OFFSET_RC10StusMesge_cu + = 2; + +152  +cڡex + +ut8_t + + gEMS_OFFSET_RC10S_mp + = 4; + +154  +cڡex + +ut8_t + + gEMS_OFFSET_RC20StusMesge_ot + = 1; + +155  +cڡex + +ut8_t + + gEMS_OFFSET_RC20StusMesge_cu + = 2; + +156  +cڡex + +ut8_t + + gEMS_OFFSET_RC20S_mode + = 23; + +157  +cڡex + +ut8_t + + gEMS_OFFSET_RC20S_mp + = 28; + +159  +cڡex + +ut8_t + + gEMS_OFFSET_RC20_2_S_mode + = 3; + +160  +cڡex + +ut8_t + + gEMS_OFFSET_RC20_2_S_mp_night + = 1; + +161  +cڡex + +ut8_t + + gEMS_OFFSET_RC20_2_S_mp_day + = 2; + +163  +cڡex + +ut8_t + + gEMS_OFFSET_RC30StusMesge_ot + = 1; + +164  +cڡex + +ut8_t + + gEMS_OFFSET_RC30StusMesge_cu + = 2; + +165  +cڡex + +ut8_t + + gEMS_OFFSET_RC30S_mode + = 23; + +166  +cڡex + +ut8_t + + gEMS_OFFSET_RC30S_mp + = 28; + +168  +cڡex + +ut8_t + + gEMS_OFFSET_RC35StusMesge_ot + = 2; + +169  +cڡex + +ut8_t + + gEMS_OFFSET_RC35StusMesge_cu + = 3; + +170  +cڡex + +ut8_t + + gEMS_OFFSET_RC35StusMesge_mode + = 1; + +171  +cڡex + +ut8_t + + gEMS_OFFSET_RC35StusMesge_mode1 + = 0; + +172  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mode + = 7; + +173  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mp_day + = 2; + +174  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mp_night + = 1; + +175  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mp_hiday + = 3; + +176  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_htgty + = 0; + +177  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_rgowmp + = 14; + +178  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_emp + = 37; + +179  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mp_offt + = 6; + +180  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mp_design + = 17; + +181  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mp_summ + = 22; + +182  +cڡex + +ut8_t + + gEMS_OFFSET_RC35S_mp_noo + = 23; + +184  +cڡex + +ut8_t + + gEMS_OFFSET_EasyStusMesge_ot + = 10; + +185  +cڡex + +ut8_t + + gEMS_OFFSET_EasyStusMesge_cu + = 8; + +187  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSStusMesge_mode + = 10; + +188  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSStusMesge_ot + = 3; + +189  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSStusMesge_cu + = 0; + +190  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSStusMesge_cuot + = 6; + +191  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSS_mode + = 0; + +192  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSS_mp_comft3 + = 1; + +193  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSS_mp_comft2 + = 2; + +194  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSS_mp_comft1 + = 3; + +195  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSS_mp_eco + = 4; + +196  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSS_mp_ot + = 8; + +197  +cڡex + +ut8_t + + gEMS_OFFSET_RCPLUSS_mu_ot + = 10; + +199  +cڡex + +ut8_t + + gEMS_OFFSET_JunksStusMesge_daymode + = 0; + +200  +cڡex + +ut8_t + + gEMS_OFFSET_JunksStusMesge_mode + = 1; + +201  +cڡex + +ut8_t + + gEMS_OFFSET_JunksStusMesge_ot + = 2; + +202  +cڡex + +ut8_t + + gEMS_OFFSET_JunksStusMesge_cu + = 4; + +203  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge_day_mp + = 17; + +204  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge_night_mp + = 16; + +205  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge_no_o_mp + = 15; + +206  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge_t_mode + = 14; + +207  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge2_t_mode + = 4; + +208  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge2_no_o_mp + = 5; + +209  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge2_eco_mp + = 6; + +210  +cڡex + +ut8_t + + gEMS_OFFSET_JunksSMesge2_ht_mp + = 7; + +212  +cڡex + +ut8_t + + gAUTO_HEATING_CIRCUIT + = 0; + +215  +cڡex + +ut8_t + + gEMS_TYPE_IBAStgs + = 0xA5; + +216  +cڡex + +ut8_t + + gEMS_TYPE_wwStgs + = 0x37; + +217  +cڡex + +ut8_t + + gEMS_TYPE_time + = 0x06; + +219 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +htg_ccu +( +d +::shed_r +gm +); + +220 + gd +:: +shed_r +< +Thmo +:: +HtgCcu +> +htg_ccu +(cڡ +ut8_t + +hc_num +); + +222  +gi_mq_ha_cfig +( +ut8_t + +hc_num +); + +224  +oss_RCOutdoTemp +( +d +:: +shed_r + +gm +); + +225  +oss_IBAStgs +( +d +:: +shed_r + +gm +); + +226  +oss_RCTime +( +d +:: +shed_r + +gm +); + +227  +oss_RC35wwStgs +( +d +:: +shed_r + +gm +); + +228  +oss_RC35Mڙ +( +d +:: +shed_r + +gm +); + +229  +oss_RC35S +( +d +:: +shed_r + +gm +); + +230  +oss_RC30Mڙ +( +d +:: +shed_r + +gm +); + +231  +oss_RC30S +( +d +:: +shed_r + +gm +); + +232  +oss_RC20Mڙ +( +d +:: +shed_r + +gm +); + +233  +oss_RC20S +( +d +:: +shed_r + +gm +); + +234  +oss_RC20Reme +( +d +:: +shed_r + +gm +); + +235  +oss_RC20Mڙ_2 +( +d +:: +shed_r + +gm +); + +236  +oss_RC20S_2 +( +d +:: +shed_r + +gm +); + +237  +oss_RC10Mڙ +( +d +:: +shed_r + +gm +); + +238  +oss_RC10S +( +d +:: +shed_r + +gm +); + +239  +oss_RC300Mڙ +( +d +:: +shed_r + +gm +); + +240  +oss_RC300S +( +d +:: +shed_r + +gm +); + +241  +oss_JunksMڙ +( +d +:: +shed_r + +gm +); + +242  +oss_JunksS +( +d +:: +shed_r + +gm +); + +243  +oss_JunksS2 +( +d +:: +shed_r + +gm +); + +244  +oss_EasyMڙ +( +d +:: +shed_r + +gm +); + +245  +oss_RC300WWmode +( +d +:: +shed_r + +gm +); + +248  +t_mode_n +(cڡ +ut8_t + +mode +, cڡ ut8_ +hc_num +); + +250  +t_mtu_vue +(cڡ * +vue +, cڡ +t8_t + +id +, cڡ +ut8_t + +mode +); + +251  +t_mtu +(cڡ  +mtu +, cڡ +d +:: +rg + & +mode +, cڡ +ut8_t + +hc_num +); + +252  +t_mtu +(cڡ  +mtu +, cڡ +ut8_t + +mode +, cڡ ut8_ +hc_num +); + +255  +thmo_cmd_mp +(cڡ * +mesge +); + +256  +thmo_cmd_mode +(cڡ * +mesge +); + +259  +t_mode +(cڡ * +vue +, cڡ +t8_t + +id +); + +260  +t_cڌ +(cڡ * +vue +, cڡ +t8_t + +id +); + +261  +t_hiday +(cڡ * +vue +, cڡ +t8_t + +id +); + +262  +t_u +(cڡ * +vue +, cڡ +t8_t + +id +); + +263  +t_y +(cڡ * +vue +, cڡ +t8_t + +id +); + +265  +t_mp +(cڡ * +vue +, cڡ +t8_t + +id +); + +266  +t_nighemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +267  +t_daymp +(cڡ * +vue +, cڡ +t8_t + +id +); + +268  +t_noomp +(cڡ * +vue +, cڡ +t8_t + +id +); + +269  +t_ecemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +270  +t_hemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +271  +t_summmp +(cڡ * +vue +, cڡ +t8_t + +id +); + +272  +t_desigemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +273  +t_offemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +274  +t_hidaymp +(cڡ * +vue +, cڡ +t8_t + +id +); + +276  +t_mّemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +279  +t_wwmode +(cڡ * +vue +, cڡ +t8_t + +id +); + +280  +t_dime +(cڡ * +vue +, cڡ +t8_t + +id +); + +281  +t_mexemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +282  +t_ockofft +(cڡ * +vue +, cڡ +t8_t + +id +); + +283  +t_lemp +(cڡ * +vue +, cڡ +t8_t + +id +); + +284  +t_diy +(cڡ * +vue +, cڡ +t8_t + +id +); + +285  +t_budg +(cڡ * +vue +, cڡ +t8_t + +id +); + +286  +t_nguage +(cڡ * +vue +, cڡ +t8_t + +id +); + + @src/emsdevice.cpp + +19  + ~"emsdevi.h +" + +20  + ~"em.h +" + +21  + ~"mq.h +" + +23 +mea + + gem + { + +25 + guuid +:: +log +:: +Logg + +EMSdevi +:: +logg_ +{ +F_ +( +em +), uuid::log:: +Facy +:: +CONSOLE +}; + +27 + gd +:: +rg + +EMSdevi +:: +bnd_to_rg +() const { + +28  +bnd_ +) { + +29  +EMSdevi +:: +Bnd +:: +BOSCH +: + +30  +ad_ash_rg +( +F +("Bosch")); + +32  + gEMSdevi +:: +Bnd +:: +JUNKERS +: + +33  +ad_ash_rg +( +F +("Junkers")); + +35  + gEMSdevi +:: +Bnd +:: +BUDERUS +: + +36  +ad_ash_rg +( +F +("Buderus")); + +38  + gEMSdevi +:: +Bnd +:: +NEFIT +: + +39  +ad_ash_rg +( +F +("Nefit")); + +41  + gEMSdevi +:: +Bnd +:: +SIEGER +: + +42  +ad_ash_rg +( +F +("Sieger")); + +44  + gEMSdevi +:: +Bnd +:: +WORCESTER +: + +45  +ad_ash_rg +( +F +("Worcester")); + +47  + gEMSdevi +:: +Bnd +:: +NO_BRAND +: + +49  +ad_ash_rg +( +F +("---")); + +53  + gd +:: +rg +{}; + +57 + gd +:: +rg + +EMSdevi +:: +devi_ty_tic_me +(cڡ +ut8_t + +devi_ty +) { + +58  +devi_ty +) { + +59  +DeviTy +:: +SERVICEKEY +: + +60  +ad_ash_rg +( +F +("system_cmd")); + +63  + gDeviTy +:: +BOILER +: + +64  +ad_ash_rg +( +F +("boiler_cmd")); + +67  + gDeviTy +:: +THERMOSTAT +: + +68  +ad_ash_rg +( +F +("thermostat_cmd")); + +71  + gDeviTy +:: +HEATPUMP +: + +72  +ad_ash_rg +( +F +("heatpump_cmd")); + +75  + gDeviTy +:: +SOLAR +: + +76  +ad_ash_rg +( +F +("solar_cmd")); + +79  + gDeviTy +:: +MIXING +: + +80  +ad_ash_rg +( +F +("mixing_cmd")); + +84  +d +:: +rg +{}; + +89 + gd +:: +rg + +EMSdevi +:: +devi_ty_me +() const { + +90  +devi_ty_ +) { + +91  +DeviTy +:: +BOILER +: + +92  +ad_ash_rg +( +F +("Boiler")); + +95  + gDeviTy +:: +THERMOSTAT +: + +96  +ad_ash_rg +( +F +("Thermostat")); + +99  + gDeviTy +:: +HEATPUMP +: + +100  +ad_ash_rg +( +F +("Heat Pump")); + +103  + gDeviTy +:: +SOLAR +: + +104  +ad_ash_rg +( +F +("Solar Module")); + +107  + gDeviTy +:: +CONNECT +: + +108  +ad_ash_rg +( +F +("Connect Module")); + +111  + gDeviTy +:: +CONTROLLER +: + +112  +ad_ash_rg +( +F +("Controller")); + +115  + gDeviTy +:: +MIXING +: + +116  +ad_ash_rg +( +F +("Mixing Module")); + +119  + gDeviTy +:: +SWITCH +: + +120  +ad_ash_rg +( +F +("Switching Module")); + +123  + gDeviTy +:: +GATEWAY +: + +124  +ad_ash_rg +( +F +("Gateway Module")); + +128  +ad_ash_rg +( +F +("Unknown")); + +134 +ut8_t + + gEMSdevi +:: +decode_bnd +(ut8_ +vue +) { + +135  +vue +) { + +137  +EMSdevi +:: +Bnd +:: +BOSCH +; + +140  +EMSdevi +:: +Bnd +:: +JUNKERS +; + +143  +EMSdevi +:: +Bnd +:: +BUDERUS +; + +146  +EMSdevi +:: +Bnd +:: +NEFIT +; + +149  +EMSdevi +:: +Bnd +:: +SIEGER +; + +152  +EMSdevi +:: +Bnd +:: +WORCESTER +; + +156  +EMSdevi +:: +Bnd +:: +NO_BRAND +; + +162 + gd +:: +rg + +EMSdevi +:: +to_rg +() const { + +163 +d +:: +rg + +r +(160, '\0'); + +166 i( + godu_id_ + == 0) { + +167 +tf_P +(& +r +[0], s. +cy +(+ 1, +PSTR +("%(DeviID:0x%02X)"), +me_ +. +c_r +(), +devi_id_ +); + +168  + gr +; + +171 i( + gbnd_ + = +Bnd +:: +NO_BRAND +) { + +172 +tf_P +(& +r +[0], s. +cy +(+ 1, +PSTR +("%(DeviID:0x%02X, ProduID:%d, Vsi:%s)"), +me_ +. +c_r +(), +devi_id_ +, +odu_id_ +, +vsi_ +.c_str()); + +174 +tf_P +(& +r +[0], + +175 +r +. +cy +() + 1, + +176 +PSTR +("%s %s (DeviceID:0x%02X ProductID:%d, Version:%s)"), + +177 +bnd_to_rg +(). +c_r +(), + +178 +me_ +. +c_r +(), + +179 +devi_id_ +, + +180 +odu_id_ +, + +181 +vsi_ +. +c_r +()); + +184  + gr +; + +188 + gd +:: +rg + +EMSdevi +:: +to_rg_sht +() const { + +189 +d +:: +rg + +r +(160, '\0'); + +190 i( + gbnd_ + = +Bnd +:: +NO_BRAND +) { + +191 +tf_P +(& +r +[0], s. +cy +(+ 1, +PSTR +("%s: %s"), +devi_ty_me +(). +c_r +(), +me_ +.c_str()); + +193 +tf_P +(& +r +[0], s. +cy +(+ 1, +PSTR +("%s: %%s"), +devi_ty_me +(). +c_r +(), +bnd_to_rg +().c_r(), +me_ +.c_str()); + +195  + gr +; + +199  + gEMSdevi +:: +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +200 +shl +. +tn +( +F +("%s: %s"), +devi_ty_me +(). +c_r +(), +to_rg +().c_str()); + +204  + gEMSdevi +:: +tch_vues +() { + +205 +LOG_DEBUG +( +F +("Fchg vuef devi ID 0x%02X"), +g_devi_id +()); + +207 cڡut& + gtf + : +gm_funis_ +) { + +208 i( +tf +. +tch_ +) { + +209 +ad_commd +( +tf +. +gm_ty_id_ +); + +215  + gEMSdevi +:: +togg_tch +( +ut16_t + +gm_id +, +bo + +togg +) { + +216 +LOG_DEBUG +( +F +("Togglg fch f devi ID 0x%02X,egm ID 0x%02X%d"), +g_devi_id +(), +gm_id +, +togg +); + +218 aut& + gtf + : +gm_funis_ +) { + +219 i( +tf +. +gm_ty_id_ + = +gm_id +) { + +220 +tf +. +tch_ + = +togg +; + +226  + gEMSdevi +:: +show_gm_hdrs +( +uuid +:: +cse +:: +Shl + & +shl +) { + +227 i( +gm_funis_ +. +size +() == 0) { + +231 + gshl +. +tf +( +F +(" Thi%wȻd؋gmy IDs: "), +devi_ty_me +(). +c_r +()); + +232 cڡut& + gtf + : +gm_funis_ +) { + +233 +shl +. +tf +( +F +("0x%02X "), +tf +. +gm_ty_id_ +); + +235 + gshl +. +n +(); + +239  + gEMSdevi +:: +show_mq_hdrs +( +uuid +:: +cse +:: +Shl + & +shl +) { + +240 +Mq +:: +show_tic_hdrs +( +shl +, +this +-> +devi_ty_ +); + +243  + gEMSdevi +:: +gi_mq_tic +(cڡ +d +:: +rg + & +tic +, +mq_subfuni_p + +f +) { + +244 +LOG_DEBUG +( +F +("Regig MQTTi%f devi ID %02Xndy %s"), +tic +. +c_r +(), +this +-> +devi_id_ +,his-> +devi_ty_me +().c_str()); + +245 + gMq +:: +subsibe +( +this +-> +devi_ty_ +, +tic +, +f +); + +248  + gEMSdevi +:: +gi_mq_cmd +(cڡ +__FshSgHr + * +cmd +, +mq_cmdfuni_p + +f +) { + +249 + gMq +:: +add_commd +( +this +-> +devi_ty_ +,his-> +devi_id_ +, +cmd +, +f +); + +253  + gEMSdevi +:: +gi_gm_ty +(cڡ +ut16_t + +gm_ty_id +, cڡ +__FshSgHr + * +gm_ty_me +, +bo + +tch +, +oss_funi_p + +f +) { + +254 + ggm_funis_ +. +ema_back +( +gm_ty_id +, +gm_ty_me +, +tch +, +f +); + +258 + gd +:: +rg + +EMSdevi +:: +gm_ty_me +( +d +:: +shed_r + +gm +) { + +260 i( +gm +-> +ty_id + = +EMS_TYPE_VERSION +) { + +261  +ad_ash_rg +( +F +("Version")); + +262 } i( + ggm +-> + gty_id + = +EMS_TYPE_UBADevis +) { + +263  +ad_ash_rg +( +F +("UBADevices")); + +266 cڡut& + gtf + : +gm_funis_ +) { + +267 i(( +tf +. +gm_ty_id_ + = +gm +-> +ty_id +) && ((telegram->type_id & 0xF0) != 0xF0)) { + +268  +uuid +:: +ad_ash_rg +( +tf +. +gm_ty_me_ +); + +272  + gd +:: +rg +{}; + +277 +bo + + gEMSdevi +:: +hd_gm +( +d +:: +shed_r + +gm +) { + +278 cڡut& +tf + : +gm_funis_ +) { + +279 i( +tf +. +gm_ty_id_ + = +gm +-> +ty_id +) { + +282 i( +gm +-> +mesge_ngth + == 0) { + +283 +LOG_DEBUG +( +F +("Thigm (%sinلecognized byhEMS bus"), +uuid +:: +ad_ash_rg +( +tf +. +gm_ty_me_ +). +c_r +()); + +284 +togg_tch +( +tf +. +gm_ty_id_ +, +l +); + +285  + gl +; + +288 +LOG_DEBUG +( +F +("Reived %s"), +uuid +:: +ad_ash_rg +( +tf +. +gm_ty_me_ +). +c_r +()); + +289 + gtf +. +oss_funi_ +( +gm +); + +290  + gue +; + +293  + gl +; + +297  + gEMSdevi +:: +wre_commd +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +offt +, ut8_* +mesge_da +, cڡ ut8_ +mesge_ngth +, cڡ ut16_ +vide_tyid +) { + +298 + gEMSESP +:: +nd_wre_que +( +ty_id +, +this +-> +g_devi_id +(), +offt +, +mesge_da +, +mesge_ngth +, +vide_tyid +); + +302  + gEMSdevi +:: +wre_commd +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +offt +, cڡ ut8_ +vue +, cڡ ut16_ +vide_tyid +) { + +303 + gEMSESP +:: +nd_wre_que +( +ty_id +, +this +-> +g_devi_id +(), +offt +, +vue +, +vide_tyid +); + +307  + gEMSdevi +:: +wre_commd +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +offt +, cڡ ut8_ +vue +) { + +308 + gEMSESP +:: +nd_wre_que +( +ty_id +, +this +-> +g_devi_id +(), +offt +, +vue +, 0); + +312  + gEMSdevi +:: +ad_commd +(cڡ +ut16_t + +ty_id +) { + +313 +EMSESP +:: +nd_ad_que +( +ty_id +, +g_devi_id +()); + +317  + gEMSdevi +:: +t_vue +( +uuid +:: +cse +:: +Shl + & +shl +, +ut8_t + +ddg +, cڡ +__FshSgHr + * +me +, cڡ __FshSgH* +vue +) { + +318 +t_vue +( +shl +, +ddg +, +me +, +uuid +:: +ad_ash_rg +( +vue +). +c_r +()); + +322  + gEMSdevi +:: +t_vue +( +uuid +:: +cse +:: +Shl + & +shl +, +ut8_t + +ddg +, cڡ +__FshSgHr + * +me +, cڡ * +vue +) { + +323 +ut8_t + + gi + = +ddg +; + +324  + gi +-- > 0) { + +325 + gshl +. +t +( +F +(" ")); + +328 + gshl +. +tn +( +PSTR +("%s: %s"), +uuid +:: +ad_ash_rg +( +me +). +c_r +(), +vue +); + +332  + gEMSdevi +:: +add_cڋxt_commds +( +cڋxt +) { + +334 +ash_rg_ve + +ms +; + +335 i(( + gcڋxt + = +ShlCڋxt +:: +THERMOSTAT +|| ( +cڋxt + =ShlCڋxt:: +MIXING +)) { + +336 +ms + = +ash_rg_ve +{ +F_ +( +cmd_tiڮ +), F_( +da_tiڮ +), F_( +hc_tiڮ +)}; + +338 + gms + = +ash_rg_ve +{ +F_ +( +cmd_tiڮ +), F_( +da_tiڮ +)}; + +341 + gEMSESPShl +:: +commds +-> +add_commd +( + +342 +cڋxt +, + +343 +CommdFgs +:: +ADMIN +, + +344 +ash_rg_ve +{ +F_ +( + +)}, + +345 +ms +, + +346 [&]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +347 +ut8_t + +devi_ty_ + = +devi_ty +(); + +348 i( +gumts +. +emy +()) { + +350 +shl +. +t +("Available commands:"); + +351 cڡut& +cf + : +Mq +:: +commds +()) { + +352 i( +cf +. +devi_ty_ + == device_type_) { + +353 +shl +. +tf +(" %s", +uuid +:: +ad_ash_rg +( +cf +. +cmd_ +). +c_r +()); + +356 +shl +. +n +(); + +360 cڡ * +cmd + = +gumts +[0]. +c_r +(); + +361 i( +gumts +. +size +() == 1) { + +363 +Mq +:: +_commd +( +devi_ty_ +, +cmd +, +nuαr +, -1); + +364 } i( +gumts +. +size +() == 2) { + +366 +Mq +:: +_commd +( +devi_ty_ +, +cmd +, +gumts +. +back +(). +c_r +(), -1); + +369 +Mq +:: +_commd +( +devi_ty_ +, +cmd +, +gumts +[1]. +c_r +(), +oi +(arguments[2].c_str())); + +372 [&]( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts +) -> std::vector { + +373 i( +gumts +. +size +() > 0) { + +376 +d +:: +ve + +commds +; + +377 cڡut& +cf + : +Mq +:: +commds +()) { + +378 i( +cf +. +devi_ty_ + = +devi_ty +()) { + +379 +commds +. +ema_back +( +uuid +:: +ad_ash_rg +( +cf +. +cmd_ +)); + +382  +commds +; + + @src/emsdevice.h + +19 #ide +EMSESP_EMSDEVICE_H_ + + +20  + #EMSESP_EMSDEVICE_H_ + + + ) + +22  + ~ + +23  + ~ + +24  + ~ + +26  + ~"emsy.h +" + +27  + ~"gm.h +" + +28  + ~"mq.h +" + +29  + ~"hrs.h +" + +31 +mea + + gem + { + +33 as + cEMSdevi + { + +34 + gpublic +: + +35  +cڡex + +ut8_t + +EMS_DEVICES_MAX_TELEGRAMS + = 20; + +38 +EMSdevi +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, cڡ +d +:: +rg + & +vsi +, cڡ std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +39 : +devi_ty_ +( +devi_ty +) + +40 , +devi_id_ +( +devi_id +) + +41 , +odu_id_ +( +odu_id +) + +42 , +vsi_ +( +vsi +) + +43 , +me_ +( +me +) + +44 , +ags_ +( +ags +) + +45 , +bnd_ +( +bnd +) { + +48 + gvtu + ~ +EMSdevi +() = ; + +50 +le + +ut8_t + +g_devi_id +() const { + +51  + gdevi_id_ +; + +54 + gd +:: +rg + +devi_ty_me +() const; + +55  + gd +:: +rg + +devi_ty_tic_me +(cڡ +ut8_t + +devi_ty +); + +57 +le + +ut8_t + +odu_id +() const { + +58  + godu_id_ +; + +61  +odu_id +( +ut8_t +roduct_id) { + +62 + godu_id_ + = +odu_id +; + +65 +le + +bo + +is_devi_id +( +ut8_t + +devi_id +) { + +66  (( + gdevi_id + & 0x7F=( +devi_id_ + & 0x7F)); + +69 +le + +ut8_t + +ags +() const { + +70  + gags_ +; + +73 +le +  +ags +( +ut8_t + flags) { + +74 + gags_ + = +ags +; + +78 +le + +ut8_t + +devi_ty +() const { + +79  + gdevi_ty_ +; + +82 +le +  +vsi +( +d +:: +rg + & version) { + +83 +vsi_ + = +vsi +; + +86 +le + + gd +:: +rg + +vsi +() const { + +87  +vsi_ +; + +90 +le +  +bnd +( +ut8_t + brand) { + +91 + gbnd_ + = +bnd +; + +94 +le + +ut8_t + +bnd +() const { + +95  + gbnd_ +; + +98 +le +  +me +(cڡ +d +:: +rg + &ame) { + +99 +me_ + = +me +; + +102 +le + + gd +:: +rg + +me +() const { + +103  +me_ +; + +106 +le + +ut8_t + +unique_id +() const { + +107  + gunique_id_ +; + +110 +le +  +unique_id +( +ut8_t + unique_id) { + +111 + gunique_id_ + = +unique_id +; + +114 + gd +:: +rg + +bnd_to_rg +() const; + +115  +ut8_t + +decode_bnd +(ut8_ +vue +); + +117 + gd +:: +rg + +to_rg +() const; + +118 + gd +:: +rg + +to_rg_sht +() const; + +120  +show_gm_hdrs +( +uuid +:: +cse +:: +Shl + & +shl +); + +121  +show_mq_hdrs +( +uuid +:: +cse +:: +Shl + & +shl +); + +123 +usg + + goss_funi_p + = +d +:: +funi +<(d:: +shed_r +)>; + +124  +gi_gm_ty +(cڡ +ut16_t + +gm_ty_id +, cڡ +__FshSgHr + * +gm_ty_me +, +bo + +tch +, +oss_funi_p + +cb +); + +125 +bo + +hd_gm +( +d +:: +shed_r + +gm +); + +127  +wre_commd +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +offt +, ut8_* +mesge_da +, cڡ ut8_ +mesge_ngth +, cڡ ut16_ +vide_tyid +); + +128  +wre_commd +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +offt +, cڡ ut8_ +vue +, cڡ ut16_ +vide_tyid +); + +129  +wre_commd +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +offt +, cڡ ut8_ +vue +); + +131  +ad_commd +(cڡ +ut16_t + +ty_id +); + +133  +add_cڋxt_commds +( +cڋxt +); + +135  +gi_mq_tic +(cڡ +d +:: +rg + & +tic +, +mq_subfuni_p + +f +); + +136  +gi_mq_cmd +(cڡ +__FshSgHr + * +cmd +, +mq_cmdfuni_p + +f +); + +139 +vtu +  +show_vues +( +uuid +:: +cse +:: +Shl + & +shl +) = 0; + +140 +vtu +  +publish_vues +() = 0; + +141 +vtu + +bo + +upded_vues +() = 0; + +142 +vtu +  +add_cڋxt_mu +() = 0; + +143 +vtu +  +devi_fo_web +( +JsAay + & +ro +) = 0; + +145 + gd +:: +rg + +gm_ty_me +( +d +:: +shed_r + +gm +); + +147  +tch_vues +(); + +148  +togg_tch +( +ut16_t + +gm_id +, +bo + +togg +); + +150  +rve_mem +( +size_t + +n +) { + +151 + ggm_funis_ +. +rve +( +n +); + +161 + gme + < +tyme + + gVue +> + +162  +t_vue +( +uuid +:: +cse +:: +Shl + & +shl +, + +163 +ut8_t + +ddg +, + +164 cڡ +__FshSgHr + * +me +, + +165 +Vue + & +vue +, + +166 cڡ +__FshSgHr + * +suffix +, + +167 cڡ +ut8_t + +fm + = 0) { + +168  +bufr +[15]; + +169 i( + gHrs +:: +nd_vue +( +bufr +, +vue +, +fm += +nuαr +) { + +173 +ut8_t + + gi + = +ddg +; + +174  + gi +-- > 0) { + +175 + gshl +. +t +( +F +(" ")); + +178 + gshl +. +tf +( +PSTR +("%s: %s"), +uuid +:: +ad_ash_rg +( +me +). +c_r +(), +bufr +); + +180 i( + gsuffix + ! +nuαr +) { + +181 +shl +. +n +( +uuid +:: +ad_ash_rg +( +suffix +). +c_r +()); + +183 + gshl +. +n +(); + +189 + gme + < +tyme + + gVue +> + +190  +nd_vue_js +( +JsAay + & +js +, + +191 cڡ +d +:: +rg + & +efix +, + +192 cڡ +__FshSgHr + * +me +, + +193 +Vue + & +vue +, + +194 cڡ +__FshSgHr + * +suffix +, + +195 cڡ +ut8_t + +fm + = 0) { + +196  +bufr +[15]; + +197 i( + gHrs +:: +nd_vue +( +bufr +, +vue +, +fm += +nuαr +) { + +201 +JsObje + + gdaEmt + = +js +. +NeedObje +(); + +205 i( + gsuffix + ! +nuαr +) { + +206 +d +:: +rg + +xt +(20, '\0'); + +207 +tf_P +(& +xt +[0],ext. +cy +(+ 1, +PSTR +("%s%s"), +bufr +, +uuid +:: +ad_ash_rg +( +suffix +). +c_r +()); + +208 + gdaEmt +["vue"] = +xt +; + +210 + gdaEmt +["vue"] = +bufr +; + +213 + gd +:: +rg + +xt2 +(100, '\0'); + +214 +tf_P +(& +xt2 +[0],ext2. +cy +(+ 1, +PSTR +("%s%s"), +efix +. +c_r +(), +uuid +:: +ad_ash_rg +( +me +).c_str()); + +215 + gdaEmt +["me"] = +xt2 +; + +218  +t_vue +( +uuid +:: +cse +:: +Shl + & +shl +, +ut8_t + +ddg +, cڡ +__FshSgHr + * +me +, cڡ __FshSgH* +vue +); + +219  +t_vue +( +uuid +:: +cse +:: +Shl + & +shl +, +ut8_t + +ddg +, cڡ +__FshSgHr + * +me +, cڡ * +vue +); + +221 + gBnd + : +ut8_t + { + +222 +NO_BRAND +, + +223 + gBOSCH +, + +224 + gJUNKERS +, + +225 + gBUDERUS +, + +226 + gNEFIT +, + +227 + gSIEGER +, + +228 + gWORCESTER + + +231 + gDeviTy + : +ut8_t + { + +232 +SERVICEKEY + = 0, + +233 + gBOILER +, + +234 + gTHERMOSTAT +, + +235 + gMIXING +, + +236 + gSOLAR +, + +237 + gHEATPUMP +, + +238 + gGATEWAY +, + +239 + gSWITCH +, + +240 + gCONTROLLER +, + +241 + gCONNECT + + +246  +cڡex + +ut8_t + + gEMS_DEVICE_ID_BOILER + = 0x08; + +247  +cڡex + +ut8_t + + gEMS_DEVICE_ID_MODEM + = 0x48; + +250  +cڡex + +ut16_t + + gEMS_TYPE_VERSION + = 0x02; + +251  +cڡex + +ut16_t + + gEMS_TYPE_UBADevis + = 0x07; + +254  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_NONE + = 0; + +257  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_SM10 + = 1; + +258  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_SM100 + = 2; + +259  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_ISM + = 3; + +262  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_MMPLUS + = 1; + +263  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_MM10 + = 2; + +264  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_IPM + = 3; + +267  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_NO_WRITE + = (1 << 7); + +268  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_EASY + = 1; + +269  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC10 + = 2; + +270  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC20 + = 3; + +271  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC20_2 + = 4; + +272  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC30_1 + = 5; + +273  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC30 + = 6; + +274  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC35 + = 7; + +275  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC300 + = 8; + +276  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_RC100 + = 9; + +277  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_JUNKERS + = 10; + +278  +cڡex + +ut8_t + + gEMS_DEVICE_FLAG_JUNKERS_2 + = (1 << 6); + +280 + give +: + +281 +ut8_t + +unique_id_ +; + +282 +ut8_t + + gdevi_ty_ + = +DeviTy +:: +SERVICEKEY +; + +283 +ut8_t + + gdevi_id_ + = 0; + +284 +ut8_t + + godu_id_ + = 0; + +285 + gd +:: +rg + +vsi_ +; + +286 + gd +:: +rg + +me_ +; + +287 +ut8_t + + gags_ + = 0; + +288 +ut8_t + + gbnd_ + = +Bnd +:: +NO_BRAND +; + +290  + guuid +:: +log +:: +Logg + +logg_ +; + +292  + sTegmFuni + { + +293 +ut16_t + + ggm_ty_id_ +; + +294 cڡ +__FshSgHr + * + ggm_ty_me_ +; + +295 +bo + + gtch_ +; + +297 +oss_funi_p + + goss_funi_ +; + +299 +TegmFuni +( +ut16_t + +gm_ty_id +, cڡ +__FshSgHr + * +gm_ty_me +, +bo + +tch +, +oss_funi_p + +oss_funi +) + +300 : +gm_ty_id_ +( +gm_ty_id +) + +301 , +gm_ty_me_ +( +gm_ty_me +) + +302 , +tch_ +( +tch +) + +303 , +oss_funi_ +( +oss_funi +) { + +306 + gd +:: +ve +< +TegmFuni +> +gm_funis_ +; + + @src/emsesp.cpp + +19  + ~"em.h +" + +21 +mea + + gem + { + +23 +AsyncWebSv + +webSv +(80); + +25 #i +defed +( +ESP32 +) + +26 +ESP8266R + + gEMSESP +:: +e8266R +(& +webSv +, & +SPIFFS +); + +27 +EMSESPStgsSvi + + gEMSESP +:: +emStgsSvi + = EMSESPStgsSvi(& +webSv +, & +SPIFFS +, +EMSESP +:: +e8266R +. +gSecuryMag +()); + +28 #i +defed +( +ESP8266 +) + +29 +ESP8266R + + gEMSESP +:: +e8266R +(& +webSv +, & +LeFS +); + +30 +EMSESPStgsSvi + + gEMSESP +:: +emStgsSvi + = EMSESPStgsSvi(& +webSv +, & +LeFS +, +EMSESP +:: +e8266R +. +gSecuryMag +()); + +31 #i +defed +( +EMSESP_STANDALONE +) + +32 +FS + + gdummyFS +; + +33 +ESP8266R + + gEMSESP +:: +e8266R +(& +webSv +, & +dummyFS +); + +34 +EMSESPStgsSvi + + gEMSESP +:: +emStgsSvi + = EMSESPStgsSvi(& +webSv +, & +dummyFS +, +EMSESP +:: +e8266R +. +gSecuryMag +()); + +37 +EMSESPStusSvi + + gEMSESP +:: +emStusSvi + = EMSESPStusSvi(& +webSv +, +EMSESP +:: +e8266R +. +gSecuryMag +()); + +38 +EMSESPDevisSvi + + gEMSESP +:: +emDevisSvi + = EMSESPDevisSvi(& +webSv +, +EMSESP +:: +e8266R +. +gSecuryMag +()); + +40 +usg + + gDeviFgs + = +em +:: +EMSdevi +; + +41 +usg + + gDeviTy + = +em +:: +EMSdevi +:: +DeviTy +; + +42 + gd +:: +ve +< +d +:: +unique_r +< +EMSdevi +>> +EMSESP +:: +emsdevis +; + +43 + gd +:: +ve +< +em +:: +EMSESP +:: +Devi_cd +> EMSESP:: +devi_libry_ +; + +45 + guuid +:: +log +:: +Logg + +EMSESP +:: +logg_ +{ +F_ +( +em +), uuid::log:: +Facy +:: +KERN +}; + +48 +RxSvi + + gEMSESP +:: +rxrvi_ +; + +49 +TxSvi + + gEMSESP +:: +txrvi_ +; + +50 +Mq + + gEMSESP +:: +mq_ +; + +51 +Syem + + gEMSESP +:: +syem_ +; + +52 +Cse + + gEMSESP +:: +cse_ +; + +53 +Sss + + gEMSESP +:: +nss_ +; + +54 +Show + + gEMSESP +:: +show_ +; + +57 +ut8_t + + gEMSESP +:: +au_ma_thmo_ + = +EMSESP_DEFAULT_MASTER_THERMOSTAT +; + +58 +ut16_t + + gEMSESP +:: +wch_id_ + = +WATCH_ID_NONE +; + +59 +ut8_t + + gEMSESP +:: +wch_ + = 0; + +60 +ut16_t + + gEMSESP +:: +ad_id_ + = +WATCH_ID_NONE +; + +61 +ut16_t + + gEMSESP +:: +publish_id_ + = 0; + +62 +bo + + gEMSESP +:: +p_w_aive_ + = +l +; + +63 +ut32_t + + gEMSESP +:: +ϡ_tch_ + = 0; + +64 +ut8_t + + gEMSESP +:: +unique_id_cou_ + = 0; + +68  + gEMSESP +:: +tch_devi_vues +(cڡ +ut8_t + +devi_id +) { + +69 cڡut& +emsdevi + : +emsdevis +) { + +70 i( +emsdevi +) { + +71 i(( +devi_id + =0|| +emsdevi +-> +is_devi_id +(device_id)) { + +72 +emsdevi +-> +tch_vues +(); + +73 i( + gdevi_id + != 0) { + +82  + gEMSESP +:: +r_l_devis +() { + +83 +emsdevis +. +r +(); + +87 +ut8_t + + gEMSESP +:: +cou_devis +(cڡ ut8_ +devi_ty +) { + +88 +ut8_t + +cou + = 0; + +89 cڡut& + gemsdevi + : +emsdevis +) { + +90 i( +emsdevi +) { + +91 +cou + +( +emsdevi +-> +devi_ty +() == device_type); + +94  + gcou +; + +98  + gEMSESP +:: +sn_devis +() { + +99 +EMSESP +:: +r_l_devis +(); + +100 + gEMSESP +:: +nd_ad_que +( +EMSdevi +:: +EMS_TYPE_UBADevis +, EMSdevi:: +EMS_DEVICE_ID_BOILER +); + +107 +ut8_t + + gEMSESP +:: +check_ma_devi +(cڡ ut8_ +devi_id +, cڡ +ut16_t + +ty_id +, cڡ +bo + +ad +) { + +108 +ut16_t + + gm_id +[4] = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; + +109 +ut16_t + + gt_id +[4] = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; + +110 i( + gau_ma_thmo_ + == 0x18) { + +111  +ut8_t + +i + = 0; + gi + < 4; i++) { + +112 i( + gty_id + = +m_id +[ +i +] || +ty_id + = +t_id +[i]) { + +113 i( +ad +) { + +116  0x18 + + gi +; + +121  + gdevi_id +; + +124  + gEMSESP +:: +au_ma_thmo +(cڡ +ut8_t + +devi_id +) { + +125 +au_ma_thmo_ + = +devi_id +; + +128 +ut8_t + + gEMSESP +:: +au_ma_thmo +() { + +129  +au_ma_thmo_ +; + +133  + gEMSESP +:: +wch_id +( +ut16_t + watch_id) { + +134 +wch_id_ + = +wch_id +; + +140  + gEMSESP +:: +_tx +() { + +141 +ut8_t + +tx_mode +; + +142 + gEMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +143 +tx_mode + = +gs +.tx_mode; + +145 #ide +EMSESP_FORCE_SERIAL + + +146 +EMSut +:: + +(); + +147 +EMSut +:: +t +( +tx_mode +, +gs +. +rx_gpio +, stgs. +tx_gpio +); + +151 + gtxrvi_ +. +t +(); + +154 i( + gtx_mode + != 0) { + +155 +EMSESP +:: +tch_devi_vues +(); + +160 +ut8_t + + gEMSESP +:: +bus_us +() { + +161 i(! +rxrvi_ +. +bus_ced +()) { + +162  +BUS_STATUS_OFFLINE +; + +166 +ut32_t + + gtٮ_ + = +txrvi_ +. +gm_ad_cou +(+xrvi_. +gm_wre_cou +(); + +169 i(( + gtٮ_ + =0&& ( +txrvi_ +. +gm__cou +() == 0)) { + +170  +BUS_STATUS_CONNECTED +; + +174 i(( + gtٮ_ + =0&& ( +txrvi_ +. +gm__cou +() != 0)) { + +175  +BUS_STATUS_TX_ERRORS +; + +179 i((( + gtxrvi_ +. +gm__cou +(* 100/ + gtٮ_ +> + gEMSbus +:: +EMS_TX_ERROR_LIMIT +) { + +180  +BUS_STATUS_TX_ERRORS +; + +183  + gBUS_STATUS_CONNECTED +; + +187  + gEMSESP +:: +show_ems +( +uuid +:: +cse +:: +Shl + & +shl +) { + +189  +bus_us +()) { + +190  +BUS_STATUS_OFFLINE +: + +191 +shl +. +tn +( +F +("EMS Bus is disconnected.")); + +193  + gBUS_STATUS_TX_ERRORS +: + +194 +shl +. +tn +( +F +("EMS Bus is connected, but Tx isot stable.")); + +196  + gBUS_STATUS_CONNECTED +: + +198 +shl +. +tn +( +F +("EMS Bus is connected.")); + +202 + gshl +. +n +(); + +204 i( +bus_us +(! +BUS_STATUS_OFFLINE +) { + +205 +ut8_t + +sucss_ + = 0; + +206 i( + grxrvi_ +. +gm_r_cou +()) { + +207 + gsucss_ + = (() +rxrvi_ +. +gm_r_cou +(/ (xrvi_. +gm_cou +()) * 100; + +210 + gshl +. +tn +( +F +("EMS Bus info:")); + +211 + gEMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +{ +shl +. +tn +( +F +(" Tx mode: %d"), stgs. +tx_mode +); }); + +212 + gshl +. +tn +( +F +(" Buoc: %s"), +EMSbus +:: +is_ht3 +() ? F("HT3") : F("Buderus")); + +213 + gshl +. +tn +( +F +(" #gmived: %d"), +rxrvi_ +. +gm_cou +()); + +214 + gshl +. +tn +( +F +(" #adeque: %d"), +txrvi_ +. +gm_ad_cou +()); + +215 + gshl +. +tn +( +F +(" #wrque: %d"), +txrvi_ +. +gm_wre_cou +()); + +216 + gshl +. +tn +( +F +(" #comgms: %d (%d%%)"), +rxrvi_ +. +gm_r_cou +(), +sucss_ +); + +217 + gshl +. +tn +( +F +(" #tx fa %drs): %d"), +TxSvi +:: +MAXIMUM_TX_RETRIES +, +txrvi_ +. +gm__cou +()); + +220 + gshl +. +n +(); + +223 aut + grx_gms + = +rxrvi_ +. +queue +(); + +224 i( + grx_gms +. +emy +()) { + +225 + gshl +. +tn +( +F +("Rx Queue ismpty")); + +227 + gshl +. +tn +( +F +("Rx Queu(%ldegm%s):"), +rx_gms +. +size +(),x_telegrams.size() == 1 ? "" : "s"); + +228 cڡut& + g + : +rx_gms +) { + +229 +shl +. +tn +( +F +(" [%02d] %s"), + +. +id_ +, +ty_gm +(. +gm_ +). +c_r +()); + +233 + gshl +. +n +(); + +236 aut + gtx_gms + = +txrvi_ +. +queue +(); + +237 i( + gtx_gms +. +emy +()) { + +238 + gshl +. +tn +( +F +("Tx Queue ismpty")); + +240 + gshl +. +tn +( +F +("Tx Queu(%ldegm%s):"), +tx_gms +. +size +(),x_telegrams.size() == 1 ? "" : "s"); + +242 + gd +:: +rg + + +(10, '\0'); + +243 cڡut& + g + : +tx_gms +) { + +244 i(( + +. +gm_ +-> +ݔi += +Tegm +:: +Oti +:: +TX_RAW +) { + +245 + + = +ad_ash_rg +( +F +("RAW ")); + +246 } i(( + g +. + ggm_ +-> + gݔi += +Tegm +:: +Oti +:: +TX_READ +) { + +247 + + = +ad_ash_rg +( +F +("READ ")); + +248 } i(( + g +. + ggm_ +-> + gݔi += +Tegm +:: +Oti +:: +TX_WRITE +) { + +249 + + = +ad_ash_rg +( +F +("WRITE")); + +251 + gshl +. +tn +( +F +(" [%02d%c] %%s"), + +. +id_ +, ((. +y_ +? '*' : ' '), + +. +c_r +(), +ty_gm +(. +gm_ +).c_str()); + +255 + gshl +. +n +(); + +259  + gEMSESP +:: +show_devi_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +260 i( +emsdevis +. +emy +()) { + +261 +shl +. +tn +( +F +("No EMS devices detected. Try using 'scan devices' fromhems menu.")); + +262 + gshl +. +n +(); + +267 cڡut& + gdevi_ass + : +EMSFay +:: +devi_hdrs +()) { + +268 cڡut& +emsdevi + : +emsdevis +) { + +269 i(( +emsdevi +&& (emsdevi-> +devi_ty +(= +devi_ass +. +f +)) { + +270 +emsdevi +-> +show_vues +( +shl +); + +277  + gEMSESP +:: +show_ns_vues +( +uuid +:: +cse +:: +Shl + & +shl +) { + +278 i( +ns_devis +(). +emy +()) { + +282  + gvuer +[8] = {0}; + +283 + gshl +. +tn +( +F +("Dallasemperature sensors:")); + +284 cڡut& + gdevi + : +ns_devis +()) { + +285 +shl +. +tn +( +F +(" ID: %s, Temtu: %s°C"), +devi +. +to_rg +(). +c_r +(), +Hrs +:: +nd_vue +( +vuer +, devi. +mtu_c +, 1)); + +287 + gshl +. +n +(); + +290  + gEMSESP +:: +publish_devi_vues +( +ut8_t + +devi_ty +) { + +291 i( +Mq +:: +ced +()) { + +292 cڡut& +emsdevi + : +emsdevis +) { + +293 i( +emsdevi + && (emsdevi-> +devi_ty +() == device_type)) { + +294 +emsdevi +-> +publish_vues +(); + +300  + gEMSESP +:: +publish_h_vues +() { + +301 i( +Mq +:: +ced +()) { + +302 cڡut& +emsdevi + : +emsdevis +) { + +303 i( +emsdevi + && (emsdevi-> +devi_ty +(! +EMSdevi +:: +DeviTy +:: +BOILER +&& (emsdevi->devi_ty(!EMSdevi::DeviTy:: +THERMOSTAT +) + +304 && ( +emsdevi +-> +devi_ty +(! +EMSdevi +:: +DeviTy +:: +SOLAR +&& (emsdevi->devi_ty(!EMSdevi::DeviTy:: +MIXING +)) { + +305 +emsdevi +-> +publish_vues +(); + +311  + gEMSESP +:: +publish_ns_vues +(cڡ +bo + +f +) { + +312 i( +Mq +:: +ced +()) { + +313 i( +nss_ +. +upded_vues +(|| +f +) { + +314 +nss_ +. +publish_vues +(); + +320  + gEMSESP +:: +publish_ڣ +( +d +:: +shed_r + +gm +) { + +321 +SticJsDocumt +< +EMSESP_MAX_JSON_SIZE_SMALL +> +doc +; + +323  + gbufr +[100]; + +324 + gdoc +["c"] = +Hrs +:: +hext +( +bufr +, +gm +-> +c +); + +325 + gdoc +["de"] = +Hrs +:: +hext +( +bufr +, +gm +-> +de +); + +326 + gdoc +["ty"] = +Hrs +:: +hext +( +bufr +, +gm +-> +ty_id +); + +327 + gdoc +["offt"] = +Hrs +:: +hext +( +bufr +, +gm +-> +offt +); + +328 +ry +( +bufr +, +Hrs +:: +da_to_hex +( +gm +-> +mesge_da +,egm-> +mesge_ngth +). +c_r +()); + +329 + gdoc +["da"] = +bufr +; + +331 i( + ggm +-> + gmesge_ngth + <= 4) { + +332 +ut32_t + +vue + = 0; + +333  +ut8_t + + gi + = 0; i < + ggm +-> + gmesge_ngth +; i++) { + +334 + gvue + = ( +vue + << 8+ +gm +-> +mesge_da +[ +i +]; + +336 + gdoc +["vue"] = +vue +; + +339 + gMq +:: +publish +( +F +("ڣ"), +doc +); + +343 + gd +:: +rg + +EMSESP +:: +devi_torg +(cڡ +ut8_t + +devi_id +) { + +344 i(( +devi_id + & 0x7F= +rxrvi_ +. +ems_bus_id +()) { + +345  +ad_ash_rg +( +F +("Me")); + +346 } i( + gdevi_id + == 0x00) { + +347  +ad_ash_rg +( +F +("All")); + +349  + gbufr +[5]; + +350  + gHrs +:: +hext +( +bufr +, +devi_id +); + +356 + gd +:: +rg + +EMSESP +:: +ty_gm +( +d +:: +shed_r + +gm +) { + +357 +ut8_t + +c + = +gm +->src & 0x7F; + +358 +ut8_t + + gde + = +gm +-> +de + & 0x7F; + +359 +ut8_t + + gofft + = +gm +-> +offt +; + +362 + gd +:: +rg + +c_me +(20, '\0'); + +363 + gd +:: +rg + +de_me +(20, '\0'); + +364 + gd +:: +rg + +ty_me +(20, '\0'); + +365 cڡut& + gemsdevi + : +emsdevis +) { + +366 i( +emsdevi +) { + +368 i( +emsdevi +-> +is_devi_id +( +c +)) { + +369 +c_me + = +emsdevi +-> +devi_ty_me +(); + +370 } i( + gemsdevi +-> +is_devi_id +( +de +)) { + +371 + gde_me + = +emsdevi +-> +devi_ty_me +(); + +374 i( + gty_me +. +emy +()) { + +375 + gty_me + = +emsdevi +-> +gm_ty_me +( +gm +); + +381 i( + gc_me +. +emy +()) { + +382 + gc_me + = +devi_torg +( +c +); + +385 i( + gde_me +. +emy +()) { + +386 + gde_me + = +devi_torg +( +de +); + +390 i( + ggm +-> + gty_id + = +EMSdevi +:: +EMS_TYPE_VERSION +) { + +391 +ty_me + = +ad_ash_rg +( +F +("Version")); + +395 i( + gty_me +. +emy +()) { + +396 + gty_me + = +ad_ash_rg +( +F +("?")); + +399 + gd +:: +rg + +r +(200, '\0'); + +401 i( + gofft +) { + +402 +tf_P +(& +r +[0], + +403 +r +. +cy +() + 1, + +404 +PSTR +("%s(0x%02X) -> %s(0x%02X), %s(0x%02X), data: %s (offset %d)"), + +405 +c_me +. +c_r +(), + +406 +c +, + +407 +de_me +. +c_r +(), + +408 +de +, + +409 +ty_me +. +c_r +(), + +410 +gm +-> +ty_id +, + +411 +gm +-> +to_rg_mesge +(). +c_r +(), + +412 +offt +); + +414 +tf_P +(& +r +[0], + +415 +r +. +cy +() + 1, + +416 +PSTR +("%s(0x%02X) -> %s(0x%02X), %s(0x%02X), data: %s"), + +417 +c_me +. +c_r +(), + +418 +c +, + +419 +de_me +. +c_r +(), + +420 +de +, + +421 +ty_me +. +c_r +(), + +422 +gm +-> +ty_id +, + +423 +gm +-> +to_rg_mesge +(). +c_r +()); + +426  + gr +; + +436  + gEMSESP +:: +oss_UBADevis +( +d +:: +shed_r + +gm +) { + +438 i( +gm +-> +mesge_ngth + > 15) { + +443  +ut8_t + + gda_by + = 0; da_by < + ggm +-> + gmesge_ngth +; data_byte++) { + +444 +ut8_t + + gxt_by + = +gm +-> +mesge_da +[ +da_by +]; + +446 i( + gxt_by +) { + +447  +ut8_t + + gb + = 0; bit < 8; bit++) { + +448 i( + gxt_by + & 0x01) { + +449 +ut8_t + + gdevi_id + = (( +da_by + + 1* 8+ +b +; + +452 i(( + gdevi_id + ! +EMSbus +:: +ems_bus_id +()&& !( +EMSESP +:: +devi_exis +( +devi_id +))) { + +453 +LOG_DEBUG +( +F +("New EMS devi deed wh ID 0x%02X. Requeg vsi infmi."), +devi_id +); + +454 +nd_ad_que +( +EMSdevi +:: +EMS_TYPE_VERSION +, +devi_id +); + +457 + gxt_by + = +xt_by + >> 1; + +465  + gEMSESP +:: +oss_vsi +( +d +:: +shed_r + +gm +) { + +467 i( +gm +-> +mesge_ngth + < 3) { + +472 +ut8_t + + gofft + = 0; + +473 i( + ggm +-> + gmesge_da +[0] == 0x00) { + +475 i( +gm +-> +mesge_da +[3] != 0x00) { + +476 +offt + = 3; + +483 +ut8_t + + gdevi_id + = +gm +-> +c +; + +484 +ut8_t + + godu_id + = +gm +-> +mesge_da +[ +offt +]; + +487 + gd +:: +rg + +vsi +(5, '\0'); + +488 +tf_P +(& +vsi +[0], vsi. +cy +(+ 1, +PSTR +("%02d.%02d"), +gm +-> +mesge_da +[ +offt + + 1],elegram->message_data[offset + 2]); + +491 +ut8_t + + gbnd +; + +492 i( + ggm +-> + gmesge_ngth + >= 10) { + +493 +bnd + = +EMSdevi +:: +decode_bnd +( +gm +-> +mesge_da +[9]); + +495 + gbnd + = +EMSdevi +:: +Bnd +:: +NO_BRAND +; + +499 () +add_devi +( +devi_id +, +odu_id +, +vsi +, +bnd +); + +506 +bo + + gEMSESP +:: +oss_gm +( +d +:: +shed_r + +gm +) { + +508 i( +gm +-> +ty_id + = +ad_id_ +) { + +509 +LOG_NOTICE +( +ty_gm +( +gm +). +c_r +()); + +510 +publish_ڣ +( +gm +); + +511 + gad_id_ + = +WATCH_ID_NONE +; + +512 } i( +wch +(= +WATCH_ON +) { + +513 i(( +wch_id_ + = +WATCH_ID_NONE +|| ( +gm +-> +ty_id + == watch_id_) + +514 || (( +wch_id_ + < 0x80&& (( +gm +-> +c + =wch_id_|| (gm-> +de + == watch_id_)))) { + +515 +LOG_NOTICE +( +ty_gm +( +gm +). +c_r +()); + +520 i(( + ggm +-> + gde + !0x00&& ( +gm +-> +de + ! +rxrvi_ +. +ems_bus_id +())) { + +521  +l +; + +525 i( + ggm +-> + gty_id + = +EMSdevi +:: +EMS_TYPE_VERSION +) { + +526 +oss_vsi +( +gm +); + +527  + gue +; + +528 } i( + ggm +-> + gty_id + = +EMSdevi +:: +EMS_TYPE_UBADevis +) { + +529 +oss_UBADevis +( +gm +); + +530  + gue +; + +537 +bo + + gfound + = +l +; + +538 cڡut& + gemsdevi + : +emsdevis +) { + +539 i( +emsdevi +) { + +540 i( +emsdevi +-> +is_devi_id +( +gm +-> +c +)) { + +541 +found + = +emsdevi +-> +hd_gm +( +gm +); + +543 i( + gfound +) { + +544 i(( + gmq_ +. +g_publish_chge +( +emsdevi +-> +devi_ty +()&& + gemsdevi +-> +upded_vues +()|| + ggm +-> + gty_id + = +publish_id_ +) { + +545 i( +gm +-> +ty_id + = +publish_id_ +) { + +546 +publish_id_ + = 0; + +548 + gemsdevi +-> +publish_vues +(); + +556 i(! + gfound +) { + +557 +LOG_DEBUG +( +F +("N؋gmy hd˸found f ID 0x%02X (0x%02X)"), +gm +-> +ty_id +,egm-> +c +); + +560  + gfound +; + +565  + gEMSESP +:: +devi_fo_web +(cڡ +ut8_t + +unique_id +, +JsObje + & +ro +) { + +566 cڡut& + gemsdevi + : +emsdevis +) { + +567 i( +emsdevi +) { + +568 i( +emsdevi +-> +unique_id +() == unique_id) { + +569 +ro +["deviName"] = +emsdevi +-> +to_rg_sht +(); + +570 +JsAay + + gda + = +ro +. +NeedAay +("deviceData"); + +571 + gemsdevi +-> +devi_fo_web +( +da +); + +579 +bo + + gEMSESP +:: +devi_exis +(cڡ +ut8_t + +devi_id +) { + +580 cڡut& +emsdevi + : +emsdevis +) { + +581 i( +emsdevi +) { + +582 i( +emsdevi +-> +is_devi_id +( +devi_id +)) { + +583  +ue +; + +588  + gl +; + +592  + gEMSESP +:: +add_cڋxt_mus +() { + +593 cڡut& +emsdevi + : +emsdevis +) { + +594 i( +emsdevi +) { + +595 +emsdevi +-> +add_cڋxt_mu +(); + +601  + gEMSESP +:: +show_devis +( +uuid +:: +cse +:: +Shl + & +shl +) { + +602 i( +emsdevis +. +emy +()) { + +603 +shl +. +tn +( +F +("No EMS devices detected. Try using 'scan devices' fromhems menu.")); + +604 + gshl +. +n +(); + +608 + gshl +. +tn +( +F +("These EMS devicesre currentlyctive:")); + +609 + gshl +. +n +(); + +613 cڡut& + gdevi_ass + : +EMSFay +:: +devi_hdrs +()) { + +615 cڡut& +emsdevi + : +emsdevis +) { + +616 i(( +emsdevi +&& (emsdevi-> +devi_ty +(= +devi_ass +. +f +)) { + +617 +shl +. +tf +( +F +("%s: %s"), +emsdevi +-> +devi_ty_me +(). +c_r +(),msdevi-> +to_rg +().c_str()); + +618 i(( + gemsdevi +-> +devi_ty +(= +EMSdevi +:: +DeviTy +:: +THERMOSTAT +&& ( +emsdevi +-> +g_devi_id +(= +au_ma_thmo +())) { + +619 +shl +. +tf +( +F +(" ** master device **")); + +621 + gshl +. +n +(); + +622 + gemsdevi +-> +show_gm_hdrs +( +shl +); + +624 + gshl +. +n +(); + +632 +bo + + gEMSESP +:: +add_devi +(cڡ +ut8_t + +devi_id +, cڡ ut8_ +odu_id +, +d +:: +rg + & +vsi +, cڡ ut8_ +bnd +) { + +634 i( + gdevi_id + = +rxrvi_ +. +ems_bus_id +()) { + +635  +l +; + +640 cڡut& + gemsdevi + : +emsdevis +) { + +641 i( +emsdevi +) { + +642 i( +emsdevi +-> +is_devi_id +( +devi_id +)) { + +643 +LOG_DEBUG +( +F +("Updg daڇ̗dyxig devi ID 0x%02X"), +devi_id +); + +644 + gemsdevi +-> +odu_id +(product_id); + +645 + gemsdevi +-> +vsi +(version); + +647 i( + gemsdevi +-> +bnd +(= +EMSdevi +:: +Bnd +:: +NO_BRAND +) { + +648 +emsdevi +-> +bnd +(brand); + +651 cڡut& + gdevi + : +devi_libry_ +) { + +652 i( +devi +. +odu_id + ==roduct_id) { + +653 +emsdevi +-> +me +( +uuid +:: +ad_ash_rg +( +devi +.name)); + +654 + gemsdevi +-> +ags +( +devi +.flags); + +658  + gue +; + +665 +Devi_cd + * + gdevi_p + = +nuαr +; + +666 aut& + gdevi + : +devi_libry_ +) { + +667 i( +devi +. +odu_id + ==roduct_id) { + +670 i( +devi +. +devi_ty + = +DeviTy +:: +BOILER +) { + +671 i( +devi_id + = +EMSdevi +:: +EMS_DEVICE_ID_BOILER +) { + +672 +devi_p + = & +devi +; + +677 + gdevi_p + = & +devi +; + +684 i( + gdevi_p + = +nuαr +) { + +685 +LOG_NOTICE +( +F +("Uecognized EMS devi wh devi ID 0x%02X whrodu ID %d. Pa܈ GHub."), +devi_id +, +odu_id +); + +686  + gl +; + +688 + gd +:: +rg + +me + = +uuid +:: +ad_ash_rg +( +devi_p +->name); + +689 + gemsdevis +. +push_back +( +EMSFay +:: +add +( +devi_p +-> +devi_ty +, +devi_id +, devi_p-> +odu_id +, +vsi +, +me +, devi_p-> +ags +, +bnd +)); + +690 + gemsdevis +. +back +()-> +unique_id +(++ +unique_id_cou_ +); + +691 +LOG_DEBUG +( +F +("Addgew devi wh devi ID 0x%02X whrodu ID %dnd vsi %s"), +devi_id +, +odu_id +, +vsi +. +c_r +()); + +692 +tch_devi_vues +( +devi_id +); + +695  + gue +; + +699  + gEMSESP +:: +nd_ad_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +) { + +700 + gtxrvi_ +. +ad_que +( +ty_id +, +de +, 0); + +704  + gEMSESP +:: +nd_wre_que +(cڡ +ut16_t + +ty_id +, + +705 cڡ +ut8_t + +de +, + +706 cڡ +ut8_t + +offt +, + +707 +ut8_t + * +mesge_da +, + +708 cڡ +ut8_t + +mesge_ngth +, + +709 cڡ +ut16_t + +vide_tyid +) { + +710 + gtxrvi_ +. +add +( +Tegm +:: +Oti +:: +TX_WRITE +, +de +, +ty_id +, +offt +, +mesge_da +, +mesge_ngth +); + +712 + gtxrvi_ +. +t_po_nd_quy +( +vide_tyid +); + +715  + gEMSESP +:: +nd_wre_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +, cڡ ut8_ +offt +, cڡ ut8_ +vue +) { + +716 +nd_wre_que +( +ty_id +, +de +, +offt +, +vue +, 0); + +720  + gEMSESP +:: +nd_wre_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +, cڡ ut8_ +offt +, cڡ ut8_ +vue +, cڡ ut16_ +vide_tyid +) { + +721 +ut8_t + + gmesge_da +[1]; + +722 + gmesge_da +[0] = +vue +; + +723 + gEMSESP +:: +nd_wre_que +( +ty_id +, +de +, +offt +, +mesge_da +, 1, +vide_tyid +); + +729  + gEMSESP +:: +comg_gm +( +ut8_t + * +da +, cڡ ut8_ +ngth +) { + +730 #ifde +EMSESP_DEBUG + + +731  +ut32_t + + grx_time_ + = 0; + +734 +ut8_t + + gf_vue + = +da +[0]; + +735 i((( + gf_vue + & 0x7F= +txrvi_ +. +ems_bus_id +()&& ( +ngth + > 1)) { + +737 +Room +:: +check +(( +da +[1] ^ 0x80 ^ +rxrvi_ +. +ems_mask +()), data); + +738 #ifde +EMSESP_DEBUG + + +740 +LOG_TRACE +( +F +("[DEBUG] Echa %d ms: %s"), :: +mlis +(- +rx_time_ +, +Hrs +:: +da_to_hex +( +da +, +ngth +). +c_r +()); + +746 +ut8_t + + gtx_e + = +EMSbus +:: +tx_e +(); + +747 i( + gtx_e + ! +Tegm +:: +Oti +:: +NONE +) { + +748 +bo + +tx_sucssful + = +l +; + +749 + gEMSbus +:: +tx_e +( +Tegm +:: +Oti +:: +NONE +); + +752 i(( + gtx_e + = +Tegm +:: +Oti +:: +TX_WRITE +&& ( +ngth + == 1)) { + +753 i( +f_vue + = +TxSvi +:: +TX_WRITE_SUCCESS +) { + +754 +LOG_DEBUG +( +F +("Last Tx write successful")); + +755 + gtxrvi_ +. +emt_gm_wre_cou +(); + +756 + gtxrvi_ +. +nd_pl +(); + +757 + gpublish_id_ + = +txrvi_ +. +po_nd_quy +(); + +758 + gtxrvi_ +. +t_y_cou +(); + +759 + gtx_sucssful + = +ue +; + +760 } i( + gf_vue + = +TxSvi +:: +TX_WRITE_FAIL +) { + +761 +LOG_ERROR +( +F +("Last Tx writeejected by host")); + +762 + gtxrvi_ +. +nd_pl +(); + +763 + gtxrvi_ +. +t_y_cou +(); + +765 } i( + gtx_e + = +Tegm +:: +Oti +:: +TX_READ +) { + +767 +ut8_t + +c + = +da +[0]; + +768 +ut8_t + + gde + = +da +[1]; + +769 i( + gtxrvi_ +. +is_ϡ_tx +( +c +, +de +)) { + +770 +LOG_DEBUG +( +F +("Last Txead successful")); + +771 + gtxrvi_ +. +emt_gm_ad_cou +(); + +772 + gtxrvi_ +. +nd_pl +(); + +773 + gtxrvi_ +. +t_y_cou +(); + +774 + gtx_sucssful + = +ue +; + +779 i(! + gtx_sucssful +) { + +780 + gtxrvi_ +. +y_tx +( +tx_e +, +da +, +ngth +); + +786 i( + gngth + == 1) { + +787 +EMSbus +:: +ϡ_bus_aivy +( +uuid +:: +g_uime +()); + +789 #ifde +EMSESP_DEBUG + + +790  + gs +[4]; + +791 i( + gf_vue + & 0x80) { + +792 +LOG_TRACE +( +F +("[DEBUG]exP%a %d ms"), +Hrs +:: +hext +( +s +, +f_vue +), :: +mlis +(- +rx_time_ +); + +794 + grx_time_ + = :: +mlis +(); + +796 +LOG_TRACE +( +F +("[DEBUG] Pack %a %d ms"), +Hrs +:: +hext +( +s +, +f_vue +), :: +mlis +(- +rx_time_ +); + +801 i(( + gf_vue + ^ 0x80 ^ + grxrvi_ +. +ems_mask +()= +txrvi_ +. +ems_bus_id +()) { + +802 +txrvi_ +. +nd +(); + +805 + gRoom +:: +nd +( +f_vue + ^ 0x80 ^ +rxrvi_ +. +ems_mask +()); + +808 #ifde +EMSESP_DEBUG + + +809 +LOG_TRACE +( +F +("[DEBUG] Rly %d ms: %s"), :: +mlis +(- +rx_time_ +, +Hrs +:: +da_to_hex +( +da +, +ngth +). +c_r +()); + +811 + gRoom +:: +check +(( +da +[1] ^ 0x80 ^ +rxrvi_ +. +ems_mask +()), data); + +813 + grxrvi_ +. +add +( +da +, +ngth +); + +818  + gEMSESP +:: +nd_w_gm +(cڡ * +da +) { + +819 +txrvi_ +. +nd_w +( +da +); + +824  + gEMSESP +:: +t +() { + +826 i(! +syem_ +. +check_upgde +()) { + +827 #ifde +ESP32 + + +828 +SPIFFS +. +beg +( +ue +); + +829 #i +defed +( +ESP8266 +) + +830 + gLeFS +. +beg +(); + +833 + ge8266R +. +beg +(); + +834 + gemStgsSvi +. +beg +(); + +838 + gdevi_libry_ +. +rve +(80); + +839 + gdevi_libry_ + = { + +840  + ~"devi_libry.h +" + +843 + gcse_ +. +t +(); + +844 + gmq_ +. +t +(); + +845 + gsyem_ +. +t +(); + +846 + gshow_ +. +t +(); + +847 + gnss_ +. +t +(); + +848 + gwebSv +. +beg +(); + +850 + gemsdevis +. +rve +(5); + +852 +LOG_INFO +("EMS Deviibryded wh %decds", +devi_libry_ +. +size +()); + +854 #i +defed +( +EMSESP_STANDALONE +) + +855 + gmq_ +. +_c +(); + +860  + gEMSESP +:: +lo +() { + +861 +e8266R +. +lo +(); + +864 i( + gsyem_ +. +ud_us +()) { + +868 + gsyem_ +. +lo +(); + +869 + gshow_ +. +lo +(); + +870 + gnss_ +. +lo +(); + +871 + gmq_ +. +lo +(); + +872 + gcse_ +. +lo +(); + +873 + grxrvi_ +. +lo +(); + +876 i(( + guuid +:: +g_uime +(- +ϡ_tch_ + > +EMS_FETCH_FREQUENCY +)) { + +877 +ϡ_tch_ + = +uuid +:: +g_uime +(); + +878 +tch_devi_vues +(); + +881 +day +(1); + + @src/emsesp.h + +19 #ide +EMSESP_EMSESP_H + + +20  + #EMSESP_EMSESP_H + + + ) + +22  + ~ + +24  + ~ + +25  + ~ + +26  + ~ + +28  + ~ + +29  + ~ + +30  + ~ + +32 #ide +EMSESP_STANDALONE + + +33  + ~ + +36  + ~ + +37  + ~"EMSESPStusSvi.h +" + +38  + ~"EMSESPDevisSvi.h +" + +39  + ~"EMSESPStgsSvi.h +" + +41  + ~"emsdevi.h +" + +42  + ~"emsy.h +" + +43  + ~"gm.h +" + +44  + ~"mq.h +" + +45  + ~"syem.h +" + +46  + ~"nss.h +" + +47  + ~"cse.h +" + +48  + ~"show.h +" + +49  + ~"roomcڌ.h +" + +51  + #WATCH_ID_NONE + 0 + +52 + + ) + +53 +mea + + gem + { + +55 +ass + + gShow +; + +57 as + cEMSESP + { + +58 + gpublic +: + +59  +t +(); + +60  +lo +(); + +62  +publish_devi_vues +( +ut8_t + +devi_ty +); + +63  +publish_h_vues +(); + +64  +publish_ns_vues +(cڡ +bo + +f + = +l +); + +66 #ifde +EMSESP_STANDALONE + + +67  +run_ +( +uuid +:: +cse +:: +Shl + & +shl +, cڡ +d +:: +rg + & +commd +); + +68  +dummy_mq_commds +(cڡ * +mesge +); + +69  +rx_gm +(cڡ +d +:: +ve +< +ut8_t +> & +da +); + +70  +ut_gm +(cڡ +d +:: +ve +< +ut8_t +> & +rx_da +); + +73  +bo + +oss_gm +( +d +:: +shed_r + +gm +); + +74  + gd +:: +rg + +ty_gm +( +d +:: +shed_r + +gm +); + +76  +nd_ad_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +); + +77  +nd_wre_que +(cڡ +ut16_t + +ty_id +, + +78 cڡ +ut8_t + +de +, + +79 cڡ +ut8_t + +offt +, + +80 +ut8_t + * +mesge_da +, + +81 cڡ +ut8_t + +mesge_ngth +, + +82 cڡ +ut16_t + +vide_tyid +); + +83  +nd_wre_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +, cڡ ut8_ +offt +, cڡ ut8_ +vue +); + +84  +nd_wre_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +, cڡ ut8_ +offt +, cڡ ut8_ +vue +, cڡ ut16_ +vide_tyid +); + +86  +nd_w_gm +(cڡ * +da +); + +87  +bo + +devi_exis +(cڡ +ut8_t + +devi_id +); + +89  +devi_fo_web +(cڡ +ut8_t + +unique_id +, +JsObje + & +ro +); + +91  +ut8_t + +cou_devis +(cڡ ut8_ +devi_ty +); + +93  +ut8_t + +au_ma_thmo +(); + +94  +au_ma_thmo +(cڡ +ut8_t + +devi_id +); + +95  +ut8_t + +check_ma_devi +(cڡ ut8_ +devi_id +, cڡ +ut16_t + +ty_id +, cڡ +bo + +ad +); + +97  +show_devi_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +98  +show_ns_vues +( +uuid +:: +cse +:: +Shl + & +shl +); + +100  +show_devis +( +uuid +:: +cse +:: +Shl + & +shl +); + +101  +show_ems +( +uuid +:: +cse +:: +Shl + & +shl +); + +103  +add_cڋxt_mus +(); + +105  +_tx +(); + +107  +comg_gm +( +ut8_t + * +da +, cڡ ut8_ +ngth +); + +109 cڡ + gd +:: +ve +< +Sss +:: +Devi +> +ns_devis +() { + +110  +nss_ +. +devis +(); + +113 + gWch + : +ut8_t + { +WATCH_OFF +, + gWATCH_ON +, + gWATCH_RAW + }; + +114  +wch_id +( +ut16_t + +id +); + +115  +ut16_t + +wch_id +() { + +116  + gwch_id_ +; + +119  +wch +( +ut8_t + watch) { + +120 + gwch_ + = +wch +; + +121 i( + gwch + = +WATCH_OFF +) { + +122 +wch_id_ + = 0; + +125  +ut8_t + +wch +() { + +126  + gwch_ +; + +128  +t_ad_id +( +ut16_t + +id +) { + +129 + gad_id_ + = +id +; + +132 + gBus_us + : +ut8_t + { +BUS_STATUS_CONNECTED + = 0, + gBUS_STATUS_TX_ERRORS +, + gBUS_STATUS_OFFLINE + }; + +133  +ut8_t + +bus_us +(); + +135  +bo + +p_w_aive +() { + +136  + gp_w_aive_ +; + +139  +p_w_aive +(cڡ +bo +ap_water_active) { + +140 + gp_w_aive_ + = +p_w_aive +; + +143  +tch_devi_vues +(cڡ +ut8_t + +devi_id + = 0); + +145  +bo + +add_devi +(cڡ +ut8_t + +devi_id +, cڡ ut8_ +odu_id +, +d +:: +rg + & +vsi +, cڡ ut8_ +bnd +); + +146  +sn_devis +(); + +147  +r_l_devis +(); + +149  + gd +:: +ve +< +d +:: +unique_r +< +EMSdevi +>> +emsdevis +; + +152  +Mq + + gmq_ +; + +153  +Syem + + gsyem_ +; + +154  +Sss + + gnss_ +; + +155  +Cse + + gcse_ +; + +156  +Show + + gshow_ +; + +157  +RxSvi + + grxrvi_ +; + +158  +TxSvi + + gtxrvi_ +; + +161  +ESP8266R + + ge8266R +; + +162  +EMSESPStgsSvi + + gemStgsSvi +; + +163  +EMSESPStusSvi + + gemStusSvi +; + +164  +EMSESPDevisSvi + + gemDevisSvi +; + +166  + guuid +:: +log +:: +Logg + +logg +() { + +167  +logg_ +; + +170 + give +: + +171 +EMSESP +( +de +; + +173  + guuid +:: +log +:: +Logg + +logg_ +; + +175  + gd +:: +rg + +devi_torg +(cڡ +ut8_t + +devi_id +); + +177  +oss_UBADevis +( +d +:: +shed_r + +gm +); + +178  +oss_vsi +( +d +:: +shed_r + +gm +); + +179  +publish_ڣ +( +d +:: +shed_r + +gm +); + +181  +cڡex + +ut32_t + + gEMS_FETCH_FREQUENCY + = 60000; + +182  +ut32_t + + gϡ_tch_ +; + +184  + sDevi_cd + { + +185 +ut8_t + + godu_id +; + +186 + gEMSdevi +:: +DeviTy + +devi_ty +; + +187 cڡ +__FshSgHr + * + gme +; + +188 +ut8_t + + gags +; + +191  + gd +:: +ve +< +Devi_cd +> +devi_libry_ +; + +193  +ut8_t + + gau_ma_thmo_ +; + +194  +ut16_t + + gwch_id_ +; + +195  +ut8_t + + gwch_ +; + +196  +ut16_t + + gad_id_ +; + +197  +ut16_t + + gpublish_id_ +; + +198  +bo + + gp_w_aive_ +; + +200  +ut8_t + + gunique_id_cou_ +; + + @src/emsfactory.h + +19 #ide +EMSESP_EMSFACTORY_H_ + + +20  + #EMSESP_EMSFACTORY_H_ + + + ) + +22  + ~ + +23  + ~ + +25  + ~"emsdevi.h +" + +30  + #REGISTER_FACTORY +( +divedCss +, +devi_ty +) \ + +31 +mea + { \ + +32 aut +giry_ +## +divedCss + = +CeEMSFay +( +devi_ty +); \ + +33 } + + ) + +35 +mea + + gem + { + +37 +ass + + gEMSdevi +; + +39 as + cEMSFay + { + +40 + gpublic +: + +41 +vtu + ~ +EMSFay +() = ; + +45 aut +giFay +(cڡ +ut8_t + +devi_ty +, +EMSFay + * +y +) -> { + +46 aut& + gg + = +EMSFay +:: +gRegi +(); + +47 + gg +[ +devi_ty +] = +y +; + +50 +usg + + gFayM + = +d +:: +m +< +ut8_t +, + gEMSFay + *>; + +53 aut +devi_hdrs +(-> + gFayM + { + +54  + gEMSFay +:: +gRegi +(); + +58 aut +add +(cڡ +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, +d +:: +rg + & +vsi +, std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +59 -> + gd +:: +unique_r +< +EMSdevi +> { + +60  +d +:: +unique_r +< +EMSdevi +>( +EMSFay +:: +makeRaw +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +)); + +63 +vtu +ut +cڡru +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, +d +:: +rg + & +vsi +, std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) const + +64 -> + gEMSdevi + * = 0; + +66 + give +: + +68 aut +gRegi +(-> +FayM + & { + +69  +FayM + +assRegi +{}; + +70  + gassRegi +; + +75 aut +makeRaw +(cڡ +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, +d +:: +rg + & +vsi +, std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) + +76 -> + gEMSdevi + * { + +77 aut + g + = +EMSFay +:: +gRegi +(). +fd +( +devi_ty +); + +78 i( + g + ! +EMSFay +:: +gRegi +(). +d +()) { + +79  + +-> +cd +-> +cڡru +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +); + +81  + gnuαr +; + +85 + gme + < +tyme + + gDivedCss +> + +86 as + cCeEMSFay + : +EMSFay + { + +87 +public +: + +89 +CeEMSFay +(cڡ +ut8_t + +devi_ty +) { + +90 +EMSFay +:: +giFay +( +devi_ty +, +this +); + +93 aut +cڡru +( +ut8_t + +devi_ty +, ut8_ +devi_id +, ut8_ +odu_id +, +d +:: +rg + & +vsi +, std::rg & +me +, ut8_ +ags +, ut8_ +bnd +) const + +94 -> + gEMSdevi + * { + +95  +w + +DivedCss +( +devi_ty +, +devi_id +, +odu_id +, +vsi +, +me +, +ags +, +bnd +); + + @src/helpers.cpp + +19  + ~"hrs.h +" + +21 +mea + + gem + { + +24 * + gHrs +:: +hext +(* +su +, cڡ +ut8_t + +vue +) { + +25 * + gp + = +su +; + +26 +ut8_t + + gnib1 + = ( +vue + >> 4) & 0x0F; + +27 +ut8_t + + gnib2 + = ( +vue + >> 0) & 0x0F; + +28 * + gp +++ = +nib1 + < 0xA ? '0' +ib1 : 'A' +ib1 - 0xA; + +29 * + gp +++ = +nib2 + < 0xA ? '0' +ib2 : 'A' +ib2 - 0xA; + +30 * + gp + = '\0'; + +31  + gsu +; + +34 #ifde +EMSESP_STANDALONE + + +36 * + gHrs +:: +uor +(* +r +, +ut32_t + +vue +, cڡ +ut8_t + +ba +) { + +37  + gt + = 0, + gs + = 0; + +38  + gtmp + = +vue +; + +39  + gcou + = 0; + +41 i( + gNULL + = +r +) { + +42  +NULL +; + +45 i( + gtmp + == 0) { + +46 +cou +++; + +49  + gtmp + > 0) { + +50 + gtmp + = +tmp + / +ba +; + +51 + gcou +++; + +54 + gr + + +cou +; + +56 * + gr + = '\0'; + +59 + gs + = +vue + - +ba + * ( +t + = value / base); + +60 i( + gs + < 10) { + +61 *-- + gr + = '0' + +s +; + +62 } i(( + gs + >10&& ( +s + < 16)) { + +63 *-- +r + = 'A' - 10 + +s +; + +65 } ( + gvue + = +t +) != 0); + +67  ( + gr +); + +75 * + gHrs +:: + +(* +su +, +t16_t + +vue +, cڡ +ut8_t + +ba +) { + +77 i( + gba + < 2 || base > 36) { + +78 * + gsu + = '\0'; + +79  + gsu +; + +82 * + gr + = +su +, * + gr1 + =esu, + gtmp_ch +; + +83 +t16_t + + gtmp_vue +; + +86 + gtmp_vue + = +vue +; + +87 + gvue + / +ba +; + +88 * + gr +++ = "zyxwvutqpmlkjihgdcba9876543210123456789abcdefghijklmnqruvwxyz"[35 + ( +tmp_vue + - +vue + * +ba +)]; + +89 }  + gvue +); + +92 i( + gtmp_vue + < 0) { + +93 * + gr +++ = '-'; + +96 * + gr +-- = '\0'; + +97  + gr1 + < + gr +) { + +98 + gtmp_ch + = * +r +; + +99 * + gr +-- = * +r1 +; + +100 * + gr1 +++ = +tmp_ch +; + +103  + gsu +; + +107 * + gHrs +:: +sml +(* +su +, cڡ +ut8_t + +vue +) { + +108 + gsu +[0] = (( +vue + / 10) == 0) ? '0' : (value / 10) + '0'; + +109 + gsu +[1] = ( +vue + % 10) + '0'; + +110 + gsu +[2] = '\0'; + +111  + gsu +; + +115 * + gHrs +:: +sml +(* +su +, cڡ +ut16_t + +vue +) { + +116 + gsu +[0] = (( +vue + / 100) == 0) ? '0' : (value / 100) + '0'; + +117 + gsu +[1] = ((( +vue + % 100) / 10) == 0) ? '0' : ((value % 100) / 10) + '0'; + +118 + gsu +[2] = ( +vue + % 10) + '0'; + +119 + gsu +[3] = '\0'; + +120  + gsu +; + +125 * + gHrs +:: +nd_vue +(* +su +, +ut8_t + +vue +, ut8_ +fm +) { + +127 i( + gfm + = +EMS_VALUE_BOOL +) { + +128 i( +vue + = +EMS_VALUE_BOOL_OFF +) { + +129 +y +( +su +, "off", 5); + +130 } i( + gvue + = +EMS_VALUE_BOOL_NOTSET +) { + +131  +nuαr +; + +133 +y +( +su +, "on", 5); + +135  + gsu +; + +138 i(! +hasVue +( +vue +)) { + +139  + gnuαr +; + +142 i(! + gfm +) { + +143 + +( +su +, +vue +, 10); + +144  + gsu +; + +147  + gs2 +[5]; + +150 i( + gfm + == 2) { + +151 +y +( +su +, + +( +s2 +, +vue + >> 1, 10), 5); + +152 +t +( +su +, ".", 5); + +153 +t +( +su +, (( +vue + & 0x01) ? "5" : "0"), 5); + +154  + gsu +; + +157 +y +( +su +, + +( +s2 +, +vue + / +fm +, 10), 5); + +158 +t +( +su +, ".", 5); + +159 +t +( +su +, + +( +s2 +, +vue + % +fm +, 10), 5); + +161  + gsu +; + +166 * + gHrs +:: +nd_vue +(* +su +, cڡ  +vue +, cڡ +ut8_t + +fm +) { + +167  + gp +[] = {0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000}; + +169 * + gt + = +su +; + +170  + gwhe + = () +vue +; + +171 + gHrs +:: + +( +su +, +whe +, 10); + +172 * + gsu + != '\0') { + +173 +su +++; + +175 * + gsu +++ = '.'; + +176  + gdecim + = +abs +(()(( +vue + - +whe +* +p +[ +fm +])); + +177 + +( +su +, +decim +, 10); + +179  + gt +; + +184 * + gHrs +:: +nd_vue +(* +su +, cڡ +t16_t + +vue +, cڡ +ut8_t + +fm +) { + +185 i(! +hasVue +( +vue +)) { + +186  + gnuαr +; + +190 i(! + gfm +) { + +191 + +( +su +, +vue +, 10); + +192  + gsu +; + +195 +t16_t + + gw_vue + = +vue +; + +196 + gsu +[0] = '\0'; + +199 i( + gw_vue + < 0) { + +200 +y +( +su +, "-", 10); + +201 + gw_vue + *= -1; + +203 +y +( +su +, "", 10); + +207  + gs2 +[10] = {0}; + +208 i( + gfm + == 2) { + +210 +t +( +su +, + +( +s2 +, +w_vue + / 2, 10), 10); + +211 +t +( +su +, ".", 10); + +212 +t +( +su +, (( +w_vue + & 0x01) ? "5" : "0"), 10); + +214 +t +( +su +, + +( +s2 +, +w_vue + / +fm +, 10), 10); + +215 +t +( +su +, ".", 10); + +216 +t +( +su +, + +( +s2 +, +w_vue + % +fm +, 10), 10); + +219  + gsu +; + +223 * + gHrs +:: +nd_vue +(* +su +, cڡ +ut16_t + +vue +, cڡ +ut8_t + +fm +) { + +224 i(! +hasVue +( +vue +)) { + +225  + gnuαr +; + +227  ( +nd_vue +( +su +, ( +t16_t +) +vue +, +fm +)); + +231 * + gHrs +:: +nd_vue +(* +su +, cڡ +t8_t + +vue +, cڡ +ut8_t + +fm +) { + +232 i(! +hasVue +( +vue +)) { + +233  + gnuαr +; + +235  ( +nd_vue +( +su +, ( +t16_t +) +vue +, +fm +)); + +239 * + gHrs +:: +nd_vue +(* +su +, cڡ +ut32_t + +vue +, cڡ +ut8_t + +fm +) { + +240 i(! +hasVue +( +vue +)) { + +241  + gnuαr +; + +244  + gs +[20]; + +245 + gsu +[0] = '\0'; + +247 #ide +EMSESP_STANDALONE + + +248 i(! + gfm +) { + +249 +t +( +su +, + +( +vue +, +s +, 10), 20); + +251 +t +( +su +, + +( +vue + / +fm +, +s +, 10), 20); + +252 +t +( +su +, ".", 20); + +253 +t +( +su +, + +( +vue + % +fm +, +s +, 10), 20); + +257 i(! + gfm +) { + +258 +t +( +su +, +uor +( +s +, +vue +, 10), 20); + +260 +t +( +su +, +uor +( +s +, +vue + / +fm +, 10), 20); + +261 +t +( +su +, ".", 20); + +262 +t +( +su +, +uor +( +s +, +vue + % +fm +, 10), 20); + +266  + gsu +; + +270 + gd +:: +rg + +Hrs +:: +da_to_hex +(cڡ +ut8_t + * +da +, cڡ ut8_ +ngth +) { + +271 i( + gngth + == 0) { + +272  +uuid +:: +ad_ash_rg +( +F +("")); + +275 + gd +:: +rg + +r +(160, '\0'); + +276  + gbufr +[4]; + +277 * + gp + = & +r +[0]; + +278  +ut8_t + + gi + = 0; i < + gngth +; i++) { + +279 + gHrs +:: +hext +( +bufr +, +da +[ +i +]); + +280 * + gp +++ = +bufr +[0]; + +281 * + gp +++ = +bufr +[1]; + +282 * + gp +++ = ' '; + +284 *-- + gp + = '\0'; + +286  + gr +; + +291 +ut32_t + + gHrs +:: +hextot +(cڡ * +hex +) { + +292 +ut32_t + +v + = 0; + +293 * + ghex +) { + +295  + gby + = * +hex +++; + +297 i( + gby + >'0' && +by + <= '9') + +298 +by + = byte - '0'; + +299 i( + gby + >'a' && +by + <= 'f') + +300 +by + = byte - 'a' + 10; + +301 i( + gby + >'A' && +by + <= 'F') + +302 +by + = byte - 'A' + 10; + +306 + gv + = ( +v + << 4| ( +by + & 0xF); + +308  + gv +; + +312 +ut16_t + + gHrs +:: +ot +(cڡ * +vue +) { + +313  +x + = 0; + +314 * + gvue + != '\0') { + +315 +x + = (x * 10+ (* +vue + - '0'); + +316 ++ + gvue +; + +318  + gx +; + +323  + gHrs +:: +round2 +( +vue +) { + +324  ()( +vue + * 100 + 0.5) / 100.0; + +327 +bo + + gHrs +:: +check_abs +(cڡ +t32_t + +i +) { + +328  (( +i + < 0 ? -i : i) != 0xFFFFFF); + +332 +bo + + gHrs +:: +hasVue +(cڡ +ut8_t + & +v +, cڡ ut8_ +isBo +) { + +333 i( + gisBo + = +EMS_VALUE_BOOL +) { + +334  ( +v + ! +EMS_VALUE_BOOL_NOTSET +); + +336  ( + gv + ! +EMS_VALUE_UINT_NOTSET +); + +339 +bo + + gHrs +:: +hasVue +(cڡ +t8_t + & +v +) { + +340  ( +v + ! +EMS_VALUE_INT_NOTSET +); + +344 +bo + + gHrs +:: +hasVue +(cڡ +t16_t + & +v +) { + +345  ( +abs +( +v +< +EMS_VALUE_USHORT_NOTSET +); + +348 +bo + + gHrs +:: +hasVue +(cڡ +ut16_t + & +v +) { + +349  ( +v + < +EMS_VALUE_USHORT_NOTSET +); + +352 +bo + + gHrs +:: +hasVue +(cڡ +ut32_t + & +v +) { + +353  ( +v + ! +EMS_VALUE_ULONG_NOTSET +); + +357 +bo + + gHrs +:: +vue2numb +(cڡ * +v +, & +vue +) { + +358 i(( + gv + = +nuαr +|| ( + +( +v +) == 0)) { + +359 +vue + = 0; + +360  + gl +; + +362 + gvue + = +oi +((*) +v +); + +363  + gue +; + +367 +bo + + gHrs +:: +vue2t +(cڡ * +v +, & +vue +) { + +368 i(( + gv + = +nuαr +|| ( + +( +v +) == 0)) { + +369 +vue + = 0; + +370  + gl +; + +372 + gvue + = +of +((*) +v +); + +373  + gue +; + +377 + gd +:: +rg + +Hrs +:: +toLow +( +d +::rg cڡ & +s +) { + +378 +d +:: +rg + +lc + = +s +; + +379 + gd +:: +sfm +( +lc +. +beg +(),c. +d +(),c.beg(), []( +c +{  +d +:: +tow +(c); }); + +380  + glc +; + +384 +bo + + gHrs +:: +vue2rg +(cڡ * +v +, +d +:: +rg + & +vue +) { + +385 i(( +v + = +nuαr +|| ( + +(v) == 0)) { + +386 +vue + = {}; + +387  + gl +; + +389 + gvue + = +toLow +( +v +); + +390  + gue +; + +395 +bo + + gHrs +:: +vue2bo +(cڡ * +v +, bo & +vue +) { + +396 i(( + gv + = +nuαr +|| ( + +( +v +) == 0)) { + +397  +l +; + +400 + gd +:: +rg + +bo_r + = +toLow +( +v +); + +402 i(( + gbo_r + =""|| ( +bo_r + ="1" + + (bool_str == "true")) { + +403 +vue + = +ue +; + +404  + gue +; + +407 i(( + gbo_r + ="off"|| ( +bo_r + ="0" + + (bool_str == "false")) { + +408 +vue + = +l +; + +409  + gue +; + +412  + gl +; + + @src/helpers.h + +19 #ide +EMSESP_HELPERS_H + + +20  + #EMSESP_HELPERS_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~"gm.h +" + +27 +mea + + gem + { + +29 as + cHrs + { + +30 + gpublic +: + +31 * +hext +(* +su +, cڡ +ut8_t + +vue +); + +32  + gd +:: +rg + +da_to_hex +(cڡ +ut8_t + * +da +, cڡ ut8_ +ngth +); + +34 * +nd_vue +(* +su +, cڡ  +vue +, cڡ +ut8_t + +fm +); + +35 * +nd_vue +(* +su +, cڡ +ut8_t + +vue +, cڡ ut8_ +fm +); + +36 * +nd_vue +(* +su +, cڡ +t8_t + +vue +, cڡ +ut8_t + +fm +); + +37 * +nd_vue +(* +su +, cڡ +ut16_t + +vue +, cڡ +ut8_t + +fm +); + +38 * +nd_vue +(* +su +, cڡ +ut32_t + +vue +, cڡ +ut8_t + +fm +); + +39 * +nd_vue +(* +su +, cڡ +t16_t + +vue +, cڡ +ut8_t + +fm +); + +41 * +sml +(* +su +, cڡ +ut8_t + +vue +); + +42 * +sml +(* +su +, cڡ +ut16_t + +vue +); + +43 * + +(* +su +, +t16_t + +vue +, cڡ +ut8_t + +ba + = 10); + +44  +ut32_t + +hextot +(cڡ * +hex +); + +45  +ut16_t + +ot +(cڡ * +vue +); + +46  +bo + +check_abs +(cڡ +t32_t + +i +); + +47  +round2 +( +vue +); + +49 #ifde +EMSESP_STANDALONE + + +50 * +uor +(* +r +, +ut32_t + +vue +, cڡ +ut8_t + +ba +); + +53  +bo + +hasVue +(cڡ +ut8_t + & +v +, cڡ ut8_ +isBo + = 0); + +54  +bo + +hasVue +(cڡ +t8_t + & +v +); + +55  +bo + +hasVue +(cڡ +t16_t + & +v +); + +56  +bo + +hasVue +(cڡ +ut16_t + & +v +); + +57  +bo + +hasVue +(cڡ +ut32_t + & +v +); + +59  + gd +:: +rg + +toLow +( +d +::rg cڡ & +s +); + +61  +bo + +vue2numb +(cڡ * +v +, & +vue +); + +62  +bo + +vue2t +(cڡ * +v +, & +vue +); + +63  +bo + +vue2bo +(cڡ * +v +, bo & +vue +); + +64  +bo + +vue2rg +(cڡ * +v +, +d +:: +rg + & +vue +); + + @src/locale_EN.h + +20 + $MAKE_PSTR_WORD +( +ex +) + +21 + $MAKE_PSTR_WORD +( +hp +) + +22 + $MAKE_PSTR_WORD +( +gs +) + +23 + $MAKE_PSTR_WORD +( +log +) + +24 + $MAKE_PSTR_WORD +( +logout +) + +25 + $MAKE_PSTR_WORD +( +abd +) + +26 + $MAKE_PSTR_WORD +( +dibd +) + +27 + $MAKE_PSTR_WORD +( +t +) + +28 + $MAKE_PSTR_WORD +( +show +) + +29 + $MAKE_PSTR_WORD +( + +) + +30 + $MAKE_PSTR_WORD +( +off +) + +31 + $MAKE_PSTR_WORD +( +su +) + +32 + $MAKE_PSTR_WORD +( +me +) + +33 + $MAKE_PSTR_WORD +(auto) + +34 + $MAKE_PSTR_WORD +( +sn +) + +35 + $MAKE_PSTR_WORD +( +sswd +) + +36 + $MAKE_PSTR_WORD +( +ad +) + +37 + $MAKE_PSTR_WORD +( +vsi +) + +38 + $MAKE_PSTR_WORD +( +vues +) + +39 + $MAKE_PSTR_WORD +( +syem +) + +40 + $MAKE_PSTR_WORD +( +tch +) + +41 + $MAKE_PSTR_WORD +( +t +) + +42 + $MAKE_PSTR_WORD +( +fm +) + +43 + $MAKE_PSTR_WORD +( +w +) + +44 + $MAKE_PSTR_WORD +( +wch +) + +45 + $MAKE_PSTR_WORD +( +nd +) + +46 + $MAKE_PSTR_WORD +( +gm +) + +47 + $MAKE_PSTR_WORD +( +bus_id +) + +48 + $MAKE_PSTR_WORD +( +tx_mode +) + +49 + $MAKE_PSTR_WORD +( +ems +) + +50 + $MAKE_PSTR_WORD +( +devis +) + +51 + $MAKE_PSTR_WORD +( +show +) + +52 + $MAKE_PSTR_WORD +( +mq +) + +53 + $MAKE_PSTR_WORD +( +em +) + +54 + $MAKE_PSTR_WORD +( +ced +) + +55 + $MAKE_PSTR_WORD +( +disced +) + +56 + $MAKE_PSTR_WORD +( +sswd +) + +57 + $MAKE_PSTR_WORD +( +home +) + +58 + $MAKE_PSTR_WORD +( +wifi +) + +59 + $MAKE_PSTR_WORD +( +c +) + +60 + $MAKE_PSTR_WORD +( +ssid +) + +61 + $MAKE_PSTR_WORD +( +hbt +) + +62 + $MAKE_PSTR_WORD +( +urs +) + +63 + $MAKE_PSTR_WORD +( +ma +) + +64 + $MAKE_PSTR_WORD +( + +) + +65 + $MAKE_PSTR_WORD +( +p +) + +68 + $MAKE_PSTR_WORD +( + +) + +71 + $MAKE_PSTR_WORD +( +bo +) + +72 + $MAKE_PSTR_WORD +( +thmo +) + +73 + $MAKE_PSTR_WORD +() + +74 + $MAKE_PSTR_WORD +( +sެ +) + +75 + $MAKE_PSTR_WORD +( +mixg +) + +76 + $MAKE_PSTR_WORD +( +geway +) + +77 + $MAKE_PSTR_WORD +( +cڌr +) + +78 + $MAKE_PSTR_WORD +( +c +) + +79 + $MAKE_PSTR_WORD +( +hump +) + +82 + $MAKE_PSTR_WORD +( +nss +) + +84 + `MAKE_PSTR +( +kwh +, "kWh") + +85 + `MAKE_PSTR +( +wh +, "Wh") + +86 + `MAKE_PSTR +( +hc_tiڮ +, "[heating circuit]") + +87 + `MAKE_PSTR +( +ma_thmo_fmt +, "Master Thermostat Device ID = %s") + +88 + `MAKE_PSTR +( +ho_fmt +, "Host = %s") + +89 + `MAKE_PSTR +( +home_fmt +, "WiFi Hostname = %s") + +90 + `MAKE_PSTR +( +mk_rv_fmt +, "Mark interval = %lus") + +91 + `MAKE_PSTR +( +wifi_ssid_fmt +, "WiFi SSID = %s") + +92 + `MAKE_PSTR +( +wifi_sswd_fmt +, "WiFi Password = %S") + +93 + `MAKE_PSTR +( +syem_hbt_fmt +, "MQTT Heartbeat is %s") + +94 + `MAKE_PSTR +( +cmd_tiڮ +, "[cmd]") + +95 + `MAKE_PSTR +( +dp_tiڮ +, "[deep]") + +96 + `MAKE_PSTR +( +tx_mode_fmt +, "Tx mode = %d") + +97 + `MAKE_PSTR +( +bus_id_fmt +, "Bus ID = %02X") + +98 + `MAKE_PSTR +( +wchid_tiڮ +, "[ID]") + +99 + `MAKE_PSTR +( +wch_fm_tiڮ +, "[off | on |aw]") + +100 + `MAKE_PSTR +( +vid_wch +, "Invalid watchype") + +101 + `MAKE_PSTR +( +da_mdy +, "<\"XX XX ...\">") + +102 + `MAKE_PSTR +( +r +, "%") + +103 + `MAKE_PSTR +( +deges +, "°C") + +104 + `MAKE_PSTR +( +aisks +, "********") + +105 + `MAKE_PSTR +( +n_mdy +, "") + +106 + `MAKE_PSTR +( +n_tiڮ +, "[n]") + +107 + `MAKE_PSTR +( +gpio_mdy +, "") + +108 + `MAKE_PSTR +( +da_tiڮ +, "[data]") + +109 + `MAKE_PSTR +( +tyid_mdy +, "") + +110 + `MAKE_PSTR +( +deviid_mdy +, "") + +111 + `MAKE_PSTR +( +vid_log_v +, "Invalidogevel") + +112 + `MAKE_PSTR +( +log_v_fmt +, "Logevel = %s") + +113 + `MAKE_PSTR +( +log_v_tiڮ +, "[level]") + +114 + `MAKE_PSTR +( +me_mdy +, "") + +115 + `MAKE_PSTR +( +me_tiڮ +, "[name]") + +116 + `MAKE_PSTR +( +w_sswd_om1 +, "Enterewassword: ") + +117 + `MAKE_PSTR +( +w_sswd_om2 +, "Retypeewassword: ") + +118 + `MAKE_PSTR +( +sswd_om +, "Password: ") + +119 + `MAKE_PSTR +( +unt +, "") + + @src/main.cpp + +19  + ~"em.h +" + +21  + $tup +() { + +22 +em +:: +EMSESP +:: + `t +(); + +23 + } +} + +25  + $lo +() { + +26 +em +:: +EMSESP +:: + `lo +(); + +27 + } +} + + @src/mqtt.cpp + +19  + ~"mq.h +" + +20  + ~"em.h +" + +21  + ~"vsi.h +" + +23 +mea + + gem + { + +25 +AsyncMqCl + * + gMq +:: +mqCl_ +; + +28 + gd +:: +rg + +Mq +:: +home_ +; + +29 +ut8_t + + gMq +:: +mq_qos_ +; + +30 +ut8_t + + gMq +:: +bus_id_ +; + +31 +ut32_t + + gMq +:: +publish_time_bo_ +; + +32 +ut32_t + + gMq +:: +publish_time_thmo_ +; + +33 +ut32_t + + gMq +:: +publish_time_sެ_ +; + +34 +ut32_t + + gMq +:: +publish_time_mixg_ +; + +35 +ut32_t + + gMq +:: +publish_time_h_ +; + +36 +ut32_t + + gMq +:: +publish_time_ns_ +; + +38 + gd +:: +ve +< +Mq +:: +MQTTSubFuni +> Mq:: +mq_subfunis_ +; + +39 + gd +:: +ve +< +Mq +:: +MQTTCmdFuni +> Mq:: +mq_cmdfunis_ +; + +41 +ut16_t + + gMq +:: +mq_publish_s_ + = 0; + +42 +size_t + + gMq +:: +maximum_mq_mesges_ + = +Mq +:: +MAX_MQTT_MESSAGES +; + +43 +ut16_t + + gMq +:: +mq_mesge_id_ + = 0; + +44 + gd +:: +li +< +Mq +:: +QueuedMqMesge +> Mq:: +mq_mesges_ +; + +45  + gwl_tic_ +[ +Mq +:: +MQTT_TOPIC_MAX_SIZE +]; + +47 + guuid +:: +log +:: +Logg + +Mq +:: +logg_ +{ +F_ +( +mq +), uuid::log:: +Facy +:: +DAEMON +}; + +51  + gMq +:: +subsibe +(cڡ +ut8_t + +devi_ty +, cڡ +d +:: +rg + & +tic +, +mq_subfuni_p + +cb +) { + +53 i(! + gmq_subfunis_ +. +emy +()) { + +54 cڡut& + gmq_subfuni + : +mq_subfunis_ +) { + +55 i(( +mq_subfuni +. +devi_ty_ + = +devi_ty +&& ( +rcmp +(mq_subfuni. +tic_ +. +c_r +(), +tic +.c_str()) == 0)) { + +62 aut + gmesge + = +queue_subsibe_mesge +( +tic +); + +66 + gmq_subfunis_ +. +ema_back +( +devi_ty +, +d +:: +move +( +tic +), std::move( +mesge +->tic), std::move( +cb +)); + +70  + gMq +:: +add_commd +(cڡ +ut8_t + +devi_ty +, cڡ ut8_ +devi_id +, cڡ +__FshSgHr + * +cmd +, +mq_cmdfuni_p + +cb +) { + +72 + gd +:: +rg + +cmd_tic + = +EMSdevi +:: +devi_ty_tic_me +( +devi_ty +); + +74 +bo + + gexis + = +l +; + +75 i(! + gmq_subfunis_ +. +emy +()) { + +76 cڡut& + gmq_subfuni + : +mq_subfunis_ +) { + +77 i(( +mq_subfuni +. +devi_ty_ + = +devi_ty +&& ( +rcmp +(mq_subfuni. +tic_ +. +c_r +(), +cmd_tic +.c_str()) == 0)) { + +78 +exis + = +ue +; + +82 i(! + gexis +) { + +83 + gMq +:: +subsibe +( +devi_ty +, +cmd_tic +, +nuαr +); + +86 +LOG_DEBUG +( +F +("Regig MQTT cmd %whi%s"), +uuid +:: +ad_ash_rg +( +cmd +). +c_r +(), +EMSdevi +:: +devi_ty_tic_me +( +devi_ty +).c_str()); + +88 + gmq_cmdfunis_ +. +ema_back +( +devi_ty +, +devi_id +, +cmd +, +cb +); + +92  + gMq +:: +subsibe +(cڡ +d +:: +rg + & +tic +, +mq_subfuni_p + +cb +) { + +93 +subsibe +(0, +tic +, +cb +); + +97  + gMq +:: +subsibe +() { + +98 i( +mq_subfunis_ +. +emy +()) { + +102 cڡut& + gmq_subfuni + : +mq_subfunis_ +) { + +103 +queue_subsibe_mesge +( +mq_subfuni +. +tic_ +); + +110  + gMq +:: +lo +() { + +112 i(! +ced +()) { + +116 +ut32_t + + gcutMlis + = +uuid +:: +g_uime +(); + +119 i( + gpublish_time_bo_ + && ( + gcutMlis + - + gϡ_publish_bo_ + >ublish_time_boiler_)) { + +120 + gϡ_publish_bo_ + = +cutMlis +; + +121 + gEMSESP +:: +publish_devi_vues +( +EMSdevi +:: +DeviTy +:: +BOILER +); + +123 i( + gpublish_time_thmo_ + && ( + gcutMlis + - + gϡ_publish_thmo_ + >ublish_time_thermostat_)) { + +124 + gϡ_publish_thmo_ + = +cutMlis +; + +125 + gEMSESP +:: +publish_devi_vues +( +EMSdevi +:: +DeviTy +:: +THERMOSTAT +); + +127 i( + gpublish_time_sެ_ + && ( + gcutMlis + - + gϡ_publish_sެ_ + >ublish_time_solar_)) { + +128 + gϡ_publish_sެ_ + = +cutMlis +; + +129 + gEMSESP +:: +publish_devi_vues +( +EMSdevi +:: +DeviTy +:: +SOLAR +); + +131 i( + gpublish_time_mixg_ + && ( + gcutMlis + - + gϡ_publish_mixg_ + >ublish_time_mixing_)) { + +132 + gϡ_publish_mixg_ + = +cutMlis +; + +133 + gEMSESP +:: +publish_devi_vues +( +EMSdevi +:: +DeviTy +:: +MIXING +); + +135 i( + gpublish_time_h_ + && ( + gcutMlis + - + gϡ_publish_h_ + >ublish_time_other_)) { + +136 + gϡ_publish_h_ + = +cutMlis +; + +137 + gEMSESP +:: +publish_h_vues +(); + +139 i( + gcutMlis + - + gϡ_publish_ns_ + > + gpublish_time_ns_ +) { + +140 + gϡ_publish_ns_ + = +cutMlis +; + +141 + gEMSESP +:: +publish_ns_vues +( +publish_time_ns_ + != 0); + +144 i(( + gut32_t +)( + gcutMlis + - + gϡ_mq_pl_ +> + gMQTT_PUBLISH_WAIT +) { + +145 + gϡ_mq_pl_ + = +cutMlis +; + +146 +oss_queue +(); + +151  + gMq +:: +show_mq +( +uuid +:: +cse +:: +Shl + & +shl +) { + +152 +shl +. +tn +( +F +("MQTT i%s"), +ced +(? +uuid +:: +ad_ash_rg +( +F_ +(ced)). +c_r +(: uuid::ad_ash_rg(F_( +disced +)).c_str()); + +154 +bo + + gsyem_hbt +; + +155 + gEMSESP +:: +e8266R +. +gMqStgsSvi +()-> +ad +([&]( +MqStgs + & +gs +{ +syem_hbt + = settings.system_heartbeat; }); + +156 + gshl +. +tn +( +F_ +( +syem_hbt_fmt +), +syem_hbt + ? F_( +abd +: F_( +dibd +)); + +158 + gshl +. +tn +( +F +("MQTTublish fas: %lu"), +mq_publish_s_ +); + +159 + gshl +. +n +(); + +162 + gshl +. +tn +( +F +("MQTT subscriptions:")); + +163 cڡut& + gmq_subfuni + : +mq_subfunis_ +) { + +165 i(( +cmp +( +mq_subfuni +. +fu_tic_ +. +c_r +(), "homeassistant/", 13) == 0)) { + +166 +shl +. +tf +( +F +("ic: %s"), +mq_subfuni +. +fu_tic_ +. +c_r +()); + +169 + gshl +. +tf +( +F +("ic: %s, [cmd]:"), +mq_subfuni +. +fu_tic_ +. +c_r +()); + +170 cڡut& + gmq_cmdfuni + : +mq_cmdfunis_ +) { + +171 i( +EMSdevi +:: +devi_ty_tic_me +( +mq_cmdfuni +. +devi_ty_ += +mq_subfuni +. +tic_ +) { + +172 +shl +. +tf +( +F +(" %s"), +uuid +:: +ad_ash_rg +( +mq_cmdfuni +. +cmd_ +). +c_r +()); + +176 + gshl +. +n +(); + +178 + gshl +. +n +(); + +181 i( + gmq_mesges_ +. +emy +()) { + +182 + gshl +. +tn +( +F +("MQTT queue ismpty")); + +183 + gshl +. +n +(); + +187 + gshl +. +tn +( +F +("MQTT queu(%d mesges):"), +mq_mesges_ +. +size +()); + +189 cڡut& + gmesge + : +mq_mesges_ +) { + +190 aut +cڋ + = +mesge +. +cڋ_ +; + +191 i( + gcڋ +-> + gݔi + = +Oti +:: +PUBLISH +) { + +193 i( +mesge +. +y_cou_ + == 0) { + +194 i( +mesge +. +ck_id_ + == 0) { + +195 +shl +. +tn +( +F +(" [%02d] (Pubtic=%yld=%s"), +mesge +. +id_ +, +cڋ +-> +tic +. +c_r +(), cڋ-> +yld +.c_str()); + +197 + gshl +. +tn +( +F +(" [%02d] (Pub)opic=%sayload=%s (pid %d)"), + +198 +mesge +. +id_ +, + +199 +cڋ +-> +tic +. +c_r +(), + +200 +cڋ +-> +yld +. +c_r +(), + +201 +mesge +. +ck_id_ +); + +204 + gshl +. +tn +( +F +(" [%02d] (Pub)opic=%sayload=%s (pid %d,etry #%d)"), + +205 +mesge +. +id_ +, + +206 +cڋ +-> +tic +. +c_r +(), + +207 +cڋ +-> +yld +. +c_r +(), + +208 +mesge +. +ck_id_ +, + +209 +mesge +. +y_cou_ +); + +213 + gshl +. +tn +( +F +(" [%02d] (Subtic=%s"), +mesge +. +id_ +, +cڋ +-> +tic +. +c_r +()); + +216 + gshl +. +n +(); + +219 #i +defed +( +EMSESP_DEBUG +) + +221  + gMq +:: +comg +(cڡ * +tic +, cڡ * +yld +) { + +222 +_mesge +( +tic +, +yld +, + +(payload)); + +228 +bo + + gMq +:: +_commd +(cڡ +ut8_t + +devi_ty +, cڡ * +cmd +, cڡ * +vue +, cڡ +t8_t + +id +) { + +229 #ifde +EMSESP_DEBUG + + +230 i( + gid + == -1) { + +231 +LOG_DEBUG +( +F +("[DEBUG] Clg commd %s, vu%s, id ideu"), +cmd +, +vue +); + +233 +LOG_DEBUG +( +F +("[DEBUG] Clg commd %s, vu%s, id i%d"), +cmd +, +vue +, +id +); + +237 i(! + gmq_cmdfunis_ +. +emy +()) { + +238 cڡut& + gcf + : +mq_cmdfunis_ +) { + +239 i( +cf +. +devi_ty_ + = +devi_ty +) { + +240 cڡ * +cf_cmd + = +uuid +:: +ad_ash_rg +( +cf +. +cmd_ +). +c_r +(); + +241 i( +rcmp +( +cf_cmd +, +cmd +) == 0) { + +242 ( +cf +. +mq_cmdfuni_ +)( +vue +, +id +); + +243  + gue +; + +248  + gl +; + +252  + gMq +:: +_mesge +(cڡ * +tic +, cڡ * +yld +, +size_t + +n +) { + +253 i( + gn + == 0) { + +258  + gmesge +[ +n + + 2]; + +259 +y +( +mesge +, +yld +, +n + + 1); + +261 #ifde +EMSESP_DEBUG + + +262 +LOG_DEBUG +( +F +("[DEBUG] Reived %=> %֒gth %d)"), +tic +, +mesge +, +n +); + +266 cڡut& + gmf + : +mq_subfunis_ +) { + +267 i( +rcmp +( +tic +, +mf +. +fu_tic_ +. +c_r +()) == 0) { + +268 i( +mf +. +mq_subfuni_ +) { + +269 ( +mf +. +mq_subfuni_ +)( +mesge +); + +273 + gSticJsDocumt +< + gEMSESP_MAX_JSON_SIZE_SMALL +> + gdoc +; + +274 +DerliziE + + gr + = +derlizeJs +( +doc +, +mesge +); + +275 i( + gr +) { + +276 +LOG_ERROR +( +F +("MQTT:ayld %s, %s"), +mesge +, +r +. +c_r +()); + +280 cڡ * + gcommd + = +doc +["cmd"]; + +281 i( + gcommd + = +nuαr +) { + +282 +LOG_ERROR +( +F +("MQTT: invidayld cmd fm. mesge=%s"), +mesge +); + +287 +t8_t + + gn + = -1; + +288 i( + gdoc +. +cڏsKey +("hc")) { + +289 + gn + = +doc +["hc"]; + +290 } i( + gdoc +. +cڏsKey +("id")) { + +291 + gn + = +doc +["id"]; + +294 +bo + + gcmd_known + = +l +; + +295 +JsV + + gda + = +doc +["data"]; + +296 i( + gda +. + gis +<*>()) { + +297 + gcmd_known + = +_commd +( +mf +. +devi_ty_ +, +commd +, +da +. +as +<*>(), +n +); + +298 } i( + gda +. + gis +<>()) { + +299  + gda_r +[10]; + +300 + gcmd_known + = +_commd +( +mf +. +devi_ty_ +, +commd +, +Hrs +:: + +( +da_r +, ( +t16_t +) +da +. +as +<>()), +n +); + +301 } i( + gda +. + gis +<>()) { + +302  + gda_r +[10]; + +303 + gcmd_known + = +_commd +( +mf +. +devi_ty_ +, +commd +, +Hrs +:: +nd_vue +( +da_r +, () +da +. +as +<>(), 2), +n +); + +306 i(! + gcmd_known +) { + +307 +LOG_ERROR +( +F +("MQTT:mchg cmd ovid da: %s"), +mesge +); + +315 +LOG_ERROR +( +F +("NMQTT hd˸found f܁i%dayld %s"), +tic +, +mesge +); + +319  + gMq +:: +show_tic_hdrs +( +uuid +:: +cse +:: +Shl + & +shl +, cڡ +ut8_t + +devi_ty +) { + +320 i( + gd +:: +cou_if +( +mq_subfunis_ +. +cbeg +(), + +321 +mq_subfunis_ +. +nd +(), + +322 [=]( +MQTTSubFuni + cڡ & +mq_subfuni +{  +devi_ty + =mq_subfuni. +devi_ty_ +; }) + +327 + gshl +. +t +( +F +(" Subscribed MQTTopics: ")); + +328 cڡut& + gmq_subfuni + : +mq_subfunis_ +) { + +329 i( +mq_subfuni +. +devi_ty_ + = +devi_ty +) { + +330 +shl +. +tf +( +F +("%"), +mq_subfuni +. +tic_ +. +c_r +()); + +333 + gshl +. +n +(); + +340  + gMq +:: +_publish +( +ut16_t + +ckId +) { + +342 i( +mq_mesges_ +. +emy +()) { + +346 aut + gmq_mesge + = +mq_mesges_ +. +t +(); + +349 i( + gmq_mesge +. + gck_id_ + == 0) { + +353 i( + gmq_mesge +. + gck_id_ + ! +ckId +) { + +354 +LOG_DEBUG +( +F +("Mismch,xg PID %d, g %d"), +mq_mesge +. +ck_id_ +, +ckId +); + +355 + gmq_publish_s_ +++; + +358 + gmq_mesges_ +. +p_t +(); + +361  + gMq +:: +t +() { + +362 +mqCl_ + = +EMSESP +:: +e8266R +. +gMqCl +(); + +365 + gEMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +ad +([&]( +WiFiStgs + & +wifiStgs +{ +home_ + = wifiStgs. +home +. +c_r +(); }); + +368 + gEMSESP +:: +e8266R +. +gMqStgsSvi +()-> +ad +([&]( +MqStgs + & +mqStgs +) { + +369 +publish_time_bo_ + = +mqStgs +. +publish_time_bo + * 1000; + +370 +publish_time_thmo_ + = +mqStgs +. +publish_time_thmo + * 1000; + +371 +publish_time_sެ_ + = +mqStgs +. +publish_time_sެ + * 1000; + +372 +publish_time_mixg_ + = +mqStgs +. +publish_time_mixg + * 1000; + +373 +publish_time_h_ + = +mqStgs +. +publish_time_h + * 1000; + +374 +publish_time_ns_ + = +mqStgs +. +publish_time_ns + * 1000; + +375 +mq_qos_ + = +mqStgs +. +mq_qos +; + +378 + gEMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +{ +bus_id_ + = stgs. +ems_bus_id +; }); + +380 + gmqCl_ +-> +C +([ +this +]( +bo + +ssiP +{ +_c +(); }); + +382 + gmqCl_ +-> +Disc +([ +this +]( +AsyncMqClDiscRs + +as +) { + +383 i( +as + = +AsyncMqClDiscRs +:: +TCP_DISCONNECTED +) { + +384 +LOG_INFO +( +F +("MQTT disconnected: TCP")); + +386 i( +as + = +AsyncMqClDiscRs +:: +MQTT_IDENTIFIER_REJECTED +) { + +387 +LOG_INFO +( +F +("MQTT disconnected: Identifier Rejected")); + +389 i( +as + = +AsyncMqClDiscRs +:: +MQTT_SERVER_UNAVAILABLE +) { + +390 +LOG_INFO +( +F +("MQTT disconnected: Server unavailable")); + +392 i( +as + = +AsyncMqClDiscRs +:: +MQTT_MALFORMED_CREDENTIALS +) { + +393 +LOG_INFO +( +F +("MQTT disconnected: Malformed credentials")); + +395 i( +as + = +AsyncMqClDiscRs +:: +MQTT_NOT_AUTHORIZED +) { + +396 +LOG_INFO +( +F +("MQTT disconnected: Notuthorized")); + +401  + gwl_tic +[ +MQTT_TOPIC_MAX_SIZE +]; + +402 +y +( +wl_tic +, +home_ +. +c_r +(), +MQTT_TOPIC_MAX_SIZE +); + +403 +t +( +wl_tic +, "/", +MQTT_TOPIC_MAX_SIZE +); + +404 +t +( +wl_tic +, "us", +MQTT_TOPIC_MAX_SIZE +); + +405 + gmqCl_ +-> +tWl +( +wl_tic +, 1, +ue +, "offline"); + +407 + gmqCl_ +-> +Mesge +([ +this +](* +tic +, * +yld +, +AsyncMqClMesgePrݔts + +ݔts +, +size_t + +n +, size_ +dex +, size_ +tٮ +) { + +409 +_mesge +( +tic +, +yld +, +n +); + +412 + gmqCl_ +-> +Publish +([ +this +]( +ut16_t + +ckId +) { + +414 +_publish +( +ckId +); + +418 + gmq_cmdfunis_ +. +rve +(40); + +419 + gmq_subfunis_ +. +rve +(10); + +422  + gMq +:: +t_publish_time_bo +( +ut16_t + +publish_time +) { + +423 +publish_time_bo_ + = +publish_time + * 1000; + +426  + gMq +:: +t_publish_time_thmo +( +ut16_t + +publish_time +) { + +427 +publish_time_thmo_ + = +publish_time + * 1000; + +430  + gMq +:: +t_publish_time_sެ +( +ut16_t + +publish_time +) { + +431 +publish_time_sެ_ + = +publish_time + * 1000; + +434  + gMq +:: +t_publish_time_mixg +( +ut16_t + +publish_time +) { + +435 +publish_time_mixg_ + = +publish_time + * 1000; + +438  + gMq +:: +t_publish_time_h +( +ut16_t + +publish_time +) { + +439 +publish_time_h_ + = +publish_time + * 1000; + +442  + gMq +:: +t_publish_time_ns +( +ut16_t + +publish_time +) { + +443 +publish_time_ns_ + = +publish_time + * 1000; + +446 +bo + + gMq +:: +g_publish_chge +( +ut8_t + +devi_ty +) { + +447 i( +devi_ty + = +EMSdevi +:: +DeviTy +:: +BOILER +) { + +448 i(! +publish_time_bo_ +) { + +449  +ue +; + +451 } i( + gdevi_ty + = +EMSdevi +:: +DeviTy +:: +THERMOSTAT +) { + +452 i(! +publish_time_thmo_ +) { + +453  +ue +; + +455 } i( + gdevi_ty + = +EMSdevi +:: +DeviTy +:: +SOLAR +) { + +456 i(! +publish_time_sެ_ +) { + +457  +ue +; + +459 } i( + gdevi_ty + = +EMSdevi +:: +DeviTy +:: +MIXING +) { + +460 i(! +publish_time_mixg_ +) { + +461  +ue +; + +463 } i(! + gpublish_time_h_ +) { + +464  + gue +; + +466  + gl +; + +469  + gMq +:: +t_qos +( +ut8_t + +mq_qos +) { + +470 +mq_qos_ + = +mq_qos +; + +474  + gMq +:: +_c +() { + +476 +SticJsDocumt +<90> +doc +; + +477 + gdoc +["event"] = "start"; + +478 + gdoc +["vsi"] = +EMSESP_APP_VERSION +; + +479 #ide +EMSESP_STANDALONE + + +480 + gdoc +[""] = +WiFi +. +lolIP +(). +toSg +(); + +482 +publish +( +F +("fo"), +doc +, +l +); + +484 +publish +( +F +("us"), "le", +ue +); + +486 +t_publish_s +(); + +488 +subsibe +(); + +491 +add_commd +( +EMSdevi +:: +DeviTy +:: +SERVICEKEY +, +bus_id_ +, +F +("p"), +Syem +:: +mq_commd_p +); + +492 +add_commd +( +EMSdevi +:: +DeviTy +:: +SERVICEKEY +, +bus_id_ +, +F +("nd"), +Syem +:: +mq_commd_nd +); + +494 +LOG_INFO +( +F +("MQTT connected")); + +500 + gd +:: +shed_r + +Mq +:: +queue_mesge +(cڡ +ut8_t + +ݔi +, cڡ +d +:: +rg + & +tic +, cڡ std::rg & +yld +, cڡ +bo + + +) { + +501 i( + gtic +. +emy +()) { + +502  + gnuαr +; + +506 + gd +:: +shed_r +< +MqMesge +> +mesge +; + +507 i(( +cmp +( +tic +. +c_r +(), "homeassistant/", 13) == 0)) { + +509 +mesge + = +d +:: +make_shed +< +MqMesge +>( +ݔi +, + gtic +, + gd +:: +move +( +yld +), + g +); + +512 + gd +:: +rg + +fu_tic +(50, '\0'); + +513 +tf_P +(& +fu_tic +[0], fu_tic. +cy +(+ 1, +PSTR +("%s/%s"), +Mq +:: +home_ +. +c_r +(), +tic +.c_str()); + +514 + gmesge + = +d +:: +make_shed +< +MqMesge +>( +ݔi +, + gfu_tic +, + gd +:: +move +( +yld +), + g +); + +518 i( + gmq_mesges_ +. +size +(> +maximum_mq_mesges_ +) { + +519 +mq_mesges_ +. +p_t +(); + +521 + gmq_mesges_ +. +ema_back +( +mq_mesge_id_ +++, +d +:: +move +( +mesge +)); + +523  + gmq_mesges_ +. +back +(). + gcڋ_ +; + +527 + gd +:: +shed_r + +Mq +:: +queue_publish_mesge +(cڡ +d +:: +rg + & +tic +, cڡ std::rg & +yld +, cڡ +bo + + +) { + +528  +queue_mesge +( +Oti +:: +PUBLISH +, +tic +, +yld +, + +); + +532 + gd +:: +shed_r + +Mq +:: +queue_subsibe_mesge +(cڡ +d +:: +rg + & +tic +) { + +533  +queue_mesge +( +Oti +:: +SUBSCRIBE +, +tic +, "", +l +); + +537  + gMq +:: +publish +(cڡ +d +:: +rg + & +tic +, cڡ std::rg & +yld +, +bo + + +) { + +538 +queue_publish_mesge +( +tic +, +yld +, + +); + +542  + gMq +:: +publish +(cڡ +__FshSgHr + * +tic +, cڡ +d +:: +rg + & +yld +, +bo + + +) { + +543 +queue_publish_mesge +( +uuid +:: +ad_ash_rg +( +tic +), +yld +, + +); + +546  + gMq +:: +publish +(cڡ +__FshSgHr + * +tic +, cڡ +JsDocumt + & +yld +, +bo + + +) { + +547 +publish +( +uuid +:: +ad_ash_rg +( +tic +), +yld +, + +); + +550  + gMq +:: +publish +(cڡ +d +:: +rg + & +tic +, cڡ +JsDocumt + & +yld +, +bo + + +) { + +551 + gd +:: +rg + +yld_xt +; + +552 +rlizeJs +( +yld +, +yld_xt +); + +553 +queue_publish_mesge +( +tic +, +yld_xt +, + +); + +557  + gMq +:: +publish +(cڡ +d +:: +rg + & +tic +, cڡ +bo + +vue +) { + +558 +queue_publish_mesge +( +tic +, +vue + ? "1" : "0", +l +); + +560  + gMq +:: +publish +(cڡ +__FshSgHr + * +tic +, cڡ +bo + +vue +) { + +561 +queue_publish_mesge +( +uuid +:: +ad_ash_rg +( +tic +), +vue + ? "1" : "0", +l +); + +565  + gMq +:: +publish +(cڡ +d +:: +rg + & +tic +) { + +566 +queue_publish_mesge +( +tic +, "", +l +); + +571  + gMq +:: +oss_queue +() { + +572 i( +mq_mesges_ +. +emy +()) { + +597 aut + gmq_mesge + = +mq_mesges_ +. +t +(); + +598 aut + gmesge + = +mq_mesge +. +cڋ_ +; + +601 i( + gmesge +-> + gݔi + = +Oti +:: +SUBSCRIBE +) { + +602 +LOG_DEBUG +( +F +("Subsibgtic: %s"), +mesge +-> +tic +. +c_r +()); + +603 +ut16_t + + gck_id + = +mqCl_ +-> +subsibe +( +mesge +-> +tic +. +c_r +(), +mq_qos_ +); + +604 i(! + gck_id +) { + +605 +LOG_DEBUG +( +F +("E subsibg%s, %d"), +mesge +-> +tic +. +c_r +(), +ck_id +); + +608 + gmq_mesges_ +. +p_t +(); + +615 i( + gmq_mesge +. + gck_id_ + > 0) { + +620 +ut16_t + + gck_id + = + +621 +mqCl_ +-> +publish +( +mesge +-> +tic +. +c_r +(), +mq_qos_ +, mesge-> + +, mesge-> +yld +.c_r(), mesge->yld. +size +(), +l +, +mq_mesge +. +id_ +); + +622 +LOG_DEBUG +( +F +("Publishgi%(#%02d,em #%d,id %d)"), +mesge +-> +tic +. +c_r +(), +mq_mesge +. +id_ +, mq_mesge. +y_cou_ + + 1, +ck_id +); + +624 i( + gck_id + == 0) { + +626 i( +mq_mesge +. +y_cou_ + =( +MQTT_PUBLISH_MAX_RETRY + - 1)) { + +627 +LOG_ERROR +( +F +("Faedpublish%a %dems"), +mesge +-> +tic +. +c_r +(), +mq_mesge +. +y_cou_ + + 1); + +628 + gmq_publish_s_ +++; + +629 + gmq_mesges_ +. +p_t +(); + +632 + gmq_mesges_ +. +t +(). + gy_cou_ +++; + +633 +LOG_DEBUG +( +F +("Faedpublish%s. Trygga, #%d"), +mesge +-> +tic +. +c_r +(), +mq_mesge +. +y_cou_ + + 1); + +640 i( + gmq_qos_ + != 0) { + +641 +mq_mesges_ +. +t +(). +ck_id_ + = +ck_id +; + +646 + gmq_mesges_ +. +p_t +(); + + @src/mqtt.h + +19 #ide +EMSESP_MQTT_H_ + + +20  + #EMSESP_MQTT_H_ + + + ) + +22  + ~ + +23  + ~ + +25  + ~ + +26  + ~ + +27  + ~
  • + +28  + ~ + +30  + ~ + +32  + ~"hrs.h +" + +33  + ~"syem.h +" + +34  + ~"cse.h +" + +36  + ~ + +38 +usg + + guuid +:: +cse +:: +Shl +; + +40  + #EMSESP_MAX_JSON_SIZE_SMALL + 200 + +41  + #EMSESP_MAX_JSON_SIZE_MEDIUM + 800 + +42  + #EMSESP_MAX_JSON_SIZE_LARGE + 1500 + +43 + + ) + +44 +mea + + gem + { + +46 +usg + + gmq_subfuni_p + = +d +:: +funi +<(cڡ * +mesge +)>; + +47 +usg + + gmq_cmdfuni_p + = +d +:: +funi +<(cڡ * +da +, cڡ +t8_t + + gid +)>; + +49  + sMqMesge + { + +50 ~ +MqMesge +() = ; + +52 cڡ +ut8_t + + gݔi +; + +53 cڡ + gd +:: +rg + +tic +; + +54 cڡ + gd +:: +rg + +yld +; + +55 cڡ +bo + + g +; + +57 +MqMesge +(cڡ +ut8_t + +ݔi +, cڡ +d +:: +rg + & +tic +, cڡ std::rg && +yld +, +bo + + +) + +58 : +ݔi +(operation) + +59 , +tic +(topic) + +60 , +yld +(payload) + +61 , + +(retain) { + +65 as + cMq + { + +66 + gpublic +: + +67  +lo +(); + +68  +t +(); + +70  +t_publish_time_bo +( +ut16_t + +publish_time +); + +71  +t_publish_time_thmo +( +ut16_t + +publish_time +); + +72  +t_publish_time_sެ +( +ut16_t + +publish_time +); + +73  +t_publish_time_mixg +( +ut16_t + +publish_time +); + +74  +t_publish_time_h +( +ut16_t + +publish_time +); + +75  +t_publish_time_ns +( +ut16_t + +publish_time +); + +76  +t_qos +( +ut8_t + +mq_qos +); + +77 +bo + +g_publish_chge +( +ut8_t + +devi_ty +); + +79 + eOti + { + gPUBLISH +, + gSUBSCRIBE + }; + +81  +cڡex + +ut8_t + + gMQTT_TOPIC_MAX_SIZE + = 100; + +83  +subsibe +(cڡ +ut8_t + +devi_ty +, cڡ +d +:: +rg + & +tic +, +mq_subfuni_p + +cb +); + +84  +subsibe +(cڡ +d +:: +rg + & +tic +, +mq_subfuni_p + +cb +); + +85  +subsibe +(); + +87  +add_commd +(cڡ +ut8_t + +devi_ty +, cڡ ut8_ +devi_id +, cڡ +__FshSgHr + * +cmd +, +mq_cmdfuni_p + +cb +); + +89  +publish +(cڡ +d +:: +rg + & +tic +, cڡ std::rg & +yld +, +bo + + + = +l +); + +90  +publish +(cڡ +d +:: +rg + & +tic +, cڡ +JsDocumt + & +yld +, +bo + + + = +l +); + +91  +publish +(cڡ +__FshSgHr + * +tic +, cڡ +JsDocumt + & +yld +, +bo + + + = +l +); + +92  +publish +(cڡ +__FshSgHr + * +tic +, cڡ +d +:: +rg + & +yld +, +bo + + + = +l +); + +93  +publish +(cڡ +d +:: +rg + & +tic +, cڡ +bo + +vue +); + +94  +publish +(cڡ +__FshSgHr + * +ti +, cڡ +bo + +vue +); + +95  +publish +(cڡ +d +:: +rg + & +tic +); + +97  +show_tic_hdrs +( +uuid +:: +cse +:: +Shl + & +shl +, cڡ +ut8_t + +devi_ty +); + +98  +show_mq +( +uuid +:: +cse +:: +Shl + & +shl +); + +100  +_c +(); + +102  +bo + +_commd +(cڡ +ut8_t + +devi_ty +, cڡ * +cmd +, cڡ * +vue +, cڡ +t8_t + +id +); + +104  +disc +() { + +105 + gmqCl_ +-> +disc +(); + +108 #i +defed +( +EMSESP_DEBUG +) + +109  +comg +(cڡ * +tic +, cڡ * +yld +); + +112  +bo + +ced +() { + +113  + gmqCl_ +-> +ced +(); + +116  +ut32_t + +publish_s +() { + +117  + gmq_publish_s_ +; + +120  +t_publish_s +() { + +121 + gmq_publish_s_ + = 0; + +124  + sMQTTCmdFuni + { + +125 +ut8_t + + gdevi_ty_ +; + +126 +ut8_t + + gdevi_id_ +; + +127 cڡ +__FshSgHr + * + gcmd_ +; + +128 +mq_cmdfuni_p + + gmq_cmdfuni_ +; + +130 +MQTTCmdFuni +( +ut8_t + +devi_ty +, ut8_ +devi_id +, cڡ +__FshSgHr + * +cmd +, +mq_cmdfuni_p + +mq_cmdfuni +) + +131 : +devi_ty_ +( +devi_ty +) + +132 , +devi_id_ +( +devi_id +) + +133 , +cmd_ +( +cmd +) + +134 , +mq_cmdfuni_ +( +mq_cmdfuni +) { + +138  + gd +:: +ve +< +MQTTCmdFuni +> +commds +() { + +139  +mq_cmdfunis_ +; + +142 + give +: + +143  +uuid +:: +log +:: +Logg + +logg_ +; + +145 as + cQueuedMqMesge + { + +146 + gpublic +: + +147 cڡ +ut16_t + +id_ +; + +148 cڡ + gd +:: +shed_r + +cڋ_ +; + +149 +ut8_t + + gy_cou_ +; + +150 +ut16_t + + gck_id_ +; + +152 ~ +QueuedMqMesge +() = ; + +153 +QueuedMqMesge +( +ut16_t + +id +, +d +:: +shed_r +< +MqMesge +> && +cڋ +) + +154 : +id_ +( +id +) + +155 , +cڋ_ +( +d +:: +move +( +cڋ +)) { + +156 +y_cou_ + = 0; + +157 + gck_id_ + = 0; + +160  + gd +:: +li +< +QueuedMqMesge +> +mq_mesges_ +; + +162  +AsyncMqCl + * + gmqCl_ +; + +164  +size_t + + gmaximum_mq_mesges_ +; + +165  +ut16_t + + gmq_mesge_id_ +; + +166  +bo + + gmq__ +; + +168  +cڡex + +size_t + + gMAX_MQTT_MESSAGES + = 20; + +169  +cڡex + +ut32_t + + gMQTT_PUBLISH_WAIT + = 200; + +170  +cڡex + +ut8_t + + gMQTT_PUBLISH_MAX_RETRY + = 3; + +172  + gd +:: +shed_r + +queue_mesge +(cڡ +ut8_t + +ݔi +, cڡ +d +:: +rg + & +tic +, cڡ std::rg & +yld +, cڡ +bo + + +); + +173  + gd +:: +shed_r + +queue_publish_mesge +(cڡ +d +:: +rg + & +tic +, cڡ std::rg & +yld +, cڡ +bo + + +); + +174  + gd +:: +shed_r + +queue_subsibe_mesge +(cڡ +d +:: +rg + & +tic +); + +176  +_publish +( +ut16_t + +ckId +); + +177  +_mesge +(cڡ * +tic +, cڡ * +yld +, +size_t + +n +); + +178  +oss_queue +(); + +180  +ut16_t + + gmq_publish_s_ +; + +183  + sMQTTSubFuni + { + +184 +ut8_t + + gdevi_ty_ +; + +185 cڡ + gd +:: +rg + +tic_ +; + +186 cڡ + gd +:: +rg + +fu_tic_ +; + +187 +mq_subfuni_p + + gmq_subfuni_ +; + +189 +MQTTSubFuni +( +ut8_t + +devi_ty +, cڡ +d +:: +rg + && +tic +, cڡ std::rg && +fu_tic +, +mq_subfuni_p + +mq_subfuni +) + +190 : +devi_ty_ +( +devi_ty +) + +191 , +tic_ +( +tic +) + +192 , +fu_tic_ +( +fu_tic +) + +193 , +mq_subfuni_ +( +mq_subfuni +) { + +197  + gd +:: +ve +< +MQTTSubFuni +> +mq_subfunis_ +; + +198  + gd +:: +ve +< +MQTTCmdFuni +> +mq_cmdfunis_ +; + +200 +ut32_t + + gϡ_mq_pl_ + = 0; + +201 +ut32_t + + gϡ_publish_bo_ + = 0; + +202 +ut32_t + + gϡ_publish_thmo_ + = 0; + +203 +ut32_t + + gϡ_publish_sެ_ + = 0; + +204 +ut32_t + + gϡ_publish_mixg_ + = 0; + +205 +ut32_t + + gϡ_publish_h_ + = 0; + +206 +ut32_t + + gϡ_publish_ns_ + = 0; + +209  + gd +:: +rg + +home_ +; + +210  +ut8_t + + gmq_qos_ +; + +211  +ut32_t + + gpublish_time_ +; + +212  +ut8_t + + gbus_id_ +; + +213  +ut32_t + + gpublish_time_bo_ +; + +214  +ut32_t + + gpublish_time_thmo_ +; + +215  +ut32_t + + gpublish_time_sެ_ +; + +216  +ut32_t + + gpublish_time_mixg_ +; + +217  +ut32_t + + gpublish_time_h_ +; + +218  +ut32_t + + gpublish_time_ns_ +; + + @src/roomcontrol.cpp + +19  + ~"roomcڌ.h +" + +21 +mea + + gem + { + +23  +ut32_t + + grc_time_ + = 0; + +24  +t16_t + + gmّemp +[4] = { +EMS_VALUE_SHORT_NOTSET +, EMS_VALUE_SHORT_NOTSET, EMS_VALUE_SHORT_NOTSET, EMS_VALUE_SHORT_NOTSET}; + +29  + gRoom +:: +t_mّemp +(cڡ +ut8_t + +hc +, cڡ +t16_t + +mp +) { + +30 i( + ghc + > 3) { + +33 + gmّemp +[ +hc +] = +mp +; + +39  + gRoom +:: +nd +(cڡ +ut8_t + +addr +) { + +40 +ut8_t + +hc_ + = +addr + - +ADDR +; + +42 i( + ghc_ + > 3) { + +46 i( + gmّemp +[ +hc_ +] = +EMS_VALUE_SHORT_NOTSET +) { + +49 i( + guuid +:: +g_uime +(- +rc_time_ + > +SEND_INTERVAL +) { + +50 +rc_time_ + = +uuid +:: +g_uime +(); + +51 +mtu +( +addr +, 0x00); + +54 + gEMSut +:: +nd_pl +( +addr +); + +61  + gRoom +:: +check +(cڡ +ut8_t + +addr +, cڡ ut8_* +da +) { + +62 +ut8_t + + ghc_ + = ( +addr + & 0x7F- +ADDR +; + +65 i( + ghc_ + > 3) { + +69 i( + gmّemp +[ +hc_ +] = +EMS_VALUE_SHORT_NOTSET +) { + +73 i( + gaddr + & 0x80) { + +74 +ck_wre +(); + +79 i( + gda +[2] == 0x02) { + +80 +vsi +( +addr +, +da +[0]); + +81 } i( + gmّemp +[ +hc_ +] = +EMS_VALUE_SHORT_NOTSET +) { + +82 +unknown +( +addr +, +da +[0], data[2], data[3]); + +83 } i( + gda +[2] =0xAF && +da +[3] == 0) { + +84 +mtu +( +addr +, +da +[0]); + +86 +unknown +( +addr +, +da +[0], data[2], data[3]); + +93  + gRoom +:: +vsi +( +ut8_t + +addr +, ut8_ +d +) { + +94 +ut8_t + + gda +[10]; + +95 + gda +[0] = +addr +; + +96 + gda +[1] = +d +; + +97 + gda +[2] = 0x02; + +98 + gda +[3] = 0; + +99 + gda +[4] = 113; + +100 + gda +[5] = 0x02; + +101 + gda +[6] = 0x01; + +102 + gda +[7] = +EMSbus +:: +lcuϋ_c +( +da +, 7); + +103 + gEMSut +:: +sm +( +da +, 8); + +109  + gRoom +:: +unknown +( +ut8_t + +addr +, ut8_ +d +, ut8_ +ty +, ut8_ +offt +) { + +110 +ut8_t + + gda +[10]; + +111 + gda +[0] = +addr +; + +112 + gda +[1] = +d +; + +113 + gda +[2] = +ty +; + +114 + gda +[3] = +offt +; + +115 + gda +[4] = +EMSbus +:: +lcuϋ_c +( +da +, 4); + +116 + gEMSut +:: +sm +( +da +, 5); + +122  + gRoom +:: +mtu +( +ut8_t + +addr +, ut8_ +d +) { + +123 +ut8_t + + gda +[10]; + +124 +ut8_t + + ghc_ + = +addr + - +ADDR +; + +125 + gda +[0] = +addr +; + +126 + gda +[1] = +d +; + +127 + gda +[2] = 0xAF; + +128 + gda +[3] = 0; + +129 + gda +[4] = ( +ut8_t +)( +mّemp +[ +hc_ +] >> 8); + +130 + gda +[5] = ( +ut8_t +)( +mّemp +[ +hc_ +] & 0xFF); + +131 + gda +[6] = 0; + +132 + gda +[7] = +EMSbus +:: +lcuϋ_c +( +da +, 7); + +133 + gEMSut +:: +sm +( +da +, 8); + +138  + gRoom +:: +ck_wre +() { + +139 +ut8_t + +da +[1]; + +140 + gda +[0] = +TxSvi +:: +TX_WRITE_FAIL +; + +141 + gEMSut +:: +sm +( +da +, 1); + + @src/roomcontrol.h + +19 #ide +EMSESP_ROOMCONTROL_H + + +20  + #EMSESP_ROOMCONTROL_H + + + ) + +22  + ~"em.h +" + +24 +mea + + gem + { + +26 as + cRoom + { + +27 + gpublic +: + +28  +nd +(cڡ +ut8_t + +addr +); + +29  +check +(cڡ +ut8_t + +addr +, cڡ ut8_* +da +); + +30  +t_mّemp +(cڡ +ut8_t + +hc +, cڡ +t16_t + +mp +); + +32 + give +: + +33  +cڡex + +ut8_t + +ADDR + = 0x18; + +34  +cڡex + +ut32_t + + gSEND_INTERVAL + = 60000; + +36  +vsi +( +ut8_t + +addr +, ut8_ +d +); + +37  +unknown +( +ut8_t + +addr +, ut8_ +d +, ut8_ +ty +, ut8_ +offt +); + +38  +mtu +( +ut8_t + +addr +, ut8_ +d +); + +39  +ck_wre +(); + + @src/sensors.cpp + +21  + ~"nss.h +" + +22  + ~"em.h +" + +24 #ifde +ESP32 + + +25  + #YIELD + + + ) + +27  + #YIELD + + `yld +() + + ) + +30 +mea + + gem + { + +32 + guuid +:: +log +:: +Logg + +Sss +:: +logg_ +{ +F_ +( +nss +), uuid::log:: +Facy +:: +DAEMON +}; + +35  + gSss +:: +t +() { + +36 +ld +(); + +38 #ide +EMSESP_STANDALONE + + +39 i( + gds_gpio_ +) { + +40 + gbus_ +. +beg +( +ds_gpio_ +); + +46  + gSss +:: +ld +() { + +48 +EMSESP +:: +e8266R +. +gMqStgsSvi +()-> +ad +([&]( +MqStgs + & +gs +) { + +49 +mq_fm_ + = +gs +. +mq_fm +; + +52 + gEMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +53 +ds_gpio_ + = +gs +. +ds_gpio +; + +54 +se_ + = +gs +. +ds_se +; + +57 i( + gmq_fm_ + = +MQTT_fm +:: +HA +) { + +58  +ut8_t + +i + = 0; + gi + < + gMAX_SENSORS +; + ggied_ha_ +[i++] = +l +) + +63  + gSss +:: +lo +() { + +64 #ide +EMSESP_STANDALONE + + +65 +ut32_t + +time_now + = +uuid +:: +g_uime +(); + +67 i( + ge_ + = +S +:: +IDLE +) { + +68 i( +time_now + - +ϡ_aivy_ + > +READ_INTERVAL_MS +) { + +70 i( +bus_ +. +t +(|| +se_ +) { + +71 +YIELD +; + +72 + gbus_ +. +sk +(); + +73 + gbus_ +. +wre +( +CMD_CONVERT_TEMP +, +se_ + ? 1 : 0); + +74 + ge_ + = +S +:: +READING +; + +78 + gdevis_ +. +r +(); + +80 + gϡ_aivy_ + = +time_now +; + +82 } i( + ge_ + = +S +:: +READING +) { + +83 i( +mtu_cvt_come +(&& ( +time_now + - +ϡ_aivy_ + > +CONVERSION_MS +)) { + +85 +bus_ +. +t_ch +(); + +86 + gfound_ +. +r +(); + +87 + ge_ + = +S +:: +SCANNING +; + +88 } i( + gtime_now + - + gϡ_aivy_ + > + gREAD_TIMEOUT_MS +) { + +89 +LOG_ERROR +( +F +("Sensoreadimeout")); + +90 + ge_ + = +S +:: +IDLE +; + +92 } i( + ge_ + = +S +:: +SCANNING +) { + +93 i( +time_now + - +ϡ_aivy_ + > +SCAN_TIMEOUT_MS +) { + +94 +LOG_ERROR +( +F +("Sensor scanimeout")); + +95 + ge_ + = +S +:: +IDLE +; + +97 +ut8_t + + gaddr +[ +ADDR_LEN +] = {0}; + +99 i( + gbus_ +. +ch +( +addr +)) { + +100 i(! + gse_ +) { + +101 + gbus_ +. +dow +(); + +103 i( + gbus_ +. +c8 +( +addr +, +ADDR_LEN + - 1) ==ddr[ADDR_LEN - 1]) { + +104  +addr +[0]) { + +105  +TYPE_DS18B20 +: + +106  +TYPE_DS18S20 +: + +107  +TYPE_DS1822 +: + +108  +TYPE_DS1825 +: + +109  +f +; + +110 + gf + = +g_mtu_c +( +addr +); + +111 i(( + gf + ! +NAN +&& ( +f + >= -55) && (f <= 125)) { + +112 +found_ +. +ema_back +( +addr +); + +113 + gfound_ +. +back +(). + gmtu_c + = +f +; + +126 +LOG_ERROR +( +F +("Unknowns %s"), +Devi +( +addr +). +to_rg +(). +c_r +()); + +130 +LOG_ERROR +( +F +("Invid ss %s"), +Devi +( +addr +). +to_rg +(). +c_r +()); + +133 i(! + gse_ +) { + +134 + gbus_ +. +dow +(); + +136 i(( + gfound_ +. +size +(> +devis_ +.size()|| ( +yt_ + > 5)) { + +137 i( +found_ +. +size +(= +devis_ +.size()) { + +138  +ut8_t + +i + = 0; + gi + < + gdevis_ +. +size +(); i++) { + +139 i( + gfound_ +[ +i +]. + gmtu_c + ! +devis_ +[i]. +mtu_c +) { + +140 +chged_ + = +ue +; + +144 + gchged_ + = +ue +; + +146 + gdevis_ + = +d +:: +move +( +found_ +); + +147 + gyt_ + = 0; + +149 + gyt_ +++; + +151 + gfound_ +. +r +(); + +153 + ge_ + = +S +:: +IDLE +; + +160 +bo + + gSss +:: +mtu_cvt_come +() { + +161 #ide +EMSESP_STANDALONE + + +162 i( +se_ +) { + +163  +ue +; + +165  + gbus_ +. +ad_b +() == 1; + +167  + gue +; + +171 #agm +GCC + +dgnoic + +push + + +172 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +174  + gSss +:: +g_mtu_c +(cڡ +ut8_t + +addr +[]) { + +175 #ide +EMSESP_STANDALONE + + +176 i(! +bus_ +. +t +()) { + +177 +LOG_ERROR +( +F +("Bued befܐadg schd from %s"), +Devi +( +addr +). +to_rg +(). +c_r +()); + +178  + gNAN +; + +180 + gYIELD +; + +181 +ut8_t + + gschd +[ +SCRATCHPAD_LEN +] = {0}; + +182 + gbus_ +. + +( +addr +); + +183 + gbus_ +. +wre +( +CMD_READ_SCRATCHPAD +); + +184 + gbus_ +. +ad_bys +( +schd +, +SCRATCHPAD_LEN +); + +185 + gYIELD +; + +186 i(! + gbus_ +. +t +()) { + +187 +LOG_ERROR +( +F +("Buedᔄdg schd from %s"), +Devi +( +addr +). +to_rg +(). +c_r +()); + +188  + gNAN +; + +190 + gYIELD +; + +191 i( + gbus_ +. +c8 +( +schd +, +SCRATCHPAD_LEN + - 1) != scratchpad[SCRATCHPAD_LEN - 1]) { + +192 +LOG_WARNING +( +F +("Invalid scratchpad CRC: %02X%02X%02X%02X%02X%02X%02X%02X%02X from device %s"), + +193 +schd +[0], + +194 +schd +[1], + +195 +schd +[2], + +196 +schd +[3], + +197 +schd +[4], + +198 +schd +[5], + +199 +schd +[6], + +200 +schd +[7], + +201 +schd +[8], + +202 +Devi +( +addr +). +to_rg +(). +c_r +()); + +203  + gNAN +; + +206 +t16_t + + gw_vue + = ((t16_t) +schd +[ +SCRATCHPAD_TEMP_MSB +] << 8| schd[ +SCRATCHPAD_TEMP_LSB +]; + +208 i( + gaddr +[0] = +TYPE_DS18S20 +) { + +209 +w_vue + = (w_vu<< 3+ 12 - +schd +[ +SCRATCHPAD_CNT_REM +]; + +212  + gsuti + = 9 + (( +schd +[ +SCRATCHPAD_CONFIG +] >> 5) & 0x3); + +213  + gsuti +) { + +215 +w_vue + &= ~0x7; + +218 +w_vue + &= ~0x3; + +221 +w_vue + &= ~0x1; + +227 +ut32_t + + gw + = ((ut32_t) +w_vue + * 625 + 500) / 1000; + +228  () + gw + / 10; + +230  + gNAN +; + +234 #agm +GCC + +dgnoic + +p + + +236 cڡ + gd +:: +ve +< +Sss +:: +Devi +> Sss:: +devis +() const { + +237  +devis_ +; + +240 + gSss +:: +Devi +::Devi(cڡ +ut8_t + +addr +[]) + +241 : +id_ +((( +ut64_t +) +addr +[0] << 56) | ((uint64_t)addr[1] << 48) | ((uint64_t)addr[2] << 40) | ((uint64_t)addr[3] << 32) | ((uint64_t)addr[4] << 24) + +242 | (( +ut64_t +) +addr +[5] << 16) | ((uint64_t)addr[6] << 8) | (uint64_t)addr[7]) { + +245 +ut64_t + +Sss +:: +Devi +:: +id +() const { + +246  +id_ +; + +249 + gd +:: +rg + +Sss +:: +Devi +:: +to_rg +() const { + +250 +d +:: +rg + +r +(20, '\0'); + +251 +tf_P +(& +r +[0], + +252 +r +. +cy +() + 1, + +253 +PSTR +("%02X-%04X-%04X-%04X-%02X"), + +254 ()( +id_ + >> 56) & 0xFF, + +255 ()( +id_ + >> 40) & 0xFFFF, + +256 ()( +id_ + >> 24) & 0xFFFF, + +257 ()( +id_ + >> 8) & 0xFFFF, + +258 ()( +id_ +)&0xFF); + +259  + gr +; + +263 +bo + + gSss +:: +upded_vues +() { + +264 i( +chged_ +) { + +265 +chged_ + = +l +; + +266  + gue +; + +268  + gl +; + +273  + gSss +:: +publish_vues +() { + +274 +ut8_t + +num_devis + = +devis_ +. +size +(); + +276 i( + gnum_devis + == 0) { + +283 i( + gmq_fm_ + = +MQTT_fm +:: +SINGLE +) { + +284 +SticJsDocumt +<100> +doc +; + +285 cڡut& + gdevi + : +devis_ +) { + +286  +s +[7]; + +287 + gdoc +["mp"] = +Hrs +:: +nd_vue +( +s +, +devi +. +mtu_c +, 1); + +288  + gtic +[60]; + +289 +y +( +tic +, "sensor_", 50); + +290 +t +( +tic +, +devi +. +to_rg +(). +c_r +(), 60); + +291 + gMq +:: +publish +( +tic +, +doc +); + +292 + gdoc +. +r +(); + +297 +DymicJsDocumt + +doc +(100 * +num_devis +); + +298 +ut8_t + + gi + = 1; + +299 cڡut& + gdevi + : +devis_ +) { + +300  +s +[7]; + +302 i( + gmq_fm_ + = +MQTT_fm +:: +CUSTOM +) { + +304 +doc +[ +devi +. +to_rg +()] = +Hrs +:: +nd_vue +( +s +, devi. +mtu_c +, 1); + +305 } i(( + gmq_fm_ + = +MQTT_fm +:: +NESTED +|| ( +mq_fm_ + =MQTT_fm:: +HA +)) { + +307  +nsID +[10]; + +308 +y +( +nsID +, "sensor", 10); + +309 +t +( +nsID +, +Hrs +:: + +( +s +, +i +), 10); + +310 +JsObje + + gdaSs + = +doc +. +NeedObje +( +nsID +); + +311 + gdaSs +["id"] = +devi +. +to_rg +(); + +312 + gdaSs +["mp"] = +Hrs +:: +nd_vue +( +s +, +devi +. +mtu_c +, 1); + +316 i( + gmq_fm_ + = +MQTT_fm +:: +HA +) { + +317 +d +:: +rg + +tic +(100, '\0'); + +330 i(!( + ggied_ha_ +[ +i +])) { + +331 + gSticJsDocumt +< + gEMSESP_MAX_JSON_SIZE_MEDIUM +> + gcfig +; + +332 + gcfig +["dev_cla"] = "temperature"; + +333 + gcfig +["stat_t"] = "homeassistant/sensor/ems-esp/state"; + +334 + gcfig +["unit_of_meas"] = "°C"; + +336 + gd +:: +rg + +r +(50, '\0'); + +337 +tf_P +(& +r +[0], 50, +PSTR +("{{vue_js.ns%d.mp}}"), +i +); + +338 + gcfig +["v_l"] = +r +; + +340 +tf_P +(& +r +[0], 50, +PSTR +("ems-e-ns%d"), +i +); + +341 + gcfig +["me"] = +r +; + +342 + gcfig +["uniq_id"] = +r +; + +344 +tf_P +(& +tic +[0], 50, +PSTR +("homssit/ns/ems-e/ns%d/cfig"), +i +); + +345 + gMq +:: +publish +( +tic +, +cfig +, +l +); + +347 + ggied_ha_ +[ +i +] = +ue +; + +350 + gi +++; + +353 i(( + gmq_fm_ + = +MQTT_fm +:: +NESTED +|| ( +mq_fm_ + =MQTT_fm:: +CUSTOM +)) { + +354 +Mq +:: +publish +( +F +("nss"), +doc +); + +355 } i( + gmq_fm_ + = +MQTT_fm +:: +HA +) { + +356 +Mq +:: +publish +( +F +("homssit/ns/ems-e/e"), +doc +); + + @src/sensors.h + +21 #ide +EMSESP_SENSORS_H + + +22  + #EMSESP_SENSORS_H + + + ) + +24  + ~ + +25  + ~ + +27  + ~"hrs.h +" + +28  + ~"mq.h +" + +29  + ~"cse.h +" + +31  + ~ + +33 #ide +EMSESP_STANDALONE + + +34  + ~ + +37 +mea + + gem + { + +39 as + cSss + { + +40 + gpublic +: + +41 as + cDevi + { + +42 +public +: + +43 +Devi +(cڡ +ut8_t + +addr +[]); + +44 ~ +Devi +() = ; + +46 +ut64_t + +id +() const; + +47 + gd +:: +rg + +to_rg +() const; + +49  + gmtu_c + = +NAN +; + +51 + give +: + +52 cڡ +ut64_t + +id_ +; + +53 +bo + + ggied_ + = +l +; + +56 +Sss +() = ; + +57 ~ +Sss +() = ; + +59  +t +(); + +60  +lo +(); + +61  +publish_vues +(); + +62  +ld +(); + +63 +bo + +upded_vues +(); + +65 cڡ + gd +:: +ve +< +Devi +> +devis +() const; + +67 + give +: + +68  +cڡex + +ut8_t + +MAX_SENSORS + = 20; + +70 as + cS + { + gIDLE +, + gREADING +, + gSCANNING + }; + +72  +cڡex + +size_t + + gADDR_LEN + = 8; + +74  +cڡex + +size_t + + gSCRATCHPAD_LEN + = 9; + +75  +cڡex + +size_t + + gSCRATCHPAD_TEMP_MSB + = 1; + +76  +cڡex + +size_t + + gSCRATCHPAD_TEMP_LSB + = 0; + +77  +cڡex + +size_t + + gSCRATCHPAD_CONFIG + = 4; + +78  +cڡex + +size_t + + gSCRATCHPAD_CNT_REM + = 6; + +81  +cڡex + +ut8_t + + gTYPE_DS18B20 + = 0x28; + +82  +cڡex + +ut8_t + + gTYPE_DS18S20 + = 0x10; + +83  +cڡex + +ut8_t + + gTYPE_DS1822 + = 0x22; + +84  +cڡex + +ut8_t + + gTYPE_DS1825 + = 0x3B; + +86  +cڡex + +ut32_t + + gREAD_INTERVAL_MS + = 5000; + +87  +cڡex + +ut32_t + + gCONVERSION_MS + = 1000; + +88  +cڡex + +ut32_t + + gREAD_TIMEOUT_MS + = 2000; + +89  +cڡex + +ut32_t + + gSCAN_TIMEOUT_MS + = 3000; + +91  +cڡex + +ut8_t + + gCMD_CONVERT_TEMP + = 0x44; + +92  +cڡex + +ut8_t + + gCMD_READ_SCRATCHPAD + = 0xBE; + +94  + guuid +:: +log +:: +Logg + +logg_ +; + +96 #ide +EMSESP_STANDALONE + + +97 +OWe + + gbus_ +; + +100 +bo + +mtu_cvt_come +(); + +101  +g_mtu_c +(cڡ +ut8_t + +addr +[]); + +103 +ut32_t + + gϡ_aivy_ + = +uuid +:: +g_uime +(); + +104 +ut32_t + + gϡ_publish_ + = +uuid +:: +g_uime +(); + +105 +S + + ge_ + = S:: +IDLE +; + +106 + gd +:: +ve +< +Devi +> +found_ +; + +107 + gd +:: +ve +< +Devi +> +devis_ +; + +109 +bo + + ggied_ha_ +[ +MAX_SENSORS +]; + +111 +ut8_t + + gmq_fm_ +; + +112 +ut8_t + + gyt_ + = 0; + +113 +ut8_t + + gds_gpio_ + = 0; + +114 +bo + + gse_ + = +l +; + +115 +bo + + gchged_ + = +l +; + + @src/shower.cpp + +19  + ~"show.h +" + +21 +mea + + gem + { + +23 + guuid +:: +log +:: +Logg + +Show +:: +logg_ +{ +F_ +( +show +), uuid::log:: +Facy +:: +CONSOLE +}; + +25  + gShow +:: +t +() { + +26 +EMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +27 +show_tim_ + = +gs +. +show_tim +; + +28 +show_t_ + = +gs +. +show_t +; + +32  + gShow +:: +lo +() { + +33 i(! +show_tim_ +) { + +37 +ut32_t + + gtime_now + = +uuid +:: +g_uime +(); + +40 i(! + gdog_cd_sh_ +) { + +42 i( + gEMSESP +:: +p_w_aive +()) { + +44 i( +tim_t_ + == 0) { + +46 +tim_t_ + = +time_now +; + +47 + gtim_u_ + = 0; + +48 + gdog_cd_sh_ + = +l +; + +49 + gduti_ + = 0; + +50 + gshow__ + = +l +; + +54 i(! + gshow__ + && ( + gtime_now + - + gtim_t_ +> + gSHOWER_MIN_DURATION +) { + +55 + gshow__ + = +ue +; + +56 + gMq +:: +publish +( +F +("show_aive"), ( +bo +) +ue +); + +57 +LOG_DEBUG +( +F +("[Shower] hot water stillunning, starting showerimer")); + +60 i(((( + gtime_now + - + gtim_t_ +> + gSHOWER_MAX_DURATION +&& ! + gdog_cd_sh_ +&& + gshow_t_ +) { + +61 +show_t_t +(); + +66 i(( + gtim_t_ +&& ( + gtim_u_ + == 0)) { + +67 +tim_u_ + = +time_now +; + +71 i(( + gtim_u_ +&& (( + gtime_now + -im_u_> + gSHOWER_PAUSE_TIME +)) { + +74 i(( + gtim_u_ + - + gtim_t_ +> + gSHOWER_OFFSET_TIME +) { + +75 + gduti_ + = ( +tim_u_ + - +tim_t_ + - +SHOWER_OFFSET_TIME +); + +76 i( + gduti_ + > + gSHOWER_MIN_DURATION +) { + +77 + gMq +:: +publish +( +F +("show_aive"), ( +bo +) +l +); + +78 +LOG_DEBUG +( +F +("[Show] fished wh duti %d"), +duti_ +); + +79 +publish_vues +(); + +84 + gtim_t_ + = 0; + +85 + gtim_u_ + = 0; + +86 + gshow__ + = +l +; + +87 +show_t_ +(); + +94  + gShow +:: +show_t_ +() { + +95 i( +dog_cd_sh_ +) { + +96 +LOG_DEBUG +( +F +("Shower Alert stopped")); + +98 + gdog_cd_sh_ + = +l +; + +104  + gShow +:: +show_t_t +() { + +105 i( +show_t_ +) { + +106 +LOG_DEBUG +( +F +("Shower Alert started!")); + +108 + gdog_cd_sh_ + = +ue +; + +116  + gShow +:: +publish_vues +() { + +117 +SticJsDocumt +<90> +doc +; + +118 + gdoc +["show_tim"] = +show_tim_ + ? "1" : "0"; + +119 + gdoc +["show_t"] = +show_t_ + ? "1" : "0"; + +122  + gs +[50]; + +123 i( + gduti_ + > + gSHOWER_MIN_DURATION +) { + +124  + gbufr +[16] = {0}; + +125 +y +( +s +, +Hrs +:: + +( +bufr +, ( +ut8_t +)(( +duti_ + / (1000 * 60)) % 60), 10), 50); + +126 +t +( +s +, " minutesnd ", 50); + +127 +t +( +s +, +Hrs +:: + +( +bufr +, ( +ut8_t +)(( +duti_ + / 1000) % 60), 10), 50); + +128 +t +( +s +, " seconds", 50); + +129 + gdoc +["duti"] = +s +; + +132 + gMq +:: +publish +( +F +("show_da"), +doc +); + + @src/shower.h + +19 #ide +EMSESP_SHOWER_H + + +20  + #EMSESP_SHOWER_H + + + ) + +22  + ~ + +23  + ~ + +25  + ~"hrs.h +" + +26  + ~"cse.h +" + +27  + ~"mq.h +" + +28  + ~"gm.h +" + +29  + ~"em.h +" + +31  + ~ + +33 +mea + + gem + { + +35 as + cShow + { + +36 + gpublic +: + +37  +t +(); + +38  +lo +(); + +40 +bo + +show_t +() const { + +41  + gshow_t_ +; + +44  +show_t +(cڡ +bo + shower_alert) { + +45 + gshow_t_ + = +show_t +; + +48 +bo + +show_tim +() const { + +49  + gshow_tim_ +; + +52  +show_tim +(cڡ +bo + shower_timer) { + +53 + gshow_tim_ + = +show_tim +; + +56 + give +: + +57  +uuid +:: +log +:: +Logg + +logg_ +; + +59  +cڡex + +ut32_t + + gSHOWER_PAUSE_TIME + = 15000; + +60  +cڡex + +ut32_t + + gSHOWER_MIN_DURATION + = 120000; + +61  +cڡex + +ut32_t + + gSHOWER_OFFSET_TIME + = 5000; + +62  +cڡex + +ut32_t + + gSHOWER_COLDSHOT_DURATION + = 10; + +63  +cڡex + +ut32_t + + gSHOWER_MAX_DURATION + = 420000; + +65  +cse_commds +(); + +67  +publish_vues +(); + +68  +show_t_t +(); + +69  +show_t_ +(); + +71 +bo + + gshow_tim_ +; + +72 +bo + + gshow_t_ +; + +74 +bo + + gshow__ +; + +75 +ut32_t + + gtim_t_ +; + +76 +ut32_t + + gtim_u_ +; + +77 +ut32_t + + gduti_ +; + +78 +bo + + gdog_cd_sh_ +; + + @src/system.cpp + +19  + ~"syem.h +" + +20  + ~"em.h +" + +22  + ~"vsi.h +" + +24 +mea + + gem + { + +26 + guuid +:: +log +:: +Logg + +Syem +:: +logg_ +{ +F_ +( +syem +), uuid::log:: +Facy +:: +KERN +}; + +28 #ide +EMSESP_STANDALONE + + +29 + guuid +:: +syog +:: +SyogSvi + +Syem +:: +syog_ +; + +33 +ut32_t + + gSyem +:: +hp_t_ + = 0; + +34  + gSyem +:: +t_cou_ + = 0; + +35 +bo + + gSyem +:: +ud_us_ + = +l +; + +36 +bo + + gSyem +:: +hide_d_ + = +l +; + +37 +ut8_t + + gSyem +:: +d_gpio_ + = 0; + +38 +ut16_t + + gSyem +:: +og_ + = 0; + +42  + gSyem +:: +mq_commd_p +(cڡ * +vue +, cڡ +t8_t + +id +) { + +43 +bo + + gv + = +l +; + +44 i( + gHrs +:: +vue2bo +( +vue +, +v +)) { + +45 +pMode +( +id +, +OUTPUT +); + +46 +digWre +( +id +, +v +); + +47 +LOG_INFO +( +F +("GPIO %d s%s"), +id +, +v + ? "HIGH" : "LOW"); + +52  + gSyem +:: +mq_commd_nd +(cڡ * +vue +, cڡ +t8_t + +id +) { + +53 + gEMSESP +:: +nd_w_gm +( +vue +); + +57  + gSyem +:: +t +() { + +58 +LOG_NOTICE +("Restarting system..."); + +59 + gShl +:: +lo_l +(); + +60 +day +(1000); + +61 #i +defed +( +ESP8266 +) + +62 + gESP +. +t +(); + +63 #i +defed +( +ESP32 +) + +64 + gESP +. +t +(); + +69  + gSyem +:: +wifi_c +() { + +70 +LOG_NOTICE +("The wifi willeconnect..."); + +71 + gShl +:: +lo_l +(); + +72 +day +(1000); + +73 + gEMSESP +:: +emStgsSvi +. +ve +(); + +74 + gEMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +UpdeHdrs +("local"); + +79  + gSyem +:: +fm +( +uuid +:: +cse +:: +Shl + & +shl +) { + +80 aut +msg + = +F +("Formatting file system. This willesetll settingsoheir defaults"); + +81 + gshl +. +logg +(). +wng +( +msg +); + +82 + gshl +. +ush +(); + +84 + gEMSut +:: + +(); + +86 #i +defed +( +ESP8266 +) + +87 + gLeFS +. +fm +(); + +88 #i +defed +( +ESP32 +) + +89 + gSPIFFS +. +fm +(); + +92 + gSyem +:: +t +(); + +96 +ut8_t + + gSyem +:: +_mem +() { + +97 #ide +EMSESP_STANDALONE + + +98 +ut32_t + +_memy + = +ESP +. +gFeHp +(); + +100 +ut32_t + + g_memy + = 1000; + +103  (100 * + g_memy + / + ghp_t_ +); + +106  + gSyem +:: +syog_ +() { + +108 +EMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +109 +syog_v_ + = +gs +. +syog_v +; + +110 +syog_mk_rv_ + = +gs +. +syog_mk_rv +; + +111 +syog_ho_ + = +gs +. +syog_ho +; + +114 #ide +EMSESP_STANDALONE + + +115 + gsyog_ +. +t +(); + +118 +IPAddss + + gaddr +; + +119 i(! + gaddr +. +omSg +( +syog_ho_ +. +c_r +())) { + +120 + gaddr + = ( +ut32_t +)0; + +122 + gsyog_ +. +log_v +(( +uuid +:: +log +:: +Lev +) +syog_v_ +); + +123 + gsyog_ +. +mk_rv +( +syog_mk_rv_ +); + +124 + gsyog_ +. +dei +( +addr +); + +125 + gEMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +ad +([&]( +WiFiStgs + & +wifiStgs +{ +syog_ +. +home +(wifiStgs.home. +c_r +()); }); + +129  + gSyem +:: +t_hbt +( +bo + +syem_hbt +) { + +130 +syem_hbt_ + = +syem_hbt +; + +134  + gSyem +:: +t +() { + +136 i( +hp_t_ + == 0) { + +137 #ide +EMSESP_STANDALONE + + +138 +hp_t_ + = +ESP +. +gFeHp +(); + +140 + ghp_t_ + = 2000; + +145 + gEMSESP +:: +e8266R +. +gMqStgsSvi +()-> +ad +([&]( +MqStgs + & +gs +{ +syem_hbt_ + = stgs. +syem_hbt +; }); + +148 + gEMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +ad +( + +149 [&]( +WiFiStgs + & +wifiStgs +{ +LOG_INFO +( +F +("Syem %boed (EMS-ESP vsi %s)"), wifiStgs. +home +. +c_r +(), +EMSESP_APP_VERSION +); }); + +151 +syog_ +(); + +152 +t_d +(); + +153 + gEMSESP +:: +_tx +(); + +157  + gSyem +:: +t_d +() { + +158 +EMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +159 +hide_d_ + = +gs +. +hide_d +; + +160 +d_gpio_ + = +gs +. +d_gpio +; + +161 i( +d_gpio_ +) { + +162 +pMode +( +d_gpio_ +, +OUTPUT +); + +163 +digWre +( +d_gpio_ +, +hide_d_ + ? ! +LED_ON + : LED_ON); + +169 +bo + + gSyem +:: +ud_us +() { + +170 #i +defed +( +EMSESP_STANDALONE +) + +171  +l +; + +173  + gud_us_ + || + gUpde +. +isRušg +(); + +177  + gSyem +:: +ud_us +( +bo + +_ogss +) { + +179 i((! +ud_us_ +&& ( +_ogss +)) { + +180 +EMSut +:: + +(); + +182 + gud_us_ + = +_ogss +; + +186  + gSyem +:: +lo +() { + +187 #ide +EMSESP_STANDALONE + + +188 +syog_ +. +lo +(); + +190 +d_mڙ +(); + +191 +syem_check +(); + +192 +msu_og +(); + +195 +ut32_t + + gcutMlis + = +uuid +:: +g_uime +(); + +196 i(! + gϡ_hbt_ + || ( + gcutMlis + -a_hbt_ > + gSYSTEM_HEARTBEAT_INTERVAL +)) { + +197 + gϡ_hbt_ + = +cutMlis +; + +198 i( + gsyem_hbt_ +) { + +199 +nd_hbt +(); + +203 #i +defed +( +ESP8266 +) + +204 #i +defed +( +EMSESP_DEBUG +) + +205  +ut32_t + + gϡ_memcheck_ + = 0; + +206 i( + gcutMlis + - + gϡ_memcheck_ + > 10000) { + +207 + gϡ_memcheck_ + = +cutMlis +; + +208 +show_mem +("core"); + +214  + gSyem +:: +show_mem +(cڡ * +ne +) { + +215 #i +defed +( +ESP8266 +) + +216 #i +defed +( +EMSESP_DEBUG +) + +217 +LOG_INFO +( +F +("(%sFhp: %d%% (%lu), fg:%u%%"), +ne +, +_mem +(), () +ESP +. +gFeHp +(), ESP. +gHpFgmti +()); + +223  + gSyem +:: +nd_hbt +() { + +225  +rssid + = +wifi_quy +(); + +226 i( + grssid + == -1) { + +230 + gSticJsDocumt +< + gEMSESP_MAX_JSON_SIZE_SMALL +> + gdoc +; + +231 + gdoc +["rssid"] = +rssid +; + +232 + gdoc +["uime"] = +uuid +:: +log +:: +fm_timeamp_ms +(uuid:: +g_uime_ms +(), 3); + +233 + gdoc +["uime_c"] = +uuid +:: +g_uime_c +(); + +234 + gdoc +["mem"] = +_mem +(); + +235 + gdoc +["mqpublishs"] = +Mq +:: +publish_s +(); + +236 + gdoc +["txs"] = +EMSESP +:: +txrvi_ +. +gm__cou +(); + +237 + gdoc +["rxs"] = +EMSESP +:: +rxrvi_ +. +gm_r_cou +(); + +238 + gdoc +["adc"] = +og_ +; + +240 + gMq +:: +publish +( +F +("hbt"), +doc +, +l +); + +244  + gSyem +:: +msu_og +() { + +245  +ut32_t + +msu_ϡ_ + = 0; + +247 i(! + gmsu_ϡ_ + || ( + gut32_t +)( + guuid +:: +g_uime +(- +msu_ϡ_ +> +SYSTEM_MEASURE_ANALOG_INTERVAL +) { + +248 +msu_ϡ_ + = +uuid +:: +g_uime +(); + +249 #i +defed +( +ESP8266 +) + +250 +ut16_t + + ga + = +ogRd +( +A0 +); + +251 #i +defed +( +ESP32 +) + +252 +ut16_t + + ga + = +ogRd +(36); + +254 +ut16_t + + ga + = 0; + +256  +ut32_t + + gsum_ + = 0; + +258 i(! + gog_ +) { + +259 + gog_ + = +a +; + +260 + gsum_ + = +a + * 256; + +262 + gsum_ + = +sum_ + * 255 / 256 + +a +; + +263 + gog_ + = +sum_ + / 256; + +269  + gSyem +:: +t_d_d +( +ut32_t + +d +) { + +270 +d_ash_d_ + = +d +; + +271 +d_mڙ +(); + +275  + gSyem +:: +syem_check +() { + +276  +ut32_t + +ϡ_syem_check_ + = 0; + +278 i(! + gϡ_syem_check_ + || (( + gut32_t +)( + guuid +:: +g_uime +(- +ϡ_syem_check_ +> +SYSTEM_CHECK_FREQUENCY +)) { + +279 +ϡ_syem_check_ + = +uuid +:: +g_uime +(); + +281 #ide +EMSESP_STANDALONE + + +282 i( + gWiFi +. +us +(! +WL_CONNECTED +) { + +283 +t_d_d +( +LED_WARNING_BLINK_FAST +); + +284 + gsyem_hhy_ + = +l +; + +290 i(! + gEMSbus +:: +bus_ced +()) { + +291 +syem_hhy_ + = +l +; + +292 +t_d_d +( +LED_WARNING_BLINK +); + +296 i(! + gsyem_hhy_ +) { + +297 + gsyem_hhy_ + = +ue +; + +298 i( + gd_gpio_ +) { + +299 +digWre +( +d_gpio_ +, +hide_d_ + ? ! +LED_ON + : LED_ON); + +307  + gSyem +:: +d_mڙ +() { + +308 i(! +d_gpio_ +) { + +312  +ut32_t + + gd_ϡ_blk_ + = 0; + +314 i(! + gd_ϡ_blk_ + || ( + gut32_t +)( + guuid +:: +g_uime +(- +d_ϡ_blk_ +> +d_ash_d_ +) { + +315 +d_ϡ_blk_ + = +uuid +:: +g_uime +(); + +318 i(! + gsyem_hhy_ +) { + +319 +digWre +( +d_gpio_ +, ! +digRd +(led_gpio_)); + +329 +t8_t + + gSyem +:: +wifi_quy +() { + +330 #ide +EMSESP_STANDALONE + + +331 i( +WiFi +. +us +(! +WL_CONNECTED +) { + +334  + gdBm + = +WiFi +. +RSSI +(); + +336 +t8_t + + gdBm + = -70; + +338 i( + gdBm + <= -100) { + +341 i( + gdBm + >= -50) { + +344  2 * ( + gdBm + + 100); + +348  + gSyem +:: +show_urs +( +uuid +:: +cse +:: +Shl + & +shl +) { + +349 +shl +. +tn +( +F +("Users:")); + +351 #ide +EMSESP_STANDALONE + + +352 + gEMSESP +:: +e8266R +. +gSecuryStgsSvi +()-> +ad +([&]( +SecuryStgs + & +curyStgs +) { + +353  +Ur + +ur + : +curyStgs +. +urs +) { + +354 +shl +. +tn +( +F +(" uame: %s,asswd: %s, is_adm: %s"), +ur +. +uame +. +c_r +(), ur. +sswd +.c_r(), ur. +adm + ? F("yes") : F("no")); + +359 + gshl +. +n +(); + +362  + gSyem +:: +show_syem +( +uuid +:: +cse +:: +Shl + & +shl +) { + +363 +shl +. +tn +( +F +("Uime: %s"), +uuid +:: +log +:: +fm_timeamp_ms +(uuid:: +g_uime_ms +(), 3). +c_r +()); + +365 #ide +EMSESP_STANDALONE + + +366 #i +defed +( +ESP8266 +) + +367 + gshl +. +tn +( +F +("Ch ID: 0x%08x"), +ESP +. +gChId +()); + +368 + gshl +. +tn +( +F +("SDK vsi: %s"), +ESP +. +gSdkVsi +()); + +369 + gshl +. +tn +( +F +("Cܐvsi: %s"), +ESP +. +gCeVsi +(). +c_r +()); + +370 + gshl +. +tn +( +F +("Fu vsi: %s"), +ESP +. +gFuVsi +(). +c_r +()); + +371 + gshl +. +tn +( +F +("Bo vsi: %u"), +ESP +. +gBoVsi +()); + +372 + gshl +. +tn +( +F +("Bo mode: %u"), +ESP +. +gBoMode +()); + +373 + gshl +. +tn +( +F +("CPU fqucy: %u MHz"), +ESP +. +gCpuFqMHz +()); + +374 + gshl +. +tn +( +F +("Fsh ch: 0x%08X (%u bys)"), +ESP +. +gFshChId +(), ESP. +gFshChRlSize +()); + +375 + gshl +. +tn +( +F +("Reas: %s"), +ESP +. +gRetRs +(). +c_r +()); + +376 + gshl +. +tn +( +F +("Refo: %s"), +ESP +. +gRetInfo +(). +c_r +()); + +377 + gshl +. +tn +( +F +("Fhp: %lu bys"), () +ESP +. +gFeHp +()); + +378 + gshl +. +tn +( +F +("Fmem: %d %%"), +_mem +()); + +379 + gshl +. +tn +( +F +("Maximum fblock size: %lu bys"), () +ESP +. +gMaxFeBlockSize +()); + +380 + gshl +. +tn +( +F +("Hagmti: %u %%"), +ESP +. +gHpFgmti +()); + +381 + gshl +. +tn +( +F +("Fctuiڠack: %lu bys"), () +ESP +. +gFeCtSck +()); + +382 #i +defed +( +ESP32 +) + +383 + gshl +. +tn +( +F +("SDK vsi: %s"), +ESP +. +gSdkVsi +()); + +384 + gshl +. +tn +( +F +("CPU fqucy: %u MHz"), +ESP +. +gCpuFqMHz +()); + +386 + gshl +. +tn +( +F +("Skch size: %u by(%u by)"), +ESP +. +gSkchSize +(), ESP. +gFeSkchS +()); + +387 + gshl +. +tn +( +F +("Fhp: %lu bys"), () +ESP +. +gFeHp +()); + +388 + gshl +. +tn +( +F +("Fmem: %d %%"), +_mem +()); + +389 + gshl +. +n +(); + +391  + gWiFi +. +us +()) { + +392  + gWL_IDLE_STATUS +: + +393 +shl +. +tn +( +F +("WiFi: Idle")); + +396  + gWL_NO_SSID_AVAIL +: + +397 +shl +. +tn +( +F +("WiFi: Networkot found")); + +400  + gWL_SCAN_COMPLETED +: + +401 +shl +. +tn +( +F +("WiFi: Network scan complete")); + +404  + gWL_CONNECTED +: { + +405 +shl +. +tn +( +F +("WiFi: Connected")); + +406 + gshl +. +tn +( +F +("SSID: %s"), +WiFi +. +SSID +(). +c_r +()); + +407 + gshl +. +tn +( +F +("BSSID: %s"), +WiFi +. +BSSIDr +(). +c_r +()); + +408 + gshl +. +tn +( +F +("RSSI: %d dBm (%d %%)"), +WiFi +. +RSSI +(), +wifi_quy +()); + +409 + gshl +. +tn +( +F +("MACddss: %s"), +WiFi +. +macAddss +(). +c_r +()); + +411 #i +defed +( +ESP8266 +) + +412 + gshl +. +tn +( +F +("Home: %s"), +WiFi +. +home +(). +c_r +()); + +413 #i +defed +( +ESP32 +) + +414 + gshl +. +tn +( +F +("Home: %s"), +WiFi +. +gHome +()); + +416 + gshl +. +tn +( +F +("IPv4ddss: %s/%s"), +uuid +:: +b_to_rg +( +WiFi +. +lolIP +()). +c_r +(), uuid::b_to_rg(WiFi. +subtMask +()).c_str()); + +417 + gshl +. +tn +( +F +("IPv4 geway: %s"), +uuid +:: +b_to_rg +( +WiFi +. +gewayIP +()). +c_r +()); + +418 + gshl +. +tn +( +F +("IPv4amerv: %s"), +uuid +:: +b_to_rg +( +WiFi +. +dnsIP +()). +c_r +()); + +421  + gWL_CONNECT_FAILED +: + +422 +shl +. +tn +( +F +("WiFi: Connection failed")); + +425  + gWL_CONNECTION_LOST +: + +426 +shl +. +tn +( +F +("WiFi: Connectionost")); + +429  + gWL_DISCONNECTED +: + +430 +shl +. +tn +( +F +("WiFi: Disconnected")); + +433  + gWL_NO_SHIELD +: + +435 +shl +. +tn +( +F +("WiFi: Unknown")); + +439 + gEMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +440 +shl +. +n +(); + +441 +shl +. +tn +( +F +("Syslog:")); + +442 +shl +. +t +(" "); + +443 +shl +. +tn +( +F_ +( +ho_fmt +), ! +gs +. +syog_ho +. +isEmy +(? stgs.syog_ho. +c_r +(: +uuid +:: +ad_ash_rg +(F_( +unt +)).c_str()); + +444 +shl +. +t +(" "); + +445 +shl +. +tn +( +F_ +( +log_v_fmt +), +uuid +:: +log +:: +fm_v_low +( +ic_ +( +gs +. +syog_v +))); + +446 +shl +. +t +(" "); + +447 +shl +. +tn +( +F_ +( +mk_rv_fmt +), +gs +. +syog_mk_rv +); + +454  + gSyem +:: +cse_commds +( +Shl + & +shl +,  +cڋxt +) { + +455 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +456 +CommdFgs +:: +ADMIN +, + +457 +ash_rg_ve +{ +F_ +( +t +)}, + +458 []( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts + __attribute__((unused))) { + +459 +t +(); + +462 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +463 +CommdFgs +:: +ADMIN +, + +464 +ash_rg_ve +{ +F_ +( +wifi +), F_( +c +)}, + +465 []( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts + __attribute__((unused))) { + +466 +wifi_c +(); + +469 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +470 +CommdFgs +:: +ADMIN +, + +471 +ash_rg_ve +{ +F_ +( +fm +)}, + +472 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +473 +shl +. +r_sswd +( +F_ +( +sswd_om +), [=]( +Shl + & shl, +bo + +comed +, cڡ +d +:: +rg + & +sswd +) { + +474 i( +comed +) { + +475 +EMSESP +:: +e8266R +. +gSecuryStgsSvi +()-> +ad +([&]( +SecuryStgs + & +curyStgs +) { + +476 i( +curyStgs +. +jwtSe +. +equs +( +sswd +. +c_r +())) { + +477 +fm +( +shl +); + +479 +shl +. +n +( +F +("incorrectassword")); + +486 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +487 +CommdFgs +:: +ADMIN +, + +488 +ash_rg_ve +{ +F_ +( +sswd +)}, + +489 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +490 +shl +. +r_sswd +( +F_ +( +w_sswd_om1 +), []( +Shl + & shl, +bo + +comed +, cڡ +d +:: +rg + & +sswd1 +) { + +491 i( +comed +) { + +492 +shl +. +r_sswd +( +F_ +( +w_sswd_om2 +), + +493 [ +sswd1 +]( +Shl + & +shl +, +bo + +comed +, cڡ +d +:: +rg + & +sswd2 +) { + +494 i( +comed +) { + +495 i( +sswd1 + = +sswd2 +) { + +496 +EMSESP +:: +e8266R +. +gSecuryStgsSvi +()-> +upde +( + +497 [&]( +SecuryStgs + & +curyStgs +) { + +498 +curyStgs +. +jwtSe + = +sswd2 +. +c_r +(); + +499  +SUpdeResu +:: +CHANGED +; + +502 +shl +. +n +( +F +("Adminassword updated")); + +504 +shl +. +n +( +F +("Passwords doot match")); + +512 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +513 +CommdFgs +:: +USER +, + +514 +ash_rg_ve +{ +F_ +( +show +)}, + +515 [=]( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +516 +show_syem +( +shl +); + +517 +shl +. +n +(); + +520 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +521 +CommdFgs +:: +ADMIN +, + +522 +ash_rg_ve +{ +F_ +( +t +), F_( +wifi +), F_( +home +)}, + +523 +ash_rg_ve +{ +F_ +( +me_mdy +)}, + +524 []( +Shl + & +shl + +__ibu__ +(( +unud +)), cڡ +d +:: +ve + & +gumts +) { + +525 +shl +. +n +("The wifi connection will beeset..."); + +526 +Shl +:: +lo_l +(); + +527 +day +(1000); + +528 +EMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +upde +( + +529 [&]( +WiFiStgs + & +wifiStgs +) { + +530 +wifiStgs +. +home + = +gumts +. +t +(). +c_r +(); + +531  +SUpdeResu +:: +CHANGED +; + +536 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +537 +CommdFgs +:: +ADMIN +, + +538 +ash_rg_ve +{ +F_ +( +t +), F_( +wifi +), F_( +ssid +)}, + +539 +ash_rg_ve +{ +F_ +( +me_mdy +)}, + +540 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +541 +EMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +updeWhoutPragi +([&]( +WiFiStgs + & +wifiStgs +) { + +542 +wifiStgs +. +ssid + = +gumts +. +t +(). +c_r +(); + +543  +SUpdeResu +:: +CHANGED +; + +545 +shl +. +n +("Use `wifieconnect`opplyheew settings"); + +548 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +549 +CommdFgs +:: +ADMIN +, + +550 +ash_rg_ve +{ +F_ +( +t +), F_( +wifi +), F_( +sswd +)}, + +551 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +552 +shl +. +r_sswd +( +F_ +( +w_sswd_om1 +), []( +Shl + & shl, +bo + +comed +, cڡ +d +:: +rg + & +sswd1 +) { + +553 i( +comed +) { + +554 +shl +. +r_sswd +( +F_ +( +w_sswd_om2 +), + +555 [ +sswd1 +]( +Shl + & +shl +, +bo + +comed +, cڡ +d +:: +rg + & +sswd2 +) { + +556 i( +comed +) { + +557 i( +sswd1 + = +sswd2 +) { + +558 +EMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +updeWhoutPragi +( + +559 [&]( +WiFiStgs + & +wifiStgs +) { + +560 +wifiStgs +. +sswd + = +sswd2 +. +c_r +(); + +561  +SUpdeResu +:: +CHANGED +; + +563 +shl +. +n +("Use `wifieconnect`opplyheew settings"); + +565 +shl +. +n +( +F +("Passwords doot match")); + +573 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +574 +CommdFgs +:: +USER +, + +575 +ash_rg_ve +{ +F_ +( +t +)}, + +576 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +))) { + +577 +EMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +ad +([&]( +WiFiStgs + & +wifiStgs +) { + +578 +shl +. +t +(" "); + +579 +shl +. +tn +( +F_ +( +home_fmt +), + +580 +wifiStgs +. +home +. +isEmy +(? +uuid +:: +ad_ash_rg +( +F_ +( +unt +)). +c_r +() + +581 : +wifiStgs +. +home +. +c_r +()); + +584 +EMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +ad +([&]( +WiFiStgs + & +wifiStgs +) { + +585 +shl +. +t +(" "); + +586 +shl +. +tn +( +F_ +( +wifi_ssid_fmt +), + +587 +wifiStgs +. +ssid +. +isEmy +(? +uuid +:: +ad_ash_rg +( +F_ +( +unt +)). +c_r +() + +588 : +wifiStgs +. +ssid +. +c_r +()); + +589 +shl +. +t +(" "); + +590 +shl +. +tn +( +F_ +( +wifi_sswd_fmt +), +wifiStgs +. +ssid +. +isEmy +(? F_( +unt +: F_( +aisks +)); + +599 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +600 +CommdFgs +:: +ADMIN +, + +601 +ash_rg_ve +{ +F_ +( +show +), F_( +urs +)}, + +602 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts + +__ibu__ +(( +unud +)){ +Syem +:: +show_urs +(shell); }); + +604 + gEMSESPShl +:: +commds +-> +add_commd +( +ShlCڋxt +:: +SYSTEM +, + +605 +CommdFgs +:: +ADMIN +, + +606 +ash_rg_ve +{ +F_ +( +p +)}, + +607 +ash_rg_ve +{ +F_ +( +gpio_mdy +), F_( +da_tiڮ +)}, + +608 []( +Shl + & +shl +, cڡ +d +:: +ve + & +gumts +) { + +609 i( +gumts +. +size +() == 1) { + +610 +shl +. +tn +( +F +("use on/off, 1/0 orrue/false")); + +613  +p + = 0; + +614 i( +Hrs +:: +vue2numb +( +gumts +[0]. +c_r +(), +p +)) { + +615 +Syem +:: +mq_commd_p +( +gumts +[1]. +c_r +(), +p +); + +620 + gCse +:: +r_cuom_cڋxt +( +shl +, +cڋxt +); + +626 +bo + + gSyem +:: +check_upgde +() { + +627 #i +defed +( +ESP8266 +) + +629 +LeFSCfig + +l_cfg +; + +630 + gl_cfg +. +tAutoFm +( +l +); + +631 + gLeFS +. +tCfig +( +l_cfg +); + +632 i( + gLeFS +. +beg +()) { + +633 #i +defed +( +EMSESP_DEBUG +) + +634 + gSl +. +beg +(115200); + +635 + gSl +. +n +( +F +("FS is Littlefs")); + +636 + gSl +. +d +(); + +638  + gl +; + +641 #agm +GCC + +dgnoic + +push + + +642 #agm +GCC + +dgnoic + +igned + "-Wdeprecated-declarations" + +644 +SPIFFSCfig + + gcfg +; + +645 + gcfg +. +tAutoFm +( +l +); + +646 + gSPIFFS +. +tCfig +( +cfg +); + +647 i(! + gSPIFFS +. +beg +()) { + +648 #i +defed +( +EMSESP_DEBUG +) + +649 + gSl +. +beg +(115200); + +650 + gSl +. +n +( +F +("No old SPIFFS found!")); + +651 + gSl +. +d +(); + +654 + gl_cfg +. +tAutoFm +( +ue +); + +655 + gLeFS +. +tCfig +( +l_cfg +); + +656  + gl +; + +659 + gSl +. +beg +(115200); + +661 +bo + + ged + = +l +; + +662 +Fe + + gfe +; + +663 +JsObje + + gtwk +, + gg +, + gmq +, + gcuom_gs +; + +664 + gSticJsDocumt +<1024> + gdoc +; + +674 + gfe + = +SPIFFS +. +ݒ +("/myesp.json", "r"); + +675 i(! + gfe +) { + +676 + gSl +. +n +( +F +("Unableoeadhe system config file")); + +677 + ged + = +ue +; + +679 +DerliziE + + gr + = +derlizeJs +( +doc +, +fe +); + +680 i( + gr +) { + +681 + gSl +. +tf +( +PSTR +("E. Faedderlizsyem js, %s\n"), +r +. +c_r +()); + +682 + ged + = +ue +; + +684 + gSl +. +n +( +F +("Migrating settings from EMS-ESP v1.9...")); + +685 #i +defed +( +EMSESP_DEBUG +) + +686 +rlizeJs +( +doc +, +Sl +); + +687 + gSl +. +n +(); + +689 + gtwk + = +doc +["network"]; + +690 + gg + = +doc +["general"]; + +691 + gmq + = +doc +["mqtt"]; + +694 + gl_cfg +. +tAutoFm +( +ue +); + +695 + gLeFS +. +tCfig +( +l_cfg +); + +696 + gLeFS +. +beg +(); + +697 + gEMSESP +:: +e8266R +. +beg +(); + +698 + gEMSESP +:: +emStgsSvi +. +beg +(); + +700 + gEMSESP +:: +e8266R +. +gWiFiStgsSvi +()-> +upde +( + +701 [&]( +WiFiStgs + & +wifiStgs +) { + +702 +wifiStgs +. +home + = +g +["home"] | +FACTORY_WIFI_HOSTNAME +; + +703 +wifiStgs +. +ssid + = +twk +["ssid"] | +FACTORY_WIFI_SSID +; + +704 +wifiStgs +. +sswd + = +twk +["sswd"] | +FACTORY_WIFI_PASSWORD +; + +706 +wifiStgs +. +icIPCfig + = +l +; + +707 +JsUts +:: +adIP +( +twk +, "ic", +wifiStgs +. +lolIP +); + +708 +JsUts +:: +adIP +( +twk +, "dns", +wifiStgs +. +dnsIP1 +); + +709 +JsUts +:: +adIP +( +twk +, "geway", +wifiStgs +. +gewayIP +); + +710 +JsUts +:: +adIP +( +twk +, "nmask", +wifiStgs +. +subtMask +); + +712  +SUpdeResu +:: +CHANGED +; + +716 + gEMSESP +:: +e8266R +. +gSecuryStgsSvi +()-> +upde +( + +717 [&]( +SecuryStgs + & +curyStgs +) { + +718 +curyStgs +. +jwtSe + = +g +["sswd"] | +FACTORY_JWT_SECRET +; + +720  +SUpdeResu +:: +CHANGED +; + +724 + gEMSESP +:: +e8266R +. +gMqStgsSvi +()-> +upde +( + +725 [&]( +MqStgs + & +mqStgs +) { + +726 +mqStgs +. +ho + = +mq +[""] | +FACTORY_MQTT_HOST +; + +727 +mqStgs +. +mq_fm + = ( +mq +["áedjs"] ? +MQTT_fm +:: +NESTED + : MQTT_fm:: +SINGLE +); + +728 +mqStgs +. +mq_qos + = +mq +["qos"] | 0; + +729 +mqStgs +. +uame + = +mq +["user"] | ""; + +730 +mqStgs +. +sswd + = +mq +["password"] | ""; + +731 +mqStgs +. +pt + = +mq +["pt"] | +FACTORY_MQTT_PORT +; + +732 +mqStgs +. +Id + = +FACTORY_MQTT_CLIENT_ID +; + +733 +mqStgs +. +abd + = +mq +["enabled"]; + +734 +mqStgs +. +syem_hbt + = +mq +["heartbeat"]; + +735 +mqStgs +. +kpAlive + = +FACTORY_MQTT_KEEP_ALIVE +; + +736 +mqStgs +. +nSessi + = +FACTORY_MQTT_CLEAN_SESSION +; + +737 +mqStgs +. +maxTicLgth + = +FACTORY_MQTT_MAX_TOPIC_LENGTH +; + +739  +SUpdeResu +:: +CHANGED +; + +744 + gfe +. +o +(); + +746 i( + ged +) { + +747 #i +defed +( +EMSESP_DEBUG +) + +748 + gSl +. +n +( +F +("Failedoead system config. Quitting.")); + +750 + gSPIFFS +. +d +(); + +751 + gSl +. +d +(); + +752  + gl +; + +760 + gdoc +. +r +(); + +761 + ged + = +l +; + +762 + gfe + = +SPIFFS +. +ݒ +("/customconfig.json", "r"); + +763 i(! + gfe +) { + +764 + gSl +. +n +( +F +("Unableoead custom config file")); + +765 + ged + = +ue +; + +767 +DerliziE + + gr + = +derlizeJs +( +doc +, +fe +); + +768 i( + gr +) { + +769 + gSl +. +tf +( +PSTR +("E. Faedderlizcuom js, %s\n"), +r +. +c_r +()); + +770 + ged + = +ue +; + +772 #i +defed +( +EMSESP_DEBUG +) + +773 +rlizeJs +( +doc +, +Sl +); + +774 + gSl +. +n +(); + +776 + gcuom_gs + = +doc +["settings"]; + +777 + gEMSESP +:: +emStgsSvi +. +upde +( + +778 [&]( +EMSESPStgs + & +gs +) { + +779 +gs +. +tx_mode + = +cuom_gs +["tx_mode"] | +EMSESP_DEFAULT_TX_MODE +; + +780 +gs +. +show_t + = +cuom_gs +["show_t"] | +EMSESP_DEFAULT_SHOWER_ALERT +; + +781 +gs +. +show_tim + = +cuom_gs +["show_tim"] | +EMSESP_DEFAULT_SHOWER_TIMER +; + +782 +gs +. +ma_thmo + = +cuom_gs +["ma_thmo"] | +EMSESP_DEFAULT_MASTER_THERMOSTAT +; + +783 +gs +. +ems_bus_id + = +cuom_gs +["bus_id"] | +EMSESP_DEFAULT_EMS_BUS_ID +; + +784 +gs +. +syog_ho + = +EMSESP_DEFAULT_SYSLOG_HOST +; + +785 +gs +. +syog_v + = +EMSESP_DEFAULT_SYSLOG_LEVEL +; + +786 +gs +. +syog_mk_rv + = +EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL +; + +787 +gs +. +ds_gpio + = +cuom_gs +["ds_gpio"] | +EMSESP_DEFAULT_DALLAS_GPIO +; + +788 +gs +. +ds_se + = +cuom_gs +["ds_se"] | +EMSESP_DEFAULT_DALLAS_PARASITE +; + +789 +gs +. +d_gpio + = +cuom_gs +["d_gpio"] | +EMSESP_DEFAULT_LED_GPIO +; + +791  +SUpdeResu +:: +CHANGED +; + +796 + gfe +. +o +(); + +798 + gSPIFFS +. +d +(); + +800 i( + ged +) { + +801 #i +defed +( +EMSESP_DEBUG +) + +802 + gSl +. +n +( +F +("Failedoead custom config. Quitting.")); + +804 + gSl +. +d +(); + +805  + gl +; + +808 #agm +GCC + +dgnoic + +p + + +810 + gSl +. +n +( +F +("Restarting...")); + +811 + gSl +. +ush +(); + +812 +day +(1000); + +813 + gSl +. +d +(); + +814 +day +(1000); + +815 +t +(); + +816  + gue +; + +818  + gl +; + + @src/system.h + +19 #ide +EMSESP_SYSTEM_H_ + + +20  + #EMSESP_SYSTEM_H_ + + + ) + +22  + ~ + +23  + ~ + +25  + ~"hrs.h +" + +26  + ~"cse.h +" + +27  + ~"mq.h +" + +28  + ~"gm.h +" + +30 #ide +EMSESP_STANDALONE + + +31  + ~ + +34  + ~ + +36 +usg + + guuid +:: +cse +:: +Shl +; + +38 +mea + + gem + { + +40 as + cSyem + { + +41 + gpublic +: + +42  +t +(); + +43  +lo +(); + +46  +t +(); + +47  +fm +( +uuid +:: +cse +:: +Shl + & +shl +); + +49  +cse_commds +( +Shl + & +shl +,  +cڋxt +); + +51  +mq_commd_p +(cڡ * +vue +, cڡ +t8_t + +id +); + +52  +mq_commd_nd +(cڡ * +vue +, cڡ +t8_t + +id +); + +54  +ut8_t + +_mem +(); + +55  +ud_us +( +bo + +_ogss +); + +56  +bo + +ud_us +(); + +57  +syog_ +(); + +58  +t_hbt +( +bo + +syem_hbt +); + +59  +nd_hbt +(); + +60  +show_mem +(cڡ * +ne +); + +61  +t_d +(); + +62 +bo + +check_upgde +(); + +64 + give +: + +65  +uuid +:: +log +:: +Logg + +logg_ +; + +67 #ide +EMSESP_STANDALONE + + +68  + guuid +:: +syog +:: +SyogSvi + +syog_ +; + +71  +cڡex + +ut32_t + + gSYSTEM_CHECK_FREQUENCY + = 5000; + +72  +cڡex + +ut32_t + + gLED_WARNING_BLINK + = 1000; + +73  +cڡex + +ut32_t + + gLED_WARNING_BLINK_FAST + = 100; + +74  +cڡex + +ut32_t + + gSYSTEM_HEARTBEAT_INTERVAL + = 60000; + +75  +cڡex + +ut32_t + + gSYSTEM_MEASURE_ANALOG_INTERVAL + = 1100; + +78  +cڡex + +ut8_t + + gLED_ON + = +LOW +; + +80  +d_mڙ +(); + +81  +t_d_d +( +ut32_t + +d +); + +82  +syem_check +(); + +83  +msu_og +(); + +85  +show_syem +( +uuid +:: +cse +:: +Shl + & +shl +); + +86  +show_urs +( +uuid +:: +cse +:: +Shl + & +shl +); + +87  +wifi_c +(); + +88  +t8_t + +wifi_quy +(); + +90 +bo + + gsyem_hhy_ + = +l +; + +91 +ut32_t + + gd_ash_d_ + = +LED_WARNING_BLINK_FAST +; + +92  +ut32_t + + ghp_t_ +; + +93  + gt_cou_ +; + +94 +ut32_t + + gϡ_hbt_ + = 0; + +95  +bo + + gud_us_ +; + +96  +ut16_t + + gog_ +; + +99 +bo + + gsyem_hbt_ +; + +100  +bo + + ghide_d_ +; + +101 +ut8_t + + gsyog_v_ +; + +102 +ut32_t + + gsyog_mk_rv_ +; + +103 +Sg + + gsyog_ho_ +; + +104  +ut8_t + + gd_gpio_ +; + + @src/telegram.cpp + +19  + ~"gm.h +" + +20  + ~"em.h +" + +22 +mea + + gem + { + +25 cڡ +ut8_t + + gems_c_b +[] = {0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E, 0x20, 0x22, 0x24, 0x26, + +39 +ut32_t + + gEMSbus +:: +ϡ_bus_aivy_ + = 0; + +40 +bo + + gEMSbus +:: +bus_ced_ + = +l +; + +41 +ut8_t + + gEMSbus +:: +ems_mask_ + = +EMS_MASK_UNSET +; + +42 +ut8_t + + gEMSbus +:: +ems_bus_id_ + = +EMSESP_DEFAULT_EMS_BUS_ID +; + +43 +ut8_t + + gEMSbus +:: +tx_mode_ + = +EMSESP_DEFAULT_TX_MODE +; + +44 +ut8_t + + gEMSbus +:: +tx_e_ + = +Tegm +:: +Oti +:: +NONE +; + +46 + guuid +:: +log +:: +Logg + +EMSbus +:: +logg_ +{ +F_ +( +gm +), uuid::log:: +Facy +:: +CONSOLE +}; + +50 +ut8_t + + gEMSbus +:: +lcuϋ_c +(cڡ ut8_* +da +, cڡ ut8_ +ngth +) { + +51 +ut8_t + + gi + = 0; + +52 +ut8_t + + gc + = 0; + +53  + gi + < + gngth +) { + +54 + gc + = +ems_c_b +[ +c +]; + +55 + gc + ^ +da +[ +i +++]; + +57  + gc +; + +62 + gTegm +:: +Tegm +(cڡ +ut8_t + +ݔi +, + +63 cڡ +ut8_t + +c +, + +64 cڡ +ut8_t + +de +, + +65 cڡ +ut16_t + +ty_id +, + +66 cڡ +ut8_t + +offt +, + +67 cڡ +ut8_t + * +da +, + +68 cڡ +ut8_t + +mesge_ngth +) + +69 : +ݔi +(operation) + +70 , +c +(src) + +71 , +de +(dest) + +72 , +ty_id +(type_id) + +73 , +offt +(offset) + +74 , +mesge_ngth +(message_length) { + +76  +ut8_t + + gi + = 0; ((< + gmesge_ngth +&& (< + gEMS_MAX_TELEGRAM_MESSAGE_LENGTH +)); i++) { + +77 + gmesge_da +[ +i +] = +da +[i]; + +82 + gd +:: +rg + +Tegm +:: +to_rg +() const { + +83 +ut8_t + +da +[ +EMS_MAX_TELEGRAM_LENGTH +]; + +84 +ut8_t + + gngth + = 0; + +85 + gda +[0] = +this +-> +c + ^ +RxSvi +:: +ems_mask +(); + +86 i( + gthis +-> + gݔi + = +Tegm +:: +Oti +:: +TX_READ +) { + +87 +da +[1] = +this +-> +de + | 0x80; + +88 + gda +[4] = +this +-> +mesge_da +[0]; + +89 i( + gthis +-> + gty_id + > 0xFF) { + +90 + gda +[2] = 0xFF; + +91 + gda +[5] = ( +this +-> +ty_id + >> 8) - 1; + +92 + gda +[6] = +this +-> +ty_id + & 0xFF; + +93 + gngth + = 7; + +95 + gda +[2] = +this +-> +ty_id +; + +96 + gngth + = 5; + +99 + gda +[1] = +this +-> +de +; + +100 i( + gthis +-> + gty_id + > 0xFF) { + +101 + gda +[2] = 0xFF; + +102 + gda +[4] = ( +this +-> +ty_id + >> 8) - 1; + +103 + gda +[5] = +this +-> +ty_id + & 0xFF; + +104 + gngth + = 6; + +106 + gda +[2] = +this +-> +ty_id +; + +107 + gngth + = 4; + +109  +ut8_t + + gi + = 0; i < + gthis +-> + gmesge_ngth +; i++) { + +110 + gda +[ +ngth +++] = +this +-> +mesge_da +[ +i +]; + +114  + gHrs +:: +da_to_hex +( +da +, +ngth +); + +118 + gd +:: +rg + +Tegm +:: +to_rg_mesge +() const { + +119 i( +this +-> +mesge_ngth + == 0) { + +120  +ad_ash_rg +( +F +("")); + +123  + gHrs +:: +da_to_hex +( +this +-> +mesge_da +,his-> +mesge_ngth +); + +127  + gRxSvi +:: +lo +() { + +128 ! +rx_gms_ +. +emy +()) { + +129 aut +gm + = +rx_gms_ +. +t +(). +gm_ +; + +130 () + gEMSESP +:: +oss_gm +( +gm +); + +131 +emt_gm_cou +(); + +132 + grx_gms_ +. +p_t +(); + +140  + gRxSvi +:: +add +( +ut8_t + * +da +, ut8_ +ngth +) { + +141 i( + gngth + < 2) { + +146 +ut8_t + + gc + = +lcuϋ_c +( +da +, +ngth + - 1); + +147 i( + gda +[ +ngth + - 1] ! +c +) { + +148 +emt_gm_r_cou +(); + +149 +LOG_ERROR +( +F +("Rx: %(CRC %02X !%02X)"), +Hrs +:: +da_to_hex +( +da +, +ngth +). +c_r +(), da[ngth - 1], +c +); + +157 i( +ems_mask +(= +EMS_MASK_UNSET +) { + +158 +ems_mask +( +da +[0]); + +162 +ut8_t + + gc + = +da +[0] & 0x7F; + +163 +ut8_t + + gde + = +da +[1] & 0x7F; + +164 +ut8_t + + gofft + = +da +[3]; + +166 +ut16_t + + gty_id +; + +167 +ut8_t + * + gmesge_da +; + +168 +ut8_t + + gmesge_ngth +; + +174 i( + gda +[2] < 0xF0 || + gngth + < 6) { + +176 + gty_id + = +da +[2]; + +177 + gmesge_da + = +da + + 4; + +178 + gmesge_ngth + = +ngth + - 5; + +181 +ut8_t + + gshi + = 0; + +182 i( + gda +[2] != 0xFF) { + +184 +shi + = ( +da +[4] != 0xFF) ? 2 : 1; + +186 + gty_id + = ( +da +[4 + +shi +] << 8) + data[5 + shift] + 256; + +187 + gmesge_da + = +da + + 6 + +shi +; + +188 + gmesge_ngth + = +ngth + - 7 - +shi +; + +192 i( + gEMSESP +:: +wch +(= +EMSESP +:: +Wch +:: +WATCH_RAW +) { + +193 +ut16_t + +a_wch_id + = +EMSESP +:: +wch_id +(); + +194 i(( + ga_wch_id + = +WATCH_ID_NONE +|| ( +ty_id + = +a_wch_id +) + +195 || (( +a_wch_id + < 0x80&& (( +c + =a_wch_id|| ( +de + ==race_watch_id)))) { + +196 +LOG_NOTICE +( +F +("Rx: %s"), +Hrs +:: +da_to_hex +( +da +, +ngth +). +c_r +()); + +200 #ifde +EMSESP_DEBUG + + +201 +LOG_DEBUG +( +F +("[DEBUG] New Rxegm, mesgngth %d"), +mesge_ngth +); + +206 i( + gty_id + == 0) { + +211 + gc + = +EMSESP +:: +check_ma_devi +( +c +, +ty_id +, +ue +); + +214 aut + ggm + = +d +:: +make_shed +< +Tegm +>(Tegm:: +Oti +:: +RX +, + gc +, + gde +, + gty_id +, + gofft +, + gmesge_da +, + gmesge_ngth +); + +217 i( + grx_gms_ +. +size +(> +MAX_RX_TELEGRAMS +) { + +218 +rx_gms_ +. +p_t +(); + +219 +emt_gm_r_cou +(); + +222 + grx_gms_ +. +ema_back +( +rx_gm_id_ +++, +d +:: +move +( +gm +)); + +230  + gTxSvi +:: +ush_tx_queue +() { + +231 +tx_gms_ +. +r +(); + +232 + gtx_gm_id_ + = 0; + +237  + gTxSvi +:: +t +() { + +239 +EMSESP +:: +emStgsSvi +. +ad +([&]( +EMSESPStgs + & +gs +) { + +240 +ems_bus_id +( +gs +.ems_bus_id); + +241 +tx_mode +( +gs +.tx_mode); + +245 +gm_ad_cou +(0); + +246 +gm_wre_cou +(0); + +247 +gm__cou +(0); + +251 +ad_que +( +EMSdevi +:: +EMS_TYPE_UBADevis +, EMSdevi:: +EMS_DEVICE_ID_BOILER +); + +255  + gTxSvi +:: +nd_pl +() { + +257 i( +tx_mode +()) { + +258 +EMSut +:: +nd_pl +( +ems_bus_id +(^ +ems_mask +()); + +264  + gTxSvi +:: +nd +() { + +266 i(! +bus_ced +()) { + +271 i( + gtx_gms_ +. +emy +()) { + +272 +nd_pl +(); + +277 i( +tx_mode +() != 0) { + +278 +nd_gm +( +tx_gms_ +. +t +()); + +282 + gtx_gms_ +. +p_t +(); + +286  + gTxSvi +:: +nd_gm +(cڡ +QueuedTxTegm + & +tx_gm +) { + +287  +ut8_t + +gm_w +[ +EMS_MAX_TELEGRAM_LENGTH +]; + +290 aut + ggm + = +tx_gm +. +gm_ +; + +293 +ut8_t + + gc + = +gm +-> +c +; + +294 i( +ems_mask +(! +EMS_MASK_UNSET +) { + +295 +c + ^ +ems_mask +(); + +297 + ggm_w +[0] = +c +; + +301 +ut8_t + + gde + = +gm +-> +de +; + +304 + gde + = +EMSESP +:: +check_ma_devi +( +de +, +gm +-> +ty_id +, +l +); + +306 i( + ggm +-> + gݔi + = +Tegm +:: +Oti +:: +TX_READ +) { + +307 +de + |= 0x80; + +309 + ggm_w +[1] = +de +; + +311 +ut8_t + + gmesge_p + = 0; + +312 +bo + + gcy_da + = +ue +; + +314 i( + ggm +-> + gty_id + > 0xFF) { + +316 + ggm_w +[2] = 0xFF; + +317 + ggm_w +[3] = +gm +-> +offt +; + +320 i( + ggm +-> + gݔi + = +Tegm +:: +Oti +:: +TX_WRITE +) { + +322 +gm_w +[4] = ( +gm +-> +ty_id + >> 8) - 1; + +323 + ggm_w +[5] = +gm +-> +ty_id + & 0xFF; + +324 + gmesge_p + = 6; + +327 + ggm_w +[4] = +gm +-> +mesge_da +[0]; + +328 + ggm_w +[5] = ( +gm +-> +ty_id + >> 8) - 1; + +329 + ggm_w +[6] = +gm +-> +ty_id + & 0xFF; + +330 + gmesge_p + = 7; + +331 + gcy_da + = +l +; + +335 + ggm_w +[2] = +gm +-> +ty_id +; + +336 + ggm_w +[3] = +gm +-> +offt +; + +337 + gmesge_p + = 4; + +340 i( + gcy_da +) { + +341 i( + ggm +-> + gmesge_ngth + > + gEMS_MAX_TELEGRAM_MESSAGE_LENGTH +) { + +346  +ut8_t + + gi + = 0; i < + ggm +-> + gmesge_ngth +; i++) { + +347 + ggm_w +[ +mesge_p +++] = +gm +-> +mesge_da +[ +i +]; + +351 +ut8_t + + gngth + = +mesge_p +; + +353 + ggm_ϡ_ + = +d +:: +make_shed +< +Tegm +>(* +gm +); + +355 + ggm_w +[ +ngth +] = +lcuϋ_c +( +gm_w +,ength); + +357 + gngth +++; + +359 +LOG_DEBUG +( +F +("Sending %s Tx [#%d],elegram: %s"), + +360 ( +gm +-> +ݔi + = +Tegm +:: +Oti +:: +TX_WRITE +? +F +("write") : F("read"), + +361 +tx_gm +. +id_ +, + +362 +Hrs +:: +da_to_hex +( +gm_w +, +ngth +). +c_r +()); + +365 +ut16_t + + gus + = +EMSut +:: +sm +( +gm_w +, +ngth +); + +367 i( + gus + = +EMS_TX_STATUS_ERR +) { + +368 +LOG_ERROR +( +F +("Failedoransmit Tx via UART.")); + +369 +emt_gm__cou +(); + +370 +tx_e +( +Tegm +:: +Oti +:: +NONE +); + +374 +tx_e +( +gm +-> +ݔi +); + +380  + gTxSvi +:: +nd_gm +(cڡ +ut8_t + * +da +, cڡ ut8_ +ngth +) { + +381 +ut8_t + + ggm_w +[ +EMS_MAX_TELEGRAM_LENGTH +]; + +383  +ut8_t + + gi + = 0; i < + gngth +; i++) { + +384 + ggm_w +[ +i +] = +da +[i]; + +386 + ggm_w +[ +ngth +] = +lcuϋ_c +( +gm_w +,ength); + +388 +tx_e +( +Tegm +:: +Oti +:: +NONE +); + +391 +ut16_t + + gus + = +EMSut +:: +sm +( +gm_w +, +ngth +); + +393 i( + gus + = +EMS_TX_STATUS_ERR +) { + +394 +LOG_ERROR +( +F +("Failedoransmit Tx via UART.")); + +395 +emt_gm__cou +(); + +401  + gTxSvi +:: +add +(cڡ +ut8_t + +ݔi +, + +402 cڡ +ut8_t + +de +, + +403 cڡ +ut16_t + +ty_id +, + +404 cڡ +ut8_t + +offt +, + +405 +ut8_t + * +mesge_da +, + +406 cڡ +ut8_t + +mesge_ngth +, + +407 cڡ +bo + +t +) { + +408 aut + ggm + = +d +:: +make_shed +< +Tegm +>( +ݔi +, +ems_bus_id +(), + gde +, + gty_id +, + gofft +, + gmesge_da +, + gmesge_ngth +); + +410 #ifde +EMSESP_DEBUG + + +411 +LOG_DEBUG +( +F +("[DEBUG] New Tx [#%d]egm,gth %d"), +tx_gm_id_ +, +mesge_ngth +); + +415 i( + gtx_gms_ +. +size +(> +MAX_TX_TELEGRAMS +) { + +416 +tx_gms_ +. +p_t +(); + +419 i( + gt +) { + +420 + gtx_gms_ +. +ema_t +( +tx_gm_id_ +++, +d +:: +move +( +gm +), +l +); + +422 + gtx_gms_ +. +ema_back +( +tx_gm_id_ +++, +d +:: +move +( +gm +), +l +); + +430  + gTxSvi +:: +add +( +ut8_t + +ݔi +, cڡ ut8_* +da +, cڡ ut8_ +ngth +, cڡ +bo + +t +) { + +432 +ut8_t + + gc + = +da +[0]; + +433 +ut8_t + + gde + = +da +[1]; + +434 +ut8_t + + gofft + = +da +[3]; + +436 +ut16_t + + gty_id +; + +437 cڡ +ut8_t + * + gmesge_da +; + +438 +ut8_t + + gmesge_ngth +; + +442 i( + gda +[2] < 0xF0) { + +444 + gty_id + = +da +[2]; + +445 + gmesge_da + = +da + + 4; + +446 + gmesge_ngth + = +ngth + - 4; + +449 +ut8_t + + gshi + = 0; + +450 i( + gda +[2] != 0xFF) { + +452 +shi + = ( +da +[4] != 0xFF) ? 2 : 1; + +454 + gty_id + = ( +da +[4 + +shi +] << 8) + data[5 + shift] + 256; + +455 + gmesge_da + = +da + + 6 + +shi +; + +456 + gmesge_ngth + = +ngth + - 6 - +shi +; + +460 i(( + gty_id + =0|| ( +mesge_ngth + == 0)) { + +461 #ifde +EMSESP_DEBUG + + +462 +LOG_DEBUG +( +F +("[DEBUG] Txegmy %d faed,gth %d"), +ty_id +, +mesge_ngth +); + +467 i( + gݔi + = +Tegm +:: +Oti +:: +TX_RAW +) { + +468 i( +de + & 0x80) { + +469 +ݔi + = +Tegm +:: +Oti +:: +TX_READ +; + +471 + gݔi + = +Tegm +:: +Oti +:: +TX_WRITE +; + +472 +t_po_nd_quy +( +ty_id +); + +474 + gEMSESP +:: +t_ad_id +( +ty_id +); + +477 aut + ggm + = +d +:: +make_shed +< +Tegm +>( +ݔi +, + gc +, + gde +, + gty_id +, + gofft +, + gmesge_da +, + gmesge_ngth +); + +480 i( + gtx_gms_ +. +size +(> +MAX_TX_TELEGRAMS +) { + +481 +tx_gms_ +. +p_t +(); + +484 #ifde +EMSESP_DEBUG + + +485 +LOG_DEBUG +( +F +("[DEBUG] New Tx [#%d]egm,gth %d"), +tx_gm_id_ +, +mesge_ngth +); + +488 i( + gt +) { + +489 + gtx_gms_ +. +ema_t +( +tx_gm_id_ +++, +d +:: +move +( +gm +), +l +); + +491 + gtx_gms_ +. +ema_back +( +tx_gm_id_ +++, +d +:: +move +( +gm +), +l +); + +496  + gTxSvi +:: +ad_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +, cڡ ut8_ +offt +) { + +497 +LOG_DEBUG +( +F +("Txdequedevi 0x%02X f܁y ID 0x%02X"), +de +, +ty_id +); + +499 +ut8_t + + gmesge_da +[1] = { +EMS_MAX_TELEGRAM_LENGTH +}; + +500 +add +( +Tegm +:: +Oti +:: +TX_READ +, +de +, +ty_id +, +offt +, +mesge_da +, 1); + +504  + gTxSvi +:: +nd_w +(cڡ * +gm_da +) { + +506  +gm +[ +EMS_MAX_TELEGRAM_LENGTH + * 3]; + +507  +ut8_t + + gi + = 0; i < + +( +gm_da +); i++) { + +508 + ggm +[ +i +] = +gm_da +[i]; + +510 + ggm +[ + +( +gm_da +)] = '\0'; + +512 +ut8_t + + gcou + = 0; + +513 * + gp +; + +514  + gvue +[10] = {0}; + +516 +ut8_t + + gda +[ +EMS_MAX_TELEGRAM_LENGTH +]; + +519 i(( + gp + = +ok +( +gm +, " ,"))) { + +520 +y +( +vue +, +p +, 10); + +521 + gda +[0] = ( +ut8_t +) + +( +vue +, 0, 16); + +525  + gp + != 0) { + +526 i(( +p + = +ok +( +nuαr +, " ,"))) { + +527 +y +( +vue +, +p +, 10); + +528 +ut8_t + + gv + = (ut8_t) + +( +vue +, 0, 16); + +529 + gda +[++ +cou +] = +v +; + +533 i( + gcou + == 0) { + +537 +add +( +Tegm +:: +Oti +:: +TX_RAW +, +da +, +cou + + 1, +ue +); + +542  + gTxSvi +:: +y_tx +(cڡ +ut8_t + +ݔi +, cڡ ut8_* +da +, cڡ ut8_ +ngth +) { + +544 i(++ + gy_cou_ + > + gMAXIMUM_TX_RETRIES +) { + +545 +t_y_cou +(); + +546 +emt_gm__cou +(); + +548 +LOG_ERROR +( +F +("Last Tx %s operation failedfter %detries. Ignoringequest."), + +549 ( +ݔi + = +Tegm +:: +Oti +:: +TX_WRITE +? +F +("Write") : F("Read"), + +550 +MAXIMUM_TX_RETRIES +); + +554 #ifde +EMSESP_DEBUG + + +555 +LOG_DEBUG +( +F +("[DEBUG] Last Tx %s operation failed. Retry #%d. sent message: %s,eceived: %s"), + +556 ( +ݔi + = +Tegm +:: +Oti +:: +TX_WRITE +? +F +("Write") : F("Read"), + +557 +y_cou_ +, + +558 +gm_ϡ_ +-> +to_rg +(). +c_r +(), + +559 +Hrs +:: +da_to_hex +( +da +, +ngth +). +c_r +()); + +563 i( + gtx_gms_ +. +size +(> +MAX_TX_TELEGRAMS +) { + +564 +tx_gms_ +. +p_back +(); + +567 + gtx_gms_ +. +ema_t +( +tx_gm_id_ +++, +d +:: +move +( +gm_ϡ_ +), +ue +); + +575 +bo + + gTxSvi +:: +is_ϡ_tx +(cڡ +ut8_t + +c +, cڡ ut8_ +de +) const { + +576  ((( + ggm_ϡ_ +-> + gde + & 0x7F=( +c + & 0x7F)&& (( +de + & 0x7F= +ems_bus_id +())); + +581 +ut16_t + + gTxSvi +:: +po_nd_quy +() { + +582 +ut16_t + +po_tyid + = +this +-> +g_po_nd_quy +(); + +584 i( + gpo_tyid +) { + +585 +ut8_t + + gde + = ( +this +-> +gm_ϡ_ +-> +de + & 0x7F); + +587 +ut8_t + + gofft + = ( +this +-> +gm_ϡ_ +-> +ty_id + = +po_tyid +? (his->gm_ϡ_-> +offt + / 26) * 26) : 0; + +588 +ut8_t + + gmesge_da +[1] = { +EMS_MAX_TELEGRAM_LENGTH +}; + +589 + gthis +-> +add +( +Tegm +:: +Oti +:: +TX_READ +, +de +, +po_tyid +, +offt +, +mesge_da +, 1, +ue +); + +591 +LOG_DEBUG +( +F +("Sdgo vidad,y ID 0x%02Xde 0x%02X"), +po_tyid +, +de +); + +592 +t_po_nd_quy +(0); + +595  + gpo_tyid +; + + @src/telegram.h + +19 #ide +EMSESP_TELEGRAM_H + + +20  + #EMSESP_TELEGRAM_H + + + ) + +22  + ~ + +23  + ~
  • + +26 #i +defed +( +ESP8266 +) + +27  + ~"ut/emsut_e8266.h +" + +28 #i +defed +( +ESP32 +) + +29  + ~"ut/emsut_e32.h +" + +30 #i +defed +( +EMSESP_STANDALONE +) + +31  + ~ + +34  + ~ + +36  + ~"hrs.h +" + +39  +cڡex + +ut8_t + + gEMS_VALUE_BOOL + = 0xFF; + +40  +cڡex + +ut8_t + + gEMS_VALUE_BOOL_OFF + = 0x00; + +41  +cڡex + +ut8_t + + gEMS_VALUE_BOOL_ON + = 0x01; + +43  +cڡex + +ut8_t + + gEMS_VALUE_BOOL_NOTSET + = 0xFE; + +44  +cڡex + +ut8_t + + gEMS_VALUE_UINT_NOTSET + = 0xFF; + +45  +cڡex + +t8_t + + gEMS_VALUE_INT_NOTSET + = 0x7F; + +46  +cڡex + +ut16_t + + gEMS_VALUE_USHORT_NOTSET + = 0x7D00; + +47  +cڡex + +t16_t + + gEMS_VALUE_SHORT_NOTSET + = 0x7D00; + +48  +cڡex + +ut32_t + + gEMS_VALUE_ULONG_NOTSET + = 0xFFFFFFFF; + +50  +cڡex + +ut8_t + + gEMS_MAX_TELEGRAM_LENGTH + = 32; + +51  +cڡex + +ut8_t + + gEMS_MAX_TELEGRAM_MESSAGE_LENGTH + = 27; + +53 +mea + + gem + { + +55 as + cTegm + { + +56 + gpublic +: + +57 +Tegm +(cڡ +ut8_t + +ݔi +, + +58 cڡ +ut8_t + +c +, + +59 cڡ +ut8_t + +de +, + +60 cڡ +ut16_t + +ty_id +, + +61 cڡ +ut8_t + +offt +, + +62 cڡ +ut8_t + * +mesge_da +, + +63 cڡ +ut8_t + +mesge_ngth +); + +64 ~ +Tegm +() = ; + +66 cڡ +ut8_t + + gݔi +; + +67 cڡ +ut8_t + + gc +; + +68 cڡ +ut8_t + + gde +; + +69 cڡ +ut16_t + + gty_id +; + +70 cڡ +ut8_t + + gofft +; + +71 cڡ +ut8_t + + gmesge_ngth +; + +72 +ut8_t + + gmesge_da +[ +EMS_MAX_TELEGRAM_MESSAGE_LENGTH +]; + +74 + gOti + : +ut8_t + { + +75 +NONE + = 0, + +76 + gRX +, + +77 + gTX_RAW +, + +78 + gTX_READ +, + +79 + gTX_WRITE +, + +82 + gd +:: +rg + +to_rg_mesge +() const; + +83 + gd +:: +rg + +to_rg +() const; + +86 +bo + +ad_bvue +( +ut8_t + & +vue +, cڡ ut8_ +dex +, cڡ ut8_ +b +) const { + +87 +ut8_t + + gabs_dex + = ( +dex + - +this +-> +offt +); + +88 i( + gabs_dex + > +this +-> +mesge_ngth +) { + +89  +l +; + +91 +ut8_t + + gv + = +vue +; + +92 + gvue + = ( +ut8_t +)((( +this +-> +mesge_da +[ +abs_dex +]>> ( +b +)) & 0x01); + +93 i( + gv + ! +vue +) { + +94  +ue +; + +96  + gl +; + +100 + gme + < +tyme + + gVue +> + +106 +bo + +ad_vue +( +Vue + & +vue +, cڡ +ut8_t + +dex +, ut8_ +s + = 0) const { + +107 +ut8_t + +num_bys + = (! +s +? ( +Vue +) : s; + +109 i(( + gdex + < + gthis +-> + gofft +|| ((dex -his->off+ + gnum_bys + - 1> +this +-> +mesge_ngth +)) { + +110  +l +; + +112 aut + gv + = +vue +; + +113 + gvue + = 0; + +114  +ut8_t + + gi + = 0; i < + gnum_bys +; i++) { + +115 + gvue + = ( +vue + << 8+ +this +-> +mesge_da +[ +dex + -his-> +offt + + +i +]; + +117 i( + gv + ! +vue +) { + +118  +ue +; + +120  + gl +; + +123 + give +: + +124 +t8_t + +_gDaPosi +(cڡ +ut8_t + +dex +, cڡ ut8_ +size +) const; + +127 as + cEMSbus + { + +128 + gpublic +: + +129  +uuid +:: +log +:: +Logg + +logg_ +; + +131  +cڡex + +ut8_t + + gEMS_MASK_UNSET + = 0xFF; + +132  +cڡex + +ut8_t + + gEMS_MASK_HT3 + = 0x80; + +133  +cڡex + +ut8_t + + gEMS_MASK_BUDERUS + = 0xFF; + +134  +cڡex + +ut8_t + + gEMS_TX_ERROR_LIMIT + = 10; + +136  +bo + +is_ht3 +() { + +137  ( + gems_mask_ + = +EMS_MASK_HT3 +); + +140  +ut8_t + +ems_mask +() { + +141  + gems_mask_ +; + +144  +ems_mask +( +ut8_t +ms_mask) { + +145 + gems_mask_ + = +ems_mask + & 0x80; + +148  +ut8_t + +tx_mode +() { + +149  + gtx_mode_ +; + +152  +tx_mode +( +ut8_t +x_mode) { + +153 + gtx_mode_ + = +tx_mode +; + +156  +ut8_t + +ems_bus_id +() { + +157  + gems_bus_id_ +; + +160  +ems_bus_id +( +ut8_t +ms_bus_id) { + +161 + gems_bus_id_ + = +ems_bus_id +; + +164  +bo + +bus_ced +() { + +165 #ide +EMSESP_STANDALONE + + +166 i(( + guuid +:: +g_uime +(- +ϡ_bus_aivy_ +> +EMS_BUS_TIMEOUT +) { + +167 +bus_ced_ + = +l +; + +169  + gbus_ced_ +; + +171  + gue +; + +176  +ϡ_bus_aivy +( +ut32_t + +timeamp +) { + +177 + gϡ_bus_aivy_ + = +timeamp +; + +178 + gbus_ced_ + = +ue +; + +181  +ut8_t + +tx_e +() { + +182  + gtx_e_ +; + +184  +tx_e +( +ut8_t +x_state) { + +185 + gtx_e_ + = +tx_e +; + +188  +ut8_t + +lcuϋ_c +(cڡ ut8_* +da +, cڡ ut8_ +ngth +); + +190 + give +: + +191  +cڡex + +ut32_t + +EMS_BUS_TIMEOUT + = 30000; + +192  +ut32_t + + gϡ_bus_aivy_ +; + +193  +bo + + gbus_ced_ +; + +194  +ut8_t + + gems_mask_ +; + +195  +ut8_t + + gems_bus_id_ +; + +196  +ut8_t + + gtx_mode_ +; + +197  +ut8_t + + gtx_e_ +; + +200 as + cRxSvi + : +public + +EMSbus + { + +201  +cڡex + +size_t + +MAX_RX_TELEGRAMS + = 10; + +203 + gpublic +: + +204 +RxSvi +() = ; + +205 ~ +RxSvi +() = ; + +207  +lo +(); + +208  +add +( +ut8_t + * +da +, ut8_ +ngth +); + +210 +ut32_t + +gm_cou +() const { + +211  + ggm_cou_ +; + +214  +emt_gm_cou +() { + +215 + ggm_cou_ +++; + +218 +ut32_t + +gm_r_cou +() const { + +219  + ggm_r_cou_ +; + +222  +emt_gm_r_cou +() { + +223 + ggm_r_cou_ +++; + +226 as + cQueuedRxTegm + { + +227 + gpublic +: + +228 cڡ +ut16_t + +id_ +; + +229 cڡ + gd +:: +shed_r + +gm_ +; + +231 ~ +QueuedRxTegm +() = ; + +232 +QueuedRxTegm +( +ut16_t + +id +, +d +:: +shed_r +< +Tegm +> && +gm +) + +233 : +id_ +( +id +) + +234 , +gm_ +( +d +:: +move +( +gm +)) { + +238 cڡ + gd +:: +li +< +QueuedRxTegm +> +queue +() const { + +239  +rx_gms_ +; + +242 + give +: + +243 +ut8_t + +rx_gm_id_ + = 0; + +244 +ut32_t + + ggm_cou_ + = 0; + +245 +ut32_t + + ggm_r_cou_ + = 0; + +246 + gd +:: +shed_r + +rx_gm +; + +247 + gd +:: +li +< +QueuedRxTegm +> +rx_gms_ +; + +250 as + cTxSvi + : +public + +EMSbus + { + +251 +public +: + +252  +cڡex + +size_t + +MAX_TX_TELEGRAMS + = 20; + +253  +cڡex + +ut8_t + + gTX_WRITE_FAIL + = 4; + +254  +cڡex + +ut8_t + + gTX_WRITE_SUCCESS + = 1; + +256 +TxSvi +() = ; + +257 ~ +TxSvi +() = ; + +259  +t +(); + +260  +nd +(); + +261  +add +(cڡ +ut8_t + +ݔi +, + +262 cڡ +ut8_t + +de +, + +263 cڡ +ut16_t + +ty_id +, + +264 cڡ +ut8_t + +offt +, + +265 +ut8_t + * +mesge_da +, + +266 cڡ +ut8_t + +mesge_ngth +, + +267 cڡ +bo + +t + = +l +); + +268  +add +(cڡ +ut8_t + +ݔi +, cڡ ut8_* +da +, cڡ ut8_ +ngth +, cڡ +bo + +t + = +l +); + +269  +ad_que +(cڡ +ut16_t + +ty_id +, cڡ +ut8_t + +de +, cڡ ut8_ +offt + = 0); + +270  +nd_w +(cڡ * +gm_da +); + +271  +nd_pl +(); + +272  +ush_tx_queue +(); + +273  +y_tx +(cڡ +ut8_t + +ݔi +, cڡ ut8_* +da +, cڡ ut8_ +ngth +); + +274 +bo + +is_ϡ_tx +(cڡ +ut8_t + +c +, cڡ ut8_ +de +) const; + +275 +ut16_t + +po_nd_quy +(); + +277 +ut8_t + +y_cou +() const { + +278  + gy_cou_ +; + +281  +t_y_cou +() { + +282 + gy_cou_ + = 0; + +285  +t_po_nd_quy +( +ut16_t + +ty_id +) { + +286 + ggm_ϡ_po_nd_quy_ + = +ty_id +; + +289 +ut16_t + +g_po_nd_quy +() { + +290  + ggm_ϡ_po_nd_quy_ +; + +293 +ut32_t + +gm_ad_cou +() const { + +294  + ggm_ad_cou_ +; + +297  +gm_ad_cou +( +ut8_t +elegram_read_count) { + +298 + ggm_ad_cou_ + = +gm_ad_cou +; + +301  +emt_gm_ad_cou +() { + +302 + ggm_ad_cou_ +++; + +305 +ut32_t + +gm__cou +() const { + +306  + ggm__cou_ +; + +309  +gm__cou +( +ut8_t +elegram_fail_count) { + +310 + ggm__cou_ + = +gm__cou +; + +313  +emt_gm__cou +() { + +314 + ggm__cou_ +++; + +317 +ut32_t + +gm_wre_cou +() const { + +318  + ggm_wre_cou_ +; + +321  +gm_wre_cou +( +ut8_t +elegram_write_count) { + +322 + ggm_wre_cou_ + = +gm_wre_cou +; + +325  +emt_gm_wre_cou +() { + +326 + ggm_wre_cou_ +++; + +329 as + cQueuedTxTegm + { + +330 + gpublic +: + +331 cڡ +ut16_t + +id_ +; + +332 cڡ + gd +:: +shed_r + +gm_ +; + +333 cڡ +bo + + gy_ +; + +335 ~ +QueuedTxTegm +() = ; + +336 +QueuedTxTegm +( +ut16_t + +id +, +d +:: +shed_r +< +Tegm +> && +gm +, +bo + +y +) + +337 : +id_ +( +id +) + +338 , +gm_ +( +d +:: +move +( +gm +)) + +339 , +y_ +( +y +) { + +343 cڡ + gd +:: +li +< +QueuedTxTegm +> +queue +() const { + +344  +tx_gms_ +; + +347 #i +defed +( +EMSESP_DEBUG +) + +348  +cڡex + +ut8_t + + gMAXIMUM_TX_RETRIES + = 0; + +350  +cڡex + +ut8_t + + gMAXIMUM_TX_RETRIES + = 3; + +353 + give +: + +354 +d +:: +li +< +QueuedTxTegm +> +tx_gms_ +; + +356 +ut32_t + + ggm_ad_cou_ + = 0; + +357 +ut32_t + + ggm_wre_cou_ + = 0; + +358 +ut32_t + + ggm__cou_ + = 0; + +360 + gd +:: +shed_r +< +Tegm +> +gm_ϡ_ +; + +361 +ut16_t + + ggm_ϡ_po_nd_quy_ +; + +362 +ut8_t + + gy_cou_ + = 0; + +364 +ut8_t + + gtx_gm_id_ + = 0; + +366  +nd_gm +(cڡ +QueuedTxTegm + & +tx_gm +); + +367  +nd_gm +(cڡ +ut8_t + * +da +, cڡ ut8_ +ngth +); + + @src/test/test.cpp + +21 #i +defed +( +EMSESP_DEBUG +) + +23  + ~".h +" + +25 +mea + + gem + { + +29  + gTe +:: +run_ +( +uuid +:: +cse +:: +Shl + & +shl +, cڡ +d +:: +rg + & +commd +) { + +30 i( +commd + == "default") { + +31 +run_ +( +shl +, "mqtt"); + +34 i( + gcommd +. +emy +()) { + +35 +run_ +( +shl +, "default"); + +38 i( + gcommd + == "render") { + +39 +ut8_t + +1 + = 12; + +40 +t8_t + + g2 + = -12; + +41 +ut16_t + + g3 + = 456; + +42 +t16_t + + g4 + = -456; + +43 +ut8_t + + g5 + = 1; + +44 +ut32_t + + g6 + = 305419896; + +45  + g7 + = 89.43; + +47 +ut8_t + + g1u + = +EMS_VALUE_UINT_NOTSET +; + +48 +t8_t + + g2u + = +EMS_VALUE_INT_NOTSET +; + +50 +ut8_t + + g5u + = +EMS_VALUE_BOOL_NOTSET +; + +51 +ut32_t + + g6u + = +EMS_VALUE_ULONG_NOTSET +; + +53 +ut16_t + + g3u + = +EMS_VALUE_USHORT_NOTSET +; + +54 +t16_t + + g4u + = +EMS_VALUE_SHORT_NOTSET +; + +56 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu1"), +1 +, +F_ +( +deges +)); + +57 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu2"), +2 +, +F_ +( +deges +)); + +58 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu3"), +3 +, +F_ +( +deges +), 10); + +59 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu4"), +4 +, +F_ +( +deges +), 10); + +60 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu5"), +5 +, +nuαr +, +EMS_VALUE_BOOL +); + +61 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu6"), +6 +, +F_ +( +deges +)); + +62 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu7"), +7 +, +F_ +( +deges +), 2); + +63 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Warm Water comfort setting"), F("Intelligent")); + +64  + gs +[100]; + +65 +ry +( +s +, "Not very intelligent"); + +66 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Wm W comf܈g2"), +s +); + +68 + gshl +. +n +(); + +70 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu1u"), +1u +, +F_ +( +deges +)); + +71 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu2u"), +2u +, +F_ +( +deges +)); + +72 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu3u"), +3u +, +F_ +( +deges +), 10); + +73 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu4u"), +4u +, +F_ +( +deges +), 10); + +74 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu5u"), +5u +, +F_ +( +deges +), +EMS_VALUE_BOOL +); + +75 + gEMSdevi +:: +t_vue +( +shl +, 2, +F +("Seed flowemtu6u"), +6u +, +F_ +( +deges +), 100); + +77 + gshl +. +n +(); + +80 +ut8_t + + gmesge_da +[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; + +81 aut + ggm + = +d +:: +make_shed +< +Tegm +>(Tegm:: +Oti +:: +RX +, 0x10, 0x11, 0x1234, 0, + gmesge_da +, (message_data)); + +83 +ut8_t + + gut8b + = +EMS_VALUE_UINT_NOTSET +; + +84 + ggm +-> +ad_vue +( +ut8b +, 0); + +85 + gshl +. +tn +("ut8:xg %02X, g:%02X", 1, +ut8b +); + +87 +t8_t + + gt8b + = +EMS_VALUE_INT_NOTSET +; + +88 + ggm +-> +ad_vue +( +t8b +, 0); + +89 + gshl +. +tn +("t8:xg %02X, g:%02X", 1, +t8b +); + +91 +ut16_t + + gut16b + = +EMS_VALUE_USHORT_NOTSET +; + +92 + ggm +-> +ad_vue +( +ut16b +, 1); + +93 + gshl +. +tn +("ut16:xg %02X, g:%02X", 0x0203, +ut16b +); + +95 +t16_t + + gt16b + = +EMS_VALUE_SHORT_NOTSET +; + +96 + ggm +-> +ad_vue +( +t16b +, 1); + +97 + gshl +. +tn +("t16:xg %02X, g:%02X", 0x0203, +t16b +); + +99 +t16_t + + gt16b8 + = +EMS_VALUE_SHORT_NOTSET +; + +100 + ggm +-> +ad_vue +( +t16b8 +, 1, 1); + +101 + gshl +. +tn +("t16 1 by:xg %02X, g:%02X", 0x02, +t16b8 +); + +103 +ut32_t + + gut32b + = +EMS_VALUE_ULONG_NOTSET +; + +104 + ggm +-> +ad_vue +( +ut32b +, 1, 3); + +105 + gshl +. +tn +("ut32 3 bys:xg %02X, g:%02X", 0x020304, +ut32b +); + +107 + gut32b + = +EMS_VALUE_ULONG_NOTSET +; + +108 + ggm +-> +ad_vue +( +ut32b +, 1); + +109 + gshl +. +tn +("ut32 4 bys:xg %02X, g:%02X", 0x02030405, +ut32b +); + +112 +ut16_t + + gut16 + = +EMS_VALUE_USHORT_NOTSET +; + +113 + ggm +-> +ad_vue +( +ut16 +, 9); + +114 + gshl +. +tn +("ut16 out-of-bounds: was:%02X,ew:%02X", +EMS_VALUE_USHORT_NOTSET +, +ut16 +); + +115 +ut8_t + + gut8oob + = +EMS_VALUE_UINT_NOTSET +; + +116 + ggm +-> +ad_vue +( +ut8oob +, 9); + +117 + gshl +. +tn +("ut8 out-of-bounds: was:%02X,ew:%02X", +EMS_VALUE_UINT_NOTSET +, +ut8oob +); + +120 +ut8_t + + gut8bb + = +EMS_VALUE_UINT_NOTSET +; + +121 + ggm +-> +ad_bvue +( +ut8bb +, 1, 1); + +122 + gshl +. +tn +("ut8 bd:xg 1, g:%d", +ut8bb +); + +123 + gut8bb + = +EMS_VALUE_UINT_NOTSET +; + +124 + ggm +-> +ad_bvue +( +ut8bb +, 0, 0); + +125 + gshl +. +tn +("ut8 bd:xg 1, g:%d", +ut8bb +); + +128 i( + gcommd + == "devices") { + +129 +EMSESP +:: +rxrvi_ +. +ems_mask +( +EMSbus +:: +EMS_MASK_BUDERUS +); + +134 +rx_gm +({0x08, 0x00, 0x07, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + +137 i( + gcommd + == "boiler") { + +139 +d +:: +rg + +vsi +("1.2.3"); + +140 + gEMSESP +:: +add_devi +(0x08, 123, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +143 +ut_gm +({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); + +147 i(( + gcommd + ="unknown"|| ( +commd + == "u")) { + +149 +d +:: +rg + +vsi +("1.2.3"); + +152 + gEMSESP +:: +add_devi +(0x08, 84, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +155 + gEMSESP +:: +add_devi +(0x09, 84, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +159 +rx_gm +({0x09, 0x0B, 0x02, 0x00, 0x59, 0x09, 0x0a}); + +161 + gEMSESP +:: +show_devi_vues +( +shl +); + +164 i( + gcommd + == "unknown2") { + +166 +rx_gm +({0x09, 0x0B, 0x02, 0x00, 0x5A, 0x01, 0x02}); + +169 i( + gcommd + == "gateway") { + +171 +rx_gm +({0x48, 0x0B, 0x02, 0x00, 0xBD, 0x04, 0x06, 00, 00, 00, 00, 00, 00, 00}); + +175 +rx_gm +({0x08, 0x00, 0x07, 0x00, 0x09, 01, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00}); + +178 + gd +:: +rg + +vsi +("01.03"); + +179 + gEMSESP +:: +add_devi +(0x10, 158, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +183 +rx_gm +({0x10, 0x48, 0xFF, 00, 01, 0x6B, 00, 0x6B, 0x08, 0x4F, 00, 00, 00, 02, 00, 00, 00, 02, 00, 03, 00, 03, 00, 03}); + +186 i( + gcommd + == "general") { + +187 +shl +. +tn +( +F +("Testingdding boiler &hermostat...")); + +189 + gd +:: +rg + +vsi +("1.2.3"); + +190 + gEMSESP +:: +add_devi +(0x08, 123, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +191 + gEMSESP +:: +add_devi +(0x18, 157, +vsi +, +EMSdevi +:: +Bnd +:: +BOSCH +); + +195 +ut_gm +({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, + +199 +ut_gm +({0x08, 0x98, 0x33, 0x00, 0x23, 0x24}); + +202 +ut_gm +({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + +205 +ut_gm +({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, + +208 + gshl +. +voke_commd +("show"); + +213 i( + gcommd + == "thermostat") { + +214 +shl +. +tn +( +F +("Testingddinghermostatohe EMS bus...")); + +223 + gd +:: +rg + +vsi +("1.2.3"); + +229 + gEMSESP +:: +add_devi +(0x10, 192, +vsi +, +EMSdevi +:: +Bnd +:: +JUNKERS +); + +232 +ut_gm +({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, + +236 +ut_gm +({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x00, 0xCF, 0x22, 0x2F, 0x10, 0x00, 0x2E, 0x24, + +240 +ut_gm +({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + +243 i( + gcommd + == "tc100") { + +244 +shl +. +tn +( +F +("Testingdding TC100hermostatohe EMS bus...")); + +246 + gd +:: +rg + +vsi +("02.21"); + +252 + gEMSESP +:: +add_devi +(0x18, 202, +vsi +, +EMSdevi +:: +Bnd +:: +BOSCH +); + +255 +ut_gm +({0x98, 0x0B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + +259 i( + gcommd + == "solar") { + +260 +shl +. +tn +( +F +("Testing Solar")); + +262 + gEMSESP +:: +rxrvi_ +. +ems_mask +( +EMSbus +:: +EMS_MASK_BUDERUS +); + +264 + gd +:: +rg + +vsi +("1.2.3"); + +265 + gEMSESP +:: +add_devi +(0x30, 163, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +269 +rx_gm +({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, + +271 + gEMSESP +:: +show_devi_vues +( +shl +); + +273 +rx_gm +({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, + +275 + gEMSESP +:: +show_devi_vues +( +shl +); + +277 +rx_gm +({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); + +278 + gEMSESP +:: +show_devi_vues +( +shl +); + +280 + gEMSESP +:: +nd_w_gm +("B0 00 FF 18 02 62 80 00 B8"); + +282 +ut_gm +("30 00 FF 0A 02 6A 04"); + +283 +ut_gm +("30 00 FF 00 02 64 00 00 00 04 00 00 FF 00 00 1E 0B 09 64 00 00 00 00"); + +285 + gEMSESP +:: +show_devi_vues +( +shl +); + +287 +ut_gm +("30 00 FF 0A 02 6A 03"); + +289 + gEMSESP +:: +show_devi_vues +( +shl +); + +292 i( + gcommd + == "solar200") { + +293 +shl +. +tn +( +F +("Testing Solar SM200")); + +295 + gEMSESP +:: +rxrvi_ +. +ems_mask +( +EMSbus +:: +EMS_MASK_BUDERUS +); + +297 + gd +:: +rg + +vsi +("1.2.3"); + +298 + gEMSESP +:: +add_devi +(0x30, 164, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +302 +rx_gm +({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, + +304 + gEMSESP +:: +show_devi_vues +( +shl +); + +306 +rx_gm +({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, + +308 + gEMSESP +:: +show_devi_vues +( +shl +); + +310 +rx_gm +({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); + +311 + gEMSESP +:: +show_devi_vues +( +shl +); + +313 + gEMSESP +:: +nd_w_gm +("B0 00 FF 18 02 62 80 00 B8"); + +315 +ut_gm +("30 00 FF 0A 02 6A 04"); + +316 +ut_gm +("30 00 FF 00 02 64 00 00 00 04 00 00 FF 00 00 1E 0B 09 64 00 00 00 00"); + +318 + gEMSESP +:: +show_devi_vues +( +shl +); + +320 +ut_gm +("30 00 FF 0A 02 6A 03"); + +322 + gEMSESP +:: +show_devi_vues +( +shl +); + +325 i( + gcommd + == "km") { + +326 +shl +. +tn +( +F +("Testing KM200 Gateway")); + +328 + gem +:: +EMSESP +:: +wch +(EMSESP:: +Wch +:: +WATCH_RAW +); + +330 + gEMSESP +:: +rxrvi_ +. +ems_mask +( +EMSbus +:: +EMS_MASK_BUDERUS +); + +332 + gd +:: +rg + +vsi +("1.2.3"); + +333 + gEMSESP +:: +add_devi +(0x10, 158, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +334 + gEMSESP +:: +add_devi +(0x48, 189, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +378 +ut_gm_whCRC +("C8 90 F7 02 01 FF 01 A6 BA"); + +380 +ut_gm_whCRC +("90 48 FF 04 01 A6 5C"); + +381 +ut_gm_whCRC +("90 00 FF 00 01 A5 80 00 01 27 16 00 27 2A 05 A0 02 03 03 05 A0 05 A0 00 00 11 01 02 FF FF 00 9A"); + +382 +ut_gm_whCRC +("90 00 FF 19 01 A5 01 04 00 00 00 00 FF 64 2A 00 3C 01 FF 92"); + +383 +ut_gm_whCRC +("90 0B FF 00 01 A5 80 00 01 26 15 00 26 2A 05 A0 03 03 03 05 A0 05 A0 00 00 11 01 03 FF FF 00 FE"); + +384 +ut_gm_whCRC +("90 00 FF 19 01 A5 01 04 00 00 00 00 FF 64 2A 00 3C 01 FF 92"); + +386 + gEMSESP +:: +show_ems +( +shl +); + +387 + gEMSESP +:: +show_devi_vues +( +shl +); + +390 i( + gcommd + == "cr100") { + +391 +shl +. +tn +( +F +("Testing CR100")); + +393 + gem +:: +EMSESP +:: +wch +(EMSESP:: +Wch +:: +WATCH_RAW +); + +395 + gEMSESP +:: +rxrvi_ +. +ems_mask +( +EMSbus +:: +EMS_MASK_HT3 +); + +397 + gd +:: +rg + +vsi +("1.2.3"); + +398 + gEMSESP +:: +add_devi +(0x18, 157, +vsi +, +EMSdevi +:: +Bnd +:: +BOSCH +); + +402 +ut_gm +({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, + +405 +ut_gm +("98 00 FF 00 01 A5 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03"); + +406 +ut_gm_whCRC +("98 00 FF 00 01 A6 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03 6B"); + +408 + gEMSESP +:: +txrvi_ +. +ush_tx_queue +(); + +409 + gshl +. +lo_l +(); + +410 + gEMSESP +:: +show_devi_vues +( +shl +); + +412 + gshl +. +voke_commd +("thermostat"); + +413 + gshl +. +lo_l +(); + +416 + gshl +. +voke_commd +("set modeuto"); + +418 + gshl +. +lo_l +(); + +419 + gEMSESP +:: +show_ems +( +shl +); + +420 + gshl +. +lo_l +(); + +422 + gEMSESP +:: +txrvi_ +. +nd +(); + +425 i( + gcommd + == "rx2") { + +426 +shl +. +tn +( +F +("Testing Rx2...")); + +427  +ut8_t + + gi + = 0; i < 30; i++) { + +428 +ut_gm +({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + +432 i( + gcommd + == "rx") { + +433 +shl +. +tn +( +F +("Testing Rx...")); + +437 +ut_gm +({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, + +441 +ut_gm +({0x08, 0x97, 0x33, 0x00, 0x23, 0x24}); + +444 +ut_gm +({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + +447 +ut_gm +({0x17, 0x0B, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47}); + +450 +ut8_t + + gt5 +[] = {0x17, 0x0B, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47, 0x99}; + +451 + gEMSESP +:: +rxrvi_ +. +add +( +t5 +, (t5)); + +454 +ut_gm +({0x0B, 0x88, 0x07, 0x00, 0x20}); + +457 +ut_gm +({0x08, 0x0B, 0x02, 0x00, 0x7B, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04}); + +460 +ut_gm +({0x11, 0x0B, 0x02, 0x00, 0x4D, 0x03, 0x03}); + +464 +ut_gm +({0x10, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xD7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x84, + +468 +ut_gm +({0x10, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xC7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x84, + +472 +ut_gm +({0x17, 0x08, 0x35, 0x00, 0x11, 0x00}); + +475 +ut_gm +({0x17, 0x08, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00}); + +478 +ut_gm +({0x17, 0x0B, 0xA8, 0x00, 0x01, 0x00, 0xFF, 0xF6, 0x01, 0x06, 0x00, 0x01, 0x0D, 0x01, 0x00, 0xFF, + +482 +ut_gm +( + +486 +ut_gm +({0x88, 00, 0x2A, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0xD2, 00, 00, 0x80, 00, 00, 01, 0x9D, 0x80, 0x00, 0x02, 0x79, 00}); + +489 i( + gcommd + == "send") { + +490 +shl +. +tn +( +F +("Sendingo Tx...")); + +491 + gEMSESP +:: +show_ems +( +shl +); + +492 + gEMSESP +:: +txrvi_ +. +nd +(); + +495 i( + gcommd + == "tx") { + +496 +shl +. +tn +( +F +("Testing Tx...")); + +498 + gEMSESP +:: +txrvi_ +. +ush_tx_queue +(); + +501 +ut8_t + + gt11 +[] = {0x44, 0x45, 0x46, 0x47}; + +502 + gEMSESP +:: +txrvi_ +. +add +( +Tegm +:: +Oti +:: +TX_RAW +, 0x17, 0x91, 0x05, +t11 +, (t11)); + +505 +ut8_t + + gt12 +[] = {0x10, 0x08, 0x63, 0x04, 0x64}; + +506 + gEMSESP +:: +txrvi_ +. +add +( +Tegm +:: +Oti +:: +TX_RAW +, +t12 +, (t12)); + +509 + gEMSESP +:: +txrvi_ +. +nd_w +("10 08 63 03 64 65 66"); + +512 + gEMSESP +:: +nd_ad_que +(0x18, 0x08); + +515 +ut8_t + + gt18 +[] = {0x52, 0x79}; + +516 + gEMSESP +:: +nd_wre_que +(0x91, 0x17, 0x00, +t18 +, (t18), 0x00); + +519 cڡ +ut8_t + + gt13 +[] = {0x90, 0x0B, 0xFF, 00, 01, 0xBA, 00, 0x2E, 0x2A, 0x26, 0x1E, 0x03, + +521 + gEMSESP +:: +txrvi_ +. +add +( +Tegm +:: +Oti +:: +TX_RAW +, +t13 +, (t13)); + +524 + gEMSESP +:: +nd_ad_que +(0x16F, 0x10); + +526 + gEMSESP +:: +show_ems +( +shl +); + +529  +ut8_t + + gi + = 0; i < 10; i++) { + +530 + gEMSESP +:: +txrvi_ +. +nd +(); + +533 + gshl +. +lo_l +(); + +535 + gEMSESP +:: +txrvi_ +. +ush_tx_queue +(); + +538 i( + gcommd + == "poll") { + +539 +shl +. +tn +( +F +("Testing Poll...")); + +542 + gEMSESP +:: +txrvi_ +. +ush_tx_queue +(); + +547 + gEMSESP +:: +nd_ad_que +(0x91, 0x17); + +551 +ut8_t + + gpl +[1] = {0x8B}; + +552 + gEMSESP +:: +comg_gm +( +pl +, 1); + +555 +ut_gm +({0x17, 0x08, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A}); + +558 + gEMSESP +:: +comg_gm +( +pl +, 1); + +560 + gEMSESP +:: +show_ems +( +shl +); + +561 +ut8_t + + gt2 +[] = {0x21, 0x22}; + +562 + gEMSESP +:: +nd_wre_que +(0x91, 0x17, 0x00, +t2 +, (t2), 0); + +563 + gEMSESP +:: +show_ems +( +shl +); + +565 + gEMSESP +:: +txrvi_ +. +ush_tx_queue +(); + +568 i( + gcommd + == "pin") { + +569 +shl +. +tn +( +F +("Testingin...")); + +571 + gEMSESP +:: +add_cڋxt_mus +(); + +572 + gshl +. +voke_commd +("su"); + +573 + gshl +. +voke_commd +("system"); + +574 + gshl +. +voke_commd +("help"); + +575 + gshl +. +voke_commd +("pin"); + +576 + gshl +. +voke_commd +("pin 1rue"); + +579 i( + gcommd + == "mqtt") { + +580 +shl +. +tn +( +F +("Testing MQTT...")); + +584 + gd +:: +rg + +vsi +("1.2.3"); + +585 + gEMSESP +:: +add_devi +(0x08, 123, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +588 + gEMSESP +:: +add_devi +(0x18, 157, +vsi +, +EMSdevi +:: +Bnd +:: +BOSCH +); + +591 +ut_gm +({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, + +593 +ut_gm +("98 00 FF 00 01 A5 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03"); + +594 +ut_gm_whCRC +("98 00 FF 00 01 A5 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03 13"); + +596 + gshl +. +lo_l +(); + +598  + gbo_tic +[ +Mq +:: +MQTT_TOPIC_MAX_SIZE +]; + +599  + gthmo_tic +[ +Mq +:: +MQTT_TOPIC_MAX_SIZE +]; + +600  + gsyem_tic +[ +Mq +:: +MQTT_TOPIC_MAX_SIZE +]; + +603 + gEMSESP +:: +txrvi_ +. +ush_tx_queue +(); + +604 + gEMSESP +:: +EMSESP +:: +mq_ +. +publish +("boiler_cmd", "test me"); + +605 + gMq +:: +show_mq +( +shl +); + +607 +ry +( +bo_tic +, "ems-esp/boiler_cmd"); + +608 +ry +( +thmo_tic +, "ems-esp/thermostat_cmd"); + +609 +ry +( +syem_tic +, "ems-esp/saystem_cmd"); + +611 + gEMSESP +:: +mq_ +. +comg +( +bo_tic +, "12345"); + +612 + gEMSESP +:: +mq_ +. +comg +("bad_topic", "12345"); + +613 + gEMSESP +:: +mq_ +. +comg +( +bo_tic +, "{\"cmd\":\"garbage\",\"data\":22.52}"); + +614 + gEMSESP +:: +mq_ +. +comg +( +bo_tic +, "{\"cmd\":\"comfort\",\"data\":\"eco\"}"); + +615 + gEMSESP +:: +mq_ +. +comg +( +bo_tic +, "{\"cmd\":\"wwactivated\",\"data\":\"1\"}"); + +616 + gEMSESP +:: +mq_ +. +comg +( +bo_tic +, "{\"cmd\":\"wwactivated\",\"data\":1}"); + +617 + gEMSESP +:: +mq_ +. +comg +( +bo_tic +, "{\"cmd\":\"flowtemp\",\"data\":55}"); + +619 + gEMSESP +:: +mq_ +. +comg +( +syem_tic +, "{\"cmd\":\"send\",\"data\":\"01 02 03 04 05\"}"); + +620 + gEMSESP +:: +mq_ +. +comg +( +syem_tic +, "{\"cmd\":\"pin\",\"id\":12,\"data\":\"1\"}"); + +622 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"wwmode\",\"data\":\"auto\"}"); + +623 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"control\",\"data\":\"1\"}"); + +624 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"control\",\"data\":1}"); + +625 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"mode\",\"data\":\"auto\",\"id\":2}"); + +626 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"mode\",\"data\":\"auto\",\"hc\":2}"); + +627 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"temp\",\"data\":19.5,\"hc\":1}"); + +628 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"mode\",\"data\":\"auto\",\"hc\":\"2\"}"); + +629 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"temp\",\"data\":22.56}"); + +630 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"temp\",\"data\":22}"); + +631 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"temp\",\"data\":\"22.56\"}"); + +632 + gEMSESP +:: +mq_ +. +comg +( +thmo_tic +, "{\"cmd\":\"temp\",\"id\":2,\"data\":22}"); + +637 + gEMSESP +:: +add_cڋxt_mus +(); + +638 + gshl +. +voke_commd +("su"); + +639 + gshl +. +voke_commd +("thermostat"); + +640 + gshl +. +voke_commd +("help"); + +641 + gshl +. +voke_commd +("call"); + +642 + gshl +. +voke_commd +("call wwmode"); + +643 + gshl +. +voke_commd +("call modeuto 2"); + +644 + gshl +. +voke_commd +("callemp 22.56"); + +646 + gMq +:: +subsibe +(); + +647 + gMq +:: +show_mq +( +shl +); + +650 i( + gcommd + == "poll2") { + +651 +shl +. +tn +( +F +("Testing Tx Sendingast message on queue...")); + +653 + gEMSESP +:: +show_ems +( +shl +); + +655 +ut8_t + + gpl +[1] = {0x8B}; + +656 + gEMSESP +:: +comg_gm +( +pl +, 1); + +658 + gEMSESP +:: +show_ems +( +shl +); + +659 + gEMSESP +:: +txrvi_ +. +ush_tx_queue +(); + +662 i( + gcommd + == "rx2") { + +663 +ut_gm +({0x1B, 0x5B, 0xFD, 0x2D, 0x9E, 0x3A, 0xB6, 0xE5, 0x02, 0x20, 0x33, 0x30, 0x32, 0x3A, 0x20, 0x5B, + +668 i( + gcommd + == "rx3") { + +669 +ut_gm +({0x21, 0x0B, 0xFF, 0x00}); + +673 i( + gcommd + == "tx2") { + +674 +ut8_t + +t +[] = {0x0B, 0x88, 0x18, 0x00, 0x20, 0xD4}; + +675 + gEMSut +:: +sm +( +t +, (t)); + +679 i( + gcommd + == "offset") { + +681 +EMSESP +:: +txrvi_ +. +ad_que +(0x18, 0x08, 27); + +684 i( + gcommd + == "mixing") { + +685 +shl +. +tn +( +F +("Testing Mixing...")); + +687 + gEMSESP +:: +rxrvi_ +. +ems_mask +( +EMSbus +:: +EMS_MASK_BUDERUS +); + +689 + gd +:: +rg + +vsi +("1.2.3"); + +690 + gEMSESP +:: +add_devi +(0x28, 160, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +691 + gEMSESP +:: +add_devi +(0x29, 161, +vsi +, +EMSdevi +:: +Bnd +:: +BUDERUS +); + +693 + gEMSESP +:: +add_devi +(0x20, 160, +vsi +, +EMSdevi +:: +Bnd +:: +BOSCH +); + +696 +rx_gm +({0xA9, 0x00, 0xFF, 0x00, 0x02, 0x32, 0x02, 0x6C, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); + +699 +rx_gm +({0xA8, 0x00, 0xFF, 0x00, 0x02, 0x31, 0x02, 0x35, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); + +702 +rx_gm +({0xA0, 0x00, 0xFF, 0x00, 0x01, 0x55, 0x00, 0x1A}); + +706 + gEMSESP +:: +lo +(); + +710  + gTe +:: +rx_gm +(cڡ +d +:: +ve +< +ut8_t +> & +rx_da +) { + +711 +ut8_t + +n + = +rx_da +. +size +(); + +712 +ut8_t + + gda +[50]; + +713 +ut8_t + + gi + = 0; + +714  + gn +--) { + +715 + gda +[ +i +] = +rx_da +[i]; + +716 + gi +++; + +718 + gda +[ +i +] = +EMSESP +:: +rxrvi_ +. +lcuϋ_c +( +da +, i); + +719 + gEMSESP +:: +rxrvi_ +. +add +( +da +, +n + + 1); + +723  + gTe +:: +ut_gm +(cڡ +d +:: +ve +< +ut8_t +> & +rx_da +) { + +724 +ut8_t + +n + = +rx_da +. +size +(); + +725 +ut8_t + + gda +[50]; + +726 +ut8_t + + gi + = 0; + +727  + gn +--) { + +728 + gda +[ +i +] = +rx_da +[i]; + +729 + gi +++; + +731 + gda +[ +i +] = +EMSESP +:: +rxrvi_ +. +lcuϋ_c +( +da +, i); + +732 + gEMSESP +:: +comg_gm +( +da +, +i + + 1); + +733 + gEMSESP +:: +rxrvi_ +. +lo +(); + +737  + gTe +:: +ut_gm_whCRC +(cڡ * +rx_da +) { + +739  +gm +[( +EMS_MAX_TELEGRAM_LENGTH + * 3) + 1]; + +740  +ut8_t + + gi + = 0; i < + +( +rx_da +); i++) { + +741 + ggm +[ +i +] = +rx_da +[i]; + +743 + ggm +[ + +( +rx_da +)] = '\0'; + +745 +ut8_t + + gcou + = 0; + +746 * + gp +; + +747  + gvue +[10] = {0}; + +749 +ut8_t + + gda +[ +EMS_MAX_TELEGRAM_LENGTH +]; + +752 i(( + gp + = +ok +( +gm +, " ,"))) { + +753 +y +( +vue +, +p +, 10); + +754 + gda +[0] = ( +ut8_t +) + +( +vue +, 0, 16); + +758  + gp + != 0) { + +759 i(( +p + = +ok +( +nuαr +, " ,"))) { + +760 +y +( +vue +, +p +, 10); + +761 +ut8_t + + gv + = (ut8_t) + +( +vue +, 0, 16); + +762 + gda +[++ +cou +] = +v +; + +766 i( + gcou + == 0) { + +770 + gEMSESP +:: +comg_gm +( +da +, +cou + + 1); + +771 + gEMSESP +:: +rxrvi_ +. +lo +(); + +775  + gTe +:: +ut_gm +(cڡ * +rx_da +) { + +777  +gm +[( +EMS_MAX_TELEGRAM_LENGTH + * 3) + 1]; + +778  +ut8_t + + gi + = 0; i < + +( +rx_da +); i++) { + +779 + ggm +[ +i +] = +rx_da +[i]; + +781 + ggm +[ + +( +rx_da +)] = '\0'; + +783 +ut8_t + + gcou + = 0; + +784 * + gp +; + +785  + gvue +[10] = {0}; + +787 +ut8_t + + gda +[ +EMS_MAX_TELEGRAM_LENGTH +]; + +790 i(( + gp + = +ok +( +gm +, " ,"))) { + +791 +y +( +vue +, +p +, 10); + +792 + gda +[0] = ( +ut8_t +) + +( +vue +, 0, 16); + +796  + gp + != 0) { + +797 i(( +p + = +ok +( +nuαr +, " ,"))) { + +798 +y +( +vue +, +p +, 10); + +799 +ut8_t + + gv + = (ut8_t) + +( +vue +, 0, 16); + +800 + gda +[++ +cou +] = +v +; + +804 i( + gcou + == 0) { + +808 + gda +[ +cou + + 1] = +EMSESP +:: +rxrvi_ +. +lcuϋ_c +( +da +, count + 1); + +810 + gEMSESP +:: +comg_gm +( +da +, +cou + + 2); + +811 + gEMSESP +:: +rxrvi_ +. +lo +(); + +814 #agm +GCC + +dgnoic + +push + + +815 #agm +GCC + +dgnoic + +igned + "-Wunused-parameter" + +818 #agm +GCC + +dgnoic + +p + + + @src/test/test.h + +19 #i +defed +( +EMSESP_DEBUG +) + +21 #ide +EMSESP_TEST_H + + +22  + #EMSESP_TEST_H + + + ) + +24  + ~ + +26  + ~ + +27  + ~ + +29  + ~ + +30  + ~ + +31  + ~ + +33  + ~"emsdevi.h +" + +34  + ~"emsy.h +" + +35  + ~"gm.h +" + +36  + ~"mq.h +" + +37  + ~"em.h +" + +39 +mea + + gem + { + +41 as + cTe + { + +42 + gpublic +: + +43  +run_ +( +uuid +:: +cse +:: +Shl + & +shl +, cڡ +d +:: +rg + & +commd +); + +44  +dummy_mq_commds +(cڡ * +mesge +); + +45  +rx_gm +(cڡ +d +:: +ve +< +ut8_t +> & +da +); + +46  +ut_gm +(cڡ +d +:: +ve +< +ut8_t +> & +rx_da +); + +47  +ut_gm +(cڡ * +rx_da +); + +48  +ut_gm_whCRC +(cڡ * +rx_da +); + + @src/uart/emsuart_esp32.cpp + +23 #i +defed +( +ESP32 +) + +25  + ~"ut/emsut_e32.h +" + +27  + ~"em.h +" + +29 +mea + + gem + { + +31  +RgbufHd_t + + gbuf_hd + = +NULL +; + +32 +ptMUX_TYPE + + gmux + = +ptMUX_INITIALIZER_UNLOCKED +; + +33  +hw_tim_t + * + gtim + = +NULL +; + +34 +bo + + gdr_xt_rx + = +ue +; + +35 +ut8_t + + gtx_mode_ + = 0xFF; + +36 +ut8_t + + gemsTxBuf +[ +EMS_MAXBUFFERSIZE +]; + +37 +ut8_t + + gemsTxBufIdx + = 0; + +38 +ut8_t + + gemsTxBufL + = 0; + +39 +ut32_t + + gemsTxWa +; + +44  + gEMSut +:: +emsut_cvTask +(* + +) { + +46 +size_t + +em_size +; + +47 +ut8_t + * + ggm + = (ut8_*) +xRgbufrReive +( +buf_hd +, & +em_size +, +ptMAX_DELAY +); + +48 +ut8_t + + ggmSize + = +em_size +; + +49 i( + ggm +) { + +50 + gEMSESP +:: +comg_gm +( +gm +, +gmSize +); + +51 +vRgbufrRuIm +( +buf_hd +, (*) +gm +); + +59  +IRAM_ATTR + + gEMSut +:: +emsut_rx__hdr +(* + +) { + +60  +ut8_t + +rxbuf +[ +EMS_MAXBUFFERSIZE +]; + +61  +ut8_t + + gngth +; + +62 +ptENTER_CRITICAL +(& +mux +); + +63 i( + gEMS_UART +. + gt_ +. + gbrk_d +) { + +64 + gEMS_UART +. + gt_r +. + gbrk_d + = 1; + +65 + gngth + = 0; + +66  + gEMS_UART +. + gus +. + grxfifo_t +) { + +67 +ut8_t + + grx + = +EMS_UART +. +fifo +. +rw_by +; + +68 i( + gngth + < + gEMS_MAXBUFFERSIZE +) { + +69 + grxbuf +[ +ngth +++] = +rx +; + +71 + gdr_xt_rx + = +ue +; + +74 i((! + gdr_xt_rx +&& (( + gngth + =2|| ( +ngth + > 4))) { + +75  +baTy + = 0; + +76 +xRgbufrSdFromISR +( +buf_hd +, +rxbuf +, +ngth + - 1, & +baTy +); + +78 + gdr_xt_rx + = +l +; + +80 +ptEXIT_CRITICAL +(& +mux +); + +83  +IRAM_ATTR + + gEMSut +:: +emsut_tx_tim__hdr +() { + +84 i( +emsTxBufL + == 0) { + +87 +ptENTER_CRITICAL +(& +mux +); + +88 i( + gemsTxBufIdx + < + gemsTxBufL +) { + +89 + gEMS_UART +. + gfifo +. + grw_by + = +emsTxBuf +[ +emsTxBufIdx +]; + +90 i( + gemsTxBufIdx + == 1) { + +91 +timArmWre +( +tim +, +emsTxWa +, +ue +); + +93 } i( + gemsTxBufIdx + = +emsTxBufL +) { + +94 +EMS_UART +. +cf0 +. +txd_v + = 1; + +95 +timArmWre +( +tim +, +EMSUART_TX_BRK_TIMER +, +ue +); + +96 } i( + gemsTxBufIdx + = +emsTxBufL + + 1) { + +97 +EMS_UART +. +cf0 +. +txd_v + = 0; + +98 + gemsTxBufL + = 0; + +99 +timArmDib +( +tim +); + +101 + gemsTxBufIdx +++; + +102 +ptEXIT_CRITICAL +(& +mux +); + +108  + gEMSut +:: +t +(cڡ +ut8_t + +tx_mode +, cڡ ut8_ +rx_gpio +, cڡ ut8_ +tx_gpio +) { + +109 i( + gtx_mode_ + != 0xFF) { + +110 +tx_mode_ + = +tx_mode +; + +111 +t +(); + +114 + gtx_mode_ + = +tx_mode +; + +116 +ut_cfig_t + + gut_cfig + = { + +117 . +baud_ + = +EMSUART_BAUD +, + +118 . + gda_bs + = +UART_DATA_8_BITS +, + +119 . + gry + = +UART_PARITY_DISABLE +, + +120 . + g_bs + = +UART_STOP_BITS_1 +, + +121 . + gow_ + = +UART_HW_FLOWCTRL_DISABLE +, + +124 +ut_m_cfig +( +EMSUART_UART +, & +ut_cfig +); + +125 +ut_t_p +( +EMSUART_UART +, +tx_gpio +, +rx_gpio +, +UART_PIN_NO_CHANGE +, UART_PIN_NO_CHANGE); + +126 + gEMS_UART +. + gt_a +. + gv + = 0; + +127 + gEMS_UART +. + gt_r +. + gv + = 0xFFFFFFFF; + +128 + gEMS_UART +. + gid_cf +. + gtx_brk_num + = 10; + +129 + gEMS_UART +. + gid_cf +. + grx_id_thrhd + = 256; + +130 + gdr_xt_rx + = +ue +; + +131 + gbuf_hd + = +xRgbufrCe +(128, +RINGBUF_TYPE_NOSPLIT +); + +132 +ut_i_gi +( +EMSUART_UART +, +emsut_rx__hdr +, +NULL +, +ESP_INTR_FLAG_IRAM +, NULL); + +133 +xTaskCe +( +emsut_cvTask +, "emsut_cvTask", 2048, +NULL +, +cfigMAX_PRIORITIES + - 1, NULL); + +135 + gtim + = +timBeg +(0, 80, +ue +); + +136 +timAachIru +( +tim +, & +emsut_tx_tim__hdr +, +ue +); + +137 +t +(); + +143  + gEMSut +:: + +() { + +144 +EMS_UART +. +t_a +. +v + = 0; + +145 + gEMS_UART +. + gcf0 +. + gtxd_v + = 0; + +146 i( + gemsTxBufL + > 0) { + +147 +timArmDib +( +tim +); + +154  + gEMSut +:: +t +() { + +155 i( +EMS_UART +. +t_w +. +brk_d +) { + +156 +EMS_UART +. +t_r +. +brk_d + = 1; + +157 + gdr_xt_rx + = +ue +; + +159 + gEMS_UART +. + gt_a +. + gbrk_d + = 1; + +160 + gemsTxBufIdx + = 0; + +161 + gemsTxBufL + = 0; + +162 i( + gtx_mode_ + > 100) { + +163 + gemsTxWa + = +EMSUART_TX_BIT_TIME + * ( +tx_mode_ + - 90); + +165 + gemsTxWa + = +EMSUART_TX_BIT_TIME + * ( +tx_mode_ + + 10); + +167 i( + gtx_mode_ + = +EMS_TXMODE_NEW +) { + +168 +EMS_UART +. +cf0 +. +txd_brk + = 1; + +170 + gEMS_UART +. + gcf0 +. + gtxd_brk + = 0; + +177  + gEMSut +:: +nd_pl +(cڡ +ut8_t + +da +) { + +178 +sm +(& +da +, 1); + +186 +ut16_t + + gEMSut +:: +sm +(cڡ +ut8_t + * +buf +, cڡ ut8_ +n +) { + +187 i( + gn + =0 || +n + > +EMS_MAXBUFFERSIZE +) { + +188  +EMS_TX_STATUS_ERR +; + +191 i( + gtx_mode_ + > 5) { + +192  +ut8_t + + gi + = 0; i < + gn +; i++) { + +193 + gemsTxBuf +[ +i +] = +buf +[i]; + +195 + gemsTxBufIdx + = 0; + +196 + gemsTxBufL + = +n +; + +197 i( + gtx_mode_ + > 100 && + gn + > 1) { + +198 +timArmWre +( +tim +, +EMSUART_TX_WAIT_REPLY +, +ue +); + +200 +timArmWre +( +tim +, +emsTxWa +, +ue +); + +202 +timArmEb +( +tim +); + +203  + gEMS_TX_STATUS_OK +; + +206 i( + gtx_mode_ + = +EMS_TXMODE_NEW +) { + +207  +ut8_t + +i + = 0; + gi + < + gn +; i++) { + +208 + gEMS_UART +. + gfifo +. + grw_by + = +buf +[ +i +]; + +210  + gEMS_TX_STATUS_OK +; + +213 i( + gtx_mode_ + = +EMS_TXMODE_EMSPLUS +) { + +214  +ut8_t + +i + = 0; + gi + < + gn +; i++) { + +215 + gEMS_UART +. + gfifo +. + grw_by + = +buf +[ +i +]; + +216 +dayMiocds +( +EMSUART_TX_WAIT_PLUS +); + +218 + gEMS_UART +. + gcf0 +. + gtxd_v + = 1; + +219 +dayMiocds +( +EMSUART_TX_BRK_PLUS +); + +220 + gEMS_UART +. + gcf0 +. + gtxd_v + = 0; + +221  + gEMS_TX_STATUS_OK +; + +224 i( + gtx_mode_ + = +EMS_TXMODE_HT3 +) { + +225  +ut8_t + +i + = 0; + gi + < + gn +; i++) { + +226 + gEMS_UART +. + gfifo +. + grw_by + = +buf +[ +i +]; + +227 +dayMiocds +( +EMSUART_TX_WAIT_HT3 +); + +229 + gEMS_UART +. + gcf0 +. + gtxd_v + = 1; + +230 +dayMiocds +( +EMSUART_TX_BRK_HT3 +); + +231 + gEMS_UART +. + gcf0 +. + gtxd_v + = 0; + +232  + gEMS_TX_STATUS_OK +; + +239  +ut8_t + + gi + = 0; i < + gn +; i++) { + +240 vީ +ut8_t + + g_uxc + = +EMS_UART +. +us +. +rxfifo_t +; + +241 + gEMS_UART +. + gfifo +. + grw_by + = +buf +[ +i +]; + +242 +ut16_t + + gtimeoutt + = +EMSUART_TX_TIMEOUT +; + +243 ( + gEMS_UART +. + gus +. + grxfifo_t + = +_uxc +&& (-- +timeoutt + > 0)) { + +244 +dayMiocds +( +EMSUART_TX_BUSY_WAIT +); + +247 + gEMS_UART +. + gcf0 +. + gtxd_v + = 1; + +248 +dayMiocds +( +EMSUART_TX_BRK_EMS +); + +249 + gEMS_UART +. + gcf0 +. + gtxd_v + = 0; + +250  + gEMS_TX_STATUS_OK +; + + @src/uart/emsuart_esp32.h + +23 #i +defed +( +ESP32 +) + +25 #ide +EMSESP_EMSUART_H + + +26  + #EMSESP_EMSUART_H + + + ) + +28  + ~ + +30  + ~"䓹os/FeRTOS.h +" + +31  + ~"䓹os/sk.h +" + +32  + ~"䓹os/rgbuf.h +" + +33  + ~"䓹os/queue.h +" + +34  + ~ + +35  + ~ + +37  + #EMS_MAXBUFFERSIZE + 33 + +38 + + ) + +39  + #EMSUART_UART + +UART_NUM_2 + + +40  + #EMS_UART + +UART2 + + +41  + #EMSUART_BAUD + 9600 + +42 + + ) + +43  + #EMS_TXMODE_DEFAULT + 1 + + ) + +44  + #EMS_TXMODE_EMSPLUS + 2 + + ) + +45  + #EMS_TXMODE_HT3 + 3 + + ) + +46  + #EMS_TXMODE_NEW + 4 + +47 + + ) + +49  + #EMSUART_TX_BIT_TIME + 104 + +50 + + ) + +52  + #EMSUART_TX_BRK_TIMER + ( +EMSUART_TX_BIT_TIME + * 10 + 28) + +53  + #EMSUART_TX_WAIT_REPLY + 100000 + +54 + + ) + +56  + #EMSUART_TX_BUSY_WAIT + ( +EMSUART_TX_BIT_TIME + / 8) + +57  + #EMSUART_TX_TIMEOUT + (20 * +EMSUART_TX_BIT_TIME + / +EMSUART_TX_BUSY_WAIT +) + + ) + +58  + #EMSUART_TX_BRK_EMS + ( +EMSUART_TX_BIT_TIME + * 10) + + ) + +62  + #EMSUART_TX_WAIT_HT3 + ( +EMSUART_TX_BIT_TIME + * 17) + +63  + #EMSUART_TX_BRK_HT3 + ( +EMSUART_TX_BIT_TIME + * 11) + + ) + +66  + #EMSUART_TX_WAIT_PLUS + ( +EMSUART_TX_BIT_TIME + * 20) + +67  + #EMSUART_TX_BRK_PLUS + ( +EMSUART_TX_BIT_TIME + * 11) + + ) + +69 +mea + + gem + { + +71  + #EMS_TX_STATUS_OK + 1 + + ) + +72  + #EMS_TX_STATUS_ERR + 0 + + ) + +74 as + cEMSut + { + +75 + gpublic +: + +76 +EMSut +() = ; + +77 ~ +EMSut +() = ; + +79  +t +(cڡ +ut8_t + +tx_mode +, cڡ ut8_ +rx_gpio +, cڡ ut8_ +tx_gpio +); + +80  +nd_pl +(cڡ +ut8_t + +da +); + +81  + +(); + +82  +t +(); + +83  +ut16_t + +sm +(cڡ +ut8_t + * +buf +, cڡ ut8_ +n +); + +85 + give +: + +86  +emsut_cvTask +(* + +); + +87  +IRAM_ATTR + +emsut_rx__hdr +(* + +); + +88  +IRAM_ATTR + +emsut_tx_tim__hdr +(); + + @src/uart/emsuart_esp8266.cpp + +19 #i +defed +( +ESP8266 +) + +21  + ~"ut/emsut_e8266.h +" + +23  + ~"em.h +" + +25 +mea + + gem + { + +27 +os_evt_t + + gcvTaskQueue +[ +EMSUART_cvTaskQueueL +]; + +28 + gEMSut +:: +EMSRxBuf_t + * +pEMSRxBuf +; + +29 + gEMSut +:: +EMSRxBuf_t + * +EMSRxBuf +[ +EMS_MAXBUFFERS +]; + +30 +ut8_t + + gemsRxBufIdx + = 0; + +31 +ut8_t + + gtx_mode_ + = 0xFF; + +32 +bo + + gdr_xt_rx + = +ue +; + +33 +ut8_t + + gemsTxBuf +[ +EMS_MAXBUFFERSIZE +]; + +34 +ut8_t + + gemsTxBufIdx +; + +35 +ut8_t + + gemsTxBufL +; + +36 +ut32_t + + gemsTxWa +; + +37 +bo + + gEMSut +:: +ndg_ + = +l +; + +43  +ICACHE_RAM_ATTR + + gEMSut +:: +emsut_rx__hdr +(* + +) { + +44  +ut8_t + +ngth + = 0; + +45  +ut8_t + + gut_bufr +[ +EMS_MAXBUFFERSIZE + + 2]; + +47 i( +USIS +( +EMSUART_UART +& ((1 << + gUIBD +))) { + +48 +USC0 +( +EMSUART_UART +&~(1 << +UCBRK +); + +49 i( + gndg_ +) { + +50 + gdr_xt_rx + = +ue +; + +52 +USIC +( +EMSUART_UART +(1 << +UIBD +); + +53 + gngth + = 0; + +54 ( +USS +( +EMSUART_UART +>> + gUSRXC +) & 0x0FF) { + +55 +ut8_t + + grx + = +USF +( +EMSUART_UART +); + +56 i( + gngth + < + gEMS_MAXBUFFERSIZE +) { + +57 i( + gngth + || + grx +) { + +58 + gut_bufr +[ +ngth +++] = +rx +; + +61 + gdr_xt_rx + = +ue +; + +64 i(! + gdr_xt_rx +) { + +65 i( + gut_bufr +[ +ngth + - 1]) { + +66 + gngth +++; + +68 + gpEMSRxBuf +-> + gngth + = +ngth +; + +69 +os_memy +((*) +pEMSRxBuf +-> +bufr +, (*)& +ut_bufr +,EMSRxBuf-> +ngth +); + +70 +syem_os_po +( +EMSUART_cvTaskPrio +, 0, 0); + +72 + gdr_xt_rx + = +l +; + +73 + gndg_ + = +l +; + +82  +ICACHE_FLASH_ATTR + + gEMSut +:: +emsut_cvTask +( +os_evt_t + * +evts +) { + +83 +EMSRxBuf_t + * +pCut + = +pEMSRxBuf +; + +84 + gpEMSRxBuf + = +EMSRxBuf +[++ +emsRxBufIdx + % +EMS_MAXBUFFERS +]; + +85 +ut8_t + + gngth + = +pCut +-> +ngth +; + +86 + gpCut +-> + gngth + = 0; + +89 i( + gngth + > 4 ||ength == 2) { + +90 +EMSESP +:: +comg_gm +(( +ut8_t + *) +pCut +-> +bufr +, +ngth + - 1); + +95  +ICACHE_RAM_ATTR + + gEMSut +:: +emsut_tx_tim__hdr +() { + +96 i(! +ndg_ +) { + +99 + gemsTxBufIdx +++; + +100 i( + gemsTxBufIdx + < + gemsTxBufL +) { + +101 +USF +( +EMSUART_UART + +emsTxBuf +[ +emsTxBufIdx +]; + +102 +tim1_wre +( +emsTxWa +); + +103 } i( + gemsTxBufIdx + = +emsTxBufL +) { + +104 +USC0 +( +EMSUART_UART +|(1 << +UCBRK +); + +105 +tim1_wre +( +EMSUART_TX_BRK_TIMER +); + +107 +USC0 +( +EMSUART_UART +&~(1 << +UCBRK +); + +108 + gndg_ + = +l +; + +115  +ICACHE_FLASH_ATTR + + gEMSut +:: +emsut_ush_fifos +() { + +116 +USC0 +( +EMSUART_UART +|((1 << +UCRXRST +| (1 << +UCTXRST +)); + +117 +USC0 +( +EMSUART_UART +&~((1 << +UCRXRST +| (1 << +UCTXRST +)); + +123  +ICACHE_FLASH_ATTR + + gEMSut +:: +t +(cڡ +ut8_t + +tx_mode +, cڡ ut8_ +rx_gpio +, cڡ ut8_ +tx_gpio +) { + +124 i( + gtx_mode_ + != 0xFF) { + +125 +tx_mode_ + = +tx_mode +; + +126 +t +(); + +129 + gtx_mode_ + = +tx_mode +; + +131  + gi + = 0; i < + gEMS_MAXBUFFERS +; i++) { + +132 +EMSRxBuf_t + * + gp + = (EMSRxBuf_*) +mloc +((EMSRxBuf_t)); + +133 + gp +-> + gngth + = 0; + +134 + gEMSRxBuf +[ +i +] = +p +; + +136 + gpEMSRxBuf + = +EMSRxBuf +[0]; + +138 +ETS_UART_INTR_ATTACH +( +nuαr +,ullptr); + +141 +PIN_PULLUP_DIS +( +PERIPHS_IO_MUX_U0TXD_U +); + +142 +PIN_FUNC_SELECT +( +PERIPHS_IO_MUX_U0TXD_U +, +FUNC_U0TXD +); + +143 +PIN_PULLUP_DIS +( +PERIPHS_IO_MUX_U0RXD_U +); + +144 +PIN_FUNC_SELECT +( +PERIPHS_IO_MUX_U0RXD_U +, +FUNC_U0RXD +); + +147 +USD +( +EMSUART_UART +( +UART_CLK_FREQ + / +EMSUART_BAUD +); + +148 +USC0 +( +EMSUART_UART + +EMSUART_CONFIG +; + +149 +emsut_ush_fifos +(); + +158 +USC1 +( +EMSUART_UART +) = 0; + +162 +USIC +( +EMSUART_UART +) = 0xFFFF; + +163 +USIE +( +EMSUART_UART +) = 0; + +166 +syem_os_sk +( +emsut_cvTask +, +EMSUART_cvTaskPrio +, +cvTaskQueue +, +EMSUART_cvTaskQueueL +); + +169 +syem_t_os_t +(0); + +171 i( + gtx_gpio + =1 && +rx_gpio + == 3) { + +172 +syem_ut_de_sw +(); + +173 } i( + gtx_gpio + =15 && +rx_gpio + == 13) { + +174 +syem_ut_sw +(); + +177 +ETS_UART_INTR_ATTACH +( +emsut_rx__hdr +, +nuαr +); + +178 + gdr_xt_rx + = +ue +; + +181 +tim1_chIru +( +emsut_tx_tim__hdr +); + +183 +t +(); + +190  +ICACHE_FLASH_ATTR + + gEMSut +:: + +() { + +191 +USIE +( +EMSUART_UART +) = 0; + +192 +USC0 +( +EMSUART_UART +&~(1 << +UCBRK +); + +193 +tim1_dib +(); + +194 + gndg_ + = +l +; + +200  +ICACHE_FLASH_ATTR + + gEMSut +:: +t +() { + +201 i( +USIR +( +EMSUART_UART +& ((1 << +UIBD +))) { + +202 +USIC +( +EMSUART_UART +(1 << +UIBD +); + +203 + gdr_xt_rx + = +ue +; + +205 i( + gtx_mode_ + > 100) { + +206 + gemsTxWa + = 5 * +EMSUART_TX_BIT_TIME + * ( +tx_mode_ + - 90); + +208 + gemsTxWa + = 5 * +EMSUART_TX_BIT_TIME + * ( +tx_mode_ + + 10); + +210 + gemsTxBufIdx + = 0; + +211 + gemsTxBufL + = 0; + +212 +tim1_ab +( +TIM_DIV16 +, +TIM_EDGE +, +TIM_SINGLE +); + +213 +USIE +( +EMSUART_UART +(1 << +UIBD +); + +219  +ICACHE_FLASH_ATTR + + gEMSut +:: +nd_pl +( +ut8_t + +da +) { + +220 +sm +(& +da +, 1); + +228 +ut16_t + +ICACHE_FLASH_ATTR + + gEMSut +:: +sm +( +ut8_t + * +buf +, ut8_ +n +) { + +229 i( + gn + =0 || +n + > +EMS_MAXBUFFERSIZE +) { + +230  +EMS_TX_STATUS_ERR +; + +234 i( + gtx_mode_ + >= 5) { + +235 +ndg_ + = +ue +; + +236  +ut8_t + + gi + = 0; i < + gn +; i++) { + +237 + gemsTxBuf +[ +i +] = +buf +[i]; + +239 +USF +( +EMSUART_UART + +buf +[0]; + +240 + gemsTxBufIdx + = 0; + +241 + gemsTxBufL + = +n +; + +242 i( + gtx_mode_ + > 100 && + gn + > 1) { + +243 +tim1_wre +( +EMSUART_TX_WAIT_REPLY +); + +245 +tim1_wre +( +emsTxWa +); + +247  + gEMS_TX_STATUS_OK +; + +251 i( + gtx_mode_ + = +EMS_TXMODE_NEW +) { + +252  +ut8_t + +i + = 0; + gi + < + gn +; i++) { + +253 +USF +( +EMSUART_UART + +buf +[ +i +]; + +255 +USC0 +( +EMSUART_UART +|(1 << +UCBRK +); + +256  + gEMS_TX_STATUS_OK +; + +260 i( + gtx_mode_ + = +EMS_TXMODE_EMSPLUS +) { + +261  +ut8_t + +i + = 0; + gi + < + gn +; i++) { + +262 +USF +( +EMSUART_UART + +buf +[ +i +]; + +263 +dayMiocds +( +EMSUART_TX_WAIT_PLUS +); + +265 +USC0 +( +EMSUART_UART +|(1 << +UCBRK +); + +266 +dayMiocds +( +EMSUART_TX_BRK_PLUS +); + +267 +USC0 +( +EMSUART_UART +&~(1 << +UCBRK +); + +268  + gEMS_TX_STATUS_OK +; + +272 i( + gtx_mode_ + = +EMS_TXMODE_HT3 +) { + +273  +ut8_t + +i + = 0; + gi + < + gn +; i++) { + +274 +USF +( +EMSUART_UART + +buf +[ +i +]; + +276 (( +USS +( +EMSUART_UART +>> + gUSTXC +) & 0xff)) { + +279 +dayMiocds +( +EMSUART_TX_WAIT_HT3 +); + +281 +USC0 +( +EMSUART_UART +|(1 << +UCBRK +); + +282 +dayMiocds +( +EMSUART_TX_BRK_HT3 +); + +283 +USC0 +( +EMSUART_UART +&~(1 << +UCBRK +); + +284  + gEMS_TX_STATUS_OK +; + +313 +emsut_ush_fifos +(); + +316  +ut8_t + + gi + = 0; i < + gn +; i++) { + +317 vީ +ut8_t + + g_uxc + = ( +USS +( +EMSUART_UART +>> +USRXC +) & 0xFF; + +318 +ut16_t + + gtimeoutt + = +EMSUART_TX_TIMEOUT +; + +319 +USF +( +EMSUART_UART + +buf +[ +i +]; + +321 ((( +USS +( +EMSUART_UART +>> + gUSRXC +& 0xFF= +_uxc +&& (-- +timeoutt + > 0)) { + +322 +dayMiocds +( +EMSUART_TX_BUSY_WAIT +); + +325 +USC0 +( +EMSUART_UART +|(1 << +UCBRK +); + +326 +dayMiocds +( +EMSUART_TX_BRK_EMS +); + +327 +USC0 +( +EMSUART_UART +&~(1 << +UCBRK +); + +328  + gEMS_TX_STATUS_OK +; + + @src/uart/emsuart_esp8266.h + +18 #i +defed +( +ESP8266 +) + +20 #ide +EMSESP_EMSUART_H + + +21  + #EMSESP_EMSUART_H + + + ) + +23  + ~ + +25  + ~ + +27  + #EMSUART_UART + 0 + +28  + #EMSUART_CONFIG + 0x1C + +29  + #EMSUART_BAUD + 9600 + +30 + + ) + +31  + #EMS_MAXBUFFERS + 3 + +32  + #EMS_MAXBUFFERSIZE + 33 + +33 + + ) + +34  + #EMSUART_cvTaskPrio + 2 + +35  + #EMSUART_cvTaskQueueL + 10 + +36 + + ) + +37  + #EMS_TXMODE_DEFAULT + 1 + + ) + +38  + #EMS_TXMODE_EMSPLUS + 2 + + ) + +39  + #EMS_TXMODE_HT3 + 3 + + ) + +40  + #EMS_TXMODE_NEW + 4 + +41 + + ) + +43  + #EMSUART_TX_BIT_TIME + 104 + +44 + + ) + +46  + #EMSUART_TX_BRK_TIMER + ( +EMSUART_TX_BIT_TIME + * 52) + +47  + #EMSUART_TX_WAIT_REPLY + 500000 + +48 + + ) + +50  + #EMSUART_TX_BUSY_WAIT + ( +EMSUART_TX_BIT_TIME + / 8) + +52  + #EMSUART_TX_TIMEOUT + (220 * 8) + +53  + #EMSUART_TX_BRK_EMS + ( +EMSUART_TX_BIT_TIME + * 10) + + ) + +57  + #EMSUART_TX_WAIT_HT3 + ( +EMSUART_TX_BIT_TIME + * 17) + +58  + #EMSUART_TX_BRK_HT3 + ( +EMSUART_TX_BIT_TIME + * 11) + + ) + +61  + #EMSUART_TX_WAIT_PLUS + ( +EMSUART_TX_BIT_TIME + * 20) + +62  + #EMSUART_TX_BRK_PLUS + ( +EMSUART_TX_BIT_TIME + * 11) + + ) + +64 +mea + + gem + { + +66  + #EMS_TX_STATUS_ERR + 0 + + ) + +67  + #EMS_TX_STATUS_OK + 1 + + ) + +69 as + cEMSut + { + +70 + gpublic +: + +71 +EMSut +() = ; + +72 ~ +EMSut +() = ; + +74  +ICACHE_FLASH_ATTR + +t +(cڡ +ut8_t + +tx_mode +, cڡ ut8_ +rx_gpio +, cڡ ut8_ +tx_gpio +); + +75  +ICACHE_FLASH_ATTR + + +(); + +76  +ICACHE_FLASH_ATTR + +t +(); + +77  +ICACHE_FLASH_ATTR + +nd_pl +( +ut8_t + +da +); + +78  +ut16_t + +ICACHE_FLASH_ATTR + +sm +( +ut8_t + * +buf +, ut8_ +n +); + +79  +bo + +ndg +() { + +80  + gndg_ +; + +84 +ut8_t + + gngth +; + +85 +ut8_t + + gbufr +[ +EMS_MAXBUFFERSIZE +]; + +86 } + tEMSRxBuf_t +; + +88 + give +: + +89  +ICACHE_RAM_ATTR + +emsut_rx__hdr +(* + +); + +90  +ICACHE_FLASH_ATTR + +emsut_cvTask +( +os_evt_t + * +evts +); + +91  +ICACHE_FLASH_ATTR + +emsut_ush_fifos +(); + +92  +ICACHE_RAM_ATTR + +emsut_tx_tim__hdr +(); + +93  +bo + + gndg_ +; + + @src/version.h + +1  + #EMSESP_APP_VERSION + "2.0.1" + + ) + + @ +1 +. +0 +701 +42112 +.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/Pair.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringIterator.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StdStringAdapter.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/String.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantShortcuts.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp +.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp +.pio/libdeps/esp8266/AsyncMqttClient/examples/FullyFeaturedSSL/src/main.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.h +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Callbacks.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/DisconnectReasons.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Flags.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Helpers.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/MessageProperties.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/Packet.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.cpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/ParsingInformation.hpp +.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Storage.hpp +.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.cpp +.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.h +.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h +.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h +.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp +.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h +.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp +.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h +.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp +.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h +.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp +.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h +.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h +.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c +.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h +interface/node_modules/jest-haste-map/node_modules/fsevents/fsevents.cc +interface/node_modules/jest-haste-map/node_modules/fsevents/src/async.cc +interface/node_modules/jest-haste-map/node_modules/fsevents/src/constants.cc +interface/node_modules/jest-haste-map/node_modules/fsevents/src/methods.cc +interface/node_modules/jest-haste-map/node_modules/fsevents/src/storage.cc +interface/node_modules/jest-haste-map/node_modules/fsevents/src/thread.cc +interface/node_modules/nan/nan.h +interface/node_modules/nan/nan_callbacks.h +interface/node_modules/nan/nan_callbacks_12_inl.h +interface/node_modules/nan/nan_callbacks_pre_12_inl.h +interface/node_modules/nan/nan_converters.h +interface/node_modules/nan/nan_converters_43_inl.h +interface/node_modules/nan/nan_converters_pre_43_inl.h +interface/node_modules/nan/nan_define_own_property_helper.h +interface/node_modules/nan/nan_implementation_12_inl.h +interface/node_modules/nan/nan_implementation_pre_12_inl.h +interface/node_modules/nan/nan_json.h +interface/node_modules/nan/nan_maybe_43_inl.h +interface/node_modules/nan/nan_maybe_pre_43_inl.h +interface/node_modules/nan/nan_new.h +interface/node_modules/nan/nan_object_wrap.h +interface/node_modules/nan/nan_persistent_12_inl.h +interface/node_modules/nan/nan_persistent_pre_12_inl.h +interface/node_modules/nan/nan_private.h +interface/node_modules/nan/nan_string_bytes.h +interface/node_modules/nan/nan_typedarray_contents.h +interface/node_modules/nan/nan_weak.h +interface/node_modules/watchpack-chokidar2/node_modules/fsevents/fsevents.cc +interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/async.cc +interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/constants.cc +interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/methods.cc +interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/storage.cc +interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/thread.cc +interface/node_modules/webpack-dev-server/node_modules/fsevents/fsevents.cc +interface/node_modules/webpack-dev-server/node_modules/fsevents/src/async.cc +interface/node_modules/webpack-dev-server/node_modules/fsevents/src/constants.cc +interface/node_modules/webpack-dev-server/node_modules/fsevents/src/methods.cc +interface/node_modules/webpack-dev-server/node_modules/fsevents/src/storage.cc +interface/node_modules/webpack-dev-server/node_modules/fsevents/src/thread.cc +interface/node_modules/zlib/src/node-zlib.cc +lib/ESPAsyncWebServer/AsyncEventSource.cpp +lib/ESPAsyncWebServer/AsyncEventSource.h +lib/ESPAsyncWebServer/AsyncJson.h +lib/ESPAsyncWebServer/AsyncWebSocket.cpp +lib/ESPAsyncWebServer/AsyncWebSocket.h +lib/ESPAsyncWebServer/AsyncWebSynchronization.h +lib/ESPAsyncWebServer/ESPAsyncWebServer.h +lib/ESPAsyncWebServer/SPIFFSEditor.cpp +lib/ESPAsyncWebServer/SPIFFSEditor.h +lib/ESPAsyncWebServer/StringArray.h +lib/ESPAsyncWebServer/WebAuthentication.cpp +lib/ESPAsyncWebServer/WebAuthentication.h +lib/ESPAsyncWebServer/WebHandlerImpl.h +lib/ESPAsyncWebServer/WebHandlers.cpp +lib/ESPAsyncWebServer/WebRequest.cpp +lib/ESPAsyncWebServer/WebResponseImpl.h +lib/ESPAsyncWebServer/WebResponses.cpp +lib/ESPAsyncWebServer/WebServer.cpp +lib/OneWire/OneWire.cpp +lib/OneWire/OneWire.h +lib/OneWire/OneWire_direct_gpio.h +lib/OneWire/OneWire_direct_regtype.h +lib/framework/APSettingsService.cpp +lib/framework/APSettingsService.h +lib/framework/APStatus.cpp +lib/framework/APStatus.h +lib/framework/ArduinoJsonJWT.cpp +lib/framework/ArduinoJsonJWT.h +lib/framework/AuthenticationService.cpp +lib/framework/AuthenticationService.h +lib/framework/ESP8266React.cpp +lib/framework/ESP8266React.h +lib/framework/ESPUtils.h +lib/framework/FSPersistence.h +lib/framework/FactoryResetService.cpp +lib/framework/FactoryResetService.h +lib/framework/Features.h +lib/framework/FeaturesService.cpp +lib/framework/FeaturesService.h +lib/framework/HttpEndpoint.h +lib/framework/JsonUtils.h +lib/framework/MqttPubSub.h +lib/framework/MqttSettingsService.cpp +lib/framework/MqttSettingsService.h +lib/framework/MqttStatus.cpp +lib/framework/MqttStatus.h +lib/framework/NTPSettingsService.cpp +lib/framework/NTPSettingsService.h +lib/framework/NTPStatus.cpp +lib/framework/NTPStatus.h +lib/framework/OTASettingsService.cpp +lib/framework/OTASettingsService.h +lib/framework/RestartService.cpp +lib/framework/RestartService.h +lib/framework/SecurityManager.h +lib/framework/SecuritySettingsService.cpp +lib/framework/SecuritySettingsService.h +lib/framework/StatefulService.cpp +lib/framework/StatefulService.h +lib/framework/SystemStatus.cpp +lib/framework/SystemStatus.h +lib/framework/UploadFirmwareService.cpp +lib/framework/UploadFirmwareService.h +lib/framework/WWWData.h +lib/framework/WebSocketTxRx.h +lib/framework/WiFiScanner.cpp +lib/framework/WiFiScanner.h +lib/framework/WiFiSettingsService.cpp +lib/framework/WiFiSettingsService.h +lib/framework/WiFiStatus.cpp +lib/framework/WiFiStatus.h +lib/uuid-common/src/common.cpp +lib/uuid-common/src/get_uptime_ms.cpp +lib/uuid-common/src/loop.cpp +lib/uuid-common/src/printable_to_string.cpp +lib/uuid-common/src/read_flash_string.cpp +lib/uuid-common/src/uuid/common.h +lib/uuid-console/src/command_line.cpp +lib/uuid-console/src/commands.cpp +lib/uuid-console/src/console.cpp +lib/uuid-console/src/shell.cpp +lib/uuid-console/src/shell_log.cpp +lib/uuid-console/src/shell_loop_all.cpp +lib/uuid-console/src/shell_print.cpp +lib/uuid-console/src/shell_prompt.cpp +lib/uuid-console/src/shell_stream.cpp +lib/uuid-console/src/stream_console.cpp +lib/uuid-console/src/uuid/console.h +lib/uuid-log/src/format_level_char.cpp +lib/uuid-log/src/format_level_lowercase.cpp +lib/uuid-log/src/format_level_uppercase.cpp +lib/uuid-log/src/format_timestamp_ms.cpp +lib/uuid-log/src/levels.cpp +lib/uuid-log/src/levels_lowercase.cpp +lib/uuid-log/src/levels_uppercase.cpp +lib/uuid-log/src/log.cpp +lib/uuid-log/src/parse_level_lowercase.cpp +lib/uuid-log/src/parse_level_uppercase.cpp +lib/uuid-log/src/uuid/log.h +lib/uuid-syslog/src/syslog.cpp +lib/uuid-syslog/src/uuid/syslog.h +lib/uuid-telnet/src/stream.cpp +lib/uuid-telnet/src/telnet.cpp +lib/uuid-telnet/src/uuid/telnet.h +lib_standalone/Arduino.cpp +lib_standalone/Arduino.h +lib_standalone/ArduinoJson/ArduinoJson.h +lib_standalone/ArduinoJson/extras/fuzzing/fuzzer_main.cpp +lib_standalone/ArduinoJson/extras/fuzzing/json_fuzzer.cpp +lib_standalone/ArduinoJson/extras/fuzzing/msgpack_fuzzer.cpp +lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp +lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp +lib_standalone/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp +lib_standalone/ArduinoJson/extras/tests/ElementProxy/add.cpp +lib_standalone/ArduinoJson/extras/tests/ElementProxy/clear.cpp +lib_standalone/ArduinoJson/extras/tests/ElementProxy/compare.cpp +lib_standalone/ArduinoJson/extras/tests/ElementProxy/remove.cpp +lib_standalone/ArduinoJson/extras/tests/ElementProxy/set.cpp +lib_standalone/ArduinoJson/extras/tests/ElementProxy/size.cpp +lib_standalone/ArduinoJson/extras/tests/ElementProxy/subscript.cpp +lib_standalone/ArduinoJson/extras/tests/Helpers/CustomReader.hpp +lib_standalone/ArduinoJson/extras/tests/Helpers/Stream.h +lib_standalone/ArduinoJson/extras/tests/Helpers/WString.h +lib_standalone/ArduinoJson/extras/tests/Helpers/progmem_emulation.hpp +lib_standalone/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp +lib_standalone/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp +lib_standalone/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp +lib_standalone/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/add.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/copyArray.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/createNested.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/equals.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/get.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/isNull.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/iterator.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/memoryUsage.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/nesting.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/remove.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/size.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/std_string.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/subscript.cpp +lib_standalone/ArduinoJson/extras/tests/JsonArray/undefined.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array_static.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/incomplete_input.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/invalid_input.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/number.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object_static.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/string.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/BasicJsonDocument.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/DynamicJsonDocument.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/StaticJsonDocument.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/add.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/compare.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/containsKey.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/createNested.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/isNull.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/nesting.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/remove.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/size.cpp +lib_standalone/ArduinoJson/extras/tests/JsonDocument/subscript.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/containsKey.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/copy.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedArray.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedObject.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/equals.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/invalid.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/isNull.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/iterator.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/memoryUsage.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/nesting.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/remove.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/size.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/std_string.cpp +lib_standalone/ArduinoJson/extras/tests/JsonObject/subscript.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/misc.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp +lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/add.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/as.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/clear.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/compare.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/containsKey.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/copy.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/createNested.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/is.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/isnull.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/memoryUsage.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/misc.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/nesting.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/or.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/overflow.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/remove.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/set.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/subscript.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/types.cpp +lib_standalone/ArduinoJson/extras/tests/JsonVariant/undefined.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/add.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/clear.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/compare.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/containsKey.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/remove.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/set.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/size.cpp +lib_standalone/ArduinoJson/extras/tests/MemberProxy/subscript.cpp +lib_standalone/ArduinoJson/extras/tests/MemoryPool/StringBuilder.cpp +lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocString.cpp +lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocVariant.cpp +lib_standalone/ArduinoJson/extras/tests/MemoryPool/clear.cpp +lib_standalone/ArduinoJson/extras/tests/MemoryPool/size.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/FloatParts.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/Issue1189.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/Issue978.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/Readers.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/StringAdapters.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/StringWriter.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/TypeTraits.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/Utf16.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/Utf8.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/conflicts.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/custom_string.hpp +lib_standalone/ArduinoJson/extras/tests/Misc/unsigned_char.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/version.cpp +lib_standalone/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/cpp11.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_0.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_1.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_0.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_1.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_0.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_1.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_0.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_1.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_0.cpp +lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_1.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeStaticVariant.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/incompleteInput.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/notSupported.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/misc.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp +lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp +lib_standalone/ArduinoJson/extras/tests/Numbers/parseFloat.cpp +lib_standalone/ArduinoJson/extras/tests/Numbers/parseInteger.cpp +lib_standalone/ArduinoJson/extras/tests/Numbers/parseNumber.cpp +lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp +lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeString.cpp +lib_standalone/ArduinoJson/extras/tests/catch/catch.cpp +lib_standalone/ArduinoJson/extras/tests/catch/catch.hpp +lib_standalone/ArduinoJson/src/ArduinoJson.h +lib_standalone/ArduinoJson/src/ArduinoJson.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Configuration.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/Latch.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringSlot.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Namespace.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseFloat.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseInteger.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Object/Pair.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantCasts.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantComparisons.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOperators.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOr.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantShortcuts.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/gsl/not_null.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StlStringAdapter.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/String.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/compatibility.hpp +lib_standalone/ArduinoJson/src/ArduinoJson/version.hpp +lib_standalone/AsyncJson.h +lib_standalone/AsyncMqttClient.h +lib_standalone/AsyncTCP.h +lib_standalone/ESP8266React.h +lib_standalone/ESPAsyncWebServer.h +lib_standalone/FS.h +lib_standalone/FSPersistence.h +lib_standalone/Features.h +lib_standalone/HttpEndpoint.h +lib_standalone/MqttPubSub.h +lib_standalone/SecurityManager.h +lib_standalone/SecuritySettingsService.cpp +lib_standalone/SecuritySettingsService.h +lib_standalone/StatefulService.cpp +lib_standalone/StatefulService.h +lib_standalone/WString.cpp +lib_standalone/WString.h +lib_standalone/WebSocketTxRx.h +lib_standalone/emsuart_standalone.cpp +lib_standalone/emsuart_standalone.h +src/EMSESPDevicesService.cpp +src/EMSESPDevicesService.h +src/EMSESPSettingsService.cpp +src/EMSESPSettingsService.h +src/EMSESPStatusService.cpp +src/EMSESPStatusService.h +src/console.cpp +src/console.h +src/device_library.h +src/devices/boiler.cpp +src/devices/boiler.h +src/devices/connect.cpp +src/devices/connect.h +src/devices/controller.cpp +src/devices/controller.h +src/devices/gateway.cpp +src/devices/gateway.h +src/devices/heatpump.cpp +src/devices/heatpump.h +src/devices/mixing.cpp +src/devices/mixing.h +src/devices/solar.cpp +src/devices/solar.h +src/devices/switch.cpp +src/devices/switch.h +src/devices/thermostat.cpp +src/devices/thermostat.h +src/emsdevice.cpp +src/emsdevice.h +src/emsesp.cpp +src/emsesp.h +src/emsfactory.h +src/helpers.cpp +src/helpers.h +src/locale_EN.h +src/main.cpp +src/mqtt.cpp +src/mqtt.h +src/roomcontrol.cpp +src/roomcontrol.h +src/sensors.cpp +src/sensors.h +src/shower.cpp +src/shower.h +src/system.cpp +src/system.h +src/telegram.cpp +src/telegram.h +src/test/test.cpp +src/test/test.h +src/uart/emsuart_esp32.cpp +src/uart/emsuart_esp32.h +src/uart/emsuart_esp8266.cpp +src/uart/emsuart_esp8266.h +src/version.h diff --git a/pio_local.ini.txt b/pio_local.ini.txt new file mode 100644 index 00000000..4c89f40e --- /dev/null +++ b/pio_local.ini.txt @@ -0,0 +1,3 @@ +upload_protocol = espota +upload_flags = --port=8266 --auth=ems-esp-neo +upload_port = ems-esp.local diff --git a/src/.emsdevice.cpp.swp b/src/.emsdevice.cpp.swp new file mode 100644 index 0000000000000000000000000000000000000000..9c75687c050dc2315db327c62859a15b8f7c93a1 GIT binary patch literal 16384 zcmeI3U2Ggz6~`xS0u)+WN~Q8ZrCW!DUDvy7CjzyT#IWA1<4x>cv$KvHMd@gE_U_Kq zvophd*xe+CJRrntp&10;vU33#1lE zE%5(u0na`xd=hHh5vfAI({U*L=zsnvI^5{|jcwQ8imun9^KWdserNReT>Kdch~-45 z(~r~wsRdFCq!vgmkXj(MKx%>10;vU33#1lEEs$E^e_#QnB?u3o-6`4t!1w=g{r~2@ zg76CXHuwgR!Gqw{cjFxRCg9*G_{%+l@O^L#JP95K4}tfCBjB~W1>q&|BKRJ-1!V99 z$bkpJKi?$?KLbAo&wv(K0W;tbc>SG%@GJ0D@Ht?EA~*r=27kCq5MBmf2hV~ocmg~Q zR>2u?3W(s}?+}FN!PCG7XFwk0z zflmVooCPKDVeme17q}A~0s?sD2y6yE587ZATm&BicYrqzLuc@7@ErIocpCWNqhJP1 zgZsfBvAOaK@G|%o*Z>;nfb-x1a0DC%f5$j~7kmYL8QcIBAcDsL`N1P#)WLAHcw6xe zPZR|Di;kwlm97u-18k1A4*GZ8;YyRuIK1xCo`X!IH!1gL+P<4tK}PfBAX2# zQx%spyb^*JJ{moni{iOrqr6(Yv_B!zhVH2vB#o|7-Sm27s zmi?|h-cSqWVqLNQ|aFU6lhL4?W!1P47|J z!@5PwOE6QYsX`%Is9Xj^GkSno?cn#Nk2M-BXa_%;kEN+?IZR=$%~idvt5H+&%!$^! zZ4)F=W4B2)(q6e-u0JLEQ;duftdfaIJ?AJUW_z_J&((|7v!Uha#yt$qs^zF0u6&+St{mACb6p?O$`YI(kb*c^0zZ~dS1Tio&8 z{4>8J8^T^0B+xU zE{qg(T40j}z!bwmHi;!yLyNl0Y{%+2N;l6~rOiysn_@2K?6l^2wpb`^Y;5E^rk}T* zP601Qa}$~sX7kk0CCg{7X8A^oY05fB2vWJe&Rd8ss%7`$2z0Kx!p?D%JBopc9JY?xgHwUNH16{bx-VI64;{f@mT$HcdS;4o4CLSeb}}}5WaBBA zhkA@o;2GRVtwBQ9jc?q+{0h8-M$FZqSF<-t^EP$NjXEZhItcAlFbzyXvN7ih7^kk) z(%V5h)K&>z;^-aCV<)C(9%F17wHPWVr`dBg-3f*YagW}kXE{dx=)xg8(ARI~RjXTo z=eAnC_+5LUFey;|UqB5hq2{Fee=aKgHc{)hKo!h@N5CZb9qRqxg5LlId;r`;jsGc- z2d|=*|0%c%Jm7*0Km-qgf1#HD8~74f1M}cGp!)tt;5s-4?gek6R{s-t3A_M)2yOtX z=V!n_P^v3TKnhV7I+Rg;1r-*`~~QI6MO;mKo_imCxH&g zCUuY=sRdFCq!zeM3v5#Qu{}@0vx9PAGurr~EQ^k)hCqbwBJ8_^%{00=c#Qs{WB3f6 zji1hQtiVW+)}iR94lt+%Fc7`Eq3v2mS4X9DxZTLgS-&&G9W zW_y=HH&ZoimQK?6vNMSRp6-t#s-Rc_`W*J1a8hiYI&^2?<#`*s@t$F3Mi_dysnG)H zEFFmk+nEV=%${6vVXaipB@u$4-1gZ}d9}#OjD_Ai zaJ8^cP<~uzuuO&Jo?;-lp?fIgl)tdj6Dg0X$ z2ivh(cKv#=CXT)_+}-Xkq$8APp$4HFz~dlzgMSdkEUZc2J;lpvv_DBjZMb1f0Xy7a zpQ7RwF+AEIK{%&psSL)}LTuDf4%N^!?x*FbF;buaYwH>P)Tnu() z9p0gBgI=KV#OXwaG8=3#hugMzMLqPc#LR9Z;4MpydS>F7D^j59Z#4}^DoWiFOHvTp z5d(rrK5*Mau;=K2}StG=($`n_B0sH;iAH?9lZura8UK`t8K5v?wvQW&290>23RW&i*H literal 0 HcmV?d00001 diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index f563b02c..8ad138d2 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -17,6 +17,7 @@ */ #include "solar.h" +#include "emsesp.h" namespace emsesp { @@ -41,6 +42,12 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const s register_telegram_type(0x0364, F("SM100Status"), false, [&](std::shared_ptr t) { process_SM100Status(t); }); register_telegram_type(0x036A, F("SM100Status2"), false, [&](std::shared_ptr t) { process_SM100Status2(t); }); register_telegram_type(0x038E, F("SM100Energy"), true, [&](std::shared_ptr t) { process_SM100Energy(t); }); + register_telegram_type(0x035A, F("SM100Tank1MaxTemp"), false, [&](std::shared_ptr t) { process_SM100Tank1MaxTemp(t); }); +// EMSESP::send_read_request(0x035A, device_id); + // This is a hack right now, need to update TXService to support sending F9 packets + uint8_t msg[]="8B B0 F9 00 11 FF 02 5A 03 00"; + msg[sizeof(msg)-2] = EMSESP::rxservice_.calculate_crc(msg, sizeof(msg)-2); + EMSESP::send_raw_telegram((const char*)msg); } if (flags == EMSdevice::EMS_DEVICE_FLAG_ISM) { @@ -51,6 +58,13 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const s // context submenu void Solar::add_context_menu() { + EMSESPShell::commands->add_command(ShellContext::MAIN, + CommandFlags::USER, + flash_string_vector{F_(solar)}, + [&](Shell & shell, const std::vector & arguments __attribute__((unused))) { + Solar::console_commands(shell, ShellContext::SOLAR); +// add_context_commands(ShellContext::SOLAR); + }); } // print to web @@ -58,6 +72,7 @@ void Solar::device_info_web(JsonArray & root) { render_value_json(root, "", F("Collector temperature (TS1)"), collectorTemp_, F_(degrees), 10); render_value_json(root, "", F("Tank bottom temperature (TS2)"), tankBottomTemp_, F_(degrees), 10); render_value_json(root, "", F("Tank bottom temperature (TS5)"), tankBottomTemp2_, F_(degrees), 10); + render_value_json(root, "", F("Tank maximum temperature"), tank1MaxTempCurrent_, F_(degrees), 0); render_value_json(root, "", F("Heat exchanger temperature (TS6)"), heatExchangerTemp_, F_(degrees), 10); render_value_json(root, "", F("Solar pump modulation (PS1)"), solarPumpModulation_, F_(percent)); render_value_json(root, "", F("Cylinder pump modulation (PS5)"), cylinderPumpModulation_, F_(percent)); @@ -88,6 +103,7 @@ void Solar::show_values(uuid::console::Shell & shell) { print_value(shell, 2, F("Collector temperature (TS1)"), collectorTemp_, F_(degrees), 10); print_value(shell, 2, F("Bottom temperature (TS2)"), tankBottomTemp_, F_(degrees), 10); print_value(shell, 2, F("Bottom temperature (TS5)"), tankBottomTemp2_, F_(degrees), 10); + print_value(shell, 2, F("Tank Maximum temperature"), tank1MaxTempCurrent_, F_(degrees), 0); print_value(shell, 2, F("Heat exchanger temperature (TS6)"), heatExchangerTemp_, F_(degrees), 10); print_value(shell, 2, F("Solar pump modulation (PS1)"), solarPumpModulation_, F_(percent)); print_value(shell, 2, F("Cylinder pump modulation (PS5)"), cylinderPumpModulation_, F_(percent)); @@ -124,6 +140,10 @@ void Solar::publish_values() { doc["tankBottomTemp2"] = (float)tankBottomTemp2_ / 10; } + if (Helpers::hasValue(tank1MaxTempCurrent_)) { + doc["tankMaximumTemp"] = tank1MaxTempCurrent_; + } + if (Helpers::hasValue(heatExchangerTemp_)) { doc["heatExchangerTemp"] = (float)heatExchangerTemp_ / 10; } @@ -184,7 +204,19 @@ bool Solar::updated_values() { } // add console commands -void Solar::console_commands() { +void Solar::console_commands(Shell & shell, unsigned int context) { + EMSESPShell::commands->add_command(ShellContext::SOLAR, + CommandFlags::USER, + flash_string_vector{F_(read)}, + [](Shell & shell __attribute__((unused)), const std::vector & arguments __attribute__((unused))) + { + uint8_t msg[]="8B B0 F9 00 11 FF 02 5A 03 00"; + msg[sizeof(msg)-2] = EMSESP::rxservice_.calculate_crc(msg, sizeof(msg)-2); + EMSESP::send_raw_telegram((const char*)msg); + }); + + // enter the context + Console::enter_custom_context(shell, context); } // SM10Monitor - type 0x97 @@ -196,6 +228,29 @@ void Solar::process_SM10Monitor(std::shared_ptr telegram) { changed_ |= telegram->read_value(pumpWorkMin_, 8); } +/* + * process_SM100Tank1MaxTemp - type 0x035A EMS+ - for MS/SM100 and MS/SM200 + * e.g. B0 10 F9 00 FF 02 5A 03 17 00 00 00 14 00 00 00 3C 00 00 00 5A 00 00 00 59 29 - requested with 90 B0 F9 00 11 FF 02 5A 03 AF + * bytes 0-1 = packet format designator + * bytes 2..5 = minimum value + * bytes 6..9 = default value + * bytes 10..13 = maximum value + * bytes 14..17 = current value + * e.g, FD 3F - requested with 90 B0 F7 00 FF FF 02 5A B0 + */ +void Solar::process_SM100Tank1MaxTemp(std::shared_ptr telegram) { + int16_t designator; + telegram->read_value(designator, 0); + LOG_DEBUG(F("SM100Tank1MaxTemp designator 0x%02X"), designator); + if(designator==0x0317) // The telegram has the right form + { + changed_ |= telegram->read_value(tank1MaxTempMinimum_, 2); + changed_ |= telegram->read_value(tank1MaxTempDefault_, 6); + changed_ |= telegram->read_value(tank1MaxTempMaximum_, 10); + changed_ |= telegram->read_value(tank1MaxTempCurrent_, 14); + } +} + /* * SM100Monitor - type 0x0362 EMS+ - for MS/SM100 and MS/SM200 * e.g. B0 0B FF 00 02 62 00 77 01 D4 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 00 F9 80 00 80 9E - for heat exchanger temp diff --git a/src/devices/solar.h b/src/devices/solar.h index 248cd71e..89209dd0 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -44,8 +44,12 @@ class Solar : public EMSdevice { private: static uuid::log::Logger logger_; - void console_commands(); + void console_commands(Shell & shell, unsigned int context); + uint32_t tank1MaxTempMinimum_ = EMS_VALUE_ULONG_NOTSET; // Min value for max tank temp + uint32_t tank1MaxTempDefault_ = EMS_VALUE_ULONG_NOTSET; // Default value for max tank temp + uint32_t tank1MaxTempMaximum_ = EMS_VALUE_ULONG_NOTSET; // Max value for max tank temp + uint32_t tank1MaxTempCurrent_ = EMS_VALUE_ULONG_NOTSET; // Current value for max tank temp int16_t collectorTemp_ = EMS_VALUE_SHORT_NOTSET; // TS1: Temperature sensor for collector array 1 int16_t tankBottomTemp_ = EMS_VALUE_SHORT_NOTSET; // TS2: Temperature sensor 1 cylinder, bottom (solar thermal system) int16_t tankBottomTemp2_ = EMS_VALUE_SHORT_NOTSET; // TS5: Temperature sensor 2 cylinder, bottom, or swimming pool (solar thermal system) @@ -68,6 +72,7 @@ class Solar : public EMSdevice { bool changed_ = false; void process_SM10Monitor(std::shared_ptr telegram); + void process_SM100Tank1MaxTemp(std::shared_ptr telegram); void process_SM100Monitor(std::shared_ptr telegram); void process_SM100Monitor2(std::shared_ptr telegram); From a6439f83702b9e2cb970e16e10a26a73071adc97 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 31 Oct 2020 17:37:22 +0100 Subject: [PATCH 002/225] 2.1.1b --- CHANGELOG.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/version.h | 2 +- 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 260ead5e..10628b88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,57 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.1.0] October 31 2020 + +### Added +- boiler `heatingactivated`, automatic select parameter telegrams for write +- boiler `wWType` parameter, in Console and MQTT +- support for uploading compressed firmware binaries in web UI +- setting to manually override the MQTT retain flag +- New API via HTTP REST API to read and set values. See https://emsesp.github.io/docs/#/API +- `show commands` command +- exporting of system settings using the `system info` command in Web and Console. Added link into the Web's Settings page. +- setting to change how booleans are rendered in MQTT (on/off, true/false, 1/0) +- enable ADC setting, add boiler circulation commands, add thermostat RC300 summermodes +- Added all device info to web UI for Thermostat and Boiler +- Added all device values to Home Assistant MQTT Discovery under separate devices and entities +- Show Rx and Tx quality in Console and Web UI +- Added button and tooltip to EMS Devices in Web +- wwtemp and wwtemplow to MQTT, Console and Web +- summer, winter modes for the CW400 thermostat +- new command under system called `report`. http://ems-esp/api?device=system&cmd=report to generate a report log for troubleshooting +- thermostat error codes +- Console command `publish ha` to also force the creation of the Home Assistant MQTT Discovery topics +- Heat pump values (dew temperature and relative air humidity) +- Console up key to repeat last command +- added RC300 floordrying, building, damped temperature + +### Fixed +- fix wwontime readback +- fixed support for RC300 via MQTT commands (#505) +- Some minor optimizations to memory handling in the MQTT service +- Prevent MQTT from publishing empty json payloads +- Accurate detection of warm water and heating (#515) +- Fix writing to the Junkers FR120 thermostat +- support for changing summermode +- added missing `heatingtype` to thermostat data +- handle incomming ems+ read requests, ignore F7 telegrams with 3byte-id +- fix month for setting clock from NTP + +### Changed +- renamed wWCircPumpType to wWChargeType +- Installation and Configuration notes moved to the official EMS-ESP documentation site +- `call` commands can be done from the Console root for all devices +- Updated EMS-ESP official documentation (https://emsesp.github.io/docs/#/) +- JWT Secret renamed to Super User Password +- EMS Devices in Web UI shows button and tooltip to remind users they can click on a device +- MQTT topic name changes (see doc) +- Mixing renamed to Mixer + +### Removed +- Console contexts for thermostat and boiler +- Removed option to enable/disable the MQTT Heartbeat. It's always on. + ## [2.0.1] September 13 2020 ### Added diff --git a/src/version.h b/src/version.h index b892a39c..96602d1d 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.0b13" +#define EMSESP_APP_VERSION "2.1.1b0" From 4019ada7eca791f698389b109fb9ea7134eb215e Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 31 Oct 2020 17:38:19 +0100 Subject: [PATCH 003/225] 2.1.1b0 --- CHANGELOG_LATEST.md | 42 +----------------------------------------- 1 file changed, 1 insertion(+), 41 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index aaa46ae5..14fab265 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -1,51 +1,11 @@ # Changelog ### Added -- boiler `heatingactivated`, automatic select parameter telegrams for write -- boiler `wWType` parameter, in Console and MQTT -- support for uploading compressed firmware binaries in web UI -- setting to manually override the MQTT retain flag -- New API via HTTP REST API to read and set values. See https://emsesp.github.io/docs/#/API -- `show commands` command -- exporting of system settings using the `system info` command in Web and Console. Added link into the Web's Settings page. -- setting to change how booleans are rendered in MQTT (on/off, true/false, 1/0) -- enable ADC setting, add boiler circulation commands, add thermostat RC300 summermodes -- Added all device info to web UI for Thermostat and Boiler -- Added all device values to Home Assistant MQTT Discovery under separate devices and entities -- Show Rx and Tx quality in Console and Web UI -- Added button and tooltip to EMS Devices in Web -- wwtemp and wwtemplow to MQTT, Console and Web -- summer, winter modes for the CW400 thermostat -- new command under system called `report`. http://ems-esp/api?device=system&cmd=report to generate a report log for troubleshooting -- thermostat error codes -- Console command `publish ha` to also force the creation of the Home Assistant MQTT Discovery topics -- Heat pump values (dew temperature and relative air humidity) -- Console up key to repeat last command -- added RC300 floordrying, building, damped temperature ### Fixed -- fix wwontime readback -- fixed support for RC300 via MQTT commands (#505) -- Some minor optimizations to memory handling in the MQTT service -- Prevent MQTT from publishing empty json payloads -- Accurate detection of warm water and heating (#515) -- Fix writing to the Junkers FR120 thermostat -- support for changing summermode -- added missing `heatingtype` to thermostat data -- handle incomming ems+ read requests, ignore F7 telegrams with 3byte-id -- fix month for setting clock from NTP ### Changed -- renamed wWCircPumpType to wWChargeType -- Installation and Configuration notes moved to the official EMS-ESP documentation site -- `call` commands can be done from the Console root for all devices -- Updated EMS-ESP official documentation (https://emsesp.github.io/docs/#/) -- JWT Secret renamed to Super User Password -- EMS Devices in Web UI shows button and tooltip to remind users they can click on a device -- MQTT topic name changes (see doc) -- Mixing renamed to Mixer ### Removed -- Console contexts for thermostat and boiler -- Removed option to enable/disable the MQTT Heartbeat. It's always on. + From 1d1290d36f245b62f53df167ec256ebe11feee0e Mon Sep 17 00:00:00 2001 From: hpanther Date: Sat, 31 Oct 2020 23:17:25 +0100 Subject: [PATCH 004/225] fix compile errors --- src/devices/solar.cpp | 22 +++++++++++++--------- src/emsdevice.h | 1 + src/locale_EN.h | 1 + 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 94081946..e09d3cce 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -17,7 +17,6 @@ */ #include "solar.h" -#include "emsesp.h" namespace emsesp { @@ -47,11 +46,15 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const s register_telegram_type(0x036A, F("SM100Status2"), false, [&](std::shared_ptr t) { process_SM100Status2(t); }); register_telegram_type(0x038E, F("SM100Energy"), true, [&](std::shared_ptr t) { process_SM100Energy(t); }); register_telegram_type(0x035A, F("SM100Tank1MaxTemp"), false, [&](std::shared_ptr t) { process_SM100Tank1MaxTemp(t); }); -// EMSESP::send_read_request(0x035A, device_id); - // This is a hack right now, need to update TXService to support sending F9 packets - uint8_t msg[]="8B B0 F9 00 11 FF 02 5A 03 00"; - msg[sizeof(msg)-2] = EMSESP::rxservice_.calculate_crc(msg, sizeof(msg)-2); - EMSESP::send_raw_telegram((const char*)msg); + } +// EMSESP::send_read_request(0x035A, device_id); + // This is a hack right now, need to update TXService to support sending F9 packets + //uint8_t msg[]="8B B0 F9 00 11 FF 02 5A 03 00"; + //msg[sizeof(msg)-2] = EMSESP::rxservice_.calculate_crc(msg, sizeof(msg)-2); + //EMSESP::send_raw_telegram((const char*)msg); + + uint8_t msg[]={0x11, 0xFF, 0x02, 0x5A, 0x03}; + EMSdevice::write_command(EMS_TYPE_RegRead, 0x00, msg, sizeof(msg), EMS_TYPE_RegRead); } if (flags == EMSdevice::EMS_DEVICE_FLAG_ISM) { @@ -72,7 +75,7 @@ void Solar::device_info_web(JsonArray & root) { print_value_json(root, F("collectorTemp"), nullptr, F_(collectorTemp), F_(degrees), json); print_value_json(root, F("tankBottomTemp"), nullptr, F_(tankBottomTemp), F_(degrees), json); print_value_json(root, F("tankBottomTemp2"), nullptr, F_(tankBottomTemp2), F_(degrees), json); - print_value_json(root, F("tank1MaxTemp"), nullptr, F_(tank1MaxTempCurrent_*10), F_(degrees), json); + print_value_json(root, F("tank1MaxTemp"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); print_value_json(root, F("heatExchangerTemp"), nullptr, F_(heatExchangerTemp), F_(degrees), json); print_value_json(root, F("solarPumpModulation"), nullptr, F_(solarPumpModulation), F_(percent), json); print_value_json(root, F("cylinderPumpModulation"), nullptr, F_(cylinderPumpModulation), F_(percent), json); @@ -107,7 +110,7 @@ void Solar::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("collectorTemp"), nullptr, F_(collectorTemp), F_(degrees), json); print_value_json(shell, F("tankBottomTemp"), nullptr, F_(tankBottomTemp), F_(degrees), json); print_value_json(shell, F("tankBottomTemp2"), nullptr, F_(tankBottomTemp2), F_(degrees), json); - print_value_json(shell, F("tank1MaxTemp"), nullptr, F_(tank1MaxTempCurrent_*10), F_(degrees), json); + print_value_json(shell, F("tank1MaxTemp"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); print_value_json(shell, F("heatExchangerTemp"), nullptr, F_(heatExchangerTemp), F_(degrees), json); print_value_json(shell, F("solarPumpModulation"), nullptr, F_(solarPumpModulation), F_(percent), json); print_value_json(shell, F("cylinderPumpModulation"), nullptr, F_(cylinderPumpModulation), F_(percent), json); @@ -179,6 +182,7 @@ void Solar::register_mqtt_ha_config(bool force) { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(collectorTemp), this->device_type(), "collectorTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp), this->device_type(), "tankBottomTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp2), this->device_type(), "tankBottomTemp2", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tank1MaxTempCurrent), this->device_type(), "tank1MaxTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatExchangerTemp), this->device_type(), "heatExchangerTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPumpModulation), this->device_type(), "solarPumpModulation", F_(percent), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(cylinderPumpModulation), this->device_type(), "cylinderPumpModulation", F_(percent), nullptr); @@ -212,7 +216,7 @@ bool Solar::export_values(JsonObject & json) { } if (Helpers::hasValue(tank1MaxTempCurrent_)) { - doc["tankMaximumTemp"] = tank1MaxTempCurrent_; + json["tankMaximumTemp"] = tank1MaxTempCurrent_; } if (Helpers::hasValue(heatExchangerTemp_)) { diff --git a/src/emsdevice.h b/src/emsdevice.h index 056a2237..6ec60d1d 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -241,6 +241,7 @@ class EMSdevice { // type IDs static constexpr uint16_t EMS_TYPE_VERSION = 0x02; // type ID for Version information. Generic across all EMS devices. static constexpr uint16_t EMS_TYPE_UBADevices = 0x07; // EMS connected devices + static constexpr uint16_t EMS_TYPE_RegRead = 0xF9; // EMS register read // device flags: The lower 4 bits hold the unique identifier, the upper 4 bits are used for specific flags static constexpr uint8_t EMS_DEVICE_FLAG_NONE = 0; diff --git a/src/locale_EN.h b/src/locale_EN.h index 61eafe6e..df1dd212 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -206,6 +206,7 @@ MAKE_PSTR(UBAuptime, "Boiler total uptime") MAKE_PSTR(collectorTemp, "Collector temperature (TS1)") MAKE_PSTR(tankBottomTemp, "Bottom temperature (TS2)") MAKE_PSTR(tankBottomTemp2, "Bottom temperature (TS5)") +MAKE_PSTR(tank1MaxTempCurrent, "Maximum Tank temperature") MAKE_PSTR(heatExchangerTemp, "Heat exchanger temperature (TS6)") MAKE_PSTR(solarPumpModulation, "Solar pump modulation (PS1)") MAKE_PSTR(cylinderPumpModulation, "Cylinder pump modulation (PS5)") From cb228d8c8b58e3c583d7f84d3c5b2218e51fe3bf Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 1 Nov 2020 14:22:57 +0100 Subject: [PATCH 005/225] shell line edit: cursor, pos1, end, del, F1.. --- CHANGELOG_LATEST.md | 1 + lib/uuid-console/src/shell.cpp | 177 +++++++++++++++++----------- lib/uuid-console/src/uuid/console.h | 4 +- 3 files changed, 111 insertions(+), 71 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 14fab265..77d09e2a 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -1,6 +1,7 @@ # Changelog ### Added +- function keys in editor: cursor, del, pos1, end. F1=help, F2=show, F10=report ### Fixed diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index ddc03d82..e68af84c 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -65,8 +65,8 @@ void Shell::start() { #endif line_buffer_.reserve(maximum_command_line_length_); - oldline_.reserve(maximum_command_line_length_); - oldline_.clear(); + line_old_.reserve(maximum_command_line_length_); + line_old_.clear(); display_banner(); display_prompt(); shells_.insert(shared_from_this()); @@ -148,8 +148,7 @@ void Shell::loop_normal() { // Interrupt (^C) line_buffer_.clear(); println(); - prompt_displayed_ = false; - display_prompt(); + cursor_ = 0; break; case '\x04': @@ -160,51 +159,38 @@ void Shell::loop_normal() { break; case '\x08': - case '\x7F': // Backspace (^H) - // Delete (^?) - if (!line_buffer_.empty()) { - erase_characters(1); - line_buffer_.pop_back(); + case '\x7F': + // Del/Backspace (^?) + if (line_buffer_.length() > cursor_) { + line_buffer_.erase(line_buffer_.length() - cursor_ - 1, 1); } break; case '\x09': // Tab (^I) process_completion(); + cursor_ = 0; break; case '\x0A': // Line feed (^J) if (previous_ != '\x0D') { - if (!line_buffer_.empty()) { - oldline_ = line_buffer_; - } process_command(); } break; - case '\x0C': - // New page (^L) - erase_current_line(); - prompt_displayed_ = false; - display_prompt(); - break; - case '\x0D': - if (!line_buffer_.empty()) { - oldline_ = line_buffer_; - } // Carriage return (^M) process_command(); break; + case '\x0C': + // New page (^L) case '\x15': // Delete line (^U) - erase_current_line(); - prompt_displayed_ = false; line_buffer_.clear(); - display_prompt(); + cursor_ = 0; break; case '\x17': @@ -212,51 +198,91 @@ void Shell::loop_normal() { delete_buffer_word(true); break; + case '\033': + // esc + esc_ = 0x80; + break; + default: - if (c >= '\x20' && c <= '\x7E') { + if (esc_) { + if (c == '[') { + // start of sequence + } else if (c >= '0' && (c <= '9')) { + // numbers + esc_ = (esc_ & 0x7F) * 10 + c - '0'; + } else if (c == 'A') { + // cursor up + line_buffer_ = line_old_; + cursor_ = 0; + esc_ = 0; + } else if (c == 'B') { + // cursor down + line_buffer_.clear(); + cursor_ = 0; + esc_ = 0; + } else if (c == 'C') { + // cursor right + if (cursor_) { + cursor_--; + } + esc_ = 0; + } else if (c == 'D') { + // cursor left + if (cursor_ < line_buffer_.length()) { + cursor_++; + } + esc_ = 0; + } else if (c == '~') { + // function keys with number + if ((esc_ == 3) && cursor_) { + // del + cursor_--; + line_buffer_.erase(line_buffer_.length() - cursor_ - 1, 1); + } else if (esc_ == 4) { + // end + cursor_ = 0; + } else if (esc_ == 1) { + // pos1 + cursor_ = line_buffer_.length(); + } else if (esc_ == 11) { + // F1 and F10 + line_buffer_ = "help"; + process_command(); + } else if (esc_ == 12) { + // F2 + line_buffer_ = "show"; + process_command(); + } else if (esc_ == 20) { + // F9 + line_buffer_ = "send telegram \"0B \""; + cursor_ = 1; + } else if (esc_ == 21) { + // F10 + line_buffer_ = "call system report"; + process_command(); + } + esc_ = 0; + } else { + // all other chars end sequence + esc_ = 0; + } + } else if (c >= '\x20' && c <= '\x7E') { // ASCII text if (line_buffer_.length() < maximum_command_line_length_) { - line_buffer_.push_back(c); - write((uint8_t)c); - } - // cursor up, get last command - if ((c == 'A') && (previous_ == '[')) { - erase_current_line(); - prompt_displayed_ = false; - line_buffer_ = oldline_; - display_prompt(); - } - // cursor back, delete cursor chars - if ((c == 'D') && (previous_ == '[')) { - line_buffer_.pop_back(); - line_buffer_.pop_back(); - // alternative work as backspace - // if (line_buffer_.length() > 0) { - // line_buffer_.pop_back(); - // } - erase_current_line(); - prompt_displayed_ = false; - display_prompt(); - } - // cursor forward, only delete cursor chars - if ((c == 'C') && (previous_ == '[')) { - line_buffer_.pop_back(); - line_buffer_.pop_back(); - erase_current_line(); - prompt_displayed_ = false; - display_prompt(); - } - // cursor down(B): Delete line - if ((c == 'B') && (previous_ == '[')) { - erase_current_line(); - prompt_displayed_ = false; - line_buffer_.clear(); - display_prompt(); + line_buffer_.insert(line_buffer_.length() - cursor_, 1, c); } } break; } + // common for all, display the complete line + erase_current_line(); + prompt_displayed_ = false; + display_prompt(); + if (cursor_) { + printf(F("\033[%dD"), cursor_); + } + previous_ = c; // This is a hack to let TelnetStream know that command @@ -428,16 +454,24 @@ void Shell::delete_buffer_word(bool display) { if (pos == std::string::npos) { line_buffer_.clear(); - if (display) { - erase_current_line(); - prompt_displayed_ = false; - display_prompt(); - } + cursor_ = 0; } else { if (display) { - erase_characters(line_buffer_.length() - pos); + size_t pos1 = 0; + pos = 0; + while (pos1 < line_buffer_.length() - cursor_) { + pos = pos1; + pos1 = line_buffer_.find(' ', pos + 1); + } + line_buffer_.erase(pos, pos1 - pos); + if (line_buffer_.find(' ') == 0) { + line_buffer_.erase(0, 1); + } + cursor_ = line_buffer_.length() - pos; + } else { + line_buffer_.resize(pos); + cursor_ = 0; } - line_buffer_.resize(pos); } } @@ -453,7 +487,6 @@ void Shell::maximum_command_line_length(size_t length) { void Shell::process_command() { CommandLine command_line{line_buffer_}; - line_buffer_.clear(); println(); prompt_displayed_ = false; @@ -467,8 +500,12 @@ void Shell::process_command() { } else { println(F("No commands configured")); } + line_old_ = line_buffer_; } + cursor_ = 0; + line_buffer_.clear(); + if (running()) { display_prompt(); } diff --git a/lib/uuid-console/src/uuid/console.h b/lib/uuid-console/src/uuid/console.h index 5b65acb5..6918020c 100644 --- a/lib/uuid-console/src/uuid/console.h +++ b/lib/uuid-console/src/uuid/console.h @@ -903,9 +903,11 @@ class Shell : public std::enable_shared_from_this, public uuid::log::Hand std::list log_messages_; /*!< Queued log messages, in the order they were received. @since 0.1.0 */ size_t maximum_log_messages_ = MAX_LOG_MESSAGES; /*!< Maximum command line length in bytes. @since 0.6.0 */ std::string line_buffer_; /*!< Command line buffer. Limited to maximum_command_line_length() bytes. @since 0.1.0 */ + std::string line_old_; /*!< old Command line buffer.*/ size_t maximum_command_line_length_ = MAX_COMMAND_LINE_LENGTH; /*!< Maximum command line length in bytes. @since 0.6.0 */ unsigned char previous_ = 0; /*!< Previous character that was entered on the command line. Used to detect CRLF line endings. @since 0.1.0 */ - std::string oldline_; /*!< old Command line buffer.*/ + uint8_t cursor_ = 0; /*!< cursor position from end of line */ + uint8_t esc_ = 0; /*!< esc sequence running */ Mode mode_ = Mode::NORMAL; /*!< Current execution mode. @since 0.1.0 */ std::unique_ptr mode_data_ = nullptr; /*!< Data associated with the current execution mode. @since 0.1.0 */ bool stopped_ = false; /*!< Indicates that the shell has been stopped. @since 0.1.0 */ From de0e291b786e29ebdd18db270dd59c137ced1012 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 1 Nov 2020 15:35:49 +0100 Subject: [PATCH 006/225] F-commands to flash and display them --- lib/uuid-console/src/shell.cpp | 19 ++++++++++++------- lib/uuid-console/src/uuid/console.h | 1 + src/emsesp.cpp | 2 +- src/system.cpp | 4 ++-- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index e68af84c..d57c004f 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -133,6 +133,14 @@ void Shell::loop_one() { } } +void Shell::set_command_str(const __FlashStringHelper * str) { + line_buffer_ = read_flash_string(str); + erase_current_line(); + prompt_displayed_ = false; + display_prompt(); + process_command(); +} + void Shell::loop_normal() { const int input = read_one_char(); @@ -246,20 +254,17 @@ void Shell::loop_normal() { cursor_ = line_buffer_.length(); } else if (esc_ == 11) { // F1 and F10 - line_buffer_ = "help"; - process_command(); + set_command_str(F("help")); } else if (esc_ == 12) { // F2 - line_buffer_ = "show"; - process_command(); + set_command_str(F("show")); } else if (esc_ == 20) { // F9 - line_buffer_ = "send telegram \"0B \""; + line_buffer_ = read_flash_string(F("send telegram \"0B \"")); cursor_ = 1; } else if (esc_ == 21) { // F10 - line_buffer_ = "call system report"; - process_command(); + set_command_str(F("call system report")); } esc_ = 0; } else { diff --git a/lib/uuid-console/src/uuid/console.h b/lib/uuid-console/src/uuid/console.h index 6918020c..c1b1027d 100644 --- a/lib/uuid-console/src/uuid/console.h +++ b/lib/uuid-console/src/uuid/console.h @@ -892,6 +892,7 @@ class Shell : public std::enable_shared_from_this, public uuid::log::Hand * @since 0.1.0 */ size_t vprintf(const __FlashStringHelper * format, va_list ap); + void set_command_str(const __FlashStringHelper * str); static const uuid::log::Logger logger_; /*!< uuid::log::Logger instance for shells. @since 0.1.0 */ static std::set> shells_; /*!< Registered running shells to be executed. @since 0.1.0 */ diff --git a/src/emsesp.cpp b/src/emsesp.cpp index f439ce1a..91b30df7 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -917,7 +917,7 @@ void EMSESP::start() { emsdevices.reserve(5); // reserve space for initially 5 devices to avoid mem - LOG_INFO("EMS Device library loaded with %d records", device_library_.size()); + LOG_INFO(F("EMS Device library loaded with %d records"), device_library_.size()); #if defined(EMSESP_STANDALONE) mqtt_.on_connect(); // simulate an MQTT connection diff --git a/src/system.cpp b/src/system.cpp index dff32036..2a858b7c 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -61,7 +61,7 @@ bool System::command_send(const char * value, const int8_t id) { // restart EMS-ESP void System::restart() { - LOG_NOTICE("Restarting system..."); + LOG_NOTICE(F("Restarting system...")); Shell::loop_all(); delay(1000); // wait a second #if defined(ESP8266) @@ -73,7 +73,7 @@ void System::restart() { // saves all settings void System::wifi_reconnect() { - LOG_NOTICE("The wifi will reconnect..."); + LOG_NOTICE(F("The wifi will reconnect...")); Shell::loop_all(); delay(1000); // wait a second EMSESP::webSettingsService.save(); // local settings From a15efa4f53b4c0a4c4583dd2505ad13cb7438ec3 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 2 Nov 2020 11:34:56 +0100 Subject: [PATCH 007/225] move some strings to flash --- src/devices/boiler.cpp | 2 +- src/devices/thermostat.cpp | 26 +++++++++++++------------- src/devices/thermostat.h | 2 +- src/helpers.cpp | 16 +++++++++------- src/helpers.h | 4 ++-- 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index af803712..3cb34e0c 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1202,7 +1202,7 @@ bool Boiler::set_pump_delay(const char * value, const int8_t id) { // on a RC35 it's by EMSESP::send_write_request(0x37, 0x10, 2, &set, 1, 0); (set is 1,2,3) 1=hot, 2=eco, 3=intelligent bool Boiler::set_warmwater_mode(const char * value, const int8_t id) { uint8_t set; - if (!Helpers::value2enum(value, set, {"hot", "eco", "intelligent"})) { + if (!Helpers::value2enum(value, set, {F("hot"), F("eco"), F("intelligent")})) { LOG_WARNING(F("Set boiler warm water mode: Invalid value")); return false; } diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 804a8209..184da790 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -419,7 +419,7 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { // Floordry if (Helpers::hasValue(floordrystatus_) && Helpers::hasValue(floordrytemp_) && (floordrytemp_ > 0)) { char s[10]; - rootThermostat["floordry"] = Helpers::render_enum(s, {"off", "start", "heat", "hold", "cool", "end"}, floordrystatus_); + rootThermostat["floordry"] = Helpers::render_enum(s, {F("off"), F("start"), F("heat"), F("hold"), F("cool"), F("end")}, floordrystatus_); rootThermostat["floordrytemp"] = floordrytemp_; } @@ -447,9 +447,9 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { if (Helpers::hasValue(ibaBuildingType_)) { char s[10]; if (model == EMS_DEVICE_FLAG_RC300 || model == EMS_DEVICE_FLAG_RC100) { - rootThermostat["building"] = Helpers::render_enum(s, {"light", "medium", "heavy"}, ibaBuildingType_ - 1); + rootThermostat["building"] = Helpers::render_enum(s, {F("light"), F("medium"), F("heavy")}, ibaBuildingType_ - 1); } else { - rootThermostat["building"] = Helpers::render_enum(s, {"light", "medium", "heavy"}, ibaBuildingType_); + rootThermostat["building"] = Helpers::render_enum(s, {F("light"), F("medium"), F("heavy")}, ibaBuildingType_); } } @@ -457,9 +457,9 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { if (Helpers::hasValue(wwMode_)) { char s[10]; if (model == EMS_DEVICE_FLAG_RC300 || model == EMS_DEVICE_FLAG_RC100) { - rootThermostat["wwmode"] = Helpers::render_enum(s, {"off", "low", "high", "auto", "own_prog"}, wwMode_); + rootThermostat["wwmode"] = Helpers::render_enum(s, {F("off"), F("low"), F("high"), F("auto"), F("own_prog")}, wwMode_); } else { - rootThermostat["wwmode"] = Helpers::render_enum(s, {"off", "on", "auto"}, wwMode_); + rootThermostat["wwmode"] = Helpers::render_enum(s, {F("off"), F("on"), F("auto")}, wwMode_); } } @@ -476,7 +476,7 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { // Warm Water circulation mode if (Helpers::hasValue(wwCircMode_)) { char s[7]; - rootThermostat["wwcircmode"] = Helpers::render_enum(s, {"off", "on", "auto"}, wwCircMode_); + rootThermostat["wwcircmode"] = Helpers::render_enum(s, {F("off"), F("on"), F("auto")}, wwCircMode_); } return (rootThermostat.size()); @@ -608,7 +608,7 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // Summer mode if (Helpers::hasValue(hc->summer_setmode)) { char s[7]; - dataThermostat["summermode"] = Helpers::render_enum(s, {"summer", "auto", "winter"}, hc->summer_setmode); + dataThermostat["summermode"] = Helpers::render_enum(s, {F("summer"), F("auto"), F("winter")}, hc->summer_setmode); } // mode - always force showing this when in HA so not to break HA's climate component @@ -1514,7 +1514,7 @@ bool Thermostat::set_remotetemp(const char * value, const int8_t id) { // 0xA5 - Set the building settings bool Thermostat::set_building(const char * value, const int8_t id) { uint8_t bd = 0; - if (!Helpers::value2enum(value, bd, {"light", "medium", "heavy"})) { + if (!Helpers::value2enum(value, bd, {F("light"), F("medium"), F("heavy")})) { LOG_WARNING(F("Set building: Invalid value")); return false; } @@ -1533,7 +1533,7 @@ bool Thermostat::set_building(const char * value, const int8_t id) { // 0xA5 Set the language settings bool Thermostat::set_language(const char * value, const int8_t id) { uint8_t lg = 0; - if (!Helpers::value2enum(value, lg, {"german", "dutch", "french", "italian"})) { + if (!Helpers::value2enum(value, lg, {F("german"), F("dutch"), F("french"), F("italian")})) { LOG_WARNING(F("Set language: Invalid value")); return false; } @@ -1586,14 +1586,14 @@ bool Thermostat::set_roominfluence(const char * value, const int8_t id) { bool Thermostat::set_wwmode(const char * value, const int8_t id) { uint8_t set = 0xFF; if ((this->model() == EMS_DEVICE_FLAG_RC300) || (this->model() == EMS_DEVICE_FLAG_RC100)) { - if (!Helpers::value2enum(value, set, {"off", "low", "high", "auto", "own"})) { + if (!Helpers::value2enum(value, set, {F("off"), F("low"), F("high"), F("auto"), F("own")})) { LOG_WARNING(F("Set warm water mode: Invalid mode")); return false; } LOG_INFO(F("Setting warm water mode to %s"), value); write_command(0x02F5, 2, set, 0x02F5); } else { - if (!Helpers::value2enum(value, set, {"off", "on", "auto"})) { + if (!Helpers::value2enum(value, set, {F("off"), F("on"), F("auto")})) { LOG_WARNING(F("Set warm water mode: Invalid mode")); return false; } @@ -1631,7 +1631,7 @@ bool Thermostat::set_wwtemplow(const char * value, const int8_t id) { // sets the thermostat ww circulation working mode, where mode is a string bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set = 0xFF; - if (!Helpers::value2enum(value, set, {"off", "on", "auto"})) { + if (!Helpers::value2enum(value, set, {F("off"), F("on"), F("auto")})) { LOG_WARNING(F("Set warm water circulation mode: Invalid mode")); return false; } @@ -1909,7 +1909,7 @@ bool Thermostat::set_summermode(const char * value, const int8_t id) { return false; } uint8_t set = 0xFF; - if (!Helpers::value2enum(value, set, {"summer", "auto", "winter"})) { + if (!Helpers::value2enum(value, set, {F("summer"), F("auto"), F("winter")})) { LOG_WARNING(F("Setting summer mode: Invalid mode")); return false; } diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 486e49da..8e949ca6 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -133,7 +133,7 @@ class Thermostat : public EMSdevice { std::vector summer_typeids; std::string datetime_; // date and time stamp - std::string errorCode_; // code as string i.e. "A22(816)" + std::string errorCode_; // code from 0xA2 as string i.e. "A22(816)" bool changed_ = false; bool ha_registered_ = false; diff --git a/src/helpers.cpp b/src/helpers.cpp index 2dfe2732..328b69d7 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -136,19 +136,20 @@ char * Helpers::render_boolean(char * result, bool value) { } // depending on format render a number or a string -char * Helpers::render_enum(char * result, const std::vector & value, const uint8_t no) { +char * Helpers::render_enum(char * result, const std::vector value, const uint8_t no) { if (no >= value.size()) { return nullptr; // out of bounds } + std::string str = uuid::read_flash_string(value[no]); if (bool_format() == BOOL_FORMAT_ONOFF) { - strcpy(result, value[no].c_str()); + strcpy(result, str.c_str()); } else if (bool_format() == BOOL_FORMAT_TRUEFALSE) { - if (no == 0 && value[0] == "off") { + if (no == 0 && uuid::read_flash_string(value[0]) == "off") { strlcpy(result, "false", 7); - } else if (no == 1 && value[1] == "on") { + } else if (no == 1 && uuid::read_flash_string(value[1]) == "on") { strlcpy(result, "true", 6); } else { - strcpy(result, value[no].c_str()); + strcpy(result, str.c_str()); } } else { itoa(result, no); @@ -462,13 +463,14 @@ bool Helpers::value2bool(const char * v, bool & value) { } // checks to see if a string is member of a vector and return the index, also allow true/false for on/off -bool Helpers::value2enum(const char * v, uint8_t & value, const std::vector & strs) { +bool Helpers::value2enum(const char * v, uint8_t & value, const std::vector strs) { if ((v == nullptr) || (strlen(v) == 0)) { return false; } std::string str = toLower(v); for (value = 0; value < strs.size(); value++) { - if ((strs[value] == "off" && str == "false") || (strs[value] == "on" && str == "true") || (str == strs[value]) || (v[0] == '0' + value)) { + std::string str1 = uuid::read_flash_string(strs[value]); + if ((str1 == "off" && str == "false") || (str1 == "on" && str == "true") || (str == str1) || (v[0] == '0' + value)) { return true; } } diff --git a/src/helpers.h b/src/helpers.h index 80e4ec17..ce4cdd58 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -39,7 +39,7 @@ class Helpers { static char * render_value(char * result, const int16_t value, const uint8_t format); static char * render_value(char * result, const char * value, uint8_t format); static char * render_boolean(char * result, bool value); - static char * render_enum(char * result, const std::vector & value, const uint8_t no); + static char * render_enum(char * result, const std::vector value, const uint8_t no); static char * hextoa(char * result, const uint8_t value); static std::string data_to_hex(const uint8_t * data, const uint8_t length); @@ -62,7 +62,7 @@ class Helpers { static bool value2float(const char * v, float & value); static bool value2bool(const char * v, bool & value); static bool value2string(const char * v, std::string & value); - static bool value2enum(const char * v, uint8_t & value, const std::vector & strs); + static bool value2enum(const char * v, uint8_t & value, const std::vector strs); static void bool_format(uint8_t bool_format) { bool_format_ = bool_format; From df4f12cb961cb5c581200ccdd4abdd8107af5129 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 2 Nov 2020 18:52:24 +0100 Subject: [PATCH 008/225] add Linux telnet keys --- lib/uuid-console/src/shell.cpp | 22 +++++++++++++++++++--- src/helpers.cpp | 10 +++------- src/helpers.h | 1 + 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index d57c004f..7156bddf 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -213,7 +213,7 @@ void Shell::loop_normal() { default: if (esc_) { - if (c == '[') { + if ((c == '[') || (c == 'O')) { // start of sequence } else if (c >= '0' && (c <= '9')) { // numbers @@ -240,6 +240,22 @@ void Shell::loop_normal() { cursor_++; } esc_ = 0; + } else if (c == 'H') { + // Home + cursor_ = line_buffer_.length(); + esc_ = 0; + } else if (c == 'F') { + // End + cursor_ = 0; + esc_ = 0; + } else if (c == 'P') { + // F1 + set_command_str(F("help")); + esc_ = 0; + } else if (c == 'Q') { + // F2 + set_command_str(F("show")); + esc_ = 0; } else if (c == '~') { // function keys with number if ((esc_ == 3) && cursor_) { @@ -262,8 +278,8 @@ void Shell::loop_normal() { // F9 line_buffer_ = read_flash_string(F("send telegram \"0B \"")); cursor_ = 1; - } else if (esc_ == 21) { - // F10 + } else if (esc_ == 15) { + // F5 set_command_str(F("call system report")); } esc_ = 0; diff --git a/src/helpers.cpp b/src/helpers.cpp index 328b69d7..c6383140 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -140,18 +140,14 @@ char * Helpers::render_enum(char * result, const std::vector= value.size()) { return nullptr; // out of bounds } - std::string str = uuid::read_flash_string(value[no]); - if (bool_format() == BOOL_FORMAT_ONOFF) { - strcpy(result, str.c_str()); - } else if (bool_format() == BOOL_FORMAT_TRUEFALSE) { + strcpy(result, uuid::read_flash_string(value[no]).c_str()); + if (bool_format() == BOOL_FORMAT_TRUEFALSE) { if (no == 0 && uuid::read_flash_string(value[0]) == "off") { strlcpy(result, "false", 7); } else if (no == 1 && uuid::read_flash_string(value[1]) == "on") { strlcpy(result, "true", 6); - } else { - strcpy(result, str.c_str()); } - } else { + } else if (bool_format() == BOOL_FORMAT_NUMBERS) { itoa(result, no); } return result; diff --git a/src/helpers.h b/src/helpers.h index ce4cdd58..8573d579 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -26,6 +26,7 @@ #define BOOL_FORMAT_ONOFF 1 #define BOOL_FORMAT_TRUEFALSE 2 +#define BOOL_FORMAT_NUMBERS 3 namespace emsesp { From 824c40f8310e6da9076e6477b4e7b0fc763768ed Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 2 Nov 2020 21:32:47 +0100 Subject: [PATCH 009/225] remove mqtt qos text --- interface/src/mqtt/MqttSettingsForm.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/mqtt/MqttSettingsForm.tsx b/interface/src/mqtt/MqttSettingsForm.tsx index 21ab9192..4dcf9728 100644 --- a/interface/src/mqtt/MqttSettingsForm.tsx +++ b/interface/src/mqtt/MqttSettingsForm.tsx @@ -124,9 +124,9 @@ class MqttSettingsForm extends React.Component { variant="outlined" onChange={handleValueChange('mqtt_qos')} margin="normal"> - 0 - At most once - 1 - At least once - 2 - Exactly once + 0 + 1 + 2 Date: Mon, 2 Nov 2020 22:50:50 +0100 Subject: [PATCH 010/225] new icons --- interface/src/project/ProjectMenu.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/src/project/ProjectMenu.tsx b/interface/src/project/ProjectMenu.tsx index 03a29279..7adc934b 100644 --- a/interface/src/project/ProjectMenu.tsx +++ b/interface/src/project/ProjectMenu.tsx @@ -3,8 +3,8 @@ import { Link, withRouter, RouteComponentProps } from "react-router-dom"; import { List, ListItem, ListItemIcon, ListItemText } from "@material-ui/core"; -import SettingsIcon from '@material-ui/icons/Settings'; -import SettingsRemoteIcon from "@material-ui/icons/SettingsRemote"; +import TuneIcon from '@material-ui/icons/Tune'; +import DashboardIcon from "@material-ui/icons/Dashboard"; import { withAuthenticatedContext, AuthenticatedContextProps } from '../authentication'; @@ -18,13 +18,13 @@ class ProjectMenu extends Component { - + - + From 737f450173803c4164bf994ce097e7a2159ea36a Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 2 Nov 2020 23:14:55 +0100 Subject: [PATCH 011/225] minor attempts to reduce mem frag --- src/mqtt.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 2bd54347..bc137d35 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -486,7 +486,7 @@ void Mqtt::on_connect() { // homeassistant/sensor/ems-esp/status/config // all the values from the heartbeat payload will be added as attributes to the entity state void Mqtt::ha_status() { - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F("EMS-ESP status"); doc["uniq_id"] = F("status"); @@ -697,7 +697,9 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } - StaticJsonDocument doc; + return; // TODO + + StaticJsonDocument doc; doc["name"] = name; doc["uniq_id"] = entity; @@ -729,9 +731,9 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons snprintf_P(topic, sizeof(topic), PSTR("homeassistant/binary_sensor/ems-esp/%s/config"), entity); // convert json to string and publish immediately with retain forced to true - std::string payload_text; + char payload_text[300]; serializeJson(doc, payload_text); // convert json to string - uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text.c_str(), payload_text.size()); + uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); #if defined(EMSESP_STANDALONE) LOG_DEBUG(F("Publishing topic %s"), topic); #else @@ -802,7 +804,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, } new_name[0] = toupper(new_name[0]); // capitalize first letter - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_MEDIUM); + StaticJsonDocument doc; doc["name"] = new_name; doc["uniq_id"] = uniq; if (uom != nullptr) { @@ -818,10 +820,11 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, ids.add(ha_device); // convert json to string and publish immediately with retain forced to true - doc.shrinkToFit(); - std::string payload_text; + // std::string payload_text; + char payload_text[300]; serializeJson(doc, payload_text); // convert json to string - uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text.c_str(), payload_text.size()); + + uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); if (!packet_id) { LOG_ERROR(F("Failed to publish topic %s"), topic); } else { @@ -832,7 +835,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, #endif } - delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp + // delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp } } // namespace emsesp From 5e697e194f95731eb67177f490aec74fa9c4a3b4 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 3 Nov 2020 09:43:09 +0100 Subject: [PATCH 012/225] fix debug log in standalone --- src/mqtt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index bc137d35..0d9d828e 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -829,7 +829,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, LOG_ERROR(F("Failed to publish topic %s"), topic); } else { #if defined(EMSESP_STANDALONE) - LOG_DEBUG(F("Publishing topic=%s, payload=%s"), topic, payload_text.c_str()); + LOG_DEBUG(F("Publishing topic=%s, payload=%s"), topic, payload_text); #else LOG_DEBUG(F("Publishing topic %s"), topic); #endif From 4f877bfb1a891e341013df3bc9914defb5d6a1eb Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 3 Nov 2020 17:43:57 +0100 Subject: [PATCH 013/225] removed old scripts, so mem optimizations --- CHANGELOG_LATEST.md | 3 +- scripts/analyze_stackdmp.py | 26 --- scripts/build.sh | 169 ---------------- scripts/clean_fw.py | 14 -- scripts/decoder.py | 307 ----------------------------- scripts/decoder_linux.py | 307 ----------------------------- scripts/memanalyzer.py | 383 ------------------------------------ src/version.h | 2 +- 8 files changed, 3 insertions(+), 1208 deletions(-) delete mode 100755 scripts/analyze_stackdmp.py delete mode 100755 scripts/build.sh delete mode 100755 scripts/clean_fw.py delete mode 100755 scripts/decoder.py delete mode 100755 scripts/decoder_linux.py delete mode 100755 scripts/memanalyzer.py diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 77d09e2a..168f8f14 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -6,7 +6,8 @@ ### Fixed ### Changed +- optimized MQTT for HA to reduce mem fragmentation issues ### Removed - +- old scripts diff --git a/scripts/analyze_stackdmp.py b/scripts/analyze_stackdmp.py deleted file mode 100755 index 9fc8c2a2..00000000 --- a/scripts/analyze_stackdmp.py +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env python -from subprocess import call -import os - -# example stackdmp.txt would contain text like below copied & pasted from a 'crash dump' command: - -# >>>stack>>> -# 3fffff20: 3fff32f0 00000003 3fff3028 402101b2 -# 3fffff30: 3fffdad0 3fff3280 0000000d 402148aa -# 3fffff40: 3fffdad0 3fff3280 3fff326c 3fff32f0 -# 3fffff50: 0000000d 3fff326c 3fff3028 402103bd -# 3fffff60: 0000000d 3fff34cc 40211de4 3fff34cc -# 3fffff70: 3fff3028 3fff14c4 3fff301c 3fff34cc -# 3fffff80: 3fffdad0 3fff14c4 3fff3028 40210493 -# 3fffff90: 3fffdad0 00000000 3fff14c4 4020a738 -# 3fffffa0: 3fffdad0 00000000 3fff349c 40211e90 -# 3fffffb0: feefeffe feefeffe 3ffe8558 40100b01 -# <</dev/null 2>&1 || return 1 - command git rev-parse >/dev/null 2>&1 || return 1 - - return 0 -} - -stat_bytes() { - filesize=`du -k "$1" | cut -f1;` - echo 'size:' $filesize 'bytes' -} - -# Available environments -list_envs() { - grep env: platformio.ini | sed 's/\[env:\(.*\)\]/\1/g' -} - -print_available() { - echo "--------------------------------------------------------------" - echo "Available environments:" - for environment in $available; do - echo "-> $environment" - done -} - -print_environments() { - echo "--------------------------------------------------------------" - echo "Current environments:" - for environment in $environments; do - echo "-> $environment" - done -} - -set_default_environments() { - # Hook to build in parallel when using travis - if [[ "${TRAVIS_BUILD_STAGE_NAME}" = "Release" ]] && ${par_build}; then - environments=$(echo ${available} | \ - awk -v par_thread=${par_thread} -v par_total_threads=${par_total_threads} \ - '{ for (i = 1; i <= NF; i++) if (++j % par_total_threads == par_thread ) print $i; }') - return - fi - - # Only build travis target - if [[ "${TRAVIS_BUILD_STAGE_NAME}" = "Test" ]]; then - environments=$travis - return - fi - - # Fallback to all available environments - environments=$available -} - -build_environments() { - echo "--------------------------------------------------------------" - echo "Building firmware images..." - # don't move to firmware folder until Travis fixed (see https://github.com/travis-ci/dpl/issues/846#issuecomment-547157406) - # mkdir -p $destination - - for environment in $environments; do - echo "* EMS-ESP-$version-$environment.bin" - platformio run --silent --environment $environment || exit 1 - stat_bytes .pio/build/$environment/firmware.bin - # mv .pio/build/$environment/firmware.bin $destination/EMS-ESP-$version-$environment.bin - # mv .pio/build/$environment/firmware.bin EMS-ESP-$version-$environment.bin - mv .pio/build/$environment/firmware.bin EMS-ESP-dev-$environment.bin - done - echo "--------------------------------------------------------------" -} - - -####### MAIN - -destination=firmware -version_file=./src/version.h -version=$(grep -E '^#define EMSESP_APP_VERSION' $version_file | awk '{print $3}' | sed 's/"//g') - -if ${TRAVIS:-false}; then - git_revision=${TRAVIS_COMMIT::7} - git_tag=${TRAVIS_TAG} -elif is_git; then - git_revision=$(git rev-parse --short HEAD) - git_tag=$(git tag --contains HEAD) -else - git_revision=unknown - git_tag= -fi - -echo $git_tag - -if [[ -n $git_tag ]]; then - new_version=${version/-*} - sed -i -e "s@$version@$new_version@" $version_file - version=$new_version - trap "git checkout -- $version_file" EXIT -fi - -par_build=false -par_thread=${BUILDER_THREAD:-0} -par_total_threads=${BUILDER_TOTAL_THREADS:-4} -if [ ${par_thread} -ne ${par_thread} -o \ - ${par_total_threads} -ne ${par_total_threads} ]; then - echo "Parallel threads should be a number." - exit -fi -if [ ${par_thread} -ge ${par_total_threads} ]; then - echo "Current thread is greater than total threads. Doesn't make sense" - exit -fi - -# travis platformio target is used for nightly Test -travis=$(list_envs | grep travis | sort) - -# get all taregts, excluding travis and debug -available=$(list_envs | grep -Ev -- 'travis|debug|release' | sort) - -export PLATFORMIO_BUILD_FLAGS="${PLATFORMIO_BUILD_FLAGS}" - -# get command line Parameters -# l prints environments -# 2 does parallel builds -# d uses next arg as destination folder -while getopts "lpd:" opt; do - case $opt in - l) - print_available - exit - ;; - p) - par_build=true - ;; - d) - destination=$OPTARG - ;; - esac -done - -shift $((OPTIND-1)) - -# Welcome message -echo "--------------------------------------------------------------" -echo "EMS-ESP FIRMWARE BUILDER" -echo "Building for version ${version}" ${git_revision:+($git_revision)} - -# Environments to build -environments=$@ - -if [ $# -eq 0 ]; then - set_default_environments -fi - -if ${CI:-false}; then - print_environments -fi - -# for debugging -echo "* git_revision = $git_revision" -echo "* git_tag = $git_tag" -echo "* TRAVIS_COMMIT = $TRAVIS_COMMIT" -echo "* TRAVIS_TAG = $TRAVIS_TAG" -echo "* TRAVIS_BRANCH = $TRAVIS_BRANCH" -echo "* TRAVIS_BUILD_STAGE_NAME = $TRAVIS_BUILD_STAGE_NAME" - -build_environments - diff --git a/scripts/clean_fw.py b/scripts/clean_fw.py deleted file mode 100755 index 140f23ee..00000000 --- a/scripts/clean_fw.py +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env python -from subprocess import call -import os -Import("env") - -def clean(source, target, env): - print("\n** Starting clean...") - call(["pio", "run", "-t", "erase"]) - call(["esptool.py", "-p COM6", "write_flash 0x00000", os.getcwd()+"../firmware/*.bin"]) - print("\n** Finished clean.") - -# built in targets: (buildprog, size, upload, program, buildfs, uploadfs, uploadfsota) -env.AddPreAction("buildprog", clean) - diff --git a/scripts/decoder.py b/scripts/decoder.py deleted file mode 100755 index a86ea655..00000000 --- a/scripts/decoder.py +++ /dev/null @@ -1,307 +0,0 @@ -#!/usr/bin/env python3 - -"""ESP Exception Decoder - -github: https://github.com/janLo/EspArduinoExceptionDecoder -license: GPL v3 -author: Jan Losinski -""" - -import argparse -import re -import subprocess -from collections import namedtuple - -import sys - -import os - -EXCEPTIONS = [ - "Illegal instruction", - "SYSCALL instruction", - "InstructionFetchError: Processor internal physical address or data error during instruction fetch", - "LoadStoreError: Processor internal physical address or data error during load or store", - "Level1Interrupt: Level-1 interrupt as indicated by set level-1 bits in the INTERRUPT register", - "Alloca: MOVSP instruction, if caller's registers are not in the register file", - "IntegerDivideByZero: QUOS, QUOU, REMS, or REMU divisor operand is zero", - "reserved", - "Privileged: Attempt to execute a privileged operation when CRING ? 0", - "LoadStoreAlignmentCause: Load or store to an unaligned address", - "reserved", - "reserved", - "InstrPIFDataError: PIF data error during instruction fetch", - "LoadStorePIFDataError: Synchronous PIF data error during LoadStore access", - "InstrPIFAddrError: PIF address error during instruction fetch", - "LoadStorePIFAddrError: Synchronous PIF address error during LoadStore access", - "InstTLBMiss: Error during Instruction TLB refill", - "InstTLBMultiHit: Multiple instruction TLB entries matched", - "InstFetchPrivilege: An instruction fetch referenced a virtual address at a ring level less than CRING", - "reserved", - "InstFetchProhibited: An instruction fetch referenced a page mapped with an attribute that does not permit instruction fetch", - "reserved", - "reserved", - "reserved", - "LoadStoreTLBMiss: Error during TLB refill for a load or store", - "LoadStoreTLBMultiHit: Multiple TLB entries matched for a load or store", - "LoadStorePrivilege: A load or store referenced a virtual address at a ring level less than CRING", - "reserved", - "LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads", - "StoreProhibited: A store referenced a page mapped with an attribute that does not permit stores" -] - -PLATFORMS = { - "ESP8266": "lx106", - "ESP32": "esp32" -} - -EXCEPTION_REGEX = re.compile("^Exception \\((?P[0-9]*)\\):$") -COUNTER_REGEX = re.compile('^epc1=(?P0x[0-9a-f]+) epc2=(?P0x[0-9a-f]+) epc3=(?P0x[0-9a-f]+) ' - 'excvaddr=(?P0x[0-9a-f]+) depc=(?P0x[0-9a-f]+)$') -CTX_REGEX = re.compile("^ctx: (?P.+)$") -POINTER_REGEX = re.compile('^sp: (?P[0-9a-f]+) end: (?P[0-9a-f]+) offset: (?P[0-9a-f]+)$') -STACK_BEGIN = '>>>stack>>>' -STACK_END = '<<[0-9a-f]+):\W+(?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+)(\W.*)?$') - -StackLine = namedtuple("StackLine", ["offset", "content"]) - - -class ExceptionDataParser(object): - def __init__(self): - self.exception = None - - self.epc1 = None - self.epc2 = None - self.epc3 = None - self.excvaddr = None - self.depc = None - - self.ctx = None - - self.sp = None - self.end = None - self.offset = None - - self.stack = [] - - def _parse_exception(self, line): - match = EXCEPTION_REGEX.match(line) - if match is not None: - self.exception = int(match.group('exc')) - return self._parse_counters - return self._parse_exception - - def _parse_counters(self, line): - match = COUNTER_REGEX.match(line) - if match is not None: - self.epc1 = match.group("epc1") - self.epc2 = match.group("epc2") - self.epc3 = match.group("epc3") - self.excvaddr = match.group("excvaddr") - self.depc = match.group("depc") - return self._parse_ctx - return self._parse_counters - - def _parse_ctx(self, line): - match = CTX_REGEX.match(line) - if match is not None: - self.ctx = match.group("ctx") - return self._parse_pointers - return self._parse_ctx - - def _parse_pointers(self, line): - match = POINTER_REGEX.match(line) - if match is not None: - self.sp = match.group("sp") - self.end = match.group("end") - self.offset = match.group("offset") - return self._parse_stack_begin - return self._parse_pointers - - def _parse_stack_begin(self, line): - if line == STACK_BEGIN: - return self._parse_stack_line - return self._parse_stack_begin - - def _parse_stack_line(self, line): - if line != STACK_END: - match = STACK_REGEX.match(line) - if match is not None: - self.stack.append(StackLine(offset=match.group("off"), - content=(match.group("c1"), match.group("c2"), match.group("c3"), - match.group("c4")))) - return self._parse_stack_line - return None - - def parse_file(self, file, stack_only=False): - func = self._parse_exception - if stack_only: - func = self._parse_stack_begin - - for line in file: - func = func(line.strip()) - if func is None: - break - - if func is not None: - print("ERROR: Parser not complete!") - sys.exit(1) - - -class AddressResolver(object): - def __init__(self, tool_path, elf_path): - self._tool = tool_path - self._elf = elf_path - self._address_map = {} - - def _lookup(self, addresses): - cmd = [self._tool, "-aipfC", "-e", self._elf] + [addr for addr in addresses if addr is not None] - - if sys.version_info[0] < 3: - output = subprocess.check_output(cmd) - else: - output = subprocess.check_output(cmd, encoding="utf-8") - - line_regex = re.compile("^(?P[0-9a-fx]+): (?P.+)$") - - last = None - for line in output.splitlines(): - line = line.strip() - match = line_regex.match(line) - - if match is None: - if last is not None and line.startswith('(inlined by)'): - line = line [12:].strip() - self._address_map[last] += ("\n \-> inlined by: " + line) - continue - - if match.group("result") == '?? ??:0': - continue - - self._address_map[match.group("addr")] = match.group("result") - last = match.group("addr") - - def fill(self, parser): - addresses = [parser.epc1, parser.epc2, parser.epc3, parser.excvaddr, parser.sp, parser.end, parser.offset] - for line in parser.stack: - addresses.extend(line.content) - - self._lookup(addresses) - - def _sanitize_addr(self, addr): - if addr.startswith("0x"): - addr = addr[2:] - - fill = "0" * (8 - len(addr)) - return "0x" + fill + addr - - def resolve_addr(self, addr): - out = self._sanitize_addr(addr) - - if out in self._address_map: - out += ": " + self._address_map[out] - - return out - - def resolve_stack_addr(self, addr, full=True): - addr = self._sanitize_addr(addr) - if addr in self._address_map: - return addr + ": " + self._address_map[addr] - - if full: - return "[DATA (0x" + addr + ")]" - - return None - - -def print_addr(name, value, resolver): - print("{}:{} {}".format(name, " " * (8 - len(name)), resolver.resolve_addr(value))) - - -def print_stack_full(lines, resolver): - print("stack:") - for line in lines: - print(line.offset + ":") - for content in line.content: - print(" " + resolver.resolve_stack_addr(content)) - - -def print_stack(lines, resolver): - print("stack:") - for line in lines: - for content in line.content: - out = resolver.resolve_stack_addr(content, full=False) - if out is None: - continue - print(out) - - -def print_result(parser, resolver, full=True, stack_only=False): - if not stack_only: - print('Exception: {} ({})'.format(parser.exception, EXCEPTIONS[parser.exception])) - - print("") - print_addr("epc1", parser.epc1, resolver) - print_addr("epc2", parser.epc2, resolver) - print_addr("epc3", parser.epc3, resolver) - print_addr("excvaddr", parser.excvaddr, resolver) - print_addr("depc", parser.depc, resolver) - - print("") - print("ctx: " + parser.ctx) - - print("") - print_addr("sp", parser.sp, resolver) - print_addr("end", parser.end, resolver) - print_addr("offset", parser.offset, resolver) - - print("") - if full: - print_stack_full(parser.stack, resolver) - else: - print_stack(parser.stack, resolver) - - -def parse_args(): - parser = argparse.ArgumentParser(description="decode ESP Stacktraces.") - - parser.add_argument("-p", "--platform", help="The platform to decode from", choices=PLATFORMS.keys(), - default="ESP8266") - parser.add_argument("-t", "--tool", help="Path to the xtensa toolchain", - default="~/.platformio/packages/toolchain-xtensa/") - parser.add_argument("-e", "--elf", help="path to elf file", required=True) - parser.add_argument("-f", "--full", help="Print full stack dump", action="store_true") - parser.add_argument("-s", "--stack_only", help="Decode only a stractrace", action="store_true") - parser.add_argument("file", help="The file to read the exception data from ('-' for STDIN)", default="-") - - return parser.parse_args() - - -if __name__ == "__main__": - args = parse_args() - - if args.file == "-": - file = sys.stdin - else: - if not os.path.exists(args.file): - print("ERROR: file " + args.file + " not found") - sys.exit(1) - file = open(args.file, "r") - - addr2line = os.path.join(os.path.abspath(os.path.expanduser(args.tool)), - "bin/xtensa-" + PLATFORMS[args.platform] + "-elf-addr2line.exe") - if not os.path.exists(addr2line): - print("ERROR: addr2line not found (" + addr2line + ")") - - elf_file = os.path.abspath(os.path.expanduser(args.elf)) - if not os.path.exists(elf_file): - print("ERROR: elf file not found (" + elf_file + ")") - - parser = ExceptionDataParser() - resolver = AddressResolver(addr2line, elf_file) - - parser.parse_file(file, args.stack_only) - resolver.fill(parser) - - print_result(parser, resolver, args.full, args.stack_only) diff --git a/scripts/decoder_linux.py b/scripts/decoder_linux.py deleted file mode 100755 index 710d4b64..00000000 --- a/scripts/decoder_linux.py +++ /dev/null @@ -1,307 +0,0 @@ -#!/usr/bin/env python3 - -"""ESP Exception Decoder - -github: https://github.com/janLo/EspArduinoExceptionDecoder -license: GPL v3 -author: Jan Losinski -""" - -import argparse -import re -import subprocess -from collections import namedtuple - -import sys - -import os - -EXCEPTIONS = [ - "Illegal instruction", - "SYSCALL instruction", - "InstructionFetchError: Processor internal physical address or data error during instruction fetch", - "LoadStoreError: Processor internal physical address or data error during load or store", - "Level1Interrupt: Level-1 interrupt as indicated by set level-1 bits in the INTERRUPT register", - "Alloca: MOVSP instruction, if caller's registers are not in the register file", - "IntegerDivideByZero: QUOS, QUOU, REMS, or REMU divisor operand is zero", - "reserved", - "Privileged: Attempt to execute a privileged operation when CRING ? 0", - "LoadStoreAlignmentCause: Load or store to an unaligned address", - "reserved", - "reserved", - "InstrPIFDataError: PIF data error during instruction fetch", - "LoadStorePIFDataError: Synchronous PIF data error during LoadStore access", - "InstrPIFAddrError: PIF address error during instruction fetch", - "LoadStorePIFAddrError: Synchronous PIF address error during LoadStore access", - "InstTLBMiss: Error during Instruction TLB refill", - "InstTLBMultiHit: Multiple instruction TLB entries matched", - "InstFetchPrivilege: An instruction fetch referenced a virtual address at a ring level less than CRING", - "reserved", - "InstFetchProhibited: An instruction fetch referenced a page mapped with an attribute that does not permit instruction fetch", - "reserved", - "reserved", - "reserved", - "LoadStoreTLBMiss: Error during TLB refill for a load or store", - "LoadStoreTLBMultiHit: Multiple TLB entries matched for a load or store", - "LoadStorePrivilege: A load or store referenced a virtual address at a ring level less than CRING", - "reserved", - "LoadProhibited: A load referenced a page mapped with an attribute that does not permit loads", - "StoreProhibited: A store referenced a page mapped with an attribute that does not permit stores" -] - -PLATFORMS = { - "ESP8266": "lx106", - "ESP32": "esp32" -} - -EXCEPTION_REGEX = re.compile("^Exception \\((?P[0-9]*)\\):$") -COUNTER_REGEX = re.compile('^epc1=(?P0x[0-9a-f]+) epc2=(?P0x[0-9a-f]+) epc3=(?P0x[0-9a-f]+) ' - 'excvaddr=(?P0x[0-9a-f]+) depc=(?P0x[0-9a-f]+)$') -CTX_REGEX = re.compile("^ctx: (?P.+)$") -POINTER_REGEX = re.compile('^sp: (?P[0-9a-f]+) end: (?P[0-9a-f]+) offset: (?P[0-9a-f]+)$') -STACK_BEGIN = '>>>stack>>>' -STACK_END = '<<[0-9a-f]+):\W+(?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+)(\W.*)?$') - -StackLine = namedtuple("StackLine", ["offset", "content"]) - - -class ExceptionDataParser(object): - def __init__(self): - self.exception = None - - self.epc1 = None - self.epc2 = None - self.epc3 = None - self.excvaddr = None - self.depc = None - - self.ctx = None - - self.sp = None - self.end = None - self.offset = None - - self.stack = [] - - def _parse_exception(self, line): - match = EXCEPTION_REGEX.match(line) - if match is not None: - self.exception = int(match.group('exc')) - return self._parse_counters - return self._parse_exception - - def _parse_counters(self, line): - match = COUNTER_REGEX.match(line) - if match is not None: - self.epc1 = match.group("epc1") - self.epc2 = match.group("epc2") - self.epc3 = match.group("epc3") - self.excvaddr = match.group("excvaddr") - self.depc = match.group("depc") - return self._parse_ctx - return self._parse_counters - - def _parse_ctx(self, line): - match = CTX_REGEX.match(line) - if match is not None: - self.ctx = match.group("ctx") - return self._parse_pointers - return self._parse_ctx - - def _parse_pointers(self, line): - match = POINTER_REGEX.match(line) - if match is not None: - self.sp = match.group("sp") - self.end = match.group("end") - self.offset = match.group("offset") - return self._parse_stack_begin - return self._parse_pointers - - def _parse_stack_begin(self, line): - if line == STACK_BEGIN: - return self._parse_stack_line - return self._parse_stack_begin - - def _parse_stack_line(self, line): - if line != STACK_END: - match = STACK_REGEX.match(line) - if match is not None: - self.stack.append(StackLine(offset=match.group("off"), - content=(match.group("c1"), match.group("c2"), match.group("c3"), - match.group("c4")))) - return self._parse_stack_line - return None - - def parse_file(self, file, stack_only=False): - func = self._parse_exception - if stack_only: - func = self._parse_stack_begin - - for line in file: - func = func(line.strip()) - if func is None: - break - - if func is not None: - print("ERROR: Parser not complete!") - sys.exit(1) - - -class AddressResolver(object): - def __init__(self, tool_path, elf_path): - self._tool = tool_path - self._elf = elf_path - self._address_map = {} - - def _lookup(self, addresses): - cmd = [self._tool, "-aipfC", "-e", self._elf] + [addr for addr in addresses if addr is not None] - - if sys.version_info[0] < 3: - output = subprocess.check_output(cmd) - else: - output = subprocess.check_output(cmd, encoding="utf-8") - - line_regex = re.compile("^(?P[0-9a-fx]+): (?P.+)$") - - last = None - for line in output.splitlines(): - line = line.strip() - match = line_regex.match(line) - - if match is None: - if last is not None and line.startswith('(inlined by)'): - line = line [12:].strip() - self._address_map[last] += ("\n \-> inlined by: " + line) - continue - - if match.group("result") == '?? ??:0': - continue - - self._address_map[match.group("addr")] = match.group("result") - last = match.group("addr") - - def fill(self, parser): - addresses = [parser.epc1, parser.epc2, parser.epc3, parser.excvaddr, parser.sp, parser.end, parser.offset] - for line in parser.stack: - addresses.extend(line.content) - - self._lookup(addresses) - - def _sanitize_addr(self, addr): - if addr.startswith("0x"): - addr = addr[2:] - - fill = "0" * (8 - len(addr)) - return "0x" + fill + addr - - def resolve_addr(self, addr): - out = self._sanitize_addr(addr) - - if out in self._address_map: - out += ": " + self._address_map[out] - - return out - - def resolve_stack_addr(self, addr, full=True): - addr = self._sanitize_addr(addr) - if addr in self._address_map: - return addr + ": " + self._address_map[addr] - - if full: - return "[DATA (0x" + addr + ")]" - - return None - - -def print_addr(name, value, resolver): - print("{}:{} {}".format(name, " " * (8 - len(name)), resolver.resolve_addr(value))) - - -def print_stack_full(lines, resolver): - print("stack:") - for line in lines: - print(line.offset + ":") - for content in line.content: - print(" " + resolver.resolve_stack_addr(content)) - - -def print_stack(lines, resolver): - print("stack:") - for line in lines: - for content in line.content: - out = resolver.resolve_stack_addr(content, full=False) - if out is None: - continue - print(out) - - -def print_result(parser, resolver, full=True, stack_only=False): - if not stack_only: - print('Exception: {} ({})'.format(parser.exception, EXCEPTIONS[parser.exception])) - - print("") - print_addr("epc1", parser.epc1, resolver) - print_addr("epc2", parser.epc2, resolver) - print_addr("epc3", parser.epc3, resolver) - print_addr("excvaddr", parser.excvaddr, resolver) - print_addr("depc", parser.depc, resolver) - - print("") - print("ctx: " + parser.ctx) - - print("") - print_addr("sp", parser.sp, resolver) - print_addr("end", parser.end, resolver) - print_addr("offset", parser.offset, resolver) - - print("") - if full: - print_stack_full(parser.stack, resolver) - else: - print_stack(parser.stack, resolver) - - -def parse_args(): - parser = argparse.ArgumentParser(description="decode ESP Stacktraces.") - - parser.add_argument("-p", "--platform", help="The platform to decode from", choices=PLATFORMS.keys(), - default="ESP8266") - parser.add_argument("-t", "--tool", help="Path to the xtensa toolchain", - default="~/.platformio/packages/toolchain-xtensa/") - parser.add_argument("-e", "--elf", help="path to elf file", required=True) - parser.add_argument("-f", "--full", help="Print full stack dump", action="store_true") - parser.add_argument("-s", "--stack_only", help="Decode only a stractrace", action="store_true") - parser.add_argument("file", help="The file to read the exception data from ('-' for STDIN)", default="-") - - return parser.parse_args() - - -if __name__ == "__main__": - args = parse_args() - - if args.file == "-": - file = sys.stdin - else: - if not os.path.exists(args.file): - print("ERROR: file " + args.file + " not found") - sys.exit(1) - file = open(args.file, "r") - - addr2line = os.path.join(os.path.abspath(os.path.expanduser(args.tool)), - "bin/xtensa-" + PLATFORMS[args.platform] + "-elf-addr2line") - if not os.path.exists(addr2line): - print("ERROR: addr2line not found (" + addr2line + ")") - - elf_file = os.path.abspath(os.path.expanduser(args.elf)) - if not os.path.exists(elf_file): - print("ERROR: elf file not found (" + elf_file + ")") - - parser = ExceptionDataParser() - resolver = AddressResolver(addr2line, elf_file) - - parser.parse_file(file, args.stack_only) - resolver.fill(parser) - - print_result(parser, resolver, args.full, args.stack_only) diff --git a/scripts/memanalyzer.py b/scripts/memanalyzer.py deleted file mode 100755 index 160c4c9b..00000000 --- a/scripts/memanalyzer.py +++ /dev/null @@ -1,383 +0,0 @@ -#!/usr/bin/env python3 -# pylint: disable=C0301,C0114,C0116,W0511 -# coding=utf-8 -# ------------------------------------------------------------------------------- -# based on ESPurna module memory analyser by xose.perez@gmail.com -# -# Rewritten for python-3 and changed to use "size" instead of "objdump" -# Based on https://github.com/esp8266/Arduino/pull/6525 -# by Maxim Prokhorov -# -# Based on: -# https://github.com/letscontrolit/ESPEasy/blob/mega/memanalyzer.py -# by psy0rz -# https://raw.githubusercontent.com/SmingHub/Sming/develop/tools/memanalyzer.py -# by Slavey Karadzhov -# https://github.com/Sermus/ESP8266_memory_analyzer -# by Andrey Filimonov -# -# ------------------------------------------------------------------------------- -# -# When using Windows with non-default installation at the C:\.platformio, -# you would need to specify toolchain path manually. For example: -# -# $ py -3 scripts\memanalyzer.py --toolchain-prefix C:\.platformio\packages\toolchain-xtensa\bin\xtensa-lx106-elf- -# -# You could also change the path to platformio binary in a similar fashion: -# $ py -3 scripts\memanalyzer.py --platformio-prefix C:\Users\Max\platformio-penv\Scripts\ -# -# ------------------------------------------------------------------------------- - -import argparse -import os -import re -import subprocess -import sys -from collections import OrderedDict -from subprocess import getstatusoutput - -__version__ = (0, 3) - -# ------------------------------------------------------------------------------- - -TOTAL_IRAM = 32786 -TOTAL_DRAM = 81920 - -DEFAULT_ENV = "esp12e" -TOOLCHAIN_PREFIX = "~/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-" -PLATFORMIO_PREFIX = "" -SECTIONS = OrderedDict( - [ - (".data", "Initialized Data (RAM)"), - (".rodata", "ReadOnly Data (RAM)"), - (".bss", "Uninitialized Data (RAM)"), - (".text", "Cached Code (IRAM)"), - (".irom0.text", "Uncached Code (SPI)"), - ] -) -DESCRIPTION = "Memory Analyzer v{}".format( - ".".join(str(x) for x in __version__) -) - - -# ------------------------------------------------------------------------------- - - -def size_binary_path(prefix): - return "{}size".format(os.path.expanduser(prefix)) - - -def file_size(file): - try: - return os.stat(file).st_size - except OSError: - return 0 - - -def analyse_memory(size, elf_file): - proc = subprocess.Popen( - [size, "-A", elf_file], stdout=subprocess.PIPE, universal_newlines=True - ) - lines = proc.stdout.readlines() - - values = {} - - for line in lines: - words = line.split() - for name in SECTIONS.keys(): - if line.startswith(name): - value = values.setdefault(name, 0) - value += int(words[1]) - values[name] = value - break - - return values - - -def run(prefix, env, modules, debug): - flags = " ".join("-D{}_SUPPORT={:d}".format(k, v) for k, v in modules.items()) - - os_env = os.environ.copy() - os_env["PLATFORMIO_SRC_BUILD_FLAGS"] = flags - os_env["PLATFORMIO_BUILD_CACHE_DIR"] = "test/pio_cache" - - if debug: - print("Selected flags: {}".format(flags)) - - command = [os.path.join(prefix, "platformio"), "run"] - if not debug: - command.append("--silent") - command.extend(["--environment", env]) - - output = None if debug else subprocess.DEVNULL - - - try: - subprocess.check_call( - command, shell=False, env=os_env, stdout=output, stderr=output - ) - except subprocess.CalledProcessError: - print(" - Command failed: {}".format(command)) - print(" - Selected flags: {}".format(flags)) - sys.exit(1) - - -def get_available_modules(): - modules = [] - for line in open("lib/framework/services.h"): - match = re.search(r"(\w*)_SUPPORT", line) - if match: - modules.append((match.group(1), 0)) - modules.sort(key=lambda item: item[0]) - - return OrderedDict(modules) - - -def parse_commandline_args(): - parser = argparse.ArgumentParser( - description=DESCRIPTION, formatter_class=argparse.ArgumentDefaultsHelpFormatter - ) - parser.add_argument( - "-e", "--environment", help="platformio environment to use", default=DEFAULT_ENV - ) - parser.add_argument( - "--toolchain-prefix", - help="where to find the xtensa toolchain binaries", - default=TOOLCHAIN_PREFIX, - ) - parser.add_argument( - "--platformio-prefix", - help="where to find the platformio executable", - default=PLATFORMIO_PREFIX, - ) - parser.add_argument( - "-c", - "--core", - help="use core as base configuration instead of default", - action="store_true", - default=False, - ) - parser.add_argument( - "-l", - "--list", - help="list available modules", - action="store_true", - default=False, - ) - parser.add_argument("-d", "--debug", action="store_true", default=False) - parser.add_argument( - "modules", nargs="*", help="Modules to test (use ALL to test them all)" - ) - - return parser.parse_args() - - -def size_binary_exists(args): - - status, _ = getstatusoutput(size_binary_path(args.toolchain_prefix)) - if status != 1: - print("size not found, please check that the --toolchain-prefix is correct") - sys.exit(1) - - -def get_modules(args): - - # Load list of all modules - available_modules = get_available_modules() - if args.list: - print("List of available modules:\n") - for module in available_modules: - print("* " + module) - print() - sys.exit(0) - - modules = [] - if args.modules: - if "ALL" in args.modules: - modules.extend(available_modules.keys()) - else: - modules.extend(args.modules) - modules.sort() - - # Check test modules exist - for module in modules: - if module not in available_modules: - print("Module {} not found".format(module)) - sys.exit(2) - - # Either use all of modules or specified subset - if args.core: - modules = available_modules - else: - modules = OrderedDict((x, 0) for x in modules) - - configuration = "CORE" if args.core else "DEFAULT" - - return configuration, modules - - -# ------------------------------------------------------------------------------- - - -class Analyser: - """Run platformio and print info about the resulting binary.""" - - OUTPUT_FORMAT = "{:<20}|{:<15}|{:<15}|{:<15}|{:<15}|{:<15}|{:<15}|{:<15}" - DELIMETERS = OUTPUT_FORMAT.format( - "-" * 20, "-" * 15, "-" * 15, "-" * 15, "-" * 15, "-" * 15, "-" * 15, "-" * 15 - ) - FIRMWARE_FORMAT = ".pio/build/{env}/firmware.{suffix}" - - class _Enable: - def __init__(self, analyser, module=None): - self.analyser = analyser - self.module = module - - def __enter__(self): - if not self.module: - for name in self.analyser.modules: - self.analyser.modules[name] = 1 - else: - self.analyser.modules[self.module] = 1 - return self.analyser - - def __exit__(self, *args, **kwargs): - if not self.module: - for name in self.analyser.modules: - self.analyser.modules[name] = 0 - else: - self.analyser.modules[self.module] = 0 - - analyser = None - module = None - - def __init__(self, args, modules): - self._debug = args.debug - self._platformio_prefix = args.platformio_prefix - self._toolchain_prefix = args.toolchain_prefix - self._environment = args.environment - self.modules = modules - self.baseline = None - - def enable(self, module=None): - return self._Enable(self, module) - - def print(self, *args): - print(self.OUTPUT_FORMAT.format(*args)) - - def print_delimiters(self): - print(self.DELIMETERS) - - def begin(self, name): - self.print( - "Module", - "Cache IRAM", - "Init RAM", - "R.O. RAM", - "Uninit RAM", - "Available RAM", - "Flash ROM", - "Binary size", - ) - self.print( - "", - ".text + .text1", - ".data", - ".rodata", - ".bss", - "heap + stack", - ".irom0.text", - "", - ) - self.print_delimiters() - self.baseline = self.run() - self.print_values(name, self.baseline) - - def print_values(self, header, values): - self.print( - header, - values[".text"], - values[".data"], - values[".rodata"], - values[".bss"], - values["free"], - values[".irom0.text"], - values["size"], - ) - - def print_compare(self, header, values): - self.print( - header, - values[".text"] - self.baseline[".text"], - values[".data"] - self.baseline[".data"], - values[".rodata"] - self.baseline[".rodata"], - values[".bss"] - self.baseline[".bss"], - values["free"] - self.baseline["free"], - values[".irom0.text"] - self.baseline[".irom0.text"], - values["size"] - self.baseline["size"], - ) - - def run(self): - run(self._platformio_prefix, self._environment, self.modules, self._debug) - - elf_path = self.FIRMWARE_FORMAT.format(env=self._environment, suffix="elf") - bin_path = self.FIRMWARE_FORMAT.format(env=self._environment, suffix="bin") - - values = analyse_memory( - size_binary_path(self._toolchain_prefix), elf_path - ) - - free = 80 * 1024 - values[".data"] - values[".rodata"] - values[".bss"] - free = free + (16 - free % 16) - values["free"] = free - - values["size"] = file_size(bin_path) - - return values - - -def main(args): - - # Check xtensa-lx106-elf-size is in the path - size_binary_exists(args) - - # Which modules to test? - configuration, modules = get_modules(args) - - # print_values init message - print('Selected environment "{}"'.format(args.environment), end="") - if modules: - print(" with modules: {}".format(" ".join(modules.keys()))) - else: - print() - - print() - print("Analyzing {} configuration".format(configuration)) - print() - - # Build the core without any modules to get base memory usage - analyser = Analyser(args, modules) - analyser.begin(configuration) - - # Test each module separately - results = {} - for module in analyser.modules: - with analyser.enable(module): - results[module] = analyser.run() - analyser.print_compare(module, results[module]) - - # Test all modules - if analyser.modules: - - with analyser.enable(): - total = analyser.run() - - analyser.print_delimiters() - if len(analyser.modules) > 1: - analyser.print_compare("ALL MODULES", total) - - analyser.print_values("TOTAL", total) - - -if __name__ == "__main__": - main(parse_commandline_args()) diff --git a/src/version.h b/src/version.h index 96602d1d..4616c4e4 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b0" +#define EMSESP_APP_VERSION "2.1.1b1" From f112887658b8adac708f183e8048b716dd91d2f6 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 5 Nov 2020 07:55:26 +0100 Subject: [PATCH 014/225] fix #595 mixer IPM pumpstatus --- CHANGELOG_LATEST.md | 1 + src/devices/mixer.cpp | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 168f8f14..229cc445 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -4,6 +4,7 @@ - function keys in editor: cursor, del, pos1, end. F1=help, F2=show, F10=report ### Fixed +- mixer IPM pumpstatus ### Changed - optimized MQTT for HA to reduce mem fragmentation issues diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index 1ff6900c..43354768 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -224,7 +224,7 @@ bool Mixer::export_values(JsonObject & json) { // returns false if empty bool Mixer::export_values_format(uint8_t mqtt_format, JsonObject & json) { // check if there is data for the mixer unit - if (!Helpers::hasValue(status_)) { + if (this->type() == Type::NONE) { return 0; } @@ -249,7 +249,7 @@ bool Mixer::export_values_format(uint8_t mqtt_format, JsonObject & json) { json_hc["flowSetTemp"] = flowSetTemp_; } if (Helpers::hasValue(pumpStatus_)) { - char s[5]; + char s[7]; json_hc["pumpStatus"] = Helpers::render_value(s, pumpStatus_, EMS_VALUE_BOOL); } if (Helpers::hasValue(status_)) { @@ -274,7 +274,7 @@ bool Mixer::export_values_format(uint8_t mqtt_format, JsonObject & json) { json_hc["wwTemp"] = (float)flowTemp_ / 10; } if (Helpers::hasValue(pumpStatus_)) { - char s[5]; + char s[7]; json_hc["pumpStatus"] = Helpers::render_value(s, pumpStatus_, EMS_VALUE_BOOL); } if (Helpers::hasValue(status_)) { @@ -316,7 +316,7 @@ void Mixer::process_IPMStatusMessage(std::shared_ptr telegram) { // check if circuit is active, 0-off, 1-unmixed, 2-mixed uint8_t ismixed = 0; - changed_ |= telegram->read_value(ismixed, 0); + telegram->read_value(ismixed, 0); if (ismixed == 0) { return; } From b8267d6782d93357e988e119ee6b3961f5c0e14d Mon Sep 17 00:00:00 2001 From: hpanther <2348625+hpanther@users.noreply.github.com> Date: Thu, 5 Nov 2020 15:19:29 +0100 Subject: [PATCH 015/225] Delete some files that got added accidentally --- cscope.out | 419870 ------------------------------------- doc/how-to Domoticz.txt | 9 - doc/nefit/mqtt.py | 113 - doc/nefit/plugin.py | 169 - pio_local.ini.txt | 3 - src/.emsdevice.cpp.swp | Bin 16384 -> 0 bytes 6 files changed, 420164 deletions(-) delete mode 100644 cscope.out delete mode 100644 doc/how-to Domoticz.txt delete mode 100644 doc/nefit/mqtt.py delete mode 100644 doc/nefit/plugin.py delete mode 100644 pio_local.ini.txt delete mode 100644 src/.emsdevice.cpp.swp diff --git a/cscope.out b/cscope.out deleted file mode 100644 index 1241e87c..00000000 --- a/cscope.out +++ /dev/null @@ -1,419870 +0,0 @@ -cscope 15 $HOME/DevCurrent/ems-esp/EMS-ESP 0002356847 - @.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h - -5  - ~"c/ArduoJs.h -" - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h - -5 #agm - - - -7 #ifde -__lulus - - -9  - ~"ArduoJs.h -" - -11 -usg - -mea - - gArduoJs -; - -15 #r -ArduoJs - -ques - -a - -C -++ -comp -, - - -chge - -fe - -exnsi - -to - . -cc - - - . -p - - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp - -5 #agm - - - -7  - ~"ArduoJs/Cfiguti.h -" - -9 #i! -ARDUINOJSON_DEBUG - - -10 #ifde -__g__ - - -11 #agm -g - -syem_hd - - -12 #i -defed - -__GNUC__ - - -13 #agm -GCC - -syem_hd - - -17  - ~"ArduoJs/Aay/AayRef.h -" - -18  - ~"ArduoJs/Obje/ObjeRef.h -" - -19  - ~"ArduoJs/V/VRef.h -" - -21  - ~"ArduoJs/Documt/DymicJsDocumt.h -" - -22  - ~"ArduoJs/Documt/SticJsDocumt.h -" - -24  - ~"ArduoJs/Aay/AayIm.h -" - -25  - ~"ArduoJs/Aay/EmtProxy.h -" - -26  - ~"ArduoJs/Aay/Uts.h -" - -27  - ~"ArduoJs/Ci/CiIm.h -" - -28  - ~"ArduoJs/Obje/MembProxy.h -" - -29  - ~"ArduoJs/Obje/ObjeIm.h -" - -30  - ~"ArduoJs/V/VAsIm.h -" - -31  - ~"ArduoJs/V/VCom.h -" - -32  - ~"ArduoJs/V/VIm.h -" - -34  - ~"ArduoJs/Js/JsDerliz.h -" - -35  - ~"ArduoJs/Js/JsSliz.h -" - -36  - ~"ArduoJs/Js/PyJsSliz.h -" - -37  - ~"ArduoJs/MsgPack/MsgPackDerliz.h -" - -38  - ~"ArduoJs/MsgPack/MsgPackSliz.h -" - -40  - ~"ArduoJs/comtiby.h -" - -42 -mea - - gArduoJs - { - -43  - gARDUINOJSON_NAMESPACE -:: - tAayCڡRef - - tJsAayCڡ -; - -44  - gARDUINOJSON_NAMESPACE -:: - tAayRef - - tJsAay -; - -45  - gARDUINOJSON_NAMESPACE -:: - tFlt - - tJsFlt -; - -46  - gARDUINOJSON_NAMESPACE -:: - tIeg - - tJsIeg -; - -47  - gARDUINOJSON_NAMESPACE -:: - tObjeCڡRef - - tJsObjeCڡ -; - -48  - gARDUINOJSON_NAMESPACE -:: - tObjeRef - - tJsObje -; - -49  - gARDUINOJSON_NAMESPACE -:: - tPa - - tJsPa -; - -50  - gARDUINOJSON_NAMESPACE -:: - tPaCڡ - - tJsPaCڡ -; - -51  - gARDUINOJSON_NAMESPACE -:: - tSg - - tJsSg -; - -52  - gARDUINOJSON_NAMESPACE -:: - tUI - - tJsUI -; - -53  - gARDUINOJSON_NAMESPACE -:: - tVCڡRef - - tJsVCڡ -; - -54  - gARDUINOJSON_NAMESPACE -:: - tVRef - - tJsV -; - -55 -usg - - gARDUINOJSON_NAMESPACE -:: -BasicJsDocumt -; - -56 -usg - - gARDUINOJSON_NAMESPACE -:: -cyAay -; - -57 -usg - - gARDUINOJSON_NAMESPACE -:: -DerliziE -; - -58 -usg - - gARDUINOJSON_NAMESPACE -:: -derlizeJs -; - -59 -usg - - gARDUINOJSON_NAMESPACE -:: -derlizeMsgPack -; - -60 -usg - - gARDUINOJSON_NAMESPACE -:: -DymicJsDocumt -; - -61 -usg - - gARDUINOJSON_NAMESPACE -:: -JsDocumt -; - -62 -usg - - gARDUINOJSON_NAMESPACE -:: -msuJs -; - -63 -usg - - gARDUINOJSON_NAMESPACE -:: -rlized -; - -64 -usg - - gARDUINOJSON_NAMESPACE -:: -rlizeJs -; - -65 -usg - - gARDUINOJSON_NAMESPACE -:: -rlizeJsPy -; - -66 -usg - - gARDUINOJSON_NAMESPACE -:: -rlizeMsgPack -; - -67 -usg - - gARDUINOJSON_NAMESPACE -:: -SticJsDocumt -; - -69 -mea - - gDerliziOi - { - -70 -usg - - gARDUINOJSON_NAMESPACE -:: -Fr -; - -71 -usg - - gARDUINOJSON_NAMESPACE -:: -NegLim -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -le - -VDa - * -yAdd -( -CiDa - * -r -, -MemyPo - * -po -) { - -12  - gr - ?-> -addEmt -( -po -) : 0; - -15 - gme - < -tyme - - gTVis -> - -16 -le - -tyme - - gTVis -:: -su_ty - -yAc -(cڡ -CiDa - * -r -, - -17 -TVis - & -vis -) { - -18 i( - gr -) - -19  - gvis -. -visAay -(* -r -); - -21  - gvis -. -visNu -(); - -24 -le - -bo - -yEqus -(cڡ -CiDa - * -lhs -, cڡ CiD* -rhs -) { - -25 i( - glhs - = -rhs -) - -26  -ue -; - -27 i(! - glhs - || ! - grhs -) - -28  - gl -; - -29  - glhs --> -equsAay -(* -rhs -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTAay -> - -13 -le - -AayRef - - gAayShtcuts -< - gTAay ->:: -NeedAay -() const { - -14  -im -()-> -addEmt -(). -me - -to -< -AayRef ->(); - -17 - gme - < -tyme - - gTAay -> - -18 -le - -ObjeRef - - gAayShtcuts -< - gTAay ->:: -NeedObje -() const { - -19  -im -()-> -addEmt -(). -me - -to -< -ObjeRef ->(); - -22 - gme - < -tyme - - gTAay -> - -23 -le - - gEmtProxy -< - gTAay -> - gAayShtcuts -:: -ݔ -[]( - -24 -size_t - -dex -) const { - -25  -EmtProxy -< -TAay ->(* -im -(), - gdex -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cVP - { - -13 - gpublic -: - -14 -VP -( -MemyPo - * -po -, -VDa - * -da -: -_v -(pool, data) {} - -16 -VRef - * - gݔ -->() { - -17  & - g_v -; - -20 - gVRef - & - gݔ -*() { - -21  - g_v -; - -24 - give -: - -25 -VRef - -_v -; - -28 as - cAayIt - { - -29 - gpublic -: - -30 -AayIt -(: -_ -(0) {} - -31 -exic - -AayIt -( -MemyPo - * -po -, -VSl - * - -) - -32 : -_po -( -po -), -_ -( - -) {} - -34 -VRef - - gݔ -*() const { - -35  -VRef -( -_po -, -_ --> -da -()); - -37 -VP - - gݔ -->() { - -38  -VP -( -_po -, -_ --> -da -()); - -41 -bo - - gݔ -==(cڡ -AayIt - & -h -) const { - -42  -_ - = -h -._slot; - -45 -bo - - gݔ -!=(cڡ -AayIt - & -h -) const { - -46  -_ - ! -h -._slot; - -49 - gAayIt - & - gݔ -++() { - -50 - g_ - = -_ --> -xt -(); - -51  * - gthis -; - -54 - gAayIt - & - gݔ -+=( -size_t - -di -) { - -55 -_ - = _-> -xt -( -di -); - -56  * - gthis -; - -59 -VSl - * - -() { - -60  - g_ -; - -63 - give -: - -64 -MemyPo - * -_po -; - -65 -VSl - * - g_ -; - -68 as - cVCڡP - { - -69 - gpublic -: - -70 -VCڡP -(cڡ -VDa - * -da -: -_v -(data) {} - -72 -VCڡRef - * -ݔ -->() { - -73  & -_v -; - -76 - gVCڡRef - & - gݔ -*() { - -77  - g_v -; - -80 - give -: - -81 -VCڡRef - -_v -; - -84 as - cAayCڡRefIt - { - -85 - gpublic -: - -86 -AayCڡRefIt -(: -_ -(0) {} - -87 -exic - -AayCڡRefIt -(cڡ -VSl - * - -: -_ -(slot) {} - -89 -VCڡRef - -ݔ -*() const { - -90  -VCڡRef -( -_ --> -da -()); - -92 -VCڡP - - gݔ -->() { - -93  -VCڡP -( -_ --> -da -()); - -96 -bo - - gݔ -==(cڡ -AayCڡRefIt - & -h -) const { - -97  -_ - = -h -._slot; - -100 -bo - - gݔ -!=(cڡ -AayCڡRefIt - & -h -) const { - -101  -_ - ! -h -._slot; - -104 - gAayCڡRefIt - & - gݔ -++() { - -105 - g_ - = -_ --> -xt -(); - -106  * - gthis -; - -109 - gAayCڡRefIt - & - gݔ -+=( -size_t - -di -) { - -110 -_ - = _-> -xt -( -di -); - -111  * - gthis -; - -114 cڡ -VSl - * - -() { - -115  - g_ -; - -118 - give -: - -119 cڡ -VSl - * -_ -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -13  - #JSON_ARRAY_SIZE -( -NUMBER_OF_ELEMENTS -) \ - -14 (( -NUMBER_OF_ELEMENTS -* ( -ARDUINOJSON_NAMESPACE -:: -VSl -)) - - ) - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 -ass - - gObjeRef -; - -19 - gme - < - gtyme -> - -20 -ass - - gEmtProxy -; - -22 - gme - < -tyme - - gTDa -> - -23 as - cAayRefBa - { - -24 - gpublic -: - -25 -ݔ - -VCڡRef -() const { - -26 cڡ * -da - = -_da -; - -27  -VCڡRef -( -t_ -( -da -)); - -30 - gme - < -tyme - - gTVis -> - -31 -FORCE_INLINE - -tyme - - gTVis -:: -su_ty - -ac -( -TVis -& -vis -) const { - -32  -yAc -( -_da -, -vis -); - -35 -FORCE_INLINE - -bo - -isNu -() const { - -36  - g_da - == 0; - -39 -FORCE_INLINE - -ݔ - -bo -() const { - -40  - g_da - != 0; - -43 -FORCE_INLINE - -size_t - -memyUge -() const { - -44  - g_da - ? _da-> -memyUge -() : 0; - -47 -FORCE_INLINE - -size_t - -ág -() const { - -48  - g_da - ? _da-> -ág -() : 0; - -51 -FORCE_INLINE - -size_t - -size -() const { - -52  - g_da - ? _da-> -size -() : 0; - -55 - geed -: - -56 -AayRefBa -( -TDa -* -da -: -_da -(data) {} - -57 -TDa -* -_da -; - -60 -ass - - gAayCڡRef - : -public - -AayRefBa -, - -61 -public - - gVisab - { - -62 -nd - -ass - - gAayRef -; - -63  - gAayRefBa - - tba_ty -; - -65 - gpublic -: - -66  -AayCڡRefIt - - t -; - -68 -FORCE_INLINE - - - -beg -() const { - -69 i(! - g_da -) - -70  - -(); - -71  - -( -_da --> -hd -()); - -74 -FORCE_INLINE - - - -d -() const { - -75  - -(); - -78 -FORCE_INLINE - -AayCڡRef -(: -ba_ty -(0) {} - -79 -FORCE_INLINE - -AayCڡRef -(cڡ -CiDa -* -da -: -ba_ty -(data) {} - -81 -FORCE_INLINE - -bo - -ݔ -==( -AayCڡRef - -rhs -) const { - -82  -yEqus -( -_da -, -rhs -._data); - -85 -FORCE_INLINE - -VCڡRef - - gݔ -[]( -size_t - - gdex -) const { - -86  -gEmt -( -dex -); - -89 -FORCE_INLINE - -VCڡRef - -gEmt -( -size_t - -dex -) const { - -90  -VCڡRef -( -_da - ? _da-> -gEmt -( -dex -) : 0); - -94 -ass - - gAayRef - : -public - -AayRefBa -< -CiDa ->, - -95 -public - - gAayShtcuts -< - gAayRef ->, - -96 -public - - gVisab - { - -97  - gAayRefBa -< - tCiDa -> - tba_ty -; - -99 - gpublic -: - -100  -AayIt - - t -; - -102 -FORCE_INLINE - -AayRef -(: -ba_ty -(0), -_po -(0) {} - -103 -FORCE_INLINE - -AayRef -( -MemyPo -* -po -, -CiDa -* -da -) - -104 : -ba_ty -( -da -), -_po -( -po -) {} - -106 -ݔ - -VRef -() { - -107 * - gda - = -_da -; - -108  -VRef -( -_po -, -t_ -< -VDa -*>( -da -)); - -111 -ݔ - -AayCڡRef -() const { - -112  -AayCڡRef -( -_da -); - -115 -VRef - -addEmt -() const { - -116  -VRef -( -_po -, -yAdd -( -_da -, _pool)); - -119 -FORCE_INLINE - - - -beg -() const { - -120 i(! - g_da -) - -121  - -(); - -122  - -( -_po -, -_da --> -hd -()); - -125 -FORCE_INLINE - - - -d -() const { - -126  - -(); - -130 -FORCE_INLINE - -bo - -t -( -AayCڡRef - -c -) const { - -131 i(! - g_da - || ! - gc -._data) - -132  - gl -; - -133  - g_da --> -cyFrom -(* -c -. -_da -, -_po -); - -136 -FORCE_INLINE - -bo - - gݔ -==( -AayRef - -rhs -) const { - -137  -yEqus -( -_da -, -rhs -._data); - -141 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t - -dex -) const { - -142  -VRef -( -_po -, -_da - ? _da-> -gOrAddEmt -( -dex -, _pool) : 0); - -146 -FORCE_INLINE - -VRef - -gEmt -( -size_t - -dex -) const { - -147  -VRef -( -_po -, -_da - ? _da-> -gEmt -( -dex -) : 0); - -151 -FORCE_INLINE -  -move -( - - - -) const { - -152 i(! - g_da -) - -154 - g_da --> -moveSl -( - -. - -()); - -158 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -159 i(! - g_da -) - -161 - g_da --> -moveEmt -( -dex -); - -164 - give -: - -165 -MemyPo -* -_po -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < - gtyme -> - -13 -ass - - gEmtProxy -; - -15 - gme - < -tyme - - gTAay -> - -16 as - cAayShtcuts - { - -17 - gpublic -: - -19 -FORCE_INLINE - -EmtProxy -< -TAay -> -ݔ -[]( -size_t - -dex -) const; - -21 -FORCE_INLINE - -ObjeRef - -NeedObje -() const; - -23 -FORCE_INLINE - -AayRef - -NeedAay -() const; - -30 - gme - < -tyme - - gT -> - -31 -FORCE_INLINE - -bo - -add -(cڡ -T - & -vue -) const { - -32  -im -()-> -addEmt -(). -t -( -vue -); - -37 - gme - < -tyme - - gT -> - -38 -FORCE_INLINE - -bo - -add -( -T - * -vue -) const { - -39  -im -()-> -addEmt -(). -t -( -vue -); - -42 - give -: - -43 cڡ -TAay - * -im -() const { - -44  -ic_ -( -this -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 #ifde -_MSC_VER - - -13 #agm -wng -( -push -) - -14 #agm -wng -( -dib - : 4522) - -17 -mea - - gARDUINOJSON_NAMESPACE - { - -19 - gme - < -tyme - - gTAay -> - -20 -ass - - gEmtProxy - : -public - -VOts -< -EmtProxy -< -TAay -> >, - -21 -public - - gVShtcuts -< - gEmtProxy -< - gTAay -> >, - -22 -public - - gVisab - { - -23  - gEmtProxy -< - tTAay -> - tthis_ty -; - -25 - gpublic -: - -26 -FORCE_INLINE - -EmtProxy -( -TAay - -y -, -size_t - -dex -) - -27 : -_y -( -y -), -_dex -( -dex -) {} - -29 -FORCE_INLINE - -EmtProxy -(cڡ EmtProxy& -c -) - -30 : -_y -( -c -._y), -_dex -(src._index) {} - -32 -FORCE_INLINE - - gthis_ty -& - gݔ -=(cڡ -this_ty -& -c -) { - -33 -gOrAddUpamEmt -(). -t -( -c -. -as -< -VCڡRef ->()); - -34  * - gthis -; - -42 - gme - < -tyme - - gT -> - -43 -FORCE_INLINE - - gthis_ty -& - gݔ -=(cڡ -T -& -c -) { - -44 -gOrAddUpamEmt -(). -t -( -c -); - -45  * - gthis -; - -50 - gme - < -tyme - - gT -> - -51 -FORCE_INLINE - - gthis_ty -& - gݔ -=( -T -* -c -) { - -52 -gOrAddUpamEmt -(). -t -( -c -); - -53  * - gthis -; - -56 -FORCE_INLINE -  -r -() const { - -57 -gUpamEmt -(). -r -(); - -60 -FORCE_INLINE - -bo - -isNu -() const { - -61  -gUpamEmt -(). -isNu -(); - -64 - gme - < -tyme - - gT -> - -65 -FORCE_INLINE - -tyme - - gVAs -< - gT ->:: -ty - -as -() const { - -66  -gUpamEmt -(). -me - -as -< -T ->(); - -69 - gme - < -tyme - - gT -> - -70 -FORCE_INLINE - -ݔ - -T -() const { - -71  -gUpamEmt -(); - -74 - gme - < -tyme - - gT -> - -75 -FORCE_INLINE - -bo - -is -() const { - -76  -gUpamEmt -(). -me - - gis -< - gT ->(); - -79 - gme - < -tyme - - gT -> - -80 -FORCE_INLINE - -tyme - - gVTo -< - gT ->:: -ty - -to -() const { - -81  -gOrAddUpamEmt -(). -me - -to -< -T ->(); - -89 - gme - < -tyme - - gTVue -> - -90 -FORCE_INLINE - -bo - -t -(cڡ -TVue -& -vue -) const { - -91  -gOrAddUpamEmt -(). -t -( -vue -); - -96 - gme - < -tyme - - gTVue -> - -97 -FORCE_INLINE - -bo - -t -( -TVue -* -vue -) const { - -98  -gOrAddUpamEmt -(). -t -( -vue -); - -101 - gme - < -tyme - - gTVis -> - -102 -tyme - - gTVis -:: -su_ty - -ac -( -TVis -& -vis -) const { - -103  -gUpamEmt -(). -ac -( -vis -); - -106 -FORCE_INLINE - -size_t - -size -() const { - -107  -gUpamEmt -(). -size -(); - -110 - gme - < -tyme - - gTNeedKey -> - -111 -VRef - -gMemb -( -TNeedKey -* -key -) const { - -112  -gUpamEmt -(). -gMemb -( -key -); - -115 - gme - < -tyme - - gTNeedKey -> - -116 -VRef - -gMemb -(cڡ -TNeedKey -& -key -) const { - -117  -gUpamEmt -(). -gMemb -( -key -); - -120 - gme - < -tyme - - gTNeedKey -> - -121 -VRef - -gOrAddMemb -( -TNeedKey -* -key -) const { - -122  -gOrAddUpamEmt -(). -gOrAddMemb -( -key -); - -125 - gme - < -tyme - - gTNeedKey -> - -126 -VRef - -gOrAddMemb -(cڡ -TNeedKey -& -key -) const { - -127  -gOrAddUpamEmt -(). -gOrAddMemb -( -key -); - -130 -VRef - -addEmt -() const { - -131  -gOrAddUpamEmt -(). -addEmt -(); - -134 -VRef - -gEmt -( -size_t - -dex -) const { - -135  -gOrAddUpamEmt -(). -gEmt -( -dex -); - -138 -VRef - -gOrAddEmt -( -size_t - -dex -) const { - -139  -gOrAddUpamEmt -(). -gOrAddEmt -( -dex -); - -142 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -143 -gUpamEmt -(). -move -( -dex -); - -148 - gme - < -tyme - - gTCh -> - -149 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue ->:: -ty - -move -( - -150 -TCh -* -key -) const { - -151 -gUpamEmt -(). -move -( -key -); - -155 - gme - < -tyme - - gTSg -> - -156 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -157 cڡ -TSg -& -key -) const { - -158 -gUpamEmt -(). -move -( -key -); - -161 - give -: - -162 -FORCE_INLINE - -VRef - -gUpamEmt -() const { - -163  -_y -. -gEmt -( -_dex -); - -166 -FORCE_INLINE - -VRef - -gOrAddUpamEmt -() const { - -167  - g_y -. -gOrAddEmt -( -_dex -); - -170 -TAay - - g_y -; - -171 cڡ -size_t - - g_dex -; - -176 #ifde -_MSC_VER - - -177 #agm -wng -( -p -) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gT -, -size_t - - gN -,ym - gTDei -> - -14 -le - -tyme - - gab_if -:: -vue - && - -15 ! -is_ba_of -< -JsDocumt -, - gTDei ->:: -vue -, - -16 - gbo ->:: -ty - - -17 -cyAay -( -T - (& -c -)[ -N -], cڡ -TDei -& -d -) { - -18  -cyAay -( -c -, -N -, -d -); - -22 - gme - < -tyme - - gT -, -size_t - - gN -> - -23 -le - -bo - -cyAay -( -T - (& -c -)[ -N -], -JsDocumt -& -d -) { - -24  -cyAay -( -c -, -d -. -to -< -AayRef ->()); - -28 - gme - < -tyme - - gT -,ym - gTDei -> - -29 -le - -tyme - - gab_if -:: -vue - && - -30 ! -is_ba_of -< -JsDocumt -, - gTDei ->:: -vue -, - -31 - gbo ->:: -ty - - -32 -cyAay -( -T -* -c -, -size_t - -n -, cڡ -TDei -& -d -) { - -33 -bo - - gok - = -ue -; - -34  -size_t - - gi - = 0; i < - gn -; i++) { - -35 - gok - & -d -. -add -( -c -[ -i -]); - -37  - gok -; - -41 - gme - < -tyme - - gT -> - -42 -le - -bo - -cyAay -( -T -* -c -, -size_t - -n -, -JsDocumt -& -d -) { - -43  -cyAay -( -c -, -n -, -d -. -to -< -AayRef ->()); - -47 - gme - < -tyme - - gT -, -size_t - - gN1 -, size_ - gN2 -,ym - gTDei -> - -48 -le - -tyme - - gab_if -:: -vue -, - -49 - gbo ->:: -ty - - -50 -cyAay -( -T - (& -c -)[ -N1 -][ -N2 -], cڡ -TDei -& -d -) { - -51 -bo - - gok - = -ue -; - -52  -size_t - - gi - = 0; i < - gN1 -; i++) { - -53 -AayRef - - gáedAay - = -d -. -NeedAay -(); - -54  -size_t - - gj - = 0; j < - gN2 -; j++) { - -55 - gok - & -áedAay -. -add -( -c -[ -i -][ -j -]); - -58  - gok -; - -62 - gme - < -tyme - - gT -, -size_t - - gN1 -, size_ - gN2 -> - -63 -le - -bo - -cyAay -( -T - (& -c -)[ -N1 -][ -N2 -], -JsDocumt -& -d -) { - -64  -cyAay -( -c -, -d -. -to -< -AayRef ->()); - -67 - gme - < -tyme - - gT -> - -68 -ass - - gAayCݛr1D - : -public - -Vis -< -size_t -> { - -69 -public -: - -70 -AayCݛr1D -( -T -* -dei -, -size_t - -cy -) - -71 : -_dei -( -dei -), -_cy -( -cy -) {} - -73 -size_t - -visAay -(cڡ -CiDa -& -y -) { - -74 -size_t - - gsize - = 0; - -75 -VSl -* - g - = -y -. -hd -(); - -77  - g - !0 && -size - < -_cy -) { - -78 -_dei -[ -size -++] = -vAs -< -T ->( - --> -da -()); - -79 - g - = - --> -xt -(); - -81  - gsize -; - -84 -size_t - -visObje -(cڡ -CiDa -&) { - -88 -size_t - -visFlt -( -Flt -) { - -92 -size_t - -visSg -(const *) { - -96 -size_t - -visRawJs -(const *, size_t) { - -100 -size_t - -visNegiveIeg -( -UI -) { - -104 -size_t - -visPosiveIeg -( -UI -) { - -108 -size_t - -visBoޗn -( -bo -) { - -112 -size_t - -visNu -() { - -116 - give -: - -117 -T -* -_dei -; - -118 -size_t - - g_cy -; - -121 - gme - < -tyme - - gT -, -size_t - - gN1 -, size_ - gN2 -> - -122 -ass - - gAayCݛr2D - : -public - -Vis -<> { - -123 -public -: - -124 -AayCݛr2D -( -T - (* -dei -)[ -N1 -][ -N2 -]: -_dei -(destination) {} - -126  -visAay -(cڡ -CiDa -& -y -) { - -127 -VSl -* - - = -y -. -hd -(); - -128 -size_t - - gn - = 0; - -129  - g - !0 && -n - < -N1 -) { - -130 -AayCݛr1D -< -T -> -cݛr -((* -_dei -)[ -n -++], -N2 -); - -131 -vAc -( - --> -da -(), -cݛr -); - -132 - g - = - --> -xt -(); - -135  -visObje -(cڡ -CiDa -&) {} - -136  -visFlt -( -Flt -) {} - -137  -visSg -(const *) {} - -138  -visRawJs -(cڡ *, -size_t -) {} - -139  -visNegiveIeg -( -UI -) {} - -140  -visPosiveIeg -( -UI -) {} - -141  -visBoޗn -( -bo -) {} - -142  -visNu -() {} - -144 - give -: - -145 -T - (* -_dei -)[ -N1 -][ -N2 -]; - -146 -size_t - - g_cy1 -, - g_cy2 -; - -150 - gme - < -tyme - - gTSour -,ym - gT -, -size_t - - gN -> - -151 -le - -tyme - - gab_if -:: -vue -, - gsize_t ->:: -ty - -cyAay -( - -152 cڡ -TSour -& -c -, -T - (& -d -)[ -N -]) { - -153  -cyAay -( -c -, -d -, -N -); - -157 - gme - < -tyme - - gTSour -,ym - gT -> - -158 -le - -size_t - -cyAay -(cڡ -TSour -& -c -, -T -* -d -, size_ -n -) { - -159 - gAayCݛr1D -< - gT -> -cݛr -( -d -, -n -); - -161  - gc -. -ac -( -cݛr -); - -165 - gme - < -tyme - - gTSour -,ym - gT -, -size_t - - gN1 -, size_ - gN2 -> - -166 -le -  -cyAay -(cڡ -TSour -& -c -, -T - (& -d -)[ -N1 -][ -N2 -]) { - -167 - gAayCݛr2D -< - gT -, - gN1 -, - gN2 -> -cݛr -(& -d -); - -168 - gc -. -ac -( -cݛr -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 -ass - - gMemyPo -; - -15 -ass - - gVDa -; - -16 -ass - - gVSl -; - -18 as - cCiDa - { - -19 -VSl - * - g_hd -; - -20 -VSl - * - g_ -; - -22 - gpublic -: - -31 -VDa - * -addEmt -( -MemyPo - * -po -); - -33 -VDa - * -gEmt -( -size_t - -dex -) const; - -35 -VDa - * -gOrAddEmt -( -size_t - -dex -, -MemyPo - * -po -); - -37  -moveEmt -( -size_t - -dex -); - -39 -bo - -equsAay -(cڡ -CiDa - & -h -) const; - -43 - gme - < -tyme - - gTAddSg -> - -44 -VDa - * -addMemb -( -TAddSg - -key -, -MemyPo - * -po -); - -46 - gme - < -tyme - - gTAddSg -> - -47 -VDa - * -gMemb -( -TAddSg - -key -) const; - -49 - gme - < -tyme - - gTAddSg -> - -50 -VDa - * -gOrAddMemb -( -TAddSg - -key -, -MemyPo - * -po -); - -52 - gme - < -tyme - - gTAddSg -> - -53  -moveMemb -( -TAddSg - -key -) { - -54 -moveSl -( -gSl -( -key -)); - -57 - gme - < -tyme - - gTAddSg -> - -58 -bo - -cڏsKey -(cڡ -TAddSg - & -key -) const; - -60 -bo - -equsObje -(cڡ -CiDa - & -h -) const; - -64  -r -(); - -65 -size_t - -memyUge -() const; - -66 -size_t - -ág -() const; - -67 -size_t - -size -() const; - -69 -VSl - * -addSl -( -MemyPo - *); - -70  -moveSl -( -VSl - * - -); - -72 -bo - -cyFrom -(cڡ -CiDa - & -c -, -MemyPo - * -po -); - -74 -VSl - * -hd -() const { - -75  - g_hd -; - -78  -movePors -( -rdiff_t - -rgDi -,diff_ -vDi -); - -80 - give -: - -81 -VSl - * -gSl -( -size_t - -dex -) const; - -83 - gme - < -tyme - - gTAddSg -> - -84 -VSl - * -gSl -( -TAddSg - -key -) const; - -86 -VSl - * -gPviousSl -(VariantSlot *) const; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 -le - -bo - -vEqus -(cڡ -VDa -* -a -, cڡ VDa* -b -) { - -13  -vCom -( -a -, -b -= -COMPARE_RESULT_EQUAL -; - -16 -le - -VSl -* - gCiDa -:: -addSl -( -MemyPo -* -po -) { - -17 -VSl -* - - = -po --> -locV -(); - -18 i(! - g -) - -21 i( - g_ -) { - -22 - g_ --> -tNextNNu -( - -); - -23 - g_ - = - -; - -25 - g_hd - = - -; - -26 - g_ - = - -; - -29 - g --> -r -(); - -30  - g -; - -33 -le - -VDa -* - gCiDa -:: -addEmt -( -MemyPo -* -po -) { - -34  -Da -( -addSl -( -po -)); - -37 - gme - < -tyme - - gTAddSg -> - -38 -le - -VDa -* - gCiDa -:: -addMemb -( -TAddSg - -key -, - -39 -MemyPo -* -po -) { - -40 -VSl -* - g - = -addSl -( -po -); - -41 i(! -SKey -( - -, -key -, -po -)) { - -42 -moveSl -( - -); - -45  - g --> -da -(); - -48 -le -  - gCiDa -:: -r -() { - -49 -_hd - = 0; - -50 - g_ - = 0; - -53 - gme - < -tyme - - gTAddSg -> - -54 -le - -bo - - gCiDa -:: -cڏsKey -(cڡ -TAddSg -& -key -) const { - -55  -gSl -( -key -) != 0; - -58 -le - -bo - - gCiDa -:: -cyFrom -(cڡ -CiDa -& -c -, - -59 -MemyPo -* -po -) { - -60 -r -(); - -61  -VSl -* - gs - = -c -. -_hd -; s; s = -s --> -xt -()) { - -62 -VDa -* -v -; - -63 i( - gs --> -key -() != 0) { - -64 i( -s --> -ownsKey -()) - -65 -v - = -addMemb -( -RamSgAdr -( -s --> -key -()), -po -); - -67 - gv - = -addMemb -( -CڡRamSgAdr -( -s --> -key -()), -po -); - -69 - gv - = -addEmt -( -po -); - -71 i(! - gv -) - -72  - gl -; - -73 i(! - gv --> -cyFrom -(* -s --> -da -(), -po -)) - -74  - gl -; - -76  - gue -; - -79 -le - -bo - - gCiDa -:: -equsObje -(cڡ -CiDa -& -h -) const { - -80 -size_t - -cou - = 0; - -81  -VSl -* - g - = -_hd -; sl; sl = - --> -xt -()) { - -82 -VDa -* -v1 - = - --> -da -(); - -83 -VDa -* - gv2 - = -h -. -gMemb -( -adtSg -( - --> -key -())); - -84 i(! -vEqus -( -v1 -, -v2 -)) - -85  - gl -; - -86 - gcou -++; - -88  - gcou - = -h -. -size -(); - -91 -le - -bo - - gCiDa -:: -equsAay -(cڡ -CiDa -& -h -) const { - -92 -VSl -* -s1 - = -_hd -; - -93 -VSl -* - gs2 - = -h -. -_hd -; - -95 i( - gs1 - = -s2 -) - -96  -ue -; - -97 i(! - gs1 - || ! - gs2 -) - -98  - gl -; - -99 i(! -vEqus -( -s1 --> -da -(), -s2 -->data())) - -100  - gl -; - -101 - gs1 - = -s1 --> -xt -(); - -102 - gs2 - = -s2 --> -xt -(); - -106 - gme - < -tyme - - gTAddSg -> - -107 -le - -VSl -* - gCiDa -:: -gSl -( -TAddSg - -key -) const { - -108 -VSl -* - - = -_hd -; - -109  - g -) { - -110 i( - gkey -. -equs -( - --> -key -())) - -112 - g - = - --> -xt -(); - -114  - g -; - -117 -le - -VSl -* - gCiDa -:: -gSl -( -size_t - -dex -) const { - -118  -_hd --> -xt -( -dex -); - -121 -le - -VSl -* - gCiDa -:: -gPviousSl -(VSl* -rg -) const { - -122 -VSl -* -cut - = -_hd -; - -123  - gcut -) { - -124 -VSl -* - gxt - = -cut --> -xt -(); - -125 i( - gxt - = -rg -) - -126  -cut -; - -127 - gcut - = -xt -; - -132 - gme - < -tyme - - gTAddSg -> - -133 -le - -VDa -* - gCiDa -:: -gMemb -( -TAddSg - -key -) const { - -134 -VSl -* - - = -gSl -( -key -); - -135  - g - ? sl-> -da -() : 0; - -138 - gme - < -tyme - - gTAddSg -> - -139 -le - -VDa -* - gCiDa -:: -gOrAddMemb -( -TAddSg - -key -, - -140 -MemyPo -* -po -) { - -142 i( - gkey -. -isNu -()) - -146 -VSl -* - g - = -gSl -( -key -); - -147 i( - g -) - -148  - g --> -da -(); - -150  -addMemb -( -key -, -po -); - -153 -le - -VDa -* - gCiDa -:: -gEmt -( -size_t - -dex -) const { - -154 -VSl -* - - = -gSl -( -dex -); - -155  - g - ? sl-> -da -() : 0; - -158 -le - -VDa -* - gCiDa -:: -gOrAddEmt -( -size_t - -dex -, - -159 -MemyPo -* -po -) { - -160 -VSl -* - g - = -_hd -; - -161  - g - && - gdex - > 0) { - -162 - g - = - --> -xt -(); - -163 - gdex ---; - -165 i(! - g -) - -166 - gdex -++; - -167  - gdex - > 0) { - -168 - g - = -addSl -( -po -); - -169 - gdex ---; - -171  -Da -( - -); - -174 -le -  - gCiDa -:: -moveSl -( -VSl -* - -) { - -175 i(! - -) - -177 -VSl -* - gev - = -gPviousSl -( - -); - -178 -VSl -* - gxt - = - --> -xt -(); - -179 i( - gev -) - -180 - gev --> -tNext -( -xt -); - -182 - g_hd - = -xt -; - -183 i(! - gxt -) - -184 - g_ - = -ev -; - -187 -le -  - gCiDa -:: -moveEmt -( -size_t - -dex -) { - -188 -moveSl -( -gSl -( -dex -)); - -191 -le - -size_t - - gCiDa -:: -memyUge -() const { - -192 -size_t - -tٮ - = 0; - -193  -VSl -* - gs - = -_hd -; s; s = -s --> -xt -()) { - -194 -tٮ - +( -VSl -+ -s --> -da -()-> -memyUge -(); - -195 i( - gs --> -ownsKey -()) - -196 - gtٮ - + - -( -s --> -key -()) + 1; - -198  - gtٮ -; - -201 -le - -size_t - - gCiDa -:: -ág -() const { - -202 -size_t - -maxChdNeg - = 0; - -203  -VSl -* - gs - = -_hd -; s; s = -s --> -xt -()) { - -204 -size_t - -chdNeg - = -s --> -da -()-> -ág -(); - -205 i( - gchdNeg - > - gmaxChdNeg -) - -206 - gmaxChdNeg - = -chdNeg -; - -208  - gmaxChdNeg - + 1; - -211 -le - -size_t - - gCiDa -:: -size -() const { - -212  -Size -( -_hd -); - -215 - gme - < -tyme - - gT -> - -216 -le -  -movePor -( -T -*& -p -, -rdiff_t - -offt -) { - -217 i(! - gp -) - -219 - gp - = -t_ -< -T -*>( - -220 -t_ -<*>et_<*>( -p -+ -offt -)); - -221 -ARDUINOJSON_ASSERT -( -isAligd -( -p -)); - -224 -le -  - gCiDa -:: -movePors -( -rdiff_t - -rgDi -, - -225 -rdiff_t - -vDi -) { - -226 -movePor -( -_hd -, -vDi -); - -227 -movePor -( -_ -, -vDi -); - -228  -VSl -* - g - = -_hd -; sl; sl = - --> -xt -()) - -229 - --> -movePors -( -rgDi -, -vDi -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp - -5 #agm - - - -7 #i -__lulus - >= 201103L - -8  - #ARDUINOJSON_HAS_LONG_LONG - 1 - - ) - -9  - #ARDUINOJSON_HAS_NULLPTR - 1 - - ) - -10  - #ARDUINOJSON_HAS_RVALUE_REFERENCES - 1 - - ) - -12  - #ARDUINOJSON_HAS_LONG_LONG - 0 - - ) - -13  - #ARDUINOJSON_HAS_NULLPTR - 0 - - ) - -14  - #ARDUINOJSON_HAS_RVALUE_REFERENCES - 0 - - ) - -17 #i -defed -( -_MSC_VER -&& ! -ARDUINOJSON_HAS_LONG_LONG - - -18  - #ARDUINOJSON_HAS_INT64 - 1 - - ) - -20  - #ARDUINOJSON_HAS_INT64 - 0 - - ) - -24 #ide -ARDUINOJSON_EMBEDDED_MODE - - -25 #i -defed -( -ARDUINO -) \ - -26 || -defed -( -__IAR_SYSTEMS_ICC__ -) \ - -27 || -defed -( -__XC -) \ - -28 || -defed -( -__ARMCC_VERSION -) \ - -29 || - $defed -( -__AVR -) - -30  - #ARDUINOJSON_EMBEDDED_MODE - 1 - - ) - -32  - #ARDUINOJSON_EMBEDDED_MODE - 0 - - ) - -38 #i! - `defed -( -ARDUINOJSON_ENABLE_STD_STREAM -&& defed( -__has_ude -) - -39 #i - `__has_ude -(< -iam ->) && \ - -40 - `__has_ude -(< -oam ->) && \ - -41 ! - `defed -( -m -) && \ - -42 ! - $defed -( -max -) - -43  - #ARDUINOJSON_ENABLE_STD_STREAM - 1 - - ) - -45  - #ARDUINOJSON_ENABLE_STD_STREAM - 0 - - ) - -51 #i! - `defed -( -ARDUINOJSON_ENABLE_STD_STRING -&& defed( -__has_ude -) - -52 #i - `__has_ude -(< -rg ->&& ! - `defed -( -m -&& !defed( -max -) - -53  - #ARDUINOJSON_ENABLE_STD_STRING - 1 - - ) - -55  - #ARDUINOJSON_ENABLE_STD_STRING - 0 - - ) - -59 #i -ARDUINOJSON_EMBEDDED_MODE - - -62 #ide -ARDUINOJSON_USE_DOUBLE - - -63  - #ARDUINOJSON_USE_DOUBLE - 0 - - ) - -67 #ide -ARDUINOJSON_USE_LONG_LONG - - -68  - #ARDUINOJSON_USE_LONG_LONG - 0 - - ) - -72 #ide -ARDUINOJSON_ENABLE_STD_STRING - - -73  - #ARDUINOJSON_ENABLE_STD_STRING - 0 - - ) - -77 #ide -ARDUINOJSON_ENABLE_STD_STREAM - - -78  - #ARDUINOJSON_ENABLE_STD_STREAM - 0 - - ) - -82 #ide -ARDUINOJSON_DEFAULT_NESTING_LIMIT - - -83  - #ARDUINOJSON_DEFAULT_NESTING_LIMIT - 10 - - ) - -89 #ide -ARDUINOJSON_USE_DOUBLE - - -90  - #ARDUINOJSON_USE_DOUBLE - 1 - - ) - -94 #ide -ARDUINOJSON_USE_LONG_LONG - - -95 #i -ARDUINOJSON_HAS_LONG_LONG - || -ARDUINOJSON_HAS_INT64 - - -96  - #ARDUINOJSON_USE_LONG_LONG - 1 - - ) - -98  - #ARDUINOJSON_USE_LONG_LONG - 0 - - ) - -103 #ide -ARDUINOJSON_ENABLE_STD_STRING - - -104  - #ARDUINOJSON_ENABLE_STD_STRING - 1 - - ) - -108 #ide -ARDUINOJSON_ENABLE_STD_STREAM - - -109  - #ARDUINOJSON_ENABLE_STD_STREAM - 1 - - ) - -113 #ide -ARDUINOJSON_DEFAULT_NESTING_LIMIT - - -114  - #ARDUINOJSON_DEFAULT_NESTING_LIMIT - 50 - - ) - -119 #ifde -ARDUINO - - -121  - ~ - -124 #ide -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -125  - #ARDUINOJSON_ENABLE_ARDUINO_STRING - 1 - - ) - -129 #ide -ARDUINOJSON_ENABLE_ARDUINO_STREAM - - -130  - #ARDUINOJSON_ENABLE_ARDUINO_STREAM - 1 - - ) - -134 #ide -ARDUINOJSON_ENABLE_ARDUINO_PRINT - - -135  - #ARDUINOJSON_ENABLE_ARDUINO_PRINT - 1 - - ) - -141 #ide -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -142  - #ARDUINOJSON_ENABLE_ARDUINO_STRING - 0 - - ) - -146 #ide -ARDUINOJSON_ENABLE_ARDUINO_STREAM - - -147  - #ARDUINOJSON_ENABLE_ARDUINO_STREAM - 0 - - ) - -151 #ide -ARDUINOJSON_ENABLE_ARDUINO_PRINT - - -152  - #ARDUINOJSON_ENABLE_ARDUINO_PRINT - 0 - - ) - -157 #ide -ARDUINOJSON_ENABLE_PROGMEM - - -158 #ifde -PROGMEM - - -159  - #ARDUINOJSON_ENABLE_PROGMEM - 1 - - ) - -161  - #ARDUINOJSON_ENABLE_PROGMEM - 0 - - ) - -166 #ide -ARDUINOJSON_DECODE_UNICODE - - -167  - #ARDUINOJSON_DECODE_UNICODE - 1 - - ) - -171 #ide -ARDUINOJSON_ENABLE_COMMENTS - - -172  - #ARDUINOJSON_ENABLE_COMMENTS - 0 - - ) - -176 #ide -ARDUINOJSON_ENABLE_NAN - - -177  - #ARDUINOJSON_ENABLE_NAN - 0 - - ) - -181 #ide -ARDUINOJSON_ENABLE_INFINITY - - -182  - #ARDUINOJSON_ENABLE_INFINITY - 0 - - ) - -187 #ide -ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD - - -188  - #ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD - 1e7 - - ) - -192 #ide -ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD - - -193  - #ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD - 1e-5 - - ) - -196 #ide -ARDUINOJSON_LITTLE_ENDIAN - - -197 #i - `defed -( -_MSC_VER -) || \ - -198 ( - `defed -( -__BYTE_ORDER__ -&& __BYTE_ORDER__ = -__ORDER_LITTLE_ENDIAN__ -) || \ - -199 - `defed -( -__LITTLE_ENDIAN__ -|| defed( -__i386 -|| - $defed -( -__x86_64 -) - -200  - #ARDUINOJSON_LITTLE_ENDIAN - 1 - - ) - -202  - #ARDUINOJSON_LITTLE_ENDIAN - 0 - - ) - -206 #ide -ARDUINOJSON_ENABLE_ALIGNMENT - - -207 #i - `defed -( -__AVR -) - -208  - #ARDUINOJSON_ENABLE_ALIGNMENT - 0 - - ) - -210  - #ARDUINOJSON_ENABLE_ALIGNMENT - 1 - - ) - -214 #ide -ARDUINOJSON_TAB - - -215  - #ARDUINOJSON_TAB - " " - - ) - -218 #ide -ARDUINOJSON_ENABLE_STRING_DEDUPLICATION - - -219  - #ARDUINOJSON_ENABLE_STRING_DEDUPLICATION - 1 - - ) - -222 #ide -ARDUINOJSON_STRING_BUFFER_SIZE - - -223  - #ARDUINOJSON_STRING_BUFFER_SIZE - 32 - - ) - -226 #ide -ARDUINOJSON_DEBUG - - -227 #ifde -__PLATFORMIO_BUILD_DEBUG__ - - -228  - #ARDUINOJSON_DEBUG - 1 - - ) - -230  - #ARDUINOJSON_DEBUG - 0 - - ) - -234 #i -ARDUINOJSON_HAS_NULLPTR - && - `defed -( -nuαr -) - -235  -nuαr - -is - -defed - -as - -a - -mao -. -Remove - -the - -uy - #def - # - #unde - ) -nullptr - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -12  - ~ - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -17 as - cDerliziE - { - -19 ( - gDerliziE -::* - tbo_ty -)() const; - -20  -BoHr -() const {} - -22 - gpublic -: - -23 - eCode - { - -24 -Ok -, - -25 - gEmyIut -, - -26 - gIncomeIut -, - -27 - gInvidIut -, - -28 - gNoMemy -, - -29 - gNSu܋d -, - -30 - gTooDp - - -33 -DerliziE -() {} - -34 -DerliziE -( -Code - -c -: -_code -(c) {} - -37 -nd - -bo - -ݔ -==(cڡ -DerliziE -& -lhs -, - -38 cڡ - gDerliziE -& - grhs -) { - -39  - glhs -. - g_code - = -rhs -. -_code -; - -41 -nd - -bo - - gݔ -!=(cڡ -DerliziE -& -lhs -, - -42 cڡ - gDerliziE -& - grhs -) { - -43  - glhs -. - g_code - ! -rhs -. -_code -; - -47 -nd - -bo - - gݔ -==(cڡ -DerliziE -& -lhs -, -Code - - grhs -) { - -48  - glhs -. - g_code - = -rhs -; - -50 -nd - -bo - - gݔ -==( -Code - -lhs -, cڡ - gDerliziE -& - grhs -) { - -51  - glhs - = -rhs -. -_code -; - -53 -nd - -bo - - gݔ -!=(cڡ -DerliziE -& -lhs -, -Code - - grhs -) { - -54  - glhs -. - g_code - ! -rhs -; - -56 -nd - -bo - - gݔ -!=( -Code - -lhs -, cڡ - gDerliziE -& - grhs -) { - -57  - glhs - ! -rhs -. -_code -; - -61 -ݔ - -bo_ty -() const { - -62  - g_code - ! -Ok - ? & -DerliziE -:: -BoHr - : 0; - -64 -nd - -bo - - gݔ -==(bo -vue -, cڡ - gDerliziE -& - gr -) { - -65  - gic_ -< - gbo ->( - gr -= -vue -; - -67 -nd - -bo - - gݔ -==(cڡ -DerliziE -& -r -, bo - gvue -) { - -68  - gic_ -< - gbo ->( - gr -= -vue -; - -70 -nd - -bo - - gݔ -!=(bo -vue -, cڡ - gDerliziE -& - gr -) { - -71  - gic_ -< - gbo ->( - gr -! -vue -; - -73 -nd - -bo - - gݔ -!=(cڡ -DerliziE -& -r -, bo - gvue -) { - -74  - gic_ -< - gbo ->( - gr -! -vue -; - -78 -Code - -code -() const { - -79  - g_code -; - -82 cڡ * -c_r -() const { - -83 cڡ * - gmesges -[] = { - -86 -ARDUINOJSON_ASSERT -( -ic_ -< -size_t ->( -_code -) < - -87 ( -mesges -) / (messages[0])); - -88  - gmesges -[ -_code -]; - -91 #i -ARDUINOJSON_ENABLE_PROGMEM - - -92 cڡ -__FshSgHr -* -f_r -() const { - -93 -ARDUINOJSON_DEFINE_STATIC_ARRAY -(, -s0 -, "Ok"); - -94 -ARDUINOJSON_DEFINE_STATIC_ARRAY -(, -s1 -, "EmptyInput"); - -95 -ARDUINOJSON_DEFINE_STATIC_ARRAY -(, -s2 -, "IncompleteInput"); - -96 -ARDUINOJSON_DEFINE_STATIC_ARRAY -(, -s3 -, "InvalidInput"); - -97 -ARDUINOJSON_DEFINE_STATIC_ARRAY -(, -s4 -, "NoMemory"); - -98 -ARDUINOJSON_DEFINE_STATIC_ARRAY -(, -s5 -, "NotSupported"); - -99 -ARDUINOJSON_DEFINE_STATIC_ARRAY -(, -s6 -, "TooDeep"); - -100 -ARDUINOJSON_DEFINE_STATIC_ARRAY -( - -101 cڡ *, -mesges -, - -102 -ARDUINOJSON_EXPAND7 -({ -s0 -, -s1 -, -s2 -, -s3 -, -s4 -, -s5 -, -s6 -})); - -103  -ARDUINOJSON_READ_STATIC_ARRAY -(cڡ -__FshSgHr -*, -mesges -, - -104 -_code -); - -108 - give -: - -109 -Code - -_code -; - -112 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -113 -le - - gd -:: -oam -& -ݔ -<<( -d -::oam& -s -, - -114 cڡ - gDerliziE -& - ge -) { - -115 - gs - << - ge -. -c_r -(); - -116  - gs -; - -119 -le - - gd -:: -oam -& -ݔ -<<( -d -::oam& -s -, - gDerliziE -:: -Code - -c -) { - -120 -s - << -DerliziE -( -c -). -c_r -(); - -121  - gs -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cFr - { - -12 - gpublic -: - -13 -exic - -Fr -( -VCڡRef - -v -: -_v -(v) {} - -15 -bo - -low -() const { - -16  -_v -; - -19 -bo - -lowAay -() const { - -20  - g_v - = -ue - || -_v -. -is -< -AayRef ->(); - -23 -bo - -lowObje -() const { - -24  - g_v - = -ue - || -_v -. -is -< -ObjeRef ->(); - -27 -bo - -lowVue -() const { - -28  - g_v - = -ue -; - -31 - gme - < -tyme - - gTKey -> - -32 -Fr - - gݔ -[](cڡ - gTKey -& - gkey -) const { - -33 i( - g_v - = -ue -) - -34  * -this -; - -36  -Fr -( -_v -[ -key -] | _variant["*"]); - -39 - give -: - -40 -VCڡRef - -_v -; - -43  - sAowAFr - { - -44 -bo - -low -() const { - -45  - gue -; - -48 -bo - -lowAay -() const { - -49  - gue -; - -52 -bo - -lowObje -() const { - -53  - gue -; - -56 -bo - -lowVue -() const { - -57  - gue -; - -60 - gme - < -tyme - - gTKey -> - -61 -AowAFr - - gݔ -[](cڡ - gTKey -&) const { - -62  -AowAFr -(); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cNegLim - { - -13 - gpublic -: - -14 -NegLim -(: -_vue -( -ARDUINOJSON_DEFAULT_NESTING_LIMIT -) {} - -15 -exic - -NegLim -( -ut8_t - -n -: -_vue -(n) {} - -17 -NegLim - -deemt -() const { - -18 -ARDUINOJSON_ASSERT -( -_vue - > 0); - -19  -NegLim -( -ic_ -< -ut8_t ->( -_vue - - 1)); - -22 -bo - -ached -() const { - -23  - g_vue - == 0; - -26 - give -: - -27 -ut8_t - -_vue -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -tyme - - gTSour -,ym - gEb - = > - -15  - sRd - { - -16 -public -: - -17 -Rd -( -TSour -& -sour -: -_sour -(&source) {} - -19  -ad -() { - -20  -_sour --> -ad -(); - -23 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -24  - g_sour --> -adBys -( -bufr -, -ngth -); - -27 - give -: - -28 -TSour -* -_sour -; - -31 - gme - < -tyme - - gTSour -,ym - gEb - = > - -32  - sBoundedRd - { - -38  - ~ - -39  - ~ - -40  - ~ - -42 #i -ARDUINOJSON_ENABLE_ARDUINO_STREAM - - -43  - ~ - -46 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -47  - ~ - -50 #i -ARDUINOJSON_ENABLE_PROGMEM - - -51  - ~ - -54 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -55  - ~ - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTSour -> - -12  - gRd -< - gTSour -, - -13 -tyme - - gab_if -< - gis_ba_of -< - gSm -, - gTSour ->:: -vue ->:: -ty -> { - -14 -public -: - -15 -exic - -Rd -( -Sm -& -am -: -_am -(&stream) {} - -17  -ad -() { - -19  -c -; - -20  - g_am --> -adBys -(& -c -, 1? - gic_ -<>( - gc -) : -1; - -23 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -24  - g_am --> -adBys -( -bufr -, -ngth -); - -27 - give -: - -28 -Sm -* -_am -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - < -tyme - - gTSour -> - -10  - gRd -< - gTSour -, - -11 -tyme - - gab_if -< - gis_ba_of -< :: -Sg -, - gTSour ->:: -vue ->:: -ty -> - -12 : -BoundedRd - { - -13 -exic - -Rd -(cڡ :: -Sg -& -s -) - -14 : -BoundedRd -( -s -. -c_r -(), - gs -. -ngth -()) {} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - <> - -10  - gRd - { - -11 cڡ * - g_r -; - -13 - gpublic -: - -14 -exic - -Rd -(cڡ -__FshSgHr -* -r -) - -15 : -_r -( -t_ -( -r -)) {} - -17  -ad -() { - -18  -pgm_ad_by -( -_r -++); - -21 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -22 -memy_P -( -bufr -, -_r -, -ngth -); - -23 - g_r - + -ngth -; - -24  - gngth -; - -28 - gme - <> - -29  - gBoundedRd - { - -30 cڡ * - g_r -; - -31 cڡ * - g_d -; - -33 - gpublic -: - -34 -exic - -BoundedRd -(cڡ -__FshSgHr -* -r -, -size_t - -size -) - -35 : -_r -( -t_ -( -r -)), -_d -(_+ -size -) {} - -37  -ad -() { - -38 i( - g_r - < - g_d -) - -39  -pgm_ad_by -( -_r -++); - -44 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -45 -size_t - - gavaab - = -ic_ -( -_d - - -_r -); - -46 i( - gavaab - < - gngth -) - -47 - gngth - = -avaab -; - -48 -memy_P -( -bufr -, -_r -, -ngth -); - -49 - g_r - + -ngth -; - -50  - gngth -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - < -tyme - - gTIt -> - -10 as - cItRd - { - -11 -TIt - - g_r -, - g_d -; - -13 - gpublic -: - -14 -exic - -ItRd -( -TIt - -beg -, TIt -d -) - -15 : -_r -( -beg -), -_d -( -d -) {} - -17  -ad -() { - -18 i( - g_r - < - g_d -) - -19  - gic_ -<>(* - g_r -++); - -24 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -25 -size_t - - gi - = 0; - -26  - gi - < - gngth - && - g_r - < - g_d - - gbufr -[ -i -++] = * -_r -++; - -27  - gi -; - -31 - gme - < -tyme - - gT -> - -32  - svoid_ - { - -33  - tty -; - -36 - gme - < -tyme - - gTSour -> - -37  - gRd -< - gTSour -, -tyme - - gvoid_ -:: -ty -> - -38 : -ItRd -< -tyme - -TSour -:: -cڡ_ -> { - -39 -exic - -Rd -(cڡ -TSour -& -sour -) - -40 : -ItRd -< -tyme - -TSour -:: -cڡ_ ->( -sour -. -beg -(), - -41 - gsour -. -d -()) {} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12  - sIsChOrVoid - { - -13 cڡ -bo - - gvue - = - -14 -is_me -< -T -, >:: -vue - || is_same::value || - -15 -is_me -< -T -, >:: -vue - || is_same::value; - -18 - gme - < -tyme - - gT -> - -19  - gIsChOrVoid - : -IsChOrVoid -< -T -> {}; - -21 - gme - < -tyme - - gTSour -> - -22  - gRd -< - gTSour -*, - -23 -tyme - - gab_if -< - gIsChOrVoid -< - gTSour ->:: -vue ->:: -ty -> { - -24 cڡ * -_r -; - -26 - gpublic -: - -27 -exic - -Rd -(cڡ * -r -) - -28 : -_r -( -r - ? -t_ -(ptr) : "") {} - -30  -ad -() { - -31  -ic_ -<>(* -_r -++); - -34 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -35  -size_t - - gi - = 0; i < - gngth -; i++ - gbufr -[ -i -] = * -_r -++; - -36  - gngth -; - -40 - gme - < -tyme - - gTSour -> - -41  - gBoundedRd -< - gTSour -*, - -42 -tyme - - gab_if -< - gIsChOrVoid -< - gTSour ->:: -vue ->:: -ty -> - -43 : -public - -ItRd - { - -44 -public -: - -45 -exic - -BoundedRd -(cڡ * -r -, -size_t - -n -) - -46 : -ItRd -( -t_ -( -r -), - -47 - gt_ -( - gr -+ - gn -) {} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTSour -> - -12  - gRd -< - gTSour -, -tyme - - gab_if -< - -13 - gis_ba_of -< - gd -:: -iam -, - gTSour ->:: -vue ->:: -ty -> { - -14 -public -: - -15 -exic - -Rd -( -d -:: -iam -& -am -: -_am -(&stream) {} - -17  -ad -() { - -18  -_am --> -g -(); - -21 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -22 - g_am --> -ad -( -bufr -, -ic_ -< -d -:: -amsize ->( -ngth -)); - -23  - gic_ -< - gsize_t ->( - g_am --> -gcou -()); - -26 - give -: - -27 -d -:: -iam -* -_am -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTAay -> - -13  - gRd -< - gEmtProxy -< - gTAay ->, > : -Rd -<*, > { - -14 -exic - -Rd -(cڡ -EmtProxy -< -TAay ->& -x -) - -15 : -Rd -<*, >( - gx -. -me - - gas -()) {} - -18 - gme - < -tyme - - gTObje -,ym - gTSgRef -> - -19  - gRd -< - gMembProxy -< - gTObje -, - gTSgRef ->, > : -Rd -<*, > { - -20 -exic - -Rd -(cڡ -MembProxy -< -TObje -, -TSgRef ->& -x -) - -21 : -Rd -<*, >( - gx -. -me - - gas -()) {} - -24 - gme - <> - -25  - gRd -< - gVRef -, > : -Rd -<*, > { - -26 -exic - -Rd -( -VRef - -x -: Rd<*, >( - gx -. - gas -()) {} - -29 - gme - <> - -30  - gRd -< - gVCڡRef -, > : -Rd -<*, > { - -31 -exic - -Rd -( -VCڡRef - -x -) - -32 : -Rd -<*, >( - gx -. - gas -()) {} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - -ass - - gTDerliz -, -tyme - - gTRd -, - -16 -tyme - - gTWr -> - -17 - gTDerliz -< - gTRd -, - gTWr -> -makeDerliz -( -MemyPo - & -po -, - -18 -TRd - -ad -, - -19 -TWr - -wr -) { - -20  - gTDerliz -< - gTRd -, - gTWr ->( - gpo -, - gad -, - gwr -); - -28 - gme - -ass - - gTDerliz -, -tyme - - gTSg -, - -29 -tyme - - gTFr -> - -30 -tyme - - gab_if -:: -vue -, - gDerliziE ->:: -ty - - -31 -derlize -( -JsDocumt - & -doc -, cڡ -TSg - & -put -, -NegLim - -ágLim -, - -32 -TFr - -fr -) { - -33 - gRd -< - gTSg -> -ad -( -put -); - -34 - gdoc -. -r -(); - -35  - gmakeDerliz -< - gTDerliz ->( - -36 - gdoc -. -memyPo -(), - gad -, - -37 -makeSgStage -( -put -, -doc -. -memyPo -())) - -38 . -r -( -doc -. -da -(), -fr -, -ágLim -); - -44 - gme - -ass - - gTDerliz -, -tyme - - gTCh -, - -45 -tyme - - gTFr -> - -46 -DerliziE - -derlize -( -JsDocumt - & -doc -, -TCh - * -put -, - -47 -size_t - -putSize -, -NegLim - -ágLim -, - -48 -TFr - -fr -) { - -49 - gBoundedRd -< - gTCh - *> -ad -( -put -, -putSize -); - -50 - gdoc -. -r -(); - -51  - gmakeDerliz -< - gTDerliz ->( - -52 - gdoc -. -memyPo -(), - gad -, - -53 -makeSgStage -( -put -, -doc -. -memyPo -())) - -54 . -r -( -doc -. -da -(), -fr -, -ágLim -); - -59 - gme - -ass - - gTDerliz -, -tyme - - gTSm -, - -60 -tyme - - gTFr -> - -61 -DerliziE - -derlize -( -JsDocumt - & -doc -, -TSm - & -put -, - -62 -NegLim - -ágLim -, -TFr - -fr -) { - -63 - gRd -< - gTSm -> -ad -( -put -); - -64 - gdoc -. -r -(); - -65  - gmakeDerliz -< - gTDerliz ->( - -66 - gdoc -. -memyPo -(), - gad -, - -67 -makeSgStage -( -put -, -doc -. -memyPo -())) - -68 . -r -( -doc -. -da -(), -fr -, -ágLim -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gTAot -> - -14 as - cAotOwr - { - -15 - gpublic -: - -16 -AotOwr -() {} - -17 -AotOwr -(cڡ AotOwr& -c -: -_lot -(src._allocator) {} - -18 -AotOwr -( -TAot - -a -: -_lot -(a) {} - -20 * -lo -( -size_t - -size -) { - -21  -_lot -. -lo -( -size -); - -24  -do -(* -r -) { - -25 i( - gr -) - -26 - g_lot -. -do -( -r -); - -29 * -lo -(* -r -, -size_t - -w_size -) { - -30  - g_lot -. -lo -( -r -, -w_size -); - -33 - gTAot -& -lot -() { - -34  - g_lot -; - -37 - give -: - -38 -TAot - -_lot -; - -41 - gme - < -tyme - - gTAot -> - -42 -ass - - gBasicJsDocumt - : -AotOwr -< -TAot ->, -public - - gJsDocumt - { - -43 - gpublic -: - -44 -exic - -BasicJsDocumt -( -size_t - - -, -TAot - -loc - = TAllocator()) - -45 : -AotOwr -< -TAot ->( -loc -), -JsDocumt -( -locPo -( - -)) {} - -48 -BasicJsDocumt -(cڡ BasicJsDocumt& -c -) - -49 : -AotOwr -< -TAot ->( -c -), -JsDocumt -() { - -50 -cyAssignFrom -( -c -); - -54 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -55 -BasicJsDocumt -(BasicJsDocumt&& -c -: -AotOwr -< -TAot ->(src) { - -56 -moveAssignFrom -( -c -); - -60 -BasicJsDocumt -(cڡ -JsDocumt -& -c -) { - -61 -cyAssignFrom -( -c -); - -65 - gme - < -tyme - - gT -> - -66 -BasicJsDocumt -( - -67 cڡ -T -& -c -, - -68 -tyme - -ab_if -< - -69 -is_me -< -T -, -VRef ->:: -vue - || is_me::value || - -70 -is_me -< -T -, -AayRef ->:: -vue - || is_me::value || - -71 -is_me -< -T -, -ObjeRef ->:: -vue - || - -72 -is_me -< -T -, -ObjeCڡRef ->:: -vue ->:: -ty -* = 0) - -73 : -JsDocumt -( -locPo -( -c -. -memyUge -())) { - -74 -t -( -c -); - -78 -BasicJsDocumt -( -VRef - -c -) - -79 : -JsDocumt -( -locPo -( -c -. -memyUge -())) { - -80 -t -( -c -); - -83 ~ -BasicJsDocumt -() { - -84 -Po -(); - -87 - gBasicJsDocumt -& - gݔ -=(cڡ -BasicJsDocumt -& -c -) { - -88 -cyAssignFrom -( -c -); - -89  * - gthis -; - -92 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -93 - gBasicJsDocumt -& - gݔ -=( -BasicJsDocumt -&& -c -) { - -94 -moveAssignFrom -( -c -); - -95  * - gthis -; - -99 - gme - < -tyme - - gT -> - -100 - gBasicJsDocumt -& - gݔ -=(cڡ -T -& -c -) { - -101 -locPoIfTooSml -( -c -. -memyUge -()); - -102 -t -( -c -); - -103  * - gthis -; - -106  -shrkToF -() { - -107 -rdiff_t - - gbys_aimed - = -_po -. -squash -(); - -108 i( - gbys_aimed - == 0) - -111 * - gd_r - = -_po -. -bufr -(); - -112 * - gw_r - = -this --> -lo -( -d_r -, -_po -. -cy -()); - -114 -rdiff_t - - gr_offt - = - -115 -ic_ -<*>( -w_r -- stic_<*>( -d_r -); - -117 - g_po -. -movePors -( -r_offt -); - -118 - g_da -. -movePors -( -r_offt -,_off- -bys_aimed -); - -121 -bo - -gbageC -() { - -123 -BasicJsDocumt - -tmp -(* -this -); - -124 i(! - gtmp -. -cy -()) - -125  - gl -; - -126 - gtmp -. -t -(* -this -); - -127 -moveAssignFrom -( -tmp -); - -128  - gue -; - -131 -usg - - gAotOwr -< - gTAot ->:: -lot -; - -133 - give -: - -134 -MemyPo - -locPo -( -size_t - -quedSize -) { - -135 -size_t - - - = -addPaddg -( -quedSize -); - -136  -MemyPo -( -t_ -<*>( -this --> -lo -( - -)), capa); - -139  -locPoIfTooSml -( -size_t - -quedSize -) { - -140 i( - gquedSize - < -cy -()) - -142 -Po -(); - -143 -aPo -( -locPo -( -addPaddg -( -quedSize -))); - -146  -Po -() { - -147 - gthis --> -do -( -memyPo -(). -bufr -()); - -150  -cyAssignFrom -(cڡ -JsDocumt -& -c -) { - -151 -locPoIfTooSml -( -c -. -cy -()); - -152 -t -( -c -); - -155  -moveAssignFrom -( -BasicJsDocumt -& -c -) { - -156 -Po -(); - -157 - g_da - = -c -. -_da -; - -158 - g_po - = -c -. -_po -; - -159 - gc -. - g_da -. -tNu -(); - -160 - gc -. - g_po - = -MemyPo -(0, 0); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13  - sDeuAot - { - -14 * -lo -( -size_t - -size -) { - -15  -mloc -( -size -); - -18  -do -(* -r -) { - -19 - -( -r -); - -22 * -lo -(* -r -, -size_t - -w_size -) { - -23  -loc -( -r -, -w_size -); - -27  - gBasicJsDocumt -< - tDeuAot -> - tDymicJsDocumt -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 as - cJsDocumt - : -public - -Visab - { - -17 -public -: - -18 -me - < -tyme - -TVis -> - -19 -tyme - -TVis -:: -su_ty - -ac -(TVis& -vis -) const { - -20  -gV -(). -ac -( -vis -); - -23 - gme - < -tyme - - gT -> - -24 -tyme - - gVAs -< - gT ->:: -ty - -as -() { - -25  -gV -(). -me - -as -< -T ->(); - -28 - gme - < -tyme - - gT -> - -29 -tyme - - gVCڡAs -< - gT ->:: -ty - -as -() const { - -30  -gV -(). -me - -as -< -T ->(); - -33  -r -() { - -34 - g_po -. -r -(); - -35 - g_da -. -tNu -(); - -38 - gme - < -tyme - - gT -> - -39 -bo - -is -() const { - -40  -gV -(). -me - - gis -< - gT ->(); - -43 -bo - -isNu -() const { - -44  -gV -(). -isNu -(); - -47 -size_t - -memyUge -() const { - -48  - g_po -. -size -(); - -51 -bo - -ovowed -() const { - -52  - g_po -. -ovowed -(); - -55 -size_t - -ág -() const { - -56  - g_da -. -ág -(); - -59 -size_t - -cy -() const { - -60  - g_po -. -cy -(); - -63 -size_t - -size -() const { - -64  - g_da -. -size -(); - -67 -bo - -t -(cڡ -JsDocumt -& -c -) { - -68  - gto -< - gVRef ->(). -t -( -c -. -as -< -VRef ->()); - -71 - gme - < -tyme - - gT -> - -72 -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -t -( - -73 cڡ -T -& -c -) { - -74  -to -< -VRef ->(). -t -( -c -); - -77 - gme - < -tyme - - gT -> - -78 -tyme - - gVTo -< - gT ->:: -ty - -to -() { - -79 -r -(); - -80  -gV -(). -me - - gto -< - gT ->(); - -84 - gMemyPo -& -memyPo -() { - -85  - g_po -; - -89 - gVDa -& -da -() { - -90  - g_da -; - -93 -AayRef - -NeedAay -() { - -94  -addEmt -(). - gto -< - gAayRef ->(); - -100 - gme - < -tyme - - gTCh -> - -101 -AayRef - -NeedAay -( -TCh -* -key -) { - -102  -gOrAddMemb -( -key -). -me - - gto -< - gAayRef ->(); - -107 - gme - < -tyme - - gTSg -> - -108 -AayRef - -NeedAay -(cڡ -TSg -& -key -) { - -109  -gOrAddMemb -( -key -). -me - - gto -< - gAayRef ->(); - -112 -ObjeRef - -NeedObje -() { - -113  -addEmt -(). - gto -< - gObjeRef ->(); - -119 - gme - < -tyme - - gTCh -> - -120 -ObjeRef - -NeedObje -( -TCh -* -key -) { - -121  -gOrAddMemb -( -key -). -me - - gto -< - gObjeRef ->(); - -126 - gme - < -tyme - - gTSg -> - -127 -ObjeRef - -NeedObje -(cڡ -TSg -& -key -) { - -128  -gOrAddMemb -( -key -). -me - - gto -< - gObjeRef ->(); - -134 - gme - < -tyme - - gTCh -> - -135 -bo - -cڏsKey -( -TCh -* -key -) const { - -136  ! -gMemb -( -key -). -isUndefed -(); - -141 - gme - < -tyme - - gTSg -> - -142 -bo - -cڏsKey -(cڡ -TSg -& -key -) const { - -143  ! -gMemb -( -key -). -isUndefed -(); - -148 - gme - < -tyme - - gTSg -> - -149 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - -150 - gMembProxy -< - gJsDocumt -&, - gTSg -> >:: -ty - - -151 -ݔ -[](cڡ -TSg -& -key -) { - -152  -MembProxy -< -JsDocumt -&, - gTSg ->(* - gthis -, - gkey -); - -158 - gme - < -tyme - - gTCh -> - -159 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - -160 - gMembProxy -< - gJsDocumt -&, - gTCh -*> >:: -ty - - -161 -ݔ -[]( -TCh -* -key -) { - -162  -MembProxy -< -JsDocumt -&, - gTCh -*>(* - gthis -, - gkey -); - -167 - gme - < -tyme - - gTSg -> - -168 -FORCE_INLINE - - -169 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -170 -ݔ -[](cڡ -TSg -& -key -) const { - -171  -gMemb -( -key -); - -177 - gme - < -tyme - - gTCh -> - -178 -FORCE_INLINE - - -179 -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - gVCڡRef ->:: -ty - - -180 -ݔ -[]( -TCh -* -key -) const { - -181  -gMemb -( -key -); - -184 -FORCE_INLINE - - gEmtProxy -< - gJsDocumt -&> - gݔ -[]( -size_t - - gdex -) { - -185  - gEmtProxy -< - gJsDocumt -&>(* - gthis -, - gdex -); - -188 -FORCE_INLINE - -VCڡRef - - gݔ -[]( -size_t - - gdex -) const { - -189  -gEmt -( -dex -); - -192 -FORCE_INLINE - -VRef - -gEmt -( -size_t - -dex -) { - -193  -VRef -(& -_po -, -_da -. -gEmt -( -dex -)); - -196 -FORCE_INLINE - -VCڡRef - -gEmt -( -size_t - -dex -) const { - -197  -VCڡRef -( -_da -. -gEmt -( -dex -)); - -200 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t - -dex -) { - -201  -VRef -(& -_po -, -_da -. -gOrAddEmt -( -dex -, &_pool)); - -207 - gme - < -tyme - - gTCh -> - -208 -FORCE_INLINE - -VCڡRef - -gMemb -( -TCh -* -key -) const { - -209  -VCڡRef -( -_da -. -gMemb -( -adtSg -( -key -))); - -214 - gme - < -tyme - - gTSg -> - -215 -FORCE_INLINE - - -216 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -217 -gMemb -(cڡ -TSg -& -key -) const { - -218  -VCڡRef -( -_da -. -gMemb -( -adtSg -( -key -))); - -224 - gme - < -tyme - - gTCh -> - -225 -FORCE_INLINE - -VRef - -gMemb -( -TCh -* -key -) { - -226  -VRef -(& -_po -, -_da -. -gMemb -( -adtSg -( -key -))); - -231 - gme - < -tyme - - gTSg -> - -232 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVRef ->:: -ty - - -233 -gMemb -(cڡ -TSg -& -key -) { - -234  -VRef -(& -_po -, -_da -. -gMemb -( -adtSg -( -key -))); - -240 - gme - < -tyme - - gTCh -> - -241 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh -* -key -) { - -242  -VRef -(& -_po -, -_da -. -gOrAddMemb -( -adtSg -( -key -), &_pool)); - -247 - gme - < -tyme - - gTSg -> - -248 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg -& -key -) { - -249  -VRef -(& -_po -, -_da -. -gOrAddMemb -( -adtSg -( -key -), &_pool)); - -252 -FORCE_INLINE - -VRef - -addEmt -() { - -253  -VRef -(& -_po -, -_da -. -addEmt -(&_pool)); - -256 - gme - < -tyme - - gTVue -> - -257 -FORCE_INLINE - -bo - -add -(cڡ -TVue -& -vue -) { - -258  -addEmt -(). -t -( -vue -); - -264 - gme - < -tyme - - gTCh -> - -265 -FORCE_INLINE - -bo - -add -( -TCh -* -vue -) { - -266  -addEmt -(). -t -( -vue -); - -269 -FORCE_INLINE -  -move -( -size_t - -dex -) { - -270 - g_da -. -move -( -dex -); - -275 - gme - < -tyme - - gTCh -> - -276 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue ->:: -ty - -move -( - -277 -TCh -* -key -) { - -278 -_da -. -move -( -adtSg -( -key -)); - -282 - gme - < -tyme - - gTSg -> - -283 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -284 cڡ -TSg -& -key -) { - -285 -_da -. -move -( -adtSg -( -key -)); - -288 -FORCE_INLINE - -ݔ - -VCڡRef -() const { - -289  -VCڡRef -(& -_da -); - -292 -bo - - gݔ -==( -VCڡRef - -rhs -) const { - -293  -gV -(= -rhs -; - -296 -bo - - gݔ -!=( -VCڡRef - -rhs -) const { - -297  -gV -(! -rhs -; - -300 - geed -: - -301 -JsDocumt -(: -_po -(0, 0) { - -302 - g_da -. -tNu -(); - -305 -JsDocumt -( -MemyPo - -po -: -_po -(pool) { - -306 -_da -. -tNu -(); - -309 -JsDocumt -(* -buf -, -size_t - - -: -_po -(buf, capa) { - -310 - g_da -. -tNu -(); - -313  -aPo -( -MemyPo - -po -) { - -314 - g_po - = -po -; - -317 -VRef - -gV -() { - -318  -VRef -(& -_po -, & -_da -); - -321 -VCڡRef - -gV -() const { - -322  -VCڡRef -(& -_da -); - -325 -MemyPo - - g_po -; - -326 -VDa - - g_da -; - -328 - give -: - -329 -JsDocumt -(const JsonDocument&); - -330 - gJsDocumt -& - gݔ -=(cڡ -JsDocumt -&); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -size_t - - gdesedCacy -> - -12 as - cSticJsDocumt - : -public - -JsDocumt - { - -13 cڡ -size_t - -_cy - = - -14 -AddPaddg -< -Max -<1, - gdesedCacy ->:: -vue ->::value; - -16 - gpublic -: - -17 -SticJsDocumt -(: -JsDocumt -( -_bufr -, -_cy -) {} - -19 -SticJsDocumt -(cڡ SticJsDocumt& -c -) - -20 : -JsDocumt -( -_bufr -, -_cy -) { - -21 -t -( -c -); - -24 - gme - < -tyme - - gT -> - -25 -SticJsDocumt -(cڡ -T -& -c -, - -26 -tyme - -ab_if -< -IsVisab -< -T ->:: -vue ->:: -ty -* = 0) - -27 : -JsDocumt -( -_bufr -, -_cy -) { - -28 -t -( -c -); - -32 -SticJsDocumt -( -VRef - -c -: -JsDocumt -( -_bufr -, -_cy -) { - -33 -t -( -c -); - -36 -SticJsDocumt - - gݔ -=(cڡ SticJsDocumt& -c -) { - -37 -t -( -c -); - -38  * - gthis -; - -41 - gme - < -tyme - - gT -> - -42 -SticJsDocumt - - gݔ -=(cڡ -T -& -c -) { - -43 -t -( -c -); - -44  * - gthis -; - -47  -gbageC -() { - -48 -SticJsDocumt - -tmp -(* -this -); - -49 -t -( -tmp -); - -52 - give -: - -53  -_bufr -[ -_cy -]; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cEsSequ - { - -12 - gpublic -: - -14  -esCh -( -c -) { - -15 cڡ * -p - = -esTab -( -ue -); - -16  - gp -[0] &&[1] ! -c -) { - -17 -p - += 2; - -19  - gp -[0]; - -23  -usCh -( -c -) { - -24 cڡ * - gp - = -esTab -( -l -); - -26 i( - gp -[0] == '\0') - -28 i( - gp -[0] = -c -) - -29  -p -[1]; - -30 - gp - += 2; - -34 - give -: - -35 cڡ * -esTab -( -bo - -exudeSidus -) { - -36  &"//\"\"\\\\b\bf\\\\t"[ -exudeSidus - ? 2 : 0]; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -18 -mea - - gARDUINOJSON_NAMESPACE - { - -20 - gme - < -tyme - - gTRd -,ym - gTSgStage -> - -21 as - cJsDerliz - { - -22 - gpublic -: - -23 -JsDerliz -( -MemyPo - & -po -, -TRd - -ad -, - -24 -TSgStage - -rgStage -) - -25 : -_rgStage -( -rgStage -), - -26 -_foundSomhg -( -l -), - -27 -_tch -( -ad -), - -28 -_po -(& -po -), - -29 -_r -( -DerliziE -:: -Ok -) {} - -31 -me - < -tyme - -TFr -> - -32 -DerliziE - -r -( -VDa - & -v -, -TFr - -fr -, - -33 -NegLim - -ágLim -) { - -34 -rV -( -v -, -fr -, -ágLim -); - -36 i(! - g_r - && - g_tch -. -ϡ -(!0 && ! -v -. -isEnod -()) { - -38  -DerliziE -:: -InvidIut -; - -41  - g_r -; - -44 - give -: - -45 -JsDerliz - & -ݔ -=(const JsonDeserializer &); - -47  -cut -() { - -48  - g_tch -. -cut -(); - -51  -move -() { - -52 - g_tch -. -r -(); - -55 -bo - -t -( -chToSk -) { - -56 i( -cut -(! -chToSk -) - -57  -l -; - -58 -move -(); - -59  - gue -; - -62 - gme - < -tyme - - gTFr -> - -63 -bo - -rV -( -VDa - & -v -, -TFr - -fr -, - -64 -NegLim - -ágLim -) { - -65 i(! -skSsAndCommts -()) - -66  - gl -; - -68  -cut -()) { - -70 i( -fr -. -lowAay -()) - -71  -rAay -( -v -. -toAay -(), -fr -, -ágLim -); - -73  -skAay -( -ágLim -); - -76 i( -fr -. -lowObje -()) - -77  -rObje -( -v -. -toObje -(), -fr -, -ágLim -); - -79  -skObje -( -ágLim -); - -83 i( -fr -. -lowVue -()) - -84  -rSgVue -( -v -); - -86  -skSg -(); - -89 i( -fr -. -lowVue -()) - -90  -rNumicVue -( -v -); - -92  -skNumicVue -(); - -96 -bo - -skV -( -NegLim - -ágLim -) { - -97 i(! -skSsAndCommts -()) - -98  - gl -; - -100  -cut -()) { - -102  -skAay -( -ágLim -); - -105  -skObje -( -ágLim -); - -109  -skSg -(); - -112  -skNumicVue -(); - -116 - gme - < -tyme - - gTFr -> - -117 -bo - -rAay -( -CiDa - & -y -, -TFr - -fr -, - -118 -NegLim - -ágLim -) { - -119 i( - gágLim -. -ached -()) { - -120 - g_r - = -DerliziE -:: -TooDp -; - -121  - gl -; - -125 -ARDUINOJSON_ASSERT -( -cut -() == '['); - -126 -move -(); - -129 i(! -skSsAndCommts -()) - -130  - gl -; - -133 i( -t -(']')) - -134  - gue -; - -136 -TFr - - gmembFr - = -fr -[0UL]; - -140 i( - gmembFr -. -low -()) { - -142 -VDa - * - gvue - = -y -. -addEmt -( -_po -); - -143 i(! - gvue -) { - -144 - g_r - = -DerliziE -:: -NoMemy -; - -145  - gl -; - -149 i(! -rV -(* -vue -, -membFr -, -ágLim -. -deemt -())) - -150  - gl -; - -152 i(! -skV -( -ágLim -. -deemt -())) - -153  - gl -; - -157 i(! -skSsAndCommts -()) - -158  - gl -; - -161 i( -t -(']')) - -162  - gue -; - -163 i(! -t -(',')) { - -164 - g_r - = -DerliziE -:: -InvidIut -; - -165  - gl -; - -170 -bo - -skAay -( -NegLim - -ágLim -) { - -171 i( - gágLim -. -ached -()) { - -172 - g_r - = -DerliziE -:: -TooDp -; - -173  - gl -; - -177 -ARDUINOJSON_ASSERT -( -cut -() == '['); - -178 -move -(); - -183 i(! -skV -( -ágLim -. -deemt -())) - -184  - gl -; - -187 i(! -skSsAndCommts -()) - -188  - gl -; - -191 i( -t -(']')) - -192  - gue -; - -193 i(! -t -(',')) { - -194 - g_r - = -DerliziE -:: -InvidIut -; - -195  - gl -; - -200 - gme - < -tyme - - gTFr -> - -201 -bo - -rObje -( -CiDa - & -obje -, -TFr - -fr -, - -202 -NegLim - -ágLim -) { - -203 i( - gágLim -. -ached -()) { - -204 - g_r - = -DerliziE -:: -TooDp -; - -205  - gl -; - -209 -ARDUINOJSON_ASSERT -( -cut -() == '{'); - -210 -move -(); - -213 i(! -skSsAndCommts -()) - -214  - gl -; - -217 i( -t -('}')) - -218  - gue -; - -223 i(! -rKey -()) - -224  - gl -; - -227 i(! -skSsAndCommts -()) - -228  - gl -; - -231 i(! -t -(':')) { - -232 - g_r - = -DerliziE -:: -InvidIut -; - -233  - gl -; - -236 cڡ * - gkey - = -_rgStage -. -c_r -(); - -238 -TFr - - gmembFr - = -fr -[ -key -]; - -240 i( - gmembFr -. -low -()) { - -241 -VDa - * - gv - = -obje -. -gMemb -( -adtSg -( -key -)); - -242 i(! - gv -) { - -245 - gkey - = -_rgStage -. -ve -(); - -248 -VSl - * - g - = -obje -. -addSl -( -_po -); - -249 i(! - g -) { - -250 - g_r - = -DerliziE -:: -NoMemy -; - -251  - gl -; - -254 - g --> -tKey -( -key -, -tyme - -TSgStage -:: -age_picy -()); - -256 - gv - = - --> -da -(); - -260 i(! -rV -(* -v -, -membFr -, -ágLim -. -deemt -())) - -261  - gl -; - -263 i(! -skV -( -ágLim -. -deemt -())) - -264  - gl -; - -268 i(! -skSsAndCommts -()) - -269  - gl -; - -272 i( -t -('}')) - -273  - gue -; - -274 i(! -t -(',')) { - -275 - g_r - = -DerliziE -:: -InvidIut -; - -276  - gl -; - -280 i(! -skSsAndCommts -()) - -281  - gl -; - -285 -bo - -skObje -( -NegLim - -ágLim -) { - -286 i( - gágLim -. -ached -()) { - -287 - g_r - = -DerliziE -:: -TooDp -; - -288  - gl -; - -292 -ARDUINOJSON_ASSERT -( -cut -() == '{'); - -293 -move -(); - -296 i(! -skSsAndCommts -()) - -297  - gl -; - -300 i( -t -('}')) - -301  - gue -; - -306 i(! -skV -( -ágLim -. -deemt -())) - -307  - gl -; - -310 i(! -skSsAndCommts -()) - -311  - gl -; - -314 i(! -t -(':')) { - -315 - g_r - = -DerliziE -:: -InvidIut -; - -316  - gl -; - -320 i(! -skV -( -ágLim -. -deemt -())) - -321  - gl -; - -324 i(! -skSsAndCommts -()) - -325  - gl -; - -328 i( -t -('}')) - -329  - gue -; - -330 i(! -t -(',')) { - -331 - g_r - = -DerliziE -:: -InvidIut -; - -332  - gl -; - -337 -bo - -rKey -() { - -338 - g_rgStage -. -tSg -(); - -339 i( -isQue -( -cut -())) { - -340  -rQuedSg -(); - -342  -rNQuedSg -(); - -346 -bo - -rSgVue -( -VDa - & -v -) { - -347 - g_rgStage -. -tSg -(); - -348 i(! -rQuedSg -()) - -349  - gl -; - -350 cڡ * - gvue - = -_rgStage -. -ve -(); - -351 - gv -. -tSgPor -( -vue -, -tyme - -TSgStage -:: -age_picy -()); - -352  - gue -; - -355 -bo - -rQuedSg -() { - -356 #i -ARDUINOJSON_DECODE_UNICODE - - -357 - gUtf16 -:: -Codot - -codot -; - -359 cڡ  - gCh - = -cut -(); - -361 -move -(); - -363  - gc - = -cut -(); - -364 -move -(); - -365 i( - gc - = -Ch -) - -368 i( - gc - == '\0') { - -369 -_r - = -DerliziE -:: -IncomeIut -; - -370  - gl -; - -373 i( - gc - == '\\') { - -374 -c - = -cut -(); - -376 i( - gc - == '\0') { - -377 -_r - = -DerliziE -:: -IncomeIut -; - -378  - gl -; - -381 i( - gc - == 'u') { - -382 #i -ARDUINOJSON_DECODE_UNICODE - - -383 -move -(); - -384 -ut16_t - - gcodeun -; - -385 i(! -rHex4 -( -codeun -)) - -386  - gl -; - -387 i( - gcodot -. -nd -( -codeun -)) - -388 - gUtf8 -:: -codeCodot -( -codot -. -vue -(), -_rgStage -); - -391 - g_r - = -DerliziE -:: -NSu܋d -; - -392  - gl -; - -397 - gc - = -EsSequ -:: -usCh -( -c -); - -398 i( - gc - == '\0') { - -399 -_r - = -DerliziE -:: -InvidIut -; - -400  - gl -; - -402 -move -(); - -405 - g_rgStage -. -nd -( -c -); - -408 - g_rgStage -. -nd -('\0'); - -410 i(! - g_rgStage -. -isVid -()) { - -411 - g_r - = -DerliziE -:: -NoMemy -; - -412  - gl -; - -415  - gue -; - -418 -bo - -rNQuedSg -() { - -419  - gc - = -cut -(); - -420 -ARDUINOJSON_ASSERT -( -c -); - -422 i( -nBeInNQuedSg -( -c -)) { - -424 -move -(); - -425 - g_rgStage -. -nd -( -c -); - -426 - gc - = -cut -(); - -427 }  -nBeInNQuedSg -( -c -)); - -429 - g_r - = -DerliziE -:: -InvidIut -; - -430  - gl -; - -433 - g_rgStage -. -nd -('\0'); - -435 i(! - g_rgStage -. -isVid -()) { - -436 - g_r - = -DerliziE -:: -NoMemy -; - -437  - gl -; - -440  - gue -; - -443 -bo - -skSg -() { - -444 cڡ  - gCh - = -cut -(); - -446 -move -(); - -448  - gc - = -cut -(); - -449 -move -(); - -450 i( - gc - = -Ch -) - -452 i( - gc - == '\0') { - -453 -_r - = -DerliziE -:: -IncomeIut -; - -454  - gl -; - -456 i( - gc - == '\\') { - -457 i( -cut -() != '\0') - -458 -move -(); - -462  - gue -; - -465 -bo - -rNumicVue -( -VDa - & -su -) { - -466 -ut8_t - - gn - = 0; - -468  - gc - = -cut -(); - -469  -nBeInNQuedSg -( -c -&& - gn - < 63) { - -470 -move -(); - -471 - g_bufr -[ -n -++] = -c -; - -472 - gc - = -cut -(); - -474 - g_bufr -[ -n -] = 0; - -476 - gc - = -_bufr -[0]; - -477 i( - gc - == 't') { - -478 -su -. -tBoޗn -( -ue -); - -479 i( - gn - != 4) { - -480 -_r - = -DerliziE -:: -IncomeIut -; - -481  - gl -; - -483  - gue -; - -485 i( - gc - == 'f') { - -486 -su -. -tBoޗn -( -l -); - -487 i( - gn - != 5) { - -488 -_r - = -DerliziE -:: -IncomeIut -; - -489  - gl -; - -491  - gue -; - -493 i( - gc - == 'n') { - -495 i( -n - != 4) { - -496 -_r - = -DerliziE -:: -IncomeIut -; - -497  - gl -; - -499  - gue -; - -502 i(! -rNumb -( -_bufr -, -su -)) { - -503 - g_r - = -DerliziE -:: -InvidIut -; - -504  - gl -; - -507  - gue -; - -510 -bo - -skNumicVue -() { - -511  - gc - = -cut -(); - -512  -nBeInNQuedSg -( -c -)) { - -513 -move -(); - -514 - gc - = -cut -(); - -516  - gue -; - -519 -bo - -rHex4 -( -ut16_t - & -su -) { - -520 - gsu - = 0; - -521  -ut8_t - - gi - = 0; i < 4; ++i) { - -522  - gdig - = -cut -(); - -523 i(! - gdig -) { - -524 - g_r - = -DerliziE -:: -IncomeIut -; - -525  - gl -; - -527 -ut8_t - - gvue - = -decodeHex -( -dig -); - -528 i( - gvue - > 0x0F) { - -529 - g_r - = -DerliziE -:: -InvidIut -; - -530  - gl -; - -532 - gsu - = -ut16_t -(( -su - << 4| -vue -); - -533 -move -(); - -535  - gue -; - -538  -le - -bo - -isBwn -( -c -,  -m -,  -max -) { - -539  - gm - < -c - && c < -max -; - -542  -le - -bo - -nBeInNQuedSg -( -c -) { - -543  -isBwn -( -c -, '0', '9') || isBetween(c, '_', 'z') || - -544 -isBwn -( -c -, 'A', 'Z'|| - gc - == '+' || c == '-' || c == '.'; - -547  -le - -bo - -isQue -( -c -) { - -548  - gc - ='\'' || -c - == '\"'; - -551  -le - -ut8_t - -decodeHex -( -c -) { - -552 i( - gc - < 'A') - -553  -ut8_t -( -c - - '0'); - -554 - gc - = ( -c - & ~0x20); - -555  -ut8_t -( -c - - 'A' + 10); - -558 -bo - -skSsAndCommts -() { - -560  -cut -()) { - -563 -_r - = -_foundSomhg - ? -DerliziE -:: -IncomeIut - - -564 : -DerliziE -:: -EmyIut -; - -565  - gl -; - -572 -move -(); - -575 #i -ARDUINOJSON_ENABLE_COMMENTS - - -578 -move -(); - -579  -cut -()) { - -582 -move -(); - -583 -bo - - gwasSr - = -l -; - -585  - gc - = -cut -(); - -586 i( - gc - == '\0') { - -587 -_r - = -DerliziE -:: -IncomeIut -; - -588  - gl -; - -590 i( - gc - ='/' && -wasSr -) { - -591 -move -(); - -594 - gwasSr - = -c - == '*'; - -595 -move -(); - -604 -move -(); - -605  - gc - = -cut -(); - -606 i( - gc - == '\0') { - -607 -_r - = -DerliziE -:: -IncomeIut -; - -608  - gl -; - -610 i( - gc - == '\n') - -617 -_r - = -DerliziE -:: -InvidIut -; - -618  - gl -; - -624 -_foundSomhg - = -ue -; - -625  - gue -; - -630 -TSgStage - - g_rgStage -; - -631 -bo - - g_foundSomhg -; - -632 - gLch -< - gTRd -> - g_tch -; - -633 -MemyPo - * - g_po -; - -634  - g_bufr -[64]; - -637 -DerliziE - - g_r -; - -644 - gme - < -tyme - - gTSg -> - -645 -DerliziE - -derlizeJs -( - -646 -JsDocumt - & -doc -, cڡ -TSg - & -put -, - -647 -NegLim - -ágLim - = - $NegLim -()) { - -648  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, - -649 - `AowAFr -()); - -650 - } -} - -652 - gme - < -tyme - - gTSg -> - -653 -DerliziE - -derlizeJs -( - -654 -JsDocumt - & -doc -, cڡ -TSg - & -put -, -Fr - -fr -, - -655 -NegLim - -ágLim - = - $NegLim -()) { - -656  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -657 - } -} - -659 - gme - < -tyme - - gTSg -> - -660 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, cڡ -TSg - & -put -, - -661 -NegLim - -ágLim -, -Fr - -fr -) { - -662  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -663 - } -} - -669 - gme - < -tyme - - gTSm -> - -670 -DerliziE - -derlizeJs -( - -671 -JsDocumt - & -doc -, -TSm - & -put -, - -672 -NegLim - -ágLim - = - $NegLim -()) { - -673  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, - -674 - `AowAFr -()); - -675 - } -} - -677 - gme - < -tyme - - gTSm -> - -678 -DerliziE - -derlizeJs -( - -679 -JsDocumt - & -doc -, -TSm - & -put -, -Fr - -fr -, - -680 -NegLim - -ágLim - = - $NegLim -()) { - -681  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -682 - } -} - -684 - gme - < -tyme - - gTSm -> - -685 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, -TSm - & -put -, - -686 -NegLim - -ágLim -, -Fr - -fr -) { - -687  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -688 - } -} - -694 - gme - < -tyme - - gTCh -> - -695 -DerliziE - -derlizeJs -( - -696 -JsDocumt - & -doc -, -TCh - * -put -, - -697 -NegLim - -ágLim - = - $NegLim -()) { - -698  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, - -699 - `AowAFr -()); - -700 - } -} - -702 - gme - < -tyme - - gTCh -> - -703 -DerliziE - -derlizeJs -( - -704 -JsDocumt - & -doc -, -TCh - * -put -, -Fr - -fr -, - -705 -NegLim - -ágLim - = - $NegLim -()) { - -706  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -707 - } -} - -709 - gme - < -tyme - - gTCh -> - -710 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, -TCh - * -put -, - -711 -NegLim - -ágLim -, -Fr - -fr -) { - -712  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -713 - } -} - -719 - gme - < -tyme - - gTCh -> - -720 -DerliziE - -derlizeJs -( - -721 -JsDocumt - & -doc -, -TCh - * -put -, -size_t - -putSize -, - -722 -NegLim - -ágLim - = - $NegLim -()) { - -723  -derlize -< -JsDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -724 - `AowAFr -()); - -725 - } -} - -727 - gme - < -tyme - - gTCh -> - -728 -DerliziE - -derlizeJs -( - -729 -JsDocumt - & -doc -, -TCh - * -put -, -size_t - -putSize -, -Fr - -fr -, - -730 -NegLim - -ágLim - = - $NegLim -()) { - -731  -derlize -< -JsDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -732 -fr -); - -733 - } -} - -735 - gme - < -tyme - - gTCh -> - -736 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, -TCh - * -put -, - -737 -size_t - -putSize -, - -738 -NegLim - -ágLim -, -Fr - -fr -) { - -739  -derlize -< -JsDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -740 -fr -); - -741 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -tyme - - gTWr -> - -15 -ass - - gJsSliz - : -public - -Vis -< -size_t -> { - -16 -public -: - -17 -JsSliz -( -TWr - -wr -: -_fmr -(writer) {} - -19 -FORCE_INLINE - -size_t - -visAay -(cڡ -CiDa - & -y -) { - -20 -wre -('['); - -22 -VSl - * - g - = -y -. -hd -(); - -24  - g - != 0) { - -25 - --> -da -()-> -ac -(* -this -); - -27 - g - = - --> -xt -(); - -28 i( - g - == 0) - -31 -wre -(','); - -34 -wre -(']'); - -35  -bysWrn -(); - -38 -size_t - -visObje -(cڡ -CiDa - & -obje -) { - -39 -wre -('{'); - -41 -VSl - * - g - = -obje -. -hd -(); - -43  - g - != 0) { - -44 -_fmr -. -wreSg -( - --> -key -()); - -45 -wre -(':'); - -46 - g --> -da -()-> -ac -(* -this -); - -48 - g - = - --> -xt -(); - -49 i( - g - == 0) - -52 -wre -(','); - -55 -wre -('}'); - -56  -bysWrn -(); - -59 -size_t - -visFlt -( -Flt - -vue -) { - -60 - g_fmr -. -wreFlt -( -vue -); - -61  -bysWrn -(); - -64 -size_t - -visSg -(cڡ * -vue -) { - -65 - g_fmr -. -wreSg -( -vue -); - -66  -bysWrn -(); - -69 -size_t - -visRawJs -(cڡ * -da -, size_ -n -) { - -70 - g_fmr -. -wreRaw -( -da -, -n -); - -71  -bysWrn -(); - -74 -size_t - -visNegiveIeg -( -UI - -vue -) { - -75 - g_fmr -. -wreNegiveIeg -( -vue -); - -76  -bysWrn -(); - -79 -size_t - -visPosiveIeg -( -UI - -vue -) { - -80 - g_fmr -. -wrePosiveIeg -( -vue -); - -81  -bysWrn -(); - -84 -size_t - -visBoޗn -( -bo - -vue -) { - -85 - g_fmr -. -wreBoޗn -( -vue -); - -86  -bysWrn -(); - -89 -size_t - -visNu -() { - -90 - g_fmr -. -wreRaw -("null"); - -91  -bysWrn -(); - -94 - geed -: - -95 -size_t - -bysWrn -() const { - -96  -_fmr -. -bysWrn -(); - -99  -wre -( -c -) { - -100 - g_fmr -. -wreRaw -( -c -); - -103  -wre -(cڡ * -s -) { - -104 - g_fmr -. -wreRaw -( -s -); - -107 - give -: - -108 -TextFmr -< -TWr -> -_fmr -; - -111 - gme - < -tyme - - gTSour -,ym - gTDei -> - -112 -size_t - -rlizeJs -(cڡ -TSour - & -sour -, -TDei - & -dei -) { - -113  - grlize -< - gJsSliz ->( - gsour -, - gdei -); - -116 - gme - < -tyme - - gTSour -> - -117 -size_t - -rlizeJs -(cڡ -TSour - & -sour -, * -bufr -, size_ -bufrSize -) { - -118  - grlize -< - gJsSliz ->( - gsour -, - gbufr -, - gbufrSize -); - -121 - gme - < -tyme - - gTSour -> - -122 -size_t - -msuJs -(cڡ -TSour - & -sour -) { - -123  - gmsu -< - gJsSliz ->( - gsour -); - -126 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -127 - gme - < -tyme - - gT -> - -128 -le - -tyme - - gab_if -< - gIsVisab -< - gT ->:: -vue -, - gd -:: -oam - &>:: -ty - - -129 -ݔ -<<( -d -:: -oam - & -os -, cڡ - gT - & - gsour -) { - -130 -rlizeJs -( -sour -, -os -); - -131  - gos -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTRd -> - -12 as - cLch - { - -13 - gpublic -: - -14 -Lch -( -TRd - -ad -: -_ad -ԗd), -_lded -( -l -) { - -15 #i -ARDUINOJSON_DEBUG - - -16 - g_ded - = -l -; - -20  -r -() { - -21 - g_lded - = -l -; - -24  -ϡ -() const { - -25  - g_cut -; - -28 -FORCE_INLINE -  -cut -() { - -29 i(! - g_lded -) { - -30 -ld -(); - -32  - g_cut -; - -35 - give -: - -36  -ld -() { - -37 -ARDUINOJSON_ASSERT -(! -_ded -); - -38  - gc - = -_ad -. -ad -(); - -39 #i -ARDUINOJSON_DEBUG - - -40 i( - gc - <= 0) - -41 -_ded - = -ue -; - -43 - g_cut - = -ic_ -<>( -c - > 0 ? c : 0); - -44 - g_lded - = -ue -; - -47 -TRd - - g_ad -; - -48  - g_cut -; - -49 -bo - - g_lded -; - -50 #i -ARDUINOJSON_DEBUG - - -51 -bo - - g_ded -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -tyme - - gTWr -> - -15 -ass - - gPyJsSliz - : -public - -JsSliz -< -TWr -> { - -16  -JsSliz -< - tTWr -> - tba -; - -18 - gpublic -: - -19 -PyJsSliz -( -TWr - & -wr -: -ba -(wr), -_ág -(0) {} - -21 -size_t - -visAay -(cڡ -CiDa - & -y -) { - -22 -VSl - * - g - = -y -. -hd -(); - -23 i( - g -) { - -24 - gba -:: -wre -("[\r\n"); - -25 - g_ág -++; - -26  - g - != 0) { - -27 -dt -(); - -28 - g --> -da -()-> -ac -(* -this -); - -30 - g - = - --> -xt -(); - -31 - gba -:: -wre -( - - ? ",\r\n" : "\r\n"); - -33 - g_ág ---; - -34 -dt -(); - -35 - gba -:: -wre -("]"); - -37 - gba -:: -wre -("[]"); - -39  - gthis --> -bysWrn -(); - -42 -size_t - -visObje -(cڡ -CiDa - & -obje -) { - -43 -VSl - * - g - = -obje -. -hd -(); - -44 i( - g -) { - -45 - gba -:: -wre -("{\r\n"); - -46 - g_ág -++; - -47  - g - != 0) { - -48 -dt -(); - -49 - gba -:: -visSg -( - --> -key -()); - -50 - gba -:: -wre -(": "); - -51 - g --> -da -()-> -ac -(* -this -); - -53 - g - = - --> -xt -(); - -54 - gba -:: -wre -( - - ? ",\r\n" : "\r\n"); - -56 - g_ág ---; - -57 -dt -(); - -58 - gba -:: -wre -("}"); - -60 - gba -:: -wre -("{}"); - -62  - gthis --> -bysWrn -(); - -65 - give -: - -66  -dt -() { - -67  -ut8_t - -i - = 0; - gi - < - g_ág -; i++ - gba -:: -wre -( -ARDUINOJSON_TAB -); - -70 -ut8_t - - g_ág -; - -73 - gme - < -tyme - - gTSour -,ym - gTDei -> - -74 -size_t - -rlizeJsPy -(cڡ -TSour - & -sour -, -TDei - & -dei -) { - -75  - grlize -< - gPyJsSliz ->( - gsour -, - gdei -); - -78 - gme - < -tyme - - gTSour -> - -79 -size_t - -rlizeJsPy -(cڡ -TSour - & -sour -, * -bufr -, - -80 -size_t - -bufrSize -) { - -81  - grlize -< - gPyJsSliz ->( - gsour -, - gbufr -, - gbufrSize -); - -84 - gme - < -tyme - - gTSour -> - -85 -size_t - -msuJsPy -(cڡ -TSour - & -sour -) { - -86  - gmsu -< - gPyJsSliz ->( - gsour -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -17 -mea - - gARDUINOJSON_NAMESPACE - { - -19 - gme - < -tyme - - gTWr -> - -20 as - cTextFmr - { - -21 - gpublic -: - -22 -exic - -TextFmr -( -TWr - -wr -: -_wr -(writer) {} - -25 -size_t - -bysWrn -() const { - -26  -_wr -. -cou -(); - -29  -wreBoޗn -( -bo - -vue -) { - -30 i( - gvue -) - -31 -wreRaw -("true"); - -33 -wreRaw -("false"); - -36  -wreSg -(cڡ * -vue -) { - -37 -ARDUINOJSON_ASSERT -( -vue - ! -NULL -); - -38 -wreRaw -('\"'); - -39 * - gvue - -wreCh -(* -vue -++); - -40 -wreRaw -('\"'); - -43  -wreCh -( -c -) { - -44  - geclCh - = -EsSequ -:: -esCh -( -c -); - -45 i( - geclCh -) { - -46 -wreRaw -('\\'); - -47 -wreRaw -( -eclCh -); - -49 -wreRaw -( -c -); - -53 - gme - < -tyme - - gT -> - -54  -wreFlt -( -T - -vue -) { - -55 i( -i -( -vue -)) - -56  -wreRaw -( -ARDUINOJSON_ENABLE_NAN - ? "NaN" : "null"); - -58 #i -ARDUINOJSON_ENABLE_INFINITY - - -59 i( - gvue - < 0.0) { - -60 -wreRaw -('-'); - -61 - gvue - = - -vue -; - -64 i( -isf -( -vue -)) - -65  -wreRaw -("Infinity"); - -67 i( -isf -( -vue -)) - -68  -wreRaw -("null"); - -70 i( - gvue - < 0.0) { - -71 -wreRaw -('-'); - -72 - gvue - = - -vue -; - -76 - gFltPts -< - gT -> -s -( -vue -); - -78 -wrePosiveIeg -( -s -. -gl -); - -79 i( - gs -. - gdecimPs -) - -80 -wreDecims -( -s -. -decim -,ts. -decimPs -); - -82 i( - gs -. - gexpڒt - < 0) { - -83 -wreRaw -("e-"); - -84 -wrePosiveIeg -(- -s -. -expڒt -); - -87 i( - gs -. - gexpڒt - > 0) { - -88 -wreRaw -('e'); - -89 -wrePosiveIeg -( -s -. -expڒt -); - -93  -wreNegiveIeg -( -UI - -vue -) { - -94 -wreRaw -('-'); - -95 -wrePosiveIeg -( -vue -); - -98 - gme - < -tyme - - gT -> - -99  -wrePosiveIeg -( -T - -vue -) { - -100  - gbufr -[22]; - -101 * - gd - = -bufr - + (buffer); - -102 * - gbeg - = -d -; - -106 *-- - gbeg - = ( -vue - % 10 + '0'); - -107 - gvue - = -T -( -vue - / 10); - -108 }  - gvue -); - -111 -wreRaw -( -beg -, -d -); - -114  -wreDecims -( -ut32_t - -vue -, -t8_t - -width -) { - -116  - gbufr -[16]; - -117 * - gd - = -bufr - + (buffer); - -118 * - gbeg - = -d -; - -121  - gwidth ---) { - -122 *-- - gbeg - = ( -vue - % 10 + '0'); - -123 - gvue - /= 10; - -125 *-- - gbeg - = '.'; - -128 -wreRaw -( -beg -, -d -); - -131  -wreRaw -(cڡ * -s -) { - -132 - g_wr -. -wre -( -t_ -( -s -), - -(s)); - -135  -wreRaw -(cڡ * -s -, -size_t - -n -) { - -136 - g_wr -. -wre -( -t_ -( -s -), -n -); - -139  -wreRaw -(cڡ * -beg -, cڡ * -d -) { - -140 - g_wr -. -wre -( -t_ -( -beg -), - -141 -ic_ -< -size_t ->( -d - - -beg -)); - -144 - gme - < -size_t - - gN -> - -145  -wreRaw -(cڡ (& -s -)[ -N -]) { - -146 - g_wr -. -wre -( -t_ -( -s -), -N - - 1); - -148  -wreRaw -( -c -) { - -149 - g_wr -. -wre -( -ic_ -< -ut8_t ->( -c -)); - -152 - geed -: - -153 -CougDecܩ -< -TWr -> -_wr -; - -154 -size_t - - g_ngth -; - -156 - give -: - -157 -TextFmr - & -ݔ -=(const TextFormatter &); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -14 #i -defed -( -__GNUC__ -) - -15 #i -__GNUC__ - >= 7 - -16 #agm -GCC - -dgnoic - -push - - -17 #agm -GCC - -dgnoic - -igned - "-Wmaybe-uninitialized" - -21 -mea - - gARDUINOJSON_NAMESPACE - { - -23 -mea - - gUtf16 - { - -24 -le - -bo - -isHighSuoge -( -ut16_t - -codeun -) { - -25  - gcodeun - >0xD800 && -codeun - < 0xDC00; - -28 -le - -bo - -isLowSuoge -( -ut16_t - -codeun -) { - -29  - gcodeun - >0xDC00 && -codeun - < 0xE000; - -32 as - cCodot - { - -33 - gpublic -: - -34 -Codot -(: -_highSuoge -(0) {} - -36 -bo - -nd -( -ut16_t - -codeun -) { - -37 i( -isHighSuoge -( -codeun -)) { - -38 -_highSuoge - = -codeun - & 0x3FF; - -39  - gl -; - -42 i( -isLowSuoge -( -codeun -)) { - -43 - g_codot - = - -44 -ut32_t -(0x10000 + (( -_highSuoge - << 10| ( -codeun - & 0x3FF))); - -45  - gue -; - -48 - g_codot - = -codeun -; - -49  - gue -; - -52 -ut32_t - -vue -() const { - -53  - g_codot -; - -56 - give -: - -57 -ut16_t - -_highSuoge -; - -58 -ut32_t - - g_codot -; - -63 #i -defed -( -__GNUC__ -) - -64 #i -__GNUC__ - >= 8 - -65 #agm -GCC - -dgnoic - -p - - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -mea - - gUtf8 - { - -12 - gme - < -tyme - - gTSgBud -> - -13 -le -  -codeCodot -( -ut32_t - -codot32 -, -TSgBud -& -r -) { - -17  - gbuf -[5]; - -18 * - gp - = -buf -; - -20 *( - gp -++) = 0; - -21 i( - gcodot32 - < 0x80) { - -22 *( - gp -++(( -codot32 -)); - -24 *( - gp -++(( -codot32 - | 0x80) & 0xBF); - -25 -ut16_t - - gcodot16 - = ut16_t( -codot32 - >> 6); - -26 i( - gcodot16 - < 0x20) { - -27 *( - gp -++( -codot16 - | 0xC0); - -29 *( - gp -++(( -codot16 - | 0x80) & 0xBF); - -30 - gcodot16 - = -ut16_t -( -codot16 - >> 6); - -31 i( - gcodot16 - < 0x10) { - -32 *( - gp -++( -codot16 - | 0xE0); - -34 *( - gp -++(( -codot16 - | 0x80) & 0xBF); - -35 - gcodot16 - = -ut16_t -( -codot16 - >> 6); - -36 *( - gp -++( -codot16 - | 0xF0); - -41 *(-- - gp -)) { - -42 - gr -. -nd -(* -p -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 #i -ARDUINOJSON_ENABLE_ALIGNMENT - - -15 -le - -bo - -isAligd -( -size_t - -vue -) { - -16 cڡ -size_t - - gmask - = (*) - 1; - -17 -size_t - - gaddr - = -vue -; - -18  ( - gaddr - & - gmask -) == 0; - -21 -le - -size_t - -addPaddg -(size_ -bys -) { - -22 cڡ -size_t - - gmask - = (*) - 1; - -23  ( - gbys - + - gmask -) & ~mask; - -26 - gme - < -size_t - - gbys -> - -27  - sAddPaddg - { - -28 cڡ -size_t - - gmask - = (*) - 1; - -29 cڡ -size_t - - gvue - = ( -bys - + -mask -) & ~mask; - -34 -le - -bo - -isAligd -( -size_t -) { - -35  - gue -; - -38 -le - -size_t - -addPaddg -(size_ -bys -) { - -39  - gbys -; - -42 - gme - < -size_t - - gbys -> - -43  - sAddPaddg - { - -44 cڡ -size_t - - gvue - = -bys -; - -49 - gme - < -tyme - - gT -> - -50 -le - -bo - -isAligd -( -T - * -r -) { - -51  -isAligd -( -t_ -< -size_t ->( -r -)); - -54 - gme - < -tyme - - gT -> - -55 -le - -T - * -addPaddg -(T * -p -) { - -56 -size_t - - gaddss - = -addPaddg -( -t_ -( -p -)); - -57  - gt_ -< - gT - *>( - gaddss -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12  - ~ - -14  - #JSON_STRING_SIZE -( -SIZE -(SIZE + 1) - - ) - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -26 as - cMemyPo - { - -27 - gpublic -: - -28 -MemyPo -(* -buf -, -size_t - - -) - -29 : -_beg -( -buf -), - -30 -_ -( -buf -), - -31 -_right -( -buf - ? bu+ - - : 0), - -32 -_d -( -buf - ? bu+ - - : 0), - -33 -_ovowed -( -l -) { - -34 -ARDUINOJSON_ASSERT -( -isAligd -( -_beg -)); - -35 -ARDUINOJSON_ASSERT -( -isAligd -( -_right -)); - -36 -ARDUINOJSON_ASSERT -( -isAligd -( -_d -)); - -39 * -bufr -() { - -40  - g_beg -; - -44 -size_t - -cy -() const { - -45  -size_t -( -_d - - -_beg -); - -48 -size_t - -size -() const { - -49  -size_t -( -_ - - -_beg - + -_d - - -_right -); - -52 -bo - -ovowed -() const { - -53  - g_ovowed -; - -56 -VSl -* -locV -() { - -57  - glocRight -< - gVSl ->(); - -60 - gme - < -tyme - - gTAddSg -> - -61 cڡ * -veSg -(cڡ -TAddSg -& -r -) { - -62 i( - gr -. -isNu -()) - -65 #i -ARDUINOJSON_ENABLE_STRING_DEDUPLICATION - - -66 cڡ * - gexigCy - = -fdSg -( -r -. -beg -()); - -67 i( - gexigCy -) - -68  - gexigCy -; - -71 -size_t - - gn - = -r -. -size -(); - -73 * - gwCy - = -locSg -( -n - + 1); - -74 i( - gwCy -) { - -75 - gr -. -cyTo -( -wCy -, -n -); - -76 - gwCy -[ -n -] = 0; - -78  - gwCy -; - -81  -gFeZe -(** -zeS -, -size_t -* -zeSize -) const { - -82 * - gzeS - = -_ -; - -83 * - gzeSize - = -size_t -( -_right - - -_ -); - -86 cڡ * -veSgFromFeZe -( -size_t - -n -) { - -87 #i -ARDUINOJSON_ENABLE_STRING_DEDUPLICATION - - -88 cڡ * - gdup - = -fdSg -( -_ -); - -89 i( - gdup -) - -90  - gdup -; - -93 cڡ * - gr - = -_ -; - -94 - g_ - + -n -; - -95 -checkInvs -(); - -96  - gr -; - -99  -mkAsOvowed -() { - -100 - g_ovowed - = -ue -; - -103  -r -() { - -104 - g_ - = -_beg -; - -105 - g_right - = -_d -; - -106 - g_ovowed - = -l -; - -109 -bo - -nAoc -( -size_t - -bys -) const { - -110  - g_ - + - gbys - < -_right -; - -113 -bo - -owns -(* -p -) const { - -114  - g_beg - < -p - && < -_d -; - -118 * -ݔ - -w -( -size_t -, * -p -) { - -119  - gp -; - -133 -rdiff_t - -squash -() { - -134 * - gw_right - = -addPaddg -( -_ -); - -135 i( - gw_right - > -_right -) - -138 -size_t - - gright_size - = -ic_ -( -_d - - -_right -); - -139 -memmove -( -w_right -, -_right -, -right_size -); - -141 -rdiff_t - - gbys_aimed - = -_right - - -w_right -; - -142 - g_right - = -w_right -; - -143 - g_d - = -w_right - + -right_size -; - -144  - gbys_aimed -; - -149  -movePors -( -rdiff_t - -offt -) { - -150 - g_beg - + -offt -; - -151 - g_ - + -offt -; - -152 - g_right - + -offt -; - -153 - g_d - + -offt -; - -156 - give -: - -157  -checkInvs -() { - -158 -ARDUINOJSON_ASSERT -( -_beg - < -_ -); - -159 -ARDUINOJSON_ASSERT -( -_ - < -_right -); - -160 -ARDUINOJSON_ASSERT -( -_right - < -_d -); - -161 -ARDUINOJSON_ASSERT -( -isAligd -( -_right -)); - -164 #i -ARDUINOJSON_ENABLE_STRING_DEDUPLICATION - - -165 - gme - < -tyme - - gTIt -> - -166 cڡ * -fdSg -( -TIt - -r -) { - -167 * - gxt - = -_beg -;ex< - g_ -; ++next) { - -168 * - gbeg - = -xt -; - -171  -TIt - - g - = -r -; * =* -xt -; ++it) { - -172 i(* - gxt -++ == 0) - -173  -beg -; - -177 * - gxt -) ++next; - -183 * -locSg -( -size_t - -n -) { - -184 i(! -nAoc -( -n -)) { - -185 - g_ovowed - = -ue -; - -188 * - gs - = -_ -; - -189 - g_ - + -n -; - -190 -checkInvs -(); - -191  - gs -; - -194 - gme - < -tyme - - gT -> - -195 -T -* -locRight -() { - -196  - gt_ -< - gT -*>( -locRight -(( -T -))); - -199 * -locRight -( -size_t - -bys -) { - -200 i(! -nAoc -( -bys -)) { - -201 - g_ovowed - = -ue -; - -204 - g_right - - -bys -; - -205  - g_right -; - -208 * - g_beg -, * - g_ -, * - g_right -, * - g_d -; - -209 -bo - - g_ovowed -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13 as - cSlizedVue - { - -14 - gpublic -: - -15 -exic - -SlizedVue -( -T - -r -: -_r -(str) {} - -16 -ݔ - -T -() const { - -17  -_r -; - -20 cڡ * -da -() const { - -21  - g_r -. -c_r -(); - -24 -size_t - -size -() const { - -26  - g_r -. -ngth -(); - -29 - give -: - -30 -T - -_r -; - -33 - gme - < -tyme - - gTCh -> - -34 -ass - - gSlizedVue -< - gTCh -*> { - -35 - gpublic -: - -36 -exic - -SlizedVue -( -TCh -* -p -, -size_t - -n -: -_da -), -_size -(n) {} - -37 -ݔ - - gTCh -*() const { - -38  - g_da -; - -41 -TCh -* -da -() const { - -42  - g_da -; - -45 -size_t - -size -() const { - -46  - g_size -; - -49 - give -: - -50 -TCh -* -_da -; - -51 -size_t - - g_size -; - -54 - gme - < -tyme - - gT -> - -55 -le - - gSlizedVue -< - gT -> - $rlized -( -T - -r -) { - -56  -SlizedVue -< -T ->( -r -); - -57 - } -} - -59 - gme - < -tyme - - gTCh -> - -60 -le - - gSlizedVue -< - gTCh -*> - $rlized -( -TCh -* -p -) { - -61  -SlizedVue -< -TCh -*>( -p -, - `adtSg -). - `size -()); - -62 - } -} - -64 - gme - < -tyme - - gTCh -> - -65 -le - - gSlizedVue -< - gTCh -*> - $rlized -( -TCh -* -p -, -size_t - -n -) { - -66  -SlizedVue -< -TCh -*>( -p -, -n -); - -67 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTResu -> - -12  - sVis - { - -13  -TResu - - tsu_ty -; - -16  - sVisab - { - -21 - gme - < -tyme - - gT -> - -22  - gIsVisab - : -is_ba_of -< -Visab -, - gT -> {}; - -24 - gme - < -tyme - - gT -> - -25  - gIsVisab -< - gT -&> : -IsVisab -< -T -> {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 - gme - < -tyme - - gTRd -,ym - gTSgStage -> - -17 as - cMsgPackDerliz - { - -18 - gpublic -: - -19 -MsgPackDerliz -( -MemyPo - & -po -, -TRd - -ad -, - -20 -TSgStage - -rgStage -) - -21 : -_po -(& -po -), - -22 -_ad -( -ad -), - -23 -_rgStage -( -rgStage -), - -24 -_r -( -DerliziE -:: -Ok -), - -25 -_foundSomhg -( -l -) {} - -27 - gme - < -tyme - - gTFr -> - -28 -DerliziE - -r -( -VDa - & -v -, -TFr - -fr -, - -29 -NegLim - -ágLim -) { - -30 -rV -( -v -, -fr -, -ágLim -); - -31  - g_foundSomhg - ? - g_r - : -DerliziE -:: -EmyIut -; - -34 - give -: - -36 -MsgPackDerliz - & -ݔ -=(const MsgPackDeserializer &); - -38 -bo - -vidIut -() { - -39 - g_r - = -DerliziE -:: -InvidIut -; - -40  - gl -; - -43 -bo - -nSu܋d -() { - -44 - g_r - = -DerliziE -:: -NSu܋d -; - -45  - gl -; - -48 - gme - < -tyme - - gTFr -> - -49 -bo - -rV -( -VDa - & -v -, -TFr - -fr -, - -50 -NegLim - -ágLim -) { - -51 -ut8_t - - gcode - = 0; - -52 i(! -adBy -( -code -)) - -53  - gl -; - -55 - g_foundSomhg - = -ue -; - -57 -bo - - glowVue - = -fr -. -lowVue -(); - -59  - gcode -) { - -62  -ue -; - -65  -vidIut -(); - -68 i( -lowVue -) - -69 -v -. -tBoޗn -( -l -); - -70  - gue -; - -73 i( -lowVue -) - -74 -v -. -tBoޗn -( -ue -); - -75  - gue -; - -78 i( -lowVue -) - -79  -nSu܋d -(); - -81  - gskSg -< - gut8_t ->(); - -84 i( -lowVue -) - -85  -nSu܋d -(); - -87  - gskSg -< - gut16_t ->(); - -90 i( -lowVue -) - -91  -nSu܋d -(); - -93  - gskSg -< - gut32_t ->(); - -96 i( -lowVue -) - -97  -nSu܋d -(); - -99  - gskExt -< - gut8_t ->(); - -102 i( -lowVue -) - -103  -nSu܋d -(); - -105  - gskExt -< - gut16_t ->(); - -108 i( -lowVue -) - -109  -nSu܋d -(); - -111  - gskExt -< - gut32_t ->(); - -114 i( -lowVue -) - -115  -adFlt -<>( -v -); - -117  -skBys -(4); - -120 i( -lowVue -) - -121  -adDoub -<>( -v -); - -123  -skBys -(8); - -126 i( -lowVue -) - -127  -adIeg -< -ut8_t ->( -v -); - -129  -skBys -(1); - -132 i( -lowVue -) - -133  -adIeg -< -ut16_t ->( -v -); - -135  -skBys -(2); - -138 i( -lowVue -) - -139  -adIeg -< -ut32_t ->( -v -); - -141  -skBys -(4); - -144 i( -lowVue -) - -145 #i -ARDUINOJSON_USE_LONG_LONG - - -146  -adIeg -< -ut64_t ->( -v -); - -148  -nSu܋d -(); - -151  -skBys -(8); - -154 i( -lowVue -) - -155  -adIeg -< -t8_t ->( -v -); - -157  -skBys -(1); - -160 i( -lowVue -) - -161  -adIeg -< -t16_t ->( -v -); - -163  -skBys -(2); - -166 i( -lowVue -) - -167  -adIeg -< -t32_t ->( -v -); - -169  -skBys -(4); - -172 i( -lowVue -) - -173 #i -ARDUINOJSON_USE_LONG_LONG - - -174  -adIeg -< -t64_t ->( -v -); - -176  -nSu܋d -(); - -179  -skBys -(8); - -182 i( -lowVue -) - -183  -nSu܋d -(); - -185  -skBys -(2); - -188 i( -lowVue -) - -189  -nSu܋d -(); - -191  -skBys -(3); - -194 i( -lowVue -) - -195  -nSu܋d -(); - -197  -skBys -(5); - -200 i( -lowVue -) - -201  -nSu܋d -(); - -203  -skBys -(9); - -206 i( -lowVue -) - -207  -nSu܋d -(); - -209  -skBys -(17); - -212 i( -lowVue -) - -213  -adSg -< -ut8_t ->( -v -); - -215  - gskSg -< - gut8_t ->(); - -218 i( -lowVue -) - -219  -adSg -< -ut16_t ->( -v -); - -221  - gskSg -< - gut16_t ->(); - -224 i( -lowVue -) - -225  -adSg -< -ut32_t ->( -v -); - -227  - gskSg -< - gut32_t ->(); - -230  -adAay -< -ut16_t ->( -v -, - gfr -, - gágLim -); - -233  -adAay -< -ut32_t ->( -v -, - gfr -, - gágLim -); - -236  -adObje -< -ut16_t ->( -v -, - gfr -, - gágLim -); - -239  -adObje -< -ut32_t ->( -v -, - gfr -, - gágLim -); - -242  - gcode - & 0xf0) { - -244  -adObje -( -v -, -code - & 0x0F, -fr -, -ágLim -); - -247  -adAay -( -v -, -code - & 0x0F, -fr -, -ágLim -); - -250 i(( - gcode - & 0xe0) == 0xa0) { - -251 i( -lowVue -) - -252  -adSg -( -v -, -code - & 0x1f); - -254  -skBys -( -code - & 0x1f); - -257 i( - glowVue -) - -258 - gv -. -tIeg -( -ic_ -< -t8_t ->( -code -)); - -260  - gue -; - -263 -bo - -adBy -( -ut8_t - & -vue -) { - -264  - gc - = -_ad -. -ad -(); - -265 i( - gc - < 0) { - -266 - g_r - = -DerliziE -:: -IncomeIut -; - -267  - gl -; - -269 - gvue - = -ic_ -< -ut8_t ->( -c -); - -270  - gue -; - -273 -bo - -adBys -( -ut8_t - * -p -, -size_t - -n -) { - -274 i( - g_ad -. -adBys -( -t_ -<*>( -p -), -n -) ==) - -275  -ue -; - -276 - g_r - = -DerliziE -:: -IncomeIut -; - -277  - gl -; - -280 - gme - < -tyme - - gT -> - -281 -bo - -adBys -( -T - & -vue -) { - -282  -adBys -( -t_ -< -ut8_t - *>(& -vue -), (value)); - -285 -bo - -skBys -( -size_t - -n -) { - -286 ; - gn -; --n) { - -287 i( - g_ad -. -ad -() < 0) { - -288 - g_r - = -DerliziE -:: -IncomeIut -; - -289  - gl -; - -292  - gue -; - -295 - gme - < -tyme - - gT -> - -296 -bo - -adIeg -( -T - & -vue -) { - -297 i(! -adBys -( -vue -)) - -298  - gl -; - -299 -fixEndss -( -vue -); - -300  - gue -; - -303 - gme - < -tyme - - gT -> - -304 -bo - -adIeg -( -VDa - & -v -) { - -305 -T - - gvue -; - -306 i(! -adIeg -( -vue -)) - -307  - gl -; - -308 - gv -. -tIeg -( -vue -); - -309  - gue -; - -312 - gme - < -tyme - - gT -> - -313 -tyme - - gab_if -<( - gT -=4, - gbo ->:: -ty - -adFlt -( - -314 -VDa - & -v -) { - -315 -T - -vue -; - -316 i(! -adBys -( -vue -)) - -317  - gl -; - -318 -fixEndss -( -vue -); - -319 - gv -. -tFlt -( -vue -); - -320  - gue -; - -323 - gme - < -tyme - - gT -> - -324 -tyme - - gab_if -<( - gT -=8, - gbo ->:: -ty - -adDoub -( - -325 -VDa - & -v -) { - -326 -T - -vue -; - -327 i(! -adBys -( -vue -)) - -328  - gl -; - -329 -fixEndss -( -vue -); - -330 - gv -. -tFlt -( -vue -); - -331  - gue -; - -334 - gme - < -tyme - - gT -> - -335 -tyme - - gab_if -<( - gT -=4, - gbo ->:: -ty - -adDoub -( - -336 -VDa - & -v -) { - -337 -ut8_t - -i -[8]; - -338 -T - - gvue -; - -339 -ut8_t - * - go - = -t_ -(& -vue -); - -340 i(! -adBys -( -i -, 8)) - -341  - gl -; - -342 -doubToFlt -( -i -, -o -); - -343 -fixEndss -( -vue -); - -344 - gv -. -tFlt -( -vue -); - -345  - gue -; - -348 - gme - < -tyme - - gT -> - -349 -bo - -adSg -( -VDa - & -v -) { - -350 -T - - gsize -; - -351 i(! -adIeg -( -size -)) - -352  - gl -; - -353  -adSg -( -v -, -size -); - -356 - gme - < -tyme - - gT -> - -357 -bo - -adSg -() { - -358 -T - - gsize -; - -359 i(! -adIeg -( -size -)) - -360  - gl -; - -361  -adSg -( -size -); - -364 - gme - < -tyme - - gT -> - -365 -bo - -skSg -() { - -366 -T - - gsize -; - -367 i(! -adIeg -( -size -)) - -368  - gl -; - -369  -skBys -( -size -); - -372 -bo - -adSg -( -VDa - & -v -, -size_t - -n -) { - -373 i(! -adSg -( -n -)) - -374  - gl -; - -375 - gv -. -tSgPor -( -_rgStage -. -ve -(), - -376 -tyme - -TSgStage -:: -age_picy -()); - -377  - gue -; - -380 -bo - -adSg -( -size_t - -n -) { - -381 - g_rgStage -. -tSg -(); - -382 ; - gn -; --n) { - -383 -ut8_t - - gc -; - -384 i(! -adBys -( -c -)) - -385  - gl -; - -386 - g_rgStage -. -nd -( -ic_ -<>( -c -)); - -388 - g_rgStage -. -nd -('\0'); - -389 i(! - g_rgStage -. -isVid -()) { - -390 - g_r - = -DerliziE -:: -NoMemy -; - -391  - gl -; - -394  - gue -; - -397 - gme - < -tyme - - gTSize -,ym - gTFr -> - -398 -bo - -adAay -( -VDa - & -v -, -TFr - -fr -, - -399 -NegLim - -ágLim -) { - -400 -TSize - - gsize -; - -401 i(! -adIeg -( -size -)) - -402  - gl -; - -403  -adAay -( -v -, -size -, -fr -, -ágLim -); - -406 - gme - < -tyme - - gTFr -> - -407 -bo - -adAay -( -VDa - & -v -, -size_t - -n -, -TFr - -fr -, - -408 -NegLim - -ágLim -) { - -409 i( - gágLim -. -ached -()) { - -410 - g_r - = -DerliziE -:: -TooDp -; - -411  - gl -; - -414 -bo - - glowAay - = -fr -. -lowAay -(); - -416 -CiDa - * - gy - = -lowAay - ? & -v -. -toAay -() : 0; - -418 -TFr - - gmembFr - = -fr -[0U]; - -420 ; - gn -; --n) { - -421 -VDa - * - gvue -; - -423 i( - gmembFr -. -low -()) { - -424 - gvue - = -y --> -addEmt -( -_po -); - -425 i(! - gvue -) { - -426 - g_r - = -DerliziE -:: -NoMemy -; - -427  - gl -; - -430 - gvue - = 0; - -433 i(! -rV -(* -vue -, -membFr -, -ágLim -. -deemt -())) - -434  - gl -; - -437  - gue -; - -440 - gme - < -tyme - - gTSize -,ym - gTFr -> - -441 -bo - -adObje -( -VDa - & -v -, -TFr - -fr -, - -442 -NegLim - -ágLim -) { - -443 -TSize - - gsize -; - -444 i(! -adIeg -( -size -)) - -445  - gl -; - -446  -adObje -( -v -, -size -, -fr -, -ágLim -); - -449 - gme - < -tyme - - gTFr -> - -450 -bo - -adObje -( -VDa - & -v -, -size_t - -n -, -TFr - -fr -, - -451 -NegLim - -ágLim -) { - -452 i( - gágLim -. -ached -()) { - -453 - g_r - = -DerliziE -:: -TooDp -; - -454  - gl -; - -457 -CiDa - * - gobje - = -fr -. -lowObje -(? & -v -. -toObje -() : 0; - -459 ; - gn -; --n) { - -460 i(! -adKey -()) - -461  - gl -; - -463 cڡ * - gkey - = -_rgStage -. -c_r -(); - -464 -TFr - - gmembFr - = -fr -[ -key -]; - -465 -VDa - * - gmemb -; - -467 i( - gmembFr -. -low -()) { - -470 - gkey - = -_rgStage -. -ve -(); - -472 -VSl - * - g - = -obje --> -addSl -( -_po -); - -473 i(! - g -) { - -474 - g_r - = -DerliziE -:: -NoMemy -; - -475  - gl -; - -478 - g --> -tKey -( -key -, -tyme - -TSgStage -:: -age_picy -()); - -480 - gmemb - = - --> -da -(); - -482 - gmemb - = 0; - -485 i(! -rV -(* -memb -, -membFr -, -ágLim -. -deemt -())) - -486  - gl -; - -489  - gue -; - -492 -bo - -adKey -() { - -493 -ut8_t - - gcode -; - -494 i(! -adBy -( -code -)) - -495  - gl -; - -497 i(( - gcode - & 0xe0) == 0xa0) - -498  -adSg -( -code - & 0x1f); - -500  - gcode -) { - -502  -adSg -< -ut8_t ->(); - -505  -adSg -< -ut16_t ->(); - -508  -adSg -< -ut32_t ->(); - -511  -nSu܋d -(); - -515 - gme - < -tyme - - gT -> - -516 -bo - -skExt -() { - -517 -T - - gsize -; - -518 i(! -adIeg -( -size -)) - -519  - gl -; - -520  -skBys -( -size - + 1); - -523 -MemyPo - * - g_po -; - -524 -TRd - - g_ad -; - -525 -TSgStage - - g_rgStage -; - -526 -DerliziE - - g_r -; - -527 -bo - - g_foundSomhg -; - -534 - gme - < -tyme - - gTSg -> - -535 -DerliziE - -derlizeMsgPack -( - -536 -JsDocumt - & -doc -, cڡ -TSg - & -put -, - -537 -NegLim - -ágLim - = - $NegLim -()) { - -538  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, - -539 - `AowAFr -()); - -540 - } -} - -542 - gme - < -tyme - - gTSg -> - -543 -DerliziE - -derlizeMsgPack -( - -544 -JsDocumt - & -doc -, cڡ -TSg - & -put -, -Fr - -fr -, - -545 -NegLim - -ágLim - = - $NegLim -()) { - -546  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -547 - } -} - -549 - gme - < -tyme - - gTSg -> - -550 -DerliziE - - $derlizeMsgPack -( -JsDocumt - & -doc -, cڡ -TSg - & -put -, - -551 -NegLim - -ágLim -, - -552 -Fr - -fr -) { - -553  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -554 - } -} - -560 - gme - < -tyme - - gTSm -> - -561 -DerliziE - -derlizeMsgPack -( - -562 -JsDocumt - & -doc -, -TSm - & -put -, - -563 -NegLim - -ágLim - = - $NegLim -()) { - -564  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, - -565 - `AowAFr -()); - -566 - } -} - -568 - gme - < -tyme - - gTSm -> - -569 -DerliziE - -derlizeMsgPack -( - -570 -JsDocumt - & -doc -, -TSm - & -put -, -Fr - -fr -, - -571 -NegLim - -ágLim - = - $NegLim -()) { - -572  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -573 - } -} - -575 - gme - < -tyme - - gTSm -> - -576 -DerliziE - - $derlizeMsgPack -( -JsDocumt - & -doc -, -TSm - & -put -, - -577 -NegLim - -ágLim -, - -578 -Fr - -fr -) { - -579  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -580 - } -} - -586 - gme - < -tyme - - gTCh -> - -587 -DerliziE - -derlizeMsgPack -( - -588 -JsDocumt - & -doc -, -TCh - * -put -, - -589 -NegLim - -ágLim - = - $NegLim -()) { - -590  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, - -591 - `AowAFr -()); - -592 - } -} - -594 - gme - < -tyme - - gTCh -> - -595 -DerliziE - -derlizeMsgPack -( - -596 -JsDocumt - & -doc -, -TCh - * -put -, -Fr - -fr -, - -597 -NegLim - -ágLim - = - $NegLim -()) { - -598  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -599 - } -} - -601 - gme - < -tyme - - gTCh -> - -602 -DerliziE - - $derlizeMsgPack -( -JsDocumt - & -doc -, -TCh - * -put -, - -603 -NegLim - -ágLim -, - -604 -Fr - -fr -) { - -605  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -606 - } -} - -612 - gme - < -tyme - - gTCh -> - -613 -DerliziE - -derlizeMsgPack -( - -614 -JsDocumt - & -doc -, -TCh - * -put -, -size_t - -putSize -, - -615 -NegLim - -ágLim - = - $NegLim -()) { - -616  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -617 - `AowAFr -()); - -618 - } -} - -620 - gme - < -tyme - - gTCh -> - -621 -DerliziE - -derlizeMsgPack -( - -622 -JsDocumt - & -doc -, -TCh - * -put -, -size_t - -putSize -, -Fr - -fr -, - -623 -NegLim - -ágLim - = - $NegLim -()) { - -624  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -625 -fr -); - -626 - } -} - -628 - gme - < -tyme - - gTCh -> - -629 -DerliziE - - $derlizeMsgPack -( -JsDocumt - & -doc -, -TCh - * -put -, - -630 -size_t - -putSize -, - -631 -NegLim - -ágLim -, - -632 -Fr - -fr -) { - -633  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -634 -fr -); - -635 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gTWr -> - -18 -ass - - gMsgPackSliz - : -public - -Vis -< -size_t -> { - -19 -public -: - -20 -MsgPackSliz -( -TWr - -wr -: -_wr -(writer) {} - -22 -me - < -tyme - -T -> - -23 -tyme - -ab_if -<( -T -=4, - gsize_t ->:: -ty - -visFlt -(T -vue32 -) { - -24 -wreBy -(0xCA); - -25 -wreIeg -( -vue32 -); - -26  -bysWrn -(); - -29 - gme - < -tyme - - gT -> - -30 -ARDUINOJSON_NO_SANITIZE -("float-cast-overflow") - -31 -tyme - - gab_if -<( - gT -=8, - gsize_t ->:: -ty - -visFlt -( -T - -vue64 -) { - -32  -vue32 - = ( -vue64 -); - -33 i( - gvue32 - = -vue64 -) { - -34 -wreBy -(0xCA); - -35 -wreIeg -( -vue32 -); - -37 -wreBy -(0xCB); - -38 -wreIeg -( -vue64 -); - -40  -bysWrn -(); - -43 -size_t - -visAay -(cڡ -CiDa -& -y -) { - -44 -size_t - - gn - = -y -. -size -(); - -45 i( - gn - < 0x10) { - -46 -wreBy -( -ut8_t -(0x90 + -y -. -size -())); - -47 } i( - gn - < 0x10000) { - -48 -wreBy -(0xDC); - -49 -wreIeg -( -ut16_t -( -n -)); - -51 -wreBy -(0xDD); - -52 -wreIeg -( -ut32_t -( -n -)); - -54  -VSl -* - g - = -y -. -hd -(); sl; sl = - --> -xt -()) { - -55 - --> -da -()-> -ac -(* -this -); - -57  -bysWrn -(); - -60 -size_t - -visObje -(cڡ -CiDa -& -obje -) { - -61 -size_t - - gn - = -obje -. -size -(); - -62 i( - gn - < 0x10) { - -63 -wreBy -( -ut8_t -(0x80 + -n -)); - -64 } i( - gn - < 0x10000) { - -65 -wreBy -(0xDE); - -66 -wreIeg -( -ut16_t -( -n -)); - -68 -wreBy -(0xDF); - -69 -wreIeg -( -ut32_t -( -n -)); - -71  -VSl -* - g - = -obje -. -hd -(); sl; sl = - --> -xt -()) { - -72 -visSg -( - --> -key -()); - -73 - g --> -da -()-> -ac -(* -this -); - -75  -bysWrn -(); - -78 -size_t - -visSg -(cڡ * -vue -) { - -79 -ARDUINOJSON_ASSERT -( -vue - ! -NULL -); - -81 -size_t - - gn - = - -( -vue -); - -83 i( - gn - < 0x20) { - -84 -wreBy -( -ut8_t -(0xA0 + -n -)); - -85 } i( - gn - < 0x100) { - -86 -wreBy -(0xD9); - -87 -wreIeg -( -ut8_t -( -n -)); - -88 } i( - gn - < 0x10000) { - -89 -wreBy -(0xDA); - -90 -wreIeg -( -ut16_t -( -n -)); - -92 -wreBy -(0xDB); - -93 -wreIeg -( -ut32_t -( -n -)); - -95 -wreBys -( -t_ -( -vue -), -n -); - -96  -bysWrn -(); - -99 -size_t - -visRawJs -(cڡ * -da -, size_ -size -) { - -100 -wreBys -( -t_ -( -da -), -size -); - -101  -bysWrn -(); - -104 -size_t - -visNegiveIeg -( -UI - -vue -) { - -105 -UI - - gged - = UI(~ -vue - + 1); - -106 i( - gvue - <= 0x20) { - -107 -wreIeg -( -t8_t -( -ged -)); - -108 } i( - gvue - <= 0x80) { - -109 -wreBy -(0xD0); - -110 -wreIeg -( -t8_t -( -ged -)); - -111 } i( - gvue - <= 0x8000) { - -112 -wreBy -(0xD1); - -113 -wreIeg -( -t16_t -( -ged -)); - -114 } i( - gvue - <= 0x80000000) { - -115 -wreBy -(0xD2); - -116 -wreIeg -( -t32_t -( -ged -)); - -118 #i -ARDUINOJSON_USE_LONG_LONG - - -120 -wreBy -(0xD3); - -121 -wreIeg -( -t64_t -( -ged -)); - -124  -bysWrn -(); - -127 -size_t - -visPosiveIeg -( -UI - -vue -) { - -128 i( - gvue - <= 0x7F) { - -129 -wreIeg -( -ut8_t -( -vue -)); - -130 } i( - gvue - <= 0xFF) { - -131 -wreBy -(0xCC); - -132 -wreIeg -( -ut8_t -( -vue -)); - -133 } i( - gvue - <= 0xFFFF) { - -134 -wreBy -(0xCD); - -135 -wreIeg -( -ut16_t -( -vue -)); - -137 #i -ARDUINOJSON_USE_LONG_LONG - - -138 i( - gvue - <= 0xFFFFFFFF) - -143 -wreBy -(0xCE); - -144 -wreIeg -( -ut32_t -( -vue -)); - -146 #i -ARDUINOJSON_USE_LONG_LONG - - -148 -wreBy -(0xCF); - -149 -wreIeg -( -ut64_t -( -vue -)); - -152  -bysWrn -(); - -155 -size_t - -visBoޗn -( -bo - -vue -) { - -156 -wreBy -( -vue - ? 0xC3 : 0xC2); - -157  -bysWrn -(); - -160 -size_t - -visNu -() { - -161 -wreBy -(0xC0); - -162  -bysWrn -(); - -165 - give -: - -166 -size_t - -bysWrn -() const { - -167  -_wr -. -cou -(); - -170  -wreBy -( -ut8_t - -c -) { - -171 - g_wr -. -wre -( -c -); - -174  -wreBys -(cڡ -ut8_t -* -p -, -size_t - -n -) { - -175 - g_wr -. -wre -( -p -, -n -); - -178 - gme - < -tyme - - gT -> - -179  -wreIeg -( -T - -vue -) { - -180 -fixEndss -( -vue -); - -181 -wreBys -( -t_ -< -ut8_t -*>(& -vue -), (value)); - -184 - gCougDecܩ -< - gTWr -> - g_wr -; - -187 - gme - < -tyme - - gTSour -,ym - gTDei -> - -188 -le - -size_t - -rlizeMsgPack -(cڡ -TSour -& -sour -, -TDei -& -ouut -) { - -189  - grlize -< - gMsgPackSliz ->( - gsour -, - gouut -); - -192 - gme - < -tyme - - gTSour -> - -193 -le - -size_t - -rlizeMsgPack -(cڡ -TSour -& -sour -, * -ouut -, - -194 -size_t - -size -) { - -195  - grlize -< - gMsgPackSliz ->( - gsour -, - gouut -, - gsize -); - -198 - gme - < -tyme - - gTSour -> - -199 -le - -size_t - -msuMsgPack -(cڡ -TSour -& -sour -) { - -200  - gmsu -< - gMsgPackSliz ->( - gsour -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 #i -ARDUINOJSON_LITTLE_ENDIAN - - -13 -le -  -fixEndss -( -ut8_t - * -p -, -gl_cڡt -< -size_t -, 8>) { - -14 -sw -( -p -[0],[7]); - -15 -sw -( -p -[1],[6]); - -16 -sw -( -p -[2],[5]); - -17 -sw -( -p -[3],[4]); - -20 -le -  -fixEndss -( -ut8_t - * -p -, -gl_cڡt -< -size_t -, 4>) { - -21 -sw -( -p -[0],[3]); - -22 -sw -( -p -[1],[2]); - -25 -le -  -fixEndss -( -ut8_t - * -p -, -gl_cڡt -< -size_t -, 2>) { - -26 -sw -( -p -[0],[1]); - -29 -le -  -fixEndss -( -ut8_t - *, -gl_cڡt -< -size_t -, 1>) {} - -31 - gme - < -tyme - - gT -> - -32 -le -  -fixEndss -( -T - & -vue -) { - -33 -fixEndss -( -t_ -< -ut8_t - *>(& -vue -), - -34 -gl_cڡt -< -size_t -, ( -T -)>()); - -37 - gme - < -tyme - - gT -> - -38 -le -  -fixEndss -( -T - &) {} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -le -  -doubToFlt -(cڡ -ut8_t - -d -[8], ut8_ -f -[4]) { - -12 - gf -[0] = -ut8_t -(( -d -[0] & 0xC0) | (d[0] << 3 & 0x3f) | (d[1] >> 5)); - -13 - gf -[1] = -ut8_t -(( -d -[1] << 3) | (d[2] >> 5)); - -14 - gf -[2] = -ut8_t -(( -d -[2] << 3) | (d[3] >> 5)); - -15 - gf -[3] = -ut8_t -(( -d -[3] << 3) | (d[4] >> 5)); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 #ide -ARDUINOJSON_NAMESPACE - - -13  - #ARDUINOJSON_NAMESPACE - \ - -14 - `ARDUINOJSON_CONCAT4 -( \ - -15 - `ARDUINOJSON_CONCAT4 -( -ArduoJs -, -ARDUINOJSON_VERSION_MAJOR -, \ - -16 -ARDUINOJSON_VERSION_MINOR -, \ - -17 -ARDUINOJSON_VERSION_REVISION -), \ - -18 -_ -, \ - -19 - `ARDUINOJSON_HEX_DIGIT -( -ARDUINOJSON_ENABLE_PROGMEM -, \ - -20 -ARDUINOJSON_USE_LONG_LONG -, -ARDUINOJSON_USE_DOUBLE -, \ - -21 -ARDUINOJSON_ENABLE_STRING_DEDUPLICATION -), \ - -22 - `ARDUINOJSON_HEX_DIGIT -( \ - -23 -ARDUINOJSON_ENABLE_NAN -, -ARDUINOJSON_ENABLE_INFINITY -, \ - -24 -ARDUINOJSON_ENABLE_COMMENTS -, -ARDUINOJSON_DECODE_UNICODE -)) - - ) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 #i -ARDUINOJSON_USE_DOUBLE - - -13  - tFlt -; - -15  - tFlt -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gTFlt -> - -14  - sFltPts - { - -15 -ut32_t - - ggl -; - -16 -ut32_t - - gdecim -; - -17 -t16_t - - gexpڒt -; - -18 -t8_t - - gdecimPs -; - -20 -FltPts -( -TFlt - -vue -) { - -21 -ut32_t - - gmaxDecimPt - = ( -TFlt -) >= 8 ? 1000000000 : 1000000; - -22 - gdecimPs - = ( -TFlt -) >= 8 ? 9 : 6; - -24 - gexpڒt - = -nmize -( -vue -); - -26 - ggl - = -ut32_t -( -vue -); - -28  -ut32_t - - gtmp - = -gl -;mp >= 10;mp /= 10) { - -29 -maxDecimPt - /= 10; - -30 - gdecimPs ---; - -33 -TFlt - - gmad - = ( -vue - - TFlt( -gl -)* TFlt( -maxDecimPt -); - -35 - gdecim - = -ut32_t -( -mad -); - -36 - gmad - = -mad - - -TFlt -( -decim -); - -40 - gdecim - + -ut32_t -( -mad - * 2); - -41 i( - gdecim - > -maxDecimPt -) { - -42 -decim - = 0; - -43 - ggl -++; - -44 i( - gexpڒt - && - ggl - >= 10) { - -45 -expڒt -++; - -46 - ggl - = 1; - -51  - gdecim - % 10 =0 && -decimPs - > 0) { - -52 -decim - /= 10; - -53 - gdecimPs ---; - -57  -t16_t - -nmize -( -TFlt -& -vue -) { - -58  - gFltTs -< - tTFlt -> - tas -; - -59 -t16_t - - gpowsOf10 - = 0; - -61 -t8_t - - gdex - = ( -TFlt -) == 8 ? 8 : 5; - -62  - gb - = 1 << -dex -; - -64 i( - gvue - > -ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD -) { - -65 ; - gdex - >= 0; index--) { - -66 i( - gvue - > -as -:: -posiveByPowOfT -( -dex -)) { - -67 -vue - * -as -:: -giveByPowOfT -( -dex -); - -68 - gpowsOf10 - = -t16_t -( -powsOf10 - + -b -); - -70 - gb - >>= 1; - -74 i( - gvue - > 0 && vu< -ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD -) { - -75 ; - gdex - >= 0; index--) { - -76 i( - gvue - < - gas -:: -giveByPowOfTPlusO -( -dex -)) { - -77 -vue - * -as -:: -posiveByPowOfT -( -dex -); - -78 - gpowsOf10 - = -t16_t -( -powsOf10 - - -b -); - -80 - gb - >>= 1; - -84  - gpowsOf10 -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 - gme - < -tyme - - gT -, - gsize_t - = ( -T -)> - -19  - sFltTs - {}; - -21 - gme - < -tyme - - gT -> - -22  - gFltTs -< - gT -, 8 > { - -23  -ut64_t - - tmtis_ty -; - -24 cڡ  - gmtis_bs - = 52; - -25 cڡ -mtis_ty - - gmtis_max - = - -26 ( -mtis_ty -(1<< -mtis_bs -) - 1; - -28  -t16_t - - texpڒt_ty -; - -29 cڡ -expڒt_ty - - gexpڒt_max - = 308; - -31 - gme - < -tyme - - gTExpڒt -> - -32  -T - -make_t -(T -m -, -TExpڒt - -e -) { - -33 i( - ge - > 0) { - -34  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -35 i( - ge - & 1) - -36 - gm - * -posiveByPowOfT -( -dex -); - -37 - ge - >>= 1; - -40 - ge - = -TExpڒt -(- -e -); - -41  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -42 i( - ge - & 1) - -43 - gm - * -giveByPowOfT -( -dex -); - -44 - ge - >>= 1; - -47  - gm -; - -50  -T - -posiveByPowOfT -( -dex -) { - -51 -ARDUINOJSON_DEFINE_STATIC_ARRAY -( - -52 -ut32_t -, -s -, - -53 -ARDUINOJSON_EXPAND18 -({ - -64  -fge -( - -65 -ARDUINOJSON_READ_STATIC_ARRAY -( -ut32_t -, -s -, 2 * -dex -), - -66 -ARDUINOJSON_READ_STATIC_ARRAY -( -ut32_t -, -s -, 2 * -dex - + 1)); - -69  -T - -giveByPowOfT -( -dex -) { - -70 -ARDUINOJSON_DEFINE_STATIC_ARRAY -( - -71 -ut32_t -, -s -, - -72 -ARDUINOJSON_EXPAND18 -({ - -83  -fge -( - -84 -ARDUINOJSON_READ_STATIC_ARRAY -( -ut32_t -, -s -, 2 * -dex -), - -85 -ARDUINOJSON_READ_STATIC_ARRAY -( -ut32_t -, -s -, 2 * -dex - + 1)); - -88  -T - -giveByPowOfTPlusO -( -dex -) { - -89 -ARDUINOJSON_DEFINE_STATIC_ARRAY -( - -90 -ut32_t -, -s -, - -91 -ARDUINOJSON_EXPAND18 -({ - -102  -fge -( - -103 -ARDUINOJSON_READ_STATIC_ARRAY -( -ut32_t -, -s -, 2 * -dex -), - -104 -ARDUINOJSON_READ_STATIC_ARRAY -( -ut32_t -, -s -, 2 * -dex - + 1)); - -107  -T - -n -() { - -108  -fge -(0x7ff80000, 0x00000000); - -111  -T - -f -() { - -112  -fge -(0x7ff00000, 0x00000000); - -115  -T - -highe -() { - -116  -fge -(0x7FEFFFFF, 0xFFFFFFFF); - -119  -T - -lowe -() { - -120  -fge -(0xFFEFFFFF, 0xFFFFFFFF); - -126  -T - -fge -( -ut32_t - -msb -, ut32_ -lsb -) { - -127  - gs_ -< - gT ->(( -ut64_t -( -msb -<< 32| - glsb -); - -131 - gme - < -tyme - - gT -> - -132  - gFltTs -< - gT -, 4 > { - -133  -ut32_t - - tmtis_ty -; - -134 cڡ  - gmtis_bs - = 23; - -135 cڡ -mtis_ty - - gmtis_max - = - -136 ( -mtis_ty -(1<< -mtis_bs -) - 1; - -138  -t8_t - - texpڒt_ty -; - -139 cڡ -expڒt_ty - - gexpڒt_max - = 38; - -141 - gme - < -tyme - - gTExpڒt -> - -142  -T - -make_t -(T -m -, -TExpڒt - -e -) { - -143 i( - ge - > 0) { - -144  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -145 i( - ge - & 1) - -146 - gm - * -posiveByPowOfT -( -dex -); - -147 - ge - >>= 1; - -150 - ge - = - -e -; - -151  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -152 i( - ge - & 1) - -153 - gm - * -giveByPowOfT -( -dex -); - -154 - ge - >>= 1; - -157  - gm -; - -160  -T - -posiveByPowOfT -( -dex -) { - -161 -ARDUINOJSON_DEFINE_STATIC_ARRAY -( - -162 -T -, -s -, - -163 -ARDUINOJSON_EXPAND6 -({1e1f, 1e2f, 1e4f, 1e8f, 1e16f, 1e32f})); - -164  -ARDUINOJSON_READ_STATIC_ARRAY -( -T -, -s -, -dex -); - -167  -T - -giveByPowOfT -( -dex -) { - -168 -ARDUINOJSON_DEFINE_STATIC_ARRAY -( - -169 -T -, -s -, - -170 -ARDUINOJSON_EXPAND6 -({1e-1f, 1e-2f, 1e-4f, 1e-8f, 1e-16f, 1e-32f})); - -171  -ARDUINOJSON_READ_STATIC_ARRAY -( -T -, -s -, -dex -); - -174  -T - -giveByPowOfTPlusO -( -dex -) { - -175 -ARDUINOJSON_DEFINE_STATIC_ARRAY -( - -176 -T -, -s -, - -177 -ARDUINOJSON_EXPAND6 -({1e0f, 1e-1f, 1e-3f, 1e-7f, 1e-15f, 1e-31f})); - -178  -ARDUINOJSON_READ_STATIC_ARRAY -( -T -, -s -, -dex -); - -181  -T - -fge -( -ut32_t - -bs -) { - -182  - gs_ -< - gT ->( - gbs -); - -185  -T - -n -() { - -186  -fge -(0x7fc00000); - -189  -T - -f -() { - -190  -fge -(0x7f800000); - -193  -T - -highe -() { - -194  -fge -(0x7f7fffff); - -197  -T - -lowe -() { - -198  -fge -(0xFf7fffff); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 #i -ARDUINOJSON_USE_LONG_LONG - - -15  -t64_t - - tIeg -; - -16  -ut64_t - - tUI -; - -18  - tIeg -; - -19  - tUI -; - -24 #i -ARDUINOJSON_HAS_LONG_LONG - && ! -ARDUINOJSON_USE_LONG_LONG - - -25  - #ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED -( -T -) \ - -26 - `ic_as -(( -T -<( -ARDUINOJSON_NAMESPACE -:: -Ieg -), \ - -29 "hps://duojs.g/v6/i/cfig/u_lg_lg/"); - - ) - -31  - #ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED -( -T -) - - ) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - eComResu - { - -13 - gCOMPARE_RESULT_DIFFER - = 0, - -14 - gCOMPARE_RESULT_EQUAL - = 1, - -15 - gCOMPARE_RESULT_GREATER - = 2, - -16 - gCOMPARE_RESULT_LESS - = 4, - -18 - gCOMPARE_RESULT_GREATER_OR_EQUAL - = 3, - -19 - gCOMPARE_RESULT_LESS_OR_EQUAL - = 5 - -22 - gme - < -tyme - - gT -> - -23 -ComResu - -hmicCom -(cڡ -T - & -lhs -, cڡ T & -rhs -) { - -24 i( - glhs - < - grhs -) - -25  - gCOMPARE_RESULT_LESS -; - -26 i( - glhs - > - grhs -) - -27  - gCOMPARE_RESULT_GREATER -; - -29  - gCOMPARE_RESULT_EQUAL -; - -32 - gme - < -tyme - - gT1 -,ym - gT2 -> - -33 -ComResu - -hmicCom -( - -34 cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -, - -35 -tyme - -ab_if -< -is_gl -< -T1 ->:: -vue - && is_gl< -T2 ->::value && - -36 ( -T1 -< ( -T2 -), - -39 >:: -ty - * = 0) { - -40  -hmicCom -< -T2 ->( -ic_ -( -lhs -), -rhs -); - -43 - gme - < -tyme - - gT1 -,ym - gT2 -> - -44 -ComResu - -hmicCom -( - -45 cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -, - -46 -tyme - -ab_if -< -is_gl -< -T1 ->:: -vue - && is_gl< -T2 ->::value && - -47 ( -T2 -< ( -T1 -)>:: -ty - * = 0) { - -48  -hmicCom -< -T1 ->( -lhs -, -ic_ -( -rhs -)); - -51 - gme - < -tyme - - gT1 -,ym - gT2 -> - -52 -ComResu - -hmicCom -( - -53 cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -, - -54 -tyme - -ab_if -< -is_gl -< -T1 ->:: -vue - && is_gl< -T2 ->::value && - -55 -is_sigd -< -T1 ->:: -vue - =is_sigd< -T2 ->::value && - -56 ( -T2 -=( -T1 -)>:: -ty - * = 0) { - -57  -hmicCom -< -T1 ->( -lhs -, -ic_ -( -rhs -)); - -60 - gme - < -tyme - - gT1 -,ym - gT2 -> - -61 -ComResu - -hmicCom -( - -62 cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -, - -63 -tyme - -ab_if -< -is_gl -< -T1 ->:: -vue - && is_gl< -T2 ->::value && - -64 -is_unsigd -< -T1 ->:: -vue - && -is_sigd -< -T2 ->::value && - -65 ( -T2 -=( -T1 -)>:: -ty - * = 0) { - -66 i( -rhs - < 0) - -67  -COMPARE_RESULT_GREATER -; - -68  - ghmicCom -< - gT1 ->( - glhs -, - gic_ -( - grhs -)); - -71 - gme - < -tyme - - gT1 -,ym - gT2 -> - -72 -ComResu - -hmicCom -( - -73 cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -, - -74 -tyme - -ab_if -< -is_gl -< -T1 ->:: -vue - && is_gl< -T2 ->::value && - -75 -is_sigd -< -T1 ->:: -vue - && -is_unsigd -< -T2 ->::value && - -76 ( -T2 -=( -T1 -)>:: -ty - * = 0) { - -77 i( -lhs - < 0) - -78  -COMPARE_RESULT_LESS -; - -79  - ghmicCom -< - gT2 ->( - gic_ -( - glhs -), - grhs -); - -82 - gme - < -tyme - - gT1 -,ym - gT2 -> - -83 -ComResu - -hmicCom -( - -84 cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -, - -85 -tyme - -ab_if -< -is_tg_pot -< -T1 ->:: -vue - || - -86 -is_tg_pot -< -T2 ->:: -vue ->:: -ty - * = 0) { - -87  -hmicCom -<>( -ic_ -<>( -lhs -), - -88 -ic_ -<>( -rhs -)); - -91 - gme - < -tyme - - gT2 -> - -92 -ComResu - -hmicComNegeLe -( - -93 -UI -, cڡ -T2 - &, -tyme - -ab_if -< -is_unsigd -:: -vue ->:: -ty - * = 0) { - -94  -COMPARE_RESULT_LESS -; - -97 - gme - < -tyme - - gT2 -> - -98 -ComResu - -hmicComNegeLe -( - -99 -UI - -lhs -, cڡ -T2 - & -rhs -, - -100 -tyme - -ab_if -< -is_sigd -< -T2 ->:: -vue ->:: -ty - * = 0) { - -101 i( -rhs - > 0) - -102  -COMPARE_RESULT_LESS -; - -103  -hmicCom -(- -rhs -, -ic_ -< -T2 ->( -lhs -)); - -106 - gme - < -tyme - - gT1 -> - -107 -ComResu - -hmicComNegeRight -( - -108 cڡ -T1 - &, -UI -, -tyme - -ab_if -< -is_unsigd -:: -vue ->:: -ty - * = 0) { - -109  -COMPARE_RESULT_GREATER -; - -112 - gme - < -tyme - - gT1 -> - -113 -ComResu - -hmicComNegeRight -( - -114 cڡ -T1 - & -lhs -, -UI - -rhs -, - -115 -tyme - -ab_if -< -is_sigd -< -T1 ->:: -vue ->:: -ty - * = 0) { - -116 i( -lhs - > 0) - -117  -COMPARE_RESULT_GREATER -; - -118  -hmicCom -( -ic_ -< -T1 ->( -rhs -), - -lhs -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp - -5 #agm - - - -7 #i -defed -( -__g__ -) - -8 #agm -g - -dgnoic - -push - - -9 #agm -g - -dgnoic - -igned - "-Wconversion" - -10 #i -defed -( -__GNUC__ -) - -11 #i -__GNUC__ - > 4 || (__GNUC__ =4 && -__GNUC_MINOR__ - >= 6) - -12 #agm -GCC - -dgnoic - -push - - -14 #agm -GCC - -dgnoic - -igned - "-Wconversion" - -17  - ~ - -18  - ~ - -19  - ~ - -20  - ~ - -22 -mea - - gARDUINOJSON_NAMESPACE - { - -24 - gme - < -tyme - - gTOut -,ym - gTIn -> - -25 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && ( -TOut -<( -TIn -), - -26 - gbo ->:: -ty - - -27 -nStePosiveIeg -( -TIn - -vue -) { - -28  -vue - < -TIn -( -numic_lims -< -TOut ->:: -highe -()); - -31 - gme - < -tyme - - gTOut -,ym - gTIn -> - -32 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && ( -TIn -< ( -TOut -), - -33 - gbo ->:: -ty - - -34 -nStePosiveIeg -( -TIn -) { - -35  -ue -; - -38 - gme - < -tyme - - gTOut -,ym - gTIn -> - -39 -tyme - - gab_if -< - gis_tg_pot -< - gTOut ->:: -vue -, - gbo ->:: -ty - - -40 -nStePosiveIeg -( -TIn -) { - -41  -ue -; - -44 - gme - < -tyme - - gTOut -,ym - gTIn -> - -45 -tyme - - gab_if -< - gis_tg_pot -< - gTOut ->:: -vue -, - gbo ->:: -ty - - -46 -nSteNegiveIeg -( -TIn -) { - -47  -ue -; - -50 - gme - < -tyme - - gTOut -,ym - gTIn -> - -51 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && -is_sigd -< -TOut ->::value && - -52 ( -TOut -<( -TIn -), - -53 - gbo ->:: -ty - - -54 -nSteNegiveIeg -( -TIn - -vue -) { - -55  -vue - < -TIn -( -numic_lims -< -TOut ->:: -highe -()) + 1; - -58 - gme - < -tyme - - gTOut -,ym - gTIn -> - -59 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && -is_sigd -< -TOut ->::value && - -60 ( -TIn -< ( -TOut -), - -61 - gbo ->:: -ty - - -62 -nSteNegiveIeg -( -TIn -) { - -63  -ue -; - -66 - gme - < -tyme - - gTOut -,ym - gTIn -> - -67 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && -is_unsigd -< -TOut ->::value, - -68 - gbo ->:: -ty - - -69 -nSteNegiveIeg -( -TIn -) { - -70  -l -; - -73 - gme - < -tyme - - gTOut -,ym - gTIn -> - -74 -TOut - -cvtPosiveIeg -( -TIn - -vue -) { - -75  - gnStePosiveIeg -< - gTOut ->( - gvue -? -TOut -( -vue -) : 0; - -78 - gme - < -tyme - - gTOut -,ym - gTIn -> - -79 -TOut - -cvtNegiveIeg -( -TIn - -vue -) { - -80  - gnSteNegiveIeg -< - gTOut ->( - gvue -? -TOut -(~ -vue - + 1) : 0; - -83 - gme - < -tyme - - gTOut -,ym - gTIn -> - -84 -tyme - - gab_if -< - gis_tg_pot -< - gTOut ->:: -vue -, TOut>:: -ty - -cvtFlt -( - -85 -TIn - -vue -) { - -86  -TOut -( -vue -); - -89 - gme - < -tyme - - gTOut -,ym - gTIn -> - -90 -tyme - - gab_if -:: -vue -, TOut>:: -ty - -cvtFlt -( - -91 -TIn - -vue -) { - -92  -vue - > -numic_lims -< -TOut ->:: -lowe -() && - -93 -vue - < -numic_lims -< -TOut ->:: -highe -() - -94 ? -TOut -( -vue -) - -99 #i -defed -( -__g__ -) - -100 #agm -g - -dgnoic - -p - - -101 #i -defed -( -__GNUC__ -) - -102 #i -__GNUC__ - > 4 || (__GNUC__ =4 && -__GNUC_MINOR__ - >= 6) - -103 #agm -GCC - -dgnoic - -p - - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 - gme - < -tyme - - gA -,ym - gB -> - -19  - gchoo_rge - : -cdiڮ -<(( -A -> ( -B -)), - gA -, - gB -> {}; - -21 -le - -bo - -rNumb -(cڡ * -s -, -VDa -& -su -) { - -22  - gFltTs -< - tFlt -> - tas -; - -23  - gchoo_rge -< - tas -:: - tmtis_ty -, - tUI ->:: - tty - - tmtis_t -; - -24  - gas -:: - texpڒt_ty - - texpڒt_t -; - -26 -ARDUINOJSON_ASSERT -( -s - != 0); - -28 -bo - - gis_give - = -l -; - -29 * - gs -) { - -31 -is_give - = -ue -; - -32 - gs -++; - -35 -s -++; - -39 #i -ARDUINOJSON_ENABLE_NAN - - -40 i(* - gs - ='n' || * -s - == 'N') { - -41 -su -. -tFlt -( -as -:: -n -()); - -42  - gue -; - -46 #i -ARDUINOJSON_ENABLE_INFINITY - - -47 i(* - gs - ='i' || * -s - == 'I') { - -48 -su -. -tFlt -( -is_give - ? - -as -:: -f -() :raits::inf()); - -49  - gue -; - -53 i(! -isdig -(* -s -&& * - gs - != '.') - -54  -l -; - -56 -mtis_t - - gmtis - = 0; - -57 -expڒt_t - - gexpڒt_offt - = 0; - -58 cڡ -mtis_t - - gmaxUt - = -UI -(-1); - -60  -isdig -(* -s -)) { - -61 -ut8_t - - gdig - = ut8_t(* -s - - '0'); - -62 i( - gmtis - > - gmaxUt - / 10) - -64 - gmtis - *= 10; - -65 i( - gmtis - > - gmaxUt - - - gdig -) - -67 - gmtis - + -dig -; - -68 - gs -++; - -71 i(* - gs - == '\0') { - -72 i( -is_give -) - -73 -su -. -tNegiveIeg -( -UI -( -mtis -)); - -75 - gsu -. -tPosiveIeg -( -UI -( -mtis -)); - -76  - gue -; - -80  - gmtis - > - gas -:: -mtis_max -) { - -81 -mtis - /= 10; - -82 - gexpڒt_offt -++; - -86  -isdig -(* -s -)) { - -87 - gexpڒt_offt -++; - -88 - gs -++; - -91 i(* - gs - == '.') { - -92 -s -++; - -93  -isdig -(* -s -)) { - -94 i( - gmtis - < - gas -:: -mtis_max - / 10) { - -95 -mtis - = mtis * 10 + -ut8_t -(* -s - - '0'); - -96 - gexpڒt_offt ---; - -98 - gs -++; - -102  - gexpڒt - = 0; - -103 i(* - gs - ='e' || * -s - == 'E') { - -104 -s -++; - -105 -bo - - ggive_expڒt - = -l -; - -106 i(* - gs - == '-') { - -107 -give_expڒt - = -ue -; - -108 - gs -++; - -109 } i(* - gs - == '+') { - -110 -s -++; - -113  -isdig -(* -s -)) { - -114 - gexpڒt - = -expڒt - * 10 + (* -s - - '0'); - -115 i( - gexpڒt - + - gexpڒt_offt - > - gas -:: -expڒt_max -) { - -116 i( -give_expڒt -) - -117 -su -. -tFlt -( -is_give - ? -0.0f : 0.0f); - -119 - gsu -. -tFlt -( -is_give - ? - -as -:: -f -() :raits::inf()); - -120  - gue -; - -122 - gs -++; - -124 i( - ggive_expڒt -) - -125 - gexpڒt - = - -expڒt -; - -127 - gexpڒt - + -expڒt_offt -; - -130 i(* - gs - != '\0') - -131  -l -; - -133 -Flt - - gf_su - = - -134 -as -:: -make_t -( -ic_ -< -Flt ->( -mtis -), -expڒt -); - -136 - gsu -. -tFlt -( -is_give - ? - -f_su - : final_result); - -137  - gue -; - -140 - gme - < -tyme - - gT -> - -141 -le - -T - -rNumb -(cڡ * -s -) { - -142 -VDa - - gvue -; - -143 - gvue -. - -(); - -144 -rNumb -( -s -, -vue -); - -145  - gvAs -< - gT ->(& - gvue -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 #ifde -_MSC_VER - - -15 #agm -wng -( -push -) - -16 #agm -wng -( -dib - : 4522) - -19 -mea - - gARDUINOJSON_NAMESPACE - { - -21 - gme - < -tyme - - gTObje -,ym - gTSgRef -> - -22 -ass - - gMembProxy - : -public - -VOts -< -MembProxy -< -TObje -, - gTSgRef -> >, - -23 -public - - gVShtcuts -< - gMembProxy -< - gTObje -, - gTSgRef -> >, - -24 -public - - gVisab - { - -25  - gMembProxy -< - tTObje -, - tTSgRef -> - tthis_ty -; - -27 - gpublic -: - -28 -FORCE_INLINE - -MembProxy -( -TObje - -v -, -TSgRef - -key -) - -29 : -_obje -( -v -), -_key -( -key -) {} - -31 -FORCE_INLINE - -MembProxy -(cڡ MembProxy & -c -) - -32 : -_obje -( -c -._obje), -_key -(src._key) {} - -34 -FORCE_INLINE - -ݔ - -VCڡRef -() const { - -35  -gUpamMemb -(); - -38 -FORCE_INLINE - - gthis_ty - & - gݔ -=(cڡ -this_ty - & -c -) { - -39 -gOrAddUpamMemb -(). -t -( -c -); - -40  * - gthis -; - -43 - gme - < -tyme - - gTVue -> - -44 -FORCE_INLINE - -tyme - - gab_if -:: -vue -, - gthis_ty - &>:: -ty - - -45 -ݔ -=(cڡ -TVue - & -c -) { - -46 -gOrAddUpamMemb -(). -t -( -c -); - -47  * - gthis -; - -53 - gme - < -tyme - - gTCh -> - -54 -FORCE_INLINE - - gthis_ty - & - gݔ -=( -TCh - * -c -) { - -55 -gOrAddUpamMemb -(). -t -( -c -); - -56  * - gthis -; - -59 -FORCE_INLINE -  -r -() const { - -60 -gUpamMemb -(). -r -(); - -63 -FORCE_INLINE - -bo - -isNu -() const { - -64  -gUpamMemb -(). -isNu -(); - -67 - gme - < -tyme - - gTVue -> - -68 -FORCE_INLINE - -tyme - - gVAs -< - gTVue ->:: -ty - -as -() const { - -69  -gUpamMemb -(). -me - -as -< -TVue ->(); - -72 - gme - < -tyme - - gT -> - -73 -FORCE_INLINE - -ݔ - -T -() const { - -74  -gUpamMemb -(); - -77 - gme - < -tyme - - gTVue -> - -78 -FORCE_INLINE - -bo - -is -() const { - -79  -gUpamMemb -(). -me - - gis -< - gTVue ->(); - -82 -FORCE_INLINE - -size_t - -size -() const { - -83  -gUpamMemb -(). -size -(); - -86 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -87 -gUpamMemb -(). -move -( -dex -); - -92 - gme - < -tyme - - gTCh -> - -93 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue ->:: -ty - -move -( - -94 -TCh - * -key -) const { - -95 -gUpamMemb -(). -move -( -key -); - -99 - gme - < -tyme - - gTSg -> - -100 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -101 cڡ -TSg - & -key -) const { - -102 -gUpamMemb -(). -move -( -key -); - -105 - gme - < -tyme - - gTVue -> - -106 -FORCE_INLINE - -tyme - - gVTo -< - gTVue ->:: -ty - -to -() { - -107  -gOrAddUpamMemb -(). -me - -to -< -TVue ->(); - -110 - gme - < -tyme - - gTVue -> - -111 -FORCE_INLINE - -bo - -t -(cڡ -TVue - & -vue -) { - -112  -gOrAddUpamMemb -(). -t -( -vue -); - -118 - gme - < -tyme - - gTCh -> - -119 -FORCE_INLINE - -bo - -t -( -TCh - * -vue -) { - -120  -gOrAddUpamMemb -(). -t -( -vue -); - -123 - gme - < -tyme - - gTVis -> - -124 -tyme - - gTVis -:: -su_ty - -ac -( -TVis - & -vis -) const { - -125  -gUpamMemb -(). -ac -( -vis -); - -128 -FORCE_INLINE - -VRef - -addEmt -() const { - -129  -gOrAddUpamMemb -(). -addEmt -(); - -132 -FORCE_INLINE - -VRef - -gEmt -( -size_t - -dex -) const { - -133  -gUpamMemb -(). -gEmt -( -dex -); - -136 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t - -dex -) const { - -137  -gOrAddUpamMemb -(). -gOrAddEmt -( -dex -); - -143 - gme - < -tyme - - gTCh -> - -144 -FORCE_INLINE - -VRef - -gMemb -( -TCh - * -key -) const { - -145  -gUpamMemb -(). -gMemb -( -key -); - -150 - gme - < -tyme - - gTSg -> - -151 -FORCE_INLINE - -VRef - -gMemb -(cڡ -TSg - & -key -) const { - -152  -gUpamMemb -(). -gMemb -( -key -); - -158 - gme - < -tyme - - gTCh -> - -159 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh - * -key -) const { - -160  -gOrAddUpamMemb -(). -gOrAddMemb -( -key -); - -165 - gme - < -tyme - - gTSg -> - -166 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg - & -key -) const { - -167  -gOrAddUpamMemb -(). -gOrAddMemb -( -key -); - -170 - give -: - -171 -FORCE_INLINE - -VRef - -gUpamMemb -() const { - -172  -_obje -. -gMemb -( -_key -); - -175 -FORCE_INLINE - -VRef - -gOrAddUpamMemb -() const { - -176  - g_obje -. -gOrAddMemb -( -_key -); - -179 -TObje - - g_obje -; - -180 -TSgRef - - g_key -; - -185 #ifde -_MSC_VER - - -186 #agm -wng -( -p -) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTVis -> - -12 -tyme - - gTVis -:: -su_ty - -objeAc -(cڡ -CiDa - * -obj -, - -13 -TVis - & -vis -) { - -14 i( - gobj -) - -15  - gvis -. -visObje -(* -obj -); - -17  - gvis -. -visNu -(); - -20 -le - -bo - -objeEqus -(cڡ -CiDa - * -lhs -, cڡ CiD* -rhs -) { - -21 i( - glhs - = -rhs -) - -22  -ue -; - -23 i(! - glhs - || ! - grhs -) - -24  - gl -; - -25  - glhs --> -equsObje -(* -rhs -); - -28 - gme - < -tyme - - gTAddSg -> - -29 -le - -VDa - * -objeGMemb -(cڡ -CiDa - * -obj -, - -30 -TAddSg - -key -) { - -31 i(! - gobj -) - -33  - gobj --> -gMemb -( -key -); - -36 - gme - < -tyme - - gTAddSg -> - -37  -objeRemove -( -CiDa - * -obj -, -TAddSg - -key -) { - -38 i(! - gobj -) - -40 - gobj --> -moveMemb -( -key -); - -43 - gme - < -tyme - - gTAddSg -> - -44 -le - -VDa - * -objeGOrAddMemb -( -CiDa - * -obj -, - -45 -TAddSg - -key -, -MemyPo - * -po -) { - -46 i(! - gobj -) - -49  - gobj --> -gOrAddMemb -( -key -, -po -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTObje -> - -13 - gme - < -tyme - - gTSg -> - -14 -le - -AayRef - - gObjeShtcuts -< - gTObje ->:: -NeedAay -( - -15 cڡ -TSg -& -key -) const { - -16  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -AayRef ->(); - -19 - gme - < -tyme - - gTObje -> - -20 - gme - < -tyme - - gTCh -> - -21 -le - -AayRef - - gObjeShtcuts -< - gTObje ->:: -NeedAay -( -TCh -* -key -) const { - -22  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -AayRef ->(); - -25 - gme - < -tyme - - gTObje -> - -26 - gme - < -tyme - - gTSg -> - -27 -le - -ObjeRef - - gObjeShtcuts -< - gTObje ->:: -NeedObje -( - -28 cڡ -TSg -& -key -) const { - -29  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -ObjeRef ->(); - -32 - gme - < -tyme - - gTObje -> - -33 - gme - < -tyme - - gTCh -> - -34 -le - -ObjeRef - - gObjeShtcuts -< - gTObje ->:: -NeedObje -( - -35 -TCh -* -key -) const { - -36  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -ObjeRef ->(); - -39 - gme - < -tyme - - gTObje -> - -40 - gme - < -tyme - - gTSg -> - -41 -le - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gbo ->:: -ty - - -42 -ObjeShtcuts -< -TObje ->:: -cڏsKey -(cڡ -TSg -& -key -) const { - -43  ! -im -()-> -gMemb -( -key -). -isUndefed -(); - -46 - gme - < -tyme - - gTObje -> - -47 - gme - < -tyme - - gTCh -> - -48 -le - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - gbo ->:: -ty - - -49 -ObjeShtcuts -< -TObje ->:: -cڏsKey -( -TCh -* -key -) const { - -50  ! -im -()-> -gMemb -( -key -). -isUndefed -(); - -53 - gme - < -tyme - - gTObje -> - -54 - gme - < -tyme - - gTSg -> - -55 -le - -tyme - - gab_if -< - gIsSg -< - gTSg -*>:: -vue -, - -56 - gMembProxy -< - gTObje -, - gTSg -*> >:: -ty - - -57 -ObjeShtcuts -< -TObje ->:: -ݔ -[]( -TSg -* -key -) const { - -58  -MembProxy -< -TObje -, - gTSg -*>(* -im -(), - gkey -); - -61 - gme - < -tyme - - gTObje -> - -62 - gme - < -tyme - - gTSg -> - -63 -le - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - -64 - gMembProxy -< - gTObje -, - gTSg -> >:: -ty - - -65 -ObjeShtcuts -< -TObje ->:: -ݔ -[](cڡ -TSg -& -key -) const { - -66  -MembProxy -< -TObje -, - gTSg ->(* -im -(), - gkey -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cPaP - { - -13 - gpublic -: - -14 -PaP -( -MemyPo - * -po -, -VSl - * - -: -_ -(pool, slot) {} - -16 cڡ -Pa - * - gݔ -->() const { - -17  & - g_ -; - -20 cڡ - gPa - & - gݔ -*() const { - -21  - g_ -; - -24 - give -: - -25 -Pa - -_ -; - -28 as - cObjeIt - { - -29 - gpublic -: - -30 -ObjeIt -(: -_ -(0) {} - -32 -exic - -ObjeIt -( -MemyPo - * -po -, -VSl - * - -) - -33 : -_po -( -po -), -_ -( - -) {} - -35 -Pa - - gݔ -*() const { - -36  -Pa -( -_po -, -_ -); - -38 -PaP - - gݔ -->() { - -39  -PaP -( -_po -, -_ -); - -42 -bo - - gݔ -==(cڡ -ObjeIt - & -h -) const { - -43  -_ - = -h -._slot; - -46 -bo - - gݔ -!=(cڡ -ObjeIt - & -h -) const { - -47  -_ - ! -h -._slot; - -50 - gObjeIt - & - gݔ -++() { - -51 - g_ - = -_ --> -xt -(); - -52  * - gthis -; - -55 - gObjeIt - & - gݔ -+=( -size_t - -di -) { - -56 -_ - = _-> -xt -( -di -); - -57  * - gthis -; - -60 -VSl - * - -() { - -61  - g_ -; - -64 - give -: - -65 -MemyPo - * -_po -; - -66 -VSl - * - g_ -; - -69 as - cPaCڡP - { - -70 - gpublic -: - -71 -PaCڡP -(cڡ -VSl - * - -: -_ -(slot) {} - -73 cڡ -PaCڡ - * -ݔ -->() const { - -74  & -_ -; - -77 cڡ - gPaCڡ - & - gݔ -*() const { - -78  - g_ -; - -81 - give -: - -82 -PaCڡ - -_ -; - -85 as - cObjeCڡIt - { - -86 - gpublic -: - -87 -ObjeCڡIt -(: -_ -(0) {} - -89 -exic - -ObjeCڡIt -(cڡ -VSl - * - -: -_ -(slot) {} - -91 -PaCڡ - -ݔ -*() const { - -92  -PaCڡ -( -_ -); - -94 -PaCڡP - - gݔ -->() { - -95  -PaCڡP -( -_ -); - -98 -bo - - gݔ -==(cڡ -ObjeCڡIt - & -h -) const { - -99  -_ - = -h -._slot; - -102 -bo - - gݔ -!=(cڡ -ObjeCڡIt - & -h -) const { - -103  -_ - ! -h -._slot; - -106 - gObjeCڡIt - & - gݔ -++() { - -107 - g_ - = -_ --> -xt -(); - -108  * - gthis -; - -111 - gObjeCڡIt - & - gݔ -+=( -size_t - -di -) { - -112 -_ - = _-> -xt -( -di -); - -113  * - gthis -; - -116 cڡ -VSl - * - -() { - -117  - g_ -; - -120 - give -: - -121 cڡ -VSl - * -_ -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -12  - #JSON_OBJECT_SIZE -( -NUMBER_OF_ELEMENTS -) \ - -13 (( -NUMBER_OF_ELEMENTS -* ( -ARDUINOJSON_NAMESPACE -:: -VSl -)) - - ) - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gTDa -> - -18 as - cObjeRefBa - { - -19 - gpublic -: - -20 -ݔ - -VCڡRef -() const { - -21 cڡ * -da - = -_da -; - -22  -VCڡRef -( -t_ -( -da -)); - -25 - gme - < -tyme - - gTVis -> - -26 -tyme - - gTVis -:: -su_ty - -ac -( -TVis -& -vis -) const { - -27  -objeAc -( -_da -, -vis -); - -30 -FORCE_INLINE - -bo - -isNu -() const { - -31  - g_da - == 0; - -34 -FORCE_INLINE - -ݔ - -bo -() const { - -35  - g_da - != 0; - -38 -FORCE_INLINE - -size_t - -memyUge -() const { - -39  - g_da - ? _da-> -memyUge -() : 0; - -42 -FORCE_INLINE - -size_t - -ág -() const { - -43  - g_da - ? _da-> -ág -() : 0; - -46 -FORCE_INLINE - -size_t - -size -() const { - -47  - g_da - ? _da-> -size -() : 0; - -50 - geed -: - -51 -ObjeRefBa -( -TDa -* -da -: -_da -(data) {} - -52 -TDa -* -_da -; - -55 -ass - - gObjeCڡRef - : -public - -ObjeRefBa -, - -56 -public - - gVisab - { - -57 -nd - -ass - - gObjeRef -; - -58  - gObjeRefBa - - tba_ty -; - -60 - gpublic -: - -61  -ObjeCڡIt - - t -; - -63 -ObjeCڡRef -(: -ba_ty -(0) {} - -64 -ObjeCڡRef -(cڡ -CiDa -* -da -: -ba_ty -(data) {} - -66 -FORCE_INLINE - - - -beg -() const { - -67 i(! -_da -) - -68  - -(); - -69  - -( -_da --> -hd -()); - -72 -FORCE_INLINE - - - -d -() const { - -73  - -(); - -78 - gme - < -tyme - - gTSg -> - -79 -FORCE_INLINE - -bo - -cڏsKey -(cڡ -TSg -& -key -) const { - -80  ! -gMemb -( -key -). -isUndefed -(); - -86 - gme - < -tyme - - gTCh -> - -87 -FORCE_INLINE - -bo - -cڏsKey -( -TCh -* -key -) const { - -88  ! -gMemb -( -key -). -isUndefed -(); - -93 - gme - < -tyme - - gTSg -> - -94 -FORCE_INLINE - -VCڡRef - -gMemb -(cڡ -TSg -& -key -) const { - -95  -g_im -( -adtSg -( -key -)); - -101 - gme - < -tyme - - gTCh -> - -102 -FORCE_INLINE - -VCڡRef - -gMemb -( -TCh -* -key -) const { - -103  -g_im -( -adtSg -( -key -)); - -108 - gme - < -tyme - - gTSg -> - -109 -FORCE_INLINE - - -110 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -111 -ݔ -[](cڡ -TSg -& -key -) const { - -112  -g_im -( -adtSg -( -key -)); - -118 - gme - < -tyme - - gTCh -> - -119 -FORCE_INLINE - - -120 -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - gVCڡRef ->:: -ty - - -121 -ݔ -[]( -TCh -* -key -) const { - -122  -g_im -( -adtSg -( -key -)); - -125 -FORCE_INLINE - -bo - - gݔ -==( -ObjeCڡRef - -rhs -) const { - -126  -objeEqus -( -_da -, -rhs -._data); - -129 - give -: - -130 -me - < -tyme - -TAddSg -> - -131 -FORCE_INLINE - -VCڡRef - -g_im -( -TAddSg - -key -) const { - -132  -VCڡRef -( -objeGMemb -( -_da -, -key -)); - -136 -ass - - gObjeRef - : -public - -ObjeRefBa -< -CiDa ->, - -137 -public - - gObjeShtcuts -< - gObjeRef ->, - -138 -public - - gVisab - { - -139  - gObjeRefBa -< - tCiDa -> - tba_ty -; - -141 - gpublic -: - -142  -ObjeIt - - t -; - -144 -FORCE_INLINE - -ObjeRef -(: -ba_ty -(0), -_po -(0) {} - -145 -FORCE_INLINE - -ObjeRef -( -MemyPo -* -buf -, -CiDa -* -da -) - -146 : -ba_ty -( -da -), -_po -( -buf -) {} - -148 -ݔ - -VRef -() const { - -149 * - gda - = -_da -; - -150  -VRef -( -_po -, -t_ -< -VDa -*>( -da -)); - -153 -ݔ - -ObjeCڡRef -() const { - -154  -ObjeCڡRef -( -_da -); - -157 -FORCE_INLINE - - - -beg -() const { - -158 i(! - g_da -) - -159  - -(); - -160  - -( -_po -, -_da --> -hd -()); - -163 -FORCE_INLINE - - - -d -() const { - -164  - -(); - -167  -r -() const { - -168 i(! - g_da -) - -170 - g_da --> -r -(); - -173 -FORCE_INLINE - -bo - -t -( -ObjeCڡRef - -c -) { - -174 i(! - g_da - || ! - gc -._data) - -175  - gl -; - -176  - g_da --> -cyFrom -(* -c -. -_da -, -_po -); - -181 - gme - < -tyme - - gTSg -> - -182 -FORCE_INLINE - -VRef - -gMemb -(cڡ -TSg -& -key -) const { - -183  -VRef -( -_po -, -objeGMemb -( -_da -, -adtSg -( -key -))); - -189 - gme - < -tyme - - gTCh -> - -190 -FORCE_INLINE - -VRef - -gMemb -( -TCh -* -key -) const { - -191  -VRef -( -_po -, -objeGMemb -( -_da -, -adtSg -( -key -))); - -196 - gme - < -tyme - - gTSg -> - -197 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg -& -key -) const { - -198  -VRef -( -_po -, - -199 -objeGOrAddMemb -( -_da -, -adtSg -( -key -), -_po -)); - -205 - gme - < -tyme - - gTCh -> - -206 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh -* -key -) const { - -207  -VRef -( -_po -, - -208 -objeGOrAddMemb -( -_da -, -adtSg -( -key -), -_po -)); - -211 -FORCE_INLINE - -bo - - gݔ -==( -ObjeRef - -rhs -) const { - -212  -objeEqus -( -_da -, -rhs -._data); - -215 -FORCE_INLINE -  -move -( - - - -) const { - -216 i(! - g_da -) - -218 - g_da --> -moveSl -( - -. - -()); - -223 - gme - < -tyme - - gTSg -> - -224 -FORCE_INLINE -  -move -(cڡ -TSg -& -key -) const { - -225 -objeRemove -( -_da -, -adtSg -( -key -)); - -231 - gme - < -tyme - - gTCh -> - -232 -FORCE_INLINE -  -move -( -TCh -* -key -) const { - -233 -objeRemove -( -_da -, -adtSg -( -key -)); - -236 - give -: - -237 -MemyPo -* -_po -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTPt -,ym - gTSgRef -> - -13 -ass - - gMembProxy -; - -15 - gme - < -tyme - - gTObje -> - -16 as - cObjeShtcuts - { - -17 - gpublic -: - -20 -me - < -tyme - -TSg -> - -21 -FORCE_INLINE - -tyme - -ab_if -< -IsSg -< -TSg ->:: -vue -, - gbo ->:: -ty - - -22 -cڏsKey -(cڡ -TSg - & -key -) const; - -27 - gme - < -tyme - - gTCh -> - -28 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue -, - gbo ->:: -ty - - -29 -cڏsKey -( -TCh - * -key -) const; - -33 - gme - < -tyme - - gTSg -> - -34 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - -35 - gMembProxy -< - gTObje -, - gTSg -> >:: -ty - - -36 -ݔ -[](cڡ -TSg - & -key -) const; - -41 - gme - < -tyme - - gTCh -> - -42 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue -, - -43 - gMembProxy -< - gTObje -, - gTCh - *> >:: -ty - - -44 -ݔ -[]( -TCh - * -key -) const; - -48 - gme - < -tyme - - gTSg -> - -49 -FORCE_INLINE - -AayRef - -NeedAay -(cڡ -TSg - & -key -) const; - -54 - gme - < -tyme - - gTCh -> - -55 -FORCE_INLINE - -AayRef - -NeedAay -( -TCh - * -key -) const; - -59 - gme - < -tyme - - gTSg -> - -60 -ObjeRef - -NeedObje -(cڡ -TSg - & -key -) const; - -65 - gme - < -tyme - - gTCh -> - -66 -ObjeRef - -NeedObje -( -TCh - * -key -) const; - -68 - give -: - -69 cڡ -TObje - * -im -() const { - -70  -ic_ -( -this -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/Pair.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cPa - { - -13 - gpublic -: - -14 -Pa -( -MemyPo -* -po -, -VSl -* - -) { - -15 i( - g -) { - -16 - g_key - = -Sg -( - --> -key -(), !-> -ownsKey -()); - -17 - g_vue - = -VRef -( -po -, - --> -da -()); - -21 -Sg - -key -() const { - -22  - g_key -; - -25 -VRef - -vue -() const { - -26  - g_vue -; - -29 - give -: - -30 -Sg - -_key -; - -31 -VRef - - g_vue -; - -34 as - cPaCڡ - { - -35 - gpublic -: - -36 -PaCڡ -(cڡ -VSl -* - -) { - -37 i( - -) { - -38 -_key - = -Sg -( - --> -key -(), !-> -ownsKey -()); - -39 - g_vue - = -VCڡRef -( - --> -da -()); - -43 -Sg - -key -() const { - -44  - g_key -; - -47 -VCڡRef - -vue -() const { - -48  - g_vue -; - -51 - give -: - -52 -Sg - -_key -; - -53 -VCڡRef - - g_vue -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~"mh.h -" - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - < -tyme - - gT -,ym - gF -> - -16  - ss__t - { - -18 -F - - gw -; - -19 -T - - gda -; - -23 - gme - < -tyme - - gT -,ym - gF -> - -24 -T - -s_ -( -F - -w_da -) { - -25 - gs__t -< - gT -, - gF -> - gac -; - -26 - gac -. - gw - = -w_da -; - -27  - gac -. - gda -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp - -5 #agm - - - -7  - ~ - -9 #i -ARDUINOJSON_DEBUG - - -10  - ~ - -11  - #ARDUINOJSON_ASSERT -( -X - - `as -(X) - - ) - -13  - #ARDUINOJSON_ASSERT -( -X -(()0) - - ) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp - -5 #agm - - - -7 #ifde -_MSC_VER - - -9  - #FORCE_INLINE - - -10  - #NO_INLINE - - `__deec -( -nole -) - - ) - -11  - #DEPRECATED -( -msg - - `__deec -( - `dd -(msg)) - - ) - -13 #i -defed -( -__GNUC__ -) - -15  - #FORCE_INLINE - - `__ibu__ -(( -ways_le -)) - - ) - -16  - #NO_INLINE - - `__ibu__ -(( -nole -)) - - ) - -17 #i -__GNUC__ - > 4 || (__GNUC__ =4 && -__GNUC_MINOR__ - >= 5) - -18  - #DEPRECATED -( -msg - - `__ibu__ -(( - `dd -(msg))) - - ) - -20  - #DEPRECATED -( -msg - - `__ibu__ -(( -dd -)) - - ) - -25  - #FORCE_INLINE - - - ) - -26  - #NO_INLINE - - - ) - -27  - #DEPRECATED -( -msg -) - - ) - -31 #i -__lulus - >= 201103L - -32  - #NOEXCEPT - -nx - - - ) - -34  - #NOEXCEPT - - `throw -() - - ) - -37 #i -defed -( -__has_ibu -) - -38 #i -__has_ibu -( -no_nize -) - -39  - #ARDUINOJSON_NO_SANITIZE -( -check - - `__ibu__ -(( - `no_nize -(check))) - - ) - -41  - #ARDUINOJSON_NO_SANITIZE -( -check -) - - ) - -44  - #ARDUINOJSON_NO_SANITIZE -( -check -) - - ) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -le - -bo - -isdig -( -c -) { - -12  '0' < -c - && c <= '9'; - -15 -le - -bo - -issign -( -c -) { - -16  '-' = -c - || c == '+'; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp - -5 #agm - - - -7  - ~"ty_as.h -" - -9 #ifde -_MSC_VER - - -10 #agm -wng -( -push -) - -11 #agm -wng -( -dib - : 4310) - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gT -,ym - gEb - = > - -18  -numic_lims -; - -20 - gme - < -tyme - - gT -> - -21  - gnumic_lims -< - gT -, -tyme - - gab_if -< - gis_unsigd -:: -vue ->:: -ty -> { - -22  -T - -lowe -() { - -25  -T - -highe -() { - -26  -T -(-1); - -30 - gme - < -tyme - - gT -> - -31  - gnumic_lims -< - -32 - gT -, -tyme - - gab_if -< - gis_gl -:: -vue - && -is_sigd -< -T ->::vue>:: -ty -> { - -33  -T - -lowe -() { - -34  -T -(T(1) << ((T) * 8 - 1)); - -36  -T - -highe -() { - -37  -T -(~ -lowe -()); - -43 #ifde -_MSC_VER - - -44 #agm -wng -( -p -) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -14 #ide -i - - -15 - gme - < -tyme - - gT -> - -16 -bo - -i -( -T - -x -) { - -17  - gx - ! -x -; - -21 #ide -isf - - -22 - gme - < -tyme - - gT -> - -23 -bo - -isf -( -T - -x -) { - -24  - gx - !0.0 && -x - * 2 == x; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -size_t - - gX -, size_ - gY -, -bo - - gMaxIsX - = ( -X - > -Y -)> - -15  - sMax - {}; - -17 - gme - < -size_t - - gX -, size_ - gY -> - -18  - gMax -< - gX -, - gY -, - gue -> { - -19 cڡ -size_t - - gvue - = -X -; - -22 - gme - < -size_t - - gX -, size_ - gY -> - -23  - gMax -< - gX -, - gY -, - gl -> { - -24 cڡ -size_t - - gvue - = -Y -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -14  - spgm_p - { - -15 -pgm_p -(cڡ * -p -: -addss -(p) {} - -16 cڡ * -addss -; - -20 #ide -_P - - -21 -le - -size_t - - $_P -( -ARDUINOJSON_NAMESPACE -:: -pgm_p - -s -) { - -22 cڡ * -p - = -s -. -addss -; - -23 - `ARDUINOJSON_ASSERT -( -p - ! -NULL -); - -24  - `pgm_ad_by -( -p -))++; - -25  - `size_t -( -p - - -s -. -addss -); - -26 - } -} - -29 #ide -cmp_P - - -30 -le -  - $cmp_P -(cڡ * -a -, -ARDUINOJSON_NAMESPACE -:: -pgm_p - -b -, -size_t - -n -) { - -31 cڡ * -s1 - = -a -; - -32 cڡ * -s2 - = -b -. -addss -; - -33 - `ARDUINOJSON_ASSERT -( -s1 - ! -NULL -); - -34 - `ARDUINOJSON_ASSERT -( -s2 - ! -NULL -); - -35  -n --- > 0) { - -36  -c1 - = * -s1 -++; - -37  -c2 - = -ic_ -<>( - `pgm_ad_by -( -s2 -++)); - -38 i( -c1 - < -c2 -) - -40 i( -c1 - > -c2 -) - -42 i( -c1 - == 0 ) - -46 - } -} - -49 #ide -rcmp_P - - -50 -le -  - $rcmp_P -(cڡ * -a -, -ARDUINOJSON_NAMESPACE -:: -pgm_p - -b -) { - -51 cڡ * -s1 - = -a -; - -52 cڡ * -s2 - = -b -. -addss -; - -53 - `ARDUINOJSON_ASSERT -( -s1 - ! -NULL -); - -54 - `ARDUINOJSON_ASSERT -( -s2 - ! -NULL -); - -56  -c1 - = * -s1 -++; - -57  -c2 - = -ic_ -<>( - `pgm_ad_by -( -s2 -++)); - -58 i( -c1 - < -c2 -) - -60 i( -c1 - > -c2 -) - -62 i( -c1 - == 0 ) - -65 - } -} - -68 #ide -memy_P - - -69 -le - * - $memy_P -(* -d -, -ARDUINOJSON_NAMESPACE -:: -pgm_p - -c -, -size_t - -n -) { - -70 -ut8_t -* -d - = -t_ -( -d -); - -71 cڡ * -s - = -c -. -addss -; - -72 - `ARDUINOJSON_ASSERT -( -d - ! -NULL -); - -73 - `ARDUINOJSON_ASSERT -( -s - ! -NULL -); - -74  -n --- > 0) { - -75 * -d -++ = - `pgm_ad_by -( -s -++); - -77  -d -; - -78 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13 -tyme - - gab_if -< - gis_por -< - gT ->:: -vue -, T>:: -ty - -pgm_ad -(cڡ * -p -) { - -14  -t_ -< -T ->( -pgm_ad_r -( -p -)); - -17 - gme - < -tyme - - gT -> - -18 -tyme - - gab_if -< - gis_tg_pot -< - gT ->:: -vue - && - -19 ( -T -) == (), - -21 - gT ->:: -ty - - -22 -pgm_ad -(cڡ * -p -) { - -23  -pgm_ad_t -( -p -); - -26 - gme - < -tyme - - gT -> - -27 -tyme - - gab_if -< - gis_me -< - gT -, - gut32_t ->:: -vue -, T>:: -ty - -pgm_ad -( - -28 cڡ * -p -) { - -29  -pgm_ad_dwd -( -p -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp - -5 #agm - - - -7  - #ARDUINOJSON_EXPAND6 -( -a -, -b -, -c -, -d -, -e -, -f -a, b, c, d,, - ) -f - -8  - #ARDUINOJSON_EXPAND7 -( -a -, -b -, -c -, -d -, -e -, -f -, -g -a, b, c, d,, f, - ) -g - -9  - #ARDUINOJSON_EXPAND9 -( -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -, -i -a, b, c, d,, f, g, h, - ) -i - -10  - #ARDUINOJSON_EXPAND18 -( -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -, -i -, -j -, -k -, -l -, -m -, -n -, -o -, -p -, \ - -11 -q -, -r -) \ - -12 -a -, -b -, -c -, -d -, -e -, -f -, -g -, -h -, -i -, -j -, -k -, -l -, -m -, -n -, -o -, -p -, -q -, -r - - - ) - -14  - #ARDUINOJSON_CONCAT_ -( -A -, -B -A## - ) -B - -15  - #ARDUINOJSON_CONCAT2 -( -A -, -B - - `ARDUINOJSON_CONCAT_ -(A, B) - - ) - -16  - #ARDUINOJSON_CONCAT4 -( -A -, -B -, -C -, -D -) \ - -17 - `ARDUINOJSON_CONCAT2 -(ARDUINOJSON_CONCAT2( -A -, -B -), ARDUINOJSON_CONCAT2( -C -, -D -)) - - ) - -19  - #ARDUINOJSON_HEX_DIGIT_0000 -(0 - - ) - -20  - #ARDUINOJSON_HEX_DIGIT_0001 -(1 - - ) - -21  - #ARDUINOJSON_HEX_DIGIT_0010 -(2 - - ) - -22  - #ARDUINOJSON_HEX_DIGIT_0011 -(3 - - ) - -23  - #ARDUINOJSON_HEX_DIGIT_0100 -(4 - - ) - -24  - #ARDUINOJSON_HEX_DIGIT_0101 -(5 - - ) - -25  - #ARDUINOJSON_HEX_DIGIT_0110 -(6 - - ) - -26  - #ARDUINOJSON_HEX_DIGIT_0111 -(7 - - ) - -27  - #ARDUINOJSON_HEX_DIGIT_1000 -(8 - - ) - -28  - #ARDUINOJSON_HEX_DIGIT_1001 -(9 - - ) - -29  - #ARDUINOJSON_HEX_DIGIT_1010 -( -A - - - ) - -30  - #ARDUINOJSON_HEX_DIGIT_1011 -( -B - - - ) - -31  - #ARDUINOJSON_HEX_DIGIT_1100 -( -C - - - ) - -32  - #ARDUINOJSON_HEX_DIGIT_1101 -( -D - - - ) - -33  - #ARDUINOJSON_HEX_DIGIT_1110 -( -E - - - ) - -34  - #ARDUINOJSON_HEX_DIGIT_1111 -( -F - - - ) - -35  - #ARDUINOJSON_HEX_DIGIT_ -( -A -, -B -, -C -, -D - -ARDUINOJSON_HEX_DIGIT_ -##A##B##C## - `D -() - - ) - -36  - #ARDUINOJSON_HEX_DIGIT -( -A -, -B -, -C -, -D - - `ARDUINOJSON_HEX_DIGIT_ -(A, B, C, D) - - ) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 -le -  -_rcmp -(cڡ * -a -, cڡ * -b -) { - -14 i( - ga - = -b -) - -16 i(! - ga -) - -18 i(! - gb -) - -20  -rcmp -( -a -, -b -); - -23 -le -  -_cmp -(cڡ * -a -, cڡ * -b -, -size_t - -n -) { - -24 i( - ga - = -b -) - -26 i(! - ga -) - -28 i(! - gb -) - -30  -cmp -( -a -, -b -, -n -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp - -5 #agm - - - -7  - ~ - -9 #i -ARDUINOJSON_ENABLE_PROGMEM - - -11  - ~ - -13 #ide -ARDUINOJSON_DEFINE_STATIC_ARRAY - - -14  - #ARDUINOJSON_DEFINE_STATIC_ARRAY -( -ty -, -me -, -vue -) \ - -15  -ty - cڡ -me -[] -PROGMEM - = -vue -; - - ) - -18 #ide -ARDUINOJSON_READ_STATIC_ARRAY - - -19  - #ARDUINOJSON_READ_STATIC_ARRAY -( -ty -, -me -, -dex -) \ - -20 -pgm_ad -< -ty ->( -me - + -dex -) - - ) - -25 #ide -ARDUINOJSON_DEFINE_STATIC_ARRAY - - -26  - #ARDUINOJSON_DEFINE_STATIC_ARRAY -( -ty -, -me -, -vue -) \ - -27  -ty - cڡ -me -[] = -vue -; - - ) - -30 #ide -ARDUINOJSON_READ_STATIC_ARRAY - - -31  - #ARDUINOJSON_READ_STATIC_ARRAY -( -ty -, -me -, -dex -me[dex] - - ) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp - -5 #agm - - - -7  - ~"ty_as/cdiڮ.h -" - -8  - ~"ty_as/ab_if.h -" - -9  - ~"ty_as/gl_cڡt.h -" - -10  - ~"ty_as/is_y.h -" - -11  - ~"ty_as/is_ba_of.h -" - -12  - ~"ty_as/is_ass.h -" - -13  - ~"ty_as/is_cڡ.h -" - -14  - ~"ty_as/is_cvtib.h -" - -15  - ~"ty_as/is_um.h -" - -16  - ~"ty_as/is_tg_pot.h -" - -17  - ~"ty_as/is_gl.h -" - -18  - ~"ty_as/is_por.h -" - -19  - ~"ty_as/is_me.h -" - -20  - ~"ty_as/is_sigd.h -" - -21  - ~"ty_as/is_unsigd.h -" - -22  - ~"ty_as/make_unsigd.h -" - -23  - ~"ty_as/move_cڡ.h -" - -24  - ~"ty_as/move_n.h -" - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -bo - - gCdi -, -ass - - gTrueTy -, cs - gFTy -> - -12  - scdiڮ - { - -13  -TrueTy - - tty -; - -16 - gme - < -ass - - gTrueTy -, cs - gFTy -> - -17  - gcdiڮ -< - gl -, - gTrueTy -, - gFTy -> { - -18  -FTy - - tty -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12 -T - -dev -(); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -bo - - gCdi -, -tyme - - gT - = > - -13  - sab_if - {}; - -15 - gme - < -tyme - - gT -> - -16  - gab_if -< - gue -, - gT -> { - -17  -T - - tty -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -, -T - - gv -> - -12  - sgl_cڡt - { - -13 cڡ -T - - gvue - = -v -; - -16  - ggl_cڡt -< - tbo -, - tue -> - tue_ty -; - -17  - ggl_cڡt -< - tbo -, - tl -> - tl_ty -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gT -> - -14  - gis_y - : -l_ty - {}; - -16 - gme - < -tyme - - gT -> - -17  - gis_y -< - gT -[]> : -ue_ty - {}; - -19 - gme - < -tyme - - gT -, -size_t - - gN -> - -20  - gis_y -< - gT -[ -N -]> : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gTBa -,ym - gTDived -> - -14 as - cis_ba_of - { - -15 - geed -: - -16  - tYes -[1]; - -17  - tNo -[2]; - -19  - gYes - & -obe -(cڡ -TBa - *); - -20  - gNo - & -obe -(...); - -22 - gpublic -: - -23 cڡ -bo - -vue - = - -24 ( -obe -( -t_ -< -TDived - *>(0))=( -Yes -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp - -5 #agm - - - -7  - ~"dev.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12  - sis_ass - { - -13 - geed -: - -14  - tYes -[1]; - -15  - tNo -[2]; - -17 - gme - < -tyme - - gU -> - -18  - gYes - & -obe -(( -U -::*)()); - -19 - gme - < - gtyme -> - -20  - gNo - & -obe -(...); - -22 - gpublic -: - -23 cڡ -bo - -vue - = ( -obe -< -T ->(0)=( -Yes -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13  - gis_cڡ - : -l_ty - {}; - -15 - gme - < -tyme - - gT -> - -16  - gis_cڡ - : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp - -5 #agm - - - -7  - ~"dev.h -" - -9 #ifde -_MSC_VER - - -10 #agm -wng -( -push -) - -12 #agm -wng -( -dib - : 4244) - -15 #ifde -__ICCARM__ - - -17 #agm -dg_suss -= -Pa093 - - -20 -mea - - gARDUINOJSON_NAMESPACE - { - -22 - gme - < -tyme - - gFrom -,ym - gTo -> - -23  - sis_cvtib - { - -24 - geed -: - -25  - tYes -[1]; - -26  - tNo -[2]; - -28  - gYes - & -obe -( -To -); - -29  - gNo - & -obe -(...); - -31 - gpublic -: - -32 cڡ -bo - -vue - = ( -obe -( -dev -< -From ->())=( -Yes -); - -37 #ifde -_MSC_VER - - -38 #agm -wng -( -p -) - -41 #ifde -__ICCARM__ - - -42 #agm -dg_deu -= -Pa093 - - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp - -5 #agm - - - -7  - ~"is_ass.h -" - -8  - ~"is_cvtib.h -" - -9  - ~"is_tg_pot.h -" - -10  - ~"is_gl.h -" - -11  - ~"is_me.h -" - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - < -tyme - - gT -> - -16  - sis_um - { - -17 cڡ -bo - - gvue - = -is_cvtib -< -T -, >:: -vue - && - -18 ! -is_ass -< -T ->:: -vue - && ! -is_gl -::value && - -19 ! -is_tg_pot -< -T ->:: -vue -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < - gtyme -> - -12  - gis_tg_pot - : -l_ty - {}; - -14 - gme - <> - -15  - gis_tg_pot -<> : -ue_ty - {}; - -17 - gme - <> - -18  - gis_tg_pot -<> : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp - -5 #agm - - - -7  - ~ - -8  - ~"is_me.h -" - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gT -> - -14  - sis_gl - { - -15 cڡ -bo - - gvue - = - -16 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -17 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -18 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -19 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -20 #i -ARDUINOJSON_HAS_LONG_LONG - - -21 -is_me -< -T -, sigd >:: -vue - || - -22 -is_me -< -T -, >:: -vue - || - -24 #i -ARDUINOJSON_HAS_INT64 - - -25 -is_me -< -T -, sigd - g__t64 ->:: -vue - || - -26 -is_me -< -T -,  - g__t64 ->:: -vue - || - -28 -is_me -< -T -, >:: -vue - || is_me::value; - -31 - gme - < -tyme - - gT -> - -32  - gis_gl - : -is_gl -< -T -> {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12  - gis_por - : -l_ty - {}; - -14 - gme - < -tyme - - gT -> - -15  - gis_por -< - gT -*> : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -,ym - gU -> - -13  - gis_me - : -l_ty - {}; - -15 - gme - < -tyme - - gT -> - -16  - gis_me -< - gT -, T> : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -8 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < - gtyme -> - -11  - gis_sigd - : -l_ty - {}; - -13 - gme - <> - -14  - gis_sigd -<> : -ue_ty - {}; - -16 - gme - <> - -17  - gis_sigd - : -ue_ty - {}; - -19 - gme - <> - -20  - gis_sigd - : -ue_ty - {}; - -22 - gme - <> - -23  - gis_sigd - : -ue_ty - {}; - -25 - gme - <> - -26  - gis_sigd - : -ue_ty - {}; - -28 - gme - <> - -29  - gis_sigd -<> : -ue_ty - {}; - -31 - gme - <> - -32  - gis_sigd -<> : -ue_ty - {}; - -34 #i -ARDUINOJSON_HAS_LONG_LONG - - -35 - gme - <> - -36  - gis_sigd - : -ue_ty - {}; - -39 #i -ARDUINOJSON_HAS_INT64 - - -40 - gme - <> - -41  - gis_sigd - : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -8 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < - gtyme -> - -11  - gis_unsigd - : -l_ty - {}; - -13 - gme - <> - -14  - gis_unsigd -< - gbo -> : -ue_ty - {}; - -16 - gme - <> - -17  - gis_unsigd -<> : -ue_ty - {}; - -19 - gme - <> - -20  - gis_unsigd -<> : -ue_ty - {}; - -22 - gme - <> - -23  - gis_unsigd -<> : -ue_ty - {}; - -25 - gme - <> - -26  - gis_unsigd -<> : -ue_ty - {}; - -28 #i -ARDUINOJSON_HAS_INT64 - - -29 - gme - <> - -30  - gis_unsigd -< - g__t64 -> : -ue_ty - {}; - -33 #i -ARDUINOJSON_HAS_LONG_LONG - - -34 - gme - <> - -35  - gis_unsigd -<> : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp - -5 #agm - - - -7  - ~"ty_idty.h -" - -8 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < -tyme - - gT -> - -11  - gmake_unsigd -; - -13 - gme - <> - -14  - gmake_unsigd -<> : -ty_idty -<> {}; - -16 - gme - <> - -17  - gmake_unsigd - : -ty_idty -<> {}; - -18 - gme - <> - -19  - gmake_unsigd -<> : -ty_idty -<> {}; - -21 - gme - <> - -22  - gmake_unsigd - : -ty_idty -<> {}; - -23 - gme - <> - -24  - gmake_unsigd -<> : -ty_idty -<> {}; - -26 - gme - <> - -27  - gmake_unsigd - : -ty_idty -<> {}; - -28 - gme - <> - -29  - gmake_unsigd -<> : -ty_idty -<> {}; - -31 - gme - <> - -32  - gmake_unsigd - : -ty_idty -<> {}; - -33 - gme - <> - -34  - gmake_unsigd -<> : -ty_idty -<> {}; - -36 #i -ARDUINOJSON_HAS_LONG_LONG - - -37 - gme - <> - -38  - gmake_unsigd - : -ty_idty -<> {}; - -39 - gme - <> - -40  - gmake_unsigd -<> : -ty_idty -<> {}; - -43 #i -ARDUINOJSON_HAS_INT64 - - -44 - gme - <> - -45  - gmake_unsigd - : -ty_idty -< -__t64 -> {}; - -46 - gme - <> - -47  - gmake_unsigd -< - g__t64 -> : -ty_idty -< -__t64 -> {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13  - smove_cڡ - { - -14  -T - - tty -; - -16 - gme - < -tyme - - gT -> - -17  - gmove_cڡ - { - -18  -T - - tty -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13  - smove_n - { - -14  -T - - tty -; - -16 - gme - < -tyme - - gT -> - -17  - gmove_n -< - gT -&> { - -18  -T - - tty -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12  - sty_idty - { - -13  -T - - tty -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp - -5 #agm - - - -7  - ~"ty_as.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < -tyme - - gT -> - -11 -le -  -sw -( -T -& -a -, T& -b -) { - -12 -T - -t -( -a -); - -13 - ga - = -b -; - -14 - gb - = -t -; - -17 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -18 - gme - < -tyme - - gT -> - -19 -tyme - - gmove_n -< - gT ->:: -ty -&& -move -( -T -&& -t -) { - -20  -ic_ -< -tyme - -move_n -< -T ->:: -ty -&&>( -t -); - -23 - gme - < -tyme - - gT -> - -24 - gT -& -move -( -T -& -t -) { - -25  - gt -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTWr -> - -12 as - cCougDecܩ - { - -13 - gpublic -: - -14 -exic - -CougDecܩ -( -TWr -& -wr -: -_wr -(wr), -_cou -(0) {} - -16  -wre -( -ut8_t - -c -) { - -17 - g_cou - + -_wr -. -wre -( -c -); - -20  -wre -(cڡ -ut8_t -* -s -, -size_t - -n -) { - -21 - g_cou - + -_wr -. -wre -( -s -, -n -); - -24 -size_t - -cou -() const { - -25  - g_cou -; - -28 - give -: - -29 -TWr - -_wr -; - -30 -size_t - - g_cou -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTDei -,ym - gEb - = > - -13 as - cWr - { - -14 -public -: - -15 -exic - -Wr -( -TDei -& -de -: -_de -(&dest) {} - -17 -size_t - -wre -( -ut8_t - -c -) { - -18  -_de --> -wre -( -c -); - -21 -size_t - -wre -(cڡ -ut8_t -* -s -, size_ -n -) { - -22  - g_de --> -wre -( -s -, -n -); - -25 - give -: - -26 -TDei -* -_de -; - -31  - ~ - -33 #i -ARDUINOJSON_ENABLE_STD_STRING - - -34  - ~ - -37 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -38  - ~ - -41 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -42  - ~ - -45 #i -ARDUINOJSON_ENABLE_ARDUINO_PRINT - - -46  - ~ - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - <> - -12 -ass - - gWr -< :: -Sg -, > { - -13 cڡ -size_t - - gbufrCacy - = -ARDUINOJSON_STRING_BUFFER_SIZE -; - -15 - gpublic -: - -16 -exic - -Wr -(:: -Sg - & -r -: -_dei -(&str) { - -17 -_size - = 0; - -20 ~ -Wr -() { - -21 -ush -(); - -24 -size_t - -wre -( -ut8_t - -c -) { - -25 -ARDUINOJSON_ASSERT -( -_size - < -bufrCacy -); - -26 - g_bufr -[ -_size -++] = -ic_ -<>( -c -); - -27 i( - g_size - + 1 > -bufrCacy -) - -28 -ush -(); - -32 -size_t - -wre -(cڡ -ut8_t - * -s -, size_ -n -) { - -33  -size_t - - gi - = 0; i < - gn -; i++) { - -34 -wre -( -s -[ -i -]); - -36  - gn -; - -39 - give -: - -40  -ush -() { - -41 -ARDUINOJSON_ASSERT -( -_size - < -bufrCacy -); - -42 - g_bufr -[ -_size -] = 0; - -43 * - g_dei - + -_bufr -; - -44 - g_size - = 0; - -47 :: -Sg - * -_dei -; - -48  - g_bufr -[ -bufrCacy -]; - -49 -size_t - - g_size -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cDummyWr - { - -12 - gpublic -: - -13 -size_t - -wre -( -ut8_t -) { - -17 -size_t - -wre -(cڡ -ut8_t -*, size_ -n -) { - -18  - gn -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - < -tyme - - gTDei -> - -10 -ass - - gWr -< - -11 - gTDei -, - -12 -tyme - - gab_if -< - gis_ba_of -< :: -Prt -, - gTDei ->:: -vue ->:: -ty -> { - -13 -public -: - -14 -exic - -Wr -(:: -Prt -& -t -: -_t -(&print) {} - -16 -size_t - -wre -( -ut8_t - -c -) { - -17  -_t --> -wre -( -c -); - -20 -size_t - -wre -(cڡ -ut8_t -* -s -, size_ -n -) { - -21  - g_t --> -wre -( -s -, -n -); - -24 - give -: - -25 :: -Prt -* -_t -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cSticSgWr - { - -13 - gpublic -: - -14 -SticSgWr -(* -buf -, -size_t - -size -: -d -(bu+ siz- 1), -p -(buf) { - -15 * - gp - = '\0'; - -18 -size_t - -wre -( -ut8_t - -c -) { - -19 i( - gp - > -d -) - -21 * - gp -++ = -ic_ -<>( -c -); - -22 * - gp - = '\0'; - -26 -size_t - -wre -(cڡ -ut8_t - * -s -, size_ -n -) { - -27 * - gbeg - = -p -; - -28  - gp - < - gd - && - gn - > 0) { - -29 * - gp -++ = -ic_ -<>(* -s -++); - -30 - gn ---; - -32 * - gp - = '\0'; - -33  -size_t -( -p - - -beg -); - -36 - give -: - -37 * -d -; - -38 * - gp -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTDei -> - -12 -ass - - gWr -< - -13 - gTDei -, - -14 -tyme - - gab_if -< - gis_ba_of -< - gd -:: -oam -, - gTDei ->:: -vue ->:: -ty -> { - -15 -public -: - -16 -exic - -Wr -( -d -:: -oam -& -os -: -_os -(&os) {} - -18 -size_t - -wre -( -ut8_t - -c -) { - -19 -_os --> -put -( -ic_ -<>( -c -)); - -23 -size_t - -wre -(cڡ -ut8_t -* -s -, size_ -n -) { - -24 - g_os --> -wre -( -t_ -( -s -), - -25 -ic_ -< -d -:: -amsize ->( -n -)); - -26  - gn -; - -29 - give -: - -30 -d -:: -oam -* -_os -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -ass - - gT -> - -15  - gis_d_rg - : -l_ty - {}; - -17 - gme - < -ass - - gTChTs -, cs - gTAot -> - -18  - gis_d_rg -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > - -19 : -ue_ty - {}; - -21 - gme - < -tyme - - gTDei -> - -22 -ass - - gWr -< - gTDei -, - -23 -tyme - - gab_if -< - gis_d_rg -< - gTDei ->:: -vue ->:: -ty -> { - -24 -public -: - -25 -Wr -( -TDei - & -r -: -_r -(&str) {} - -27 -size_t - -wre -( -ut8_t - -c -) { - -28 -_r --> -ݔ -+=( -ic_ -<>( -c -)); - -32 -size_t - -wre -(cڡ -ut8_t - * -s -, size_ -n -) { - -33 - g_r --> -nd -( -t_ -( -s -), -n -); - -34  - gn -; - -37 - give -: - -38 -TDei - * -_r -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - -ass - - gTSliz -, -tyme - - gTSour -> - -12 -size_t - -msu -(cڡ -TSour - & -sour -) { - -13 -DummyWr - - gdp -; - -14 - gTSliz -< - gDummyWr -> -rliz -( -dp -); - -15  - gsour -. -ac -( -rliz -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - -ass - - gTSliz -, -tyme - - gTSour -, - -12 -tyme - - gTWr -> - -13 -size_t - -doSlize -(cڡ -TSour - & -sour -, -TWr - -wr -) { - -14 - gTSliz -< - gTWr -> -rliz -( -wr -); - -15  - gsour -. -ac -( -rliz -); - -18 - gme - -ass - - gTSliz -, -tyme - - gTSour -, - -19 -tyme - - gTDei -> - -20 -size_t - -rlize -(cڡ -TSour - & -sour -, -TDei - & -dei -) { - -21 - gWr -< - gTDei -> -wr -( -dei -); - -22  - gdoSlize -< - gTSliz ->( - gsour -, - gwr -); - -25 - gme - -ass - - gTSliz -, -tyme - - gTSour -> - -26 -size_t - -rlize -(cڡ -TSour - & -sour -, * -bufr -, size_ -bufrSize -) { - -27 -SticSgWr - -wr -( -t_ -<*>( -bufr -), -bufrSize -); - -28  - gdoSlize -< - gTSliz ->( - gsour -, - gwr -); - -31 - gme - -ass - - gTSliz -, -tyme - - gTSour -, - -32 -tyme - - gTCh -, -size_t - - gN -> - -33 #i -defed - -_MSC_VER - && _MSC_VER < 1900 - -34 -tyme - - gab_if -<( - gmove_n -< - gTCh ->:: -ty -=1, - gsize_t ->::type - -36 -tyme - -ab_if -<( -TCh -=1, - gsize_t ->:: -ty - - -38 -rlize -(cڡ -TSour - & -sour -, -TCh - (& -bufr -)[ -N -]) { - -39 -SticSgWr - -wr -( -t_ -<*>( -bufr -), -N -); - -40  - gdoSlize -< - gTSliz ->( - gsour -, - gwr -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cSgCݛr - { - -12 - gpublic -: - -13 -SgCݛr -( -MemyPo -& -po -: -_po -(&pool) {} - -15  -tSg -() { - -16 -_po --> -gFeZe -(& -_r -, & -_cy -); - -17 - g_size - = 0; - -20 cڡ * -ve -() { - -21 -ARDUINOJSON_ASSERT -( -_r -); - -22  - g_po --> -veSgFromFeZe -( -_size -); - -25  -nd -(cڡ * -s -) { - -26 * - gs - -nd -(* -s -++); - -29  -nd -(cڡ * -s -, -size_t - -n -) { - -30  - gn --- > 0 -nd -(* -s -++); - -33  -nd -( -c -) { - -34 i(! - g_r -) - -37 i( - g_size - > -_cy -) { - -38 -_r - = 0; - -39 - g_po --> -mkAsOvowed -(); - -43 - g_r -[ -_size -++] = -c -; - -46 -bo - -isVid -() { - -47  - g_r - != 0; - -50 cڡ * -c_r -() { - -51  - g_r -; - -54  - gage_pics -:: - te_by_cy - - tage_picy -; - -56 - give -: - -57 -MemyPo -* -_po -; - -58 * - g_r -; - -59 -size_t - - g_size -; - -60 -size_t - - g_cy -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cSgMov - { - -13 - gpublic -: - -14 -SgMov -(* -r -: -_wreP -(ptr) {} - -16  -tSg -() { - -17 -_tP - = -_wreP -; - -20 cڡ * -ve -() const { - -21  - g_tP -; - -24  -nd -( -c -) { - -25 * - g_wreP -++ = -c -; - -28 -bo - -isVid -() const { - -29  - gue -; - -32 cڡ * -c_r -() const { - -33  - g_tP -; - -36  - gage_pics -:: - te_by_addss - - tage_picy -; - -38 - give -: - -39 * -_wreP -; - -40 * - g_tP -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTIut -> - -13 -SgCݛr - -makeSgStage -( -TIut -&, -MemyPo -& -po -) { - -14  -SgCݛr -( -po -); - -17 - gme - < -tyme - - gTCh -> - -18 -SgMov - -makeSgStage -( - -19 -TCh -* -put -, -MemyPo -&, - -20 -tyme - -ab_if -:: -vue ->:: -ty -* = 0) { - -21  -SgMov -( -t_ -<*>( -put -)); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 as - cArduoSgAdr - { - -16 - gpublic -: - -17 -ArduoSgAdr -(cڡ :: -Sg -& -r -: -_r -(&str) {} - -19  -cyTo -(* -p -, -size_t - -n -) const { - -20 -memy -( -p -, -_r --> -c_r -(), -n -); - -23 -bo - -isNu -() const { - -25  ! - g_r --> -c_r -(); - -28  -com -(cڡ * -h -) const { - -30 cڡ * - gme - = -_r --> -c_r -(); - -31  -_rcmp -( -me -, -h -); - -34 -bo - -equs -(cڡ * -exed -) const { - -35  -com -( -exed -) == 0; - -38 -size_t - -size -() const { - -39  - g_r --> -ngth -(); - -42 cڡ * -beg -() const { - -43  - g_r --> -c_r -(); - -46  - gage_pics -:: - te_by_cy - - tage_picy -; - -48 - give -: - -49 cڡ :: -Sg -* -_r -; - -52 - gme - <> - -53  - gIsSg -< :: -Sg -> : -ue_ty - {}; - -55 - gme - <> - -56  - gIsSg -< :: -SgSumHr -> : -ue_ty - {}; - -58 -le - -ArduoSgAdr - - $adtSg -(cڡ :: -Sg -& -r -) { - -59  - `ArduoSgAdr -( -r -); - -60 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 as - cCڡRamSgAdr - { - -17 - gpublic -: - -18 -CڡRamSgAdr -(cڡ * -r - = 0: -_r -(str) {} - -20  -com -(cڡ * -h -) const { - -21  -_rcmp -( -_r -, -h -); - -24 -bo - -equs -(cڡ * -exed -) const { - -25  -com -( -exed -) == 0; - -28 -bo - -isNu -() const { - -29  ! - g_r -; - -32 -size_t - -size -() const { - -33 i(! - g_r -) - -35  - -( -_r -); - -38 cڡ * -da -() const { - -39  - g_r -; - -42 cڡ * -beg -() const { - -43  - g_r -; - -46  - gage_pics -:: - te_by_addss - - tage_picy -; - -48 - geed -: - -49 cڡ * -_r -; - -52 - gme - <> - -53  - gIsSg - : -ue_ty - {}; - -55 - gme - < - gN -> - -56  - gIsSg - : -ue_ty - {}; - -58 -le - -CڡRamSgAdr - - $adtSg -(cڡ * -r -) { - -59  - `CڡRamSgAdr -( -r -); - -60 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 as - cFshSgAdr - { - -15 - gpublic -: - -16 -FshSgAdr -(cڡ -__FshSgHr -* -r -: -_r -(str) {} - -18  -com -(cڡ * -h -) const { - -19 i(! -h - && ! -_r -) - -21 i(! - g_r -) - -23 i(! - gh -) - -25  - -rcmp_P -( -h -, -t_ -( -_r -)); - -28 -bo - -equs -(cڡ * -exed -) const { - -29  -com -( -exed -) == 0; - -32 -bo - -isNu -() const { - -33  ! - g_r -; - -36  -cyTo -(* -p -, -size_t - -n -) const { - -37 -memy_P -( -p -, -t_ -( -_r -), -n -); - -40 -size_t - -size -() const { - -41 i(! - g_r -) - -43  -_P -( -t_ -( -_r -)); - -46 -FshSgIt - -beg -() const { - -47  -FshSgIt -( -_r -); - -50  - gage_pics -:: - te_by_cy - - tage_picy -; - -52 - give -: - -53 cڡ -__FshSgHr -* -_r -; - -56 -le - -FshSgAdr - - $adtSg -(cڡ -__FshSgHr -* -r -) { - -57  - `FshSgAdr -( -r -); - -58 - } -} - -60 - gme - <> - -61  - gIsSg - : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringIterator.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 as - cFshSgIt - { - -10 - gpublic -: - -11 -exic - -FshSgIt -(cڡ -__FshSgHr -* -r -) - -12 : -_r -( -t_ -( -r -)) {} - -14 -exic - -FshSgIt -(cڡ * -r -: -_r -(ptr) {} - -16 -FshSgIt - -ݔ -+( -rdiff_t - -d -) const { - -17  -FshSgIt -( -_r - + -d -); - -20 -rdiff_t - - gݔ --( -FshSgIt - - gh -) const { - -21  - g_r - - - gh -._ptr; - -24 -FshSgIt - - gݔ -++() { - -25  -FshSgIt -( -_r -++); - -28 -FshSgIt - - gݔ -++() { - -29  -FshSgIt -(++ -_r -); - -32 -bo - - gݔ -!=( -FshSgIt - -h -) const { - -33  -_r - ! -h -._ptr; - -36  - gݔ -*() const { - -37  ( -pgm_ad_by -( -_r -)); - -40 - give -: - -41 cڡ * -_r -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < - gtyme -> - -11  - gIsSg - : -l_ty - {}; - -13 - gme - < -tyme - - gT -> - -14  - gIsSg - : -IsSg -< -T -> {}; - -16 - gme - < -tyme - - gT -> - -17  - gIsSg -< - gT -&> : -IsSg -< -T -> {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -11  - ~ - -14 #i -ARDUINOJSON_ENABLE_STD_STRING - - -15  - ~ - -18 -mea - - gARDUINOJSON_NAMESPACE - { - -20 - gme - < - gtyme -> - -21  - gIsWrbSg - : -l_ty - {}; - -23 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -25 - gme - <> - -26  - gIsWrbSg -< :: -Sg -> : -ue_ty - {}; - -30 #i -ARDUINOJSON_ENABLE_STD_STRING - - -32 - gme - < -tyme - - gTChTs -,ym - gTAot -> - -33  - gIsWrbSg -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > - -34 : -ue_ty - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 as - cRamSgAdr - : -public - -CڡRamSgAdr - { - -14 -public -: - -15 -RamSgAdr -(cڡ * -r -: -CڡRamSgAdr -(str) {} - -17  -cyTo -(* -p -, -size_t - -n -) const { - -18 -memy -( -p -, -_r -, -n -); - -21  - gARDUINOJSON_NAMESPACE -:: - tage_pics -:: - te_by_cy - - tage_picy -; - -24 - gme - < -tyme - - gTCh -> - -25 -le - -RamSgAdr - - $adtSg -(cڡ -TCh -* -r -) { - -26  - `RamSgAdr -( -t_ -( -r -)); - -27 - } -} - -29 -le - -RamSgAdr - - $adtSg -(* -r -) { - -30  - `RamSgAdr -( -r -); - -31 - } -} - -33 - gme - < -tyme - - gTCh -> - -34  - gIsSg -< - gTCh -*> { - -35 cڡ -bo - - gvue - = ( -TCh -) == 1; - -38 - gme - <> - -39  - gIsSg -<*> { - -40 cڡ -bo - - gvue - = -l -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 as - cSizedFshSgAdr - { - -15 - gpublic -: - -16 -SizedFshSgAdr -(cڡ -__FshSgHr -* -r -, -size_t - -sz -) - -17 : -_r -( -r -), -_size -( -sz -) {} - -19  -com -(cڡ * -h -) const { - -20 i(! - gh - && ! - g_r -) - -22 i(! - g_r -) - -24 i(! - gh -) - -26  - -cmp_P -( -h -, -t_ -( -_r -), -_size -); - -29 -bo - -equs -(cڡ * -exed -) const { - -30  -com -( -exed -) == 0; - -33 -bo - -isNu -() const { - -34  ! - g_r -; - -37  -cyTo -(* -p -, -size_t - -n -) const { - -38 -memy_P -( -p -, -t_ -( -_r -), -n -); - -41 -size_t - -size -() const { - -42  - g_size -; - -45 -FshSgIt - -beg -() const { - -46  -FshSgIt -( -_r -); - -49  - gage_pics -:: - te_by_cy - - tage_picy -; - -51 - give -: - -52 cڡ -__FshSgHr -* -_r -; - -53 -size_t - - g_size -; - -56 -le - -SizedFshSgAdr - - $adtSg -(cڡ -__FshSgHr -* -r -, - -57 -size_t - -sz -) { - -58  - `SizedFshSgAdr -( -r -, -sz -); - -59 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 as - cSizedRamSgAdr - { - -16 - gpublic -: - -17 -SizedRamSgAdr -(cڡ * -r -, -size_t - -n -: -_r -(r), -_size -(n) {} - -19  -com -(cڡ * -h -) const { - -20  -_cmp -( -_r -, -h -, -_size -); - -23 -bo - -equs -(cڡ * -exed -) const { - -24  -com -( -exed -) == 0; - -27 -bo - -isNu -() const { - -28  ! - g_r -; - -31  -cyTo -(* -p -, -size_t - -n -) const { - -32 -memy -( -p -, -_r -, -n -); - -35 -size_t - -size -() const { - -36  - g_size -; - -39 cڡ * -beg -() const { - -40  - g_r -; - -43  - gage_pics -:: - te_by_cy - - tage_picy -; - -45 - give -: - -46 cڡ * -_r -; - -47 -size_t - - g_size -; - -50 - gme - < -tyme - - gTCh -> - -51 -le - -SizedRamSgAdr - - $adtSg -(cڡ -TCh -* -r -, -size_t - -size -) { - -52  - `SizedRamSgAdr -( -t_ -( -r -), -size -); - -53 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StdStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - < -tyme - - gTSg -> - -16 as - cStdSgAdr - { - -17 - gpublic -: - -18 -StdSgAdr -(cڡ -TSg -& -r -: -_r -(&str) {} - -20  -cyTo -(* -p -, -size_t - -n -) const { - -21 -memy -( -p -, -_r --> -c_r -(), -n -); - -24 -bo - -isNu -() const { - -25  - gl -; - -28  -com -(cڡ * -h -) const { - -29 i(! - gh -) - -31  - g_r --> -com -( -h -); - -34 -bo - -equs -(cڡ * -exed -) const { - -35 i(! - gexed -) - -36  - gl -; - -37  * - g_r - = -exed -; - -40 -size_t - -size -() const { - -41  - g_r --> -size -(); - -44 cڡ * -beg -() const { - -45  - g_r --> -c_r -(); - -48  - gage_pics -:: - te_by_cy - - tage_picy -; - -50 - give -: - -51 cڡ -TSg -* -_r -; - -54 - gme - < -tyme - - gTChTs -,ym - gTAot -> - -55  - gIsSg -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > : -ue_ty - { - -58 - gme - < -tyme - - gTChTs -,ym - gTAot -> - -59 -le - - gStdSgAdr -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > - -60 -adtSg -(cڡ -d -:: -basic_rg -<, -TChTs -, -TAot ->& -r -) { - -61  - gStdSgAdr -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> >( - -62 - gr -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 -mea - - gage_pics - { - -10  - se_by_addss - {}; - -11  - se_by_cy - {}; - -12  - sdecide__ruime - {}; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/String.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 as - cSg - { - -14 - gpublic -: - -15 -Sg -(: -_da -(0), -_isStic -( -ue -) {} - -16 -Sg -(cڡ * -da -, -bo - -isSticDa - = -ue -) - -17 : -_da -( -da -), -_isStic -( -isSticDa -) {} - -19 cڡ * -c_r -() const { - -20  - g_da -; - -23 -bo - -isNu -() const { - -24  ! - g_da -; - -27 -bo - -isStic -() const { - -28  - g_isStic -; - -31 -nd - -bo - - gݔ -==( -Sg - -lhs -, Sg - grhs -) { - -32 i( - glhs -. - g_da - = -rhs -. -_da -) - -33  -ue -; - -34 i(! - glhs -. - g_da -) - -35  - gl -; - -36 i(! - grhs -. - g_da -) - -37  - gl -; - -38  -rcmp -( -lhs -. -_da -, -rhs -._data) == 0; - -41 -nd - -bo - - gݔ -!=( -Sg - -lhs -, Sg - grhs -) { - -42 i( - glhs -. - g_da - = -rhs -. -_da -) - -43  -l -; - -44 i(! - glhs -. - g_da -) - -45  - gue -; - -46 i(! - grhs -. - g_da -) - -47  - gue -; - -48  -rcmp -( -lhs -. -_da -, -rhs -._data) != 0; - -51 - give -: - -52 cڡ * -_da -; - -53 -bo - - g_isStic -; - -56 as - cSgAdr - : -public - -RamSgAdr - { - -57 -public -: - -58 -SgAdr -(cڡ -Sg -& -r -) - -59 : -RamSgAdr -( -r -. -c_r -()), -_isStic -(r. -isStic -()) {} - -61 -bo - -isStic -() const { - -62  - g_isStic -; - -65  - gage_pics -:: - tdecide__ruime - - tage_picy -; - -67 - give -: - -68 -bo - -_isStic -; - -71 - gme - <> - -72  - gIsSg -< - gSg -> : -ue_ty - {}; - -74 -le - -SgAdr - - $adtSg -(cڡ -Sg -& -r -) { - -75  - `SgAdr -( -r -); - -76 - } -} - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 #i -ARDUINOJSON_ENABLE_STD_STRING - - -12  - ~ - -15 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -16  - ~ - -19 #i -ARDUINOJSON_ENABLE_PROGMEM - - -20  - ~ - -21  - ~ - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTAddSg -> - -13 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -* -po -) { - -14 i(! - gv -) - -15  - gl -; - -16  -SKey -( -v -, -key -, -po -, -tyme - -TAddSg -:: -age_picy -()); - -19 - gme - < -tyme - - gTAddSg -> - -20 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -* -po -, - -21 -age_pics -:: -decide__ruime -) { - -22 i( -key -. -isStic -()) { - -23  -SKey -( -v -, -key -, -po -, -age_pics -:: -e_by_addss -()); - -25  -SKey -( -v -, -key -, -po -, -age_pics -:: -e_by_cy -()); - -29 - gme - < -tyme - - gTAddSg -> - -30 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -*, - -31 -age_pics -:: -e_by_addss -) { - -32 -ARDUINOJSON_ASSERT -( -v -); - -33 - gv --> -tKey -( -key -. -da -(), -age_pics -:: -e_by_addss -()); - -34  - gue -; - -37 - gme - < -tyme - - gTAddSg -> - -38 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -* -po -, - -39 -age_pics -:: -e_by_cy -) { - -40 cڡ * -dup - = -po --> -veSg -( -key -); - -41 i(! - gdup -) - -42  - gl -; - -43 -ARDUINOJSON_ASSERT -( -v -); - -44 - gv --> -tKey -( -dup -, -age_pics -:: -e_by_cy -()); - -45  - gue -; - -48 -le - -size_t - -Size -(cڡ -VSl -* -v -) { - -49 -size_t - - gn - = 0; - -50  - gv -) { - -51 - gn -++; - -52 - gv - = -v --> -xt -(); - -54  - gn -; - -57 -le - -VDa -* -Da -( -VSl -* - -) { - -58  - gt_ -< - gVDa -*>( - g -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 -ass - - gAayRef -; - -13 -ass - - gAayCڡRef -; - -14 -ass - - gObjeRef -; - -15 -ass - - gObjeCڡRef -; - -16 -ass - - gVRef -; - -17 -ass - - gVCڡRef -; - -21 - gme - < -tyme - - gT -> - -22  - sVAs - { - -23  -T - - tty -; - -26 - gme - <> - -27  - gVAs -<*> { - -28 cڡ * - tty -; - -33 - gme - < -tyme - - gT -> - -34  - sVCڡAs - { - -35  -tyme - - tVAs -< - tT ->:: - tty -ype; - -38 - gme - <> - -39  - gVCڡAs -< - gVRef -> { - -40  -VCڡRef - - tty -; - -43 - gme - <> - -44  - gVCڡAs -< - gObjeRef -> { - -45  -ObjeCڡRef - - tty -; - -48 - gme - <> - -49  - gVCڡAs -< - gAayRef -> { - -50  -AayCڡRef - - tty -; - -55 - gme - < -tyme - - gT -> - -56 -le - -tyme - - gab_if -< - gis_gl -< - gT ->:: -vue - && ! -is_me -< -bo -, T>::value, - -57 - gT ->:: -ty - - -58 -vAs -(cڡ -VDa -* -da -) { - -59 -ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED -( -T -); - -60  - gda - !0 ? -da --> -asIegl -< -T ->() : T(0); - -63 - gme - < -tyme - - gT -> - -64 -le - -tyme - - gab_if -< - gis_um -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -65 cڡ -VDa -* -da -) { - -66  -da - !0 ? -ic_ -< -T ->(da-> -asIegl -<>()) : T(); - -69 - gme - < -tyme - - gT -> - -70 -le - -tyme - - gab_if -< - gis_me -< - gT -, - gbo ->:: -vue -, T>:: -ty - -vAs -( - -71 cڡ -VDa -* -da -) { - -72  -da - !0 ? da-> -asBoޗn -(: -l -; - -75 - gme - < -tyme - - gT -> - -76 -le - -tyme - - gab_if -< - gis_tg_pot -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -77 cڡ -VDa -* -da -) { - -78  -da - !0 ? da-> -asFlt -< -T ->() : T(0); - -81 - gme - < -tyme - - gT -> - -82 -le - -tyme - - gab_if -< - gis_me -< - gT -, cڡ *>:: -vue - || - -83 -is_me -< -T -, *>:: -vue -, - -84 cڡ *>:: -ty - - -85 -vAs -(cڡ -VDa -* -da -) { - -86  -da - !0 ? da-> -asSg -() : 0; - -89 - gme - < -tyme - - gT -> - -90 -T - -vAs -( -VDa -* -da -, -MemyPo -*) { - -94  - gvAs -< - gT ->( - gda -); - -97 - gme - < -tyme - - gT -> - -98 -le - -tyme - - gab_if -< - gis_me -< - gAayCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -99 cڡ -VDa -* -da -); - -101 - gme - < -tyme - - gT -> - -102 -le - -tyme - - gab_if -< - gis_me -< - gObjeCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -103 cڡ -VDa -* -da -); - -105 - gme - < -tyme - - gT -> - -106 -le - -tyme - - gab_if -< - gis_me -< - gVCڡRef -, - gT ->:: -vue -, T>:: -ty - - -107 -vAs -(cڡ -VDa -* -da -); - -109 - gme - < -tyme - - gT -> - -110 -le - -tyme - - gab_if -< - gIsWrbSg -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -111 cڡ -VDa -* -da -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gT -> - -14 -le - -tyme - - gab_if -< - gis_me -< - gAayCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -15 cڡ -VDa -* -_da -) { - -16  -AayCڡRef -( -vAsAay -( -_da -)); - -19 - gme - < -tyme - - gT -> - -20 -le - -tyme - - gab_if -< - gis_me -< - gObjeCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -21 cڡ -VDa -* -_da -) { - -22  -ObjeCڡRef -( -vAsObje -( -_da -)); - -25 - gme - < -tyme - - gT -> - -26 -le - -tyme - - gab_if -< - gis_me -< - gVCڡRef -, - gT ->:: -vue -, T>:: -ty - - -27 -vAs -(cڡ -VDa -* -_da -) { - -28  -VCڡRef -( -_da -); - -31 - gme - < -tyme - - gT -> - -32 -le - -tyme - - gab_if -< - gIsWrbSg -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -33 cڡ -VDa -* -_da -) { - -34 cڡ * -cr - = -_da - !0 ? _da-> -asSg -() : 0; - -35 i( - gcr -) - -36  -T -( -cr -); - -37 -T - - gs -; - -38 -rlizeJs -( -VCڡRef -( -_da -), -s -); - -39  - gs -; - -42 - gme - <> - -43 -le - -AayRef - - gvAs -< - gAayRef ->( -VDa -* - gda -, -MemyPo -* - gpo -) { - -44  -AayRef -( -po -, -da - !0 ? da-> -asAay -() : 0); - -47 - gme - <> - -48 -le - -ObjeRef - - gvAs -< - gObjeRef ->( -VDa -* - gda -, -MemyPo -* - gpo -) { - -49  -ObjeRef -( -po -, -da - !0 ? da-> -asObje -() : 0); - -52 - gme - <> - -53 -le - -VRef - - gvAs -< - gVRef ->( -VDa -* - gda -, -MemyPo -* - gpo -) { - -54  -VRef -( -po -, -da -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 -ass - - gCiDa -; - -17  - gComrBa - : -Vis -< -ComResu -> { - -18 -ComResu - -visAay -(cڡ -CiDa - &) { - -19  -COMPARE_RESULT_DIFFER -; - -21 -ComResu - -visBoޗn -( -bo -) { - -22  - gCOMPARE_RESULT_DIFFER -; - -24 -ComResu - -visFlt -( -Flt -) { - -25  - gCOMPARE_RESULT_DIFFER -; - -27 -ComResu - -visNegiveIeg -( -UI -) { - -28  - gCOMPARE_RESULT_DIFFER -; - -30 -ComResu - -visNu -() { - -31  - gCOMPARE_RESULT_DIFFER -; - -33 -ComResu - -visObje -(cڡ -CiDa - &) { - -34  - gCOMPARE_RESULT_DIFFER -; - -36 -ComResu - -visPosiveIeg -( -UI -) { - -37  - gCOMPARE_RESULT_DIFFER -; - -39 -ComResu - -visRawJs -(cڡ *, -size_t -) { - -40  - gCOMPARE_RESULT_DIFFER -; - -42 -ComResu - -visSg -(const *) { - -43  - gCOMPARE_RESULT_DIFFER -; - -47 - gme - < -tyme - - gT -,ym - gEb - = > - -48  -Comr -; - -50 - gme - < -tyme - - gT -> - -51  - gComr -< - gT -, -tyme - - gab_if -< - gIsSg -:: -vue ->:: -ty -> - -52 : -ComrBa - { - -53 -T - -rhs -; - -55 -exic - -Comr -( -T - -vue -: -rhs -(value) {} - -57 -ComResu - -visSg -(cڡ * -lhs -) { - -58  -i - = -adtSg -( -rhs -). -com -( -lhs -); - -59 i( - gi - < 0) - -60  - gCOMPARE_RESULT_GREATER -; - -61 i( - gi - > 0) - -62  - gCOMPARE_RESULT_LESS -; - -64  - gCOMPARE_RESULT_EQUAL -; - -67 -ComResu - -visNu -() { - -68 i( -adtSg -( -rhs -). -isNu -()) - -69  - gCOMPARE_RESULT_EQUAL -; - -71  - gCOMPARE_RESULT_DIFFER -; - -75 - gme - < -tyme - - gT -> - -76  - gComr -< - gT -, -tyme - - gab_if -< - gis_gl -:: -vue - || - -77 -is_tg_pot -< -T ->:: -vue ->:: -ty -> - -78 : -ComrBa - { - -79 -T - -rhs -; - -81 -exic - -Comr -( -T - -vue -: -rhs -(value) {} - -83 -ComResu - -visFlt -( -Flt - -lhs -) { - -84  -hmicCom -( -lhs -, -rhs -); - -87 -ComResu - -visNegiveIeg -( -UI - -lhs -) { - -88  -hmicComNegeLe -( -lhs -, -rhs -); - -91 -ComResu - -visPosiveIeg -( -UI - -lhs -) { - -92  -hmicCom -( -lhs -, -rhs -); - -95 -ComResu - -visBoޗn -( -bo - -lhs -) { - -96  -visPosiveIeg -( -ic_ -< -UI ->( -lhs -)); - -100  - gNuComr - : -ComrBa - { - -101 -ComResu - -visNu -() { - -102  -COMPARE_RESULT_EQUAL -; - -106 #i -ARDUINOJSON_HAS_NULLPTR - - -107 - gme - <> - -108  - gComr -< -dety -( -nuαr -), > : -NuComr - { - -109 -exic - -Comr -( -dety -( -nuαr -): -NuComr -() {} - -113  - gAayComr - : -ComrBa - { - -114 cڡ -CiDa - * -_rhs -; - -116 -exic - -AayComr -(cڡ -CiDa - & -rhs -: -_rhs -(&rhs) {} - -118 -ComResu - -visAay -(cڡ -CiDa - & -lhs -) { - -119 i( -lhs -. -equsAay -(* -_rhs -)) - -120  -COMPARE_RESULT_EQUAL -; - -122  - gCOMPARE_RESULT_DIFFER -; - -126  - gNegiveIegComr - : -ComrBa - { - -127 -UI - -_rhs -; - -129 -exic - -NegiveIegComr -( -UI - -rhs -: -_rhs -(rhs) {} - -131 -ComResu - -visFlt -( -Flt - -lhs -) { - -132  -hmicComNegeRight -( -lhs -, -_rhs -); - -135 -ComResu - -visNegiveIeg -( -UI - -lhs -) { - -136  -hmicCom -( -_rhs -, -lhs -); - -139 -ComResu - -visPosiveIeg -( -UI -) { - -140  - gCOMPARE_RESULT_GREATER -; - -143 -ComResu - -visBoޗn -( -bo -) { - -144  - gCOMPARE_RESULT_GREATER -; - -148  - gObjeComr - : -ComrBa - { - -149 cڡ -CiDa - * -_rhs -; - -151 -exic - -ObjeComr -(cڡ -CiDa - & -rhs -: -_rhs -(&rhs) {} - -153 -ComResu - -visObje -(cڡ -CiDa - & -lhs -) { - -154 i( -lhs -. -equsObje -(* -_rhs -)) - -155  -COMPARE_RESULT_EQUAL -; - -157  - gCOMPARE_RESULT_DIFFER -; - -161  - gRawComr - : -ComrBa - { - -162 cڡ * -_rhsDa -; - -163 -size_t - - g_rhsSize -; - -165 -exic - -RawComr -(cڡ * -rhsDa -, -size_t - -rhsSize -) - -166 : -_rhsDa -( -rhsDa -), -_rhsSize -( -rhsSize -) {} - -168 -ComResu - -visRawJs -(cڡ * -lhsDa -, -size_t - -lhsSize -) { - -169 -size_t - - gsize - = -_rhsSize - < -lhsSize - ? _rhsSize :hsSize; - -170  - gn - = -memcmp -( -lhsDa -, -_rhsDa -, -size -); - -171 i( - gn - < 0) - -172  - gCOMPARE_RESULT_LESS -; - -173 i( - gn - > 0) - -174  - gCOMPARE_RESULT_GREATER -; - -176  - gCOMPARE_RESULT_EQUAL -; - -180 - gme - < -tyme - - gT -> - -181  - gComr -< - gT -, -tyme - - gab_if -< - gIsVisab -:: -vue ->:: -ty -> - -182 : -ComrBa - { - -183 -T - -rhs -; - -185 -exic - -Comr -( -T - -vue -: -rhs -(value) {} - -187 -ComResu - -visAay -(cڡ -CiDa - & -lhs -) { - -188 -AayComr - -comr -( -lhs -); - -189  -ac -( -comr -); - -192 -ComResu - -visObje -(cڡ -CiDa - & -lhs -) { - -193 -ObjeComr - -comr -( -lhs -); - -194  -ac -( -comr -); - -197 -ComResu - -visFlt -( -Flt - -lhs -) { - -198 - gComr -< - gFlt -> -comr -( -lhs -); - -199  -ac -( -comr -); - -202 -ComResu - -visSg -(cڡ * -lhs -) { - -203 - gComr - -comr -( -lhs -); - -204  -ac -( -comr -); - -207 -ComResu - -visRawJs -(cڡ * -lhsDa -, -size_t - -lhsSize -) { - -208 -RawComr - -comr -( -lhsDa -, -lhsSize -); - -209  -ac -( -comr -); - -212 -ComResu - -visNegiveIeg -( -UI - -lhs -) { - -213 -NegiveIegComr - -comr -( -lhs -); - -214  -ac -( -comr -); - -217 -ComResu - -visPosiveIeg -( -UI - -lhs -) { - -218 - gComr -< - gUI -> -comr -( -lhs -); - -219  -ac -( -comr -); - -222 -ComResu - -visBoޗn -( -bo - -lhs -) { - -223 - gComr -< - gbo -> -comr -( -lhs -); - -224  -ac -( -comr -); - -227 -ComResu - -visNu -() { - -228 -NuComr - - gcomr -; - -229  -ac -( -comr -); - -232 - give -: - -233 -me - < -tyme - -TComr -> - -234 -ComResu - -ac -( -TComr - & -comr -) { - -235 -ComResu - -vdResu - = -rhs -. -ac -( -comr -); - -236  - gvdResu -) { - -237  - gCOMPARE_RESULT_GREATER -: - -238  -COMPARE_RESULT_LESS -; - -239  - gCOMPARE_RESULT_LESS -: - -240  -COMPARE_RESULT_GREATER -; - -242  -vdResu -; - -247 - gme - < -tyme - - gT1 -,ym - gT2 -> - -248 -ComResu - -com -(cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -) { - -249 - gComr -< - gT2 -> -comr -( -rhs -); - -250  - glhs -. -ac -( -comr -); - -253 -le -  -vCom -(cڡ -VDa - * -a -, cڡ VD* -b -) { - -254  -com -( -VCڡRef -( -a -), VCڡRef( -b -)); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gVALUE_MASK - = 0x7F, - -19 - gVALUE_IS_OWNED - = 0x01, - -20 - gVALUE_IS_NULL - = 0, - -21 - gVALUE_IS_LINKED_RAW - = 0x02, - -22 - gVALUE_IS_OWNED_RAW - = 0x03, - -23 - gVALUE_IS_LINKED_STRING - = 0x04, - -24 - gVALUE_IS_OWNED_STRING - = 0x05, - -27 - gVALUE_IS_BOOLEAN - = 0x06, - -28 - gVALUE_IS_POSITIVE_INTEGER - = 0x08, - -29 - gVALUE_IS_NEGATIVE_INTEGER - = 0x0A, - -30 - gVALUE_IS_FLOAT - = 0x0C, - -32 - gCOLLECTION_MASK - = 0x60, - -33 - gVALUE_IS_OBJECT - = 0x20, - -34 - gVALUE_IS_ARRAY - = 0x40, - -36 - gKEY_IS_OWNED - = 0x80 - -39  - sRawDa - { - -40 cڡ * - gda -; - -41 -size_t - - gsize -; - -44  - uVCڋ - { - -45 -Flt - - gasFlt -; - -46 -UI - - gasIeg -; - -47 -CiDa - - gasCi -; - -48 cڡ * - gasSg -; - -50 cڡ * - gda -; - -51 -size_t - - gsize -; - -52 } - gasRaw -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -15 #i -defed -( -__GNUC__ -) - -16 #i -__GNUC__ - >= 7 - -17 #agm -GCC - -dgnoic - -push - - -18 #agm -GCC - -dgnoic - -igned - "-Wmaybe-uninitialized" - -19 #agm -GCC - -dgnoic - -igned - "-Wuninitialized" - -23 -mea - - gARDUINOJSON_NAMESPACE - { - -25 as - cVDa - { - -26 -VCڋ - - g_cڋ -; - -27 -ut8_t - - g_ags -; - -29 - gpublic -: - -35  - -() { - -36 -_ags - = 0; - -39 - gme - < -tyme - - gTVis -> - -40 -tyme - - gTVis -:: -su_ty - -ac -( -TVis - & -vis -) const { - -41  -ty -()) { - -42  -VALUE_IS_FLOAT -: - -43  -vis -. -visFlt -( -_cڋ -. -asFlt -); - -45  - gVALUE_IS_ARRAY -: - -46  -vis -. -visAay -( -_cڋ -. -asCi -); - -48  - gVALUE_IS_OBJECT -: - -49  -vis -. -visObje -( -_cڋ -. -asCi -); - -51  - gVALUE_IS_LINKED_STRING -: - -52  -VALUE_IS_OWNED_STRING -: - -53  -vis -. -visSg -( -_cڋ -. -asSg -); - -55  - gVALUE_IS_OWNED_RAW -: - -56  -VALUE_IS_LINKED_RAW -: - -57  -vis -. -visRawJs -( -_cڋ -. -asRaw -. -da -, _cڋ.asRaw. -size -); - -59  - gVALUE_IS_NEGATIVE_INTEGER -: - -60  -vis -. -visNegiveIeg -( -_cڋ -. -asIeg -); - -62  - gVALUE_IS_POSITIVE_INTEGER -: - -63  -vis -. -visPosiveIeg -( -_cڋ -. -asIeg -); - -65  - gVALUE_IS_BOOLEAN -: - -66  -vis -. -visBoޗn -( -_cڋ -. -asIeg - != 0); - -69  -vis -. -visNu -(); - -73 - gme - < -tyme - - gT -> - -74 -T - -asIegl -() const; - -76 - gme - < -tyme - - gT -> - -77 -T - -asFlt -() const; - -79 cڡ * -asSg -() const; - -81 -bo - -asBoޗn -() const; - -83 -CiDa - * -asAay -() { - -84  -isAay -(? & - g_cڋ -. - gasCi - : 0; - -87 cڡ -CiDa - * -asAay -() const { - -88  - gcڡ_ -< - gVDa - *>( - gthis -)-> -asAay -(); - -91 -CiDa - * -asObje -() { - -92  -isObje -(? & - g_cڋ -. - gasCi - : 0; - -95 cڡ -CiDa - * -asObje -() const { - -96  - gcڡ_ -< - gVDa - *>( - gthis -)-> -asObje -(); - -99 -bo - -cyFrom -(cڡ -VDa - & -c -, -MemyPo - * -po -) { - -100  - gc -. -ty -()) { - -101  - gVALUE_IS_ARRAY -: - -102  -toAay -(). -cyFrom -( -c -. -_cڋ -. -asCi -, -po -); - -103  - gVALUE_IS_OBJECT -: - -104  -toObje -(). -cyFrom -( -c -. -_cڋ -. -asCi -, -po -); - -105  - gVALUE_IS_OWNED_STRING -: - -106  -tSg -( -RamSgAdr -( -c -. -_cڋ -. -asSg -), -po -); - -107  - gVALUE_IS_OWNED_RAW -: - -108  -tOwdRaw -( - -109 -rlized -( -c -. -_cڋ -. -asRaw -. -da -, src._cڋ.asRaw. -size -), -po -); - -111 -tTy -( -c -. -ty -()); - -112 - g_cڋ - = -c -. -_cڋ -; - -113  - gue -; - -117 -bo - -isAay -() const { - -118  ( - g_ags - & - gVALUE_IS_ARRAY -) != 0; - -121 -bo - -isBoޗn -() const { - -122  -ty -(= -VALUE_IS_BOOLEAN -; - -125 -bo - -isCi -() const { - -126  ( - g_ags - & - gCOLLECTION_MASK -) != 0; - -129 - gme - < -tyme - - gT -> - -130 -bo - -isIeg -() const { - -131  -ty -()) { - -132  - gVALUE_IS_POSITIVE_INTEGER -: - -133  -nStePosiveIeg -< -T ->( -_cڋ -. -asIeg -); - -135  - gVALUE_IS_NEGATIVE_INTEGER -: - -136  -nSteNegiveIeg -< -T ->( -_cڋ -. -asIeg -); - -139  -l -; - -143 -bo - -isFlt -() const { - -144  -ty -(= -VALUE_IS_FLOAT - ||y(= -VALUE_IS_POSITIVE_INTEGER - || - -145 -ty -(= -VALUE_IS_NEGATIVE_INTEGER -; - -148 -bo - -isSg -() const { - -149  -ty -(= -VALUE_IS_LINKED_STRING - ||y(= -VALUE_IS_OWNED_STRING -; - -152 -bo - -isObje -() const { - -153  ( - g_ags - & - gVALUE_IS_OBJECT -) != 0; - -156 -bo - -isNu -() const { - -157  -ty -(= -VALUE_IS_NULL -; - -160 -bo - -isEnod -() const { - -161  ! -isFlt -(); - -164  -move -( -size_t - -dex -) { - -165 i( -isAay -()) - -166 - g_cڋ -. - gasCi -. -moveEmt -( -dex -); - -169 - gme - < -tyme - - gTAddSg -> - -170  -move -( -TAddSg - -key -) { - -171 i( -isObje -()) - -172 - g_cڋ -. - gasCi -. -moveMemb -( -key -); - -175  -tBoޗn -( -bo - -vue -) { - -176 -tTy -( -VALUE_IS_BOOLEAN -); - -177 - g_cڋ -. - gasIeg - = -ic_ -< -UI ->( -vue -); - -180  -tFlt -( -Flt - -vue -) { - -181 -tTy -( -VALUE_IS_FLOAT -); - -182 - g_cڋ -. - gasFlt - = -vue -; - -185  -tLkedRaw -( -SlizedVue - -vue -) { - -186 i( - gvue -. -da -()) { - -187 -tTy -( -VALUE_IS_LINKED_RAW -); - -188 - g_cڋ -. - gasRaw -. - gda - = -vue -. -da -(); - -189 - g_cڋ -. - gasRaw -. - gsize - = -vue -. -size -(); - -191 -tTy -( -VALUE_IS_NULL -); - -195 - gme - < -tyme - - gT -> - -196 -bo - -tOwdRaw -( -SlizedVue -< -T -> -vue -, -MemyPo - * -po -) { - -197 cڡ * - gdup - = -po --> -veSg -( -adtSg -( -vue -. -da -(), vue. -size -())); - -198 i( - gdup -) { - -199 -tTy -( -VALUE_IS_OWNED_RAW -); - -200 - g_cڋ -. - gasRaw -. - gda - = -dup -; - -201 - g_cڋ -. - gasRaw -. - gsize - = -vue -. -size -(); - -202  - gue -; - -204 -tTy -( -VALUE_IS_NULL -); - -205  - gl -; - -209 - gme - < -tyme - - gT -> - -210 -tyme - - gab_if -< - gis_unsigd -< - gT ->:: -vue ->:: -ty - -tIeg -( -T - value) { - -211 -tUnsigdIeg -( -vue -); - -214 - gme - < -tyme - - gT -> - -215 -tyme - - gab_if -< - gis_sigd -< - gT ->:: -vue ->:: -ty - -tIeg -( -T - value) { - -216 -tSigdIeg -( -vue -); - -219 - gme - < -tyme - - gT -> - -220  -tSigdIeg -( -T - -vue -) { - -221 i( - gvue - >= 0) { - -222 -tPosiveIeg -( -ic_ -< -UI ->( -vue -)); - -224 -tNegiveIeg -(~ -ic_ -< -UI ->( -vue -) + 1); - -228  -tUnsigdIeg -( -UI - -vue -) { - -229 -tTy -( -VALUE_IS_POSITIVE_INTEGER -); - -230 - g_cڋ -. - gasIeg - = -ic_ -< -UI ->( -vue -); - -233  -tPosiveIeg -( -UI - -vue -) { - -234 -tTy -( -VALUE_IS_POSITIVE_INTEGER -); - -235 - g_cڋ -. - gasIeg - = -vue -; - -238  -tNegiveIeg -( -UI - -vue -) { - -239 -tTy -( -VALUE_IS_NEGATIVE_INTEGER -); - -240 - g_cڋ -. - gasIeg - = -vue -; - -243  -tNu -() { - -244 -tTy -( -VALUE_IS_NULL -); - -247  -tSgPor -(cڡ * -s -, -age_pics -:: -e_by_cy -) { - -248 -tTy -( -VALUE_IS_OWNED_STRING -); - -249 - g_cڋ -. - gasSg - = -s -; - -252  -tSgPor -(cڡ * -s -, -age_pics -:: -e_by_addss -) { - -253 -tTy -( -VALUE_IS_LINKED_STRING -); - -254 - g_cڋ -. - gasSg - = -s -; - -257 - gme - < -tyme - - gTAddSg -> - -258 -bo - -tSg -( -TAddSg - -vue -, -MemyPo - * -po -) { - -259  -tSg -( -vue -, -po -, -tyme - -TAddSg -:: -age_picy -()); - -262 - gme - < -tyme - - gTAddSg -> - -263 -le - -bo - -tSg -( -TAddSg - -vue -, -MemyPo - * -po -, - -264 -age_pics -:: -decide__ruime -) { - -265 i( -vue -. -isStic -()) - -266  -tSg -( -vue -, -po -, -age_pics -:: -e_by_addss -()); - -268  -tSg -( -vue -, -po -, -age_pics -:: -e_by_cy -()); - -271 - gme - < -tyme - - gTAddSg -> - -272 -le - -bo - -tSg -( -TAddSg - -vue -, -MemyPo - *, - -273 -age_pics -:: -e_by_addss -) { - -274 i( -vue -. -isNu -()) - -275 -tNu -(); - -277 -tSgPor -( -vue -. -da -(), -age_pics -:: -e_by_addss -()); - -278  - gue -; - -281 - gme - < -tyme - - gTAddSg -> - -282 -le - -bo - -tSg -( -TAddSg - -vue -, -MemyPo - * -po -, - -283 -age_pics -:: -e_by_cy -) { - -284 i( -vue -. -isNu -()) { - -285 -tNu -(); - -286  - gue -; - -288 cڡ * - gcy - = -po --> -veSg -( -vue -); - -289 i(! - gcy -) { - -290 -tNu -(); - -291  - gl -; - -293 -tSgPor -( -cy -, -age_pics -:: -e_by_cy -()); - -294  - gue -; - -297 - gCiDa - & -toAay -() { - -298 -tTy -( -VALUE_IS_ARRAY -); - -299 - g_cڋ -. - gasCi -. -r -(); - -300  - g_cڋ -. - gasCi -; - -303 - gCiDa - & -toObje -() { - -304 -tTy -( -VALUE_IS_OBJECT -); - -305 - g_cڋ -. - gasCi -. -r -(); - -306  - g_cڋ -. - gasCi -; - -309 -size_t - -memyUge -() const { - -310  -ty -()) { - -311  - gVALUE_IS_OWNED_STRING -: - -312  - -( -_cڋ -. -asSg -) + 1; - -313  - gVALUE_IS_OWNED_RAW -: - -314  -_cڋ -. -asRaw -. -size -; - -315  - gVALUE_IS_OBJECT -: - -316  -VALUE_IS_ARRAY -: - -317  -_cڋ -. -asCi -. -memyUge -(); - -323 -size_t - -ág -() const { - -324  -isCi -(? - g_cڋ -. - gasCi -. -ág -() : 0; - -327 -size_t - -size -() const { - -328  -isCi -(? - g_cڋ -. - gasCi -. -size -() : 0; - -331 -VDa - * -addEmt -( -MemyPo - * -po -) { - -332 i( -isNu -()) - -333 -toAay -(); - -334 i(! -isAay -()) - -336  - g_cڋ -. - gasCi -. -addEmt -( -po -); - -339 -VDa - * -gEmt -( -size_t - -dex -) const { - -340  -isAay -(? - g_cڋ -. - gasCi -. -gEmt -( -dex -) : 0; - -343 -VDa - * -gOrAddEmt -( -size_t - -dex -, -MemyPo - * -po -) { - -344 i( -isNu -()) - -345 -toAay -(); - -346 i(! -isAay -()) - -348  - g_cڋ -. - gasCi -. -gOrAddEmt -( -dex -, -po -); - -351 - gme - < -tyme - - gTAddSg -> - -352 -VDa - * -gMemb -( -TAddSg - -key -) const { - -353  -isObje -(? - g_cڋ -. - gasCi -. -gMemb -( -key -) : 0; - -356 - gme - < -tyme - - gTAddSg -> - -357 -VDa - * -gOrAddMemb -( -TAddSg - -key -, -MemyPo - * -po -) { - -358 i( -isNu -()) - -359 -toObje -(); - -360 i(! -isObje -()) - -362  - g_cڋ -. - gasCi -. -gOrAddMemb -( -key -, -po -); - -365  -movePors -( -rdiff_t - -rgDi -,diff_ -vDi -) { - -366 i( - g_ags - & - gVALUE_IS_OWNED -) - -367 - g_cڋ -. - gasSg - + -rgDi -; - -368 i( - g_ags - & - gCOLLECTION_MASK -) - -369 - g_cڋ -. - gasCi -. -movePors -( -rgDi -, -vDi -); - -372 -ut8_t - -ty -() const { - -373  - g_ags - & - gVALUE_MASK -; - -376 - give -: - -377  -tTy -( -ut8_t - -t -) { - -378 -_ags - & -KEY_IS_OWNED -; - -379 - g_ags - | -t -; - -385 #i -defed -( -__GNUC__ -) - -386 #i -__GNUC__ - >= 8 - -387 #agm -GCC - -dgnoic - -p - - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTVis -> - -13 -le - -tyme - - gTVis -:: -su_ty - -vAc -(cڡ -VDa - * -v -, - -14 -TVis - & -vis -) { - -15 i( - gv - != 0) - -16  -v --> -ac -( -vis -); - -18  - gvis -. -visNu -(); - -21 -le - cڡ -CiDa - * -vAsAay -(cڡ -VDa - * -v -) { - -22  - gv - !0 ? -v --> -asAay -() : 0; - -25 -le - cڡ -CiDa - * -vAsObje -(cڡ -VDa - * -v -) { - -26  - gv - !0 ? -v --> -asObje -() : 0; - -29 -le - -CiDa - * -vAsObje -( -VDa - * -v -) { - -30  - gv - !0 ? -v --> -asObje -() : 0; - -33 -le - -bo - -vCyFrom -( -VDa - * -d -, cڡ VD* -c -, - -34 -MemyPo - * -po -) { - -35 i(! - gd -) - -36  - gl -; - -37 i(! - gc -) { - -38 - gd --> -tNu -(); - -39  - gue -; - -41  - gd --> -cyFrom -(* -c -, -po -); - -44 -le -  -vCom -(cڡ -VDa - * -a -, cڡ VD* -b -); - -46 -le - -bo - -vIsAay -(cڡ -VDa - * -v -) { - -47  - gv - && v-> -isAay -(); - -50 -le - -bo - -vIsBoޗn -(cڡ -VDa - * -v -) { - -51  - gv - && v-> -isBoޗn -(); - -54 - gme - < -tyme - - gT -> - -55 -le - -bo - -vIsIeg -(cڡ -VDa - * -v -) { - -56  - gv - && v-> - gisIeg -< - gT ->(); - -59 -le - -bo - -vIsFlt -(cڡ -VDa - * -v -) { - -60  - gv - && v-> -isFlt -(); - -63 -le - -bo - -vIsSg -(cڡ -VDa - * -v -) { - -64  - gv - && v-> -isSg -(); - -67 -le - -bo - -vIsObje -(cڡ -VDa - * -v -) { - -68  - gv - && v-> -isObje -(); - -71 -le - -bo - -vIsNu -(cڡ -VDa - * -v -) { - -72  - gv - =0 || -v --> -isNu -(); - -75 -le - -bo - -vSBoޗn -( -VDa - * -v -, bo -vue -) { - -76 i(! - gv -) - -77  - gl -; - -78 - gv --> -tBoޗn -( -vue -); - -79  - gue -; - -82 -le - -bo - -vSFlt -( -VDa - * -v -, -Flt - -vue -) { - -83 i(! - gv -) - -84  - gl -; - -85 - gv --> -tFlt -( -vue -); - -86  - gue -; - -89 -le - -bo - -vSLkedRaw -( -VDa - * -v -, - -90 -SlizedVue - -vue -) { - -91 i(! - gv -) - -92  - gl -; - -93 - gv --> -tLkedRaw -( -vue -); - -94  - gue -; - -97 - gme - < -tyme - - gT -> - -98 -le - -bo - -vSOwdRaw -( -VDa - * -v -, -SlizedVue -< -T -> -vue -, - -99 -MemyPo - * -po -) { - -100  - gv - !0 && -v --> -tOwdRaw -( -vue -, -po -); - -103 -le -  -vSNu -( -VDa - * -v -) { - -104 i(! - gv -) - -106 - gv --> -tNu -(); - -109 - gme - < -tyme - - gTAddSg -> - -110 -le - -bo - -vSSg -( -VDa - * -v -, -TAddSg - -vue -, - -111 -MemyPo - * -po -) { - -112 i(! - gv -) - -113  - gl -; - -114  - gv --> -tSg -( -vue -, -po -); - -117 - gme - < -tyme - - gT -> - -118 -le - -bo - -vSIeg -( -VDa - * -v -, -T - -vue -) { - -119 -ARDUINOJSON_ASSERT_INTEGER_TYPE_IS_SUPPORTED -( -T -); - -120 i(! - gv -) - -121  - gl -; - -122 - gv --> -tIeg -( -vue -); - -123  - gue -; - -126 -le - -size_t - -vSize -(cڡ -VDa - * -v -) { - -127  - gv - !0 ? -v --> -size -() : 0; - -130 -le - -CiDa - * -vToAay -( -VDa - * -v -) { - -131 i(! - gv -) - -133  & - gv --> -toAay -(); - -136 -le - -CiDa - * -vToObje -( -VDa - * -v -) { - -137 i(! - gv -) - -139  & - gv --> -toObje -(); - -142 -le - -NO_INLINE - -VDa - * -vAddEmt -(VD* -v -, - -143 -MemyPo - * -po -) { - -144  - gv - !0 ? -v --> -addEmt -( -po -) : 0; - -147 -le - -NO_INLINE - -VDa - * -vGOrAddEmt -(VD* -v -, - -148 -size_t - -dex -, - -149 -MemyPo - * -po -) { - -150  - gv - !0 ? -v --> -gOrAddEmt -( -dex -, -po -) : 0; - -153 - gme - < -tyme - - gTCh -> - -154 -NO_INLINE - -VDa - * -vGOrAddMemb -(VD* -v -, -TCh - * -key -, - -155 -MemyPo - * -po -) { - -156  - gv - !0 ? -v --> -gOrAddMemb -( -adtSg -( -key -), -po -) : 0; - -159 - gme - < -tyme - - gTSg -> - -160 -NO_INLINE - -VDa - * -vGOrAddMemb -(VD* -v -, - -161 cڡ -TSg - & -key -, - -162 -MemyPo - * -po -) { - -163  - gv - !0 ? -v --> -gOrAddMemb -( -adtSg -( -key -), -po -) : 0; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14  - ~ - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 - gme - < -tyme - - gT -> - -19 -le - -T - - gVDa -:: -asIegl -() const { - -20  -ty -()) { - -21  -VALUE_IS_POSITIVE_INTEGER -: - -22  -VALUE_IS_BOOLEAN -: - -23  -cvtPosiveIeg -< -T ->( -_cڋ -. -asIeg -); - -24  - gVALUE_IS_NEGATIVE_INTEGER -: - -25  -cvtNegiveIeg -< -T ->( -_cڋ -. -asIeg -); - -26  - gVALUE_IS_LINKED_STRING -: - -27  -VALUE_IS_OWNED_STRING -: - -28  -rNumb -< -T ->( -_cڋ -. -asSg -); - -29  - gVALUE_IS_FLOAT -: - -30  -cvtFlt -< -T ->( -_cڋ -. -asFlt -); - -36 -le - -bo - - gVDa -:: -asBoޗn -() const { - -37  -ty -()) { - -38  -VALUE_IS_POSITIVE_INTEGER -: - -39  -VALUE_IS_BOOLEAN -: - -40  -VALUE_IS_NEGATIVE_INTEGER -: - -41  -_cڋ -. -asIeg - != 0; - -42  - gVALUE_IS_FLOAT -: - -43  -_cڋ -. -asFlt - != 0; - -44  - gVALUE_IS_NULL -: - -45  -l -; - -47  -ue -; - -52 - gme - < -tyme - - gT -> - -53 -le - -T - - gVDa -:: -asFlt -() const { - -54  -ty -()) { - -55  -VALUE_IS_POSITIVE_INTEGER -: - -56  -VALUE_IS_BOOLEAN -: - -57  -ic_ -< -T ->( -_cڋ -. -asIeg -); - -58  - gVALUE_IS_NEGATIVE_INTEGER -: - -59  - -ic_ -< -T ->( -_cڋ -. -asIeg -); - -60  - gVALUE_IS_LINKED_STRING -: - -61  -VALUE_IS_OWNED_STRING -: - -62  -rNumb -< -T ->( -_cڋ -. -asSg -); - -63  - gVALUE_IS_FLOAT -: - -64  -ic_ -< -T ->( -_cڋ -. -asFlt -); - -70 -le - cڡ * - gVDa -:: -asSg -() const { - -71  -ty -()) { - -72  -VALUE_IS_LINKED_STRING -: - -73  -VALUE_IS_OWNED_STRING -: - -74  -_cڋ -. -asSg -; - -80 - gme - < -tyme - - gTV -> - -81 -tyme - - gab_if -< - gIsVisab -< - gTV ->:: -vue -, - gbo ->:: -ty - -VRef -:: -t -( - -82 cڡ -TV - & -vue -) const { - -83 -VCڡRef - -v - = -vue -; - -84  -vCyFrom -( -_da -, -v -._da, -_po -); - -87 - gme - < -tyme - - gT -> - -88 -le - -tyme - - gab_if -< - gis_me -< - gT -, - gAayRef ->:: -vue -, AayRef>:: -ty - - -89 -VRef -:: -to -() const { - -90  -AayRef -( -_po -, -vToAay -( -_da -)); - -93 - gme - < -tyme - - gT -> - -94 -tyme - - gab_if -< - gis_me -< - gT -, - gObjeRef ->:: -vue -, ObjeRef>:: -ty - - -95 -VRef -:: -to -() const { - -96  -ObjeRef -( -_po -, -vToObje -( -_da -)); - -99 - gme - < -tyme - - gT -> - -100 -tyme - - gab_if -< - gis_me -< - gT -, - gVRef ->:: -vue -, VRef>:: -ty - - -101 -VRef -:: -to -() const { - -102 -vSNu -( -_da -); - -103  * - gthis -; - -106 -le - -VCڡRef - - gVCڡRef -:: -gEmt -( -size_t - -dex -) const { - -107  -AayCڡRef -( -_da - !0 ? _da-> -asAay -(: 0)[ -dex -]; - -110 -le - -VRef - - gVRef -:: -addEmt -() const { - -111  -VRef -( -_po -, -vAddEmt -( -_da -, _pool)); - -114 -le - -VRef - - gVRef -:: -gEmt -( -size_t - -dex -) const { - -115  -VRef -( -_po -, -_da - !0 ? _da-> -gEmt -( -dex -) : 0); - -118 -le - -VRef - - gVRef -:: -gOrAddEmt -( -size_t - -dex -) const { - -119  -VRef -( -_po -, -vGOrAddEmt -( -_da -, -dex -, _pool)); - -122 - gme - < -tyme - - gTCh -> - -123 -le - -VRef - - gVRef -:: -gMemb -( -TCh - * -key -) const { - -124  -VRef -( -_po -, -_da - !0 ? _da-> -gMemb -( -adtSg -( -key -)) : 0); - -127 - gme - < -tyme - - gTSg -> - -128 -le - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVRef ->:: -ty - - -129 -VRef -:: -gMemb -(cڡ -TSg - & -key -) const { - -130  -VRef -( -_po -, -_da - !0 ? _da-> -gMemb -( -adtSg -( -key -)) : 0); - -133 - gme - < -tyme - - gTCh -> - -134 -le - -VRef - - gVRef -:: -gOrAddMemb -( -TCh - * -key -) const { - -135  -VRef -( -_po -, -vGOrAddMemb -( -_da -, -key -, _pool)); - -138 - gme - < -tyme - - gTSg -> - -139 -le - -VRef - - gVRef -:: -gOrAddMemb -(cڡ -TSg - & -key -) const { - -140  -VRef -( -_po -, -vGOrAddMemb -( -_da -, -key -, _pool)); - -143 -le - -VCڡRef - - gݔ -|(VCڡRe - gedVue -, - -144 -VCڡRef - - gdeuVue -) { - -145  - gedVue - ?dVu: -deuVue -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - < -tyme - - gT1 -,ym - gT2 -> - -16 -ComResu - -com -(cڡ -T1 - & -lhs -, cڡ -T2 - & -rhs -); - -18 - gme - < -tyme - - gTV -> - -19  - sVOts - { - -21 - gme - < -tyme - - gT -> - -22 -nd - -tyme - - gab_if -:: -vue -, T>:: -ty - -ݔ -|( - -23 cڡ -TV - & -v -, cڡ - gT - & - gdeuVue -) { - -24 i( - gv -. -me - - gis -< - gT ->()) - -25  - gv -. -me - - gas -< - gT ->(); - -27  - gdeuVue -; - -32 - gme - < -tyme - - gT -> - -33 -nd - -tyme - - gab_if -< - gis_me -< - gT -, cڡ *>:: -vue -, T>:: -ty - -ݔ -|( - -34 cڡ -TV - & -v -, -T - - gdeuVue -) { - -35 cڡ * - gvue - = -v -. -me - -as -(); - -36  - gvue - ? vu: -deuVue -; - -40 - gme - < -tyme - - gT -> - -41 -nd - -bo - - gݔ -==( -T - * -lhs -, -TV - - grhs -) { - -42  -com -( -rhs -, -lhs -= -COMPARE_RESULT_EQUAL -; - -44 - gme - < -tyme - - gT -> - -45 -nd - -bo - - gݔ -==(cڡ -T - & -lhs -, -TV - - grhs -) { - -46  -com -( -rhs -, -lhs -= -COMPARE_RESULT_EQUAL -; - -50 - gme - < -tyme - - gT -> - -51 -nd - -bo - - gݔ -==( -TV - -lhs -, -T - * - grhs -) { - -52  -com -( -lhs -, -rhs -= -COMPARE_RESULT_EQUAL -; - -54 - gme - < -tyme - - gT -> - -55 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -==( - -56 -TV - -lhs -, cڡ - gT - & - grhs -) { - -57  -com -( -lhs -, -rhs -= -COMPARE_RESULT_EQUAL -; - -61 - gme - < -tyme - - gT -> - -62 -nd - -bo - - gݔ -!=( -T - * -lhs -, -TV - - grhs -) { - -63  -com -( -rhs -, -lhs -! -COMPARE_RESULT_EQUAL -; - -65 - gme - < -tyme - - gT -> - -66 -nd - -bo - - gݔ -!=(cڡ -T - & -lhs -, -TV - - grhs -) { - -67  -com -( -rhs -, -lhs -! -COMPARE_RESULT_EQUAL -; - -71 - gme - < -tyme - - gT -> - -72 -nd - -bo - - gݔ -!=( -TV - -lhs -, -T - * - grhs -) { - -73  -com -( -lhs -, -rhs -! -COMPARE_RESULT_EQUAL -; - -75 - gme - < -tyme - - gT -> - -76 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -!=( - -77 -TV - -lhs -, cڡ - gT - & - grhs -) { - -78  -com -( -lhs -, -rhs -! -COMPARE_RESULT_EQUAL -; - -82 - gme - < -tyme - - gT -> - -83 -nd - -bo - - gݔ -<( -T - * - glhs -, -TV - - grhs -) { - -84  -com -( -rhs -, -lhs -= -COMPARE_RESULT_GREATER -; - -86 - gme - < -tyme - - gT -> - -87 -nd - -bo - - gݔ -<(cڡ - gT - & - glhs -, -TV - - grhs -) { - -88  -com -( -rhs -, -lhs -= -COMPARE_RESULT_GREATER -; - -92 - gme - < -tyme - - gT -> - -93 -nd - -bo - - gݔ -<( -TV - - glhs -, -T - * - grhs -) { - -94  -com -( -lhs -, -rhs -= -COMPARE_RESULT_LESS -; - -96 - gme - < -tyme - - gT -> - -97 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -<( - -98 -TV - -lhs -, cڡ - gT - & - grhs -) { - -99  -com -( -lhs -, -rhs -= -COMPARE_RESULT_LESS -; - -103 - gme - < -tyme - - gT -> - -104 -nd - -bo - - gݔ -<=( -T - * -lhs -, -TV - - grhs -) { - -105  ( -com -( -rhs -, -lhs -& - gCOMPARE_RESULT_GREATER_OR_EQUAL -) != 0; - -107 - gme - < -tyme - - gT -> - -108 -nd - -bo - - gݔ -<=(cڡ -T - & -lhs -, -TV - - grhs -) { - -109  ( -com -( -rhs -, -lhs -& - gCOMPARE_RESULT_GREATER_OR_EQUAL -) != 0; - -113 - gme - < -tyme - - gT -> - -114 -nd - -bo - - gݔ -<=( -TV - -lhs -, -T - * - grhs -) { - -115  ( -com -( -lhs -, -rhs -& - gCOMPARE_RESULT_LESS_OR_EQUAL -) != 0; - -117 - gme - < -tyme - - gT -> - -118 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -<=( - -119 -TV - -lhs -, cڡ - gT - & - grhs -) { - -120  ( -com -( -lhs -, -rhs -& - gCOMPARE_RESULT_LESS_OR_EQUAL -) != 0; - -124 - gme - < -tyme - - gT -> - -125 -nd - -bo - - gݔ ->( -T - * - glhs -, -TV - - grhs -) { - -126  -com -( -rhs -, -lhs -= -COMPARE_RESULT_LESS -; - -128 - gme - < -tyme - - gT -> - -129 -nd - -bo - - gݔ ->(cڡ - gT - & - glhs -, -TV - - grhs -) { - -130  -com -( -rhs -, -lhs -= -COMPARE_RESULT_LESS -; - -134 - gme - < -tyme - - gT -> - -135 -nd - -bo - - gݔ ->( -TV - - glhs -, -T - * - grhs -) { - -136  -com -( -lhs -, -rhs -= -COMPARE_RESULT_GREATER -; - -138 - gme - < -tyme - - gT -> - -139 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ ->( - -140 -TV - -lhs -, cڡ - gT - & - grhs -) { - -141  -com -( -lhs -, -rhs -= -COMPARE_RESULT_GREATER -; - -145 - gme - < -tyme - - gT -> - -146 -nd - -bo - - gݔ ->=( -T - * -lhs -, -TV - - grhs -) { - -147  ( -com -( -rhs -, -lhs -& - gCOMPARE_RESULT_LESS_OR_EQUAL -) != 0; - -149 - gme - < -tyme - - gT -> - -150 -nd - -bo - - gݔ ->=(cڡ -T - & -lhs -, -TV - - grhs -) { - -151  ( -com -( -rhs -, -lhs -& - gCOMPARE_RESULT_LESS_OR_EQUAL -) != 0; - -155 - gme - < -tyme - - gT -> - -156 -nd - -bo - - gݔ ->=( -TV - -lhs -, -T - * - grhs -) { - -157  ( -com -( -lhs -, -rhs -& - gCOMPARE_RESULT_GREATER_OR_EQUAL -) != 0; - -159 - gme - < -tyme - - gT -> - -160 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ ->=( - -161 -TV - -lhs -, cڡ - gT - & - grhs -) { - -162  ( -com -( -lhs -, -rhs -& - gCOMPARE_RESULT_GREATER_OR_EQUAL -) != 0; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -17  - ~ - -18  - ~ - -20 -mea - - gARDUINOJSON_NAMESPACE - { - -23 -ass - - gAayRef -; - -24 -ass - - gObjeRef -; - -26 - gme - < - gtyme -,ypename> - -27 -ass - - gMembProxy -; - -30 - gme - < -tyme - - gTDa -> - -31 as - cVRefBa - { - -32 - gpublic -: - -45 -me - < -tyme - -T -> - -46 -FORCE_INLINE - - -47 -tyme - -ab_if -< -is_gl -< -T ->:: -vue - && ! -is_me -< -bo -, - gT ->::value, - -48 - gbo ->:: -ty - - -49 -is -() const { - -50  -vIsIeg -< -T ->( -_da -); - -55 - gme - < -tyme - - gT -> - -56 -FORCE_INLINE - -tyme - - gab_if -< - gis_tg_pot -< - gT ->:: -vue -, - gbo ->:: -ty - -is -() - -58  -vIsFlt -( -_da -); - -62 - gme - < -tyme - - gT -> - -63 -FORCE_INLINE - -tyme - - gab_if -< - gis_me -< - gT -, - gbo ->:: -vue -, bo>:: -ty - -is -() - -65  -vIsBoޗn -( -_da -); - -72 - gme - < -tyme - - gT -> - -73 -FORCE_INLINE - -tyme - - gab_if -< - gis_me -< - gT -, cڡ *>:: -vue - || - -74 -is_me -< -T -, *>:: -vue - || - -75 -IsWrbSg -< -T ->:: -vue -, - -76 - gbo ->:: -ty - - -77 -is -() const { - -78  -vIsSg -( -_da -); - -83 - gme - < -tyme - - gT -> - -84 -FORCE_INLINE - -tyme - - gab_if -< - -85 - gis_me -< -tyme - - gmove_cڡ -< - gT ->:: -ty -, - gAayRef ->:: -vue -, - gbo ->::type - -86 -is -() const { - -87  -vIsAay -( -_da -); - -92 - gme - < -tyme - - gT -> - -93 -FORCE_INLINE - -tyme - - gab_if -< - -94 - gis_me -< -tyme - - gmove_cڡ -< - gT ->:: -ty -, - gObjeRef ->:: -vue -, - gbo ->::type - -95 -is -() const { - -96  -vIsObje -( -_da -); - -98 #i -ARDUINOJSON_HAS_NULLPTR - - -101 - gme - < -tyme - - gT -> - -102 -FORCE_INLINE - - -103 -tyme - - gab_if -< - gis_me -< - gT -, -dety -( -nuαr -)>:: -vue -, - gbo ->:: -ty - - -104 -is -() const { - -105  -vIsNu -( -_da -); - -109 - gme - < -tyme - - gT -> - -110 -FORCE_INLINE - -tyme - - gab_if -< - gis_um -< - gT ->:: -vue -, - gbo ->:: -ty - -is -() const { - -111  -vIsIeg -<>( -_da -); - -114 -FORCE_INLINE - -bo - -isNu -() const { - -115  -vIsNu -( -_da -); - -118 -FORCE_INLINE - -bo - -isUndefed -() const { - -119  ! - g_da -; - -122 -FORCE_INLINE - -size_t - -memyUge -() const { - -123  - g_da - ? _da-> -memyUge -() : 0; - -126 -FORCE_INLINE - -size_t - -ág -() const { - -127  - g_da - ? _da-> -ág -() : 0; - -130 -size_t - -size -() const { - -131  -vSize -( -_da -); - -134 - geed -: - -135 -VRefBa -( -TDa - * -da -: -_da -(data) {} - -136 -TDa - * -_da -; - -146 -ass - - gVRef - : -public - -VRefBa -< -VDa ->, - -147 -public - - gVOts -< - gVRef ->, - -148 -public - - gVShtcuts -< - gVRef ->, - -149 -public - - gVisab - { - -150  - gVRefBa -< - tVDa -> - tba_ty -; - -151 -nd - -ass - - gVCڡRef -; - -153 - gpublic -: - -155 -FORCE_INLINE - -VRef -( -MemyPo - * -po -, -VDa - * -da -) - -156 : -ba_ty -( -da -), -_po -( -po -) {} - -159 -FORCE_INLINE - -VRef -(: -ba_ty -(0), -_po -(0) {} - -161 -FORCE_INLINE -  -r -() const { - -162  -vSNu -( -_da -); - -166 - gme - < -tyme - - gT -> - -167 -FORCE_INLINE - -bo - -t -( - -168 -T - -vue -, -tyme - -ab_if -< -is_me -::vue>:: -ty - * = 0) const { - -169  -vSBoޗn -( -_da -, -vue -); - -174 - gme - < -tyme - - gT -> - -175 -FORCE_INLINE - -bo - -t -( - -176 -T - -vue -, - -177 -tyme - -ab_if -< -is_tg_pot -< -T ->:: -vue ->:: -ty - * = 0) const { - -178  -vSFlt -( -_da -, -ic_ -< -Flt ->( -vue -)); - -189 - gme - < -tyme - - gT -> - -190 -FORCE_INLINE - -bo - -t -( - -191 -T - -vue -, -tyme - -ab_if -< -is_gl -::value && - -192 ! -is_me -< -bo -, -T ->:: -vue ->:: -ty - * = 0) const { - -193  -vSIeg -< -T ->( -_da -, -vue -); - -197 -FORCE_INLINE - -bo - -t -( -SlizedVue - -vue -) const { - -198  -vSLkedRaw -( -_da -, -vue -); - -204 - gme - < -tyme - - gT -> - -205 -FORCE_INLINE - -bo - -t -( - -206 -SlizedVue -< -T -> -vue -, - -207 -tyme - -ab_if -:: -vue ->:: -ty - * = 0) const { - -208  -vSOwdRaw -( -_da -, -vue -, -_po -); - -213 - gme - < -tyme - - gT -> - -214 -FORCE_INLINE - -bo - -t -( - -215 cڡ -T - & -vue -, - -216 -tyme - -ab_if -< -IsSg -< -T ->:: -vue ->:: -ty - * = 0) const { - -217  -vSSg -( -_da -, -adtSg -( -vue -), -_po -); - -222 - gme - < -tyme - - gT -> - -223 -FORCE_INLINE - -bo - -t -( - -224 -T - * -vue -, -tyme - -ab_if -< -IsSg -::vue>:: -ty - * = 0) const { - -225  -vSSg -( -_da -, -adtSg -( -vue -), -_po -); - -235 - gme - < -tyme - - gTV -> - -236 -tyme - - gab_if -< - gIsVisab -< - gTV ->:: -vue -, - gbo ->:: -ty - -t -( - -237 cڡ -TV - & -vue -) const; - -240 - gme - < -tyme - - gT -> - -241 -FORCE_INLINE - -bo - -t -( - -242 -T - -vue -, -tyme - -ab_if -< -is_um -::vue>:: -ty - * = 0) const { - -243  -vSIeg -( -_da -, -ic_ -< -Ieg ->( -vue -)); - -246 #i -ARDUINOJSON_HAS_NULLPTR - - -248 -FORCE_INLINE - -bo - -t -( -dety -( -nuαr -)) const { - -249 -vSNu -( -_da -); - -250  - gue -; - -254 - gme - < -tyme - - gT -> - -255 -FORCE_INLINE - -tyme - - gVAs -< - gT ->:: -ty - -as -() const { - -256  -vAs -< -tyme - -VAs -< -T ->:: -ty ->( -_da -, - g_po -); - -259 - gme - < -tyme - - gT -> - -260 -FORCE_INLINE - -ݔ - -T -() const { - -261  - gvAs -< - gT ->( - g_da -, - g_po -); - -264 - gme - < -tyme - - gTVis -> - -265 -tyme - - gTVis -:: -su_ty - -ac -( -TVis - & -vis -) const { - -266  -vAc -( -_da -, -vis -); - -272 - gme - < -tyme - - gT -> - -273 -tyme - - gab_if -< - gis_me -< - gT -, - gAayRef ->:: -vue -, AayRef>:: -ty - -to -() const; - -276 - gme - < -tyme - - gT -> - -277 -tyme - - gab_if -< - gis_me -< - gT -, - gObjeRef ->:: -vue -, ObjeRef>:: -ty - -to -() const; - -280 - gme - < -tyme - - gT -> - -281 -tyme - - gab_if -< - gis_me -< - gT -, - gVRef ->:: -vue -, VRef>:: -ty - -to -() - -284 -VRef - -addEmt -() const; - -286 -FORCE_INLINE - -VRef - -gEmt -( -size_t -) const; - -288 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t -) const; - -292 - gme - < -tyme - - gTCh -> - -293 -FORCE_INLINE - -VRef - -gMemb -( -TCh - *) const; - -297 - gme - < -tyme - - gTSg -> - -298 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVRef ->:: -ty - - -299 -gMemb -(cڡ -TSg - &) const; - -304 - gme - < -tyme - - gTCh -> - -305 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh - *) const; - -309 - gme - < -tyme - - gTSg -> - -310 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg - &) const; - -312 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -313 i( - g_da -) - -314 - g_da --> -move -( -dex -); - -319 - gme - < -tyme - - gTCh -> - -320 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue ->:: -ty - -move -( - -321 -TCh - * -key -) const { - -322 i( -_da -) - -323 -_da --> -move -( -adtSg -( -key -)); - -327 - gme - < -tyme - - gTSg -> - -328 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -329 cڡ -TSg - & -key -) const { - -330 i( -_da -) - -331 -_da --> -move -( -adtSg -( -key -)); - -334 - give -: - -335 -MemyPo - * -_po -; - -338 -ass - - gVCڡRef - : -public - -VRefBa -, - -339 -public - - gVOts -< - gVCڡRef ->, - -340 -public - - gVShtcuts -< - gVCڡRef ->, - -341 -public - - gVisab - { - -342  - gVRefBa - - tba_ty -; - -343 -nd - -ass - - gVRef -; - -345 - gpublic -: - -346 -VCڡRef -(: -ba_ty -(0) {} - -347 -VCڡRef -(cڡ -VDa - * -da -: -ba_ty -(data) {} - -348 -VCڡRef -( -VRef - -v -: -ba_ty -(v. -_da -) {} - -350 -me - < -tyme - -TVis -> - -351 -tyme - -TVis -:: -su_ty - -ac -(TVis & -vis -) const { - -352  -vAc -( -_da -, -vis -); - -355 - gme - < -tyme - - gT -> - -356 -FORCE_INLINE - -tyme - - gVCڡAs -< - gT ->:: -ty - -as -() const { - -357  -vAs -< -tyme - -VCڡAs -< -T ->:: -ty ->( -_da -); - -360 - gme - < -tyme - - gT -> - -361 -FORCE_INLINE - -ݔ - -T -() const { - -362  - gvAs -< - gT ->( - g_da -); - -365 -FORCE_INLINE - -VCڡRef - -gEmt -( -size_t -) const; - -367 -FORCE_INLINE - -VCڡRef - - gݔ -[]( -size_t - - gdex -) const { - -368  -gEmt -( -dex -); - -373 - gme - < -tyme - - gTSg -> - -374 -FORCE_INLINE - -VCڡRef - -gMemb -(cڡ -TSg - & -key -) const { - -375  -VCڡRef -( - -376 -objeGMemb -( -vAsObje -( -_da -), -adtSg -( -key -))); - -382 - gme - < -tyme - - gTCh -> - -383 -FORCE_INLINE - -VCڡRef - -gMemb -( -TCh - * -key -) const { - -384 cڡ -CiDa - * - gobj - = -vAsObje -( -_da -); - -385  -VCڡRef -( -obj - ? obj-> -gMemb -( -adtSg -( -key -)) : 0); - -390 - gme - < -tyme - - gTSg -> - -391 -FORCE_INLINE - - -392 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -393 -ݔ -[](cڡ -TSg - & -key -) const { - -394  -gMemb -( -key -); - -400 - gme - < -tyme - - gTCh -> - -401 -FORCE_INLINE - - -402 -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue -, - gVCڡRef ->:: -ty - - -403 -ݔ -[]( -TCh - * -key -) const { - -404  -gMemb -( -key -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantShortcuts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTV -> - -13 -ass - - gVShtcuts - : -public - -ObjeShtcuts -< -TV ->, - -14 -public - - gAayShtcuts -< - gTV -> { - -15 - gpublic -: - -16 -usg - -AayShtcuts -< -TV ->:: -NeedAay -; - -17 -usg - - gAayShtcuts -< - gTV ->:: -NeedObje -; - -18 -usg - - gAayShtcuts -< - gTV ->:: -ݔ -[]; - -19 -usg - - gObjeShtcuts -< - gTV ->:: -NeedAay -; - -20 -usg - - gObjeShtcuts -< - gTV ->:: -NeedObje -; - -21 -usg - - gObjeShtcuts -< - gTV ->:: -ݔ -[]; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15  - gcdiڮ -<(*<2, - tt8_t -, - tt16_t ->:: - tty - - tVSlDiff -; - -17 as - cVSl - { - -21 -VCڋ - - g_cڋ -; - -22 -ut8_t - - g_ags -; - -23 -VSlDiff - - g_xt -; - -24 cڡ * - g_key -; - -26 - gpublic -: - -33 -VDa -* -da -() { - -34  -t_ -< -VDa -*>(& -_cڋ -); - -37 cڡ -VDa -* -da -() const { - -38  - gt_ -(& - g_cڋ -); - -41 -VSl -* -xt -() { - -42  - g_xt - ? - gthis - + _next : 0; - -45 cڡ -VSl -* -xt -() const { - -46  - gcڡ_ -< - gVSl -*>( - gthis -)-> -xt -(); - -49 -VSl -* -xt -( -size_t - -di -) { - -50 -VSl -* - g - = -this -; - -51  - gdi ---) { - -52 i(! - g --> - g_xt -) - -54 - g - + - --> -_xt -; - -56  - g -; - -59 cڡ -VSl -* -xt -( -size_t - -di -) const { - -60  - gcڡ_ -< - gVSl -*>( - gthis -)-> -xt -( -di -); - -63  -tNext -( -VSl -* - -) { - -64 - g_xt - = -VSlDiff -( - - ? sl - -this - : 0); - -67  -tNextNNu -( -VSl -* - -) { - -68 -ARDUINOJSON_ASSERT -( - - != 0); - -69 - g_xt - = -VSlDiff -( - - - -this -); - -72  -tKey -(cڡ * -k -, -age_pics -:: -e_by_cy -) { - -73 -ARDUINOJSON_ASSERT -( -k - ! -NULL -); - -74 - g_ags - | -KEY_IS_OWNED -; - -75 - g_key - = -k -; - -78  -tKey -(cڡ * -k -, -age_pics -:: -e_by_addss -) { - -79 -ARDUINOJSON_ASSERT -( -k - ! -NULL -); - -80 - g_ags - & -VALUE_MASK -; - -81 - g_key - = -k -; - -84 cڡ * -key -() const { - -85  - g_key -; - -88 -bo - -ownsKey -() const { - -89  ( - g_ags - & - gKEY_IS_OWNED -) != 0; - -92  -r -() { - -93 - g_xt - = 0; - -94 - g_ags - = 0; - -95 - g_key - = 0; - -98  -movePors -( -rdiff_t - -rgDi -,diff_ -vDi -) { - -99 i( - g_ags - & - gKEY_IS_OWNED -) - -100 - g_key - + -rgDi -; - -101 i( - g_ags - & - gVALUE_IS_OWNED -) - -102 - g_cڋ -. - gasSg - + -rgDi -; - -103 i( - g_ags - & - gCOLLECTION_MASK -) - -104 - g_cڋ -. - gasCi -. -movePors -( -rgDi -, -vDi -); - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -10 -ass - - gAayRef -; - -11 -ass - - gObjeRef -; - -12 -ass - - gVRef -; - -16 - gme - < -tyme - - gT -> - -17  - sVTo - {}; - -19 - gme - <> - -20  - gVTo -< - gAayRef -> { - -21  -AayRef - - tty -; - -23 - gme - <> - -24  - gVTo -< - gObjeRef -> { - -25  -ObjeRef - - tty -; - -27 - gme - <> - -28  - gVTo -< - gVRef -> { - -29  -VRef - - tty -; - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp - -7 #ifde -__GNUC__ - - -9  - #ARDUINOJSON_PRAGMA -( -x - - `_Pgma -(#x) - - ) - -11  - #ARDUINOJSON_COMPILE_ERROR -( -msg - - `ARDUINOJSON_PRAGMA -( -GCC - -r - msg) - - ) - -13  - #ARDUINOJSON_STRINGIFY -( -S -#S - - ) - -15  - #ARDUINOJSON_DEPRECATION_ERROR -( -X -, -Y -) \ - -16 - `ARDUINOJSON_COMPILE_ERROR -( - `ARDUINOJSON_STRINGIFY -( -X - -is - -a - -Y - -om - -ArduoJs - 5. -Pa - -e - -duojs -. -g -/ -upgde - -to - -ˬn - -how -upgd -your - -ogm -ArduoJs -vsi - 6)) - - ) - -18  - #SticJsBufr - - `ARDUINOJSON_DEPRECATION_ERROR -( -SticJsBufr -, -ass -) - - ) - -19  - #DymicJsBufr - - `ARDUINOJSON_DEPRECATION_ERROR -( -DymicJsBufr -, -ass -) - - ) - -20  - #JsBufr - - `ARDUINOJSON_DEPRECATION_ERROR -( -JsBufr -, -ass -) - - ) - -21  - #RawJs - - `ARDUINOJSON_DEPRECATION_ERROR -( -RawJs -, -funi -) - - ) - - @.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp - -5 #agm - - - -7  - #ARDUINOJSON_VERSION - "6.17.0" - - ) - -8  - #ARDUINOJSON_VERSION_MAJOR - 6 - - ) - -9  - #ARDUINOJSON_VERSION_MINOR - 17 - - ) - -10  - #ARDUINOJSON_VERSION_REVISION - 0 - - ) - - @.pio/libdeps/esp8266/AsyncMqttClient/examples/FullyFeaturedSSL/src/main.cpp - -6  - ~ - -7  - ~ - -8  - ~ - -9  - ~ - -11  - #WIFI_SSID - "My_Wi-Fi" - - ) - -12  - #WIFI_PASSWORD - "my-awesome-sswd" - - ) - -14  - #MQTT_HOST - - `IPAddss -(192, 168, 1, 10) - - ) - -16 #i -ASYNC_TCP_SSL_ENABLED - - -17  - #MQTT_SECURE - -ue - - - ) - -18  - #MQTT_SERVER_FINGERPRINT - {0x7e, 0x36, 0x22, 0x01, 0xf9, 0x7e, 0x99, 0x2f, 0xc5, 0xdb, 0x3d, 0xbe, 0xac, 0x48, 0x67, 0x5b, 0x5d, 0x47, 0x94, 0xd2} - - ) - -19  - #MQTT_PORT - 8883 - - ) - -21  - #MQTT_PORT - 1883 - - ) - -24 -AsyncMqCl - - gmqCl -; - -25 -Tick - - gmqRecTim -; - -27 -WiFiEvtHdr - - gwifiCHdr -; - -28 -WiFiEvtHdr - - gwifiDiscHdr -; - -29 -Tick - - gwifiRecTim -; - -31  - $cToWifi -() { - -32 -Sl -. - `n -("Connectingo Wi-Fi..."); - -33 -WiFi -. - `beg -( -WIFI_SSID -, -WIFI_PASSWORD -); - -34 - } -} - -36  - $cToMq -() { - -37 -Sl -. - `n -("Connectingo MQTT..."); - -38 -mqCl -. - `c -(); - -39 - } -} - -41  - $WifiC -(cڡ -WiFiEvtStiModeGIP -& -evt -) { - -42 -Sl -. - `n -("Connectedo Wi-Fi."); - -43 - `cToMq -(); - -44 - } -} - -46  - $WifiDisc -(cڡ -WiFiEvtStiModeDisced -& -evt -) { - -47 -Sl -. - `n -("Disconnected from Wi-Fi."); - -48 -mqRecTim -. - `dach -(); - -49 -wifiRecTim -. - ` -(2, -cToWifi -); - -50 - } -} - -52  - $MqC -( -bo - -ssiP -) { - -53 -Sl -. - `n -("Connectedo MQTT."); - -54 -Sl -. - `t -("Sessionresent: "); - -55 -Sl -. - `n -( -ssiP -); - -56 -ut16_t - -ckIdSub - = -mqCl -. - `subsibe -("test/lol", 2); - -57 -Sl -. - `t -("Subscribingt QoS 2,acketId: "); - -58 -Sl -. - `n -( -ckIdSub -); - -59 -mqCl -. - `publish -("/l", 0, -ue -, "test 1"); - -60 -Sl -. - `n -("Publishingt QoS 0"); - -61 -ut16_t - -ckIdPub1 - = -mqCl -. - `publish -("/l", 1, -ue -, "test 2"); - -62 -Sl -. - `t -("Publishingt QoS 1,acketId: "); - -63 -Sl -. - `n -( -ckIdPub1 -); - -64 -ut16_t - -ckIdPub2 - = -mqCl -. - `publish -("/l", 2, -ue -, "test 3"); - -65 -Sl -. - `t -("Publishingt QoS 2,acketId: "); - -66 -Sl -. - `n -( -ckIdPub2 -); - -67 - } -} - -69  - $MqDisc -( -AsyncMqClDiscRs - -as -) { - -70 -Sl -. - `n -("Disconnected from MQTT."); - -72 i( -as - = -AsyncMqClDiscRs -:: -TLS_BAD_FINGERPRINT -) { - -73 -Sl -. - `n -("Bad server fingerprint."); - -76 i( -WiFi -. - `isCed -()) { - -77 -mqRecTim -. - ` -(2, -cToMq -); - -79 - } -} - -81  - $MqSubsibe -( -ut16_t - -ckId -, -ut8_t - -qos -) { - -82 -Sl -. - `n -("Subscribecknowledged."); - -83 -Sl -. - `t -("acketId: "); - -84 -Sl -. - `n -( -ckId -); - -85 -Sl -. - `t -(" qos: "); - -86 -Sl -. - `n -( -qos -); - -87 - } -} - -89  - $MqUnsubsibe -( -ut16_t - -ckId -) { - -90 -Sl -. - `n -("Unsubscribecknowledged."); - -91 -Sl -. - `t -("acketId: "); - -92 -Sl -. - `n -( -ckId -); - -93 - } -} - -95  - $MqMesge -(* -tic -, * -yld -, -AsyncMqClMesgePrݔts - -ݔts -, -size_t - -n -, size_ -dex -, size_ -tٮ -) { - -96 -Sl -. - `n -("Publisheceived."); - -97 -Sl -. - `t -("opic: "); - -98 -Sl -. - `n -( -tic -); - -99 -Sl -. - `t -(" qos: "); - -100 -Sl -. - `n -( -ݔts -. -qos -); - -101 -Sl -. - `t -(" dup: "); - -102 -Sl -. - `n -( -ݔts -. -dup -); - -103 -Sl -. - `t -("etain: "); - -104 -Sl -. - `n -( -ݔts -. - -); - -105 -Sl -. - `t -("en: "); - -106 -Sl -. - `n -( -n -); - -107 -Sl -. - `t -(" index: "); - -108 -Sl -. - `n -( -dex -); - -109 -Sl -. - `t -("otal: "); - -110 -Sl -. - `n -( -tٮ -); - -111 - } -} - -113  - $MqPublish -( -ut16_t - -ckId -) { - -114 -Sl -. - `n -("Publishcknowledged."); - -115 -Sl -. - `t -("acketId: "); - -116 -Sl -. - `n -( -ckId -); - -117 - } -} - -119  - $tup -() { - -120 -Sl -. - `beg -(115200); - -121 -Sl -. - `n -(); - -122 -Sl -. - `n -(); - -124 -wifiCHdr - = -WiFi -. - `StiModeGIP -( -WifiC -); - -125 -wifiDiscHdr - = -WiFi -. - `StiModeDisced -( -WifiDisc -); - -127 -mqCl -. - `C -( -MqC -); - -128 -mqCl -. - `Disc -( -MqDisc -); - -129 -mqCl -. - `Subsibe -( -MqSubsibe -); - -130 -mqCl -. - `Unsubsibe -( -MqUnsubsibe -); - -131 -mqCl -. - `Mesge -( -MqMesge -); - -132 -mqCl -. - `Publish -( -MqPublish -); - -133 -mqCl -. - `tSv -( -MQTT_HOST -, -MQTT_PORT -); - -134 #i -ASYNC_TCP_SSL_ENABLED - - -135 -mqCl -. - `tSecu -( -MQTT_SECURE -); - -136 i( -MQTT_SECURE -) { - -137 -mqCl -. - `addSvFgt -((cڡ -ut8_t -[]) -MQTT_SERVER_FINGERPRINT -); - -141 - `cToWifi -(); - -142 - } -} - -144  - $lo -() { - -145 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.cpp - -1  - ~"AsyncMqCl.h -" - -3 - gAsyncMqCl -:: - $AsyncMqCl -() - -4 : - `_ced -( -l -) - -5 , - `_cPackNEnoughS -( -l -) - -6 , - `_discOnPl -( -l -) - -7 , - `_sBadFgt -( -l -) - -8 , - `_ϡClAivy -(0) - -9 , - `_ϡSvAivy -(0) - -10 , - `_ϡPgRequeTime -(0) - -11 , - `_ho -( -nuαr -) - -12 , - $_uIp -( -l -) - -13 #i -ASYNC_TCP_SSL_ENABLED - - -14 , - $_cu -( -l -) - -16 , - `_pt -(0) - -17 , - `_kpAlive -(15) - -18 , - `_nSessi -( -ue -) - -19 , - `_Id -( -nuαr -) - -20 , - `_uame -( -nuαr -) - -21 , - `_sswd -( -nuαr -) - -22 , - `_wlTic -( -nuαr -) - -23 , - `_wlPayld -( -nuαr -) - -24 , - `_wlPayldLgth -(0) - -25 , - `_wlQos -(0) - -26 , - `_wlRa -( -l -) - -27 , -_rsgInfmi - { . -bufrS - = -AsyncMqClIls -:: -BufrS -:: -NONE - - } -} - -28 , -_cutPdPack -( -nuαr -) - -29 , -_magLgthBufrPosi -(0) - -30 , - $_xtPackId -(1) { - -31 -_ -. - `C -([](* -obj -, -AsyncCl -* -c -{ ( -ic_ -< -AsyncMqCl -*>(obj))-> - `_C -(c); }, -this -); - -32 -_ -. - `Disc -([](* -obj -, -AsyncCl -* -c -{ ( -ic_ -< -AsyncMqCl -*>(obj))-> - `_Disc -(c); }, -this -); - -33 -_ -. - `E -([](* -obj -, -AsyncCl -* -c -, -t8_t - -r -{ ( -ic_ -< -AsyncMqCl -*>(obj))-> - `_E -(c,); }, -this -); - -34 -_ -. - `Timeout -([](* -obj -, -AsyncCl -* -c -, -ut32_t - -time -{ ( -ic_ -< -AsyncMqCl -*>(obj))-> - `_Timeout -(c,ime); }, -this -); - -35 -_ -. - `Ack -([](* -obj -, -AsyncCl -* -c -, -size_t - -n -, -ut32_t - -time -{ ( -ic_ -< -AsyncMqCl -*>(obj))-> - `_Ack -(c,,ime); }, -this -); - -36 -_ -. - `Da -([](* -obj -, -AsyncCl -* -c -, * -da -, -size_t - -n -{ ( -ic_ -< -AsyncMqCl -*>(obj))-> - `_Da -(c, stic_<*>(da),); }, -this -); - -37 -_ -. - `Pl -([](* -obj -, -AsyncCl -* -c -{ ( -ic_ -< -AsyncMqCl -*>(obj))-> - `_Pl -(c); }, -this -); - -39 #ifde -ESP32 - - -40 - `rtf -( -_gedClId -, "e32-%06x", -ESP -. - `gEfuMac -()); - -41 -_xSemhe - = - `xSemheCeMux -(); - -42 #i - `defed -( -ESP8266 -) - -43 - `rtf -( -_gedClId -, "e8266-%06x", -ESP -. - `gChId -()); - -45 -_Id - = -_gedClId -; - -47 - `tMaxTicLgth -(128); - -48 - } -} - -50 - gAsyncMqCl -::~ - $AsyncMqCl -() { - -51 -de - -_cutPdPack -; - -52 -de -[] -_rsgInfmi -. -ticBufr -; - -53 #ifde -ESP32 - - -54 - `vSemheDe -( -_xSemhe -); - -56 - } -} - -58 - gAsyncMqCl -& AsyncMqCl:: - $tKpAlive -( -ut16_t - -kpAlive -) { - -59 -_kpAlive - = -kpAlive -; - -60  * -this -; - -61 - } -} - -63 - gAsyncMqCl -& AsyncMqCl:: - $tClId -(cڡ * -Id -) { - -64 -_Id - = -Id -; - -65  * -this -; - -66 - } -} - -68 - gAsyncMqCl -& AsyncMqCl:: - $tC˪Sessi -( -bo - -nSessi -) { - -69 -_nSessi - = -nSessi -; - -70  * -this -; - -71 - } -} - -73 - gAsyncMqCl -& AsyncMqCl:: - $tMaxTicLgth -( -ut16_t - -maxTicLgth -) { - -74 -_rsgInfmi -. -maxTicLgth - = maxTopicLength; - -75 -de -[] -_rsgInfmi -. -ticBufr -; - -76 -_rsgInfmi -. -ticBufr - = -w - [ -maxTicLgth - + 1]; - -77  * -this -; - -78 - } -} - -80 - gAsyncMqCl -& AsyncMqCl:: - $tCdtls -(cڡ * -uame -, cڡ * -sswd -) { - -81 -_uame - = -uame -; - -82 -_sswd - = -sswd -; - -83  * -this -; - -84 - } -} - -86 - gAsyncMqCl -& AsyncMqCl:: - $tWl -(cڡ * -tic -, -ut8_t - -qos -, -bo - - -, cڡ * -yld -, -size_t - -ngth -) { - -87 -_wlTic - = -tic -; - -88 -_wlQos - = -qos -; - -89 -_wlRa - = - -; - -90 -_wlPayld - = -yld -; - -91 -_wlPayldLgth - = -ngth -; - -92  * -this -; - -93 - } -} - -95 - gAsyncMqCl -& AsyncMqCl:: - $tSv -( -IPAddss - - -, -ut16_t - -pt -) { - -96 -_uIp - = -ue -; - -97 -_ - = - -; - -98 -_pt - = -pt -; - -99  * -this -; - -100 - } -} - -102 - gAsyncMqCl -& AsyncMqCl:: - $tSv -(cڡ * -ho -, -ut16_t - -pt -) { - -103 -_uIp - = -l -; - -104 -_ho - = -ho -; - -105 -_pt - = -pt -; - -106  * -this -; - -107 - } -} - -109 #i -ASYNC_TCP_SSL_ENABLED - - -110 - gAsyncMqCl -& AsyncMqCl:: - $tSecu -( -bo - -cu -) { - -111 -_cu - = -cu -; - -112  * -this -; - -113 - } -} - -115 - gAsyncMqCl -& AsyncMqCl:: - $addSvFgt -(cڡ -ut8_t -* -fgt -) { - -116 -d -:: -y -< -ut8_t -, -SHA1_SIZE -> -wFgt -; - -117 - `memy -( -wFgt -. - `da -(), -fgt -, -SHA1_SIZE -); - -118 -_cuSvFgts -. - `push_back -( -wFgt -); - -119  * -this -; - -120 - } -} - -123 - gAsyncMqCl -& AsyncMqCl:: - $C -( -AsyncMqClIls -:: -OnCUrClback - -back -) { - -124 -_CUrClbacks -. - `push_back -( -back -); - -125  * -this -; - -126 - } -} - -128 - gAsyncMqCl -& AsyncMqCl:: - $Disc -( -AsyncMqClIls -:: -OnDiscUrClback - -back -) { - -129 -_DiscUrClbacks -. - `push_back -( -back -); - -130  * -this -; - -131 - } -} - -133 - gAsyncMqCl -& AsyncMqCl:: - $Subsibe -( -AsyncMqClIls -:: -OnSubsibeUrClback - -back -) { - -134 -_SubsibeUrClbacks -. - `push_back -( -back -); - -135  * -this -; - -136 - } -} - -138 - gAsyncMqCl -& AsyncMqCl:: - $Unsubsibe -( -AsyncMqClIls -:: -OnUnsubsibeUrClback - -back -) { - -139 -_UnsubsibeUrClbacks -. - `push_back -( -back -); - -140  * -this -; - -141 - } -} - -143 - gAsyncMqCl -& AsyncMqCl:: - $Mesge -( -AsyncMqClIls -:: -OnMesgeUrClback - -back -) { - -144 -_MesgeUrClbacks -. - `push_back -( -back -); - -145  * -this -; - -146 - } -} - -148 - gAsyncMqCl -& AsyncMqCl:: - $Publish -( -AsyncMqClIls -:: -OnPublishUrClback - -back -) { - -149 -_PublishUrClbacks -. - `push_back -( -back -); - -150  * -this -; - -151 - } -} - -153  - gAsyncMqCl -:: - $_CutPdPack -() { - -154 -de - -_cutPdPack -; - -155 -_cutPdPack - = -nuαr -; - -156 - } -} - -158  - gAsyncMqCl -:: - $_r -() { - -159 -_ϡPgRequeTime - = 0; - -160 -_ced - = -l -; - -161 -_discOnPl - = -l -; - -162 -_cPackNEnoughS - = -l -; - -163 -_sBadFgt - = -l -; - -164 - `_CutPdPack -(); - -166 -_ndgPubRs -. - `r -(); - -167 -_ndgPubRs -. - `shrk_to_f -(); - -169 -_toSdAcks -. - `r -(); - -170 -_toSdAcks -. - `shrk_to_f -(); - -172 -_xtPackId - = 1; - -173 -_rsgInfmi -. -bufrS - = -AsyncMqClIls -:: -BufrS -:: -NONE -; - -174 - } -} - -177  - gAsyncMqCl -:: - $_C -( -AsyncCl -* - -) { - -178 () - -; - -180 #i -ASYNC_TCP_SSL_ENABLED - - -181 i( -_cu - && -_cuSvFgts -. - `size -() > 0) { - -182 -SSL -* -S - = -_ -. - `gSSL -(); - -184 -bo - -sFoundFgt - = -l -; - -185  -d -:: -y -< -ut8_t -, -SHA1_SIZE -> -fgt - : -_cuSvFgts -) { - -186 i( - `s_mch_fgt -( -S -, -fgt -. - `da -()= -SSL_OK -) { - -187 -sFoundFgt - = -ue -; - -192 i(! -sFoundFgt -) { - -193 -_sBadFgt - = -ue -; - -194 -_ -. - `o -( -ue -); - -200  -fixedHd -[5]; - -201 -fixedHd -[0] = -AsyncMqClIls -:: -PackTy -. -CONNECT -; - -202 -fixedHd -[0] = fixedHeader[0] << 4; - -203 -fixedHd -[0] = fixedHd[0] | -AsyncMqClIls -:: -HdFg -. -CONNECT_RESERVED -; - -205 -ut16_t - -ocNameLgth - = 4; - -206  -ocNameLgthBys -[2]; - -207 -ocNameLgthBys -[0] = -ocNameLgth - >> 8; - -208 -ocNameLgthBys -[1] = -ocNameLgth - & 0xFF; - -210  -ocLev -[1]; - -211 -ocLev -[0] = 0x04; - -213  -cFgs -[1]; - -214 -cFgs -[0] = 0; - -215 i( -_nSessi - -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -CLEAN_SESSION -; - -216 i( -_uame - ! -nuαr - -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -USERNAME -; - -217 i( -_sswd - ! -nuαr - -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -PASSWORD -; - -218 i( -_wlTic - ! -nuαr -) { - -219 -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -WILL -; - -220 i( -_wlRa - -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -WILL_RETAIN -; - -221  -_wlQos -) { - -223 -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -WILL_QOS0 -; - -226 -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -WILL_QOS1 -; - -229 -cFgs -[0] | -AsyncMqClIls -:: -CFg -. -WILL_QOS2 -; - -234  -kpAliveBys -[2]; - -235 -kpAliveBys -[0] = -_kpAlive - >> 8; - -236 -kpAliveBys -[1] = -_kpAlive - & 0xFF; - -238 -ut16_t - -IdLgth - = - ` -( -_Id -); - -239  -IdLgthBys -[2]; - -240 -IdLgthBys -[0] = -IdLgth - >> 8; - -241 -IdLgthBys -[1] = -IdLgth - & 0xFF; - -244 -ut16_t - -wlTicLgth - = 0; - -245  -wlTicLgthBys -[2]; - -246 -ut16_t - -wlPayldLgth - = -_wlPayldLgth -; - -247  -wlPayldLgthBys -[2]; - -248 i( -_wlTic - ! -nuαr -) { - -249 -wlTicLgth - = - ` -( -_wlTic -); - -250 -wlTicLgthBys -[0] = -wlTicLgth - >> 8; - -251 -wlTicLgthBys -[1] = -wlTicLgth - & 0xFF; - -253 i( -_wlPayld - ! -nuαr - && -wlPayldLgth - =0wlPayldLgth = - ` -(_willPayload); - -255 -wlPayldLgthBys -[0] = -wlPayldLgth - >> 8; - -256 -wlPayldLgthBys -[1] = -wlPayldLgth - & 0xFF; - -259 -ut16_t - -uameLgth - = 0; - -260  -uameLgthBys -[2]; - -261 i( -_uame - ! -nuαr -) { - -262 -uameLgth - = - ` -( -_uame -); - -263 -uameLgthBys -[0] = -uameLgth - >> 8; - -264 -uameLgthBys -[1] = -uameLgth - & 0xFF; - -267 -ut16_t - -sswdLgth - = 0; - -268  -sswdLgthBys -[2]; - -269 i( -_sswd - ! -nuαr -) { - -270 -sswdLgth - = - ` -( -_sswd -); - -271 -sswdLgthBys -[0] = -sswdLgth - >> 8; - -272 -sswdLgthBys -[1] = -sswdLgth - & 0xFF; - -275 -ut32_t - -magLgth - = 2 + -ocNameLgth - + 1 + 1 + 2 + 2 + -IdLgth -; - -276 i( -_wlTic - ! -nuαr - -magLgth - +2 + -wlTicLgth - + 2 + -wlPayldLgth -; - -277 i( -_uame - ! -nuαr - -magLgth - +2 + -uameLgth -; - -278 i( -_sswd - ! -nuαr - -magLgth - +2 + -sswdLgth -; - -279 -ut8_t - -magLgthLgth - = -AsyncMqClIls -:: -Hrs -:: - `codeRemagLgth -( -magLgth -, -fixedHd - + 1); - -281 -ut32_t - -ededS - = 1 + -magLgthLgth -; - -282 -ededS - += 2; - -283 -ededS - + -ocNameLgth -; - -284 -ededS - += 1; - -285 -ededS - += 1; - -286 -ededS - += 2; - -287 -ededS - += 2; - -288 -ededS - + -IdLgth -; - -289 i( -_wlTic - ! -nuαr -) { - -290 -ededS - += 2; - -291 -ededS - + -wlTicLgth -; - -293 -ededS - += 2; - -294 i( -_wlPayld - ! -nuαr - -ededS - + -wlPayldLgth -; - -296 i( -_uame - ! -nuαr -) { - -297 -ededS - += 2; - -298 -ededS - + -uameLgth -; - -300 i( -_sswd - ! -nuαr -) { - -301 -ededS - += 2; - -302 -ededS - + -sswdLgth -; - -305 - `SEMAPHORE_TAKE -(); - -306 i( -_ -. - `a -(< -ededS -) { - -307 -_cPackNEnoughS - = -ue -; - -308 -_ -. - `o -( -ue -); - -309 - `SEMAPHORE_GIVE -(); - -313 -_ -. - `add -( -fixedHd -, 1 + -magLgthLgth -); - -316  -ndbufr -[12]; - -317 -ndbufr -[0] = -ocNameLgthBys -[0]; - -318 -ndbufr -[1] = -ocNameLgthBys -[1]; - -320 -ndbufr -[2] = 'M'; - -321 -ndbufr -[3] = 'Q'; - -322 -ndbufr -[4] = 'T'; - -323 -ndbufr -[5] = 'T'; - -325 -ndbufr -[6] = -ocLev -[0]; - -326 -ndbufr -[7] = -cFgs -[0]; - -327 -ndbufr -[8] = -kpAliveBys -[0]; - -328 -ndbufr -[9] = -kpAliveBys -[1]; - -329 -ndbufr -[10] = -IdLgthBys -[0]; - -330 -ndbufr -[11] = -IdLgthBys -[1]; - -332 -_ -. - `add -( -ndbufr -, 12); - -334 -_ -. - `add -( -_Id -, -IdLgth -); - -335 i( -_wlTic - ! -nuαr -) { - -336 -_ -. - `add -( -wlTicLgthBys -, 2); - -337 -_ -. - `add -( -_wlTic -, -wlTicLgth -); - -339 -_ -. - `add -( -wlPayldLgthBys -, 2); - -340 i( -_wlPayld - ! -nuαr - -_ -. - `add -(_wlPayld, -wlPayldLgth -); - -342 i( -_uame - ! -nuαr -) { - -343 -_ -. - `add -( -uameLgthBys -, 2); - -344 -_ -. - `add -( -_uame -, -uameLgth -); - -346 i( -_sswd - ! -nuαr -) { - -347 -_ -. - `add -( -sswdLgthBys -, 2); - -348 -_ -. - `add -( -_sswd -, -sswdLgth -); - -350 -_ -. - `nd -(); - -351 -_ϡClAivy - = - `mlis -(); - -352 - `SEMAPHORE_GIVE -(); - -353 - } -} - -355  - gAsyncMqCl -:: - $_Disc -( -AsyncCl -* - -) { - -356 () - -; - -357 -AsyncMqClDiscRs - -as -; - -359 i( -_cPackNEnoughS -) { - -360 -as - = -AsyncMqClDiscRs -:: -ESP8266_NOT_ENOUGH_SPACE -; - -361 } i( -_sBadFgt -) { - -362 -as - = -AsyncMqClDiscRs -:: -TLS_BAD_FINGERPRINT -; - -364 -as - = -AsyncMqClDiscRs -:: -TCP_DISCONNECTED -; - -367 - `_r -(); - -369 aut -back - : -_DiscUrClbacks - - `back -( -as -); - -370 - } -} - -372  - gAsyncMqCl -:: - $_E -( -AsyncCl -* - -, -t8_t - -r -) { - -373 () - -; - -374 () -r -; - -376 - } -} - -378  - gAsyncMqCl -:: - $_Timeout -( -AsyncCl -* - -, -ut32_t - -time -) { - -379 () - -; - -380 () -time -; - -382 - } -} - -384  - gAsyncMqCl -:: - $_Ack -( -AsyncCl -* - -, -size_t - -n -, -ut32_t - -time -) { - -385 () - -; - -386 () -n -; - -387 () -time -; - -388 - } -} - -390  - gAsyncMqCl -:: - $_Da -( -AsyncCl -* - -, * -da -, -size_t - -n -) { - -391 () - -; - -392 -size_t - -cutByPosi - = 0; - -393  -cutBy -; - -395  -_rsgInfmi -. -bufrS -) { - -396  -AsyncMqClIls -:: -BufrS -:: -NONE -: - -397 -cutBy - = -da -[ -cutByPosi -++]; - -398 -_rsgInfmi -. -ckTy - = -cutBy - >> 4; - -399 -_rsgInfmi -. -ckFgs - = ( -cutBy - << 4) >> 4; - -400 -_rsgInfmi -. -bufrS - = -AsyncMqClIls -:: -BufrS -:: -REMAINING_LENGTH -; - -401 -_ϡSvAivy - = - `mlis -(); - -402  -_rsgInfmi -. -ckTy -) { - -403  -AsyncMqClIls -:: -PackTy -. -CONNACK -: - -404 -_cutPdPack - = -w - -AsyncMqClIls -:: - `CnAckPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_CnAck -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -)); - -406  -AsyncMqClIls -:: -PackTy -. -PINGRESP -: - -407 -_cutPdPack - = -w - -AsyncMqClIls -:: - `PgRePack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_PgRe -, -this -)); - -409  -AsyncMqClIls -:: -PackTy -. -SUBACK -: - -410 -_cutPdPack - = -w - -AsyncMqClIls -:: - `SubAckPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_SubAck -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -)); - -412  -AsyncMqClIls -:: -PackTy -. -UNSUBACK -: - -413 -_cutPdPack - = -w - -AsyncMqClIls -:: - `UnsubAckPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_UnsubAck -, -this -, std:: -ahds -:: -_1 -)); - -415  -AsyncMqClIls -:: -PackTy -. -PUBLISH -: - -416 -_cutPdPack - = -w - -AsyncMqClIls -:: - `PublishPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_Mesge -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -, std::ahds:: -_3 -, std::ahds:: -_4 -, std::ahds:: -_5 -, std::ahds:: -_6 -, std::ahds:: -_7 -, std::ahds:: -_8 -, std::ahds:: -_9 -), std::bd(&AsyncMqCl:: -_Publish -,his, std::placeholders::_1, std::placeholders::_2)); - -418  -AsyncMqClIls -:: -PackTy -. -PUBREL -: - -419 -_cutPdPack - = -w - -AsyncMqClIls -:: - `PubRPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_PubR -, -this -, std:: -ahds -:: -_1 -)); - -421  -AsyncMqClIls -:: -PackTy -. -PUBACK -: - -422 -_cutPdPack - = -w - -AsyncMqClIls -:: - `PubAckPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_PubAck -, -this -, std:: -ahds -:: -_1 -)); - -424  -AsyncMqClIls -:: -PackTy -. -PUBREC -: - -425 -_cutPdPack - = -w - -AsyncMqClIls -:: - `PubRecPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_PubRec -, -this -, std:: -ahds -:: -_1 -)); - -427  -AsyncMqClIls -:: -PackTy -. -PUBCOMP -: - -428 -_cutPdPack - = -w - -AsyncMqClIls -:: - `PubCompPack -(& -_rsgInfmi -, -d -:: - `bd -(& -AsyncMqCl -:: -_PubComp -, -this -, std:: -ahds -:: -_1 -)); - -434  -AsyncMqClIls -:: -BufrS -:: -REMAINING_LENGTH -: - -435 -cutBy - = -da -[ -cutByPosi -++]; - -436 -_magLgthBufr -[ -_magLgthBufrPosi -++] = -cutBy -; - -437 i( -cutBy - >> 7 == 0) { - -438 -_rsgInfmi -. -magLgth - = -AsyncMqClIls -:: -Hrs -:: - `decodeRemagLgth -( -_magLgthBufr -); - -439 -_magLgthBufrPosi - = 0; - -440 i( -_rsgInfmi -. -magLgth - > 0) { - -441 -_rsgInfmi -. -bufrS - = -AsyncMqClIls -:: -BufrS -:: -VARIABLE_HEADER -; - -444 -_rsgInfmi -. -bufrS - = -AsyncMqClIls -:: -BufrS -:: -NONE -; - -445 - `_PgRe -(); - -449  -AsyncMqClIls -:: -BufrS -:: -VARIABLE_HEADER -: - -450 -_cutPdPack --> - `rVbHd -( -da -, -n -, & -cutByPosi -); - -452  -AsyncMqClIls -:: -BufrS -:: -PAYLOAD -: - -453 -_cutPdPack --> - `rPayld -( -da -, -n -, & -cutByPosi -); - -456 -cutByPosi - = -n -; - -458 }  -cutByPosi - ! -n -); - -459 - } -} - -461  - gAsyncMqCl -:: - $_Pl -( -AsyncCl -* - -) { - -462 i(! -_ced -) ; - -465 i( -_ϡPgRequeTime - !0 && ( - `mlis -(- _ϡPgRequeTime>( -_kpAlive - * 1000 * 2)) { - -466 - `disc -(); - -469 } i( -_ϡPgRequeTime - =0 && ( - `mlis -(- -_ϡClAivy ->( -_kpAlive - * 1000 * 0.7)) { - -470 - `_ndPg -(); - -473 } i( -_ced - && -_ϡPgRequeTime - =0 && ( - `mlis -(- -_ϡSvAivy ->( -_kpAlive - * 1000 * 0.7)) { - -474 - `_ndPg -(); - -480 - `_ndAcks -(); - -484 i( -_discOnPl -) { - -485 - `_ndDisc -(); - -487 - } -} - -490  - gAsyncMqCl -:: - $_PgRe -() { - -491 - `_CutPdPack -(); - -492 -_ϡPgRequeTime - = 0; - -493 - } -} - -495  - gAsyncMqCl -:: - $_CnAck -( -bo - -ssiP -, -ut8_t - -cRuCode -) { - -496 () -ssiP -; - -497 - `_CutPdPack -(); - -499 i( -cRuCode - == 0) { - -500 -_ced - = -ue -; - -501 aut -back - : -_CUrClbacks - - `back -( -ssiP -); - -505 - } -} - -507  - gAsyncMqCl -:: - $_SubAck -( -ut16_t - -ckId -,  -us -) { - -508 - `_CutPdPack -(); - -510 aut -back - : -_SubsibeUrClbacks - - `back -( -ckId -, -us -); - -511 - } -} - -513  - gAsyncMqCl -:: - $_UnsubAck -( -ut16_t - -ckId -) { - -514 - `_CutPdPack -(); - -516 aut -back - : -_UnsubsibeUrClbacks - - `back -( -ckId -); - -517 - } -} - -519  - gAsyncMqCl -:: - $_Mesge -(* -tic -, * -yld -, -ut8_t - -qos -, -bo - -dup -, bo - -, -size_t - -n -, size_ -dex -, size_ -tٮ -, -ut16_t - -ckId -) { - -520 -bo - -nifyPublish - = -ue -; - -522 i( -qos - == 2) { - -523  -AsyncMqClIls -:: -PdgPubR - -ndgPubR - : -_ndgPubRs -) { - -524 i( -ndgPubR -. -ckId - ==acketId) { - -525 -nifyPublish - = -l -; - -531 i( -nifyPublish -) { - -532 -AsyncMqClMesgePrݔts - -ݔts -; - -533 -ݔts -. -qos - = qos; - -534 -ݔts -. -dup - = dup; - -535 -ݔts -. - - =etain; - -537 aut -back - : -_MesgeUrClbacks - - `back -( -tic -, -yld -, -ݔts -, -n -, -dex -, -tٮ -); - -539 - } -} - -541  - gAsyncMqCl -:: - $_Publish -( -ut16_t - -ckId -, -ut8_t - -qos -) { - -542 -AsyncMqClIls -:: -PdgAck - -ndgAck -; - -544 i( -qos - == 1) { - -545 -ndgAck -. -ckTy - = -AsyncMqClIls -:: -PackTy -. -PUBACK -; - -546 -ndgAck -. -hdFg - = -AsyncMqClIls -:: -HdFg -. -PUBACK_RESERVED -; - -547 -ndgAck -. -ckId - =acketId; - -548 -_toSdAcks -. - `push_back -( -ndgAck -); - -549 } i( -qos - == 2) { - -550 -ndgAck -. -ckTy - = -AsyncMqClIls -:: -PackTy -. -PUBREC -; - -551 -ndgAck -. -hdFg - = -AsyncMqClIls -:: -HdFg -. -PUBREC_RESERVED -; - -552 -ndgAck -. -ckId - =acketId; - -553 -_toSdAcks -. - `push_back -( -ndgAck -); - -555 -bo - -pubRAwag - = -l -; - -556  -AsyncMqClIls -:: -PdgPubR - -ndgPubR - : -_ndgPubRs -) { - -557 i( -ndgPubR -. -ckId - ==acketId) { - -558 -pubRAwag - = -ue -; - -563 i(! -pubRAwag -) { - -564 -AsyncMqClIls -:: -PdgPubR - -ndgPubR -; - -565 -ndgPubR -. -ckId - =acketId; - -566 -_ndgPubRs -. - `push_back -( -ndgPubR -); - -569 - `_ndAcks -(); - -572 - `_CutPdPack -(); - -573 - } -} - -575  - gAsyncMqCl -:: - $_PubR -( -ut16_t - -ckId -) { - -576 - `_CutPdPack -(); - -578 -AsyncMqClIls -:: -PdgAck - -ndgAck -; - -579 -ndgAck -. -ckTy - = -AsyncMqClIls -:: -PackTy -. -PUBCOMP -; - -580 -ndgAck -. -hdFg - = -AsyncMqClIls -:: -HdFg -. -PUBCOMP_RESERVED -; - -581 -ndgAck -. -ckId - =acketId; - -582 -_toSdAcks -. - `push_back -( -ndgAck -); - -584  -size_t - -i - = 0; i < -_ndgPubRs -. - `size -(); i++) { - -585 i( -_ndgPubRs -[ -i -]. -ckId - ==acketId) { - -586 -_ndgPubRs -. - `a -(_ndgPubRs. - `beg -(+ -i -); - -587 -_ndgPubRs -. - `shrk_to_f -(); - -591 - `_ndAcks -(); - -592 - } -} - -594  - gAsyncMqCl -:: - $_PubAck -( -ut16_t - -ckId -) { - -595 - `_CutPdPack -(); - -597 aut -back - : -_PublishUrClbacks - - `back -( -ckId -); - -598 - } -} - -600  - gAsyncMqCl -:: - $_PubRec -( -ut16_t - -ckId -) { - -601 - `_CutPdPack -(); - -603 -AsyncMqClIls -:: -PdgAck - -ndgAck -; - -604 -ndgAck -. -ckTy - = -AsyncMqClIls -:: -PackTy -. -PUBREL -; - -605 -ndgAck -. -hdFg - = -AsyncMqClIls -:: -HdFg -. -PUBREL_RESERVED -; - -606 -ndgAck -. -ckId - =acketId; - -607 -_toSdAcks -. - `push_back -( -ndgAck -); - -609 - `_ndAcks -(); - -610 - } -} - -612  - gAsyncMqCl -:: - $_PubComp -( -ut16_t - -ckId -) { - -613 - `_CutPdPack -(); - -615 aut -back - : -_PublishUrClbacks - - `back -( -ckId -); - -616 - } -} - -618 -bo - - gAsyncMqCl -:: - $_ndPg -() { - -619  -fixedHd -[2]; - -620 -fixedHd -[0] = -AsyncMqClIls -:: -PackTy -. -PINGREQ -; - -621 -fixedHd -[0] = fixedHeader[0] << 4; - -622 -fixedHd -[0] = fixedHd[0] | -AsyncMqClIls -:: -HdFg -. -PINGREQ_RESERVED -; - -623 -fixedHd -[1] = 0; - -625 -size_t - -ededS - = 2; - -627 - `SEMAPHORE_TAKE -( -l -); - -628 i( -_ -. - `a -(< -ededS -{ - `SEMAPHORE_GIVE -();  -l -; } - -630 -_ -. - `add -( -fixedHd -, 2); - -631 -_ -. - `nd -(); - -632 -_ϡClAivy - = - `mlis -(); - -633 -_ϡPgRequeTime - = - `mlis -(); - -635 - `SEMAPHORE_GIVE -(); - -636  -ue -; - -637 - } -} - -639  - gAsyncMqCl -:: - $_ndAcks -() { - -640 -ut8_t - -ededAckS - = 2 + 2; - -642 - `SEMAPHORE_TAKE -(); - -643  -size_t - -i - = 0; i < -_toSdAcks -. - `size -(); i++) { - -644 i( -_ -. - `a -(< -ededAckS -) ; - -646 -AsyncMqClIls -:: -PdgAck - -ndgAck - = -_toSdAcks -[ -i -]; - -648  -fixedHd -[2]; - -649 -fixedHd -[0] = -ndgAck -. -ckTy -; - -650 -fixedHd -[0] = fixedHeader[0] << 4; - -651 -fixedHd -[0] = fixedHd[0] | -ndgAck -. -hdFg -; - -652 -fixedHd -[1] = 2; - -654  -ckIdBys -[2]; - -655 -ckIdBys -[0] = -ndgAck -. -ckId - >> 8; - -656 -ckIdBys -[1] = -ndgAck -. -ckId - & 0xFF; - -658 -_ -. - `add -( -fixedHd -, 2); - -659 -_ -. - `add -( -ckIdBys -, 2); - -660 -_ -. - `nd -(); - -662 -_toSdAcks -. - `a -(_toSdAcks. - `beg -(+ -i -); - -663 -_toSdAcks -. - `shrk_to_f -(); - -665 -_ϡClAivy - = - `mlis -(); - -667 - `SEMAPHORE_GIVE -(); - -668 - } -} - -670 -bo - - gAsyncMqCl -:: - $_ndDisc -() { - -671 i(! -_ced - -ue -; - -673 cڡ -ut8_t - -ededS - = 2; - -675 - `SEMAPHORE_TAKE -( -l -); - -677 i( -_ -. - `a -(< -ededS -{ - `SEMAPHORE_GIVE -();  -l -; } - -679  -fixedHd -[2]; - -680 -fixedHd -[0] = -AsyncMqClIls -:: -PackTy -. -DISCONNECT -; - -681 -fixedHd -[0] = fixedHeader[0] << 4; - -682 -fixedHd -[0] = fixedHd[0] | -AsyncMqClIls -:: -HdFg -. -DISCONNECT_RESERVED -; - -683 -fixedHd -[1] = 0; - -685 -_ -. - `add -( -fixedHd -, 2); - -686 -_ -. - `nd -(); - -687 -_ -. - `o -( -ue -); - -689 -_discOnPl - = -l -; - -691 - `SEMAPHORE_GIVE -(); - -692  -ue -; - -693 - } -} - -695 -ut16_t - - gAsyncMqCl -:: - $_gNextPackId -() { - -696 -ut16_t - -xtPackId - = -_xtPackId -; - -698 i( -_xtPackId - == 65535) _nextPacketId = 0; - -699 -_xtPackId -++; - -701  -xtPackId -; - -702 - } -} - -704 -bo - - gAsyncMqCl -:: - $ced -() const { - -705  -_ced -; - -706 - } -} - -708  - gAsyncMqCl -:: - $c -() { - -709 i( -_ced -) ; - -711 #i -ASYNC_TCP_SSL_ENABLED - - -712 i( -_uIp -) { - -713 -_ -. - `c -( -_ -, -_pt -, -_cu -); - -715 -_ -. - `c -( -_ho -, -_pt -, -_cu -); - -718 i( -_uIp -) { - -719 -_ -. - `c -( -_ -, -_pt -); - -721 -_ -. - `c -( -_ho -, -_pt -); - -724 - } -} - -726  - gAsyncMqCl -:: - $disc -( -bo - -f -) { - -727 i(! -_ced -) ; - -729 i( -f -) { - -730 -_ -. - `o -( -ue -); - -732 - `_ndDisc -(); - -733 -_discOnPl - = -l -; - -735 - } -} - -737 -ut16_t - - gAsyncMqCl -:: - $subsibe -(cڡ * -tic -, -ut8_t - -qos -) { - -738 i(! -_ced -)  0; - -740  -fixedHd -[5]; - -741 -fixedHd -[0] = -AsyncMqClIls -:: -PackTy -. -SUBSCRIBE -; - -742 -fixedHd -[0] = fixedHeader[0] << 4; - -743 -fixedHd -[0] = fixedHd[0] | -AsyncMqClIls -:: -HdFg -. -SUBSCRIBE_RESERVED -; - -745 -ut16_t - -ticLgth - = - ` -( -tic -); - -746  -ticLgthBys -[2]; - -747 -ticLgthBys -[0] = -ticLgth - >> 8; - -748 -ticLgthBys -[1] = -ticLgth - & 0xFF; - -750  -qosBy -[1]; - -751 -qosBy -[0] = -qos -; - -753 -ut8_t - -magLgthLgth - = -AsyncMqClIls -:: -Hrs -:: - `codeRemagLgth -(2 + 2 + -ticLgth - + 1, -fixedHd - + 1); - -755 -size_t - -ededS - = 0; - -756 -ededS - +1 + -magLgthLgth -; - -757 -ededS - += 2; - -758 -ededS - += 2; - -759 -ededS - + -ticLgth -; - -760 -ededS - += 1; - -762 - `SEMAPHORE_TAKE -(0); - -763 i( -_ -. - `a -(< -ededS -{ - `SEMAPHORE_GIVE -();  0; } - -765 -ut16_t - -ckId - = - `_gNextPackId -(); - -766  -ckIdBys -[2]; - -767 -ckIdBys -[0] = -ckId - >> 8; - -768 -ckIdBys -[1] = -ckId - & 0xFF; - -770 -_ -. - `add -( -fixedHd -, 1 + -magLgthLgth -); - -771 -_ -. - `add -( -ckIdBys -, 2); - -772 -_ -. - `add -( -ticLgthBys -, 2); - -773 -_ -. - `add -( -tic -, -ticLgth -); - -774 -_ -. - `add -( -qosBy -, 1); - -775 -_ -. - `nd -(); - -776 -_ϡClAivy - = - `mlis -(); - -778 - `SEMAPHORE_GIVE -(); - -779  -ckId -; - -780 - } -} - -782 -ut16_t - - gAsyncMqCl -:: - $unsubsibe -(cڡ * -tic -) { - -783 i(! -_ced -)  0; - -785  -fixedHd -[5]; - -786 -fixedHd -[0] = -AsyncMqClIls -:: -PackTy -. -UNSUBSCRIBE -; - -787 -fixedHd -[0] = fixedHeader[0] << 4; - -788 -fixedHd -[0] = fixedHd[0] | -AsyncMqClIls -:: -HdFg -. -UNSUBSCRIBE_RESERVED -; - -790 -ut16_t - -ticLgth - = - ` -( -tic -); - -791  -ticLgthBys -[2]; - -792 -ticLgthBys -[0] = -ticLgth - >> 8; - -793 -ticLgthBys -[1] = -ticLgth - & 0xFF; - -795 -ut8_t - -magLgthLgth - = -AsyncMqClIls -:: -Hrs -:: - `codeRemagLgth -(2 + 2 + -ticLgth -, -fixedHd - + 1); - -797 -size_t - -ededS - = 0; - -798 -ededS - +1 + -magLgthLgth -; - -799 -ededS - += 2; - -800 -ededS - += 2; - -801 -ededS - + -ticLgth -; - -803 - `SEMAPHORE_TAKE -(0); - -804 i( -_ -. - `a -(< -ededS -{ - `SEMAPHORE_GIVE -();  0; } - -806 -ut16_t - -ckId - = - `_gNextPackId -(); - -807  -ckIdBys -[2]; - -808 -ckIdBys -[0] = -ckId - >> 8; - -809 -ckIdBys -[1] = -ckId - & 0xFF; - -811 -_ -. - `add -( -fixedHd -, 1 + -magLgthLgth -); - -812 -_ -. - `add -( -ckIdBys -, 2); - -813 -_ -. - `add -( -ticLgthBys -, 2); - -814 -_ -. - `add -( -tic -, -ticLgth -); - -815 -_ -. - `nd -(); - -816 -_ϡClAivy - = - `mlis -(); - -818 - `SEMAPHORE_GIVE -(); - -819  -ckId -; - -820 - } -} - -822 -ut16_t - - gAsyncMqCl -:: - $publish -(cڡ * -tic -, -ut8_t - -qos -, -bo - - -, cڡ * -yld -, -size_t - -ngth -, bo -dup -, -ut16_t - -mesge_id -) { - -823 i(! -_ced -)  0; - -825  -fixedHd -[5]; - -826 -fixedHd -[0] = -AsyncMqClIls -:: -PackTy -. -PUBLISH -; - -827 -fixedHd -[0] = fixedHeader[0] << 4; - -828 i( -dup - -fixedHd -[0] | -AsyncMqClIls -:: -HdFg -. -PUBLISH_DUP -; - -829 i( - - -fixedHd -[0] | -AsyncMqClIls -:: -HdFg -. -PUBLISH_RETAIN -; - -830  -qos -) { - -832 -fixedHd -[0] | -AsyncMqClIls -:: -HdFg -. -PUBLISH_QOS0 -; - -835 -fixedHd -[0] | -AsyncMqClIls -:: -HdFg -. -PUBLISH_QOS1 -; - -838 -fixedHd -[0] | -AsyncMqClIls -:: -HdFg -. -PUBLISH_QOS2 -; - -842 -ut16_t - -ticLgth - = - ` -( -tic -); - -843  -ticLgthBys -[2]; - -844 -ticLgthBys -[0] = -ticLgth - >> 8; - -845 -ticLgthBys -[1] = -ticLgth - & 0xFF; - -847 -ut32_t - -yldLgth - = -ngth -; - -848 i( -yld - ! -nuαr - && -yldLgth - =0yldLgth = - ` -(payload); - -850 -ut32_t - -magLgth - = 2 + -ticLgth - + -yldLgth -; - -851 i( -qos - !0 -magLgth - += 2; - -852 -ut8_t - -magLgthLgth - = -AsyncMqClIls -:: -Hrs -:: - `codeRemagLgth -( -magLgth -, -fixedHd - + 1); - -854 -size_t - -ededS - = 0; - -855 -ededS - +1 + -magLgthLgth -; - -856 -ededS - += 2; - -857 -ededS - + -ticLgth -; - -858 i( -qos - !0 -ededS - += 2; - -859 i( -yld - ! -nuαr - -ededS - + -yldLgth -; - -861 - `SEMAPHORE_TAKE -(0); - -862 i( -_ -. - `a -(< -ededS -{ - `SEMAPHORE_GIVE -();  0; } - -864 -ut16_t - -ckId - = 0; - -865  -ckIdBys -[2]; - -866 i( -qos - != 0) { - -867 i( -dup - && -mesge_id - > 0) { - -868 -ckId - = -mesge_id -; - -870 -ckId - = - `_gNextPackId -(); - -873 -ckIdBys -[0] = -ckId - >> 8; - -874 -ckIdBys -[1] = -ckId - & 0xFF; - -877 -_ -. - `add -( -fixedHd -, 1 + -magLgthLgth -); - -878 -_ -. - `add -( -ticLgthBys -, 2); - -879 -_ -. - `add -( -tic -, -ticLgth -); - -880 i( -qos - !0 -_ -. - `add -( -ckIdBys -, 2); - -881 i( -yld - ! -nuαr - -_ -. - `add -ayld, -yldLgth -); - -882 -_ -. - `nd -(); - -883 -_ϡClAivy - = - `mlis -(); - -885 - `SEMAPHORE_GIVE -(); - -886 i( -qos - != 0) { - -887  -ckId -; - -891 - } -} - -893 cڡ * - gAsyncMqCl -:: - $gClId -() { - -894  -_Id -; - -895 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.h - -1 #ide -SRC_ASYNCMQTTCLIENT_H_ - - -2  - #SRC_ASYNCMQTTCLIENT_H_ - - - ) - -4  - ~"AsyncMqCl.h -" - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.hpp - -1 #agm - - - -3  - ~ - -4  - ~ - -6  - ~"Arduo.h -" - -8 #ifde -ESP32 - - -9  - ~ - -10  - ~<䓹os/mphr.h -> - -11 #i -defed -( -ESP8266 -) - -12  - ~ - -14 #r -Ptfm - -n - -su܋d - - -17 #i -ASYNC_TCP_SSL_ENABLED - - -18  - ~ - -19  - #SHA1_SIZE - 20 - - ) - -22  - ~"AsyncMqCl/Fgs.h -" - -23  - ~"AsyncMqCl/PsgInfmi.h -" - -24  - ~"AsyncMqCl/MesgePrݔts.h -" - -25  - ~"AsyncMqCl/Hrs.h -" - -26  - ~"AsyncMqCl/Clbacks.h -" - -27  - ~"AsyncMqCl/DiscRss.h -" - -28  - ~"AsyncMqCl/Stage.h -" - -30  - ~"AsyncMqCl/Packs/Pack.h -" - -31  - ~"AsyncMqCl/Packs/CnAckPack.h -" - -32  - ~"AsyncMqCl/Packs/PgRePack.h -" - -33  - ~"AsyncMqCl/Packs/SubAckPack.h -" - -34  - ~"AsyncMqCl/Packs/UnsubAckPack.h -" - -35  - ~"AsyncMqCl/Packs/PublishPack.h -" - -36  - ~"AsyncMqCl/Packs/PubRPack.h -" - -37  - ~"AsyncMqCl/Packs/PubAckPack.h -" - -38  - ~"AsyncMqCl/Packs/PubRecPack.h -" - -39  - ~"AsyncMqCl/Packs/PubCompPack.h -" - -41 #i -ESP32 - - -42  - #SEMAPHORE_TAKE -( -X -i( - `xSemheTake -( -_xSemhe -, 1000 / -ptTICK_PERIOD_MS -! -pdTRUE -) {  X; } - -43  - #SEMAPHORE_GIVE -( - `xSemheGive -( -_xSemhe -); - - ) - -44 #i -defed -( -ESP8266 -) - -45  - #SEMAPHORE_TAKE -( -X -() - - ) - -46  - #SEMAPHORE_GIVE -(() - - ) - -49 as - cAsyncMqCl - { - -50 - mpublic -: - -51 -AsyncMqCl -(); - -52 ~ -AsyncMqCl -(); - -54 - mAsyncMqCl -& -tKpAlive -( -ut16_t - -kpAlive -); - -55 - mAsyncMqCl -& -tClId -(cڡ * -Id -); - -56 - mAsyncMqCl -& -tC˪Sessi -( -bo - -nSessi -); - -57 - mAsyncMqCl -& -tMaxTicLgth -( -ut16_t - -maxTicLgth -); - -58 - mAsyncMqCl -& -tCdtls -(cڡ * -uame -, cڡ * -sswd - = -nuαr -); - -59 - mAsyncMqCl -& -tWl -(cڡ * -tic -, -ut8_t - -qos -, -bo - - -, cڡ * -yld - = -nuαr -, -size_t - -ngth - = 0); - -60 - mAsyncMqCl -& -tSv -( -IPAddss - - -, -ut16_t - -pt -); - -61 - mAsyncMqCl -& -tSv -(cڡ * -ho -, -ut16_t - -pt -); - -62 #i -ASYNC_TCP_SSL_ENABLED - - -63 - mAsyncMqCl -& -tSecu -( -bo - -cu -); - -64 - mAsyncMqCl -& -addSvFgt -(cڡ -ut8_t -* -fgt -); - -67 - mAsyncMqCl -& -C -( -AsyncMqClIls -:: -OnCUrClback - -back -); - -68 - mAsyncMqCl -& -Disc -( -AsyncMqClIls -:: -OnDiscUrClback - -back -); - -69 - mAsyncMqCl -& -Subsibe -( -AsyncMqClIls -:: -OnSubsibeUrClback - -back -); - -70 - mAsyncMqCl -& -Unsubsibe -( -AsyncMqClIls -:: -OnUnsubsibeUrClback - -back -); - -71 - mAsyncMqCl -& -Mesge -( -AsyncMqClIls -:: -OnMesgeUrClback - -back -); - -72 - mAsyncMqCl -& -Publish -( -AsyncMqClIls -:: -OnPublishUrClback - -back -); - -74 -bo - - $ced -() const; - -75  - `c -(); - -76  - `disc -( -bo - -f - = -l -); - -77 -ut16_t - - `subsibe -(cڡ * -tic -, -ut8_t - -qos -); - -78 -ut16_t - - `unsubsibe -(cڡ * -tic -); - -79 -ut16_t - - `publish -(cڡ * -tic -, -ut8_t - -qos -, -bo - - -, cڡ * -yld - = -nuαr -, -size_t - -ngth - = 0, bo -dup - = -l -, ut16_ -mesge_id - = 0); - -81 cڡ * - `gClId -(); - -83 -ive -: - -84 -AsyncCl - -_ -; - -86 -bo - -_ced -; - -87 -bo - -_cPackNEnoughS -; - -88 -bo - -_discOnPl -; - -89 -bo - -_sBadFgt -; - -90 -ut32_t - -_ϡClAivy -; - -91 -ut32_t - -_ϡSvAivy -; - -92 -ut32_t - -_ϡPgRequeTime -; - -94  -_gedClId -[18 + 1]; - -95 -IPAddss - -_ -; - -96 cڡ * -_ho -; - -97 -bo - -_uIp -; - -98 #i -ASYNC_TCP_SSL_ENABLED - - -99 -bo - -_cu -; - -101 -ut16_t - -_pt -; - -102 -ut16_t - -_kpAlive -; - -103 -bo - -_nSessi -; - -104 cڡ * -_Id -; - -105 cڡ * -_uame -; - -106 cڡ * -_sswd -; - -107 cڡ * -_wlTic -; - -108 cڡ * -_wlPayld -; - -109 -ut16_t - -_wlPayldLgth -; - -110 -ut8_t - -_wlQos -; - -111 -bo - -_wlRa -; - -113 #i -ASYNC_TCP_SSL_ENABLED - - -114 -d -:: -ve -> -_cuSvFgts -; - -117 -d -:: -ve -< -AsyncMqClIls -:: -OnCUrClback -> -_CUrClbacks -; - -118 -d -:: -ve -< -AsyncMqClIls -:: -OnDiscUrClback -> -_DiscUrClbacks -; - -119 -d -:: -ve -< -AsyncMqClIls -:: -OnSubsibeUrClback -> -_SubsibeUrClbacks -; - -120 -d -:: -ve -< -AsyncMqClIls -:: -OnUnsubsibeUrClback -> -_UnsubsibeUrClbacks -; - -121 -d -:: -ve -< -AsyncMqClIls -:: -OnMesgeUrClback -> -_MesgeUrClbacks -; - -122 -d -:: -ve -< -AsyncMqClIls -:: -OnPublishUrClback -> -_PublishUrClbacks -; - -124 -AsyncMqClIls -:: -PsgInfmi - -_rsgInfmi -; - -125 -AsyncMqClIls -:: -Pack -* -_cutPdPack -; - -126 -ut8_t - -_magLgthBufrPosi -; - -127  -_magLgthBufr -[4]; - -129 -ut16_t - -_xtPackId -; - -131 -d -:: -ve -< -AsyncMqClIls -:: -PdgPubR -> -_ndgPubRs -; - -133 -d -:: -ve -< -AsyncMqClIls -:: -PdgAck -> -_toSdAcks -; - -135 #ifde -ESP32 - - -136 -SemheHd_t - -_xSemhe - = -nuαr -; - -139  - `_r -(); - -140  - `_CutPdPack -(); - -143  - `_C -( -AsyncCl -* - -); - -144  - `_Disc -( -AsyncCl -* - -); - -145  - `_E -( -AsyncCl -* - -, -t8_t - -r -); - -146  - `_Timeout -( -AsyncCl -* - -, -ut32_t - -time -); - -147  - `_Ack -( -AsyncCl -* - -, -size_t - -n -, -ut32_t - -time -); - -148  - `_Da -( -AsyncCl -* - -, * -da -, -size_t - -n -); - -149  - `_Pl -( -AsyncCl -* - -); - -152  - `_PgRe -(); - -153  - `_CnAck -( -bo - -ssiP -, -ut8_t - -cRuCode -); - -154  - `_SubAck -( -ut16_t - -ckId -,  -us -); - -155  - `_UnsubAck -( -ut16_t - -ckId -); - -156  - `_Mesge -(* -tic -, * -yld -, -ut8_t - -qos -, -bo - -dup -, bo - -, -size_t - -n -, size_ -dex -, size_ -tٮ -, -ut16_t - -ckId -); - -157  - `_Publish -( -ut16_t - -ckId -, -ut8_t - -qos -); - -158  - `_PubR -( -ut16_t - -ckId -); - -159  - `_PubAck -( -ut16_t - -ckId -); - -160  - `_PubRec -( -ut16_t - -ckId -); - -161  - `_PubComp -( -ut16_t - -ckId -); - -163 -bo - - `_ndPg -(); - -164  - `_ndAcks -(); - -165 -bo - - `_ndDisc -(); - -167 -ut16_t - - `_gNextPackId -(); - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Callbacks.hpp - -1 #agm - - - -3  - ~ - -5  - ~"DiscRss.h -" - -6  - ~"MesgePrݔts.h -" - -8 -mea - - gAsyncMqClIls - { - -10  - gd -:: - tfuni -<( - tbo - - tssiP -)> - tOnCUrClback -; - -11  - gd -:: - tfuni -<( - tAsyncMqClDiscRs - - tas -)> - tOnDiscUrClback -; - -12  - gd -:: - tfuni -<( - tut16_t - - tckId -, - tut8_t - - tqos -)> - tOnSubsibeUrClback -; - -13  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnUnsubsibeUrClback -; - -14  - gd -:: - tfuni -<(* - ttic -, * - tyld -, - tAsyncMqClMesgePrݔts - - tݔts -, - tsize_t - - tn -, size_ - tdex -, size_ - ttٮ -)> - tOnMesgeUrClback -; - -15  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnPublishUrClback -; - -18  - gd -:: - tfuni -<( - tbo - - tssiP -, - tut8_t - - tcRuCode -)> - tOnCnAckIlClback -; - -19  - gd -:: - tfuni -<()> - tOnPgReIlClback -; - -20  - gd -:: - tfuni -<( - tut16_t - - tckId -,  - tus -)> - tOnSubAckIlClback -; - -21  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnUnsubAckIlClback -; - -22  - gd -:: - tfuni -<(* - ttic -, * - tyld -, - tut8_t - - tqos -, - tbo - - tdup -, bo - t -, - tsize_t - - tn -, size_ - tdex -, size_ - ttٮ -, - tut16_t - - tckId -)> - tOnMesgeIlClback -; - -23  - gd -:: - tfuni -<( - tut16_t - - tckId -, - tut8_t - - tqos -)> - tOnPublishIlClback -; - -24  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnPubRIlClback -; - -25  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnPubAckIlClback -; - -26  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnPubRecIlClback -; - -27  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnPubCompIlClback -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/DisconnectReasons.hpp - -1 #agm - - - -3 as - cAsyncMqClDiscRs - : -t8_t - { - -4 -TCP_DISCONNECTED - = 0, - -6 - mMQTT_UNACCEPTABLE_PROTOCOL_VERSION - = 1, - -7 - mMQTT_IDENTIFIER_REJECTED - = 2, - -8 - mMQTT_SERVER_UNAVAILABLE - = 3, - -9 - mMQTT_MALFORMED_CREDENTIALS - = 4, - -10 - mMQTT_NOT_AUTHORIZED - = 5, - -12 - mESP8266_NOT_ENOUGH_SPACE - = 6, - -14 - mTLS_BAD_FINGERPRINT - = 7 - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Flags.hpp - -1 #agm - - - -3 -mea - - gAsyncMqClIls - { - -4 -cڡex - struct { - -5 cڡ -ut8_t - - gRESERVED - = 0; - -6 cڡ -ut8_t - - gCONNECT - = 1; - -7 cڡ -ut8_t - - gCONNACK - = 2; - -8 cڡ -ut8_t - - gPUBLISH - = 3; - -9 cڡ -ut8_t - - gPUBACK - = 4; - -10 cڡ -ut8_t - - gPUBREC - = 5; - -11 cڡ -ut8_t - - gPUBREL - = 6; - -12 cڡ -ut8_t - - gPUBCOMP - = 7; - -13 cڡ -ut8_t - - gSUBSCRIBE - = 8; - -14 cڡ -ut8_t - - gSUBACK - = 9; - -15 cڡ -ut8_t - - gUNSUBSCRIBE - = 10; - -16 cڡ -ut8_t - - gUNSUBACK - = 11; - -17 cڡ -ut8_t - - gPINGREQ - = 12; - -18 cڡ -ut8_t - - gPINGRESP - = 13; - -19 cڡ -ut8_t - - gDISCONNECT - = 14; - -20 cڡ -ut8_t - - gRESERVED2 - = 1; - -21 } - gPackTy -; - -23 -cڡex - struct { - -24 cڡ -ut8_t - - gCONNECT_RESERVED - = 0x00; - -25 cڡ -ut8_t - - gCONNACK_RESERVED - = 0x00; - -26 cڡ -ut8_t - - gPUBLISH_DUP - = 0x08; - -27 cڡ -ut8_t - - gPUBLISH_QOS0 - = 0x00; - -28 cڡ -ut8_t - - gPUBLISH_QOS1 - = 0x02; - -29 cڡ -ut8_t - - gPUBLISH_QOS2 - = 0x04; - -30 cڡ -ut8_t - - gPUBLISH_QOSRESERVED - = 0x06; - -31 cڡ -ut8_t - - gPUBLISH_RETAIN - = 0x01; - -32 cڡ -ut8_t - - gPUBACK_RESERVED - = 0x00; - -33 cڡ -ut8_t - - gPUBREC_RESERVED - = 0x00; - -34 cڡ -ut8_t - - gPUBREL_RESERVED - = 0x02; - -35 cڡ -ut8_t - - gPUBCOMP_RESERVED - = 0x00; - -36 cڡ -ut8_t - - gSUBSCRIBE_RESERVED - = 0x02; - -37 cڡ -ut8_t - - gSUBACK_RESERVED - = 0x00; - -38 cڡ -ut8_t - - gUNSUBSCRIBE_RESERVED - = 0x02; - -39 cڡ -ut8_t - - gUNSUBACK_RESERVED - = 0x00; - -40 cڡ -ut8_t - - gPINGREQ_RESERVED - = 0x00; - -41 cڡ -ut8_t - - gPINGRESP_RESERVED - = 0x00; - -42 cڡ -ut8_t - - gDISCONNECT_RESERVED - = 0x00; - -43 cڡ -ut8_t - - gRESERVED2_RESERVED - = 0x00; - -44 } - gHdFg -; - -46 -cڡex - struct { - -47 cڡ -ut8_t - - gUSERNAME - = 0x80; - -48 cڡ -ut8_t - - gPASSWORD - = 0x40; - -49 cڡ -ut8_t - - gWILL_RETAIN - = 0x20; - -50 cڡ -ut8_t - - gWILL_QOS0 - = 0x00; - -51 cڡ -ut8_t - - gWILL_QOS1 - = 0x08; - -52 cڡ -ut8_t - - gWILL_QOS2 - = 0x10; - -53 cڡ -ut8_t - - gWILL - = 0x04; - -54 cڡ -ut8_t - - gCLEAN_SESSION - = 0x02; - -55 cڡ -ut8_t - - gRESERVED - = 0x00; - -56 } - gCFg -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Helpers.hpp - -1 #agm - - - -3 -mea - - gAsyncMqClIls - { - -4 as - cHrs - { - -5 - gpublic -: - -6  -ut32_t - -decodeRemagLgth -(* -bys -) { - -7 -ut32_t - -muɝlr - = 1; - -8 -ut32_t - - gvue - = 0; - -9 -ut8_t - - gcutBy - = 0; - -10 -ut8_t - - gcodedBy -; - -12 - gcodedBy - = -bys -[ -cutBy -++]; - -13 - gvue - +( -codedBy - & 127* -muɝlr -; - -14 - gmuɝlr - *= 128; - -15 } ( - gcodedBy - & 128) != 0); - -17  - gvue -; - -20  -ut8_t - -codeRemagLgth -( -ut32_t - -magLgth -, * -dei -) { - -21 -ut8_t - - gcutBy - = 0; - -22 -ut8_t - - gbysNded - = 0; - -25 -ut8_t - - gcodedBy - = -magLgth - % 128; - -26 - gmagLgth - /= 128; - -27 i( - gmagLgth - > 0) { - -28 - gcodedBy - = -codedBy - | 128; - -31 - gdei -[ -cutBy -++] = -codedBy -; - -32 - gbysNded -++; - -33 }  - gmagLgth - > 0); - -35  - gbysNded -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/MessageProperties.hpp - -1 #agm - - - -3  - sAsyncMqClMesgePrݔts - { - -4 -ut8_t - - mqos -; - -5 -bo - - mdup -; - -6 -bo - - m -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.cpp - -1  - ~"CnAckPack.h -" - -3 -usg - - gAsyncMqClIls -:: -CnAckPack -; - -5 - gCnAckPack -:: - $CnAckPack -( -PsgInfmi -* -rsgInfmi -, -OnCnAckIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_back -( -back -) - -8 , - `_byPosi -(0) - -9 , - `_ssiP -( -l -) - -10 , - $_cRuCode -(0) { - -11 - } -} - -13 - gCnAckPack -::~ - $CnAckPack -() { - -14 - } -} - -16  -CnAckPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -17  -cutBy - = -da -[(* -cutByPosi -)++]; - -18 i( -_byPosi -++ == 0) { - -19 -_ssiP - = ( -cutBy - << 7) >> 7; - -21 -_cRuCode - = -cutBy -; - -22 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -23 - `_back -( -_ssiP -, -_cRuCode -); - -25 - } -} - -27  - gCnAckPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -28 () -da -; - -29 () -cutByPosi -; - -30 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cCnAckPack - : -public - -Pack - { - -10 -public -: - -11 -exic - -CnAckPack -( -PsgInfmi -* -rsgInfmi -, -OnCnAckIlClback - -back -); - -12 ~ -CnAckPack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnCnAckIlClback - - g_back -; - -21 -ut8_t - - g_byPosi -; - -22 -bo - - g_ssiP -; - -23 -ut8_t - - g_cRuCode -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/Packet.hpp - -1 #agm - - - -3 -mea - - gAsyncMqClIls - { - -4 as - cPack - { - -5 - gpublic -: - -6 -vtu - ~ -Pack -() {} - -8 -vtu -  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) = 0; - -9 -vtu -  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) = 0; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.cpp - -1  - ~"PgRePack.h -" - -3 -usg - - gAsyncMqClIls -:: -PgRePack -; - -5 - gPgRePack -:: - $PgRePack -( -PsgInfmi -* -rsgInfmi -, -OnPgReIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - $_back -( -back -) { - -8 - } -} - -10 - gPgRePack -::~ - $PgRePack -() { - -11 - } -} - -13  -PgRePack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -14 () -da -; - -15 () -cutByPosi -; - -16 - } -} - -18  - gPgRePack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -19 () -da -; - -20 () -cutByPosi -; - -21 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cPgRePack - : -public - -Pack - { - -10 -public -: - -11 -exic - -PgRePack -( -PsgInfmi -* -rsgInfmi -, -OnPgReIlClback - -back -); - -12 ~ -PgRePack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnPgReIlClback - - g_back -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.cpp - -1  - ~"PubAckPack.h -" - -3 -usg - - gAsyncMqClIls -:: -PubAckPack -; - -5 - gPubAckPack -:: - $PubAckPack -( -PsgInfmi -* -rsgInfmi -, -OnPubAckIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_back -( -back -) - -8 , - `_byPosi -(0) - -9 , - `_ckIdMsb -(0) - -10 , - $_ckId -(0) { - -11 - } -} - -13 - gPubAckPack -::~ - $PubAckPack -() { - -14 - } -} - -16  -PubAckPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -17  -cutBy - = -da -[(* -cutByPosi -)++]; - -18 i( -_byPosi -++ == 0) { - -19 -_ckIdMsb - = -cutBy -; - -21 -_ckId - = -cutBy - | -_ckIdMsb - << 8; - -22 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -23 - `_back -( -_ckId -); - -25 - } -} - -27  - gPubAckPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -28 () -da -; - -29 () -cutByPosi -; - -30 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cPubAckPack - : -public - -Pack - { - -10 -public -: - -11 -exic - -PubAckPack -( -PsgInfmi -* -rsgInfmi -, -OnPubAckIlClback - -back -); - -12 ~ -PubAckPack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnPubAckIlClback - - g_back -; - -21 -ut8_t - - g_byPosi -; - -22  - g_ckIdMsb -; - -23 -ut16_t - - g_ckId -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.cpp - -1  - ~"PubCompPack.h -" - -3 -usg - - gAsyncMqClIls -:: -PubCompPack -; - -5 - gPubCompPack -:: - $PubCompPack -( -PsgInfmi -* -rsgInfmi -, -OnPubCompIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_back -( -back -) - -8 , - `_byPosi -(0) - -9 , - `_ckIdMsb -(0) - -10 , - $_ckId -(0) { - -11 - } -} - -13 - gPubCompPack -::~ - $PubCompPack -() { - -14 - } -} - -16  -PubCompPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -17  -cutBy - = -da -[(* -cutByPosi -)++]; - -18 i( -_byPosi -++ == 0) { - -19 -_ckIdMsb - = -cutBy -; - -21 -_ckId - = -cutBy - | -_ckIdMsb - << 8; - -22 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -23 - `_back -( -_ckId -); - -25 - } -} - -27  - gPubCompPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -28 () -da -; - -29 () -cutByPosi -; - -30 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cPubCompPack - : -public - -Pack - { - -10 -public -: - -11 -exic - -PubCompPack -( -PsgInfmi -* -rsgInfmi -, -OnPubCompIlClback - -back -); - -12 ~ -PubCompPack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnPubCompIlClback - - g_back -; - -21 -ut8_t - - g_byPosi -; - -22  - g_ckIdMsb -; - -23 -ut16_t - - g_ckId -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.cpp - -1  - ~"PubRecPack.h -" - -3 -usg - - gAsyncMqClIls -:: -PubRecPack -; - -5 - gPubRecPack -:: - $PubRecPack -( -PsgInfmi -* -rsgInfmi -, -OnPubRecIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_back -( -back -) - -8 , - `_byPosi -(0) - -9 , - `_ckIdMsb -(0) - -10 , - $_ckId -(0) { - -11 - } -} - -13 - gPubRecPack -::~ - $PubRecPack -() { - -14 - } -} - -16  -PubRecPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -17  -cutBy - = -da -[(* -cutByPosi -)++]; - -18 i( -_byPosi -++ == 0) { - -19 -_ckIdMsb - = -cutBy -; - -21 -_ckId - = -cutBy - | -_ckIdMsb - << 8; - -22 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -23 - `_back -( -_ckId -); - -25 - } -} - -27  - gPubRecPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -28 () -da -; - -29 () -cutByPosi -; - -30 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cPubRecPack - : -public - -Pack - { - -10 -public -: - -11 -exic - -PubRecPack -( -PsgInfmi -* -rsgInfmi -, -OnPubRecIlClback - -back -); - -12 ~ -PubRecPack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnPubRecIlClback - - g_back -; - -21 -ut8_t - - g_byPosi -; - -22  - g_ckIdMsb -; - -23 -ut16_t - - g_ckId -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.cpp - -1  - ~"PubRPack.h -" - -3 -usg - - gAsyncMqClIls -:: -PubRPack -; - -5 - gPubRPack -:: - $PubRPack -( -PsgInfmi -* -rsgInfmi -, -OnPubRIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_back -( -back -) - -8 , - `_byPosi -(0) - -9 , - `_ckIdMsb -(0) - -10 , - $_ckId -(0) { - -11 - } -} - -13 - gPubRPack -::~ - $PubRPack -() { - -14 - } -} - -16  -PubRPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -17  -cutBy - = -da -[(* -cutByPosi -)++]; - -18 i( -_byPosi -++ == 0) { - -19 -_ckIdMsb - = -cutBy -; - -21 -_ckId - = -cutBy - | -_ckIdMsb - << 8; - -22 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -23 - `_back -( -_ckId -); - -25 - } -} - -27  - gPubRPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -28 () -da -; - -29 () -cutByPosi -; - -30 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cPubRPack - : -public - -Pack - { - -10 -public -: - -11 -exic - -PubRPack -( -PsgInfmi -* -rsgInfmi -, -OnPubRIlClback - -back -); - -12 ~ -PubRPack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnPubRIlClback - - g_back -; - -21 -ut8_t - - g_byPosi -; - -22  - g_ckIdMsb -; - -23 -ut16_t - - g_ckId -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.cpp - -1  - ~"PublishPack.h -" - -3 -usg - - gAsyncMqClIls -:: -PublishPack -; - -5 - gPublishPack -:: - $PublishPack -( -PsgInfmi -* -rsgInfmi -, -OnMesgeIlClback - -daClback -, -OnPublishIlClback - -comeClback -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_daClback -( -daClback -) - -8 , - `_comeClback -( -comeClback -) - -9 , - `_dup -( -l -) - -10 , - `_qos -(0) - -11 , - `_ -(0) - -12 , - `_byPosi -(0) - -13 , - `_ticLgthMsb -(0) - -14 , - `_ticLgth -(0) - -15 , - `_igne -( -l -) - -16 , - `_ckIdMsb -(0) - -17 , - `_ckId -(0) - -18 , - `_yldLgth -(0) - -19 , - $_yldBysRd -(0) { - -20 -_dup - = -_rsgInfmi --> -ckFgs - & -HdFg -. -PUBLISH_DUP -; - -21 -_ - = -_rsgInfmi --> -ckFgs - & -HdFg -. -PUBLISH_RETAIN -; - -22  -qosMasked - = -_rsgInfmi --> -ckFgs - & 0x06; - -23  -qosMasked -) { - -24  -HdFg -. -PUBLISH_QOS0 -: - -25 -_qos - = 0; - -27  -HdFg -. -PUBLISH_QOS1 -: - -28 -_qos - = 1; - -30  -HdFg -. -PUBLISH_QOS2 -: - -31 -_qos - = 2; - -34 - } -} - -36 - gPublishPack -::~ - $PublishPack -() { - -37 - } -} - -39  -PublishPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -40  -cutBy - = -da -[(* -cutByPosi -)++]; - -41 i( -_byPosi - == 0) { - -42 -_ticLgthMsb - = -cutBy -; - -43 } i( -_byPosi - == 1) { - -44 -_ticLgth - = -cutBy - | -_ticLgthMsb - << 8; - -45 i( -_ticLgth - > -_rsgInfmi --> -maxTicLgth -) { - -46 -_igne - = -ue -; - -48 -_rsgInfmi --> -ticBufr -[ -_ticLgth -] = '\0'; - -50 } i( -_byPosi - >2 && _byPosi < 2 + -_ticLgth -) { - -52 i(! -_igne - -_rsgInfmi --> -ticBufr -[ -_byPosi - - 2] = -cutBy -; - -53 i( -_byPosi - =2 + -_ticLgth - - 1 && -_qos - == 0) { - -54 - `_ePayldHdlg -( -_rsgInfmi --> -magLgth - - ( -_byPosi - + 1)); - -57 } i( -_byPosi - =2 + -_ticLgth -) { - -58 -_ckIdMsb - = -cutBy -; - -60 -_ckId - = -cutBy - | -_ckIdMsb - << 8; - -61 - `_ePayldHdlg -( -_rsgInfmi --> -magLgth - - ( -_byPosi - + 1)); - -63 -_byPosi -++; - -64 - } -} - -66  - gPublishPack -:: - $_ePayldHdlg -( -ut32_t - -yldLgth -) { - -67 -_yldLgth - = -yldLgth -; - -68 i( -yldLgth - == 0) { - -69 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -70 i(! -_igne -) { - -71 - `_daClback -( -_rsgInfmi --> -ticBufr -, -nuαr -, -_qos -, -_dup -, -_ -, 0, 0, 0, -_ckId -); - -72 - `_comeClback -( -_ckId -, -_qos -); - -75 -_rsgInfmi --> -bufrS - = -BufrS -:: -PAYLOAD -; - -77 - } -} - -79  - gPublishPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -80 -size_t - -maToRd - = -n - - (* -cutByPosi -); - -81 i( -_yldBysRd - + -maToRd - > -_yldLgth -)emainToRead = _payloadLength - _payloadBytesRead; - -83 i(! -_igne - - `_daClback -( -_rsgInfmi --> -ticBufr -, -da - + (* -cutByPosi -), -_qos -, -_dup -, -_ -, -maToRd -, -_yldBysRd -, -_yldLgth -, -_ckId -); - -84 -_yldBysRd - + -maToRd -; - -85 (* -cutByPosi -+ -maToRd -; - -87 i( -_yldBysRd - = -_yldLgth -) { - -88 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -89 i(! -_igne - - `_comeClback -( -_ckId -, -_qos -); - -91 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../Fgs.h -" - -6  - ~"../PsgInfmi.h -" - -7  - ~"../Clbacks.h -" - -9 -mea - - gAsyncMqClIls - { - -10 as - cPublishPack - : -public - -Pack - { - -11 -public -: - -12 -exic - -PublishPack -( -PsgInfmi -* -rsgInfmi -, -OnMesgeIlClback - -daClback -, -OnPublishIlClback - -comeClback -); - -13 ~ -PublishPack -(); - -15  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -16  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -18 - give -: - -19 -PsgInfmi -* -_rsgInfmi -; - -20 -OnMesgeIlClback - - g_daClback -; - -21 -OnPublishIlClback - - g_comeClback -; - -23  -_ePayldHdlg -( -ut32_t - -yldLgth -); - -25 -bo - - g_dup -; - -26 -ut8_t - - g_qos -; - -27 -bo - - g_ -; - -29 -ut8_t - - g_byPosi -; - -30  - g_ticLgthMsb -; - -31 -ut16_t - - g_ticLgth -; - -32 -bo - - g_igne -; - -33  - g_ckIdMsb -; - -34 -ut16_t - - g_ckId -; - -35 -ut32_t - - g_yldLgth -; - -36 -ut32_t - - g_yldBysRd -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.cpp - -1  - ~"SubAckPack.h -" - -3 -usg - - gAsyncMqClIls -:: -SubAckPack -; - -5 - gSubAckPack -:: - $SubAckPack -( -PsgInfmi -* -rsgInfmi -, -OnSubAckIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_back -( -back -) - -8 , - `_byPosi -(0) - -9 , - `_ckIdMsb -(0) - -10 , - $_ckId -(0) { - -11 - } -} - -13 - gSubAckPack -::~ - $SubAckPack -() { - -14 - } -} - -16  -SubAckPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -17  -cutBy - = -da -[(* -cutByPosi -)++]; - -18 i( -_byPosi -++ == 0) { - -19 -_ckIdMsb - = -cutBy -; - -21 -_ckId - = -cutBy - | -_ckIdMsb - << 8; - -22 -_rsgInfmi --> -bufrS - = -BufrS -:: -PAYLOAD -; - -24 - } -} - -26  - gSubAckPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -27  -us - = -da -[(* -cutByPosi -)++]; - -44 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -45 - `_back -( -_ckId -, -us -); - -46 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cSubAckPack - : -public - -Pack - { - -10 -public -: - -11 -exic - -SubAckPack -( -PsgInfmi -* -rsgInfmi -, -OnSubAckIlClback - -back -); - -12 ~ -SubAckPack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnSubAckIlClback - - g_back -; - -21 -ut8_t - - g_byPosi -; - -22  - g_ckIdMsb -; - -23 -ut16_t - - g_ckId -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.cpp - -1  - ~"UnsubAckPack.h -" - -3 -usg - - gAsyncMqClIls -:: -UnsubAckPack -; - -5 - gUnsubAckPack -:: - $UnsubAckPack -( -PsgInfmi -* -rsgInfmi -, -OnUnsubAckIlClback - -back -) - -6 : - `_rsgInfmi -( -rsgInfmi -) - -7 , - `_back -( -back -) - -8 , - `_byPosi -(0) - -9 , - `_ckIdMsb -(0) - -10 , - $_ckId -(0) { - -11 - } -} - -13 - gUnsubAckPack -::~ - $UnsubAckPack -() { - -14 - } -} - -16  -UnsubAckPack -:: - $rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -17  -cutBy - = -da -[(* -cutByPosi -)++]; - -18 i( -_byPosi -++ == 0) { - -19 -_ckIdMsb - = -cutBy -; - -21 -_ckId - = -cutBy - | -_ckIdMsb - << 8; - -22 -_rsgInfmi --> -bufrS - = -BufrS -:: -NONE -; - -23 - `_back -( -_ckId -); - -25 - } -} - -27  - gUnsubAckPack -:: - $rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -) { - -28 () -da -; - -29 () -cutByPosi -; - -30 - } -} - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.hpp - -1 #agm - - - -3  - ~"Arduo.h -" - -4  - ~"Pack.h -" - -5  - ~"../PsgInfmi.h -" - -6  - ~"../Clbacks.h -" - -8 -mea - - gAsyncMqClIls - { - -9 as - cUnsubAckPack - : -public - -Pack - { - -10 -public -: - -11 -exic - -UnsubAckPack -( -PsgInfmi -* -rsgInfmi -, -OnUnsubAckIlClback - -back -); - -12 ~ -UnsubAckPack -(); - -14  -rVbHd -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -15  -rPayld -(* -da -, -size_t - -n -, size_t* -cutByPosi -); - -17 - give -: - -18 -PsgInfmi -* -_rsgInfmi -; - -19 -OnUnsubAckIlClback - - g_back -; - -21 -ut8_t - - g_byPosi -; - -22  - g_ckIdMsb -; - -23 -ut16_t - - g_ckId -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/ParsingInformation.hpp - -1 #agm - - - -3 -mea - - gAsyncMqClIls - { - -4 as - cBufrS - : -ut8_t - { - -5 -NONE - = 0, - -6 - gREMAINING_LENGTH - = 2, - -7 - gVARIABLE_HEADER - = 3, - -8 - gPAYLOAD - = 4 - -11  - sPsgInfmi - { - -12 -BufrS - - gbufrS -; - -14 -ut16_t - - gmaxTicLgth -; - -15 * - gticBufr -; - -17 -ut8_t - - gckTy -; - -18 -ut16_t - - gckFgs -; - -19 -ut32_t - - gmagLgth -; - - @.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Storage.hpp - -1 #agm - - - -3 -mea - - gAsyncMqClIls - { - -4  - sPdgPubR - { - -5 -ut16_t - - gckId -; - -8  - sPdgAck - { - -9 -ut8_t - - gckTy -; - -10 -ut8_t - - ghdFg -; - -11 -ut16_t - - gckId -; - - @.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.cpp - -22  - ~"Arduo.h -" - -24  - ~"AsyncTCP.h -" - -26  - ~"lw/t.h -" - -27  - ~"lw/t.h -" - -28  - ~"lw/.h -" - -29  - ~"lw/dns.h -" - -30  - ~"lw/r.h -" - -32  - ~"e_sk_wdt.h -" - -39 -LWIP_TCP_SENT -, -LWIP_TCP_RECV -, -LWIP_TCP_FIN -, -LWIP_TCP_ERROR -, -LWIP_TCP_POLL -, -LWIP_TCP_CLEAR -, -LWIP_TCP_ACCEPT -, -LWIP_TCP_CONNECTED -, -LWIP_TCP_DNS - - -40 } - tlw_evt_t -; - -43 -lw_evt_t - - mevt -; - -44 * - mg -; - -47 * - mpcb -; - -48 -t8_t - - mr -; - -49 } - mced -; - -51 -t8_t - - mr -; - -52 } - mr -; - -54 -t_pcb - * - mpcb -; - -55 -ut16_t - - mn -; - -56 } - m -; - -58 -t_pcb - * - mpcb -; - -59 -pbuf - * - mpb -; - -60 -t8_t - - mr -; - -61 } - mcv -; - -63 -t_pcb - * - mpcb -; - -64 -t8_t - - mr -; - -65 } - mf -; - -67 -t_pcb - * - mpcb -; - -68 } - mpl -; - -70 -AsyncCl - * - m -; - -71 } - mac -; - -73 cڡ * - mme -; - -74 -_addr_t - - maddr -; - -75 } - mdns -; - -77 } - tlw_evt_ck_t -; - -79  -xQueueHd - - g_async_queue -; - -80  -TaskHd_t - - g_async_rvi_sk_hd - = -NULL -; - -83 -SemheHd_t - - g_s_lock -; - -84 cڡ  - g_numb_of_od_s - = -CONFIG_LWIP_MAX_ACTIVE_TCP -; - -85  - g_od_s -[ -_numb_of_od_s -]; - -86  - g_od_dex - = []() { - -87 -_s_lock - = -xSemheCeBy -(); - -88 -xSemheGive -( -_s_lock -); - -89  - gi - = 0; i < - g_numb_of_od_s -; ++ i) { - -90 - g_od_s -[ -i -] = 1; - -96  -le - -bo - - $__async_evt_queue -(){ - -97 if(! -_async_queue -){ - -98 -_async_queue - = - `xQueueCe -(32, ( -lw_evt_ck_t - *)); - -99 if(! -_async_queue -){ - -100  -l -; - -103  -ue -; - -104 - } -} - -106  -le - -bo - - $_nd_async_evt -( -lw_evt_ck_t - ** -e -){ - -107  -_async_queue - && - `xQueueSd -(_async_queue, -e -, -ptMAX_DELAY -= -pdPASS -; - -108 - } -} - -110  -le - -bo - - $_d_async_evt -( -lw_evt_ck_t - ** -e -){ - -111  -_async_queue - && - `xQueueSdToFrt -(_async_queue, -e -, -ptMAX_DELAY -= -pdPASS -; - -112 - } -} - -114  -le - -bo - - $_g_async_evt -( -lw_evt_ck_t - ** -e -){ - -115  -_async_queue - && - `xQueueReive -(_async_queue, -e -, -ptMAX_DELAY -= -pdPASS -; - -116 - } -} - -118  -bo - - $_move_evts_wh_g -(* -g -){ - -119 -lw_evt_ck_t - * -f_ck - = -NULL -; - -120 -lw_evt_ck_t - * -ck - = -NULL -; - -122 if(! -_async_queue -){ - -123  -l -; - -126 ! -f_ck -){ - -127 if( - `xQueueReive -( -_async_queue -, & -f_ck -, 0! -pdPASS -){ - -128  -l -; - -131 if(() -f_ck --> -g - == ()arg){ - -132 - ` -( -f_ck -); - -133 -f_ck - = -NULL -; - -135 } if( - `xQueueSd -( -_async_queue -, & -f_ck -, -ptMAX_DELAY -! -pdPASS -){ - -136  -l -; - -140  - `xQueuePk -( -_async_queue -, & -ck -, 0= -pdPASS - &&ack ! -f_ck -){ - -141 if( - `xQueueReive -( -_async_queue -, & -ck -, 0! -pdPASS -){ - -142  -l -; - -144 if(() -ck --> -g - == ()arg){ - -145 - ` -( -ck -); - -146 -ck - = -NULL -; - -147 } if( - `xQueueSd -( -_async_queue -, & -ck -, -ptMAX_DELAY -! -pdPASS -){ - -148  -l -; - -151  -ue -; - -152 - } -} - -154  - $_hd_async_evt -( -lw_evt_ck_t - * -e -){ - -155 if( -e --> -evt - = -LWIP_TCP_CLEAR -){ - -156 - `_move_evts_wh_g -( -e --> -g -); - -157 } if( -e --> -evt - = -LWIP_TCP_RECV -){ - -159 -AsyncCl -:: - `_s_cv -( -e --> -g -,-> -cv -. -pcb -,->cv. -pb -,->cv. -r -); - -160 } if( -e --> -evt - = -LWIP_TCP_FIN -){ - -162 -AsyncCl -:: - `_s_f -( -e --> -g -,-> -f -. -pcb -,->f. -r -); - -163 } if( -e --> -evt - = -LWIP_TCP_SENT -){ - -165 -AsyncCl -:: - `_s_ -( -e --> -g -,-> - -. -pcb -,->. -n -); - -166 } if( -e --> -evt - = -LWIP_TCP_POLL -){ - -168 -AsyncCl -:: - `_s_pl -( -e --> -g -,-> -pl -. -pcb -); - -169 } if( -e --> -evt - = -LWIP_TCP_ERROR -){ - -171 -AsyncCl -:: - `_s_r -( -e --> -g -,-> -r -. -r -); - -172 } if( -e --> -evt - = -LWIP_TCP_CONNECTED -){ - -174 -AsyncCl -:: - `_s_ced -( -e --> -g -,-> -ced -. -pcb -,->ced. -r -); - -175 } if( -e --> -evt - = -LWIP_TCP_ACCEPT -){ - -177 -AsyncSv -:: - `_s_aced -( -e --> -g -,-> -ac -. - -); - -178 } if( -e --> -evt - = -LWIP_TCP_DNS -){ - -180 -AsyncCl -:: - `_s_dns_found -( -e --> -dns -. -me -, &e->dns. -addr -,-> -g -); - -182 - ` -((*)( -e -)); - -183 - } -} - -185  - $_async_rvi_sk -(* -pvPams -){ - -186 -lw_evt_ck_t - * -ck - = -NULL -; - -188 if( - `_g_async_evt -(& -ck -)){ - -189 #i -CONFIG_ASYNC_TCP_USE_WDT - - -190 if( - `e_sk_wdt_add -( -NULL -! -ESP_OK -){ - -191 - `log_e -("Failedoddsyncasko WDT"); - -194 - `_hd_async_evt -( -ck -); - -195 #i -CONFIG_ASYNC_TCP_USE_WDT - - -196 if( - `e_sk_wdt_de -( -NULL -! -ESP_OK -){ - -197 - `log_e -("Failedoemoveoopask from WDT"); - -202 - `vTaskDe -( -NULL -); - -203 -_async_rvi_sk_hd - = -NULL -; - -204 - } -} - -213  -bo - - $_t_async_sk -(){ - -214 if(! - `__async_evt_queue -()){ - -215  -l -; - -217 if(! -_async_rvi_sk_hd -){ - -218 - `xTaskCeUnivl -( -_async_rvi_sk -, "async_t", 8192 * 2, -NULL -, 3, & -_async_rvi_sk_hd -, -CONFIG_ASYNC_TCP_RUNNING_CORE -); - -219 if(! -_async_rvi_sk_hd -){ - -220  -l -; - -223  -ue -; - -224 - } -} - -230  -t8_t - - $_t_r_evts -(* -g -) { - -231 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -232 -e --> -evt - = -LWIP_TCP_CLEAR -; - -233 -e --> -g - =rg; - -234 i(! - `_d_async_evt -(& -e -)) { - -235 - ` -((*)( -e -)); - -237  -ERR_OK -; - -238 - } -} - -240  -t8_t - - $_t_ced -(* -g -, -t_pcb - * -pcb -, -t8_t - -r -) { - -242 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -243 -e --> -evt - = -LWIP_TCP_CONNECTED -; - -244 -e --> -g - =rg; - -245 -e --> -ced -. -pcb - =cb; - -246 -e --> -ced -. -r - =rr; - -247 i(! - `_d_async_evt -(& -e -)) { - -248 - ` -((*)( -e -)); - -250  -ERR_OK -; - -251 - } -} - -253  -t8_t - - $_t_pl -(* -g -,  -t_pcb - * -pcb -) { - -255 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -256 -e --> -evt - = -LWIP_TCP_POLL -; - -257 -e --> -g - =rg; - -258 -e --> -pl -. -pcb - =cb; - -259 i(! - `_nd_async_evt -(& -e -)) { - -260 - ` -((*)( -e -)); - -262  -ERR_OK -; - -263 - } -} - -265  -t8_t - - $_t_cv -(* -g -,  -t_pcb - * -pcb -,  -pbuf - * -pb -, -t8_t - -r -) { - -266 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -267 -e --> -g - =rg; - -268 if( -pb -){ - -270 -e --> -evt - = -LWIP_TCP_RECV -; - -271 -e --> -cv -. -pcb - =cb; - -272 -e --> -cv -. -pb - =b; - -273 -e --> -cv -. -r - =rr; - -276 -e --> -evt - = -LWIP_TCP_FIN -; - -277 -e --> -f -. -pcb - =cb; - -278 -e --> -f -. -r - =rr; - -280 -AsyncCl -:: - `_s_lw_f -( -e --> -g -,-> -f -. -pcb -,->f. -r -); - -282 i(! - `_nd_async_evt -(& -e -)) { - -283 - ` -((*)( -e -)); - -285  -ERR_OK -; - -286 - } -} - -288  -t8_t - - $_t_ -(* -g -,  -t_pcb - * -pcb -, -ut16_t - -n -) { - -290 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -291 -e --> -evt - = -LWIP_TCP_SENT -; - -292 -e --> -g - =rg; - -293 -e --> - -. -pcb - =cb; - -294 -e --> - -. -n - =en; - -295 i(! - `_nd_async_evt -(& -e -)) { - -296 - ` -((*)( -e -)); - -298  -ERR_OK -; - -299 - } -} - -301  - $_t_r -(* -g -, -t8_t - -r -) { - -303 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -304 -e --> -evt - = -LWIP_TCP_ERROR -; - -305 -e --> -g - =rg; - -306 -e --> -r -. -r - =rr; - -307 i(! - `_nd_async_evt -(& -e -)) { - -308 - ` -((*)( -e -)); - -310 - } -} - -312  - $_t_dns_found -(cڡ * -me -,  -_addr - * -addr -, * -g -) { - -313 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -315 -e --> -evt - = -LWIP_TCP_DNS -; - -316 -e --> -g - =rg; - -317 -e --> -dns -. -me - =ame; - -318 i( -addr -) { - -319 - `memy -(& -e --> -dns -. -addr -, -addr -, ( -_addr -)); - -321 - `memt -(& -e --> -dns -. -addr -, 0, (e->dns.addr)); - -323 i(! - `_nd_async_evt -(& -e -)) { - -324 - ` -((*)( -e -)); - -326 - } -} - -329  -t8_t - - $_t_ac -(* -g -, -AsyncCl - * - -) { - -330 -lw_evt_ck_t - * -e - = (lw_evt_ck_*) - `mloc -((lwip_event_packet_t)); - -331 -e --> -evt - = -LWIP_TCP_ACCEPT -; - -332 -e --> -g - =rg; - -333 -e --> -ac -. - - = client; - -334 i(! - `_d_async_evt -(& -e -)) { - -335 - ` -((*)( -e -)); - -337  -ERR_OK -; - -338 - } -} - -344  - ~"lw/iv/t_iv.h -" - -347  -t_i__da - - m -; - -348 -t_pcb - * - mpcb -; - -349 -t8_t - - mod_ -; - -350 -t8_t - - mr -; - -353 cڡ * - mda -; - -354 -size_t - - msize -; - -355 -ut8_t - - miags -; - -356 } - mwre -; - -357 -size_t - - mived -; - -359 -_addr_t - * - maddr -; - -360 -ut16_t - - mpt -; - -361 -t_ced_ - - mcb -; - -362 } - mc -; - -364 -_addr_t - * - maddr -; - -365 -ut16_t - - mpt -; - -366 } - mbd -; - -367 -ut8_t - - mbacklog -; - -369 } - tt_i__t -; - -371  -r_t - - $_t_ouut_i -( -t_i__da - * -i__msg -){ - -372 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -373 -msg --> -r - = -ERR_CONN -; - -374 if( -msg --> -od_ - =-1 || ! -_od_s -[msg->closed_slot]) { - -375 -msg --> -r - = - `t_ouut -(msg-> -pcb -); - -377  -msg --> -r -; - -378 - } -} - -380  -e_r_t - - $_t_ouut -( -t_pcb - * -pcb -, -t8_t - -od_ -) { - -381 if(! -pcb -){ - -382  -ERR_CONN -; - -384 -t_i__t - -msg -; - -385 -msg -. -pcb - =cb; - -386 -msg -. -od_ - = closed_slot; - -387 - `t_i_ -( -_t_ouut_i -, ( -t_i__da -*)& -msg -); - -388  -msg -. -r -; - -389 - } -} - -391  -r_t - - $_t_wre_i -( -t_i__da - * -i__msg -){ - -392 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -393 -msg --> -r - = -ERR_CONN -; - -394 if( -msg --> -od_ - =-1 || ! -_od_s -[msg->closed_slot]) { - -395 -msg --> -r - = - `t_wre -(msg-> -pcb -, msg-> -wre -. -da -, msg->wre. -size -, msg->wre. -iags -); - -397  -msg --> -r -; - -398 - } -} - -400  -e_r_t - - $_t_wre -( -t_pcb - * -pcb -, -t8_t - -od_ -, cڡ * -da -, -size_t - -size -, -ut8_t - -iags -) { - -401 if(! -pcb -){ - -402  -ERR_CONN -; - -404 -t_i__t - -msg -; - -405 -msg -. -pcb - =cb; - -406 -msg -. -od_ - = closed_slot; - -407 -msg -. -wre -. -da - = data; - -408 -msg -. -wre -. -size - = size; - -409 -msg -. -wre -. -iags - =piflags; - -410 - `t_i_ -( -_t_wre_i -, ( -t_i__da -*)& -msg -); - -411  -msg -. -r -; - -412 - } -} - -414  -r_t - - $_t_cved_i -( -t_i__da - * -i__msg -){ - -415 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -416 -msg --> -r - = -ERR_CONN -; - -417 if( -msg --> -od_ - =-1 || ! -_od_s -[msg->closed_slot]) { - -418 -msg --> -r - = 0; - -419 - `t_cved -( -msg --> -pcb -, msg-> -ived -); - -421  -msg --> -r -; - -422 - } -} - -424  -e_r_t - - $_t_cved -( -t_pcb - * -pcb -, -t8_t - -od_ -, -size_t - -n -) { - -425 if(! -pcb -){ - -426  -ERR_CONN -; - -428 -t_i__t - -msg -; - -429 -msg -. -pcb - =cb; - -430 -msg -. -od_ - = closed_slot; - -431 -msg -. -ived - = -n -; - -432 - `t_i_ -( -_t_cved_i -, ( -t_i__da -*)& -msg -); - -433  -msg -. -r -; - -434 - } -} - -436  -r_t - - $_t_o_i -( -t_i__da - * -i__msg -){ - -437 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -438 -msg --> -r - = -ERR_CONN -; - -439 if( -msg --> -od_ - =-1 || ! -_od_s -[msg->closed_slot]) { - -440 -msg --> -r - = - `t_o -(msg-> -pcb -); - -442  -msg --> -r -; - -443 - } -} - -445  -e_r_t - - $_t_o -( -t_pcb - * -pcb -, -t8_t - -od_ -) { - -446 if(! -pcb -){ - -447  -ERR_CONN -; - -449 -t_i__t - -msg -; - -450 -msg -. -pcb - =cb; - -451 -msg -. -od_ - = closed_slot; - -452 - `t_i_ -( -_t_o_i -, ( -t_i__da -*)& -msg -); - -453  -msg -. -r -; - -454 - } -} - -456  -r_t - - $_t_abt_i -( -t_i__da - * -i__msg -){ - -457 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -458 -msg --> -r - = -ERR_CONN -; - -459 if( -msg --> -od_ - =-1 || ! -_od_s -[msg->closed_slot]) { - -460 - `t_abt -( -msg --> -pcb -); - -462  -msg --> -r -; - -463 - } -} - -465  -e_r_t - - $_t_abt -( -t_pcb - * -pcb -, -t8_t - -od_ -) { - -466 if(! -pcb -){ - -467  -ERR_CONN -; - -469 -t_i__t - -msg -; - -470 -msg -. -pcb - =cb; - -471 -msg -. -od_ - = closed_slot; - -472 - `t_i_ -( -_t_abt_i -, ( -t_i__da -*)& -msg -); - -473  -msg -. -r -; - -474 - } -} - -476  -r_t - - $_t_c_i -( -t_i__da - * -i__msg -){ - -477 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -478 -msg --> -r - = - `t_c -(msg-> -pcb -, msg-> -c -. -addr -, msg->c. -pt -, msg->c. -cb -); - -479  -msg --> -r -; - -480 - } -} - -482  -e_r_t - - $_t_c -( -t_pcb - * -pcb -, -t8_t - -od_ -, -_addr_t - * -addr -, -ut16_t - -pt -, -t_ced_ - -cb -) { - -483 if(! -pcb -){ - -484  -ESP_FAIL -; - -486 -t_i__t - -msg -; - -487 -msg -. -pcb - =cb; - -488 -msg -. -od_ - = closed_slot; - -489 -msg -. -c -. -addr - =ddr; - -490 -msg -. -c -. -pt - =ort; - -491 -msg -. -c -. -cb - = cb; - -492 - `t_i_ -( -_t_c_i -, ( -t_i__da -*)& -msg -); - -493  -msg -. -r -; - -494 - } -} - -496  -r_t - - $_t_bd_i -( -t_i__da - * -i__msg -){ - -497 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -498 -msg --> -r - = - `t_bd -(msg-> -pcb -, msg-> -bd -. -addr -, msg->bd. -pt -); - -499  -msg --> -r -; - -500 - } -} - -502  -e_r_t - - $_t_bd -( -t_pcb - * -pcb -, -_addr_t - * -addr -, -ut16_t - -pt -) { - -503 if(! -pcb -){ - -504  -ESP_FAIL -; - -506 -t_i__t - -msg -; - -507 -msg -. -pcb - =cb; - -508 -msg -. -od_ - = -1; - -509 -msg -. -bd -. -addr - =ddr; - -510 -msg -. -bd -. -pt - =ort; - -511 - `t_i_ -( -_t_bd_i -, ( -t_i__da -*)& -msg -); - -512  -msg -. -r -; - -513 - } -} - -515  -r_t - - $_t_li_i -( -t_i__da - * -i__msg -){ - -516 -t_i__t - * -msg - = (t_i__*) -i__msg -; - -517 -msg --> -r - = 0; - -518 -msg --> -pcb - = - `t_li_wh_backlog -(msg->pcb, msg-> -backlog -); - -519  -msg --> -r -; - -520 - } -} - -522  -t_pcb - * - $_t_li_wh_backlog -( -t_pcb - * -pcb -, -ut8_t - -backlog -) { - -523 if(! -pcb -){ - -524  -NULL -; - -526 -t_i__t - -msg -; - -527 -msg -. -pcb - =cb; - -528 -msg -. -od_ - = -1; - -529 -msg -. -backlog - = backlog?backlog:0xFF; - -530 - `t_i_ -( -_t_li_i -, ( -t_i__da -*)& -msg -); - -531  -msg -. -pcb -; - -532 - } -} - -540 - gAsyncCl -:: - $AsyncCl -( -t_pcb -* -pcb -) - -541 : - `_c_cb -(0) - -542 , - `_c_cb_g -(0) - -543 , - `_disrd_cb -(0) - -544 , - `_disrd_cb_g -(0) - -545 , - `__cb -(0) - -546 , - `__cb_g -(0) - -547 , - `_r_cb -(0) - -548 , - `_r_cb_g -(0) - -549 , - `_cv_cb -(0) - -550 , - `_cv_cb_g -(0) - -551 , - `_pb_cb -(0) - -552 , - `_pb_cb_g -(0) - -553 , - `_timeout_cb -(0) - -554 , - `_timeout_cb_g -(0) - -555 , - `_pcb_busy -( -l -) - -556 , - `_pcb__ -(0) - -557 , - `_ack_pcb -( -ue -) - -558 , - `_rx_ϡ_ck -(0) - -559 , - `_rx_s_timeout -(0) - -560 , - `_ack_timeout -( -ASYNC_MAX_ACK_TIME -) - -561 , - `_c_pt -(0) - -562 , - `ev -( -NULL -) - -563 , - $xt -( -NULL -) - -565 -_pcb - = -pcb -; - -566 -_od_ - = -1; - -567 if( -_pcb -){ - -568 - `xSemheTake -( -_s_lock -, -ptMAX_DELAY -); - -569  -od__m_dex - = 0; - -570  -i - = 0; i < -_numb_of_od_s -; ++ i) { - -571 i(( -_od_ - =-1 || -_od_s -[ -i -] < -od__m_dex -) && _closed_slots[i] != 0) { - -572 -od__m_dex - = -_od_s -[ -i -]; - -573 -_od_ - = -i -; - -576 -_od_s -[ -_od_ -] = 0; - -577 - `xSemheGive -( -_s_lock -); - -579 -_rx_ϡ_ck - = - `mlis -(); - -580 - `t_g -( -_pcb -, -this -); - -581 - `t_cv -( -_pcb -, & -_t_cv -); - -582 - `t_ -( -_pcb -, & -_t_ -); - -583 - `t_r -( -_pcb -, & -_t_r -); - -584 - `t_pl -( -_pcb -, & -_t_pl -, 1); - -586 - } -} - -588 - gAsyncCl -::~ - $AsyncCl -(){ - -589 if( -_pcb -) { - -590 - `_o -(); - -592 - } -} - -598 - gAsyncCl -& AsyncCl:: -ݔ -=(cڡ -AsyncCl -& -h -){ - -599 i( -_pcb -) { - -600 -_o -(); - -603 - g_pcb - = -h -. -_pcb -; - -604 - g_od_ - = -h -. -_od_ -; - -605 i( - g_pcb -) { - -606 - g_rx_ϡ_ck - = -mlis -(); - -607 -t_g -( -_pcb -, -this -); - -608 -t_cv -( -_pcb -, & -_t_cv -); - -609 -t_ -( -_pcb -, & -_t_ -); - -610 -t_r -( -_pcb -, & -_t_r -); - -611 -t_pl -( -_pcb -, & -_t_pl -, 1); - -613  * - gthis -; - -616 -bo - - gAsyncCl -:: -ݔ -==(cڡ -AsyncCl - & -h -) { - -617  -_pcb - = -h -._pcb; - -620 - gAsyncCl - & AsyncCl:: -ݔ -+=(cڡ -AsyncCl - & -h -) { - -621 if( -xt - = -NULL -){ - -622 -xt - = ( -AsyncCl -*)(& -h -); - -623 - gxt --> - gev - = -this -; - -625 -AsyncCl - * - gc - = -xt -; - -626  - gc --> - gxt - ! -NULL -) { - -627 -c - = c-> -xt -; - -629 - gc --> - gxt - =( -AsyncCl -*)(& -h -); - -630 - gc --> - gxt --> - gev - = -c -; - -632  * - gthis -; - -639  - gAsyncCl -:: - $C -( -AcCHdr - -cb -, * -g -){ - -640 -_c_cb - = -cb -; - -641 -_c_cb_g - = -g -; - -642 - } -} - -644  - gAsyncCl -:: - $Disc -( -AcCHdr - -cb -, * -g -){ - -645 -_disrd_cb - = -cb -; - -646 -_disrd_cb_g - = -g -; - -647 - } -} - -649  - gAsyncCl -:: - $Ack -( -AcAckHdr - -cb -, * -g -){ - -650 -__cb - = -cb -; - -651 -__cb_g - = -g -; - -652 - } -} - -654  - gAsyncCl -:: - $E -( -AcEHdr - -cb -, * -g -){ - -655 -_r_cb - = -cb -; - -656 -_r_cb_g - = -g -; - -657 - } -} - -659  - gAsyncCl -:: - $Da -( -AcDaHdr - -cb -, * -g -){ - -660 -_cv_cb - = -cb -; - -661 -_cv_cb_g - = -g -; - -662 - } -} - -664  - gAsyncCl -:: - $Pack -( -AcPackHdr - -cb -, * -g -){ - -665 -_pb_cb - = -cb -; - -666 -_pb_cb_g - = -g -; - -667 - } -} - -669  - gAsyncCl -:: - $Timeout -( -AcTimeoutHdr - -cb -, * -g -){ - -670 -_timeout_cb - = -cb -; - -671 -_timeout_cb_g - = -g -; - -672 - } -} - -674  - gAsyncCl -:: - $Pl -( -AcCHdr - -cb -, * -g -){ - -675 -_pl_cb - = -cb -; - -676 -_pl_cb_g - = -g -; - -677 - } -} - -683 -bo - - gAsyncCl -:: - $c -( -IPAddss - - -, -ut16_t - -pt -){ - -684 i( -_pcb -){ - -685 - `log_w -("ady ced, s %d", -_pcb --> -e -); - -686  -l -; - -688 if(! - `_t_async_sk -()){ - -689 - `log_e -("failedo startask"); - -690  -l -; - -693 -_addr_t - -addr -; - -694 -addr -. -ty - = -IPADDR_TYPE_V4 -; - -695 -addr -. -u_addr -. -4 -.add - -; - -697 -t_pcb -* -pcb - = - `t_w__ty -( -IPADDR_TYPE_V4 -); - -698 i(! -pcb -){ - -699 - `log_e -("pcb == NULL"); - -700  -l -; - -703 - `t_g -( -pcb -, -this -); - -704 - `t_r -( -pcb -, & -_t_r -); - -705 - `t_cv -( -pcb -, & -_t_cv -); - -706 - `t_ -( -pcb -, & -_t_ -); - -707 - `t_pl -( -pcb -, & -_t_pl -, 1); - -709 - `_t_c -( -pcb -, -_od_ -, & -addr -, -pt -,( -t_ced_ -)& -_t_ced -); - -710  -ue -; - -711 - } -} - -713 -bo - - gAsyncCl -:: - $c -(cڡ * -ho -, -ut16_t - -pt -){ - -714 -_addr_t - -addr -; - -716 if(! - `_t_async_sk -()){ - -717 -Sl -. - `n -("failedo startask"); - -718 - `log_e -("failedo startask"); - -719  -l -; - -722 -r_t - -r - = - `dns_ghobyme -( -ho -, & -addr -, ( -dns_found_back -)& -_t_dns_found -, -this -); - -723 if( -r - = -ERR_OK -) { - -724  - `c -( - `IPAddss -( -addr -. -u_addr -. -4 -.addr), -pt -); - -725 } if( -r - = -ERR_INPROGRESS -) { - -726 -_c_pt - = -pt -; - -727  -ue -; - -729 - `log_e -("r: %d", -r -); - -730  -l -; - -731 - } -} - -733  - gAsyncCl -:: - $o -( -bo - -now -){ - -734 if( -_pcb -){ - -735 - `_t_cved -( -_pcb -, -_od_ -, -_rx_ack_n -); - -737 - `_o -(); - -738 - } -} - -740 -t8_t - - gAsyncCl -:: - $abt -(){ - -741 if( -_pcb -) { - -742 - `_t_abt -( -_pcb -, -_od_ - ); - -743 -_pcb - = -NULL -; - -745  -ERR_ABRT -; - -746 - } -} - -748 -size_t - - gAsyncCl -:: - $a -(){ - -749 if(( -_pcb - ! -NULL -&& (_pcb-> -e - == 4)){ - -750  - `t_dbuf -( -_pcb -); - -753 - } -} - -755 -size_t - - gAsyncCl -:: - $add -(cڡ * -da -, -size_t - -size -, -ut8_t - -iags -) { - -756 if(! -_pcb - || -size - =0 || -da - = -NULL -) { - -759 -size_t - -room - = - `a -(); - -760 if(! -room -) { - -763 -size_t - -wl_nd - = ( -room - < -size -) ?oom : size; - -764 -t8_t - -r - = -ERR_OK -; - -765 -r - = - `_t_wre -( -_pcb -, -_od_ -, -da -, -wl_nd -, -iags -); - -766 if( -r - ! -ERR_OK -) { - -769  -wl_nd -; - -770 - } -} - -772 -bo - - gAsyncCl -:: - $nd -(){ - -773 -t8_t - -r - = -ERR_OK -; - -774 -r - = - `_t_ouut -( -_pcb -, -_od_ -); - -775 if( -r - = -ERR_OK -){ - -776 -_pcb_busy - = -ue -; - -777 -_pcb__ - = - `mlis -(); - -778  -ue -; - -780  -l -; - -781 - } -} - -783 -size_t - - gAsyncCl -:: - $ack -( -size_t - -n -){ - -784 if( -n - > -_rx_ack_n -) - -785 -n - = -_rx_ack_n -; - -786 if( -n -){ - -787 - `_t_cved -( -_pcb -, -_od_ -, -n -); - -789 -_rx_ack_n - - -n -; - -790  -n -; - -791 - } -} - -793  - gAsyncCl -:: - $ackPack -( -pbuf - * -pb -){ - -794 if(! -pb -){ - -797 - `_t_cved -( -_pcb -, -_od_ -, -pb --> -n -); - -798 - `pbuf_ -( -pb -); - -799 - } -} - -805 -t8_t - - gAsyncCl -:: - $_o -(){ - -807 -t8_t - -r - = -ERR_OK -; - -808 if( -_pcb -) { - -810 - `t_g -( -_pcb -, -NULL -); - -811 - `t_ -( -_pcb -, -NULL -); - -812 - `t_cv -( -_pcb -, -NULL -); - -813 - `t_r -( -_pcb -, -NULL -); - -814 - `t_pl -( -_pcb -, -NULL -, 0); - -815 - `_t_r_evts -( -this -); - -816 -r - = - `_t_o -( -_pcb -, -_od_ -); - -817 if( -r - ! -ERR_OK -) { - -818 -r - = - `abt -(); - -820 -_pcb - = -NULL -; - -821 if( -_disrd_cb -) { - -822 - `_disrd_cb -( -_disrd_cb_g -, -this -); - -825  -r -; - -826 - } -} - -832 -t8_t - - gAsyncCl -:: - $_ced -(* -pcb -, -t8_t - -r -){ - -833 -_pcb - = -t_ -< -t_pcb -*>( -pcb -); - -834 if( -_pcb -){ - -835 -_rx_ϡ_ck - = - `mlis -(); - -836 -_pcb_busy - = -l -; - -841 if( -_c_cb -) { - -842 - `_c_cb -( -_c_cb_g -, -this -); - -844  -ERR_OK -; - -845 - } -} - -847  - gAsyncCl -:: - $_r -( -t8_t - -r -) { - -848 if( -_pcb -){ - -849 - `t_g -( -_pcb -, -NULL -); - -850 - `t_ -( -_pcb -, -NULL -); - -851 - `t_cv -( -_pcb -, -NULL -); - -852 - `t_r -( -_pcb -, -NULL -); - -853 - `t_pl -( -_pcb -, -NULL -, 0); - -854 -_pcb - = -NULL -; - -856 if( -_r_cb -) { - -857 - `_r_cb -( -_r_cb_g -, -this -, -r -); - -859 if( -_disrd_cb -) { - -860 - `_disrd_cb -( -_disrd_cb_g -, -this -); - -862 - } -} - -865 -t8_t - - gAsyncCl -:: - $_lw_f -( -t_pcb -* -pcb -, -t8_t - -r -) { - -866 if(! -_pcb - || -pcb - != _pcb){ - -867 - `log_e -("0x%08x !0x%08x", ( -ut32_t -) -pcb -, (ut32_t) -_pcb -); - -868  -ERR_OK -; - -870 - `t_g -( -_pcb -, -NULL -); - -871 - `t_ -( -_pcb -, -NULL -); - -872 - `t_cv -( -_pcb -, -NULL -); - -873 - `t_r -( -_pcb -, -NULL -); - -874 - `t_pl -( -_pcb -, -NULL -, 0); - -875 if( - `t_o -( -_pcb -! -ERR_OK -) { - -876 - `t_abt -( -_pcb -); - -878 -_od_s -[ -_od_ -] = -_od_dex -; - -879 ++ -_od_dex -; - -880 -_pcb - = -NULL -; - -881  -ERR_OK -; - -882 - } -} - -885 -t8_t - - gAsyncCl -:: - $_f -( -t_pcb -* -pcb -, -t8_t - -r -) { - -886 - `_t_r_evts -( -this -); - -887 if( -_disrd_cb -) { - -888 - `_disrd_cb -( -_disrd_cb_g -, -this -); - -890  -ERR_OK -; - -891 - } -} - -893 -t8_t - - gAsyncCl -:: - $_ -( -t_pcb -* -pcb -, -ut16_t - -n -) { - -894 -_rx_ϡ_ck - = - `mlis -(); - -896 -_pcb_busy - = -l -; - -897 if( -__cb -) { - -898 - `__cb -( -__cb_g -, -this -, -n -, ( - `mlis -(- -_pcb__ -)); - -900  -ERR_OK -; - -901 - } -} - -903 -t8_t - - gAsyncCl -:: - $_cv -( -t_pcb -* -pcb -, -pbuf -* -pb -, -t8_t - -r -) { - -904  -pb - ! -NULL -) { - -905 -_rx_ϡ_ck - = - `mlis -(); - -907 -_ack_pcb - = -ue -; - -908 -pbuf - * -b - = -pb -; - -909 -pb - = -b --> -xt -; - -910 -b --> -xt - = -NULL -; - -911 if( -_pb_cb -){ - -912 - `_pb_cb -( -_pb_cb_g -, -this -, -b -); - -914 if( -_cv_cb -) { - -915 - `_cv_cb -( -_cv_cb_g -, -this -, -b --> -yld -, b-> -n -); - -917 if(! -_ack_pcb -) { - -918 -_rx_ack_n - + -b --> -n -; - -919 } if( -_pcb -) { - -920 - `_t_cved -( -_pcb -, -_od_ -, -b --> -n -); - -922 - `pbuf_ -( -b -); - -925  -ERR_OK -; - -926 - } -} - -928 -t8_t - - gAsyncCl -:: - $_pl -( -t_pcb -* -pcb -){ - -929 if(! -_pcb -){ - -930 - `log_w -("pcb is NULL"); - -931  -ERR_OK -; - -933 if( -pcb - ! -_pcb -){ - -934 - `log_e -("0x%08x !0x%08x", ( -ut32_t -) -pcb -, (ut32_t) -_pcb -); - -935  -ERR_OK -; - -938 -ut32_t - -now - = - `mlis -(); - -941 if( -_pcb_busy - && -_ack_timeout - && ( -now - - -_pcb__ -) >= _ack_timeout){ - -942 -_pcb_busy - = -l -; - -943 - `log_w -("ackimeou%d", -pcb --> -e -); - -944 if( -_timeout_cb -) - -945 - `_timeout_cb -( -_timeout_cb_g -, -this -, ( -now - - -_pcb__ -)); - -946  -ERR_OK -; - -949 if( -_rx_s_timeout - && ( -now - - -_rx_ϡ_ck -) >= (_rx_since_timeout * 1000)){ - -950 - `log_w -("rximeou%d", -pcb --> -e -); - -951 - `_o -(); - -952  -ERR_OK -; - -955 if( -_pl_cb -) { - -956 - `_pl_cb -( -_pl_cb_g -, -this -); - -958  -ERR_OK -; - -959 - } -} - -961  - gAsyncCl -:: - $_dns_found -( -_addr - * -addr -){ - -962 if( -addr - && iddr-> -u_addr -. -4 -. -addr -){ - -963 - `c -( - `IPAddss -( -addr --> -u_addr -. -4 -. -addr -), -_c_pt -); - -965 if( -_r_cb -) { - -966 - `_r_cb -( -_r_cb_g -, -this -, -55); - -968 if( -_disrd_cb -) { - -969 - `_disrd_cb -( -_disrd_cb_g -, -this -); - -972 - } -} - -978  - gAsyncCl -:: - $ -() { - -979 - `o -( -l -); - -980 - } -} - -982 -bo - - gAsyncCl -:: - $ -(){ - -983 if(! -_pcb -) { - -984  -ue -; - -986 if( -_pcb --> -e - == 0 || _pcb->state > 4) { - -987  -ue -; - -989  -l -; - -990 - } -} - -992 -size_t - - gAsyncCl -:: - $wre -(cڡ * -da -) { - -993 if( -da - = -NULL -) { - -996  - `wre -( -da -, - ` -(data)); - -997 - } -} - -999 -size_t - - gAsyncCl -:: - $wre -(cڡ * -da -, -size_t - -size -, -ut8_t - -iags -) { - -1000 -size_t - -wl_nd - = - `add -( -da -, -size -, -iags -); - -1001 if(! -wl_nd - || ! - `nd -()) { - -1004  -wl_nd -; - -1005 - } -} - -1007  - gAsyncCl -:: - $tRxTimeout -( -ut32_t - -timeout -){ - -1008 -_rx_s_timeout - = -timeout -; - -1009 - } -} - -1011 -ut32_t - - gAsyncCl -:: - $gRxTimeout -(){ - -1012  -_rx_s_timeout -; - -1013 - } -} - -1015 -ut32_t - - gAsyncCl -:: - $gAckTimeout -(){ - -1016  -_ack_timeout -; - -1017 - } -} - -1019  - gAsyncCl -:: - $tAckTimeout -( -ut32_t - -timeout -){ - -1020 -_ack_timeout - = -timeout -; - -1021 - } -} - -1023  - gAsyncCl -:: - $tNoDay -( -bo - -noday -){ - -1024 if(! -_pcb -) { - -1027 if( -noday -) { - -1028 - `t_g_dib -( -_pcb -); - -1030 - `t_g_ab -( -_pcb -); - -1032 - } -} - -1034 -bo - - gAsyncCl -:: - $gNoDay -(){ - -1035 if(! -_pcb -) { - -1036  -l -; - -1038  - `t_g_dibd -( -_pcb -); - -1039 - } -} - -1041 -ut16_t - - gAsyncCl -:: - $gMss -(){ - -1042 if(! -_pcb -) { - -1045  - `t_mss -( -_pcb -); - -1046 - } -} - -1048 -ut32_t - - gAsyncCl -:: - $gRemeAddss -() { - -1049 if(! -_pcb -) { - -1052  -_pcb --> -me_ -. -u_addr -. -4 -. -addr -; - -1053 - } -} - -1055 -ut16_t - - gAsyncCl -:: - $gRemePt -() { - -1056 if(! -_pcb -) { - -1059  -_pcb --> -me_pt -; - -1060 - } -} - -1062 -ut32_t - - gAsyncCl -:: - $gLolAddss -() { - -1063 if(! -_pcb -) { - -1066  -_pcb --> -lol_ -. -u_addr -. -4 -. -addr -; - -1067 - } -} - -1069 -ut16_t - - gAsyncCl -:: - $gLolPt -() { - -1070 if(! -_pcb -) { - -1073  -_pcb --> -lol_pt -; - -1074 - } -} - -1076 -IPAddss - - gAsyncCl -:: - $meIP -() { - -1077  - `IPAddss -( - `gRemeAddss -()); - -1078 - } -} - -1080 -ut16_t - - gAsyncCl -:: - $mePt -() { - -1081  - `gRemePt -(); - -1082 - } -} - -1084 -IPAddss - - gAsyncCl -:: - $lolIP -() { - -1085  - `IPAddss -( - `gLolAddss -()); - -1086 - } -} - -1088 -ut16_t - - gAsyncCl -:: - $lolPt -() { - -1089  - `gLolPt -(); - -1090 - } -} - -1092 -ut8_t - - gAsyncCl -:: - $e -() { - -1093 if(! -_pcb -) { - -1096  -_pcb --> -e -; - -1097 - } -} - -1099 -bo - - gAsyncCl -:: - $ced -(){ - -1100 i(! -_pcb -) { - -1101  -l -; - -1103  -_pcb --> -e - == 4; - -1104 - } -} - -1106 -bo - - gAsyncCl -:: - $cg -(){ - -1107 i(! -_pcb -) { - -1108  -l -; - -1110  -_pcb --> -e - > 0 && _pcb->state < 4; - -1111 - } -} - -1113 -bo - - gAsyncCl -:: - $discg -(){ - -1114 i(! -_pcb -) { - -1115  -l -; - -1117  -_pcb --> -e - > 4 && _pcb->state < 10; - -1118 - } -} - -1120 -bo - - gAsyncCl -:: - $disced -(){ - -1121 i(! -_pcb -) { - -1122  -ue -; - -1124  -_pcb --> -e - == 0 || _pcb->state == 10; - -1125 - } -} - -1127 -bo - - gAsyncCl -:: - $ab -(){ - -1128 i(! -_pcb -) { - -1129  -ue -; - -1131  -_pcb --> -e - == 0 || _pcb->state > 4; - -1132 - } -} - -1134 -bo - - gAsyncCl -:: - $nSd -(){ - -1135  - `a -() > 0; - -1136 - } -} - -1138 cڡ * - gAsyncCl -:: - $rToSg -( -t8_t - -r -){ - -1139  -r -){ - -1140  -ERR_OK -:  "OK"; - -1141  -ERR_MEM -:  "Out of memoryrror"; - -1142  -ERR_BUF -:  "Bufferrror"; - -1143  -ERR_TIMEOUT -:  "Timeout"; - -1144  -ERR_RTE -:  "Routingroblem"; - -1145  -ERR_INPROGRESS -:  "Operation inrogress"; - -1146  -ERR_VAL -:  "Illegal value"; - -1147  -ERR_WOULDBLOCK -:  "Operation would block"; - -1148  -ERR_USE -:  "Address in use"; - -1149  -ERR_ALREADY -:  "Already connected"; - -1150  -ERR_CONN -:  "Not connected"; - -1151  -ERR_IF -:  "Low-leveletifrror"; - -1152  -ERR_ABRT -:  "Connectionborted"; - -1153  -ERR_RST -:  "Connectioneset"; - -1154  -ERR_CLSD -:  "Connection closed"; - -1155  -ERR_ARG -:  "Illegalrgument"; - -1159 - } -} - -1161 cڡ * - gAsyncCl -:: - $eToSg -(){ - -1162  - `e -()){ - -1176 - } -} - -1182  - gAsyncCl -:: - $_s_dns_found -(cڡ * -me -,  -_addr - * -addr -, * -g -){ - -1183 -t_ -< -AsyncCl -*>( -g -)-> - `_dns_found -( -addr -); - -1184 - } -} - -1186 -t8_t - - gAsyncCl -:: - $_s_pl -(* -g -,  -t_pcb - * -pcb -) { - -1187  -t_ -< -AsyncCl -*>( -g -)-> - `_pl -( -pcb -); - -1188 - } -} - -1190 -t8_t - - gAsyncCl -:: - $_s_cv -(* -g -,  -t_pcb - * -pcb -,  -pbuf - * -pb -, -t8_t - -r -) { - -1191  -t_ -< -AsyncCl -*>( -g -)-> - `_cv -( -pcb -, -pb -, -r -); - -1192 - } -} - -1194 -t8_t - - gAsyncCl -:: - $_s_f -(* -g -,  -t_pcb - * -pcb -, -t8_t - -r -) { - -1195  -t_ -< -AsyncCl -*>( -g -)-> - `_f -( -pcb -, -r -); - -1196 - } -} - -1198 -t8_t - - gAsyncCl -:: - $_s_lw_f -(* -g -,  -t_pcb - * -pcb -, -t8_t - -r -) { - -1199  -t_ -< -AsyncCl -*>( -g -)-> - `_lw_f -( -pcb -, -r -); - -1200 - } -} - -1202 -t8_t - - gAsyncCl -:: - $_s_ -(* -g -,  -t_pcb - * -pcb -, -ut16_t - -n -) { - -1203  -t_ -< -AsyncCl -*>( -g -)-> - `_ -( -pcb -, -n -); - -1204 - } -} - -1206  - gAsyncCl -:: - $_s_r -(* -g -, -t8_t - -r -) { - -1207 -t_ -< -AsyncCl -*>( -g -)-> - `_r -( -r -); - -1208 - } -} - -1210 -t8_t - - gAsyncCl -:: - $_s_ced -(* -g -, * -pcb -, -t8_t - -r -){ - -1211  -t_ -< -AsyncCl -*>( -g -)-> - `_ced -( -pcb -, -r -); - -1212 - } -} - -1218 - gAsyncSv -:: - $AsyncSv -( -IPAddss - -addr -, -ut16_t - -pt -) - -1219 : - `_pt -( -pt -) - -1220 , - `_addr -( -addr -) - -1221 , - `_noDay -( -l -) - -1222 , - `_pcb -(0) - -1223 , - `_c_cb -(0) - -1224 , - $_c_cb_g -(0) - -1225 { - } -} - -1227 - gAsyncSv -:: - $AsyncSv -( -ut16_t - -pt -) - -1228 : - `_pt -( -pt -) - -1229 , - `_addr -(( -ut32_t - -IPADDR_ANY -) - -1230 , - `_noDay -( -l -) - -1231 , - `_pcb -(0) - -1232 , - `_c_cb -(0) - -1233 , - $_c_cb_g -(0) - -1234 { - } -} - -1236 - gAsyncSv -::~ - $AsyncSv -(){ - -1237 - `d -(); - -1238 - } -} - -1240  - gAsyncSv -:: - $Cl -( -AcCHdr - -cb -, * -g -){ - -1241 -_c_cb - = -cb -; - -1242 -_c_cb_g - = -g -; - -1243 - } -} - -1245  - gAsyncSv -:: - $beg -(){ - -1246 if( -_pcb -) { - -1250 if(! - `_t_async_sk -()){ - -1251 - `log_e -("failedo startask"); - -1254 -t8_t - -r -; - -1255 -_pcb - = - `t_w__ty -( -IPADDR_TYPE_V4 -); - -1256 i(! -_pcb -){ - -1257 - `log_e -("_pcb == NULL"); - -1261 -_addr_t - -lol_addr -; - -1262 -lol_addr -. -ty - = -IPADDR_TYPE_V4 -; - -1263 -lol_addr -. -u_addr -. -4 -. -addr - = ( -ut32_t - -_addr -; - -1264 -r - = - `_t_bd -( -_pcb -, & -lol_addr -, -_pt -); - -1266 i( -r - ! -ERR_OK -) { - -1267 - `_t_o -( -_pcb -, -1); - -1268 - `log_e -("bd: %d", -r -); - -1272  -ut8_t - -backlog - = 5; - -1273 -_pcb - = - `_t_li_wh_backlog -(_pcb, -backlog -); - -1274 i(! -_pcb -) { - -1275 - `log_e -("listen_pcb == NULL"); - -1278 - `t_g -( -_pcb -, (* -this -); - -1279 - `t_ac -( -_pcb -, & -_s_ac -); - -1280 - } -} - -1282  - gAsyncSv -:: - $d -(){ - -1283 if( -_pcb -){ - -1284 - `t_g -( -_pcb -, -NULL -); - -1285 - `t_ac -( -_pcb -, -NULL -); - -1286 if( - `t_o -( -_pcb -! -ERR_OK -){ - -1287 - `_t_abt -( -_pcb -, -1); - -1289 -_pcb - = -NULL -; - -1291 - } -} - -1294 -t8_t - - gAsyncSv -:: - $_ac -( -t_pcb -* -pcb -, -t8_t - -r -){ - -1296 if( -_c_cb -){ - -1297 -AsyncCl - * -c - = -w - - `AsyncCl -( -pcb -); - -1298 if( -c -){ - -1299 -c --> - `tNoDay -( -_noDay -); - -1300  - `_t_ac -( -this -, -c -); - -1303 if( - `t_o -( -pcb -! -ERR_OK -){ - -1304 - `t_abt -( -pcb -); - -1306 - `log_e -("FAIL"); - -1307  -ERR_OK -; - -1308 - } -} - -1310 -t8_t - - gAsyncSv -:: - $_aced -( -AsyncCl -* - -){ - -1311 if( -_c_cb -){ - -1312 - `_c_cb -( -_c_cb_g -, - -); - -1314  -ERR_OK -; - -1315 - } -} - -1317  - gAsyncSv -:: - $tNoDay -( -bo - -noday -){ - -1318 -_noDay - = -noday -; - -1319 - } -} - -1321 -bo - - gAsyncSv -:: - $gNoDay -(){ - -1322  -_noDay -; - -1323 - } -} - -1325 -ut8_t - - gAsyncSv -:: - $us -(){ - -1326 i(! -_pcb -) { - -1329  -_pcb --> -e -; - -1330 - } -} - -1332 -t8_t - - gAsyncSv -:: - $_s_ac -(* -g -, -t_pcb - * -pcb -, -t8_t - -r -){ - -1333  -t_ -< -AsyncSv -*>( -g -)-> - `_ac -( -pcb -, -r -); - -1334 - } -} - -1336 -t8_t - - gAsyncSv -:: - $_s_aced -(* -g -, -AsyncCl -* - -){ - -1337  -t_ -< -AsyncSv -*>( -g -)-> - `_aced -( - -); - -1338 - } -} - - @.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.h - -22 #ide -ASYNCTCP_H_ - - -23  - #ASYNCTCP_H_ - - - ) - -25  - ~"IPAddss.h -" - -26  - ~"sdkcfig.h -" - -27  - ~ - -29  - ~"䓹os/mphr.h -" - -30  - ~"lw/pbuf.h -" - -34 #ide -CONFIG_ASYNC_TCP_RUNNING_CORE - - -35  - #CONFIG_ASYNC_TCP_RUNNING_CORE - -1 - -36  - #CONFIG_ASYNC_TCP_USE_WDT - 1 - -38 - - ) - -39 -ass - -AsyncCl -; - -41  - #ASYNC_MAX_ACK_TIME - 5000 - - ) - -42  - #ASYNC_WRITE_FLAG_COPY - 0x01 - -43  - #ASYNC_WRITE_FLAG_MORE - 0x02 - -44 - - ) - -45  - gd -:: - tfuni -<(*, - tAsyncCl -*)> - tAcCHdr -; - -46  - gd -:: - tfuni -<(*, - tAsyncCl -*, - tsize_t - - tn -, - tut32_t - - ttime -)> - tAcAckHdr -; - -47  - gd -:: - tfuni -<(*, - tAsyncCl -*, - tt8_t - - tr -)> - tAcEHdr -; - -48  - gd -:: - tfuni -<(*, - tAsyncCl -*, * - tda -, - tsize_t - - tn -)> - tAcDaHdr -; - -49  - gd -:: - tfuni -<(*, - tAsyncCl -*,  - tpbuf - * - tpb -)> - tAcPackHdr -; - -50  - gd -:: - tfuni -<(*, - tAsyncCl -*, - tut32_t - - ttime -)> - tAcTimeoutHdr -; - -52  - gt_pcb -; - -53  - g_addr -; - -55 as - cAsyncCl - { - -56 - mpublic -: - -57 -AsyncCl -( -t_pcb -* -pcb - = 0); - -58 ~ -AsyncCl -(); - -60 - mAsyncCl - & - mݔ -=(cڡ -AsyncCl - & -h -); - -61 - mAsyncCl - & - mݔ -+=(cڡ -AsyncCl - & -h -); - -63 -bo - - mݔ -==(cڡ -AsyncCl - & -h -); - -65 -bo - - mݔ -!=(cڡ -AsyncCl - & -h -) { - -66  !(* -this - = -h -); - -68 -bo - -c -( -IPAddss - - -, -ut16_t - -pt -); - -69 -bo - -c -(cڡ * -ho -, -ut16_t - -pt -); - -70  -o -( -bo - -now - = -l -); - -71  - -(); - -72 -t8_t - -abt -(); - -73 -bo - - -(); - -75 -bo - -nSd -(); - -76 -size_t - -a -(); - -77 -size_t - -add -(cڡ * -da -, size_ -size -, -ut8_t - -iags -= -ASYNC_WRITE_FLAG_COPY -); - -78 -bo - -nd -(); - -81 -size_t - -wre -(cڡ * -da -); - -82 -size_t - -wre -(cڡ * -da -, size_ -size -, -ut8_t - -iags -= -ASYNC_WRITE_FLAG_COPY -); - -84 -ut8_t - -e -(); - -85 -bo - -cg -(); - -86 -bo - -ced -(); - -87 -bo - -discg -(); - -88 -bo - -disced -(); - -89 -bo - -ab -(); - -91 -ut16_t - -gMss -(); - -93 -ut32_t - -gRxTimeout -(); - -94  -tRxTimeout -( -ut32_t - -timeout -); - -96 -ut32_t - -gAckTimeout -(); - -97  -tAckTimeout -( -ut32_t - -timeout -); - -99  -tNoDay -( -bo - -noday -); - -100 -bo - -gNoDay -(); - -102 -ut32_t - -gRemeAddss -(); - -103 -ut16_t - -gRemePt -(); - -104 -ut32_t - -gLolAddss -(); - -105 -ut16_t - -gLolPt -(); - -108 -IPAddss - -meIP -(); - -109 -ut16_t - -mePt -(); - -110 -IPAddss - -lolIP -(); - -111 -ut16_t - -lolPt -(); - -113  -C -( -AcCHdr - -cb -, * -g - = 0); - -114  -Disc -( -AcCHdr - -cb -, * -g - = 0); - -115  -Ack -( -AcAckHdr - -cb -, * -g - = 0); - -116  -E -( -AcEHdr - -cb -, * -g - = 0); - -117  -Da -( -AcDaHdr - -cb -, * -g - = 0); - -118  -Pack -( -AcPackHdr - -cb -, * -g - = 0); - -119  -Timeout -( -AcTimeoutHdr - -cb -, * -g - = 0); - -120  -Pl -( -AcCHdr - -cb -, * -g - = 0); - -122  -ackPack -( -pbuf - * -pb -); - -123 -size_t - -ack -(size_ -n -); - -124  - $ackL -(){ -_ack_pcb - = -l -; - } -} - -126 cڡ * -rToSg -( -t8_t - -r -); - -127 cڡ * -eToSg -(); - -130  -t8_t - -_s_pl -(* -g -,  -t_pcb - * -cb -); - -131  -t8_t - -_s_cv -(* -g -,  -t_pcb - * -cb -,  -pbuf - * -pb -, i8_ -r -); - -132  -t8_t - -_s_f -(* -g -,  -t_pcb - * -cb -, i8_ -r -); - -133  -t8_t - -_s_lw_f -(* -g -,  -t_pcb - * -cb -, i8_ -r -); - -134  -_s_r -(* -g -, -t8_t - -r -); - -135  -t8_t - -_s_ -(* -g -,  -t_pcb - * -cb -, -ut16_t - -n -); - -136  -t8_t - -_s_ced -(* -g -, * -cb -, i8_ -r -); - -137  -_s_dns_found -(cڡ * -me -,  -_addr - * -addr -, * -g -); - -139 -t8_t - -_cv -( -t_pcb -* -pcb -, -pbuf -* -pb -, i8_ -r -); - -140 -t_pcb - * - $pcb -(){  -_pcb -; - } -} - -142 - geed -: - -143 -t_pcb -* -_pcb -; - -144 -t8_t - - g_od_ -; - -146 -AcCHdr - - g_c_cb -; - -147 * - g_c_cb_g -; - -148 -AcCHdr - - g_disrd_cb -; - -149 * - g_disrd_cb_g -; - -150 -AcAckHdr - - g__cb -; - -151 * - g__cb_g -; - -152 -AcEHdr - - g_r_cb -; - -153 * - g_r_cb_g -; - -154 -AcDaHdr - - g_cv_cb -; - -155 * - g_cv_cb_g -; - -156 -AcPackHdr - - g_pb_cb -; - -157 * - g_pb_cb_g -; - -158 -AcTimeoutHdr - - g_timeout_cb -; - -159 * - g_timeout_cb_g -; - -160 -AcCHdr - - g_pl_cb -; - -161 * - g_pl_cb_g -; - -163 -bo - - g_pcb_busy -; - -164 -ut32_t - - g_pcb__ -; - -165 -bo - - g_ack_pcb -; - -166 -ut32_t - - g_rx_ack_n -; - -167 -ut32_t - - g_rx_ϡ_ck -; - -168 -ut32_t - - g_rx_s_timeout -; - -169 -ut32_t - - g_ack_timeout -; - -170 -ut16_t - - g_c_pt -; - -172 -t8_t - -_o -(); - -173 -t8_t - -_ced -(* -pcb -, i8_ -r -); - -174  -_r -( -t8_t - -r -); - -175 -t8_t - -_pl -( -t_pcb -* -pcb -); - -176 -t8_t - -_ -( -t_pcb -* -pcb -, -ut16_t - -n -); - -177 -t8_t - -_f -( -t_pcb -* -pcb -, i8_ -r -); - -178 -t8_t - -_lw_f -( -t_pcb -* -pcb -, i8_ -r -); - -179  -_dns_found -( -_addr - * -addr -); - -181 - gpublic -: - -182 -AsyncCl -* -ev -; - -183 -AsyncCl -* - gxt -; - -186 as - cAsyncSv - { - -187 - mpublic -: - -188 -AsyncSv -( -IPAddss - -addr -, -ut16_t - -pt -); - -189 -AsyncSv -( -ut16_t - -pt -); - -190 ~ -AsyncSv -(); - -191  -Cl -( -AcCHdr - -cb -, * -g -); - -192  -beg -(); - -193  -d -(); - -194  -tNoDay -( -bo - -noday -); - -195 -bo - -gNoDay -(); - -196 -ut8_t - -us -(); - -199  -t8_t - -_s_ac -(* -g -, -t_pcb -* -wpcb -, i8_ -r -); - -200  -t8_t - -_s_aced -(* -g -, -AsyncCl -* - -); - -202 - meed -: - -203 -ut16_t - -_pt -; - -204 -IPAddss - - m_addr -; - -205 -bo - - m_noDay -; - -206 -t_pcb -* - m_pcb -; - -207 -AcCHdr - - m_c_cb -; - -208 * - m_c_cb_g -; - -210 -t8_t - -_ac -( -t_pcb -* -wpcb -, i8_ -r -); - -211 -t8_t - -_aced -( -AsyncCl -* - -); - - @.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h - -1 #ide -CONFIG_H - - -2  - #CONFIG_H - - - ) - -15  - #SSID - "ESP-TEST" - - ) - -16  - #PASSWORD - "123456789" - - ) - -18  - #SERVER_HOST_NAME - "e_rv" - - ) - -20  - #TCP_PORT - 7050 - - ) - -21  - #DNS_PORT - 53 - - ) - - @.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h - -1 #ide -CONFIG_H - - -2  - #CONFIG_H - - - ) - -15  - #SSID - "ESP-TEST" - - ) - -16  - #PASSWORD - "123456789" - - ) - -18  - #SERVER_HOST_NAME - "e_rv" - - ) - -20  - #TCP_PORT - 7050 - - ) - -21  - #DNS_PORT - 53 - - ) - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp - -22  - ~"AsyncPrr.h -" - -24 - gAsyncPrr -:: - $AsyncPrr -() - -25 : - `_ -( -NULL -) - -26 , - `_da_cb -( -NULL -) - -27 , - `_da_g -( -NULL -) - -28 , - `_o_cb -( -NULL -) - -29 , - `_o_g -( -NULL -) - -30 , - `_tx_bufr -( -NULL -) - -31 , - `_tx_bufr_size -(1460) - -32 , - $xt -( -NULL -) - -33 { - } -} - -35 - gAsyncPrr -:: - $AsyncPrr -( -AsyncCl - * - -, -size_t - -txBufL -) - -36 : - `_ -( - -) - -37 , - `_da_cb -( -NULL -) - -38 , - `_da_g -( -NULL -) - -39 , - `_o_cb -( -NULL -) - -40 , - `_o_g -( -NULL -) - -41 , - `_tx_bufr -( -NULL -) - -42 , - `_tx_bufr_size -( -txBufL -) - -43 , - $xt -( -NULL -) - -45 - `_chClbacks -(); - -46 -_tx_bufr - = -w - - `cbuf -( -_tx_bufr_size -); - -47 - } -} - -49 - gAsyncPrr -::~ - $AsyncPrr -(){ - -50 - `__o -(); - -51 - } -} - -53  - gAsyncPrr -:: - $Da -( -ApDaHdr - -cb -, * -g -){ - -54 -_da_cb - = -cb -; - -55 -_da_g - = -g -; - -56 - } -} - -58  - gAsyncPrr -:: - $Clo -( -ApCloHdr - -cb -, * -g -){ - -59 -_o_cb - = -cb -; - -60 -_o_g - = -g -; - -61 - } -} - -63  - gAsyncPrr -:: - $c -( -IPAddss - - -, -ut16_t - -pt -){ - -64 if( -_ - ! -NULL - && - `ced -()) - -66 -_ - = -w - - `AsyncCl -(); - -67 -_ --> - `C -([](* -obj -, -AsyncCl - * -c -){ (( -AsyncPrr -*)(obj))-> - `_C -(c); }, -this -); - -68 if( -_ --> - `c -( - -, -pt -)){ - -69  -_ --> - `e -() < 4) - -70 - `day -(1); - -71  - `ced -(); - -74 - } -} - -76  - gAsyncPrr -:: - $c -(cڡ * -ho -, -ut16_t - -pt -){ - -77 if( -_ - ! -NULL - && - `ced -()) - -79 -_ - = -w - - `AsyncCl -(); - -80 -_ --> - `C -([](* -obj -, -AsyncCl - * -c -){ (( -AsyncPrr -*)(obj))-> - `_C -(c); }, -this -); - -81 if( -_ --> - `c -( -ho -, -pt -)){ - -82  -_ --> - `e -() < 4) - -83 - `day -(1); - -84  - `ced -(); - -87 - } -} - -89  - gAsyncPrr -:: - $_C -( -AsyncCl - * -c -){ - -90 if( -_tx_bufr - ! -NULL -){ - -91 -cbuf - * -b - = -_tx_bufr -; - -92 -_tx_bufr - = -NULL -; - -93 -de - -b -; - -95 -_tx_bufr - = -w - - `cbuf -( -_tx_bufr_size -); - -96 - `_chClbacks -(); - -97 - } -} - -99 - gAsyncPrr -:: -ݔ - - $bo -(){  - `ced -(); - } -} - -101 - gAsyncPrr - & AsyncPrr:: -ݔ -=(cڡ -AsyncPrr - & -h -){ - -102 if( -_ - ! -NULL -){ - -103 -_ --> -o -( -ue -); - -104 - g_ - = -NULL -; - -106 - g_tx_bufr_size - = -h -. -_tx_bufr_size -; - -107 if( - g_tx_bufr - ! -NULL -){ - -108 -cbuf - * -b - = -_tx_bufr -; - -109 - g_tx_bufr - = -NULL -; - -110 -de - - gb -; - -112 - g_tx_bufr - = -w - -cbuf -( -h -. -_tx_bufr_size -); - -113 - g_ - = -h -. -_ -; - -114 -_chClbacks -(); - -115  * - gthis -; - -118 -size_t - - gAsyncPrr -:: - $wre -( -ut8_t - -da -){ - -119  - `wre -(& -da -, 1); - -120 - } -} - -122 -size_t - - gAsyncPrr -:: - $wre -(cڡ -ut8_t - * -da -, -size_t - -n -){ - -123 if( -_tx_bufr - = -NULL - || ! - `ced -()) - -125 -size_t - -toWre - = 0; - -126 -size_t - -toSd - = -n -; - -127  -_tx_bufr --> - `room -(< -toSd -){ - -128 -toWre - = -_tx_bufr --> - `room -(); - -129 -_tx_bufr --> - `wre -((cڡ *) -da -, -toWre -); - -130 ! -_ --> - `nSd -()) - -131 - `day -(0); - -132 - `_ndBufr -(); - -133 -toSd - - -toWre -; - -135 -_tx_bufr --> - `wre -((cڡ *)( -da -+( -n - - -toSd -)),oSend); - -136 ! -_ --> - `nSd -() - `day -(0); - -137 - `_ndBufr -(); - -138  -n -; - -139 - } -} - -141 -bo - - gAsyncPrr -:: - $ced -(){ - -142  ( -_ - ! -NULL - && _-> - `ced -()); - -143 - } -} - -145  - gAsyncPrr -:: - $o -(){ - -146 if( -_ - ! -NULL -) - -147 -_ --> - `o -( -ue -); - -148 - } -} - -150 -size_t - - gAsyncPrr -:: - $_ndBufr -(){ - -151 -size_t - -avaab - = -_tx_bufr --> - `avaab -(); - -152 if(! - `ced -(|| ! -_ --> - `nSd -(|| -avaab - == 0) - -154 -size_t - -ndab - = -_ --> - `a -(); - -155 if( -ndab - < -avaab -) - -156 -avaab - -ndab -; - -157 * -out - = -w - [ -avaab -]; - -158 -_tx_bufr --> - `ad -( -out -, -avaab -); - -159 -size_t - - - = -_ --> - `wre -( -out -, -avaab -); - -160 -de - -out -; - -161  - -; - -162 - } -} - -164  - gAsyncPrr -:: - $_Da -(* -da -, -size_t - -n -){ - -165 if( -_da_cb -) - -166 - `_da_cb -( -_da_g -, -this -, ( -ut8_t -*) -da -, -n -); - -167 - } -} - -169  - gAsyncPrr -:: - $__o -(){ - -170 if( -_ - ! -NULL -){ - -171 -_ - = -NULL -; - -173 if( -_tx_bufr - ! -NULL -){ - -174 -cbuf - * -b - = -_tx_bufr -; - -175 -_tx_bufr - = -NULL -; - -176 -de - -b -; - -178 if( -_o_cb -) - -179 - `_o_cb -( -_o_g -, -this -); - -180 - } -} - -182  - gAsyncPrr -:: - $_chClbacks -(){ - -183 -_ --> - `Pl -([](* -obj -, -AsyncCl -* -c -){ (( -AsyncPrr -*)(obj))-> - `_ndBufr -(); }, -this -); - -184 -_ --> - `Ack -([](* -obj -, -AsyncCl -* -c -, -size_t - -n -, -ut32_t - -time -){ (( -AsyncPrr -*)(obj))-> - `_ndBufr -(); }, -this -); - -185 -_ --> - `Disc -([](* -obj -, -AsyncCl -* -c -){ (( -AsyncPrr -*)(obj))-> - `__o -(); -de - c; }, -this -); - -186 -_ --> - `Da -([](* -obj -, -AsyncCl -* -c -, * -da -, -size_t - -n -){ (( -AsyncPrr -*)(obj))-> - `_Da -(da,); }, -this -); - -187 - } -} - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h - -22 #ide -ASYNCPRINTER_H_ - - -23  - #ASYNCPRINTER_H_ - - - ) - -25  - ~"Arduo.h -" - -26  - ~"ESPAsyncTCP.h -" - -27  - ~"cbuf.h -" - -29 -ass - - gAsyncPrr -; - -31  - gd -:: - tfuni -<(*, - tAsyncPrr -*, - tut8_t -*, - tsize_t -)> - tApDaHdr -; - -32  - gd -:: - tfuni -<(*, - tAsyncPrr -*)> - tApCloHdr -; - -34 as - cAsyncPrr -: -public - -Prt - { - -35 -ive -: - -36 -AsyncCl - * -_ -; - -37 -ApDaHdr - - m_da_cb -; - -38 * - m_da_g -; - -39 -ApCloHdr - - m_o_cb -; - -40 * - m_o_g -; - -41 -cbuf - * - m_tx_bufr -; - -42 -size_t - - m_tx_bufr_size -; - -44  -_C -( -AsyncCl - * -c -); - -45 - mpublic -: - -46 -AsyncPrr - * -xt -; - -48 -AsyncPrr -(); - -49 -AsyncPrr -( -AsyncCl - * - -, -size_t - -txBufL - = 1460); - -50 - mvtu - ~ -AsyncPrr -(); - -52  -c -( -IPAddss - - -, -ut16_t - -pt -); - -53  -c -(cڡ * -ho -, -ut16_t - -pt -); - -55  -Da -( -ApDaHdr - -cb -, * -g -); - -56  -Clo -( -ApCloHdr - -cb -, * -g -); - -58 -ݔ - -bo -(); - -59 - mAsyncPrr - & - mݔ -=(cڡ -AsyncPrr - & -h -); - -61 -size_t - -wre -( -ut8_t - -da -); - -62 -size_t - -wre -(cڡ -ut8_t - * -da -, size_ -n -); - -64 -bo - -ced -(); - -65  -o -(); - -67 -size_t - -_ndBufr -(); - -68  -_Da -(* -da -, -size_t - -n -); - -69  -__o -(); - -70  -_chClbacks -(); - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp - -22  - ~"Arduo.h -" - -24  - ~"ESPAsyncTCP.h -" - -26  - ~"lw/t.h -" - -27  - ~"lw/t.h -" - -28  - ~"lw/.h -" - -29  - ~"lw/dns.h -" - -30  - ~"lw/.h -" - -32  - ~ - -38 #i -ASYNC_TCP_SSL_ENABLED - - -39 -AsyncCl -:: - $AsyncCl -( -t_pcb -* -pcb -, -SSL_CTX - * -s_x -): - -41 -AsyncCl -:: - $AsyncCl -( -t_pcb -* -pcb -): - -43 - `_c_cb -(0) - -44 , - `_c_cb_g -(0) - -45 , - `_disrd_cb -(0) - -46 , - `_disrd_cb_g -(0) - -47 , - `__cb -(0) - -48 , - `__cb_g -(0) - -49 , - `_r_cb -(0) - -50 , - `_r_cb_g -(0) - -51 , - `_cv_cb -(0) - -52 , - `_cv_cb_g -(0) - -53 , - `_pb_cb -(0) - -54 , - `_pb_cb_g -(0) - -55 , - `_timeout_cb -(0) - -56 , - `_timeout_cb_g -(0) - -57 , - $_pcb_busy -( -l -) - -58 #i -ASYNC_TCP_SSL_ENABLED - - -59 , - `_pcb_cu -( -l -) - -60 , - $_hdshake_de -( -ue -) - -62 , - `_pcb__ -(0) - -63 , - `_o_pcb -( -l -) - -64 , - `_ack_pcb -( -ue -) - -65 , - `_tx_ucked_n -(0) - -66 , - `_tx_acked_n -(0) - -67 , - `_tx_un_n -(0) - -68 , - `_rx_ϡ_ck -(0) - -69 , - `_rx_s_timeout -(0) - -70 , - `_ack_timeout -( -ASYNC_MAX_ACK_TIME -) - -71 , - `_c_pt -(0) - -72 , - `ev -( -NULL -) - -73 , - $xt -( -NULL -) - -75 -_pcb - = -pcb -; - -76 if( -_pcb -){ - -77 -_rx_ϡ_ck - = - `mlis -(); - -78 - `t_rio -( -_pcb -, -TCP_PRIO_MIN -); - -79 - `t_g -( -_pcb -, -this -); - -80 - `t_cv -( -_pcb -, & -_s_cv -); - -81 - `t_ -( -_pcb -, & -_s_ -); - -82 - `t_r -( -_pcb -, & -_s_r -); - -83 - `t_pl -( -_pcb -, & -_s_pl -, 1); - -84 #i -ASYNC_TCP_SSL_ENABLED - - -85 if( -s_x -){ - -86 if( - `t_s_w_rv -( -_pcb -, -s_x -) < 0){ - -87 - `_o -(); - -90 - `t_s_g -( -_pcb -, -this -); - -91 - `t_s_da -( -_pcb -, & -_s_da -); - -92 - `t_s_hdshake -( -_pcb -, & -_s_hdshake -); - -93 - `t_s_r -( -_pcb -, & -_s_s_r -); - -95 -_pcb_cu - = -ue -; - -96 -_hdshake_de - = -l -; - -100 - } -} - -102 -AsyncCl -::~ - $AsyncCl -(){ - -103 if( -_pcb -) - -104 - `_o -(); - -105 - } -} - -107 #i -ASYNC_TCP_SSL_ENABLED - - -108 -bo - -AsyncCl -:: - $c -( -IPAddss - - -, -ut16_t - -pt -, -bo - -cu -){ - -110 -bo - -AsyncCl -:: - $c -( -IPAddss - - -, -ut16_t - -pt -){ - -112 i( -_pcb -) - -113  -l -; - -114 -_addr_t - -addr -; - -115 -addr -.add - -; - -116 #i -LWIP_VERSION_MAJOR - == 1 - -117 -tif -* -r - = - `_rou -(& -addr -); - -118 i(! -r -){ - -119  -l -; - -122 -t_pcb -* -pcb - = - `t_w -(); - -123 i(! -pcb -){ - -124  -l -; - -127 #i -ASYNC_TCP_SSL_ENABLED - - -128 -_pcb_cu - = -cu -; - -129 -_hdshake_de - = ! -cu -; - -131 - `t_g -( -pcb -, -this -); - -132 - `t_r -( -pcb -, & -_s_r -); - -133 - `t_c -( -pcb -, & -addr -, -pt -,( -t_ced_ -)& -_s_ced -); - -134  -ue -; - -135 - } -} - -137 #i -ASYNC_TCP_SSL_ENABLED - - -138 -bo - -AsyncCl -:: - $c -(cڡ * -ho -, -ut16_t - -pt -, -bo - -cu -){ - -140 -bo - -AsyncCl -:: - $c -(cڡ * -ho -, -ut16_t - -pt -){ - -142 -_addr_t - -addr -; - -143 -r_t - -r - = - `dns_ghobyme -( -ho -, & -addr -, ( -dns_found_back -)& -_s_dns_found -, -this -); - -144 if( -r - = -ERR_OK -) { - -145 #i -ASYNC_TCP_SSL_ENABLED - - -146  - `c -( - `IPAddss -( -addr -.addr), -pt -, -cu -); - -148  - `c -( - `IPAddss -( -addr -.addr), -pt -); - -150 } if( -r - = -ERR_INPROGRESS -) { - -151 #i -ASYNC_TCP_SSL_ENABLED - - -152 -_pcb_cu - = -cu -; - -153 -_hdshake_de - = ! -cu -; - -155 -_c_pt - = -pt -; - -156  -ue -; - -158  -l -; - -159 - } -} - -161 -AsyncCl -& AsyncCl:: -ݔ -=(cڡ AsyncCl& -h -){ - -162 i( -_pcb -) - -163 -_o -(); - -165 -_pcb - = -h -._pcb; - -166 i( -_pcb -) { - -167 -_rx_ϡ_ck - = -mlis -(); - -168 -t_rio -( -_pcb -, -TCP_PRIO_MIN -); - -169 -t_g -( -_pcb -, -this -); - -170 -t_cv -( -_pcb -, & -_s_cv -); - -171 -t_ -( -_pcb -, & -_s_ -); - -172 -t_r -( -_pcb -, & -_s_r -); - -173 -t_pl -( -_pcb -, & -_s_pl -, 1); - -174 #i -ASYNC_TCP_SSL_ENABLED - - -175 if( -t_s_has -( -_pcb -)){ - -176 -_pcb_cu - = -ue -; - -177 -_hdshake_de - = -l -; - -178 -t_s_g -( -_pcb -, -this -); - -179 -t_s_da -( -_pcb -, & -_s_da -); - -180 -t_s_hdshake -( -_pcb -, & -_s_hdshake -); - -181 -t_s_r -( -_pcb -, & -_s_s_r -); - -183 -_pcb_cu - = -l -; - -184 -_hdshake_de - = -ue -; - -188  * -this -; - -191 -bo - -AsyncCl -:: -ݔ -==(cڡ AsyncCl & -h -) { - -192  ( -_pcb - ! -NULL - && -h -._pcb !NULL && (_pcb-> -me_ -. -addr - =h._pcb->me_.addr&& (_pcb-> -me_pt - == other._pcb->remote_port)); - -195 -t8_t - -AsyncCl -:: - $abt -(){ - -196 if( -_pcb -) { - -197 - `t_abt -( -_pcb -); - -198 -_pcb - = -NULL -; - -200  -ERR_ABRT -; - -201 - } -} - -203  -AsyncCl -:: - $o -( -bo - -now -){ - -204 if( -_pcb -) - -205 - `t_cved -( -_pcb -, -_rx_ack_n -); - -206 if( -now -) - -207 - `_o -(); - -209 -_o_pcb - = -ue -; - -210 - } -} - -212  -AsyncCl -:: - $ -() { - -213 - `o -( -l -); - -214 - } -} - -216 -bo - -AsyncCl -:: - $ -(){ - -217 if(! -_pcb -) - -218  -ue -; - -219 if( -_pcb --> -e - == 0 || _pcb->state > 4) - -220  -ue -; - -221  -l -; - -222 - } -} - -224 -size_t - -AsyncCl -:: - $wre -(cڡ * -da -) { - -225 if( -da - = -NULL -) - -227  - `wre -( -da -, - ` -(data)); - -228 - } -} - -230 -size_t - -AsyncCl -:: - $wre -(cڡ * -da -, -size_t - -size -, -ut8_t - -iags -) { - -231 -size_t - -wl_nd - = - `add -( -da -, -size -, -iags -); - -232 if(! -wl_nd - || ! - `nd -()) - -234  -wl_nd -; - -235 - } -} - -237 -size_t - -AsyncCl -:: - $add -(cڡ * -da -, -size_t - -size -, -ut8_t - -iags -) { - -238 if(! -_pcb - || -size - =0 || -da - = -NULL -) - -240 -size_t - -room - = - `a -(); - -241 if(! -room -) - -243 #i -ASYNC_TCP_SSL_ENABLED - - -244 if( -_pcb_cu -){ - -245  - - = - `t_s_wre -( -_pcb -, ( -ut8_t -*) -da -, -size -); - -246 if( - - >= 0){ - -247 -_tx_ucked_n - + - -; - -248  - -; - -250 - `_o -(); - -254 -size_t - -wl_nd - = ( -room - < -size -) ?oom : size; - -255 -t8_t - -r - = - `t_wre -( -_pcb -, -da -, -wl_nd -, -iags -); - -256 if( -r - ! -ERR_OK -) - -258 -_tx_un_n - + -wl_nd -; - -259  -wl_nd -; - -260 - } -} - -262 -bo - -AsyncCl -:: - $nd -(){ - -263 #i -ASYNC_TCP_SSL_ENABLED - - -264 if( -_pcb_cu -) - -265  -ue -; - -267 if( - `t_ouut -( -_pcb -= -ERR_OK -){ - -268 -_pcb_busy - = -ue -; - -269 -_pcb__ - = - `mlis -(); - -270 -_tx_ucked_n - + -_tx_un_n -; - -271 -_tx_un_n - = 0; - -272  -ue -; - -274 -_tx_un_n - = 0; - -275  -l -; - -276 - } -} - -278 -size_t - -AsyncCl -:: - $ack -( -size_t - -n -){ - -279 if( -n - > -_rx_ack_n -) - -280 -n - = -_rx_ack_n -; - -281 if( -n -) - -282 - `t_cved -( -_pcb -, -n -); - -283 -_rx_ack_n - - -n -; - -284  -n -; - -285 - } -} - -289 -r_t - -AsyncCl -:: - $_ced -(* -pcb -, -r_t - -r -){ - -290 -_pcb - = -t_ -< -t_pcb -*>( -pcb -); - -291 if( -_pcb -){ - -292 -_pcb_busy - = -l -; - -293 -_rx_ϡ_ck - = - `mlis -(); - -294 - `t_rio -( -_pcb -, -TCP_PRIO_MIN -); - -295 - `t_cv -( -_pcb -, & -_s_cv -); - -296 - `t_ -( -_pcb -, & -_s_ -); - -297 - `t_pl -( -_pcb -, & -_s_pl -, 1); - -298 #i -ASYNC_TCP_SSL_ENABLED - - -299 if( -_pcb_cu -){ - -300 if( - `t_s_w_ -( -_pcb -) < 0){ - -301  - `_o -(); - -303 - `t_s_g -( -_pcb -, -this -); - -304 - `t_s_da -( -_pcb -, & -_s_da -); - -305 - `t_s_hdshake -( -_pcb -, & -_s_hdshake -); - -306 - `t_s_r -( -_pcb -, & -_s_s_r -); - -309 if(! -_pcb_cu - && -_c_cb -) - -312 if( -_c_cb -) - -314 - `_c_cb -( -_c_cb_g -, -this -); - -315  -ERR_OK -; - -316 - } -} - -318 -t8_t - -AsyncCl -:: - $_o -(){ - -319 -t8_t - -r - = -ERR_OK -; - -320 if( -_pcb -) { - -321 #i -ASYNC_TCP_SSL_ENABLED - - -322 if( -_pcb_cu -){ - -323 - `t_s_ -( -_pcb -); - -326 - `t_g -( -_pcb -, -NULL -); - -327 - `t_ -( -_pcb -, -NULL -); - -328 - `t_cv -( -_pcb -, -NULL -); - -329 - `t_r -( -_pcb -, -NULL -); - -330 - `t_pl -( -_pcb -, -NULL -, 0); - -331 -r - = - `t_o -( -_pcb -); - -332 if( -r - ! -ERR_OK -) { - -333 -r - = - `abt -(); - -335 -_pcb - = -NULL -; - -336 if( -_disrd_cb -) - -337 - `_disrd_cb -( -_disrd_cb_g -, -this -); - -339  -r -; - -340 - } -} - -342  -AsyncCl -:: - $_r -( -r_t - -r -) { - -343 if( -_pcb -){ - -344 #i -ASYNC_TCP_SSL_ENABLED - - -345 if( -_pcb_cu -){ - -346 - `t_s_ -( -_pcb -); - -349 - `t_g -( -_pcb -, -NULL -); - -350 - `t_ -( -_pcb -, -NULL -); - -351 - `t_cv -( -_pcb -, -NULL -); - -352 - `t_r -( -_pcb -, -NULL -); - -353 - `t_pl -( -_pcb -, -NULL -, 0); - -354 -_pcb - = -NULL -; - -356 if( -_r_cb -) - -357 - `_r_cb -( -_r_cb_g -, -this -, -r -); - -358 if( -_disrd_cb -) - -359 - `_disrd_cb -( -_disrd_cb_g -, -this -); - -360 - } -} - -362 #i -ASYNC_TCP_SSL_ENABLED - - -363  -AsyncCl -:: - $_s_r -( -t8_t - -r -){ - -364 if( -_r_cb -) - -365 - `_r_cb -( -_r_cb_g -, -this -, -r -+64); - -366 - } -} - -369 -r_t - -AsyncCl -:: - $_ -( -t_pcb -* -pcb -, -ut16_t - -n -) { - -370 #i -ASYNC_TCP_SSL_ENABLED - - -371 i( -_pcb_cu - && ! -_hdshake_de -) - -372  -ERR_OK -; - -374 -_rx_ϡ_ck - = - `mlis -(); - -375 -_tx_ucked_n - - -n -; - -376 -_tx_acked_n - + -n -; - -377 - `ASYNC_TCP_DEBUG -("_: %u (%d %d)\n", -n -, -_tx_ucked_n -, -_tx_acked_n -); - -378 if( -_tx_ucked_n - == 0){ - -379 -_pcb_busy - = -l -; - -380 if( -__cb -) - -381 - `__cb -( -__cb_g -, -this -, -_tx_acked_n -, ( - `mlis -(- -_pcb__ -)); - -382 -_tx_acked_n - = 0; - -384  -ERR_OK -; - -385 - } -} - -387 -r_t - -AsyncCl -:: - $_cv -( -t_pcb -* -pcb -, -pbuf -* -pb -, -r_t - -r -) { - -388 if( -pb - = -NULL -){ - -389 - `ASYNC_TCP_DEBUG -("_cv:b =NULL! Closg... %d\n", -r -); - -390  - `_o -(); - -393 -_rx_ϡ_ck - = - `mlis -(); - -394 #i -ASYNC_TCP_SSL_ENABLED - - -395 if( -_pcb_cu -){ - -396 - `ASYNC_TCP_DEBUG -("_cv: %d\n", -pb --> -t_n -); - -397  -ad_bys - = - `t_s_ad -( -pcb -, -pb -); - -398 if( -ad_bys - < 0){ - -399 i( -ad_bys - ! -SSL_CLOSE_NOTIFY -) { - -400 - `ASYNC_TCP_DEBUG -("_cv: %d\n", -ad_bys -); - -401 - `_o -(); - -405  -ERR_OK -; - -408  -pb - ! -NULL -){ - -410 -_ack_pcb - = -ue -; - -411 -pbuf - * -b - = -pb -; - -412 -pb - = -b --> -xt -; - -413 -b --> -xt - = -NULL -; - -414 - `ASYNC_TCP_DEBUG -("_cv: %d\n", -b --> -n -); - -415 if( -_pb_cb -){ - -416 - `_pb_cb -( -_pb_cb_g -, -this -, -b -); - -418 if( -_cv_cb -) - -419 - `_cv_cb -( -_cv_cb_g -, -this -, -b --> -yld -, b-> -n -); - -420 if(! -_ack_pcb -) - -421 -_rx_ack_n - + -b --> -n -; - -423 - `t_cved -( -pcb -, -b --> -n -); - -424 - `pbuf_ -( -b -); - -427  -ERR_OK -; - -428 - } -} - -430 -r_t - -AsyncCl -:: - $_pl -( -t_pcb -* -pcb -){ - -432 if( -_o_pcb -){ - -433 -_o_pcb - = -l -; - -434 - `_o -(); - -435  -ERR_OK -; - -437 -ut32_t - -now - = - `mlis -(); - -440 if( -_pcb_busy - && -_ack_timeout - && ( -now - - -_pcb__ -) >= _ack_timeout){ - -441 -_pcb_busy - = -l -; - -442 if( -_timeout_cb -) - -443 - `_timeout_cb -( -_timeout_cb_g -, -this -, ( -now - - -_pcb__ -)); - -444  -ERR_OK -; - -447 if( -_rx_s_timeout - && ( -now - - -_rx_ϡ_ck -) >= (_rx_since_timeout * 1000)){ - -448 - `_o -(); - -449  -ERR_OK -; - -451 #i -ASYNC_TCP_SSL_ENABLED - - -453 if( -_pcb_cu - && ! -_hdshake_de - && ( -now - - -_rx_ϡ_ck -) >= 2000){ - -454 - `_o -(); - -455  -ERR_OK -; - -459 if( -_pl_cb -) - -460 - `_pl_cb -( -_pl_cb_g -, -this -); - -461  -ERR_OK -; - -462 - } -} - -464 #i -LWIP_VERSION_MAJOR - == 1 - -465  -AsyncCl -:: - $_dns_found -( -_addr - * -addr -){ - -467  -AsyncCl -:: - $_dns_found -(cڡ -_addr - * -addr -){ - -469 if( -addr -){ - -470 #i -ASYNC_TCP_SSL_ENABLED - - -471 - `c -( - `IPAddss -( -addr --> -addr -), -_c_pt -, -_pcb_cu -); - -473 - `c -( - `IPAddss -( -addr --> -addr -), -_c_pt -); - -476 if( -_r_cb -) - -477 - `_r_cb -( -_r_cb_g -, -this -, -55); - -478 if( -_disrd_cb -) - -479 - `_disrd_cb -( -_disrd_cb_g -, -this -); - -481 - } -} - -484 #i -LWIP_VERSION_MAJOR - == 1 - -485  -AsyncCl -:: - $_s_dns_found -(cڡ * -me -, -_addr_t - * -addr -, * -g -){ - -487  -AsyncCl -:: - $_s_dns_found -(cڡ * -me -, cڡ -_addr - * -addr -, * -g -){ - -489 -t_ -< -AsyncCl -*>( -g -)-> - `_dns_found -( -addr -); - -490 - } -} - -492 -r_t - -AsyncCl -:: - $_s_pl -(* -g -,  -t_pcb - * -cb -) { - -493  -t_ -< -AsyncCl -*>( -g -)-> - `_pl -( -cb -); - -494 - } -} - -496 -r_t - -AsyncCl -:: - $_s_cv -(* -g -,  -t_pcb - * -cb -,  -pbuf - * -pb -, -r_t - -r -) { - -497  -t_ -< -AsyncCl -*>( -g -)-> - `_cv -( -cb -, -pb -, -r -); - -498 - } -} - -500  -AsyncCl -:: - $_s_r -(* -g -, -r_t - -r -) { - -501 -t_ -< -AsyncCl -*>( -g -)-> - `_r -( -r -); - -502 - } -} - -504 -r_t - -AsyncCl -:: - $_s_ -(* -g -,  -t_pcb - * -cb -, -ut16_t - -n -) { - -505  -t_ -< -AsyncCl -*>( -g -)-> - `_ -( -cb -, -n -); - -506 - } -} - -508 -r_t - -AsyncCl -:: - $_s_ced -(* -g -, * -cb -, -r_t - -r -){ - -509  -t_ -< -AsyncCl -*>( -g -)-> - `_ced -( -cb -, -r -); - -510 - } -} - -512 #i -ASYNC_TCP_SSL_ENABLED - - -513  -AsyncCl -:: - $_s_da -(* -g -,  -t_pcb - * -t -, -ut8_t - * -da -, -size_t - -n -){ - -514 -AsyncCl - * -c - = -t_ -( -g -); - -515 if( -c --> -_cv_cb -) - -516 -c --> - `_cv_cb -(c-> -_cv_cb_g -, c, -da -, -n -); - -517 - } -} - -519  -AsyncCl -:: - $_s_hdshake -(* -g -,  -t_pcb - * -t -, -SSL - * -s -){ - -520 -AsyncCl - * -c - = -t_ -( -g -); - -521 -c --> -_hdshake_de - = -ue -; - -522 if( -c --> -_c_cb -) - -523 -c --> - `_c_cb -(c-> -_c_cb_g -, c); - -524 - } -} - -526  -AsyncCl -:: - $_s_s_r -(* -g -,  -t_pcb - * -t -, -t8_t - -r -){ - -527 -t_ -< -AsyncCl -*>( -g -)-> - `_s_r -( -r -); - -528 - } -} - -533 -AsyncCl - & AsyncCl:: -ݔ -+=(cڡ AsyncCl & -h -) { - -534 if( -xt - = -NULL -){ - -535 -xt - = ( -AsyncCl -*)(& -h -); - -536 -xt --> -ev - = -this -; - -538 -AsyncCl - * -c - = -xt -; - -539  -c --> -xt - ! -NULL -) c = c->next; - -540 -c --> -xt - =( -AsyncCl -*)(& -h -); - -541 -c --> -xt --> -ev - = c; - -543  * -this -; - -546  -AsyncCl -:: - $tRxTimeout -( -ut32_t - -timeout -){ - -547 -_rx_s_timeout - = -timeout -; - -548 - } -} - -550 -ut32_t - -AsyncCl -:: - $gRxTimeout -(){ - -551  -_rx_s_timeout -; - -552 - } -} - -554 -ut32_t - -AsyncCl -:: - $gAckTimeout -(){ - -555  -_ack_timeout -; - -556 - } -} - -558  -AsyncCl -:: - $tAckTimeout -( -ut32_t - -timeout -){ - -559 -_ack_timeout - = -timeout -; - -560 - } -} - -562  -AsyncCl -:: - $tNoDay -( -bo - -noday -){ - -563 if(! -_pcb -) - -565 if( -noday -) - -566 - `t_g_dib -( -_pcb -); - -568 - `t_g_ab -( -_pcb -); - -569 - } -} - -571 -bo - -AsyncCl -:: - $gNoDay -(){ - -572 if(! -_pcb -) - -573  -l -; - -574  - `t_g_dibd -( -_pcb -); - -575 - } -} - -577 -ut16_t - -AsyncCl -:: - $gMss -(){ - -578 if( -_pcb -) - -579  - `t_mss -( -_pcb -); - -581 - } -} - -583 -ut32_t - -AsyncCl -:: - $gRemeAddss -() { - -584 if(! -_pcb -) - -586  -_pcb --> -me_ -. -addr -; - -587 - } -} - -589 -ut16_t - -AsyncCl -:: - $gRemePt -() { - -590 if(! -_pcb -) - -592  -_pcb --> -me_pt -; - -593 - } -} - -595 -ut32_t - -AsyncCl -:: - $gLolAddss -() { - -596 if(! -_pcb -) - -598  -_pcb --> -lol_ -. -addr -; - -599 - } -} - -601 -ut16_t - -AsyncCl -:: - $gLolPt -() { - -602 if(! -_pcb -) - -604  -_pcb --> -lol_pt -; - -605 - } -} - -607 -IPAddss - -AsyncCl -:: - $meIP -() { - -608  - `IPAddss -( - `gRemeAddss -()); - -609 - } -} - -611 -ut16_t - -AsyncCl -:: - $mePt -() { - -612  - `gRemePt -(); - -613 - } -} - -615 -IPAddss - -AsyncCl -:: - $lolIP -() { - -616  - `IPAddss -( - `gLolAddss -()); - -617 - } -} - -619 -ut16_t - -AsyncCl -:: - $lolPt -() { - -620  - `gLolPt -(); - -621 - } -} - -623 #i -ASYNC_TCP_SSL_ENABLED - - -624 -SSL - * -AsyncCl -:: - $gSSL -(){ - -625 if( -_pcb - && -_pcb_cu -){ - -626  - `t_s_g_s -( -_pcb -); - -628  -NULL -; - -629 - } -} - -632 -ut8_t - -AsyncCl -:: - $e -() { - -633 if(! -_pcb -) - -635  -_pcb --> -e -; - -636 - } -} - -638 -bo - -AsyncCl -:: - $ced -(){ - -639 i(! -_pcb -) - -640  -l -; - -641 #i -ASYNC_TCP_SSL_ENABLED - - -642  -_pcb --> -e - =4 && -_hdshake_de -; - -644  -_pcb --> -e - == 4; - -646 - } -} - -648 -bo - -AsyncCl -:: - $cg -(){ - -649 i(! -_pcb -) - -650  -l -; - -651  -_pcb --> -e - > 0 && _pcb->state < 4; - -652 - } -} - -654 -bo - -AsyncCl -:: - $discg -(){ - -655 i(! -_pcb -) - -656  -l -; - -657  -_pcb --> -e - > 4 && _pcb->state < 10; - -658 - } -} - -660 -bo - -AsyncCl -:: - $disced -(){ - -661 i(! -_pcb -) - -662  -ue -; - -663  -_pcb --> -e - == 0 || _pcb->state == 10; - -664 - } -} - -666 -bo - -AsyncCl -:: - $ab -(){ - -667 i(! -_pcb -) - -668  -ue -; - -669  -_pcb --> -e - == 0 || _pcb->state > 4; - -670 - } -} - -672 -bo - -AsyncCl -:: - $nSd -(){ - -673  ! -_pcb_busy - && ( - `a -() > 0); - -674 - } -} - -679  -AsyncCl -:: - $C -( -AcCHdr - -cb -, * -g -){ - -680 -_c_cb - = -cb -; - -681 -_c_cb_g - = -g -; - -682 - } -} - -684  -AsyncCl -:: - $Disc -( -AcCHdr - -cb -, * -g -){ - -685 -_disrd_cb - = -cb -; - -686 -_disrd_cb_g - = -g -; - -687 - } -} - -689  -AsyncCl -:: - $Ack -( -AcAckHdr - -cb -, * -g -){ - -690 -__cb - = -cb -; - -691 -__cb_g - = -g -; - -692 - } -} - -694  -AsyncCl -:: - $E -( -AcEHdr - -cb -, * -g -){ - -695 -_r_cb - = -cb -; - -696 -_r_cb_g - = -g -; - -697 - } -} - -699  -AsyncCl -:: - $Da -( -AcDaHdr - -cb -, * -g -){ - -700 -_cv_cb - = -cb -; - -701 -_cv_cb_g - = -g -; - -702 - } -} - -704  -AsyncCl -:: - $Pack -( -AcPackHdr - -cb -, * -g -){ - -705 -_pb_cb - = -cb -; - -706 -_pb_cb_g - = -g -; - -707 - } -} - -709  -AsyncCl -:: - $Timeout -( -AcTimeoutHdr - -cb -, * -g -){ - -710 -_timeout_cb - = -cb -; - -711 -_timeout_cb_g - = -g -; - -712 - } -} - -714  -AsyncCl -:: - $Pl -( -AcCHdr - -cb -, * -g -){ - -715 -_pl_cb - = -cb -; - -716 -_pl_cb_g - = -g -; - -717 - } -} - -720 -size_t - -AsyncCl -:: - $a -(){ - -721 #i -ASYNC_TCP_SSL_ENABLED - - -722 if(( -_pcb - ! -NULL -&& (_pcb-> -e - =4&& -_hdshake_de -){ - -723 -ut16_t - -s - = - `t_dbuf -( -_pcb -); - -724 if( -_pcb_cu -){ - -725 #ifde -AXTLS_2_0_0_SNDBUF - - -726  - `t_s_dbuf -( -_pcb -); - -728 if( -s - >= 128) - -729  -s - - 128; - -733  -s -; - -736 if(( -_pcb - ! -NULL -&& (_pcb-> -e - == 4)){ - -737  - `t_dbuf -( -_pcb -); - -741 - } -} - -743  -AsyncCl -:: - $ackPack -( -pbuf - * -pb -){ - -744 if(! -pb -){ - -747 - `t_cved -( -_pcb -, -pb --> -n -); - -748 - `pbuf_ -( -pb -); - -749 - } -} - -751 cڡ * -AsyncCl -:: - $rToSg -( -t8_t - -r -) { - -752  -r -) { - -753  -ERR_OK -: - -755  -ERR_MEM -: - -757  -ERR_BUF -: - -759  -ERR_TIMEOUT -: - -761  -ERR_RTE -: - -763  -ERR_INPROGRESS -: - -765  -ERR_VAL -: - -767  -ERR_WOULDBLOCK -: - -769  -ERR_ABRT -: - -771  -ERR_RST -: - -773  -ERR_CLSD -: - -775  -ERR_CONN -: - -777  -ERR_ARG -: - -779  -ERR_USE -: - -781  -ERR_IF -: - -783  -ERR_ISCONN -: - -788 - } -} - -790 cڡ * -AsyncCl -:: - $eToSg -(){ - -791  - `e -()){ - -805 - } -} - -810  - sndg_pcb - { - -811 -t_pcb -* -pcb -; - -812 -pbuf - * -pb -; - -813  -ndg_pcb - * -xt -; - -816 - gAsyncSv -:: - $AsyncSv -( -IPAddss - -addr -, -ut16_t - -pt -) - -817 : - `_pt -( -pt -) - -818 , - `_addr -( -addr -) - -819 , - `_noDay -( -l -) - -820 , - `_pcb -(0) - -821 , - `_c_cb -(0) - -822 , - $_c_cb_g -(0) - -823 #i -ASYNC_TCP_SSL_ENABLED - - -824 , - `_ndg -( -NULL -) - -825 , - `_s_x -( -NULL -) - -826 , - `_fe_cb -(0) - -827 , - $_fe_cb_g -(0) - -829 { - } -} - -831 - gAsyncSv -:: - $AsyncSv -( -ut16_t - -pt -) - -832 : - `_pt -( -pt -) - -833 , - `_addr -(( -ut32_t - -IPADDR_ANY -) - -834 , - `_noDay -( -l -) - -835 , - `_pcb -(0) - -836 , - `_c_cb -(0) - -837 , - $_c_cb_g -(0) - -838 #i -ASYNC_TCP_SSL_ENABLED - - -839 , - `_ndg -( -NULL -) - -840 , - `_s_x -( -NULL -) - -841 , - `_fe_cb -(0) - -842 , - $_fe_cb_g -(0) - -844 { - } -} - -846 - gAsyncSv -::~ - $AsyncSv -(){ - -847 - `d -(); - -848 - } -} - -850  - gAsyncSv -:: - $Cl -( -AcCHdr - -cb -, * -g -){ - -851 -_c_cb - = -cb -; - -852 -_c_cb_g - = -g -; - -853 - } -} - -855 #i -ASYNC_TCP_SSL_ENABLED - - -856  - gAsyncSv -:: - $SFeReque -( -AcSSlFeHdr - -cb -, * -g -){ - -857 -_fe_cb - = -cb -; - -858 -_fe_cb_g - = -g -; - -859 - } -} - -862  - gAsyncSv -:: - $beg -(){ - -863 if( -_pcb -) - -866 -t8_t - -r -; - -867 -t_pcb -* -pcb - = - `t_w -(); - -868 i(! -pcb -){ - -872 -_addr_t - -lol_addr -; - -873 -lol_addr -. -addr - = ( -ut32_t - -_addr -; - -874 -r - = - `t_bd -( -pcb -, & -lol_addr -, -_pt -); - -876 i( -r - ! -ERR_OK -) { - -877 - `t_o -( -pcb -); - -881 -t_pcb -* -li_pcb - = - `t_li -( -pcb -); - -882 i(! -li_pcb -) { - -883 - `t_o -( -pcb -); - -886 -_pcb - = -li_pcb -; - -887 - `t_g -( -_pcb -, (* -this -); - -888 - `t_ac -( -_pcb -, & -_s_ac -); - -889 - } -} - -891 #i -ASYNC_TCP_SSL_ENABLED - - -892  - gAsyncSv -:: - $begSecu -(cڡ * - -, cڡ * -key -, cڡ * -sswd -){ - -893 if( -_s_x -){ - -896 - `t_s_fe -( -_s_ -, -this -); - -897 -_s_x - = - `t_s_w_rv_x -( - -, -key -, -sswd -); - -898 if( -_s_x -){ - -899 - `beg -(); - -901 - } -} - -904  - gAsyncSv -:: - $d -(){ - -905 if( -_pcb -){ - -907 - `t_g -( -_pcb -, -NULL -); - -908 - `t_ac -( -_pcb -, -NULL -); - -909 if( - `t_o -( -_pcb -! -ERR_OK -){ - -910 - `t_abt -( -_pcb -); - -912 -_pcb - = -NULL -; - -914 #i -ASYNC_TCP_SSL_ENABLED - - -915 if( -_s_x -){ - -916 - `s_x_ -( -_s_x -); - -917 -_s_x - = -NULL -; - -918 if( -_ndg -){ - -919  -ndg_pcb - * -p -; - -920  -_ndg -){ - -921 -p - = -_ndg -; - -922 -_ndg - = _ndg-> -xt -; - -923 if( -p --> -pb -){ - -924 - `pbuf_ -( -p --> -pb -); - -926 - ` -( -p -); - -931 - } -} - -933  - gAsyncSv -:: - $tNoDay -( -bo - -noday -){ - -934 -_noDay - = -noday -; - -935 - } -} - -937 -bo - - gAsyncSv -:: - $gNoDay -(){ - -938  -_noDay -; - -939 - } -} - -941 -ut8_t - - gAsyncSv -:: - $us -(){ - -942 i(! -_pcb -) - -944  -_pcb --> -e -; - -945 - } -} - -947 -r_t - - gAsyncSv -:: - $_ac -( -t_pcb -* -pcb -, -r_t - -r -){ - -948 if( -_c_cb -){ - -949 #i -ASYNC_TCP_SSL_ENABLED - - -950 i( -_noDay - || -_s_x -) - -952 i( -_noDay -) - -954 - `t_g_dib -( -pcb -); - -956 - `t_g_ab -( -pcb -); - -959 #i -ASYNC_TCP_SSL_ENABLED - - -960 if( -_s_x -){ - -961 if( - `t_s_has_ -(|| -_ndg -){ - -962  -ndg_pcb - * -w_em - = (ndg_pcb*) - `mloc -((pending_pcb)); - -963 if(! -w_em -){ - -964 - `ASYNC_TCP_DEBUG -("### mallocewending failed!\n"); - -965 if( - `t_o -( -pcb -! -ERR_OK -){ - -966 - `t_abt -( -pcb -); - -968  -ERR_OK -; - -970 - `ASYNC_TCP_DEBUG -("###utwa: %d\n", -_s_wag -); - -971 -w_em --> -pcb - =cb; - -972 -w_em --> -pb - = -NULL -; - -973 -w_em --> -xt - = -NULL -; - -974 - `t_rio -( -_pcb -, -TCP_PRIO_MIN -); - -975 - `t_g -( -pcb -, -this -); - -976 - `t_pl -( -pcb -, & -_s_pl -, 1); - -977 - `t_cv -( -pcb -, & -_s_cv -); - -979 if( -_ndg - = -NULL -){ - -980 -_ndg - = -w_em -; - -982  -ndg_pcb - * -p - = -_ndg -; - -983  -p --> -xt - ! -NULL -) - -984 -p - =-> -xt -; - -985 -p --> -xt - = -w_em -; - -988 -AsyncCl - * -c - = -w - - `AsyncCl -( -pcb -, -_s_x -); - -989 if( -c -){ - -990 -c --> - `C -([ -this -](* -g -, -AsyncCl - *c){ - -991 - `_c_cb -( -_c_cb_g -, -c -); - -992 }, -this -); - -995  -ERR_OK -; - -997 -AsyncCl - * -c - = -w - - `AsyncCl -( -pcb -, -NULL -); - -999 -AsyncCl - * -c - = -w - - `AsyncCl -( -pcb -); - -1001 if( -c -){ - -1002 - `_c_cb -( -_c_cb_g -, -c -); - -1003  -ERR_OK -; - -1005 #i -ASYNC_TCP_SSL_ENABLED - - -1009 if( - `t_o -( -pcb -! -ERR_OK -){ - -1010 - `t_abt -( -pcb -); - -1012  -ERR_OK -; - -1013 - } -} - -1015 -r_t - - gAsyncSv -:: - $_s_ac -(* -g -, -t_pcb -* -pcb -, -r_t - -r -){ - -1016  -t_ -< -AsyncSv -*>( -g -)-> - `_ac -( -pcb -, -r -); - -1017 - } -} - -1019 #i -ASYNC_TCP_SSL_ENABLED - - -1020 -r_t - - gAsyncSv -:: - $_pl -( -t_pcb -* -pcb -){ - -1021 if(! - `t_s_has_ -(&& -_ndg -){ - -1022  -ndg_pcb - * -p - = -_ndg -; - -1023 if( -p --> -pcb - ==cb){ - -1024 -_ndg - = _ndg-> -xt -; - -1026  -p --> -xt - &&->xt-> -pcb - !=cb) =->next; - -1027 if(! -p --> -xt -)  0; - -1028  -ndg_pcb - * -b - = -p --> -xt -; - -1029 -p --> -xt - = -b -->next; - -1030 -p - = -b -; - -1032 - `ASYNC_TCP_DEBUG -("###emovom wa: %d\n", -_s_wag -); - -1033 -AsyncCl - * -c - = -w - - `AsyncCl -( -pcb -, -_s_x -); - -1034 if( -c -){ - -1035 -c --> - `C -([ -this -](* -g -, -AsyncCl - *c){ - -1036 - `_c_cb -( -_c_cb_g -, -c -); - -1037 }, -this -); - -1038 if( -p --> -pb -) - -1039 -c --> - `_cv -( -pcb -, -p --> -pb -, 0); - -1041 - ` -( -p -); - -1043  -ERR_OK -; - -1044 - } -} - -1046 -r_t - - gAsyncSv -:: - $_cv -( -t_pcb - * -pcb -,  -pbuf - * -pb -, -r_t - -r -){ - -1047 if(! -_ndg -) - -1048  -ERR_OK -; - -1050  -ndg_pcb - * -p -; - -1052 if(! -pb -){ - -1053 - `ASYNC_TCP_DEBUG -("### clo from wa: %d\n", -_s_wag -); - -1054 -p - = -_ndg -; - -1055 if( -p --> -pcb - ==cb){ - -1056 -_ndg - = _ndg-> -xt -; - -1058  -p --> -xt - &&->xt-> -pcb - !=cb) =->next; - -1059 if(! -p --> -xt -)  0; - -1060  -ndg_pcb - * -b - = -p --> -xt -; - -1061 -p --> -xt - = -b -->next; - -1062 -p - = -b -; - -1064 if( -p --> -pb -){ - -1065 - `pbuf_ -( -p --> -pb -); - -1067 - ` -( -p -); - -1068 - `t_o -( -pcb -); - -1069 - `t_abt -( -pcb -); - -1071 - `ASYNC_TCP_DEBUG -("### wa _cv: %u %d\n", -pb --> -t_n -, -_s_wag -); - -1072 -p - = -_ndg -; - -1073  -p - &&-> -pcb - !=cb) - -1074 -p - =-> -xt -; - -1075 if( -p -){ - -1076 if( -p --> -pb -){ - -1077 - `pbuf_cha -( -p --> -pb -,b); - -1079 -p --> -pb - =b; - -1083  -ERR_OK -; - -1084 - } -} - -1086  - gAsyncSv -:: - $_ -(cڡ * -fame -, -ut8_t - ** -buf -){ - -1087 if( -_fe_cb -){ - -1088  - `_fe_cb -( -_fe_cb_g -, -fame -, -buf -); - -1090 * -buf - = 0; - -1092 - } -} - -1094  - gAsyncSv -:: - $_s_ -(* -g -, cڡ * -fame -, -ut8_t - ** -buf -){ - -1095  -t_ -< -AsyncSv -*>( -g -)-> - `_ -( -fame -, -buf -); - -1096 - } -} - -1098 -r_t - - gAsyncSv -:: - $_s_pl -(* -g -,  -t_pcb - * -pcb -){ - -1099  -t_ -< -AsyncSv -*>( -g -)-> - `_pl -( -pcb -); - -1100 - } -} - -1102 -r_t - - gAsyncSv -:: - $_s_cv -(* -g -,  -t_pcb - * -pcb -,  -pbuf - * -pb -, -r_t - -r -){ - -1103  -t_ -< -AsyncSv -*>( -g -)-> - `_cv -( -pcb -, -pb -, -r -); - -1104 - } -} - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h - -22 #ide -ASYNCTCP_H_ - - -23  - #ASYNCTCP_H_ - - - ) - -25  - ~ - -26  - ~"IPAddss.h -" - -27  - ~ - -30  - ~"lw/.h -" - -31  - ~"lw/r.h -" - -32  - ~"lw/pbuf.h -" - -35 -ass - - gAsyncCl -; - -37  - #ASYNC_MAX_ACK_TIME - 5000 - - ) - -38  - #ASYNC_WRITE_FLAG_COPY - 0x01 - -39  - #ASYNC_WRITE_FLAG_MORE - 0x02 - -40 - - ) - -41  - gt_pcb -; - -42  - g_addr -; - -43 #i -ASYNC_TCP_SSL_ENABLED - - -44  - gSSL_ -; - -45  -SSL_ - - tSSL -; - -46  - gSSL_CTX_ -; - -47  -SSL_CTX_ - - tSSL_CTX -; - -50  - gd -:: - tfuni -<(*, - tAsyncCl -*)> - tAcCHdr -; - -51  - gd -:: - tfuni -<(*, - tAsyncCl -*, - tsize_t - - tn -, - tut32_t - - ttime -)> - tAcAckHdr -; - -52  - gd -:: - tfuni -<(*, - tAsyncCl -*, - tt8_t - - tr -)> - tAcEHdr -; - -53  - gd -:: - tfuni -<(*, - tAsyncCl -*, * - tda -, - tsize_t - - tn -)> - tAcDaHdr -; - -54  - gd -:: - tfuni -<(*, - tAsyncCl -*,  - tpbuf - * - tpb -)> - tAcPackHdr -; - -55  - gd -:: - tfuni -<(*, - tAsyncCl -*, - tut32_t - - ttime -)> - tAcTimeoutHdr -; - -57 as - cAsyncCl - { - -58 - meed -: - -59 -nd - -ass - -AsyncTCPbufr -; - -60 -t_pcb -* - m_pcb -; - -61 -AcCHdr - - m_c_cb -; - -62 * - m_c_cb_g -; - -63 -AcCHdr - - m_disrd_cb -; - -64 * - m_disrd_cb_g -; - -65 -AcAckHdr - - m__cb -; - -66 * - m__cb_g -; - -67 -AcEHdr - - m_r_cb -; - -68 * - m_r_cb_g -; - -69 -AcDaHdr - - m_cv_cb -; - -70 * - m_cv_cb_g -; - -71 -AcPackHdr - - m_pb_cb -; - -72 * - m_pb_cb_g -; - -73 -AcTimeoutHdr - - m_timeout_cb -; - -74 * - m_timeout_cb_g -; - -75 -AcCHdr - - m_pl_cb -; - -76 * - m_pl_cb_g -; - -77 -bo - - m_pcb_busy -; - -78 #i -ASYNC_TCP_SSL_ENABLED - - -79 -bo - - m_pcb_cu -; - -80 -bo - - m_hdshake_de -; - -82 -ut32_t - - m_pcb__ -; - -83 -bo - - m_o_pcb -; - -84 -bo - - m_ack_pcb -; - -85 -ut32_t - - m_tx_ucked_n -; - -86 -ut32_t - - m_tx_acked_n -; - -87 -ut32_t - - m_tx_un_n -; - -88 -ut32_t - - m_rx_ack_n -; - -89 -ut32_t - - m_rx_ϡ_ck -; - -90 -ut32_t - - m_rx_s_timeout -; - -91 -ut32_t - - m_ack_timeout -; - -92 -ut16_t - - m_c_pt -; - -94 -t8_t - -_o -(); - -95 -r_t - -_ced -(* -pcb -,_ -r -); - -96  -_r -( -r_t - -r -); - -97 #i -ASYNC_TCP_SSL_ENABLED - - -98  -_s_r -( -t8_t - -r -); - -100 -r_t - -_pl -( -t_pcb -* -pcb -); - -101 -r_t - -_ -( -t_pcb -* -pcb -, -ut16_t - -n -); - -102 #i -LWIP_VERSION_MAJOR - == 1 - -103  -_dns_found -( -_addr - * -addr -); - -105  -_dns_found -(cڡ -_addr - * -addr -); - -107  -r_t - -_s_pl -(* -g -,  -t_pcb - * -cb -); - -108  -r_t - -_s_cv -(* -g -,  -t_pcb - * -cb -,  -pbuf - * -pb -,_ -r -); - -109  -_s_r -(* -g -, -r_t - -r -); - -110  -r_t - -_s_ -(* -g -,  -t_pcb - * -cb -, -ut16_t - -n -); - -111  -r_t - -_s_ced -(* -g -, * -cb -,_ -r -); - -112 #i -LWIP_VERSION_MAJOR - == 1 - -113  -_s_dns_found -(cڡ * -me -,  -_addr - * -addr -, * -g -); - -115  -_s_dns_found -(cڡ * -me -, cڡ -_addr - * -addr -, * -g -); - -117 #i -ASYNC_TCP_SSL_ENABLED - - -118  -_s_da -(* -g -,  -t_pcb - * -t -, -ut8_t - * -da -, -size_t - -n -); - -119  -_s_hdshake -(* -g -,  -t_pcb - * -t -, -SSL - * -s -); - -120  -_s_s_r -(* -g -,  -t_pcb - * -t -, -t8_t - -r -); - -123 - mpublic -: - -124 -AsyncCl -* -ev -; - -125 -AsyncCl -* - mxt -; - -127 #i -ASYNC_TCP_SSL_ENABLED - - -128 -AsyncCl -( -t_pcb -* -pcb - = 0, -SSL_CTX - * -s_x - = -NULL -); - -130 -AsyncCl -( -t_pcb -* -pcb - = 0); - -132 ~ -AsyncCl -(); - -134 - mAsyncCl - & - mݔ -=(cڡ -AsyncCl - & -h -); - -135 - mAsyncCl - & - mݔ -+=(cڡ -AsyncCl - & -h -); - -137 -bo - - mݔ -==(cڡ -AsyncCl - & -h -); - -139 -bo - - mݔ -!=(cڡ -AsyncCl - & -h -) { - -140  !(* -this - = -h -); - -142 #i -ASYNC_TCP_SSL_ENABLED - - -143 -bo - -c -( -IPAddss - - -, -ut16_t - -pt -, bo -cu -= -l -); - -144 -bo - -c -(cڡ * -ho -, -ut16_t - -pt -, bo -cu -= -l -); - -146 -bo - -c -( -IPAddss - - -, -ut16_t - -pt -); - -147 -bo - -c -(cڡ * -ho -, -ut16_t - -pt -); - -149  -o -( -bo - -now - = -l -); - -150  - -(); - -151 -t8_t - -abt -(); - -152 -bo - - -(); - -154 -bo - -nSd -(); - -155 -size_t - -a -(); - -156 -size_t - -add -(cڡ * -da -, size_ -size -, -ut8_t - -iags -=0); - -157 -bo - -nd -(); - -158 -size_t - -ack -(size_ -n -); - -159  - $ackL -(){ -_ack_pcb - = -l -; - } -} - -161 #i -ASYNC_TCP_SSL_ENABLED - - -162 -SSL - * -gSSL -(); - -165 -size_t - -wre -(cڡ * -da -); - -166 -size_t - -wre -(cڡ * -da -, size_ -size -, -ut8_t - -iags -=0); - -168 -ut8_t - -e -(); - -169 -bo - -cg -(); - -170 -bo - -ced -(); - -171 -bo - -discg -(); - -172 -bo - -disced -(); - -173 -bo - -ab -(); - -175 -ut16_t - -gMss -(); - -176 -ut32_t - -gRxTimeout -(); - -177  -tRxTimeout -( -ut32_t - -timeout -); - -178 -ut32_t - -gAckTimeout -(); - -179  -tAckTimeout -( -ut32_t - -timeout -); - -180  -tNoDay -( -bo - -noday -); - -181 -bo - -gNoDay -(); - -182 -ut32_t - -gRemeAddss -(); - -183 -ut16_t - -gRemePt -(); - -184 -ut32_t - -gLolAddss -(); - -185 -ut16_t - -gLolPt -(); - -187 -IPAddss - -meIP -(); - -188 -ut16_t - -mePt -(); - -189 -IPAddss - -lolIP -(); - -190 -ut16_t - -lolPt -(); - -192  -C -( -AcCHdr - -cb -, * -g - = 0); - -193  -Disc -( -AcCHdr - -cb -, * -g - = 0); - -194  -Ack -( -AcAckHdr - -cb -, * -g - = 0); - -195  -E -( -AcEHdr - -cb -, * -g - = 0); - -196  -Da -( -AcDaHdr - -cb -, * -g - = 0); - -197  -Pack -( -AcPackHdr - -cb -, * -g - = 0); - -198  -Timeout -( -AcTimeoutHdr - -cb -, * -g - = 0); - -199  -Pl -( -AcCHdr - -cb -, * -g - = 0); - -201  -ackPack -( -pbuf - * -pb -); - -203 cڡ * -rToSg -( -t8_t - -r -); - -204 cڡ * -eToSg -(); - -206 -r_t - -_cv -( -t_pcb -* -pcb -, -pbuf -* -pb -,_ -r -); - -209 #i -ASYNC_TCP_SSL_ENABLED - - -210  - gd -:: - tfuni -<(* - tg -, cڡ * - tfame -, - tut8_t - ** - tbuf -)> - tAcSSlFeHdr -; - -211  - gndg_pcb -; - -214 as - cAsyncSv - { - -215 - meed -: - -216 -ut16_t - -_pt -; - -217 -IPAddss - - m_addr -; - -218 -bo - - m_noDay -; - -219 -t_pcb -* - m_pcb -; - -220 -AcCHdr - - m_c_cb -; - -221 * - m_c_cb_g -; - -222 #i -ASYNC_TCP_SSL_ENABLED - - -223  -ndg_pcb - * - m_ndg -; - -224 -SSL_CTX - * - m_s_x -; - -225 -AcSSlFeHdr - - m_fe_cb -; - -226 * - m_fe_cb_g -; - -229 - mpublic -: - -231 -AsyncSv -( -IPAddss - -addr -, -ut16_t - -pt -); - -232 -AsyncSv -( -ut16_t - -pt -); - -233 ~ -AsyncSv -(); - -234  -Cl -( -AcCHdr - -cb -, * -g -); - -235 #i -ASYNC_TCP_SSL_ENABLED - - -236  -SFeReque -( -AcSSlFeHdr - -cb -, * -g -); - -237  -begSecu -(cڡ * - -, cڡ * -ive_key_fe -, cڡ * -sswd -); - -239  -beg -(); - -240  -d -(); - -241  -tNoDay -( -bo - -noday -); - -242 -bo - -gNoDay -(); - -243 -ut8_t - -us -(); - -245 - meed -: - -246 -r_t - -_ac -( -t_pcb -* -wpcb -,_ -r -); - -247  -r_t - -_s_ac -(* -g -, -t_pcb -* -wpcb -,_ -r -); - -248 #i -ASYNC_TCP_SSL_ENABLED - - -249  -_ -(cڡ * -fame -, -ut8_t - ** -buf -); - -250 -r_t - -_pl -( -t_pcb -* -pcb -); - -251 -r_t - -_cv -( -t_pcb - * -pcb -,  -pbuf - * -pb -,_ -r -); - -252  -_s_ -(* -g -, cڡ * -fame -, -ut8_t - ** -buf -); - -253  -r_t - -_s_pl -(* -g -,  -t_pcb - * -cb -); - -254  -r_t - -_s_cv -(* -g -,  -t_pcb - * -cb -,  -pbuf - * -pb -,_ -r -); - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp - -26  - ~ - -27  - ~ - -29  - ~"ESPAsyncTCPbufr.h -" - -32 - gAsyncTCPbufr -:: - $AsyncTCPbufr -( -AsyncCl -* - -) { - -33 if( - - = -NULL -) { - -34 - `DEBUG_ASYNC_TCP -("[A-TCP] client isull!!!\n"); - -35 - `nic -(); - -38 -_ - = - -; - -39 -_TXbufrWre - = -w - - `cbuf -(1460); - -40 -_TXbufrRd - = -_TXbufrWre -; - -41 -_RXbufr - = -w - - `cbuf -(100); - -42 -_RXmode - = -ATB_RX_MODE_FREE -; - -43 -_rxSize - = 0; - -44 -_rxTm - = 0x00; - -45 -_rxRdBysP - = -NULL -; - -46 -_rxRdSgP - = -NULL -; - -47 -_cbDisc - = -NULL -; - -49 -_cbRX - = -NULL -; - -50 -_cbDe - = -NULL -; - -51 - `_chClbacks -(); - -52 - } -} - -54 - gAsyncTCPbufr -::~ - $AsyncTCPbufr -() { - -55 if( -_ -) { - -56 -_ --> - `o -(); - -59 if( -_RXbufr -) { - -60 -de - -_RXbufr -; - -61 -_RXbufr - = -NULL -; - -64 if( -_TXbufrWre -) { - -66 -_TXbufrWre - = -NULL -; - -69 if( -_TXbufrRd -) { - -70 -cbuf - * -xt - = -_TXbufrRd -->next; - -71 -de - -_TXbufrRd -; - -72  -xt - ! -NULL -) { - -73 -_TXbufrRd - = -xt -; - -74 -xt - = -_TXbufrRd -->next; - -75 -de - -_TXbufrRd -; - -77 -_TXbufrRd - = -NULL -; - -79 - } -} - -81 -size_t - - gAsyncTCPbufr -:: - $wre -( -Sg - & -da -) { - -82  - `wre -( -da -. - `c_r -(), da. - `ngth -()); - -83 - } -} - -85 -size_t - - gAsyncTCPbufr -:: - $wre -( -ut8_t - -da -) { - -86  - `wre -(& -da -, 1); - -87 - } -} - -89 -size_t - - gAsyncTCPbufr -:: - $wre -(cڡ * -da -) { - -90  - `wre -((cڡ -ut8_t - * -da -, - ` -(data)); - -91 - } -} - -93 -size_t - - gAsyncTCPbufr -:: - $wre -(cڡ * -da -, -size_t - -n -) { - -94  - `wre -((cڡ -ut8_t - * -da -, -n -); - -95 - } -} - -103 -size_t - - gAsyncTCPbufr -:: - $wre -(cڡ -ut8_t - * -da -, -size_t - -n -) { - -104 if( -_TXbufrWre - = -NULL - || -_ - =NULL || !_-> - `ced -(|| -da - =NULL || -n - == 0) { - -108 -size_t - -bysLe - = -n -; - -109  -bysLe -) { - -110 -size_t - -w - = -_TXbufrWre --> - `wre -((cڡ * -da -, -bysLe -); - -111 -bysLe - - -w -; - -112 -da - + -w -; - -113 - `_ndBufr -(); - -116 if( -_TXbufrWre --> - `fu -(&& -bysLe - > 0) { - -119 if( -ESP -. - `gFeHp -() < 4096) { - -120 - `DEBUG_ASYNC_TCP -("[A-TCP]un out of Heap canot sendll Data!\n"); - -121  ( -n - - -bysLe -); - -124 -cbuf - * -xt - = -w - - `cbuf -(1460); - -126 if( -xt - = -NULL -) { - -127 - `DEBUG_ASYNC_TCP -("[A-TCP]un out of Heap!\n"); - -128 - `nic -(); - -130 - `DEBUG_ASYNC_TCP -("[A-TCP]ew cbuf\n"); - -134 -_TXbufrWre --> -xt - =ext; - -137 -_TXbufrWre - = -xt -; - -141  -n -; - -143 - } -} - -148  - gAsyncTCPbufr -:: - $ush -() { - -149 ! -_TXbufrWre --> - `emy -()) { - -150 ! -_ --> - `nSd -()) { - -151 - `day -(0); - -153 - `_ndBufr -(); - -155 - } -} - -157  - gAsyncTCPbufr -:: - $noClback -() { - -158 -_RXmode - = -ATB_RX_MODE_NONE -; - -159 - } -} - -161  - gAsyncTCPbufr -:: - $adSgU -( -rm -, -Sg - * -r -, -AsyncTCPbufrDeCb - -de -) { - -162 if( -_ - = -NULL -) { - -165 - `DEBUG_ASYNC_TCP -("[A-TCP]dSgUm: %02X\n", -rm -); - -166 -_RXmode - = -ATB_RX_MODE_NONE -; - -167 -_cbDe - = -de -; - -168 -_rxRdSgP - = -r -; - -169 -_rxTm - = -rm -; - -170 -_rxSize - = 0; - -171 -_RXmode - = -ATB_RX_MODE_TERMINATOR_STRING -; - -172 - } -} - -190  - gAsyncTCPbufr -:: - $adBys -(* -bufr -, -size_t - -ngth -, -AsyncTCPbufrDeCb - -de -) { - -191 if( -_ - = -NULL -) { - -194 - `DEBUG_ASYNC_TCP -("[A-TCP]dByngth: %d\n", -ngth -); - -195 -_RXmode - = -ATB_RX_MODE_NONE -; - -196 -_cbDe - = -de -; - -197 -_rxRdBysP - = ( -ut8_t - * -bufr -; - -198 -_rxSize - = -ngth -; - -199 -_RXmode - = -ATB_RX_MODE_READ_BYTES -; - -200 - } -} - -202  - gAsyncTCPbufr -:: - $adBys -( -ut8_t - * -bufr -, -size_t - -ngth -, -AsyncTCPbufrDeCb - -de -) { - -203 - `adBys -((* -bufr -, -ngth -, -de -); - -204 - } -} - -206  - gAsyncTCPbufr -:: - $Da -( -AsyncTCPbufrDaCb - -cb -) { - -207 if( -_ - = -NULL -) { - -210 - `DEBUG_ASYNC_TCP -("[A-TCP] onData\n"); - -211 -_RXmode - = -ATB_RX_MODE_NONE -; - -212 -_cbDe - = -NULL -; - -213 -_cbRX - = -cb -; - -214 -_RXmode - = -ATB_RX_MODE_FREE -; - -215 - } -} - -217  - gAsyncTCPbufr -:: - $Disc -( -AsyncTCPbufrDiscCb - -cb -) { - -218 -_cbDisc - = -cb -; - -219 - } -} - -221 -IPAddss - - gAsyncTCPbufr -:: - $meIP -() { - -222 if(! -_ -) { - -223  - `IPAddss -(0U); - -225  -_ --> - `meIP -(); - -226 - } -} - -228 -ut16_t - - gAsyncTCPbufr -:: - $mePt -() { - -229 if(! -_ -) { - -232  -_ --> - `mePt -(); - -233 - } -} - -235 -bo - - gAsyncTCPbufr -:: - $ced -() { - -236 if(! -_ -) { - -237  -l -; - -239  -_ --> - `ced -(); - -240 - } -} - -242  - gAsyncTCPbufr -:: - $ -() { - -244 if(! -_ -) { - -247 -_ --> - ` -(); - -248 -_ - = -NULL -; - -250 if( -_cbDe -) { - -251  -_RXmode -) { - -252  -ATB_RX_MODE_READ_BYTES -: - -253  -ATB_RX_MODE_TERMINATOR -: - -254  -ATB_RX_MODE_TERMINATOR_STRING -: - -255 -_RXmode - = -ATB_RX_MODE_NONE -; - -256 - `_cbDe -( -l -, -NULL -); - -262 -_RXmode - = -ATB_RX_MODE_NONE -; - -263 - } -} - -265  - gAsyncTCPbufr -:: - $o -() { - -266 - ` -(); - -267 - } -} - -275  - gAsyncTCPbufr -:: - $_chClbacks -() { - -276 if(! -_ -) { - -279 - `DEBUG_ASYNC_TCP -("[A-TCP]ttachCallbacks\n"); - -281 -_ --> - `Pl -([](* -obj -, -AsyncCl -* -c -) { - -282 -AsyncTCPbufr -* -b - = ((AsyncTCPbufr*)( -obj -)); - -283 if(( -b --> -_TXbufrRd - ! -NULL -&& !b->_TXbufrRd-> - `emy -()) { - -284 -b --> - `_ndBufr -(); - -289 }, -this -); - -291 -_ --> - `Ack -([](* -obj -, -AsyncCl -* -c -, -size_t - -n -, -ut32_t - -time -) { - -292 - `DEBUG_ASYNC_TCP -("[A-TCP] onAck\n"); - -293 (( -AsyncTCPbufr -*)( -obj -))-> - `_ndBufr -(); - -294 }, -this -); - -296 -_ --> - `Disc -([](* -obj -, -AsyncCl -* -c -) { - -297 - `DEBUG_ASYNC_TCP -("[A-TCP] onDisconnect\n"); - -298 -AsyncTCPbufr -* -b - = ((AsyncTCPbufr*)( -obj -)); - -299 -b --> -_ - = -NULL -; - -300 -bo - -d - = -ue -; - -301 if( -b --> -_cbDisc -) { - -302 -d - = -b --> - `_cbDisc -(b); - -304 -de - -c -; - -305 if( -d -) { - -306 -de - -b -; - -308 }, -this -); - -310 -_ --> - `Da -([](* -obj -, -AsyncCl -* -c -, * -buf -, -size_t - -n -) { - -311 -AsyncTCPbufr -* -b - = ((AsyncTCPbufr*)( -obj -)); - -312 -b --> - `_rxDa -(( -ut8_t - *) -buf -, -n -); - -313 }, -this -); - -315 -_ --> - `Timeout -([](* -obj -, -AsyncCl -* -c -, -ut32_t - -time -){ - -316 - `DEBUG_ASYNC_TCP -("[A-TCP] onTimeout\n"); - -317 -c --> - `o -(); - -318 }, -this -); - -320 - `DEBUG_ASYNC_TCP -("[A-TCP]ttachCallbacks Done.\n"); - -321 - } -} - -326  - gAsyncTCPbufr -:: - $_ndBufr -() { - -328 -size_t - -avaab - = -_TXbufrRd --> - `avaab -(); - -329 if( -avaab - =0 || -_ - = -NULL - || !_-> - `ced -(|| !_-> - `nSd -()) { - -333 ( -_ --> - `a -(> 0&& ( -_TXbufrRd --> - `avaab -(> 0&& _-> - `nSd -()) { - -335 -avaab - = -_TXbufrRd --> - `avaab -(); - -337 if( -avaab - > -_ --> - `a -()) { - -338 -avaab - = -_ --> - `a -(); - -341 * -out - = -w - [ -avaab -]; - -342 if( -out - = -NULL -) { - -343 - `DEBUG_ASYNC_TCP -("[A-TCP]oess heap,ryater.\n"); - -348 -_TXbufrRd --> - `ek -( -out -, -avaab -); - -351 -size_t - -nd - = -_ --> - `wre -((cڡ * -out -, -avaab -); - -352 if( -nd - ! -avaab -) { - -353 - `DEBUG_ASYNC_TCP -("[A-TCP] wred sd: %dvaab: %d \n", -nd -, -avaab -); - -357 -_TXbufrRd --> - `move -( -nd -); - -360 if( -_TXbufrRd --> - `avaab -(=0 && _TXbufrRd-> -xt - ! -NULL -) { - -361 -cbuf - * -d - = -_TXbufrRd -; - -362 -_TXbufrRd - = _TXbufrRd-> -xt -; - -363 -de - -d -; - -364 - `DEBUG_ASYNC_TCP -("[A-TCP] delete cbuf\n"); - -367 -de - -out -; - -370 - } -} - -377  - gAsyncTCPbufr -:: - $_rxDa -( -ut8_t - * -buf -, -size_t - -n -) { - -378 if(! -_ - || !_-> - `ced -()) { - -379 - `DEBUG_ASYNC_TCP -("[A-TCP]ot connected!\n"); - -382 if(! -_RXbufr -) { - -383 - `DEBUG_ASYNC_TCP -("[A-TCP] _rxDatao _RXbuffer!\n"); - -386 - `DEBUG_ASYNC_TCP -("[A-TCP] _rxDn: %d RXmode: %d\n", -n -, -_RXmode -); - -388 -size_t - -hdd - = 0; - -390 if( -_RXmode - ! -ATB_RX_MODE_NONE -) { - -391 -hdd - = - `_hdRxBufr -(( -ut8_t - * -buf -, -n -); - -392 -buf - + -hdd -; - -393 -n - - -hdd -; - -396 if( -_RXbufr --> - `emy -()) { - -397  -_RXmode - ! -ATB_RX_MODE_NONE - && -hdd - !0 && -n - > 0) { - -398 -hdd - = - `_hdRxBufr -( -buf -, -n -); - -399 -buf - + -hdd -; - -400 -n - - -hdd -; - -405 if( -n - > 0) { - -407 if( -_RXbufr --> - `room -(< -n -) { - -409 - `DEBUG_ASYNC_TCP -("[A-TCP] _rxData buffer fullryesize\n"); - -410 -_RXbufr --> - `sizeAdd -(( -n - + _RXbufr-> - `room -())); - -412 if( -_RXbufr --> - `room -(< -n -) { - -413 - `DEBUG_ASYNC_TCP -("[A-TCP] _rxDbuftfu c oy hd %d!!!\n", -_RXbufr --> - `room -()); - -417 -_RXbufr --> - `wre -((cڡ *( -buf -), -n -); - -420 if(! -_RXbufr --> - `emy -(&& -_RXmode - ! -ATB_RX_MODE_NONE -) { - -422 -hdd - = - `_hdRxBufr -( -NULL -, 0); - -423  -_RXmode - ! -ATB_RX_MODE_NONE - && -hdd - != 0) { - -424 -hdd - = - `_hdRxBufr -( -NULL -, 0); - -429 if( -_RXbufr --> - `emy -(&& _RXbufr-> - `room -() != 100) { - -430 -_RXbufr --> - `size -(100); - -433 - } -} - -438 -size_t - - gAsyncTCPbufr -:: - $_hdRxBufr -( -ut8_t - * -buf -, -size_t - -n -) { - -439 if(! -_ - || !_-> - `ced -(|| -_RXbufr - = -NULL -) { - -443 - `DEBUG_ASYNC_TCP -("[A-TCP] _hdRxBufn: %d RXmode: %d\n", -n -, -_RXmode -); - -445 -size_t - -BufrAvaab - = -_RXbufr --> - `avaab -(); - -446 -size_t - -r - = 0; - -448 if( -_RXmode - = -ATB_RX_MODE_NONE -) { - -450 } if( -_RXmode - = -ATB_RX_MODE_FREE -) { - -451 if( -_cbRX - = -NULL -) { - -455 if( -BufrAvaab - > 0) { - -456 -ut8_t - * -b - = -w - ut8_t[ -BufrAvaab -]; - -457 -_RXbufr --> - `ek -((* -b -, -BufrAvaab -); - -458 -r - = - `_cbRX -( -b -, -BufrAvaab -); - -459 -_RXbufr --> - `move -( -r -); - -462 if( -r - = -BufrAvaab - && -buf - && ( -n - > 0)) { - -463  - `_cbRX -( -buf -, -n -); - -468 } if( -_RXmode - = -ATB_RX_MODE_READ_BYTES -) { - -469 if( -_rxRdBysP - = -NULL - || -_cbDe - == NULL) { - -473 -size_t - -wRdCou - = 0; - -475 if( -BufrAvaab -) { - -476 -r - = -_RXbufr --> - `ad -((* -_rxRdBysP -, -_rxSize -); - -477 -_rxSize - - -r -; - -478 -_rxRdBysP - + -r -; - -481 if( -_RXbufr --> - `emy -(&& ( -n - > 0&& -buf -) { - -482 -r - = -n -; - -483 if( -r - > -_rxSize -) { - -484 -r - = -_rxSize -; - -486 - `memy -( -_rxRdBysP -, -buf -, -r -); - -487 -_rxRdBysP - + -r -; - -488 -_rxSize - - -r -; - -489 -wRdCou - + -r -; - -492 if( -_rxSize - == 0) { - -493 -_RXmode - = -ATB_RX_MODE_NONE -; - -494 - `_cbDe -( -ue -, -NULL -); - -498  -wRdCou -; - -500 } if( -_RXmode - = -ATB_RX_MODE_TERMINATOR -) { - -503 } if( -_RXmode - = -ATB_RX_MODE_TERMINATOR_STRING -) { - -504 if( -_rxRdSgP - = -NULL - || -_cbDe - == NULL) { - -509 if( -BufrAvaab - > 0) { - -510 ! -_RXbufr --> - `emy -()) { - -511  -c - = -_RXbufr --> - `ad -(); - -512 if( -c - = -_rxTm - || c == 0x00) { - -513 -_RXmode - = -ATB_RX_MODE_NONE -; - -514 - `_cbDe -( -ue -, -_rxRdSgP -); - -517 (* -_rxRdSgP -+ -c -; - -522 if( -_RXbufr --> - `emy -(&& ( -n - > 0&& -buf -) { - -523 -size_t - -wRdCou - = 0; - -524  -wRdCou - < -n -) { - -525  -c - = (* -buf -; - -526 -buf -++; - -527 -wRdCou -++; - -528 if( -c - = -_rxTm - || c == 0x00) { - -529 -_RXmode - = -ATB_RX_MODE_NONE -; - -530 - `_cbDe -( -ue -, -_rxRdSgP -); - -531  -wRdCou -; - -533 (* -_rxRdSgP -+ -c -; - -536  -wRdCou -; - -541 - } -} - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h - -25 #ide -ESPASYNCTCPBUFFER_H_ - - -26  - #ESPASYNCTCPBUFFER_H_ - - - ) - -30 #ide -DEBUG_ASYNC_TCP - - -31  - #DEBUG_ASYNC_TCP -(...) - - ) - -34  - ~ - -35  - ~ - -37  - ~"ESPAsyncTCP.h -" - -42 - mATB_RX_MODE_NONE -, - -43 - mATB_RX_MODE_FREE -, - -44 - mATB_RX_MODE_READ_BYTES -, - -45 - mATB_RX_MODE_TERMINATOR -, - -46 - mATB_RX_MODE_TERMINATOR_STRING - - -47 } - tbRxMode_t -; - -49 as - cAsyncTCPbufr -: -public - -Prt - { - -51 -public -: - -53  -d -:: - tfuni -< - tsize_t -( - tut8_t - * - tyld -, size_ - tngth -)> - tAsyncTCPbufrDaCb -; - -54  - md -:: - tfuni -<( - tbo - - tok -, * - tt -)> - tAsyncTCPbufrDeCb -; - -55  - md -:: - tfuni -< - tbo -( - tAsyncTCPbufr - * - tobj -)> - tAsyncTCPbufrDiscCb -; - -57 -AsyncTCPbufr -( -AsyncCl -* -c -); - -58 - mvtu - ~ -AsyncTCPbufr -(); - -60 -size_t - -wre -( -Sg - & -da -); - -61 -size_t - -wre -( -ut8_t - -da -); - -62 -size_t - -wre -(cڡ * -da -); - -63 -size_t - -wre -(cڡ * -da -, size_ -n -); - -64 -size_t - -wre -(cڡ -ut8_t - * -da -, size_ -n -); - -66  -ush -(); - -68  -noClback -(); - -70  -adSgU -( -rm -, -Sg - * -r -, -AsyncTCPbufrDeCb - -de -); - -76  -adBys -(* -bufr -, -size_t - -ngth -, -AsyncTCPbufrDeCb - -de -); - -77  -adBys -( -ut8_t - * -bufr -, -size_t - -ngth -, -AsyncTCPbufrDeCb - -de -); - -82  -Da -( -AsyncTCPbufrDaCb - -cb -); - -83  -Disc -( -AsyncTCPbufrDiscCb - -cb -); - -85 -IPAddss - -meIP -(); - -86 -ut16_t - -mePt -(); - -87 -IPAddss - -lolIP -(); - -88 -ut16_t - -lolPt -(); - -90 -bo - -ced -(); - -92  - -(); - -93  -o -(); - -95 - meed -: - -96 -AsyncCl -* -_ -; - -97 -cbuf - * - m_TXbufrRd -; - -98 -cbuf - * - m_TXbufrWre -; - -99 -cbuf - * - m_RXbufr -; - -100 -bRxMode_t - - m_RXmode -; - -101 -size_t - - m_rxSize -; - -102  - m_rxTm -; - -103 -ut8_t - * - m_rxRdBysP -; - -104 -Sg - * - m_rxRdSgP -; - -106 -AsyncTCPbufrDaCb - - m_cbRX -; - -107 -AsyncTCPbufrDeCb - - m_cbDe -; - -108 -AsyncTCPbufrDiscCb - - m_cbDisc -; - -110  -_chClbacks -(); - -111  -_ndBufr -(); - -112  -__o -(); - -113  -_rxDa -( -ut8_t - * -buf -, -size_t - -n -); - -114 -size_t - -_hdRxBufr -( -ut8_t - * -buf -, size_ -n -); - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp - -21  - ~"SyncCl.h -" - -22  - ~"Arduo.h -" - -23  - ~"ESPAsyncTCP.h -" - -24  - ~"cbuf.h -" - -27 - gSyncCl -:: - $SyncCl -( -size_t - -txBufL -) - -28 : - `_ -( -NULL -) - -29 , - `_tx_bufr -( -NULL -) - -30 , - `_tx_bufr_size -( -txBufL -) - -31 , - $_rx_bufr -( -NULL -) - -32 { - } -} - -34 - gSyncCl -:: - $SyncCl -( -AsyncCl - * - -, -size_t - -txBufL -) - -35 : - `_ -( - -) - -36 , - `_tx_bufr -( -w - - `cbuf -( -txBufL -)) - -37 , - `_tx_bufr_size -( -txBufL -) - -38 , - $_rx_bufr -( -NULL -) - -40 - `_chClbacks -(); - -41 - } -} - -43 - gSyncCl -::~ - $SyncCl -(){ - -44 if( -_tx_bufr - ! -NULL -){ - -45 -cbuf - * -b - = -_tx_bufr -; - -46 -_tx_bufr - = -NULL -; - -47 -de - -b -; - -49  -_rx_bufr - ! -NULL -){ - -50 -cbuf - * -b - = -_rx_bufr -; - -51 -_rx_bufr - = _rx_bufr-> -xt -; - -52 -de - -b -; - -54 - } -} - -56 #i -ASYNC_TCP_SSL_ENABLED - - -57  - gSyncCl -:: - $c -( -IPAddss - - -, -ut16_t - -pt -, -bo - -cu -){ - -59  -SyncCl -:: - $c -( -IPAddss - - -, -ut16_t - -pt -){ - -61 if( -_ - ! -NULL - && - `ced -()) - -63 -_ - = -w - - `AsyncCl -(); - -64 -_ --> - `C -([](* -obj -, -AsyncCl - * -c -){ (( -SyncCl -*)(obj))-> - `_C -(c); }, -this -); - -65 - `_chClbacks_Disc -(); - -66 #i -ASYNC_TCP_SSL_ENABLED - - -67 if( -_ --> - `c -( - -, -pt -, -cu -)){ - -69 if( -_ --> - `c -( - -, -pt -)){ - -71  -_ - ! -NULL - && !_-> - `ced -(&& !_-> - `discg -()) - -72 - `day -(1); - -73  - `ced -(); - -76 - } -} - -78 #i -ASYNC_TCP_SSL_ENABLED - - -79  - gSyncCl -:: - $c -(cڡ * -ho -, -ut16_t - -pt -, -bo - -cu -){ - -81  -SyncCl -:: - $c -(cڡ * -ho -, -ut16_t - -pt -){ - -83 if( -_ - ! -NULL - && - `ced -()){ - -86 -_ - = -w - - `AsyncCl -(); - -87 -_ --> - `C -([](* -obj -, -AsyncCl - * -c -){ (( -SyncCl -*)(obj))-> - `_C -(c); }, -this -); - -88 - `_chClbacks_Disc -(); - -89 #i -ASYNC_TCP_SSL_ENABLED - - -90 if( -_ --> - `c -( -ho -, -pt -, -cu -)){ - -92 if( -_ --> - `c -( -ho -, -pt -)){ - -94  -_ - ! -NULL - && !_-> - `ced -(&& !_-> - `discg -()) - -95 - `day -(1); - -96  - `ced -(); - -99 - } -} - -101 - gSyncCl - & SyncCl:: -ݔ -=(cڡ -SyncCl - & -h -){ - -102 if( -_ - ! -NULL -){ - -103 -_ --> -abt -(); - -104 - g_ --> - -(); - -105 - g_ - = -NULL -; - -107 - g_tx_bufr_size - = -h -. -_tx_bufr_size -; - -108 if( - g_tx_bufr - ! -NULL -){ - -109 -cbuf - * -b - = -_tx_bufr -; - -110 - g_tx_bufr - = -NULL -; - -111 -de - - gb -; - -113  - g_rx_bufr - ! -NULL -){ - -114 -cbuf - * -b - = -_rx_bufr -; - -115 - g_rx_bufr - = -b --> -xt -; - -116 -de - - gb -; - -118 - g_tx_bufr - = -w - -cbuf -( -h -. -_tx_bufr_size -); - -119 - g_ - = -h -. -_ -; - -120 -_chClbacks -(); - -121  * - gthis -; - -124  - gSyncCl -:: - $tTimeout -( -ut32_t - -cds -){ - -125 if( -_ - ! -NULL -) - -126 -_ --> - `tRxTimeout -( -cds -); - -127 - } -} - -129 -ut8_t - - gSyncCl -:: - $us -(){ - -130 if( -_ - = -NULL -) - -132  -_ --> - `e -(); - -133 - } -} - -135 -ut8_t - - gSyncCl -:: - $ced -(){ - -136  ( -_ - ! -NULL - && _-> - `ced -()); - -137 - } -} - -139  - gSyncCl -:: - $ -(){ - -140 if( -_ - ! -NULL -) - -141 -_ --> - `o -( -ue -); - -142 - } -} - -144 -size_t - - gSyncCl -:: - $_ndBufr -(){ - -145 -size_t - -avaab - = -_tx_bufr --> - `avaab -(); - -146 if(! - `ced -(|| ! -_ --> - `nSd -(|| -avaab - == 0) - -148 -size_t - -ndab - = -_ --> - `a -(); - -149 if( -ndab - < -avaab -) - -150 -avaab - -ndab -; - -151 * -out - = -w - [ -avaab -]; - -152 -_tx_bufr --> - `ad -( -out -, -avaab -); - -153 -size_t - - - = -_ --> - `wre -( -out -, -avaab -); - -154 -de -[] -out -; - -155  - -; - -156 - } -} - -158  - gSyncCl -:: - $_Da -(* -da -, -size_t - -n -){ - -159 -_ --> - `ackL -(); - -160 -cbuf - * -b - = -w - - `cbuf -( -n -+1); - -161 if( -b - ! -NULL -){ - -162 -b --> - `wre -((cڡ *) -da -, -n -); - -163 if( -_rx_bufr - = -NULL -) - -164 -_rx_bufr - = -b -; - -166 -cbuf - * -p - = -_rx_bufr -; - -167  -p --> -xt - ! -NULL -) - -168 -p - =-> -xt -; - -169 -p --> -xt - = -b -; - -172 - } -} - -174  - gSyncCl -:: - $_Disc -(){ - -175 if( -_ - ! -NULL -){ - -176 -_ - = -NULL -; - -178 if( -_tx_bufr - ! -NULL -){ - -179 -cbuf - * -b - = -_tx_bufr -; - -180 -_tx_bufr - = -NULL -; - -181 -de - -b -; - -183 - } -} - -185  - gSyncCl -:: - $_C -( -AsyncCl - * -c -){ - -186 -_ - = -c -; - -187 if( -_tx_bufr - ! -NULL -){ - -188 -cbuf - * -b - = -_tx_bufr -; - -189 -_tx_bufr - = -NULL -; - -190 -de - -b -; - -192 -_tx_bufr - = -w - - `cbuf -( -_tx_bufr_size -); - -193 - `_chClbacks_ACed -(); - -194 - } -} - -196  - gSyncCl -:: - $_chClbacks -(){ - -197 - `_chClbacks_Disc -(); - -198 - `_chClbacks_ACed -(); - -199 - } -} - -201  - gSyncCl -:: - $_chClbacks_ACed -(){ - -202 -_ --> - `Ack -([](* -obj -, -AsyncCl -* -c -, -size_t - -n -, -ut32_t - -time -){ (( -SyncCl -*)(obj))-> - `_ndBufr -(); }, -this -); - -203 -_ --> - `Da -([](* -obj -, -AsyncCl -* -c -, * -da -, -size_t - -n -){ (( -SyncCl -*)(obj))-> - `_Da -(da,); }, -this -); - -204 -_ --> - `Timeout -([](* -obj -, -AsyncCl -* -c -, -ut32_t - -time -){ c-> - `o -(); }, -this -); - -205 - } -} - -207  - gSyncCl -:: - $_chClbacks_Disc -(){ - -208 -_ --> - `Disc -([](* -obj -, -AsyncCl -* -c -){ (( -SyncCl -*)(obj))-> - `_Disc -(); -de - c; }, -this -); - -209 - } -} - -211 -size_t - - gSyncCl -:: - $wre -( -ut8_t - -da -){ - -212  - `wre -(& -da -, 1); - -213 - } -} - -215 -size_t - - gSyncCl -:: - $wre -(cڡ -ut8_t - * -da -, -size_t - -n -){ - -216 if( -_tx_bufr - = -NULL - || ! - `ced -()){ - -219 -size_t - -toWre - = 0; - -220 -size_t - -toSd - = -n -; - -221  -_tx_bufr --> - `room -(< -toSd -){ - -222 -toWre - = -_tx_bufr --> - `room -(); - -223 -_tx_bufr --> - `wre -((cڡ *) -da -, -toWre -); - -224 ! -_ --> - `nSd -(&& - `ced -()) - -225 - `day -(0); - -226 - `_ndBufr -(); - -227 -toSd - - -toWre -; - -229 -_tx_bufr --> - `wre -((cڡ *)( -da -+( -n - - -toSd -)),oSend); - -230 if( -_ --> - `nSd -(&& - `ced -()) - -231 - `_ndBufr -(); - -232  -n -; - -233 - } -} - -235  - gSyncCl -:: - $avaab -(){ - -236 if( -_rx_bufr - = -NULL -)  0; - -237 -size_t - -a - = 0; - -238 -cbuf - * -b - = -_rx_bufr -; - -239  -b - ! -NULL -){ - -240 -a - + -b --> - `avaab -(); - -241 -b - = b-> -xt -; - -243  -a -; - -244 - } -} - -246  - gSyncCl -:: - $ek -(){ - -247 if( -_rx_bufr - = -NULL -)  -1; - -248  -_rx_bufr --> - `ek -(); - -249 - } -} - -251  - gSyncCl -:: - $ad -( -ut8_t - * -da -, -size_t - -n -){ - -252 if( -_rx_bufr - = -NULL -)  -1; - -254 -size_t - -adSoF - = 0; - -255  -_rx_bufr - ! -NULL - && ( -n - - -adSoF ->_rx_bufr-> - `avaab -()){ - -256 -cbuf - * -b - = -_rx_bufr -; - -257 -_rx_bufr - = _rx_bufr-> -xt -; - -258 -size_t - -toRd - = -b --> - `avaab -(); - -259 -adSoF - + -b --> - `ad -((*)( -da -+adSoF), -toRd -); - -260 if( - `ced -()){ - -261 -_ --> - `ack -( -b --> - `size -() - 1); - -263 -de - -b -; - -265 if( -_rx_bufr - ! -NULL - && -adSoF - < -n -){ - -266 -adSoF - + -_rx_bufr --> - `ad -((*)( -da -+adSoF), ( -n - -eadSoFar)); - -268  -adSoF -; - -269 - } -} - -271  - gSyncCl -:: - $ad -(){ - -272 -ut8_t - -s - = 0; - -273 if( - `ad -(& -s -, 1) != 1) - -275  -s -; - -276 - } -} - -278  - gSyncCl -:: - $ush -(){ - -279 if( -_tx_bufr - = -NULL - || ! - `ced -()) - -281 if( -_tx_bufr --> - `avaab -()){ - -282 ! -_ --> - `nSd -(&& - `ced -()) - -283 - `day -(0); - -284 - `_ndBufr -(); - -286 - } -} - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h - -22 #ide -SYNCCLIENT_H_ - - -23  - #SYNCCLIENT_H_ - - - ) - -25  - ~"Cl.h -" - -26  - ~ - -27 -ass - - gcbuf -; - -28 -ass - - gAsyncCl -; - -30 as - cSyncCl -: -public - -Cl - { - -31 -ive -: - -32 -AsyncCl - * -_ -; - -33 -cbuf - * - m_tx_bufr -; - -34 -size_t - - m_tx_bufr_size -; - -35 -cbuf - * - m_rx_bufr -; - -37 -size_t - -_ndBufr -(); - -38  -_Da -(* -da -, -size_t - -n -); - -39  -_C -( -AsyncCl - * -c -); - -40  -_Disc -(); - -41  -_chClbacks -(); - -42  -_chClbacks_Disc -(); - -43  -_chClbacks_ACed -(); - -45 - mpublic -: - -46 -SyncCl -( -size_t - -txBufL - = 1460); - -47 -SyncCl -( -AsyncCl - * - -, -size_t - -txBufL - = 1460); - -48 - mvtu - ~ -SyncCl -(); - -50 -ݔ - - $bo -(){  - `ced -(); } - -51 -SyncCl - & -ݔ -=(cڡ SyncCl & -h -); - -53 #i -ASYNC_TCP_SSL_ENABLED - - -54  - `c -( -IPAddss - - -, -ut16_t - -pt -, -bo - -cu -); - -55  - `c -(cڡ * -ho -, -ut16_t - -pt -, -bo - -cu -); - -56  - $c -( -IPAddss - - -, -ut16_t - -pt -){ - -57  - `c -( - -, -pt -, -l -); - -58 - } -} - -59  - $c -(cڡ * -ho -, -ut16_t - -pt -){ - -60  - `c -( -ho -, -pt -, -l -); - -61 - } -} - -63  -c -( -IPAddss - - -, -ut16_t - -pt -); - -64  -c -(cڡ * -ho -, -ut16_t - -pt -); - -66  -tTimeout -( -ut32_t - -cds -); - -68 -ut8_t - -us -(); - -69 -ut8_t - -ced -(); - -70  - -(); - -72 -size_t - -wre -( -ut8_t - -da -); - -73 -size_t - -wre -(cڡ -ut8_t - * -da -, size_ -n -); - -75  -avaab -(); - -76  -ek -(); - -77  -ad -(); - -78  -ad -( -ut8_t - * -da -, -size_t - -n -); - -79  -ush -(); - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h - -1 #ide -LIBRARIES_ESPASYNCTCP_SRC_ASYNC_CONFIG_H_ - - -2  - #LIBRARIES_ESPASYNCTCP_SRC_ASYNC_CONFIG_H_ - - - ) - -4 #ide -ASYNC_TCP_SSL_ENABLED - - -5  - #ASYNC_TCP_SSL_ENABLED - 0 - - ) - -8  - #ASYNC_TCP_DEBUG -(...) - -9  - #TCP_SSL_DEBUG -(...) - -10 - - ) - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c - -25  - ~ - -26 #i -ASYNC_TCP_SSL_ENABLED - - -28  - ~"lw/t.h -" - -29  - ~"lw/t.h -" - -30  - ~"lw/.h -" - -31  - ~ - -32  - ~ - -33  - ~ - -34  - ~ - -36 -ut8_t - * - gdeu_ive_key - = -NULL -; - -37 -ut16_t - - gdeu_ive_key_n - = 0; - -39 -ut8_t - * - gdeu_ifi - = -NULL -; - -40 -ut16_t - - gdeu_ifi_n - = 0; - -42  -ut8_t - - g_t_s_has_ - = 0; - -44 -SSL_CTX - * - $t_s_w_rv_x -(cڡ * - -, cڡ * -ive_key_fe -, cڡ * -sswd -){ - -45 -ut32_t - -tis - = -SSL_CONNECT_IN_PARTS -; - -46 -SSL_CTX - * -s_x -; - -48 if( -ive_key_fe -){ - -49 -tis - | -SSL_NO_DEFAULT_KEY -; - -52 i(( -s_x - = - `s_x_w -( -tis -, -SSL_DEFAULT_SVR_SESS -)= -NULL -){ - -53 - `TCP_SSL_DEBUG -("tcp_ssl_new_server_ctx: failedollocate context\n"); - -54  -NULL -; - -57 i( -ive_key_fe -){ - -58  -obj_ty - = -SSL_OBJ_RSA_KEY -; - -59 i( - `rr -( -ive_key_fe -, ".p8")) - -60 -obj_ty - = -SSL_OBJ_PKCS8 -; - -61 i( - `rr -( -ive_key_fe -, ".p12")) - -62 -obj_ty - = -SSL_OBJ_PKCS12 -; - -64 i( - `s_obj_ld -( -s_x -, -obj_ty -, -ive_key_fe -, -sswd -)){ - -65 - `TCP_SSL_DEBUG -("t_s_w_rv_x:drivkey '%s' faed\n", -ive_key_fe -); - -66  -NULL -; - -70 i( - -){ - -71 i( - `s_obj_ld -( -s_x -, -SSL_OBJ_X509_CERT -, - -, -NULL -)){ - -72 - `TCP_SSL_DEBUG -("t_s_w_rv_x:d ctifi '%s' faed\n", - -); - -73  -NULL -; - -76  -s_x -; - -77 - } -} - -79  - st_s_pcb - { - -80  -t_pcb - * - mt -; - -81  - mfd -; - -82 -SSL_CTX -* - ms_x -; - -83 -SSL - * - ms -; - -84 -ut8_t - - mty -; - -85  - mhdshake -; - -86 * - mg -; - -87 -t_s_da_cb_t - - m_da -; - -88 -t_s_hdshake_cb_t - - m_hdshake -; - -89 -t_s_r_cb_t - - m_r -; - -90  - mϡ_wr -; - -91  -pbuf - * - mt_pbuf -; - -92  - mpbuf_offt -; - -93  -t_s_pcb - * - mxt -; - -96  -t_s_pcb - - tt_s_t -; - -98  -t_s_t - * - gt_s_y - = -NULL -; - -99  - gt_s_xt_fd - = 0; - -101 -ut8_t - - $t_s_has_ -(){ - -102  -_t_s_has_ -; - -103 - } -} - -105 -t_s_t - * - $t_s_w -( -t_pcb - * -t -) { - -107 if( -t_s_xt_fd - < 0){ - -108 -t_s_xt_fd - = 0; - -111 -t_s_t - * -w_em - = (t_s_t*) - `mloc -((tcp_ssl_t)); - -112 if(! -w_em -){ - -113 - `TCP_SSL_DEBUG -("tcp_ssl_new: failedollocatecp_ssl\n"); - -114  -NULL -; - -117 -w_em --> -t - =cp; - -118 -w_em --> -hdshake - = -SSL_NOT_OK -; - -119 -w_em --> -g - = -NULL -; - -120 -w_em --> -_da - = -NULL -; - -121 -w_em --> -_hdshake - = -NULL -; - -122 -w_em --> -_r - = -NULL -; - -123 -w_em --> -t_pbuf - = -NULL -; - -124 -w_em --> -pbuf_offt - = 0; - -125 -w_em --> -xt - = -NULL -; - -126 -w_em --> -s_x - = -NULL -; - -127 -w_em --> -s - = -NULL -; - -128 -w_em --> -ty - = -TCP_SSL_TYPE_CLIENT -; - -129 -w_em --> -fd - = -t_s_xt_fd -++; - -131 if( -t_s_y - = -NULL -){ - -132 -t_s_y - = -w_em -; - -134 -t_s_t - * -em - = -t_s_y -; - -135  -em --> -xt - ! -NULL -) - -136 -em - = im-> -xt -; - -137 -em --> -xt - = -w_em -; - -140 - `TCP_SSL_DEBUG -("t_s_w: %d\n", -w_em --> -fd -); - -141  -w_em -; - -142 - } -} - -144 -t_s_t -* - $t_s_g -( -t_pcb - * -t -) { - -145 if( -t - = -NULL -) { - -146  -NULL -; - -148 -t_s_t - * -em - = -t_s_y -; - -149  -em - && im-> -t - !=cp){ - -150 -em - = im-> -xt -; - -152  -em -; - -153 - } -} - -155  - $t_s_w_ -( -t_pcb - * -t -){ - -156 -SSL_CTX -* -s_x -; - -157 -t_s_t - * -t_s -; - -159 if( -t - = -NULL -) { - -163 if( - `t_s_g -( -t -! -NULL -){ - -164 - `TCP_SSL_DEBUG -("tcp_ssl_new_client:cp_ssllreadyxists\n"); - -168 -s_x - = - `s_x_w -( -SSL_CONNECT_IN_PARTS - | -SSL_SERVER_VERIFY_LATER -, 1); - -169 if( -s_x - = -NULL -){ - -170 - `TCP_SSL_DEBUG -("tcp_ssl_new_client: failedollocate ssl context\n"); - -174 -t_s - = - `t_s_w -( -t -); - -175 if( -t_s - = -NULL -){ - -176 - `s_x_ -( -s_x -); - -180 -t_s --> -s_x - = ssl_ctx; - -182 -t_s --> -s - = - `s__w -( -s_x -,_s-> -fd -, -NULL -, 0, NULL); - -183 if( -t_s --> -s - = -NULL -){ - -184 - `TCP_SSL_DEBUG -("tcp_ssl_new_client: failedollocate ssl\n"); - -185 - `t_s_ -( -t -); - -189  -t_s --> -fd -; - -190 - } -} - -192  - $t_s_w_rv -( -t_pcb - * -t -, -SSL_CTX -* -s_x -){ - -193 -t_s_t - * -t_s -; - -195 if( -t - = -NULL -) { - -199 if( -s_x - = -NULL -){ - -203 if( - `t_s_g -( -t -! -NULL -){ - -204 - `TCP_SSL_DEBUG -("tcp_ssl_new_server:cp_ssllreadyxists\n"); - -208 -t_s - = - `t_s_w -( -t -); - -209 if( -t_s - = -NULL -){ - -213 -t_s --> -ty - = -TCP_SSL_TYPE_SERVER -; - -214 -t_s --> -s_x - = ssl_ctx; - -216 -_t_s_has_ - = 1; - -217 -t_s --> -s - = - `s_rv_w -( -s_x -,_s-> -fd -); - -218 if( -t_s --> -s - = -NULL -){ - -219 - `TCP_SSL_DEBUG -("tcp_ssl_new_server: failedollocate ssl\n"); - -220 - `t_s_ -( -t -); - -224  -t_s --> -fd -; - -225 - } -} - -227  - $t_s_ -( -t_pcb - * -t -) { - -229 if( -t - = -NULL -) { - -233 -t_s_t - * -em - = -t_s_y -; - -235 if( -em --> -t - ==cp){ - -236 -t_s_y - =_s_y-> -xt -; - -237 if( -em --> -t_pbuf - ! -NULL -){ - -238 - `pbuf_ -( -em --> -t_pbuf -); - -240 - `TCP_SSL_DEBUG -("t_s_: %d\n", -em --> -fd -); - -241 if( -em --> -s -) - -242 - `s_ -( -em --> -s -); - -243 if( -em --> -ty - = -TCP_SSL_TYPE_CLIENT - && im-> -s_x -) - -244 - `s_x_ -( -em --> -s_x -); - -245 if( -em --> -ty - = -TCP_SSL_TYPE_SERVER -) - -246 -_t_s_has_ - = 0; - -247 - ` -( -em -); - -251  -em --> -xt - && im->xt-> -t - !=cp) - -252 -em - = im-> -xt -; - -254 if( -em --> -xt - = -NULL -){ - -255  -ERR_TCP_SSL_INVALID_CLIENTFD_DATA -; - -258 -t_s_t - * -i - = -em --> -xt -; - -259 -em --> -xt - = -i -->next; - -260 if( -i --> -t_pbuf - ! -NULL -){ - -261 - `pbuf_ -( -i --> -t_pbuf -); - -263 - `TCP_SSL_DEBUG -("t_s_: %d\n", -i --> -fd -); - -264 if( -i --> -s -) - -265 - `s_ -( -i --> -s -); - -266 if( -i --> -ty - = -TCP_SSL_TYPE_CLIENT - && i-> -s_x -) - -267 - `s_x_ -( -i --> -s_x -); - -268 if( -i --> -ty - = -TCP_SSL_TYPE_SERVER -) - -269 -_t_s_has_ - = 0; - -270 - ` -( -i -); - -272 - } -} - -274 #ifde -AXTLS_2_0_0_SNDBUF - - -275  - $t_s_dbuf -( -t_pcb - * -t -){ - -276  -exed -; - -277  -avaab -; - -278  -su - = -1; - -280 if( -t - = -NULL -) { - -281  -su -; - -283 -t_s_t - * -t_s - = - `t_s_g -( -t -); - -284 if(! -t_s -){ - -285 - `TCP_SSL_DEBUG -("tcp_ssl_sndbuf:cp_ssl is NULL\n"); - -286  -su -; - -288 -avaab - = - `t_dbuf -( -t -); - -289 if(! -avaab -){ - -290 - `TCP_SSL_DEBUG -("tcp_ssl_sndbuf:cp_sndbuf is zero\n"); - -293 -su - = -avaab -; - -294 ( -exed - = - `s_lcuϋ_wre_ngth -( -t_s --> -s -, -su -)> -avaab -){ - -295 -su - -( -exed - - -avaab -) + 4; - -298 if( -exed - > 0){ - -300  -su -; - -304 - } -} - -307  - $t_s_wre -( -t_pcb - * -t -, -ut8_t - * -da -, -size_t - -n -) { - -308 if( -t - = -NULL -) { - -311 -t_s_t - * -t_s - = - `t_s_g -( -t -); - -312 if(! -t_s -){ - -313 - `TCP_SSL_DEBUG -("tcp_ssl_write:cp_ssl is NULL\n"); - -316 -t_s --> -ϡ_wr - = 0; - -318 #ifde -AXTLS_2_0_0_SNDBUF - - -319  -exed_n - = - `s_lcuϋ_wre_ngth -( -t_s --> -s -, -n -); - -320  -avaab_n - = - `t_dbuf -( -t -); - -321 if( -exed_n - < 0 ||xed_> -avaab_n -){ - -322 - `TCP_SSL_DEBUG -("t_s_wre: dwn f! %u < %d(%u)\r\n", -avaab_n -, -exed_n -, -n -); - -327  -rc - = - `s_wre -( -t_s --> -s -, -da -, -n -); - -331 i( -rc - < 0){ - -332 if( -rc - ! -SSL_CLOSE_NOTIFY -) { - -333 - `TCP_SSL_DEBUG -("t_s_wrr: %d\r\n", -rc -); - -335  -rc -; - -338  -t_s --> -ϡ_wr -; - -339 - } -} - -351  - $t_s_ad -( -t_pcb - * -t -,  -pbuf - * -p -) { - -352 if( -t - = -NULL -) { - -355 -t_s_t -* -fd_da - = -NULL -; - -357  -ad_bys - = 0; - -358  -tٮ_bys - = 0; - -359 -ut8_t - * -ad_buf -; - -361 -fd_da - = - `t_s_g -( -t -); - -362 if( -fd_da - = -NULL -) { - -363 - `TCP_SSL_DEBUG -("tcp_ssl_read:cp_ssl is NULL\n"); - -364  -ERR_TCP_SSL_INVALID_CLIENTFD_DATA -; - -367 if( -p - = -NULL -) { - -368 - `TCP_SSL_DEBUG -("tcp_ssl_read:p == NULL\n"); - -369  -ERR_TCP_SSL_INVALID_DATA -; - -374 -fd_da --> -t_pbuf - = -p -; - -375 -fd_da --> -pbuf_offt - = 0; - -378 -ad_bys - = - `s_ad -( -fd_da --> -s -, & -ad_buf -); - -380 if( -ad_bys - < -SSL_OK -) { - -381 if( -ad_bys - ! -SSL_CLOSE_NOTIFY -) { - -382 - `TCP_SSL_DEBUG -("t_s_ad:d: %d\n", -ad_bys -); - -384 -tٮ_bys - = -ad_bys -; - -386 } if( -ad_bys - > 0){ - -387 if( -fd_da --> -_da -){ - -388 -fd_da --> - `_da -(fd_da-> -g -, -t -, -ad_buf -, -ad_bys -); - -390 -tٮ_bys -+ -ad_bys -; - -392 if( -fd_da --> -hdshake - ! -SSL_OK -) { - -393 -fd_da --> -hdshake - = - `s_hdshake_us -(fd_da-> -s -); - -394 if( -fd_da --> -hdshake - = -SSL_OK -){ - -396 if( -fd_da --> -_hdshake -) - -397 -fd_da --> - `_hdshake -(fd_da-> -g -, fd_da-> -t -, fd_da-> -s -); - -398 } if( -fd_da --> -hdshake - ! -SSL_NOT_OK -){ - -399 - `TCP_SSL_DEBUG -("t_s_ad: hdshakr: %d\n", -fd_da --> -hdshake -); - -400 if( -fd_da --> -_r -) - -401 -fd_da --> - `_r -(fd_da-> -g -, fd_da-> -t -, fd_da-> -hdshake -); - -402  -fd_da --> -hdshake -; - -406 }  -p --> -t_n - - -fd_da --> -pbuf_offt - > 0); - -408 - `t_cved -( -t -, -p --> -t_n -); - -409 -fd_da --> -t_pbuf - = -NULL -; - -410 - `pbuf_ -( -p -); - -412  -tٮ_bys -; - -413 - } -} - -415 -SSL - * - $t_s_g_s -( -t_pcb - * -t -){ - -416 -t_s_t - * -t_s - = - `t_s_g -( -t -); - -417 if( -t_s -){ - -418  -t_s --> -s -; - -420  -NULL -; - -421 - } -} - -423 -bo - - $t_s_has -( -t_pcb - * -t -){ - -424  - `t_s_g -( -t -! -NULL -; - -425 - } -} - -427  - $t_s_is_rv -( -t_pcb - * -t -){ - -428 -t_s_t - * -t_s - = - `t_s_g -( -t -); - -429 if( -t_s -){ - -430  -t_s --> -ty -; - -433 - } -} - -435  - $t_s_g -( -t_pcb - * -t -, * -g -){ - -436 -t_s_t - * -em - = - `t_s_g -( -t -); - -437 if( -em -) { - -438 -em --> -g - =rg; - -440 - } -} - -442  - $t_s_da -( -t_pcb - * -t -, -t_s_da_cb_t - -g -){ - -443 -t_s_t - * -em - = - `t_s_g -( -t -); - -444 if( -em -) { - -445 -em --> -_da - = -g -; - -447 - } -} - -449  - $t_s_hdshake -( -t_pcb - * -t -, -t_s_hdshake_cb_t - -g -){ - -450 -t_s_t - * -em - = - `t_s_g -( -t -); - -451 if( -em -) { - -452 -em --> -_hdshake - = -g -; - -454 - } -} - -456  - $t_s_r -( -t_pcb - * -t -, -t_s_r_cb_t - -g -){ - -457 -t_s_t - * -em - = - `t_s_g -( -t -); - -458 if( -em -) { - -459 -em --> -_r - = -g -; - -461 - } -} - -463  -t_s_fe_cb_t - - g_t_s_fe_cb - = -NULL -; - -464 * - g_t_s_fe_g - = -NULL -; - -466  - $t_s_fe -( -t_s_fe_cb_t - -cb -, * -g -){ - -467 -_t_s_fe_cb - = -cb -; - -468 -_t_s_fe_g - = -g -; - -469 - } -} - -471  - $ax_g_fe -(cڡ * -fame -, -ut8_t - ** -buf -) { - -473 if( -_t_s_fe_cb -){ - -474  - `_t_s_fe_cb -( -_t_s_fe_g -, -fame -, -buf -); - -476 * -buf - = 0; - -478 - } -} - -480 -t_s_t -* - $t_s_g_by_fd -( -fd -) { - -481 -t_s_t - * -em - = -t_s_y -; - -482  -em - && im-> -fd - != fd){ - -483 -em - = im-> -xt -; - -485  -em -; - -486 - } -} - -490  - $ax_pt_wre -( -fd -, -ut8_t - * -da -, -ut16_t - -n -) { - -491 -t_s_t - * -fd_da - = -NULL -; - -492  -t_n - = 0; - -493 -r_t - -r - = -ERR_OK -; - -497 -fd_da - = - `t_s_g_by_fd -( -fd -); - -498 if( -fd_da - = -NULL -) { - -500  -ERR_MEM -; - -503 i( -da - = -NULL - || -n - == 0) { - -507 i( - `t_dbuf -( -fd_da --> -t -< -n -) { - -508 -t_n - = - `t_dbuf -( -fd_da --> -t -); - -509 if( -t_n - == 0) { - -510 - `TCP_SSL_DEBUG -("ax_pt_wre:_dbuizo: %d\n", -n -); - -511  -ERR_MEM -; - -514 -t_n - = -n -; - -517 i( -t_n - > 2 * -fd_da --> -t --> -mss -) { - -518 -t_n - = 2 * -fd_da --> -t --> -mss -; - -521 -r - = - `t_wre -( -fd_da --> -t -, -da -, -t_n -, -TCP_WRITE_FLAG_COPY -); - -522 if( -r - < -ERR_OK -) { - -523 i( -r - = -ERR_MEM -) { - -524 - `TCP_SSL_DEBUG -("ax_pt_wre: Nmemy %d (%d)\n", -t_n -, -n -); - -525  -r -; - -527 - `TCP_SSL_DEBUG -("ax_pt_wre:_wrr: %d\n", -r -); - -528  -r -; - -529 } i( -r - = -ERR_OK -) { - -531 -r - = - `t_ouut -( -fd_da --> -t -); - -532 if( -r - ! -ERR_OK -) { - -533 - `TCP_SSL_DEBUG -("ax_pt_wre:_ouur: %d\n", -r -); - -534  -r -; - -538 -fd_da --> -ϡ_wr - + -t_n -; - -540  -t_n -; - -541 - } -} - -546  - $ax_pt_ad -( -fd -, -ut8_t - * -da -,  -n -) { - -547 -t_s_t - * -fd_da - = -NULL -; - -548 -ut8_t - * -ad_buf - = -NULL -; - -549 -ut8_t - * -d_buf - = -NULL -; - -550 -u16_t - -cv_n - = 0; - -554 -fd_da - = - `t_s_g_by_fd -( -fd -); - -555 i( -fd_da - = -NULL -) { - -556 - `TCP_SSL_DEBUG -("ax_pt_ad:_s[%d] iNULL\n", -fd -); - -557  -ERR_TCP_SSL_INVALID_CLIENTFD_DATA -; - -560 if( -fd_da --> -t_pbuf - = -NULL - || fd_da->t_pbuf-> -t_n - == 0) { - -564 -ad_buf - =( -ut8_t -*) - `oc -( -fd_da --> -t_pbuf --> -n - + 1, (uint8_t)); - -565 -d_buf - = -ad_buf -; - -566 i( -d_buf - ! -NULL -){ - -567 -cv_n - = - `pbuf_cy_l -( -fd_da --> -t_pbuf -, -ad_buf -, -n -, fd_da-> -pbuf_offt -); - -568 -fd_da --> -pbuf_offt - + -cv_n -; - -571 i( -cv_n - != 0) { - -572 - `memy -( -da -, -ad_buf -, -cv_n -); - -575 if( -n - < -cv_n -) { - -576 - `TCP_SSL_DEBUG -("ax_pt_ad: g %d bymܐthxed\n", -cv_n - - -n -); - -579 - ` -( -d_buf -); - -580 -d_buf - = -NULL -; - -582  -cv_n -; - -583 - } -} - -585  - $ax_wdt_ed -({ - } -} - - @.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h - -26 #ide -LWIPR_COMPAT_H - - -27  - #LWIPR_COMPAT_H - - - ) - -29  - ~ - -31 #i -ASYNC_TCP_SSL_ENABLED - - -33  - ~"lwts.h -" - -37 #i -LWIP_RAW -==1 - -39 #ifde -__lulus - - -43  - ~ - -44  - ~"ude/s.h -" - -46  - #ERR_TCP_SSL_INVALID_SSL - -101 - - ) - -47  - #ERR_TCP_SSL_INVALID_TCP - -102 - - ) - -48  - #ERR_TCP_SSL_INVALID_CLIENTFD - -103 - - ) - -49  - #ERR_TCP_SSL_INVALID_CLIENTFD_DATA - -104 - - ) - -50  - #ERR_TCP_SSL_INVALID_DATA - -105 - - ) - -52  - #TCP_SSL_TYPE_CLIENT - 0 - - ) - -53  - #TCP_SSL_TYPE_SERVER - 1 - - ) - -55  - #t_s_s_wre -( -A -, -B -, -C - - `t_s_wre -(A, B, C) - - ) - -56  - #t_s_s_ad -( -A -, -B - - `t_s_ad -(A, B) - - ) - -58 (* -t_s_da_cb_t -)(* - tg -,  - tt_pcb - * - tt -, - tut8_t - * - tda -, - tsize_t - - tn -); - -59 (* -t_s_hdshake_cb_t -)(* - tg -,  - tt_pcb - * - tt -, - tSSL - * - ts -); - -60 (* -t_s_r_cb_t -)(* - tg -,  - tt_pcb - * - tt -, - tt8_t - - tr -); - -61 (* -t_s_fe_cb_t -)(* - tg -, cڡ * - tfame -, - tut8_t - ** - tbuf -); - -63 -ut8_t - -t_s_has_ -(); - -65  -t_s_w_ -( -t_pcb - * -t -); - -67 -SSL_CTX - * -t_s_w_rv_x -(cڡ * - -, cڡ * -ive_key_fe -, cڡ * -sswd -); - -68  -t_s_w_rv -( -t_pcb - * -t -, -SSL_CTX -* -s_x -); - -69  -t_s_is_rv -( -t_pcb - * -t -); - -71  -t_s_ -( -t_pcb - * -t -); - -72  -t_s_ad -( -t_pcb - * -t -,  -pbuf - * -p -); - -74 #ifde -AXTLS_2_0_0_SNDBUF - - -75  -t_s_dbuf -( -t_pcb - * -t -); - -78  -t_s_wre -( -t_pcb - * -t -, -ut8_t - * -da -, -size_t - -n -); - -80  -t_s_fe -( -t_s_fe_cb_t - -cb -, * -g -); - -82  -t_s_g -( -t_pcb - * -t -, * -g -); - -83  -t_s_da -( -t_pcb - * -t -, -t_s_da_cb_t - -g -); - -84  -t_s_hdshake -( -t_pcb - * -t -, -t_s_hdshake_cb_t - -g -); - -85  -t_s_r -( -t_pcb - * -t -, -t_s_r_cb_t - -g -); - -87 -SSL - * -t_s_g_s -( -t_pcb - * -t -); - -88 -bo - -t_s_has -( -t_pcb - * -t -); - -90 #ifde -__lulus - - - @interface/node_modules/jest-haste-map/node_modules/fsevents/fsevents.cc - -6  - ~"n.h -" - -7  - ~"uv.h -" - -8  - ~"v8.h -" - -9  - ~"CeFoundi/CeFoundi.h -" - -10  - ~"CeSvis/CeSvis.h -" - -11  - ~ - -12  - ~ - -14  - ~"c/age.cc -" - -15 -mea - - gf - { - -16 as - cFSEvts - : -public - -N -:: -ObjeWp - { - -17 -public -: - -18 -exic - -FSEvts -(cڡ * -th -); - -19 ~ -FSEvts -(); - -21 -uv_mux_t - - gmux -; - -24 -uv_async_t - - gasync -; - -25  -asyncS -(); - -26  -asyncTrigg -(); - -27  -asyncSt -(); - -30 -uv_thad_t - - gthad -; - -31 -CFRunLoRef - - gthadlo -; - -32  -thadS -(); - -33  -thadRun -(* -x -); - -34  -thadSt -(); - -37 - gN -:: -AsyncResour - -async_sour -; - -38  -emEvt -(cڡ * -th -, -UI32 - -ags -, -UI64 - -id -); - -41 -CFAayRef - - gths -; - -42 - gd -:: -ve -< -f_evt -*> -evts -; - -43  -Inlize -( -v8 -:: -Lol - -expts -); - -46  -NAN_METHOD -( -New -); - -47  -NAN_METHOD -( -St -); - -48  -NAN_METHOD -( -S -); - -53 -usg - -mea - - gf -; - -55 - gFSEvts -:: - $FSEvts -(cڡ * -th -) - -56 : - `async_sour -("fsevents:FSEvents") { - -57 -CFSgRef - -ds -[] = { - `CFSgCeWhCSg -( -NULL -, -th -, -kCFSgEncodgUTF8 -) }; - -58 -ths - = - `CFAayCe -( -NULL -, (cڡ **)& -ds -, 1, NULL); - -59 -thadlo - = -NULL -; - -60 i( - `uv_mux_ -(& -mux -) - `abt -(); - -61 - } -} - -62 - gFSEvts -::~ - $FSEvts -() { - -63 - `CFR -( -ths -); - -64 - `uv_mux_deroy -(& -mux -); - -65 - } -} - -67 #ide -kFSEvtSmEvtFgImCed - - -68  - #kFSEvtSmEvtFgImCed - 0x00000010 - - ) - -71  - ~"c/async.cc -" - -72  - ~"c/thad.cc -" - -73  - ~"c/cڡts.cc -" - -74  - ~"c/mhods.cc -" - -76  - gFSEvts -:: -Inlize -( -v8 -:: -Lol - -expts -) { - -77 -v8 -:: -Isީe -* -isީe - = -expts --> -GIsީe -(); - -78 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -79 - gv8 -:: -Lol -< -v8 -:: -FuniTeme -> -l - = -N -:: -New -( -FSEvts -::New); - -80 - gl --> -SCssName -( -N -:: -New -< -v8 -:: -Sg ->("FSEvts"). -ToLolChecked -()); - -81 - gl --> -InTeme -()-> -SIlFldCou -(1); - -82 - gN -:: -SPryTeme -( -l -, "t", -N -:: -New -< -v8 -:: -FuniTeme ->( -FSEvts -:: -S -)); - -83 - gN -:: -SPryTeme -( -l -, "", -N -:: -New -< -v8 -:: -FuniTeme ->( -FSEvts -:: -St -)); - -84 - gN -:: -S -( -expts -, -N -:: -New -< -v8 -:: -Sg ->("Cڡts"). -ToLolChecked -(), -Cڡts -()); - -85 - gN -:: -S -( -expts -, -N -:: -New -< -v8 -:: -Sg ->("FSEvts"). -ToLolChecked -(), -l --> -GFuni -( -cڋxt -).ToLocalChecked()); - -88 -NODE_MODULE -( -f -, -FSEvts -:: -Inlize -) - - @interface/node_modules/jest-haste-map/node_modules/fsevents/src/async.cc - -7  - $async_age -( -uv_async_t - * -async -) { - -8 i(! -async --> -da -) ; - -9 -FSEvts - * -f - = (FSEvt*) -async --> -da -; - -10 -CFIndex - -idx -, -t -; - -11 -f_evt - * -evt -; - -12  -thbuf -[1024]; - -13 cڡ * -thr - = -NULL -; - -14 - `uv_mux_lock -(& -f --> -mux -); - -15 -t - = -f --> -evts -. - `size -(); - -16  -idx -=0; idx< -t -; idx++) { - -17 -evt - = -f --> -evts -. - ` -( -idx -); - -18 i( -evt - = -NULL -) ; - -19 -thr - = - `CFSgGCSgP -( -evt --> -th -, -kCFSgEncodgUTF8 -); - -20 i(! -thr - - `CFSgGCSg -( -evt --> -th -, -thbuf -, 1024, -kCFSgEncodgUTF8 -); - -21 -f --> - `emEvt -( -thr - ?h: -thbuf -, -evt --> -ags -,vt-> -id -); - -22 -de - -evt -; - -24 i( -t ->0 -f --> -evts -. - `r -(); - -25 - `uv_mux_uock -(& -f --> -mux -); - -26 - } -} - -28  - gFSEvts -:: - $asyncS -() { - -29 i( -async -. -da - = -this -) ; - -30 -async -. -da - = -this -; - -31 - `uv_async_ -( - `uv_deu_lo -(), & -async -, ( -uv_async_cb - -async_age -); - -32 - } -} - -34  - gFSEvts -:: - $asyncTrigg -() { - -35 i( -async -. -da - ! -this -) ; - -36 - `uv_async_nd -(& -async -); - -37 - } -} - -39  - gFSEvts -:: - $asyncSt -() { - -40 i( -async -. -da - ! -this -) ; - -41 -async -. -da - = -NULL -; - -42 - `uv_o -(( -uv_hd_t - *& -async -, -NULL -); - -43 - } -} - - @interface/node_modules/jest-haste-map/node_modules/fsevents/src/constants.cc - -7 #ide -kFSEvtSmEvtFgNe - - -8  - #kFSEvtSmEvtFgNe - 0x00000000 - - ) - -11 #ide -kFSEvtSmEvtFgMuSnSubDs - - -12  - #kFSEvtSmEvtFgMuSnSubDs - 0x00000001 - - ) - -15 #ide -kFSEvtSmEvtFgUrDrݳd - - -16  - #kFSEvtSmEvtFgUrDrݳd - 0x00000002 - - ) - -19 #ide -kFSEvtSmEvtFgKlDrݳd - - -20  - #kFSEvtSmEvtFgKlDrݳd - 0x00000004 - - ) - -23 #ide -kFSEvtSmEvtFgEvtIdsWed - - -24  - #kFSEvtSmEvtFgEvtIdsWed - 0x00000008 - - ) - -27 #ide -kFSEvtSmEvtFgHiyDe - - -28  - #kFSEvtSmEvtFgHiyDe - 0x00000010 - - ) - -31 #ide -kFSEvtSmEvtFgRoChged - - -32  - #kFSEvtSmEvtFgRoChged - 0x00000020 - - ) - -35 #ide -kFSEvtSmEvtFgMou - - -36  - #kFSEvtSmEvtFgMou - 0x00000040 - - ) - -39 #ide -kFSEvtSmEvtFgUnmou - - -40  - #kFSEvtSmEvtFgUnmou - 0x00000080 - - ) - -43 #ide -kFSEvtSmEvtFgImCed - - -44  - #kFSEvtSmEvtFgImCed - 0x00000100 - - ) - -47 #ide -kFSEvtSmEvtFgImRemoved - - -48  - #kFSEvtSmEvtFgImRemoved - 0x00000200 - - ) - -51 #ide -kFSEvtSmEvtFgImInodeMaMod - - -52  - #kFSEvtSmEvtFgImInodeMaMod - 0x00000400 - - ) - -55 #ide -kFSEvtSmEvtFgImRamed - - -56  - #kFSEvtSmEvtFgImRamed - 0x00000800 - - ) - -59 #ide -kFSEvtSmEvtFgImModifd - - -60  - #kFSEvtSmEvtFgImModifd - 0x00001000 - - ) - -63 #ide -kFSEvtSmEvtFgImFdInfoMod - - -64  - #kFSEvtSmEvtFgImFdInfoMod - 0x00002000 - - ) - -67 #ide -kFSEvtSmEvtFgImChgeOwr - - -68  - #kFSEvtSmEvtFgImChgeOwr - 0x00004000 - - ) - -71 #ide -kFSEvtSmEvtFgImXMod - - -72  - #kFSEvtSmEvtFgImXMod - 0x00008000 - - ) - -75 #ide -kFSEvtSmEvtFgImIsFe - - -76  - #kFSEvtSmEvtFgImIsFe - 0x00010000 - - ) - -79 #ide -kFSEvtSmEvtFgImIsD - - -80  - #kFSEvtSmEvtFgImIsD - 0x00020000 - - ) - -83 #ide -kFSEvtSmEvtFgImIsSymlk - - -84  - #kFSEvtSmEvtFgImIsSymlk - 0x00040000 - - ) - -87  - gv8 -:: -Lol -< -v8 -:: -Obje -> - $Cڡts -() { - -88 -v8 -:: -Lol - -obje - = -N -:: -New -(); - -89 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgNe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgNe -)); - -90 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgMuSnSubDs"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgMuSnSubDs -)); - -91 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgUrDrݳd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgUrDrݳd -)); - -92 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgKlDrݳd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgKlDrݳd -)); - -93 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgEvtIdsWed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgEvtIdsWed -)); - -94 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgHiyDe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgHiyDe -)); - -95 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgRoChged"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgRoChged -)); - -96 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgMou"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgMou -)); - -97 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgUnmou"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgUnmou -)); - -98 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImCed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImCed -)); - -99 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImRemoved"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImRemoved -)); - -100 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImInodeMaMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImInodeMaMod -)); - -101 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImRamed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImRamed -)); - -102 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImModifd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImModifd -)); - -103 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImFdInfoMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImFdInfoMod -)); - -104 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImChgeOwr"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImChgeOwr -)); - -105 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImXMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImXMod -)); - -106 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsFe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsFe -)); - -107 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsD"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsD -)); - -108 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsSymlk"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsSymlk -)); - -109  -obje -; - -110 - } -} - - @interface/node_modules/jest-haste-map/node_modules/fsevents/src/methods.cc - -6  - gFSEvts -:: - $emEvt -(cڡ * -th -, -UI32 - -ags -, -UI64 - -id -) { - -7 -N -:: -HdSce - -hd_sce -; - -8 -v8 -:: -Lol - -obje - = - `hd -(); - -9 -v8 -:: -Lol - -key - = -N -:: -New -("hdr"). - `ToLolChecked -(); - -10 -N -:: -Clback - - `hdr -(N:: -To -< -v8 -:: -Funi ->(N:: - `G -( -obje -, -key -). - `ToLolChecked -()).ToLocalChecked()); - -11 -v8 -:: -Lol - -gv -[] = { - -12 -N -:: -New -< -v8 -:: -Sg ->( -th -). - `ToLolChecked -(), - -13 -N -:: -New -< -v8 -:: -Numb ->( -ags -), - -14 -N -:: -New -< -v8 -:: -Numb ->( -id -) - -16 -hdr -. - `Cl -(3, -gv -, & -async_sour -); - -17 - } -} - -19 - $NAN_METHOD -( -FSEvts -:: -New -) { - -20 -N -:: -Utf8Sg - - `th -( -fo -[0]); - -22 -FSEvts - * -f - = -w - - `FSEvts -(* -th -); - -23 -f --> - `Wp -( -fo -. - `This -()); - -24 -N -:: - `S -( -fo -. - `This -(), N:: -New -< -v8 -:: -Sg ->("hdr"). - `ToLolChecked -(), info[1]); - -26 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -27 - } -} - -29 - $NAN_METHOD -( -FSEvts -:: -St -) { - -30 -FSEvts -* -f - = -N -:: -ObjeWp -:: -Unwp -( -fo -. - `This -()); - -32 -f --> - `thadSt -(); - -33 -f --> - `asyncSt -(); - -35 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -36 - } -} - -38 - $NAN_METHOD -( -FSEvts -:: -S -) { - -39 -FSEvts -* -f - = -N -:: -ObjeWp -:: -Unwp -( -fo -. - `This -()); - -40 -f --> - `asyncS -(); - -41 -f --> - `thadS -(); - -43 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -44 - } -} - - @interface/node_modules/jest-haste-map/node_modules/fsevents/src/storage.cc - -6  - sf_evt - { - -7 -UI64 - - mid -; - -8 -UI32 - - mags -; - -9 -CFSgRef - - mth -; - -11 -f_evt -( -CFSgRef - -evtPh -, -UI32 - -evtFg -, -UI64 - -evtId -) { - -12 - mthis --> - mth - = -evtPh -; - -13 - mthis --> - mags - = -evtFg -; - -14 - mthis --> - mid - = -evtId -; - -15 i( - mthis --> - mth - ! -NULL -) - -16 -CFRa -( -this --> -th -); - -19 ~ -f_evt -() { - -20 i( - mthis --> - mth - ! -NULL -) - -21 -CFR -( -this --> -th -); - -24 - mive -: - -25 -f_evt -(const fse_event&); - -26  - mݔ -=(cڡ -f_evt -&); - - @interface/node_modules/jest-haste-map/node_modules/fsevents/src/thread.cc - -7 #ide -kFSEvtSmCeFgNe - - -8  - #kFSEvtSmCeFgNe - 0x00000000 - - ) - -11 #ide -kFSEvtSmCeFgUCFTys - - -12  - #kFSEvtSmCeFgUCFTys - 0x00000001 - - ) - -15 #ide -kFSEvtSmCeFgNoDer - - -16  - #kFSEvtSmCeFgNoDer - 0x00000002 - - ) - -19 #ide -kFSEvtSmCeFgWchRo - - -20  - #kFSEvtSmCeFgWchRo - 0x00000004 - - ) - -23 #ide -kFSEvtSmCeFgIgneSf - - -24  - #kFSEvtSmCeFgIgneSf - 0x00000008 - - ) - -27 #ide -kFSEvtSmCeFgFeEvts - - -28  - #kFSEvtSmCeFgFeEvts - 0x00000010 - - ) - -31  - gFSEvts -:: - $thadS -() { - -32 i( -thadlo -) ; - -33 i( - `uv_thad_ -(& -thad -, & -FSEvts -:: -thadRun -, -this -) - `abt -(); - -34 - } -} - -36  - $HdSmEvts -( -CڡFSEvtSmRef - -am -, * -x -, -size_t - -numEvts -, * -evtPhs -, cڡ -FSEvtSmEvtFgs - -evtFgs -[], cڡ -FSEvtSmEvtId - -evtIds -[]) { - -37 -FSEvts - * -f - = (FSEvt*) -x -; - -38 -size_t - -idx -; - -39 - `uv_mux_lock -(& -f --> -mux -); - -40  -idx -=0; idx < -numEvts -; idx++) { - -41 -f_evt - * -evt - = -w - - `f_evt -( - -42 ( -CFSgRef -) - `CFAayGVueAtIndex -(( -CFAayRef -) -evtPhs -, -idx -), - -43 -evtFgs -[ -idx -], - -44 -evtIds -[ -idx -] - -46 -f --> -evts -. - `push_back -( -evt -); - -48 -f --> - `asyncTrigg -(); - -49 - `uv_mux_uock -(& -f --> -mux -); - -50 - } -} - -52  - gFSEvts -:: - $thadRun -(* -x -) { - -53 -FSEvts - * -f - = (FSEvts*) -x -; - -54 -FSEvtSmCڋxt - -cڋxt - = { 0, -x -, -NULL -, NULL, NULL }; - -55 -f --> -thadlo - = - `CFRunLoGCut -(); - -56 -FSEvtSmRef - -am - = - `FSEvtSmCe -( -NULL -, & -HdSmEvts -, & -cڋxt -, -f --> -ths -, -kFSEvtSmEvtIdSNow -, ( -CFAbsuTime -0.1, -kFSEvtSmCeFgNe - | -kFSEvtSmCeFgWchRo - | -kFSEvtSmCeFgFeEvts - | -kFSEvtSmCeFgUCFTys -); - -57 - `FSEvtSmScheduWhRunLo -( -am -, -f --> -thadlo -, -kCFRunLoDeuMode -); - -58 - `FSEvtSmS -( -am -); - -59 - `CFRunLoRun -(); - -60 - `FSEvtSmSt -( -am -); - -61 - `FSEvtSmUnscheduFromRunLo -( -am -, -f --> -thadlo -, -kCFRunLoDeuMode -); - -62 - `FSEvtSmInvide -( -am -); - -63 - `FSEvtSmR -( -am -); - -64 -f --> -thadlo - = -NULL -; - -65 - } -} - -67  - gFSEvts -:: - $thadSt -() { - -68 i(! -thadlo -) ; - -69 - `CFRunLoSt -( -thadlo -); - -70 i( - `uv_thad_jo -(& -thad -) - `abt -(); - -71 - } -} - - @interface/node_modules/nan/nan.h - -21 #ide -NAN_H_ - - -22  - #NAN_H_ - - - ) - -24  - ~ - -26  - #NODE_0_10_MODULE_VERSION - 11 - - ) - -27  - #NODE_0_12_MODULE_VERSION - 14 - - ) - -28  - #ATOM_0_21_MODULE_VERSION - 41 - - ) - -29  - #IOJS_1_0_MODULE_VERSION - 42 - - ) - -30  - #IOJS_1_1_MODULE_VERSION - 43 - - ) - -31  - #IOJS_2_0_MODULE_VERSION - 44 - - ) - -32  - #IOJS_3_0_MODULE_VERSION - 45 - - ) - -33  - #NODE_4_0_MODULE_VERSION - 46 - - ) - -34  - #NODE_5_0_MODULE_VERSION - 47 - - ) - -35  - #NODE_6_0_MODULE_VERSION - 48 - - ) - -36  - #NODE_7_0_MODULE_VERSION - 51 - - ) - -37  - #NODE_8_0_MODULE_VERSION - 57 - - ) - -38  - #NODE_9_0_MODULE_VERSION - 59 - - ) - -39  - #NODE_10_0_MODULE_VERSION - 64 - - ) - -40  - #NODE_11_0_MODULE_VERSION - 67 - - ) - -41  - #NODE_12_0_MODULE_VERSION - 72 - - ) - -42  - #NODE_13_0_MODULE_VERSION - 79 - - ) - -43  - #NODE_14_0_MODULE_VERSION - 83 - - ) - -45 #ifde -_MSC_VER - - -46  - #NAN_HAS_CPLUSPLUS_11 - ( -_MSC_VER - >1800) - - ) - -48  - #NAN_HAS_CPLUSPLUS_11 - ( -__lulus - >201103L) - - ) - -51 #i -NODE_MODULE_VERSION - > -IOJS_3_0_MODULE_VERSION - && ! -NAN_HAS_CPLUSPLUS_11 - - -52 #r -This - -vsi - -of - -node -/ -NAN -/ -v8 - -ques - -a - -C -++11 -comp - - -55  - ~ - -56  - ~ - -57  - ~ - -58  - ~ - -59  - ~ - -60  - ~ - -61  - ~ - -62  - ~ - -63  - ~ - -64 #i -defed -( -_MSC_VER -) - -65 #agm -wng - -push - ) - -66 #agm -wng - -dib - : 4530 ) - -67  - ~ - -68  - ~ - -69  - ~ - -70 #agm -wng - -p - ) - -72  - ~ - -73  - ~ - -74  - ~ - -78 #ifde -UV_VERSION_MAJOR - - -79 #ide -UV_VERSION_PATCH - - -80  - #UV_VERSION_PATCH - 0 - - ) - -82  - #NAUV_UVVERSION - (( -UV_VERSION_MAJOR - << 16) | \ - -83 ( -UV_VERSION_MINOR - << 8) | \ - -84 ( -UV_VERSION_PATCH -)) - - ) - -86  - #NAUV_UVVERSION - 0x000b00 - - ) - -89 #i -NAUV_UVVERSION - < 0x000b0b - -90 #ifde -WIN32 - - -91  - ~ - -93  - ~ - -97 -mea - - gN - { - -99  - #NAN_CONCAT -( -a -, -b - - `NAN_CONCAT_HELPER -, b) - - ) - -100  - #NAN_CONCAT_HELPER -( -a -, -b -a## - ) -b - -102  - #NAN_INLINE - -le - - -103 - - ) - -104 #i -defed -( -__GNUC__ -) && \ - -105 !( -defed -( -V8_DISABLE_DEPRECATIONS -&& - gV8_DISABLE_DEPRECATIONS -) - -106  - #NAN_DEPRECATED - - `__ibu__ -(( -dd -)) - - ) - -107 #i -defed -( -_MSC_VER -) && \ - -108 !( -defed -( -V8_DISABLE_DEPRECATIONS -&& - gV8_DISABLE_DEPRECATIONS -) - -109  - #NAN_DEPRECATED - - `__deec -( -dd -) - - ) - -111  - #NAN_DEPRECATED - - - ) - -114 #i -NAN_HAS_CPLUSPLUS_11 - - -115  - #NAN_DISALLOW_ASSIGN -( -CLASS - -ݔ -=(cڡ CLASS& -de -; - - ) - -116  - #NAN_DISALLOW_COPY -( -CLASS - - `CLASS -(cڡ CLASS& -de -; - - ) - -117  - #NAN_DISALLOW_MOVE -( -CLASS -) \ - -118 - `CLASS -( -CLASS -&& -de -; \ - -119  -ݔ -=( -CLASS -&& -de -; - - ) - -121  - #NAN_DISALLOW_ASSIGN -( -CLASS - -ݔ -=(cڡ CLASS&); - - ) - -122  - #NAN_DISALLOW_COPY -( -CLASS - - `CLASS -(cڡ CLASS&); - - ) - -123  - #NAN_DISALLOW_MOVE -( -CLASS -) - - ) - -126  - #NAN_DISALLOW_ASSIGN_COPY -( -CLASS -) \ - -127 - `NAN_DISALLOW_ASSIGN -( -CLASS -) \ - -128 - `NAN_DISALLOW_COPY -( -CLASS -) - - ) - -130  - #NAN_DISALLOW_ASSIGN_MOVE -( -CLASS -) \ - -131 - `NAN_DISALLOW_ASSIGN -( -CLASS -) \ - -132 - `NAN_DISALLOW_MOVE -( -CLASS -) - - ) - -134  - #NAN_DISALLOW_COPY_MOVE -( -CLASS -) \ - -135 - `NAN_DISALLOW_COPY -( -CLASS -) \ - -136 - `NAN_DISALLOW_MOVE -( -CLASS -) - - ) - -138  - #NAN_DISALLOW_ASSIGN_COPY_MOVE -( -CLASS -) \ - -139 - `NAN_DISALLOW_ASSIGN -( -CLASS -) \ - -140 - `NAN_DISALLOW_COPY -( -CLASS -) \ - -141 - `NAN_DISALLOW_MOVE -( -CLASS -) - - ) - -143  - #TYPE_CHECK -( -T -, -S -) \ - -144  -l -) { \ - -145 *( -ic_ -< -T - *vީ*>(0)ic_< -S -*>(0); \ - -146 } - - ) - -150 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -151  - gv8 -:: - tHd -< - tv8 -:: - tObje -> - tADDON_REGISTER_FUNCTION_ARGS_TYPE -; - -153  - gv8 -:: - tLol -< - tv8 -:: - tObje -> - tADDON_REGISTER_FUNCTION_ARGS_TYPE -; - -156  - #NAN_MODULE_INIT -( -me -) \ - -157  - `me -( -N -:: -ADDON_REGISTER_FUNCTION_ARGS_TYPE - -rg -) - - ) - -159 #i -NODE_MAJOR_VERSION - >= 10 || \ - -160 - gNODE_MAJOR_VERSION - =9 && -NODE_MINOR_VERSION - >= 3 - -161  - #NAN_MODULE_WORKER_ENABLED -( -modu_me -, -giti -) \ - -162 "C" -NODE_MODULE_EXPORT - \ - -163 - `NAN_CONCAT -( -node_gi_modu_v -, -NODE_MODULE_VERSION -)( \ - -164 -v8 -:: -Lol - -expts -, v8::Lol -modu -, \ - -165 -v8 -:: -Lol - -cڋxt -) \ - -167 - `giti -( -expts -); \ - -168 } - - ) - -170  - #NAN_MODULE_WORKER_ENABLED -( -modu_me -, -giti -) \ - -171 - `NODE_MODULE -( -modu_me -, -giti -) - - ) - -176  - ~"n_backs.h -" - -180 #i( -NODE_MODULE_VERSION - < -NODE_0_12_MODULE_VERSION -) - -181  -v8 -:: - tSt - - tUnboundSt -; - -182  - gv8 -:: - tSt - - tBoundSt -; - -184  - gv8 -:: - tUnboundSt - UnboundScript; - -185  - gv8 -:: - tSt - - tBoundSt -; - -188 #i( -NODE_MODULE_VERSION - < -ATOM_0_21_MODULE_VERSION -) - -189  - gv8 -:: - tSg -:: - tExAsciiSgResour - - -190 - tExOBySgResour -; - -192  - gv8 -:: - tSg -:: - tExOBySgResour - - -193 - tExOBySgResour -; - -196 #i( -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION -) - -197 - gme -< -tyme - - gT -> - -198 -ass - - gNCyabPsitTs - : - -199 -public - -v8 -:: -NCyabPsitTs -< -T -> {}; - -200 - gme -< -tyme - - gT -> - -201 -ass - - gCyabPsitTs - : - -202 -public - -v8 -:: -CyabPsitTs -< -T -> {}; - -204 - gme -< -tyme - - gT -> - -205 -ass - - gPsitBa - : - -206 -public - -v8 -:: -PsitBa -< -T -> {}; - -208 - gme -< -tyme - - gT -,ym - gM - = -v8 -:: -NCyabPsitTs -< -T -> > - -209 -ass - -Psit -; - -211 - gme -< -tyme - - gT -> -ass - - gNCyabPsitTs -; - -212 - gme -< -tyme - - gT -> -ass - - gPsitBa -; - -213 - gme -< -tyme - - gT -,ym - gP -> -ass - - gWkClbackDa -; - -214 - gme -< -tyme - - gT -,ym - gM - = -NCyabPsitTs -< -T -> > - -215 -ass - -Psit -; - -218 - gme -< -tyme - - gT -> - -219 as - cMaybe - { - -220 - gpublic -: - -221 -le - -bo - -IsNhg -(cڡ {  ! -has_vue_ -; } - -222 -le - -bo - -IsJu -(cڡ {  - ghas_vue_ -; } - -224 -le - -T - -ToChecked -(cڡ {  -FromJu -(); } - -225 -le -  -Check -(cڡ { -FromJu -(); } - -227 -le - -bo - -To -( -T -* -out -) const { - -228 i( -IsJu -()* - gout - = -vue_ -; - -229  -IsJu -(); - -232 -le - -T - -FromJu -() const { - -233 #i -defed -( -V8_ENABLE_CHECKS -) - -234 -as -( -IsJu -() && "FromJust is Nothing"); - -236  - gvue_ -; - -239 -le - -T - -FromMaybe -(cڡ T& -deu_vue -) const { - -240  - ghas_vue_ - ? - gvue_ - : -deu_vue -; - -243 -le - -bo - - gݔ -==(cڡ -Maybe - & -h -) const { - -244  ( -IsJu -(= -h -.IsJust()) && - -245 (! -IsJu -(|| -FromJu -(= -h -.FromJust()); - -248 -le - -bo - - gݔ -!=(cڡ -Maybe - & -h -) const { - -249  ! -ݔ -==( -h -); - -252 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -253 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -255 -Maybe -(cڡ -v8 -::Maybe< -T ->& -th -) - -256 : -has_vue_ -( -th -. -IsJu -()) - -257 , -vue_ -( -th -. -FromMaybe -( -T -())) {} - -260 - give -: - -261 -Maybe -(: -has_vue_ -( -l -) {} - -262 -exic - -Maybe -(cڡ -T -& -t -: -has_vue_ -( -ue -), -vue_ -(t) {} - -263 -bo - - ghas_vue_ -; - -264 -T - - gvue_ -; - -266 - gme -< -tyme - - gU -> - -267 -nd - - gMaybe -< - gU -> -Nhg -(); - -268 - gme -< -tyme - - gU -> - -269 -nd - - gMaybe -< - gU -> -Ju -(cڡ -U -& -u -); - -272 - gme -< -tyme - - gT -> - -273 -le - - gMaybe -< - gT -> - $Nhg -() { - -274  -Maybe -< -T ->(); - -275 - } -} - -277 - gme -< -tyme - - gT -> - -278 -le - - gMaybe -< - gT -> - $Ju -(cڡ -T -& -t -) { - -279  -Maybe -< -T ->( -t -); - -280 - } -} - -282 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -283 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -284  - ~"n_maybe_43_l.h -" - -286  - ~"n_maybe_e_43_l.h -" - -289  - ~"n_cvrs.h -" - -290  - ~"n_w.h -" - -292 #i -NAUV_UVVERSION - < 0x000b17 - -293  - #NAUV_WORK_CB -( -func -) \ - -294  - $func -( -uv_async_t - * -async -, ) - - ) - -296  - #NAUV_WORK_CB -( -func -) \ - -297  - $func -( -uv_async_t - * -async -) - - ) - -300 #i -NAUV_UVVERSION - >= 0x000b0b - -302  -uv_key_t - - tuv_key_t -; - -304 -le -  - $uv_key_ -( -uv_key_t - * -key -) { - -305  - `uv_key_ -( -key -); - -306 - } -} - -308 -le -  - $uv_key_de -( -uv_key_t - * -key -) { - -309 - `uv_key_de -( -key -); - -310 - } -} - -312 -le - * - $uv_key_g -( -uv_key_t - * -key -) { - -313  - `uv_key_g -( -key -); - -314 - } -} - -316 -le -  - $uv_key_t -( -uv_key_t - * -key -, * -vue -) { - -317 - `uv_key_t -( -key -, -vue -); - -318 - } -} - -327 #ide -WIN32 - - -329  -had_key_t - - tuv_key_t -; - -331 -le -  - $uv_key_ -( -uv_key_t -* -key -) { - -332  - - `had_key_ -( -key -, -NULL -); - -333 - } -} - -335 -le -  - $uv_key_de -( -uv_key_t -* -key -) { - -336 i( - `had_key_de -(* -key -)) - -337 - `abt -(); - -338 - } -} - -340 -le - * - $uv_key_g -( -uv_key_t -* -key -) { - -341  - `had_gecific -(* -key -); - -342 - } -} - -344 -le -  - $uv_key_t -( -uv_key_t -* -key -, * -vue -) { - -345 i( - `had_tecific -(* -key -, -vue -)) - -346 - `abt -(); - -347 - } -} - -352 -DWORD - - gs_dex -; - -353 } - tuv_key_t -; - -355 -le -  - $uv_key_ -( -uv_key_t -* -key -) { - -356 -key --> -s_dex - = - `TlsAoc -(); - -357 i( -key --> -s_dex - = -TLS_OUT_OF_INDEXES -) - -358  -UV_ENOMEM -; - -360 - } -} - -362 -le -  - $uv_key_de -( -uv_key_t -* -key -) { - -363 i( - `TlsFe -( -key --> -s_dex -= -FALSE -) - -364 - `abt -(); - -365 -key --> -s_dex - = -TLS_OUT_OF_INDEXES -; - -366 - } -} - -368 -le - * - $uv_key_g -( -uv_key_t -* -key -) { - -369 * -vue - = - `TlsGVue -( -key --> -s_dex -); - -370 i( -vue - = -NULL -) - -371 i( - `GLaE -(! -ERROR_SUCCESS -) - -372 - `abt -(); - -373  -vue -; - -374 - } -} - -376 -le -  - $uv_key_t -( -uv_key_t -* -key -, * -vue -) { - -377 i( - `TlsSVue -( -key --> -s_dex -, -vue -= -FALSE -) - -378 - `abt -(); - -379 - } -} - -384 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -385 - gme -< -tyme - - gT -> - -386 - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Hd -); - -389 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -390 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -391  -v8 -:: - tWkClbackTy - WeakCallbackType; - -393  - sWkClbackTy - { - -394 - eE - { - gkPam -, - gkIlFlds -}; - -395 -E - - gty -; - -396 -WkClbackTy -( -E - -h -: -ty -(other) {} - -397 -le - -bo - -ݔ -==( -E - -h -{  oth = -this --> -ty -; } - -398 -le - -bo - - gݔ -!=( -E - -h -{  ! -ݔ -==(other); } - -402 - gme -< -tyme - - gP -> -ass - - gWkClbackInfo -; - -404 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -405  - ~"n_rsit_12_l.h -" - -407  - ~"n_rsit_e_12_l.h -" - -410 -mea - - gimp - { - -411 cڡ -size_t - - gkMaxLgth - = 0x3fffffff; - -414 #i -NODE_MAJOR_VERSION - > 0 || \ - -415 - gNODE_MINOR_VERSION - > 10 || \ - -416 - gNODE_MINOR_VERSION - =10 && -NODE_PATCH_VERSION - >= 29 || \ - -417 -NODE_MINOR_VERSION - =8 && -NODE_PATCH_VERSION - >= 27 - -418 cڡ  -kRInvidUtf8 - = -v8 -:: -Sg -:: -REPLACE_INVALID_UTF8 -; - -420 cڡ  - gkRInvidUtf8 - = 0; - -426 as - cHdSce - { - -427 - gv8 -:: -HdSce - -sce -; - -429 - gpublic -: - -430 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -431 -le - -HdSce -(: -sce -( -v8 -:: -Isީe -:: -GCut -()) {} - -432 -le -  -NumbOfHds -() { - -433  -v8 -:: -HdSce -:: -NumbOfHds -(v8:: -Isީe -:: -GCut -()); - -436 -le - -HdSce -(: -sce -() {} - -437 -le -  -NumbOfHds -() { - -438  -v8 -:: -HdSce -:: -NumbOfHds -(); - -442 - give -: - -445 -HdSce -(const HandleScope &); - -446  - gݔ -=(cڡ -HdSce - &); - -447 * -ݔ - -w -( -size_t - -size -); - -448  -ݔ - -de -(*, -size_t -) { - -449 -abt -(); - -453 as - cEsbHdSce - { - -454 - gpublic -: - -455 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -456 -le - -EsbHdSce -(: -sce -( -v8 -:: -Isީe -:: -GCut -()) {} - -458 -le -  -NumbOfHds -() { - -459  -v8 -:: -EsbHdSce -:: -NumbOfHds -(v8:: -Isީe -:: -GCut -()); - -462 - gme -< -tyme - - gT -> - -463 -le - - gv8 -:: -Lol -< -T -> -Es -( -v8 -::Lol -vue -) { - -464  -sce -. -Es -( -vue -); - -467 - give -: - -468 -v8 -:: -EsbHdSce - -sce -; - -470 -le - -EsbHdSce -(: -sce -() {} - -472 -le -  -NumbOfHds -() { - -473  -v8 -:: -HdSce -:: -NumbOfHds -(); - -476 - gme -< -tyme - - gT -> - -477 -le - - gv8 -:: -Lol -< -T -> -Es -( -v8 -::Lol -vue -) { - -478  -sce -. -Clo -( -vue -); - -481 - give -: - -482 -v8 -:: -HdSce - -sce -; - -485 - give -: - -488 -EsbHdSce -(const EscapableHandleScope &); - -489  - gݔ -=(cڡ -EsbHdSce - &); - -490 * -ݔ - -w -( -size_t - -size -); - -491  -ݔ - -de -(*, -size_t -) { - -492 -abt -(); - -498 as - cTryCch - { - -499 - gv8 -:: -TryCch - -y_tch_ -; - -500 -nd -  -FExi -(cڡ -TryCch -&); - -502 - gpublic -: - -503 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -504 -TryCch -(: -y_tch_ -( -v8 -:: -Isީe -:: -GCut -()) {} - -507 -le - -bo - -HasCaught -(cڡ {  -y_tch_ -.HasCaught(); } - -509 -le - -bo - -CCtue -(cڡ {  - gy_tch_ -.CanContinue(); } - -511 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -ReThrow -() { - -512 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -513  -New -( -y_tch_ -. -ReThrow -()); - -515  - gy_tch_ -. -ReThrow -(); - -519 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -Exi -() const { - -520  -y_tch_ -. -Exi -(); - -523 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -524 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -525 -le - -v8 -:: -MaybeLol - -SckT -() const { - -526 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -527 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -528  - gsce -. -Es -( -y_tch_ -. -SckT -( -isީe --> -GCutCڋxt -()) - -529 . -FromMaybe -( -v8 -:: -Lol -())); - -532 -le - - gMaybeLol -< - gv8 -:: -Vue -> -SckT -() const { - -533  -y_tch_ -. -SckT -(); - -537 -le - - gv8 -:: -Lol -< -v8 -:: -Mesge -> Message() const { - -538  -y_tch_ -. -Mesge -(); - -541 -le -  -Ret -({ - gy_tch_ -.Reset(); } - -543 -le -  -SVbo -( -bo - -vue -{ - gy_tch_ -.SetVerbose(value); } - -545 -le -  -SCtuMesge -( -bo - -vue -) { - -546 - gy_tch_ -. -SCtuMesge -( -vue -); - -550 - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -(v8::Lol -rg -, - -551 -v8 -:: -Lol - -func -, - -552  -gc -, - -553 -v8 -:: -Lol -* -gv -); - -554 - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -(v8::Lol -rg -, - -555 -v8 -:: -Lol - -symb -, - -556  -gc -, - -557 -v8 -:: -Lol -* -gv -); - -558 - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -(v8::Lol -rg -, - -559 cڡ * -mhod -, - -560  -gc -, - -561 -v8 -:: -Lol -* -gv -); - -565 as - cAsyncResour - { - -566 - gpublic -: - -567 -AsyncResour -( - -568 -v8 -:: -Lol - -me - - -569 , -v8 -:: -Lol - -sour - = -New -()) { - -570 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -571 -v8 -:: -Isީe -* -isީe - = v8::Isީe:: -GCut -(); - -573 i( - gsour -. -IsEmy -()) { - -574 - gsour - = -New -< -v8 -:: -Obje ->(); - -577 - gcڋxt - = -node -:: -EmAsyncIn -( -isީe -, -sour -, -me -); - -581 -AsyncResour -( - -582 cڡ * -me - - -583 , -v8 -:: -Lol - -sour - = -New -()) { - -584 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -585 -v8 -:: -Isީe -* -isީe - = v8::Isީe:: -GCut -(); - -587 i( - gsour -. -IsEmy -()) { - -588 - gsour - = -New -< -v8 -:: -Obje ->(); - -591 - gv8 -:: -Lol -< -v8 -:: -Sg -> -me_rg - = - -592 -New -< -v8 -:: -Sg ->( -me -). -ToLolChecked -(); - -593 - gcڋxt - = -node -:: -EmAsyncIn -( -isީe -, -sour -, -me_rg -); - -597 ~ -AsyncResour -() { - -598 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -599 - gv8 -:: -Isީe -* -isީe - = -v8 -::Isީe:: -GCut -(); - -600 - gnode -:: -EmAsyncDeroy -( -isީe -, -cڋxt -); - -604 -le - - gMaybeLol -< - gv8 -:: -Vue -> -runInAsyncSce -( - -605 -v8 -:: -Lol - -rg - - -606 , -v8 -:: -Lol - -func - - -607 ,  -gc - - -608 , -v8 -:: -Lol -* -gv -) { - -609 #i -NODE_MODULE_VERSION - < -NODE_9_0_MODULE_VERSION - - -610  -MakeClback -( -rg -, -func -, -gc -, -gv -); - -612  - gnode -:: -MakeClback -( - -613 -v8 -:: -Isީe -:: -GCut -(), -rg -, -func -, -gc -, -gv -, -cڋxt -); - -617 -le - - gMaybeLol -< - gv8 -:: -Vue -> -runInAsyncSce -( - -618 -v8 -:: -Lol - -rg - - -619 , -v8 -:: -Lol - -symb - - -620 ,  -gc - - -621 , -v8 -:: -Lol -* -gv -) { - -622 #i -NODE_MODULE_VERSION - < -NODE_9_0_MODULE_VERSION - - -623  -MakeClback -( -rg -, -symb -, -gc -, -gv -); - -625  - gnode -:: -MakeClback -( - -626 -v8 -:: -Isީe -:: -GCut -(), -rg -, -symb -, -gc -, -gv -, -cڋxt -); - -630 -le - - gMaybeLol -< - gv8 -:: -Vue -> -runInAsyncSce -( - -631 -v8 -:: -Lol - -rg - - -632 , cڡ * -mhod - - -633 ,  -gc - - -634 , -v8 -:: -Lol -* -gv -) { - -635 #i -NODE_MODULE_VERSION - < -NODE_9_0_MODULE_VERSION - - -636  -MakeClback -( -rg -, -mhod -, -gc -, -gv -); - -638  - gnode -:: -MakeClback -( - -639 -v8 -:: -Isީe -:: -GCut -(), -rg -, -mhod -, -gc -, -gv -, -cڋxt -); - -643 - give -: - -644 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -AsyncResour -) - -645 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -646 -node -:: -async_cڋxt - -cڋxt -; - -650 -le - -uv_lo_t -* - $GCutEvtLo -() { - -651 #i -NODE_MAJOR_VERSION - >= 10 || \ - -652 -NODE_MAJOR_VERSION - =9 && -NODE_MINOR_VERSION - >= 3 || \ - -653 -NODE_MAJOR_VERSION - =8 && -NODE_MINOR_VERSION - >= 10 - -654  -node -:: - `GCutEvtLo -( -v8 -:: -Isީe -:: - `GCut -()); - -656  - `uv_deu_lo -(); - -658 - } -} - -663 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -664 -le - - -665  - $SCouFuni -( -v8 -:: -CouLookupClback - -cb -) { - -666 -v8 -:: -Isީe -:: - `GCut -()-> - `SCouFuni -( -cb -); - -667 - } -} - -669 -le - - -670  - $SCeHiogmFuni -( -v8 -:: -CeHiogmClback - -cb -) { - -671 -v8 -:: -Isީe -:: - `GCut -()-> - `SCeHiogmFuni -( -cb -); - -672 - } -} - -674 -le - - -675  - $SAddHiogmSameFuni -( -v8 -:: -AddHiogmSameClback - -cb -) { - -676 -v8 -:: -Isީe -:: - `GCut -()-> - `SAddHiogmSameFuni -( -cb -); - -677 - } -} - -679 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -680 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -681 -le - -bo - - $IdNifiti -( -id_time__ms -) { - -682  -v8 -:: -Isީe -:: - `GCut -()-> - `IdNifitiDdle -( - -683 -id_time__ms - * 0.001); - -684 - } -} - -686 -le - -bo - - $IdNifiti -( -id_time__ms -) { - -687  -v8 -:: -Isީe -:: - `GCut -()-> - `IdNifiti -( -id_time__ms -); - -688 - } -} - -691 -le -  - $LowMemyNifiti -() { - -692 -v8 -:: -Isީe -:: - `GCut -()-> - `LowMemyNifiti -(); - -693 - } -} - -695 -le -  - $CڋxtDiodNifiti -() { - -696 -v8 -:: -Isީe -:: - `GCut -()-> - `CڋxtDiodNifiti -(); - -697 - } -} - -699 -le - - -700  - $SCouFuni -( -v8 -:: -CouLookupClback - -cb -) { - -701 -v8 -:: -V8 -:: - `SCouFuni -( -cb -); - -702 - } -} - -704 -le - - -705  - $SCeHiogmFuni -( -v8 -:: -CeHiogmClback - -cb -) { - -706 -v8 -:: -V8 -:: - `SCeHiogmFuni -( -cb -); - -707 - } -} - -709 -le - - -710  - $SAddHiogmSameFuni -( -v8 -:: -AddHiogmSameClback - -cb -) { - -711 -v8 -:: -V8 -:: - `SAddHiogmSameFuni -( -cb -); - -712 - } -} - -714 -le - -bo - - $IdNifiti -( -id_time__ms -) { - -715  -v8 -:: -V8 -:: - `IdNifiti -( -id_time__ms -); - -716 - } -} - -718 -le -  - $LowMemyNifiti -() { - -719 -v8 -:: -V8 -:: - `LowMemyNifiti -(); - -720 - } -} - -722 -le -  - $CڋxtDiodNifiti -() { - -723 -v8 -:: -V8 -:: - `CڋxtDiodNifiti -(); - -724 - } -} - -727 #i( -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION -) - -728 -le - - gv8 -:: -Lol -< -v8 -:: -Primive -> - $Undefed -() { - -729 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -730 -EsbHdSce - -sce -; - -731  -sce -. - `Es -( - `New -( -v8 -:: - `Undefed -(v8:: -Isީe -:: - `GCut -()))); - -733  -v8 -:: - `Undefed -(v8:: -Isީe -:: - `GCut -()); - -735 - } -} - -737 -le - - gv8 -:: -Lol -< -v8 -:: -Primive -> - $Nu -() { - -738 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -739 -EsbHdSce - -sce -; - -740  -sce -. - `Es -( - `New -( -v8 -:: - `Nu -(v8:: -Isީe -:: - `GCut -()))); - -742  -v8 -:: - `Nu -(v8:: -Isީe -:: - `GCut -()); - -744 - } -} - -746 -le - - gv8 -:: -Lol -< -v8 -:: -Boޗn -> - $True -() { - -747 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -748 -EsbHdSce - -sce -; - -749  -sce -. - `Es -( - `New -( -v8 -:: - `True -(v8:: -Isީe -:: - `GCut -()))); - -751  -v8 -:: - `True -(v8:: -Isީe -:: - `GCut -()); - -753 - } -} - -755 -le - - gv8 -:: -Lol -< -v8 -:: -Boޗn -> - $F -() { - -756 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -757 -EsbHdSce - -sce -; - -758  -sce -. - `Es -( - `New -( -v8 -:: - `F -(v8:: -Isީe -:: - `GCut -()))); - -760  -v8 -:: - `F -(v8:: -Isީe -:: - `GCut -()); - -762 - } -} - -764 -le - - gv8 -:: -Lol -< -v8 -:: -Sg -> - $EmySg -() { - -765  -v8 -:: -Sg -:: - `Emy -(v8:: -Isީe -:: - `GCut -()); - -766 - } -} - -768 -le -  - $AdjuExMemy -( -bc -) { - -769  -ic_ -<>( - -770 -v8 -:: -Isީe -:: - `GCut -()-> - `AdjuAmouOfExAodMemy -( -bc -)); - -771 - } -} - -773 -le -  -STeme -( - -774 -v8 -:: -Lol - -m - - -775 , cڡ * -me - - -776 , -v8 -:: -Lol - -vue -) { - -777 -m --> -S -( -v8 -:: -Isީe -:: -GCut -(), -me -, -vue -); - -780 -le -  -STeme -( - -781 -v8 -:: -Lol - -m - - -782 , -v8 -:: -Lol - -me - - -783 , -v8 -:: -Lol - -vue - - -784 , -v8 -:: -PrݔtyAribu - -ibus -) { - -785 -m --> -S -( -me -, -vue -, -ibus -); - -788 -le - - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> - $GCutCڋxt -() { - -789  -v8 -:: -Isީe -:: - `GCut -()-> - `GCutCڋxt -(); - -790 - } -} - -792 -le - * -GIlFldPor -( - -793 -v8 -:: -Lol - -obje - - -794 ,  -dex -) { - -795  - gobje --> -GAligdPorFromIlFld -( -dex -); - -798 -le -  -SIlFldPor -( - -799 -v8 -:: -Lol - -obje - - -800 ,  -dex - - -801 , * -vue -) { - -802 - gobje --> -SAligdPorInIlFld -( -dex -, -vue -); - -805  - #NAN_GC_CALLBACK -( -me -) \ - -806  - $me -( -v8 -:: -Isީe - * -isީe -, v8:: -GCTy - -ty -, v8:: -GCClbackFgs - -ags -) - - ) - -808 #i -NODE_MODULE_VERSION - < -NODE_4_0_MODULE_VERSION - - -809  -v8 -:: - tIsީe -:: - tGCEpogueClback - GCEpilogueCallback; - -810  -v8 -:: - tIsީe -:: - tGCProgueClback - GCPrologueCallback; - -812  -v8 -:: - tIsީe -:: - tGCClback - - tGCEpogueClback -; - -813  -v8 -:: - tIsީe -:: - tGCClback - - tGCProgueClback -; - -816 -le -  - $AddGCEpogueClback -( - -817 -GCEpogueClback - -back - - -818 , -v8 -:: -GCTy - -gc_ty_fr - = v8:: -kGCTyA -) { - -819 -v8 -:: -Isީe -:: - `GCut -()-> - `AddGCEpogueClback -( -back -, -gc_ty_fr -); - -820 - } -} - -822 -le -  - $RemoveGCEpogueClback -( - -823 -GCEpogueClback - -back -) { - -824 -v8 -:: -Isީe -:: - `GCut -()-> - `RemoveGCEpogueClback -( -back -); - -825 - } -} - -827 -le -  - $AddGCProgueClback -( - -828 -GCProgueClback - -back - - -829 , -v8 -:: -GCTy - -gc_ty_fr - = v8:: -kGCTyA -) { - -830 -v8 -:: -Isީe -:: - `GCut -()-> - `AddGCProgueClback -( -back -, -gc_ty_fr -); - -831 - } -} - -833 -le -  - $RemoveGCProgueClback -( - -834 -GCProgueClback - -back -) { - -835 -v8 -:: -Isީe -:: - `GCut -()-> - `RemoveGCProgueClback -( -back -); - -836 - } -} - -838 -le -  - $GHpStiics -( - -839 -v8 -:: -HpStiics - * -hp_iics -) { - -840 -v8 -:: -Isީe -:: - `GCut -()-> - `GHpStiics -( -hp_iics -); - -841 - } -} - -843  - #X -( -NAME -) \ - -844 -le - -v8 -:: -Lol - - $NAME -(cڡ * -msg -) { \ - -845 -EsbHdSce - -sce -; \ - -846  -sce -. - `Es -( -v8 -:: -Exi -:: - `NAME -( - `New -( -msg -). - `ToLolChecked -())); \ - -847 - } -} \ - -849 -le - \ - -850 -v8 -:: -Lol - - `NAME -(v8::Lol -msg -) { \ - -851  -v8 -:: -Exi -:: - `NAME -( -msg -); \ - -854 -le -  -Throw - ## - $NAME -(cڡ * -msg -) { \ - -855 -HdSce - -sce -; \ - -856 -v8 -:: -Isީe -:: - `GCut -()-> - `ThrowExi -( \ - -857 -v8 -:: -Exi -:: - `NAME -( - `New -( -msg -). - `ToLolChecked -())); \ - -858 - } -} \ - -860 -le -  -Throw - ## - `NAME -( -v8 -:: -Lol - -msg -) { \ - -861 -HdSce - -sce -; \ - -862 -v8 -:: -Isީe -:: - `GCut -()-> - `ThrowExi -( \ - -863 -v8 -:: -Exi -:: - `NAME -( -msg -)); \ - -864 } - - ) - -866 - $X -( -E -) - -867 - $X -( -RgeE -) - -868 - $X -( -RenE -) - -869 - $X -( -SyaxE -) - -870 - $X -( -TyE -) - -872 #unde -X - - -874 -le -  - `ThrowE -( -v8 -:: -Lol - -r -) { - -875 -v8 -:: -Isީe -:: - `GCut -()-> - `ThrowExi -( -r -); - -876 - } -} - -878 -le - - gMaybeLol -< - gv8 -:: -Obje -> -NewBufr -( - -879 * -da - - -880 , -size_t - -ngth - - -881 #i -NODE_MODULE_VERSION - > -IOJS_2_0_MODULE_VERSION - - -882 , -node -:: -Bufr -:: -FeClback - -back - - -884 , -node -:: -smloc -:: -FeClback - -back - - -886 , * -ht - - -890 -as -( -ngth - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -891 #i -NODE_MODULE_VERSION - > -IOJS_2_0_MODULE_VERSION - - -892  - gnode -:: -Bufr -:: -New -( - -893 -v8 -:: -Isީe -:: -GCut -(), -da -, -ngth -, -back -, -ht -); - -895  - gnode -:: -Bufr -:: -New -( -v8 -:: -Isީe -:: -GCut -(), -da -, -ngth -, -back -, - -896 -ht -); - -900 -le - - gMaybeLol -< - gv8 -:: -Obje -> - $CyBufr -( - -901 cڡ * -da - - -902 , -ut32_t - -size - - -906 - `as -( -size - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -907 #i -NODE_MODULE_VERSION - > -IOJS_2_0_MODULE_VERSION - - -908  -node -:: -Bufr -:: - `Cy -( - -909 -v8 -:: -Isީe -:: - `GCut -(), -da -, -size -); - -911  -node -:: -Bufr -:: - `New -( -v8 -:: -Isީe -:: - `GCut -(), -da -, -size -); - -913 - } -} - -915 -le - - gMaybeLol -< - gv8 -:: -Obje -> - $NewBufr -( -ut32_t - -size -) { - -918 - `as -( -size - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -919 #i -NODE_MODULE_VERSION - > -IOJS_2_0_MODULE_VERSION - - -920  -node -:: -Bufr -:: - `New -( - -921 -v8 -:: -Isީe -:: - `GCut -(), -size -); - -923  -node -:: -Bufr -:: - `New -( -v8 -:: -Isީe -:: - `GCut -(), -size -); - -925 - } -} - -927 -le - - gMaybeLol -< - gv8 -:: -Obje -> - $NewBufr -( - -928 * -da - - -929 , -ut32_t - -size - - -933 - `as -( -size - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -934 #i -NODE_MODULE_VERSION - > -IOJS_2_0_MODULE_VERSION - - -935  -node -:: -Bufr -:: - `New -( -v8 -:: -Isީe -:: - `GCut -(), -da -, -size -); - -937  -node -:: -Bufr -:: - `U -( -v8 -:: -Isީe -:: - `GCut -(), -da -, -size -); - -939 - } -} - -941 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -942 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -943 -le - -MaybeLol -< -v8 -:: -Sg -> - -944 -NewOBySg -(cڡ -ut8_t - * -vue -,  -ngth - = -1) { - -945  -v8 -:: -Sg -:: -NewFromOBy -(v8:: -Isީe -:: -GCut -(), -vue -, - -946 -v8 -:: -NewSgTy -:: -kNm -, -ngth -); - -949 -le - - gMaybeLol -< - gBoundSt -> -CompeSt -( - -950 -v8 -:: -Lol - -s - - -951 , cڡ -v8 -:: -StOrig -& -ig - - -953 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -954 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -955 - gv8 -:: -StComp -:: -Sour - -sour -( -s -, -ig -); - -956  - gsce -. -Es -( - -957 -v8 -:: -StComp -:: -Compe -( -isީe --> -GCutCڋxt -(), & -sour -) - -958 . -FromMaybe -( -v8 -:: -Lol -< -BoundSt ->())); - -961 -le - - gMaybeLol -< - gBoundSt -> -CompeSt -( - -962 -v8 -:: -Lol - -s - - -964 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -965 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -966 - gv8 -:: -StComp -:: -Sour - -sour -( -s -); - -967  - gsce -. -Es -( - -968 -v8 -:: -StComp -:: -Compe -( -isީe --> -GCutCڋxt -(), & -sour -) - -969 . -FromMaybe -( -v8 -:: -Lol -< -BoundSt ->())); - -972 -le - - gMaybeLol -< - gv8 -:: -Vue -> -RunSt -( - -973 -v8 -:: -Lol -< -UnboundSt -> -st - - -975 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -976 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -977  - gsce -. -Es -( -st --> -BdToCutCڋxt -() - -978 -> -Run -( -isީe --> -GCutCڋxt -()) - -979 . -FromMaybe -( -v8 -:: -Lol -())); - -982 -le - - gMaybeLol -< - gv8 -:: -Vue -> -RunSt -( - -983 -v8 -:: -Lol -< -BoundSt -> -st - - -985 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -986 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -987  - gsce -. -Es -( -st --> -Run -( -isީe --> -GCutCڋxt -()) - -988 . -FromMaybe -( -v8 -:: -Lol -())); - -991 -le - - gMaybeLol -< - gv8 -:: -Sg -> - -992 -NewOBySg -(cڡ -ut8_t - * -vue -,  -ngth - = -1) { - -993  -v8 -:: -Sg -:: -NewFromOBy -(v8:: -Isީe -:: -GCut -(), -vue -, - -994 -v8 -:: -Sg -:: -kNmSg -, -ngth -); - -997 -le - - gMaybeLol -< - gBoundSt -> -CompeSt -( - -998 -v8 -:: -Lol - -s - - -999 , cڡ -v8 -:: -StOrig -& -ig - - -1001 -v8 -:: -StComp -:: -Sour - -sour -( -s -, -ig -); - -1002  - gv8 -:: -StComp -:: -Compe -( -v8 -:: -Isީe -:: -GCut -(), & -sour -); - -1005 -le - - gMaybeLol -< - gBoundSt -> -CompeSt -( - -1006 -v8 -:: -Lol - -s - - -1008 -v8 -:: -StComp -:: -Sour - -sour -( -s -); - -1009  - gv8 -:: -StComp -:: -Compe -( -v8 -:: -Isީe -:: -GCut -(), & -sour -); - -1012 -le - - gMaybeLol -< - gv8 -:: -Vue -> -RunSt -( - -1013 -v8 -:: -Lol -< -UnboundSt -> -st - - -1015 -EsbHdSce - -sce -; - -1016  - gsce -. -Es -( -st --> -BdToCutCڋxt -()-> -Run -()); - -1019 -le - - gMaybeLol -< - gv8 -:: -Vue -> -RunSt -( - -1020 -v8 -:: -Lol -< -BoundSt -> -st - - -1022  -st --> -Run -(); - -1026 -NAN_DEPRECATED - -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -( - -1027 -v8 -:: -Lol - -rg - - -1028 , -v8 -:: -Lol - -func - - -1029 ,  -gc - - -1030 , -v8 -:: -Lol -* -gv -) { - -1031 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -1032 -EsbHdSce - -sce -; - -1033  - gsce -. -Es -( -New -( -node -:: -MakeClback -( - -1034 -v8 -:: -Isީe -:: -GCut -(), -rg -, -func -, -gc -, -gv -))); - -1036 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1037 -AsyncResour - -s -("nan:makeCallback"); - -1038  - gs -. -runInAsyncSce -( -rg -, -func -, -gc -, -gv -) - -1039 . -FromMaybe -( -v8 -:: -Lol -()); - -1041  - gnode -:: -MakeClback -( - -1042 -v8 -:: -Isީe -:: -GCut -(), -rg -, -func -, -gc -, -gv -); - -1047 -NAN_DEPRECATED - -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -( - -1048 -v8 -:: -Lol - -rg - - -1049 , -v8 -:: -Lol - -symb - - -1050 ,  -gc - - -1051 , -v8 -:: -Lol -* -gv -) { - -1052 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -1053 -EsbHdSce - -sce -; - -1054  - gsce -. -Es -( -New -( -node -:: -MakeClback -( - -1055 -v8 -:: -Isީe -:: -GCut -(), -rg -, -symb -, -gc -, -gv -))); - -1057 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1058 -AsyncResour - -s -("nan:makeCallback"); - -1059  - gs -. -runInAsyncSce -( -rg -, -symb -, -gc -, -gv -) - -1060 . -FromMaybe -( -v8 -:: -Lol -()); - -1062  - gnode -:: -MakeClback -( - -1063 -v8 -:: -Isީe -:: -GCut -(), -rg -, -symb -, -gc -, -gv -); - -1068 -NAN_DEPRECATED - -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -( - -1069 -v8 -:: -Lol - -rg - - -1070 , cڡ * -mhod - - -1071 ,  -gc - - -1072 , -v8 -:: -Lol -* -gv -) { - -1073 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -1074 -EsbHdSce - -sce -; - -1075  - gsce -. -Es -( -New -( -node -:: -MakeClback -( - -1076 -v8 -:: -Isީe -:: -GCut -(), -rg -, -mhod -, -gc -, -gv -))); - -1078 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1079 -AsyncResour - -s -("nan:makeCallback"); - -1080  - gs -. -runInAsyncSce -( -rg -, -mhod -, -gc -, -gv -) - -1081 . -FromMaybe -( -v8 -:: -Lol -()); - -1083  - gnode -:: -MakeClback -( - -1084 -v8 -:: -Isީe -:: -GCut -(), -rg -, -mhod -, -gc -, -gv -); - -1089 -le -  - $FExi -(cڡ -TryCch -& -y_tch -) { - -1090 -node -:: - `FExi -( -v8 -:: -Isީe -:: - `GCut -(), -y_tch -. -y_tch_ -); - -1091 - } -} - -1093 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $EnoExi -( - -1094  -rno - - -1095 , cڡ * -sys - = -NULL - - -1096 , cڡ * -mesge - = -NULL - - -1097 , cڡ * -th - = -NULL -) { - -1098  -node -:: - `EnoExi -( -v8 -:: -Isީe -:: - `GCut -(), -rno -, -sys -, - -1099 -mesge -, -th -); - -1100 - } -} - -1102 -NAN_DEPRECATED - -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $NEnoExi -( - -1103  -rno - - -1104 , cڡ * -sys - = -NULL - - -1105 , cڡ * -mesge - = -NULL - - -1106 , cڡ * -th - = -NULL -) { - -1107  - `EnoExi -( -rno -, -sys -, -mesge -, -th -); - -1108 - } -} - -1110 - gme -< -tyme - - gT -> - -1111 -le -  - $SIsީeDa -( - -1112 -v8 -:: -Isީe - * -isީe - - -1113 , -T - * -da - - -1115 -isީe --> - `SDa -(0, -da -); - -1116 - } -} - -1118 - gme -< -tyme - - gT -> - -1119 -le - -T - * - $GIsީeDa -( - -1120 -v8 -:: -Isީe - * -isީe - - -1122  -ic_ -< -T -*>( -isީe --> - `GDa -(0)); - -1123 - } -} - -1125 as - cUtf8Sg - { - -1126 - gpublic -: - -1127 -le - -exic - -Utf8Sg -( -v8 -:: -Lol - -om -) : - -1128 -ngth_ -(0), -r_ -( -r__ -) { - -1129 -HdSce - - gsce -; - -1130 i(! - gom -. -IsEmy -()) { - -1131 #i -NODE_MAJOR_VERSION - >= 10 - -1132 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -GCutCڋxt -(); - -1133 - gv8 -:: -Lol -< -v8 -:: -Sg -> -rg - = - -1134 -om --> -ToSg -( -cڋxt -). -FromMaybe -( -v8 -:: -Lol -()); - -1136 - gv8 -:: -Lol -< -v8 -:: -Sg -> -rg - = -om --> -ToSg -(); - -1138 i(! - grg -. -IsEmy -()) { - -1139 -size_t - - gn - = 3 * -rg --> -Lgth -() + 1; - -1140 -as -( -n - < -INT_MAX -); - -1141 i( - gn - >  ( - gr__ -)) { - -1142 - gr_ - = -ic_ -<*>( -mloc -( -n -)); - -1143 -as -( -r_ - != 0); - -1145 cڡ  - gags - = - -1146 -v8 -:: -Sg -:: -NO_NULL_TERMINATION - | -imp -:: -kRInvidUtf8 -; - -1147 #i -NODE_MAJOR_VERSION - >= 11 - -1148 - gngth_ - = -rg --> -WreUtf8 -( -v8 -:: -Isީe -:: -GCut -(), -r_ -, - -1149 -ic_ -<>( -n -), 0, -ags -); - -1153 #ifde -_MSC_VER - - -1154 #agm -wng -( -push -) - -1155 #agm -wng -( -dib - : 4996) - -1157 #ifde -__GNUC__ - - -1158 #agm -GCC - -dgnoic - -push - - -1159 #agm -GCC - -dgnoic - -igned - "-Wdeprecated-declarations" - -1161 - gngth_ - = -rg --> -WreUtf8 -( -r_ -, -ic_ -<>( -n -), 0, -ags -); - -1162 #ifde -__GNUC__ - - -1163 #agm -GCC - -dgnoic - -p - - -1165 #ifde -_MSC_VER - - -1166 #agm -wng -( -p -) - -1169 - gr_ -[ -ngth_ -] = '\0'; - -1174 -le -  -ngth -() const { - -1175  - gngth_ -; - -1178 -le - * - gݔ -*({  - gr_ -; } - -1179 -le - cڡ * - gݔ -*(cڡ {  - gr_ -; } - -1181 - gle - ~ -Utf8Sg -() { - -1182 i( - gr_ - ! -r__ -) { - -1183 - -( -r_ -); - -1187 - give -: - -1188 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -Utf8Sg -) - -1190  -ngth_ -; - -1191 * - gr_ -; - -1192  - gr__ -[1024]; - -1196 -le - - gv8 -:: -Lol -< -v8 -:: -Primive -> - $Undefed -() { - -1197 -EsbHdSce - -sce -; - -1198  -sce -. - `Es -( - `New -( -v8 -:: - `Undefed -())); - -1199 - } -} - -1201 -le - - gv8 -:: -Lol -< -v8 -:: -Primive -> - $Nu -() { - -1202 -EsbHdSce - -sce -; - -1203  -sce -. - `Es -( - `New -( -v8 -:: - `Nu -())); - -1204 - } -} - -1206 -le - - gv8 -:: -Lol -< -v8 -:: -Boޗn -> - $True -() { - -1207 -EsbHdSce - -sce -; - -1208  -sce -. - `Es -( - `New -( -v8 -:: - `True -())); - -1209 - } -} - -1211 -le - - gv8 -:: -Lol -< -v8 -:: -Boޗn -> - $F -() { - -1212 -EsbHdSce - -sce -; - -1213  -sce -. - `Es -( - `New -( -v8 -:: - `F -())); - -1214 - } -} - -1216 -le - - gv8 -:: -Lol -< -v8 -:: -Sg -> - $EmySg -() { - -1217  -v8 -:: -Sg -:: - `Emy -(); - -1218 - } -} - -1220 -le -  - $AdjuExMemy -( -bc -) { - -1221  -ic_ -<>( -v8 -:: -V8 -:: - `AdjuAmouOfExAodMemy -( -bc -)); - -1222 - } -} - -1224 -le -  -STeme -( - -1225 -v8 -:: -Lol - -m - - -1226 , cڡ * -me - - -1227 , -v8 -:: -Lol - -vue -) { - -1228 -m --> -S -( -me -, -vue -); - -1231 -le -  -STeme -( - -1232 -v8 -:: -Lol - -m - - -1233 , -v8 -:: -Lol - -me - - -1234 , -v8 -:: -Lol - -vue - - -1235 , -v8 -:: -PrݔtyAribu - -ibus -) { - -1236 -m --> -S -( -me -, -vue -, -ibus -); - -1239 -le - - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> - $GCutCڋxt -() { - -1240  -v8 -:: -Cڋxt -:: - `GCut -(); - -1241 - } -} - -1243 -le - * -GIlFldPor -( - -1244 -v8 -:: -Lol - -obje - - -1245 ,  -dex -) { - -1246  - gobje --> -GPorFromIlFld -( -dex -); - -1249 -le -  -SIlFldPor -( - -1250 -v8 -:: -Lol - -obje - - -1251 ,  -dex - - -1252 , * -vue -) { - -1253 - gobje --> -SPorInIlFld -( -dex -, -vue -); - -1256  - #NAN_GC_CALLBACK -( -me -) \ - -1257  - $me -( -v8 -:: -GCTy - -ty -, v8:: -GCClbackFgs - -ags -) - - ) - -1259 -le -  - $AddGCEpogueClback -( - -1260 -v8 -:: -GCEpogueClback - -back - - -1261 , -v8 -:: -GCTy - -gc_ty_fr - = v8:: -kGCTyA -) { - -1262 -v8 -:: -V8 -:: - `AddGCEpogueClback -( -back -, -gc_ty_fr -); - -1263 - } -} - -1264 -le -  - $RemoveGCEpogueClback -( - -1265 -v8 -:: -GCEpogueClback - -back -) { - -1266 -v8 -:: -V8 -:: - `RemoveGCEpogueClback -( -back -); - -1267 - } -} - -1268 -le -  - $AddGCProgueClback -( - -1269 -v8 -:: -GCProgueClback - -back - - -1270 , -v8 -:: -GCTy - -gc_ty_fr - = v8:: -kGCTyA -) { - -1271 -v8 -:: -V8 -:: - `AddGCProgueClback -( -back -, -gc_ty_fr -); - -1272 - } -} - -1273 -le -  - $RemoveGCProgueClback -( - -1274 -v8 -:: -GCProgueClback - -back -) { - -1275 -v8 -:: -V8 -:: - `RemoveGCProgueClback -( -back -); - -1276 - } -} - -1277 -le -  - $GHpStiics -( - -1278 -v8 -:: -HpStiics - * -hp_iics -) { - -1279 -v8 -:: -V8 -:: - `GHpStiics -( -hp_iics -); - -1280 - } -} - -1282  - #X -( -NAME -) \ - -1283 -le - -v8 -:: -Lol - - $NAME -(cڡ * -msg -) { \ - -1284 -EsbHdSce - -sce -; \ - -1285  -sce -. - `Es -( -v8 -:: -Exi -:: - `NAME -( - `New -( -msg -). - `ToLolChecked -())); \ - -1286 - } -} \ - -1288 -le - \ - -1289 -v8 -:: -Lol - - `NAME -(v8::Lol -msg -) { \ - -1290  -v8 -:: -Exi -:: - `NAME -( -msg -); \ - -1293 -le -  -Throw - ## - $NAME -(cڡ * -msg -) { \ - -1294 -HdSce - -sce -; \ - -1295 -v8 -:: - `ThrowExi -(v8:: -Exi -:: - `NAME -( - `New -( -msg -). - `ToLolChecked -())); \ - -1296 - } -} \ - -1298 -le - \ - -1299  -Throw - ## - `NAME -( -v8 -:: -Lol - -rmsg -) { \ - -1300 -HdSce - -sce -; \ - -1301 -v8 -:: - `ThrowExi -(v8:: -Exi -:: - `NAME -( -rmsg -)); \ - -1302 } - - ) - -1304 - $X -( -E -) - -1305 - $X -( -RgeE -) - -1306 - $X -( -RenE -) - -1307 - $X -( -SyaxE -) - -1308 - $X -( -TyE -) - -1310 #unde -X - - -1312 -le -  - `ThrowE -( -v8 -:: -Lol - -r -) { - -1313 -v8 -:: - `ThrowExi -( -r -); - -1314 - } -} - -1316 -le - - gMaybeLol -< - gv8 -:: -Obje -> - $NewBufr -( - -1317 * -da - - -1318 , -size_t - -ngth - - -1319 , -node -:: -Bufr -:: -_back - -back - - -1320 , * -ht - - -1322 -EsbHdSce - -sce -; - -1325 - `as -( -ngth - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -1326  -sce -. - `Es -( - -1327 - `New -( -node -:: -Bufr -::New( -da -, -ngth -, -back -, -ht -)-> -hd_ -)); - -1328 - } -} - -1330 -le - - gMaybeLol -< - gv8 -:: -Obje -> - $CyBufr -( - -1331 cڡ * -da - - -1332 , -ut32_t - -size - - -1334 -EsbHdSce - -sce -; - -1337 - `as -( -size - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -1338 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1339  -sce -. - `Es -( - `New -( -node -:: -Bufr -::New( -da -, -size -)-> -hd_ -)); - -1341  -sce -. - `Es -( - -1342 - `New -( -node -:: -Bufr -::New( -cڡ_ -<*>( -da -), -size -)-> -hd_ -)); - -1344 - } -} - -1346 -le - - gMaybeLol -< - gv8 -:: -Obje -> - $NewBufr -( -ut32_t - -size -) { - -1349 -EsbHdSce - -sce -; - -1350 - `as -( -size - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -1351  -sce -. - `Es -( - `New -( -node -:: -Bufr -::New( -size -)-> -hd_ -)); - -1352 - } -} - -1354 -le -  - $FeDa -(* -da -, * -ht -) { - -1355 ( -ht -; - -1356 -de -[] -da -; - -1357 - } -} - -1359 -le - - gMaybeLol -< - gv8 -:: -Obje -> - $NewBufr -( - -1360 * -da - - -1361 , -ut32_t - -size - - -1363 -EsbHdSce - -sce -; - -1366 - `as -( -size - < -imp -:: -kMaxLgth - && "tooarge buffer"); - -1367  -sce -. - `Es -( - -1368 - `New -( -node -:: -Bufr -::New( -da -, -size -, -FeDa -, -NULL -)-> -hd_ -)); - -1369 - } -} - -1371 -mea - - gimp - { - -1372 -le -  - -1373 -widSg -( -d -:: -ve -< -ut16_t -> * -ws -, cڡ -ut8_t - * -s -,  -l -) { - -1374 -size_t - - gn - = -ic_ -( -l -); - -1375 i( - gl - < 0) { - -1376 - gn - = - -( -t_ -( -s -)); - -1378 -as -( -n - < -INT_MAX - && "stringooong"); - -1379 - gws --> -size -( -n -); - -1380 - gd -:: -cy -( -s -, s + -n -, -ws --> -beg -()); - -1384 -le - - gMaybeLol -< - gv8 -:: -Sg -> - -1385 -NewOBySg -(cڡ -ut8_t - * -vue -,  -ngth - = -1) { - -1386 -d -:: -ve -< -ut16_t -> -wideSg -; - -1387 - gimp -:: -widSg -(& -wideSg -, -vue -, -ngth -); - -1388  - gv8 -:: -Sg -:: -New -( -wideSg -. -da -(), - -1389 -ic_ -<>( -wideSg -. -size -())); - -1392 -le - - gMaybeLol -< - gBoundSt -> -CompeSt -( - -1393 -v8 -:: -Lol - -s - - -1394 , cڡ -v8 -:: -StOrig -& -ig - - -1396  -v8 -:: -St -:: -Compe -( -s -, -cڡ_ -(& -ig -)); - -1399 -le - - gMaybeLol -< - gBoundSt -> -CompeSt -( - -1400 -v8 -:: -Lol - -s - - -1402  -v8 -:: -St -:: -Compe -( -s -); - -1405 -le - - -1406 - gMaybeLol -< - gv8 -:: -Vue -> -RunSt -( -v8 -:: -Lol - -st -) { - -1407  -st --> -Run -(); - -1410 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -( - -1411 -v8 -:: -Lol - -rg - - -1412 , -v8 -:: -Lol - -func - - -1413 ,  -gc - - -1414 , -v8 -:: -Lol -* -gv -) { - -1415 -v8 -:: -HdSce - -sce -; - -1416  - gsce -. -Clo -( -New -( -node -:: -MakeClback -( -rg -, -func -, -gc -, -gv -))); - -1419 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -( - -1420 -v8 -:: -Lol - -rg - - -1421 , -v8 -:: -Lol - -symb - - -1422 ,  -gc - - -1423 , -v8 -:: -Lol -* -gv -) { - -1424 -v8 -:: -HdSce - -sce -; - -1425  - gsce -. -Clo -( -New -( -node -:: -MakeClback -( -rg -, -symb -, -gc -, -gv -))); - -1428 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -MakeClback -( - -1429 -v8 -:: -Lol - -rg - - -1430 , cڡ * -mhod - - -1431 ,  -gc - - -1432 , -v8 -:: -Lol -* -gv -) { - -1433 -v8 -:: -HdSce - -sce -; - -1434  - gsce -. -Clo -( -New -( -node -:: -MakeClback -( -rg -, -mhod -, -gc -, -gv -))); - -1437 -le -  - $FExi -(cڡ -TryCch -& -y_tch -) { - -1438 -node -:: - `FExi -( -cڡ_ -< -v8 -:: -TryCch - &>( -y_tch -. -y_tch_ -)); - -1439 - } -} - -1441 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $EnoExi -( - -1442  -rno - - -1443 , cڡ * -sys - = -NULL - - -1444 , cڡ * -mesge - = -NULL - - -1445 , cڡ * -th - = -NULL -) { - -1446  -node -:: - `EnoExi -( -rno -, -sys -, -mesge -, -th -); - -1447 - } -} - -1449 -NAN_DEPRECATED - -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $NEnoExi -( - -1450  -rno - - -1451 , cڡ * -sys - = -NULL - - -1452 , cڡ * -mesge - = -NULL - - -1453 , cڡ * -th - = -NULL -) { - -1454  - `EnoExi -( -rno -, -sys -, -mesge -, -th -); - -1455 - } -} - -1458 - gme -< -tyme - - gT -> - -1459 -le -  - $SIsީeDa -( - -1460 -v8 -:: -Isީe - * -isީe - - -1461 , -T - * -da - - -1463 -isީe --> - `SDa -( -da -); - -1464 - } -} - -1466 - gme -< -tyme - - gT -> - -1467 -le - -T - * - $GIsީeDa -( - -1468 -v8 -:: -Isީe - * -isީe - - -1470  -ic_ -< -T -*>( -isީe --> - `GDa -()); - -1471 - } -} - -1473 as - cUtf8Sg - { - -1474 - gpublic -: - -1475 -le - -exic - -Utf8Sg -( -v8 -:: -Lol - -om -) : - -1476 -ngth_ -(0), -r_ -( -r__ -) { - -1477 - gv8 -:: -HdSce - -sce -; - -1478 i(! - gom -. -IsEmy -()) { - -1479 - gv8 -:: -Lol -< -v8 -:: -Sg -> -rg - = -om --> -ToSg -(); - -1480 i(! - grg -. -IsEmy -()) { - -1481 -size_t - - gn - = 3 * -rg --> -Lgth -() + 1; - -1482 -as -( -n - < -INT_MAX -); - -1483 i( - gn - >  ( - gr__ -)) { - -1484 - gr_ - = -ic_ -<*>( -mloc -( -n -)); - -1485 -as -( -r_ - != 0); - -1487 cڡ  - gags - = - -1488 -v8 -:: -Sg -:: -NO_NULL_TERMINATION - | -imp -:: -kRInvidUtf8 -; - -1489 - gngth_ - = -rg --> -WreUtf8 -( -r_ -, -ic_ -<>( -n -), 0, -ags -); - -1490 - gr_ -[ -ngth_ -] = '\0'; - -1495 -le -  -ngth -() const { - -1496  - gngth_ -; - -1499 -le - * - gݔ -*({  - gr_ -; } - -1500 -le - cڡ * - gݔ -*(cڡ {  - gr_ -; } - -1502 - gle - ~ -Utf8Sg -() { - -1503 i( - gr_ - ! -r__ -) { - -1504 - -( -r_ -); - -1508 - give -: - -1509 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -Utf8Sg -) - -1511  -ngth_ -; - -1512 * - gr_ -; - -1513  - gr__ -[1024]; - -1518 (* - tFeClback -)(* - tda -, * - tht -); - -1520 cڡ - tFuniClbackInfo -< - tv8 -:: - tVue ->& - tNAN_METHOD_ARGS_TYPE -; - -1521  - tNAN_METHOD_RETURN_TYPE -; - -1523 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->& - tNAN_GETTER_ARGS_TYPE -; - -1524  - tNAN_GETTER_RETURN_TYPE -; - -1526 cڡ - tPrݔtyClbackInfo -<>& - tNAN_SETTER_ARGS_TYPE -; - -1527  - tNAN_SETTER_RETURN_TYPE -; - -1529 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->& - -1530 - tNAN_PROPERTY_GETTER_ARGS_TYPE -; - -1531  - tNAN_PROPERTY_GETTER_RETURN_TYPE -; - -1533 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->& - -1534 - tNAN_PROPERTY_SETTER_ARGS_TYPE -; - -1535  - tNAN_PROPERTY_SETTER_RETURN_TYPE -; - -1537 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tAay ->& - -1538 - tNAN_PROPERTY_ENUMERATOR_ARGS_TYPE -; - -1539  - tNAN_PROPERTY_ENUMERATOR_RETURN_TYPE -; - -1541 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tBoޗn ->& - -1542 - tNAN_PROPERTY_DELETER_ARGS_TYPE -; - -1543  - tNAN_PROPERTY_DELETER_RETURN_TYPE -; - -1545 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tIeg ->& - -1546 - tNAN_PROPERTY_QUERY_ARGS_TYPE -; - -1547  - tNAN_PROPERTY_QUERY_RETURN_TYPE -; - -1549 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->& - tNAN_INDEX_GETTER_ARGS_TYPE -; - -1550  - tNAN_INDEX_GETTER_RETURN_TYPE -; - -1552 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->& - tNAN_INDEX_SETTER_ARGS_TYPE -; - -1553  - tNAN_INDEX_SETTER_RETURN_TYPE -; - -1555 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tAay ->& - -1556 - tNAN_INDEX_ENUMERATOR_ARGS_TYPE -; - -1557  - tNAN_INDEX_ENUMERATOR_RETURN_TYPE -; - -1559 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tBoޗn ->& - -1560 - tNAN_INDEX_DELETER_ARGS_TYPE -; - -1561  - tNAN_INDEX_DELETER_RETURN_TYPE -; - -1563 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tIeg ->& - -1564 - tNAN_INDEX_QUERY_ARGS_TYPE -; - -1565  - tNAN_INDEX_QUERY_RETURN_TYPE -; - -1567  - #NAN_METHOD -( -me -) \ - -1568 -N -:: -NAN_METHOD_RETURN_TYPE - - $me -( -N -:: -NAN_METHOD_ARGS_TYPE - -fo -) - - ) - -1569  - #NAN_GETTER -( -me -) \ - -1570 -N -:: -NAN_GETTER_RETURN_TYPE - - `me -( \ - -1571 -v8 -:: -Lol - -ݔty - \ - -1572 , -N -:: -NAN_GETTER_ARGS_TYPE - -fo -) - - ) - -1573  - #NAN_SETTER -( -me -) \ - -1574 -N -:: -NAN_SETTER_RETURN_TYPE - - `me -( \ - -1575 -v8 -:: -Lol - -ݔty - \ - -1576 , -v8 -:: -Lol - -vue - \ - -1577 , -N -:: -NAN_SETTER_ARGS_TYPE - -fo -) - - ) - -1578  - #NAN_PROPERTY_GETTER -( -me -) \ - -1579 -N -:: -NAN_PROPERTY_GETTER_RETURN_TYPE - - `me -( \ - -1580 -v8 -:: -Lol - -ݔty - \ - -1581 , -N -:: -NAN_PROPERTY_GETTER_ARGS_TYPE - -fo -) - - ) - -1582  - #NAN_PROPERTY_SETTER -( -me -) \ - -1583 -N -:: -NAN_PROPERTY_SETTER_RETURN_TYPE - - `me -( \ - -1584 -v8 -:: -Lol - -ݔty - \ - -1585 , -v8 -:: -Lol - -vue - \ - -1586 , -N -:: -NAN_PROPERTY_SETTER_ARGS_TYPE - -fo -) - - ) - -1587  - #NAN_PROPERTY_ENUMERATOR -( -me -) \ - -1588 -N -:: -NAN_PROPERTY_ENUMERATOR_RETURN_TYPE - - `me -( \ - -1589 -N -:: -NAN_PROPERTY_ENUMERATOR_ARGS_TYPE - -fo -) - - ) - -1590  - #NAN_PROPERTY_DELETER -( -me -) \ - -1591 -N -:: -NAN_PROPERTY_DELETER_RETURN_TYPE - - `me -( \ - -1592 -v8 -:: -Lol - -ݔty - \ - -1593 , -N -:: -NAN_PROPERTY_DELETER_ARGS_TYPE - -fo -) - - ) - -1594  - #NAN_PROPERTY_QUERY -( -me -) \ - -1595 -N -:: -NAN_PROPERTY_QUERY_RETURN_TYPE - - `me -( \ - -1596 -v8 -:: -Lol - -ݔty - \ - -1597 , -N -:: -NAN_PROPERTY_QUERY_ARGS_TYPE - -fo -) - - ) - -1598  - #NAN_INDEX_GETTER -( -me -) \ - -1599 -N -:: -NAN_INDEX_GETTER_RETURN_TYPE - - `me -( \ - -1600 -ut32_t - -dex - \ - -1601 , -N -:: -NAN_INDEX_GETTER_ARGS_TYPE - -fo -) - - ) - -1602  - #NAN_INDEX_SETTER -( -me -) \ - -1603 -N -:: -NAN_INDEX_SETTER_RETURN_TYPE - - `me -( \ - -1604 -ut32_t - -dex - \ - -1605 , -v8 -:: -Lol - -vue - \ - -1606 , -N -:: -NAN_INDEX_SETTER_ARGS_TYPE - -fo -) - - ) - -1607  - #NAN_INDEX_ENUMERATOR -( -me -) \ - -1608 -N -:: -NAN_INDEX_ENUMERATOR_RETURN_TYPE - \ - -1609 - $me -( -N -:: -NAN_INDEX_ENUMERATOR_ARGS_TYPE - -fo -) - - ) - -1610  - #NAN_INDEX_DELETER -( -me -) \ - -1611 -N -:: -NAN_INDEX_DELETER_RETURN_TYPE - - `me -( \ - -1612 -ut32_t - -dex - \ - -1613 , -N -:: -NAN_INDEX_DELETER_ARGS_TYPE - -fo -) - - ) - -1614  - #NAN_INDEX_QUERY -( -me -) \ - -1615 -N -:: -NAN_INDEX_QUERY_RETURN_TYPE - - `me -( \ - -1616 -ut32_t - -dex - \ - -1617 , -N -:: -NAN_INDEX_QUERY_ARGS_TYPE - -fo -) - - ) - -1619 as - cClback - { - -1620 -public -: - -1621 - `Clback -() {} - -1623 -exic - - `Clback -(cڡ -v8 -:: -Lol - & - -: - `hd_ -(fn) {} - -1625 ~ - `Clback -() { - -1626 -hd_ -. - `Ret -(); - -1629 -bo - -ݔ -==(cڡ -Clback - & -h -) const { - -1630  -hd_ - = -h -.handle_; - -1633 -bo - -ݔ -!=(cڡ -Clback - & -h -) const { - -1634  ! -ݔ -==( -h -); - -1637 -le - - -1638 -v8 -:: -Lol - -ݔ -*(cڡ {  - `GFuni -(); } - -1640 -NAN_DEPRECATED - -le - -v8 -:: -Lol - - `ݔ -()( - -1641 -v8 -:: -Lol - -rg - - -1642 ,  -gc - = 0 - -1643 , -v8 -:: -Lol - -gv -[] = 0) const { - -1644 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1645 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); - -1646 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1647 -AsyncResour - - `async -("nan:Callback:operator()"); - -1648  - `Cl_ -( -isީe -, -rg -, -gc -, -gv -, & -async -) - -1649 . - `FromMaybe -( -v8 -:: -Lol -()); - -1651  - `Cl_ -( -isީe -, -rg -, -gc -, -gv -); - -1654  - `Cl_ -( -rg -, -gc -, -gv -); - -1658 -NAN_DEPRECATED - -le - -v8 -:: -Lol - - `ݔ -()( - -1659  -gc - = 0 - -1660 , -v8 -:: -Lol - -gv -[] = 0) const { - -1661 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1662 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); - -1663 -v8 -:: -EsbHdSce - - `sce -( -isީe -); - -1664 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1665 -AsyncResour - - `async -("nan:Callback:operator()"); - -1666  -sce -. - `Es -( - `Cl_ -( -isީe -, isީe-> - `GCutCڋxt -()-> - `Glob -(), - -1667 -gc -, -gv -, & -async -) - -1668 . - `FromMaybe -( -v8 -:: -Lol -())); - -1670  -sce -. - `Es -( - -1671 - `Cl_ -( -isީe -, isީe-> - `GCutCڋxt -()-> - `Glob -(), -gc -, -gv -)); - -1674 -v8 -:: -HdSce - -sce -; - -1675  -sce -. - `Clo -( - `Cl_ -( -v8 -:: -Cڋxt -:: - `GCut -()-> - `Glob -(), -gc -, -gv -)); - -1679 -le - -MaybeLol -< -v8 -:: -Vue -> - `ݔ -()( - -1680 -AsyncResour -* -sour - - -1681 ,  -gc - = 0 - -1682 , -v8 -:: -Lol - -gv -[] = 0) const { - -1683  -this --> - `Cl -( -gc -, -gv -, -sour -); - -1686 -le - -MaybeLol -< -v8 -:: -Vue -> - `ݔ -()( - -1687 -AsyncResour -* -sour - - -1688 , -v8 -:: -Lol - -rg - - -1689 ,  -gc - = 0 - -1690 , -v8 -:: -Lol - -gv -[] = 0) const { - -1691  -this --> - `Cl -( -rg -, -gc -, -gv -, -sour -); - -1695 -le -  - `SFuni -(cڡ -v8 -:: -Lol - & - -) { - -1696 - `Ret -( - -); - -1699 -le -  - `Ret -(cڡ -v8 -:: -Lol - & - -) { - -1700 -hd_ -. - `Ret -( - -); - -1703 -le -  - `Ret -() { - -1704 -hd_ -. - `Ret -(); - -1707 -le - -v8 -:: -Lol - - `GFuni -() const { - -1708  - `New -( -hd_ -); - -1711 -le - -bo - - `IsEmy -() const { - -1712  -hd_ -. - `IsEmy -(); - -1719 -NAN_DEPRECATED - -le - -v8 -:: -Lol - - -1720 - `Cl -( -v8 -:: -Lol - -rg - - -1721 ,  -gc - - -1722 , -v8 -:: -Lol - -gv -[]) const { - -1723 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1724 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); - -1725 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1726 -AsyncResour - - `async -("nan:Callback:Call"); - -1727  - `Cl_ -( -isީe -, -rg -, -gc -, -gv -, & -async -) - -1728 . - `FromMaybe -( -v8 -:: -Lol -()); - -1730  - `Cl_ -( -isީe -, -rg -, -gc -, -gv -); - -1733  - `Cl_ -( -rg -, -gc -, -gv -); - -1741 -NAN_DEPRECATED - -le - -v8 -:: -Lol - - -1742 - `Cl -( -gc -, -v8 -:: -Lol - -gv -[]) const { - -1743 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1744 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); - -1745 -v8 -:: -EsbHdSce - - `sce -( -isީe -); - -1746 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1747 -AsyncResour - - `async -("nan:Callback:Call"); - -1748  -sce -. - `Es -( - `Cl_ -( -isީe -, isީe-> - `GCutCڋxt -()-> - `Glob -(), - -1749 -gc -, -gv -, & -async -) - -1750 . - `FromMaybe -( -v8 -:: -Lol -())); - -1752  -sce -. - `Es -( - -1753 - `Cl_ -( -isީe -, isީe-> - `GCutCڋxt -()-> - `Glob -(), -gc -, -gv -)); - -1756 -v8 -:: -HdSce - -sce -; - -1757  -sce -. - `Clo -( - `Cl_ -( -v8 -:: -Cڋxt -:: - `GCut -()-> - `Glob -(), -gc -, -gv -)); - -1761 -le - -MaybeLol -< -v8 -:: -Vue -> - -1762 - `Cl -( -v8 -:: -Lol - -rg - - -1763 ,  -gc - - -1764 , -v8 -:: -Lol - -gv -[] - -1765 , -AsyncResour -* -sour -) const { - -1766 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1767 -v8 -:: -Isީe -* -isީe - = v8::Isީe:: - `GCut -(); - -1768  - `Cl_ -( -isީe -, -rg -, -gc -, -gv -, -sour -); - -1769 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1770 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); - -1771  - `Cl_ -( -isީe -, -rg -, -gc -, -gv -); - -1773  - `Cl_ -( -rg -, -gc -, -gv -); - -1777 -le - -MaybeLol -< -v8 -:: -Vue -> - -1778 - `Cl -( -gc -, -v8 -:: -Lol - -gv -[], -AsyncResour -* -sour -) const { - -1779 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1780 -v8 -:: -Isީe -* -isީe - = v8::Isީe:: - `GCut -(); - -1781  - `Cl -( -isީe --> - `GCutCڋxt -()-> - `Glob -(), -gc -, -gv -, -sour -); - -1782 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1783 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); - -1784 -v8 -:: -EsbHdSce - - `sce -( -isީe -); - -1785  -sce -. - `Es -( - -1786 - `Cl_ -( -isީe -, isީe-> - `GCutCڋxt -()-> - `Glob -(), -gc -, -gv -)); - -1788 -v8 -:: -HdSce - -sce -; - -1789  -sce -. - `Clo -( - `Cl_ -( -v8 -:: -Cڋxt -:: - `GCut -()-> - `Glob -(), -gc -, -gv -)); - -1793 -ive -: - -1794 - `NAN_DISALLOW_ASSIGN_COPY_MOVE -( -Clback -) - -1795 -Psit -< -v8 -:: -Funi -> -hd_ -; - -1797 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -1798 -MaybeLol -< -v8 -:: -Vue -> - `Cl_ -(v8:: -Isީe - * -isީe - - -1799 , -v8 -:: -Lol - -rg - - -1800 ,  -gc - - -1801 , -v8 -:: -Lol - -gv -[] - -1802 , -AsyncResour -* -sour -) const { - -1803 -EsbHdSce - -sce -; - -1804 -v8 -:: -Lol - -func - = - `New -( -hd_ -); - -1805 aut -maybe - = -sour --> - `runInAsyncSce -( -rg -, -func -, -gc -, -gv -); - -1806 -v8 -:: -Lol - -lol -; - -1807 i(! -maybe -. - `ToLol -(& -lol -) -MaybeLol -< -v8 -:: -Vue ->(); - -1808  -sce -. - `Es -( -lol -); - -1810 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1811 -v8 -:: -Lol - - `Cl_ -(v8:: -Isީe - * -isީe - - -1812 , -v8 -:: -Lol - -rg - - -1813 ,  -gc - - -1814 , -v8 -:: -Lol - -gv -[]) const { - -1815 -EsbHdSce - -sce -; - -1817 -v8 -:: -Lol - -back - = - `New -( -hd_ -); - -1818 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -1819  -sce -. - `Es -( - `New -( -node -:: - `MakeClback -( - -1820 -isީe - - -1821 , -rg - - -1822 , -back - - -1823 , -gc - - -1824 , -gv - - -1827  -sce -. - `Es -( -node -:: - `MakeClback -( - -1828 -isީe - - -1829 , -rg - - -1830 , -back - - -1831 , -gc - - -1832 , -gv - - -1837 -v8 -:: -Lol - - `Cl_ -(v8::Lol -rg - - -1838 ,  -gc - - -1839 , -v8 -:: -Lol - -gv -[]) const { - -1840 -EsbHdSce - -sce -; - -1842 -v8 -:: -Lol - -back - = - `New -( -hd_ -); - -1843  -sce -. - `Es -( - `New -( -node -:: - `MakeClback -( - -1844 -rg - - -1845 , -back - - -1846 , -gc - - -1847 , -gv - - -1851 - } -}; - -1853 -le - - gMaybeLol -< - gv8 -:: -Vue -> -Cl -( - -1854 cڡ -N -:: -Clback -& -back - - -1855 , -v8 -:: -Lol - -cv - - -1856 ,  -gc - - -1857 , -v8 -:: -Lol - -gv -[]) { - -1858  -Cl -(* -back -, -cv -, -gc -, -gv -); - -1861 -le - - gMaybeLol -< - gv8 -:: -Vue -> -Cl -( - -1862 cڡ -N -:: -Clback -& -back - - -1863 ,  -gc - - -1864 , -v8 -:: -Lol - -gv -[]) { - -1865 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -1866 -v8 -:: -Isީe -* -isީe - = v8::Isީe:: -GCut -(); - -1867 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -1868  - gsce -. -Es -( - -1869 -Cl -(* -back -, -isީe --> -GCutCڋxt -()-> -Glob -(), -gc -, -gv -) - -1870 . -FromMaybe -( -v8 -:: -Lol -())); - -1872 -EsbHdSce - - gsce -; - -1873  - gsce -. -Es -( - -1874 -Cl -(* -back -, -v8 -:: -Cڋxt -:: -GCut -()-> -Glob -(), -gc -, -gv -) - -1875 . -FromMaybe -( -v8 -:: -Lol -())); - -1879 -le - - gMaybeLol -< - gv8 -:: -Vue -> -Cl -( - -1880 -v8 -:: -Lol - -symb - - -1881 , -v8 -:: -Lol - -cv - - -1882 ,  -gc - - -1883 , -v8 -:: -Lol - -gv -[]) { - -1884 -EsbHdSce - -sce -; - -1885 - gv8 -:: -Lol -< -v8 -:: -Vue -> -_v - = - -1886 -G -( -cv -, -symb -). -FromMaybe -( -v8 -:: -Lol -()); - -1887 i( - g_v -. -IsEmy -(|| !_v-> -IsFuni -() - gv8 -:: -Lol -< -v8 -:: -Vue ->(); - -1888 - gv8 -:: -Lol -< -v8 -:: -Funi -> - - = -_v -. -As -(); - -1889  - gsce -. -Es -( - -1890 -Cl -( - -, -cv -, -gc -, -gv -). -FromMaybe -( -v8 -:: -Lol -())); - -1893 -le - - gMaybeLol -< - gv8 -:: -Vue -> -Cl -( - -1894 cڡ * -mhod - - -1895 , -v8 -:: -Lol - -cv - - -1896 ,  -gc - - -1897 , -v8 -:: -Lol - -gv -[]) { - -1898 -EsbHdSce - -sce -; - -1899 - gv8 -:: -Lol -< -v8 -:: -Sg -> -mhod_rg - = - -1900 -New -< -v8 -:: -Sg ->( -mhod -). -ToLolChecked -(); - -1901  - gsce -. -Es -( - -1902 -Cl -( -mhod_rg -, -cv -, -gc -, -gv -). -FromMaybe -( -v8 -:: -Lol -())); - -1905 cs - cAsyncWk - { - -1906 - gpublic -: - -1907 -exic - -AsyncWk -( -Clback - * -back_ -, - -1908 cڡ * -sour_me - = "nan:AsyncWorker") - -1909 : -back -( -back_ -), -rmsg_ -( -NULL -) { - -1910 - gque -. - gda - = -this -; - -1912 -HdSce - - gsce -; - -1913 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -New -(); - -1914 - grsitHd -. -Ret -( -obj -); - -1915 - gasync_sour - = -w - -AsyncResour -( -sour_me -, -obj -); - -1918 - gvtu - ~ -AsyncWk -() { - -1919 -HdSce - - gsce -; - -1921 i(! - grsitHd -. -IsEmy -()) - -1922 - grsitHd -. -Ret -(); - -1923 -de - - gback -; - -1924 - gde -[] - grmsg_ -; - -1925 -de - - gasync_sour -; - -1928 -vtu -  -WkCome -() { - -1929 -HdSce - - gsce -; - -1931 i( - grmsg_ - = -NULL -) - -1932 -HdOKClback -(); - -1934 -HdEClback -(); - -1935 -de - - gback -; - -1936 - gback - = -NULL -; - -1939 -le -  -SaveToPsit -( - -1940 cڡ * -key -, cڡ -v8 -:: -Lol - & -vue -) { - -1941 -HdSce - -sce -; - -1942 -S -( -New -( -rsitHd -), New( -key -). -ToLolChecked -(), -vue -). -FromJu -(); - -1945 -le -  -SaveToPsit -( - -1946 cڡ -v8 -:: -Lol - & -key -, cڡ v8::Lol & -vue -) { - -1947 -HdSce - -sce -; - -1948 -S -( -New -( -rsitHd -), -key -, -vue -). -FromJu -(); - -1951 -le -  -SaveToPsit -( - -1952 -ut32_t - -dex -, cڡ -v8 -:: -Lol - & -vue -) { - -1953 -HdSce - -sce -; - -1954 -S -( -New -( -rsitHd -), -dex -, -vue -). -FromJu -(); - -1957 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -GFromPsit -(cڡ * -key -) const { - -1958 -EsbHdSce - -sce -; - -1959  - gsce -. -Es -( - -1960 -G -( -New -( -rsitHd -), New( -key -). -ToLolChecked -()) - -1961 . -FromMaybe -( -v8 -:: -Lol -())); - -1964 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - -1965 -GFromPsit -(cڡ -v8 -:: -Lol - & -key -) const { - -1966 -EsbHdSce - -sce -; - -1967  - gsce -. -Es -( - -1968 -G -( -New -( -rsitHd -), -key -) - -1969 . -FromMaybe -( -v8 -:: -Lol -())); - -1972 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -GFromPsit -( -ut32_t - -dex -) const { - -1973 -EsbHdSce - -sce -; - -1974  - gsce -. -Es -( - -1975 -G -( -New -( -rsitHd -), -dex -) - -1976 . -FromMaybe -( -v8 -:: -Lol -())); - -1979 -vtu -  -Execu -() = 0; - -1981 -uv_wk_t - - gque -; - -1983 -vtu -  -Deroy -() { - -1984 -de - - gthis -; - -1987 - geed -: - -1988 -Psit -< -v8 -:: -Obje -> -rsitHd -; - -1989 -Clback - * - gback -; - -1990 -AsyncResour - * - gasync_sour -; - -1992 -vtu -  -HdOKClback -() { - -1993 -HdSce - - gsce -; - -1995 - gback --> -Cl -(0, -NULL -, -async_sour -); - -1998 -vtu -  -HdEClback -() { - -1999 -HdSce - - gsce -; - -2001 - gv8 -:: -Lol -< -v8 -:: -Vue -> -gv -[] = { - -2002 -v8 -:: -Exi -:: -E -( -New -( -EMesge -()). -ToLolChecked -()) - -2004 - gback --> -Cl -(1, -gv -, -async_sour -); - -2007  -SEMesge -(cڡ * -msg -) { - -2008 - gde -[] - grmsg_ -; - -2010 -size_t - - gsize - = - -( -msg -) + 1; - -2011 - grmsg_ - = -w - [ -size -]; - -2012 -memy -( -rmsg_ -, -msg -, -size -); - -2015 cڡ * -EMesge -() const { - -2016  - grmsg_ -; - -2019 - give -: - -2020 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -AsyncWk -) - -2021 * -rmsg_ -; - -2024 cs - cAsyncBeProgssWkBa - : -public - -AsyncWk - { - -2025 -public -: - -2026 -exic - -AsyncBeProgssWkBa -( - -2027 -Clback - * -back_ -, - -2028 cڡ * -sour_me - = "nan:AsyncBareProgressWorkerBase") - -2029 : -AsyncWk -( -back_ -, -sour_me -) { - -2030 -uv_async_ -( - -2031 -GCutEvtLo -() - -2032 , & -async - - -2033 , -AsyncProgss_ - - -2035 - gasync -. - gda - = -this -; - -2038 - gvtu - ~ -AsyncBeProgssWkBa -() { - -2041 -vtu -  -WkProgss -() = 0; - -2043 -vtu -  -Deroy -() { - -2044 -uv_o -( -t_ -< -uv_hd_t -*>(& -async -), -AsyncClo_ -); - -2047 - give -: - -2048 -le -  -NAUV_WORK_CB -( -AsyncProgss_ -) { - -2049 -AsyncBeProgssWkBa - * -wk - = - -2050 -ic_ -< -AsyncBeProgssWkBa -*>( -async --> -da -); - -2051 - gwk --> -WkProgss -(); - -2054 -le -  -AsyncClo_ -( -uv_hd_t -* -hd -) { - -2055 -AsyncBeProgssWkBa - * - gwk - = - -2056 -ic_ -< -AsyncBeProgssWkBa -*>( -hd --> -da -); - -2057 -de - - gwk -; - -2060 - geed -: - -2061 -uv_async_t - -async -; - -2064 - gme -< -ass - - gT -> - -2066 as - cAsyncBeProgssWk - : -public - -AsyncBeProgssWkBa - { - -2067 -public -: - -2068 -exic - -AsyncBeProgssWk -( - -2069 -Clback - * -back_ -, - -2070 cڡ * -sour_me - = "nan:AsyncBareProgressWorker") - -2071 : -AsyncBeProgssWkBa -( -back_ -, -sour_me -) { - -2072 -uv_mux_ -(& -async_lock -); - -2075 - gvtu - ~ -AsyncBeProgssWk -() { - -2076 -uv_mux_deroy -(& -async_lock -); - -2079 as - cExecutiProgss - { - -2080 -nd - -ass - - gAsyncBeProgssWk -; - -2081 - gpublic -: - -2082  -Sigl -() const { - -2083 -uv_mux_lock -(& -th_ --> -async_lock -); - -2084 -uv_async_nd -(& -th_ --> -async -); - -2085 -uv_mux_uock -(& -th_ --> -async_lock -); - -2088  -Sd -(cڡ -T -* -da -, -size_t - -cou -) const { - -2089 - gth_ --> -SdProgss_ -( -da -, -cou -); - -2092 - give -: - -2093 -exic - -ExecutiProgss -( -AsyncBeProgssWk - * -th -: -th_ -(that) {} - -2094 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -ExecutiProgss -) - -2095 -AsyncBeProgssWk -* cڡ -th_ -; - -2098 -vtu -  -Execu -(cڡ -ExecutiProgss -& -ogss -) = 0; - -2099 -vtu -  -HdProgssClback -(cڡ -T - * -da -, -size_t - -size -) = 0; - -2101 - geed -: - -2102 -uv_mux_t - -async_lock -; - -2104 - give -: - -2105  -Execu -() { - -2106 -ExecutiProgss - -ogss -( -this -); - -2107 -Execu -( -ogss -); - -2110 -vtu -  -SdProgss_ -(cڡ -T - * -da -, -size_t - -cou -) = 0; - -2113 - gme -< -ass - - gT -> - -2115 -ass - - gAsyncProgssWkBa - : -public - -AsyncBeProgssWk -< -T -> { - -2116 -public -: - -2117 -exic - -AsyncProgssWkBa -( - -2118 -Clback - * -back_ -, - -2119 cڡ * -sour_me - = "nan:AsyncProgressWorkerBase") - -2120 : -AsyncBeProgssWk -< -T ->( -back_ -, - gsour_me -), -asyncda_ -( -NULL -), - -2121 -asyncsize_ -(0) { - -2124 - gvtu - ~ -AsyncProgssWkBa -() { - -2125 - gde -[] - gasyncda_ -; - -2128  -WkProgss -() { - -2129 -uv_mux_lock -(& -this --> -async_lock -); - -2130 -T - * - gda - = -asyncda_ -; - -2131 -size_t - - gsize - = -asyncsize_ -; - -2132 - gasyncda_ - = -NULL -; - -2133 - gasyncsize_ - = 0; - -2134 -uv_mux_uock -(& -this --> -async_lock -); - -2137 i( - gthis --> - gback -) { - -2138 - gthis --> -HdProgssClback -( -da -, -size -); - -2140 - gde -[] - gda -; - -2143 - give -: - -2144  -SdProgss_ -(cڡ -T - * -da -, -size_t - -cou -) { - -2145 -T - * - gw_da - = -w - T[ -cou -]; - -2146 - gd -:: -cy -( -da -, d+ -cou -, -w_da -); - -2148 -uv_mux_lock -(& -this --> -async_lock -); - -2149 -T - * - gd_da - = -asyncda_ -; - -2150 - gasyncda_ - = -w_da -; - -2151 - gasyncsize_ - = -cou -; - -2152 -uv_async_nd -(& -this --> -async -); - -2153 -uv_mux_uock -(& -this --> -async_lock -); - -2155 - gde -[] - gd_da -; - -2158 -T - * - gasyncda_ -; - -2159 -size_t - - gasyncsize_ -; - -2164  - gAsyncProgssWkBa -<> - tAsyncProgssWk -; - -2166 - gme -< -ass - - gT -> - -2168 as - cAsyncBeProgssQueueWk - : -public - -AsyncBeProgssWkBa - { - -2169 -public -: - -2170 -exic - -AsyncBeProgssQueueWk -( - -2171 -Clback - * -back_ -, - -2172 cڡ * -sour_me - = "nan:AsyncBareProgressQueueWorker") - -2173 : -AsyncBeProgssWkBa -( -back_ -, -sour_me -) { - -2176 - gvtu - ~ -AsyncBeProgssQueueWk -() { - -2179 as - cExecutiProgss - { - -2180 -nd - -ass - - gAsyncBeProgssQueueWk -; - -2181 - gpublic -: - -2182  -Sd -(cڡ -T -* -da -, -size_t - -cou -) const { - -2183 - gth_ --> -SdProgss_ -( -da -, -cou -); - -2186 - give -: - -2187 -exic - -ExecutiProgss -( -AsyncBeProgssQueueWk - * -th -) - -2188 : -th_ -( -th -) {} - -2189 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -ExecutiProgss -) - -2190 -AsyncBeProgssQueueWk -* cڡ -th_ -; - -2193 -vtu -  -Execu -(cڡ -ExecutiProgss -& -ogss -) = 0; - -2194 -vtu -  -HdProgssClback -(cڡ -T - * -da -, -size_t - -size -) = 0; - -2196 - give -: - -2197  -Execu -() { - -2198 -ExecutiProgss - -ogss -( -this -); - -2199 -Execu -( -ogss -); - -2202 -vtu -  -SdProgss_ -(cڡ -T - * -da -, -size_t - -cou -) = 0; - -2205 - gme -< -ass - - gT -> - -2207 -ass - - gAsyncProgssQueueWk - : -public - -AsyncBeProgssQueueWk -< -T -> { - -2208 -public -: - -2209 -exic - -AsyncProgssQueueWk -( - -2210 -Clback - * -back_ -, - -2211 cڡ * -sour_me - = "nan:AsyncProgressQueueWorker") - -2212 : -AsyncBeProgssQueueWk -< -T ->( -back_ -) { - -2213 -uv_mux_ -(& -async_lock -); - -2216 - gvtu - ~ -AsyncProgssQueueWk -() { - -2217 -uv_mux_lock -(& -async_lock -); - -2219 ! - gasyncda_ -. -emy -()) { - -2220 - gd -:: - -< -T -*, - gsize_t -> & - gda - = -asyncda_ -. -t -(); - -2221 -T - * - gda - = -da -. -f -; - -2223 - gasyncda_ -. -p -(); - -2225 - gde -[] - gda -; - -2228 -uv_mux_uock -(& -async_lock -); - -2229 -uv_mux_deroy -(& -async_lock -); - -2232  -WkCome -() { - -2233 -WkProgss -(); - -2234 - gAsyncWk -:: -WkCome -(); - -2237  -WkProgss -() { - -2238 -uv_mux_lock -(& -async_lock -); - -2240 ! - gasyncda_ -. -emy -()) { - -2241 - gd -:: - -< -T -*, - gsize_t -> & - gda - = -asyncda_ -. -t -(); - -2243 -T - * - gda - = -da -. -f -; - -2244 -size_t - - gsize - = -da -. -cd -; - -2246 - gasyncda_ -. -p -(); - -2247 -uv_mux_uock -(& -async_lock -); - -2250 i( - gthis --> - gback -) { - -2251 - gthis --> -HdProgssClback -( -da -, -size -); - -2254 - gde -[] - gda -; - -2256 -uv_mux_lock -(& -async_lock -); - -2259 -uv_mux_uock -(& -async_lock -); - -2262 - give -: - -2263  -SdProgss_ -(cڡ -T - * -da -, -size_t - -cou -) { - -2264 -T - * - gw_da - = -w - T[ -cou -]; - -2265 - gd -:: -cy -( -da -, d+ -cou -, -w_da -); - -2267 -uv_mux_lock -(& -async_lock -); - -2268 - gasyncda_ -. -push -( -d -:: - -< -T -*, -size_t ->( -w_da -, -cou -)); - -2269 -uv_mux_uock -(& -async_lock -); - -2271 -uv_async_nd -(& -this --> -async -); - -2274 -uv_mux_t - - gasync_lock -; - -2275 - gd -:: -queue -< -d -:: - -< -T -*, - gsize_t -> > - gasyncda_ -; - -2278 -le -  - $AsyncExecu - ( -uv_wk_t -* -q -) { - -2279 -AsyncWk - * -wk - = -ic_ -( -q --> -da -); - -2280 -wk --> - `Execu -(); - -2281 - } -} - -2283 -le -  - $AsyncExecuCome - ( -uv_wk_t -* -q -) { - -2284 -AsyncWk -* -wk - = -ic_ -( -q --> -da -); - -2285 -wk --> - `WkCome -(); - -2286 -wk --> - `Deroy -(); - -2287 - } -} - -2289 -le -  - $AsyncQueueWk - ( -AsyncWk -* -wk -) { - -2290 - `uv_queue_wk -( - -2291 - `GCutEvtLo -() - -2292 , & -wk --> -que - - -2293 , -AsyncExecu - - -2294 , -t_ -< -uv_a_wk_cb ->( -AsyncExecuCome -) - -2296 - } -} - -2298 -mea - - gimp - { - -2300 -le - - -2301 -ExOBySgResour - const* - -2302 -GExResour -( -v8 -:: -Lol - -r -) { - -2303 #i -NODE_MODULE_VERSION - < -ATOM_0_21_MODULE_VERSION - - -2304  -r --> -GExAsciiSgResour -(); - -2306  - gr --> -GExOBySgResour -(); - -2310 -le - - -2311 -bo - - -2312 -IsEx -( -v8 -:: -Lol - -r -) { - -2313 #i -NODE_MODULE_VERSION - < -ATOM_0_21_MODULE_VERSION - - -2314  -r --> -IsExAscii -(); - -2316  - gr --> -IsExOBy -(); - -2322 - eEncodg - { - gASCII -, - gUTF8 -, - gBASE64 -, - gUCS2 -, - gBINARY -, - gHEX -, - gBUFFER -}; - -2324 #i -NODE_MODULE_VERSION - < -NODE_0_10_MODULE_VERSION - - -2325  - ~"n_rg_bys.h -" - -2328 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $Encode -( - -2329 cڡ * -buf -, -size_t - -n -, -Encodg - -codg - = -BINARY -) { - -2330 #i( -NODE_MODULE_VERSION - > -ATOM_0_21_MODULE_VERSION -) - -2331 -v8 -:: -Isީe -* -isީe - = v8::Isީe:: - `GCut -(); - -2332 -node -:: -codg - -node_c - = -ic_ -(encoding); - -2334 i( -codg - = -UCS2 -) { - -2335  -node -:: - `Encode -( - -2336 -isީe - - -2337 , -t_ -( -buf -) - -2338 , -n - / 2); - -2340  -node -:: - `Encode -( - -2341 -isީe - - -2342 , -t_ -( -buf -) - -2343 , -n - - -2344 , -node_c -); - -2346 #i( -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION -) - -2347  -node -:: - `Encode -( - -2348 -v8 -:: -Isީe -:: - `GCut -() - -2349 , -buf -, -n - - -2350 , -ic_ -< -node -:: -codg ->(encoding)); - -2352 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -2353  -node -:: - `Encode -( -buf -, -n -, -ic_ -(encoding)); - -2355  -imp -:: - `Encode -( -t_ -( -buf -), -n -, -codg -); - -2358 - } -} - -2360 -le - -ssize_t - -DecodeBys -( - -2361 -v8 -:: -Lol - -v -, -Encodg - -codg - = -BINARY -) { - -2362 #i( -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION -) - -2363  -node -:: -DecodeBys -( - -2364 -v8 -:: -Isީe -:: -GCut -() - -2365 , -v - - -2366 , -ic_ -< -node -:: -codg ->(encoding)); - -2368 #i( -NODE_MODULE_VERSION - < -NODE_0_10_MODULE_VERSION -) - -2369 i( - gcodg - = -BUFFER -) { - -2370  -node -:: -DecodeBys -( -v -,ode:: -BINARY -); - -2373  - gnode -:: -DecodeBys -( -v -, -ic_ -< -node -:: -codg ->(encoding)); - -2377 -le - -ssize_t - -DecodeWre -( - -2378 * -buf - - -2379 , -size_t - -n - - -2380 , -v8 -:: -Lol - -v - - -2381 , -Encodg - -codg - = -BINARY -) { - -2382 #i( -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION -) - -2383  -node -:: -DecodeWre -( - -2384 -v8 -:: -Isީe -:: -GCut -() - -2385 , -buf - - -2386 , -n - - -2387 , -v - - -2388 , -ic_ -< -node -:: -codg ->(encoding)); - -2390 #i( -NODE_MODULE_VERSION - < -NODE_0_10_MODULE_VERSION -) - -2391 i( - gcodg - = -BUFFER -) { - -2392  -node -:: -DecodeWre -( -buf -, -n -, -v -,ode:: -BINARY -); - -2395  - gnode -:: -DecodeWre -( - -2396 -buf - - -2397 , -n - - -2398 , -v - - -2399 , -ic_ -< -node -:: -codg ->(encoding)); - -2403 -le -  -SPryTeme -( - -2404 -v8 -:: -Lol - -m - - -2405 , cڡ * -me - - -2406 , -v8 -:: -Lol - -vue - - -2408 -HdSce - -sce -; - -2409 -STeme -( -m --> -PryTeme -(), -me -, -vue -); - -2412 -le -  -SPryTeme -( - -2413 -v8 -:: -Lol - -m - - -2414 , -v8 -:: -Lol - -me - - -2415 , -v8 -:: -Lol - -vue - - -2416 , -v8 -:: -PrݔtyAribu - -ibus - - -2418 -HdSce - -sce -; - -2419 -STeme -( -m --> -PryTeme -(), -me -, -vue -, -ibus -); - -2422 -le -  -SInTeme -( - -2423 -v8 -:: -Lol - -m - - -2424 , cڡ * -me - - -2425 , -v8 -:: -Lol - -vue - - -2427 -HdSce - -sce -; - -2428 -STeme -( -m --> -InTeme -(), -me -, -vue -); - -2431 -le -  -SInTeme -( - -2432 -v8 -:: -Lol - -m - - -2433 , -v8 -:: -Lol - -me - - -2434 , -v8 -:: -Lol - -vue - - -2435 , -v8 -:: -PrݔtyAribu - -ibus - - -2437 -HdSce - -sce -; - -2438 -STeme -( -m --> -InTeme -(), -me -, -vue -, -ibus -); - -2441 -mea - - gimp - { - -2447 - gme - < -tyme - - gT -> - -2448 -le - - -2450 -SMhodAux -( -T - -cv -, - -2451 -v8 -:: -Lol - -me -, - -2452 -v8 -:: -Lol - -l -, - -2453 -v8 -:: -Teme - *) { - -2454 -cv --> -S -( -me -, -l -); - -2457 - gme - < -tyme - - gT -> - -2458 -le - - -2460 -SMhodAux -( -T - -cv -, - -2461 -v8 -:: -Lol - -me -, - -2462 -v8 -:: -Lol - -l -, - -2464 -S -( -cv -, -me -, -GFuni -( -l -). -ToLolChecked -()); - -2469 - gme - < -tyme - - gT -,em< - gtyme -> -ass - - gHdTy -> - -2470 -le -  -SMhod -( - -2471 -HdTy -< -T -> -cv - - -2472 , cڡ * -me - - -2473 , -FuniClback - -back - - -2474 , -v8 -:: -Lol - -da - = v8::Local()) { - -2475 -HdSce - -sce -; - -2476 - gv8 -:: -Lol -< -v8 -:: -FuniTeme -> -t - = -New -( -back -, - gda -); - -2477 - gv8 -:: -Lol -< -v8 -:: -Sg -> -_me - = -New -( -me -). -ToLolChecked -(); - -2478 - gt --> -SCssName -( -_me -); - -2481 - gimp -:: -SMhodAux -( -cv -, -_me -, -t -, -ic_ -< -T -*>(0)); - -2484 -le -  -SPryMhod -( - -2485 -v8 -:: -Lol - -cv - - -2486 , cڡ * -me - - -2487 , -FuniClback - -back - - -2488 , -v8 -:: -Lol - -da - = v8::Local()) { - -2489 -HdSce - -sce -; - -2490 - gv8 -:: -Lol -< -v8 -:: -FuniTeme -> -t - = -New -( - -2491 -back - - -2492 , - gda - - -2493 , - gNew -< - gv8 -:: -Sigtu ->( -cv -)); - -2494 - gv8 -:: -Lol -< -v8 -:: -Sg -> -_me - = -New -( -me -). -ToLolChecked -(); - -2495 - gcv --> -PryTeme -()-> -S -( -_me -, -t -); - -2496 - gt --> -SCssName -( -_me -); - -2501 -le -  -SAcss -( - -2502 -v8 -:: -Lol - -l - - -2503 , -v8 -:: -Lol - -me - - -2504 , -GrClback - -gr - - -2505 , -SrClback - - - = 0 - -2506 , -v8 -:: -Lol - -da - = v8::Local() - -2507 , -v8 -:: -AcssCڌ - -gs - = v8:: -DEFAULT - - -2508 , -v8 -:: -PrݔtyAribu - -ibu - = v8:: -Ne - - -2509 , -imp -:: -Sig - -sigtu - = imp:: - $Sig -()) { - -2510 -HdSce - -sce -; - -2512 -imp -:: -NiveGr - -gr_ - = - -2513 -imp -:: -GrClbackW -; - -2514 -imp -:: -NiveSr - -_ - = - -2515 - - ? -imp -:: -SrClbackW - : 0; - -2517 -v8 -:: -Lol - -ٶ - = -New -(); - -2518 -ٶ --> - `SIlFldCou -( -imp -:: -kAcssFldCou -); - -2519 -v8 -:: -Lol - -obj - = - `NewIn -( -ٶ -). - `ToLolChecked -(); - -2521 -obj --> - `SIlFld -( - -2522 -imp -:: -kGrIndex - - -2523 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -gr -))); - -2525 i( - - != 0) { - -2526 -obj --> - `SIlFld -( - -2527 -imp -:: -kSrIndex - - -2528 , -New -< -v8 -:: -Ex ->( -t_ -<*>( - -))); - -2531 i(! -da -. - `IsEmy -()) { - -2532 -obj --> - `SIlFld -( -imp -:: -kDaIndex -, -da -); - -2535 -l --> - `SAcss -( - -2536 -me - - -2537 , -gr_ - - -2538 , -_ - - -2539 , -obj - - -2540 , -gs - - -2541 , -ibu - - -2542 , -sigtu -); - -2543 - } -} - -2545 -le - -bo - -SAcss -( - -2546 -v8 -:: -Lol - -obj - - -2547 , -v8 -:: -Lol - -me - - -2548 , -GrClback - -gr - - -2549 , -SrClback - - - = 0 - -2550 , -v8 -:: -Lol - -da - = v8::Local() - -2551 , -v8 -:: -AcssCڌ - -gs - = v8:: -DEFAULT - - -2552 , -v8 -:: -PrݔtyAribu - -ibu - = v8:: -Ne -) { - -2553 -HdSce - -sce -; - -2555 - gimp -:: -NiveGr - -gr_ - = - -2556 -imp -:: -GrClbackW -; - -2557 - gimp -:: -NiveSr - -_ - = - -2558 - - ? -imp -:: -SrClbackW - : 0; - -2560 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -ٶ - = -New -(); - -2561 - gٶ --> -SIlFldCou -( -imp -:: -kAcssFldCou -); - -2562 - gv8 -:: -Lol -< -v8 -:: -Obje -> -daobj - = -NewIn -( -ٶ -). -ToLolChecked -(); - -2564 - gdaobj --> -SIlFld -( - -2565 -imp -:: -kGrIndex - - -2566 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -gr -))); - -2568 i(! - gda -. -IsEmy -()) { - -2569 - gdaobj --> -SIlFld -( -imp -:: -kDaIndex -, -da -); - -2572 i( - g -) { - -2573 - gdaobj --> -SIlFld -( - -2574 -imp -:: -kSrIndex - - -2575 , -New -< -v8 -:: -Ex ->( -t_ -<*>( - -))); - -2578 #i( -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION -) - -2579  - gobj --> -SAcss -( - -2580 -GCutCڋxt -() - -2581 , -me - - -2582 , -gr_ - - -2583 , -_ - - -2584 , -daobj - - -2585 , -gs - - -2586 , -ibu -). -FromMaybe -( -l -); - -2588  - gobj --> -SAcss -( - -2589 -me - - -2590 , -gr_ - - -2591 , -_ - - -2592 , -daobj - - -2593 , -gs - - -2594 , -ibu -); - -2598 -le -  -SNamedPrݔtyHdr -( - -2599 -v8 -:: -Lol - -l - - -2600 , -PrݔtyGrClback - -gr - - -2601 , -PrݔtySrClback - - - = 0 - -2602 , -PrݔtyQuyClback - -quy - = 0 - -2603 , -PrݔtyDClback - -d - = 0 - -2604 , -PrݔtyEnumClback - -um - = 0 - -2605 , -v8 -:: -Lol - -da - = v8::Local()) { - -2606 -HdSce - -sce -; - -2608 - gimp -:: -NivePrݔtyGr - -gr_ - = - -2609 -imp -:: -PrݔtyGrClbackW -; - -2610 - gimp -:: -NivePrݔtySr - -_ - = - -2611 - - ? -imp -:: -PrݔtySrClbackW - : 0; - -2612 - gimp -:: -NivePrݔtyQuy - -quy_ - = - -2613 -quy - ? -imp -:: -PrݔtyQuyClbackW - : 0; - -2614 - gimp -:: -NivePrݔtyD - * -d_ - = - -2615 -d - ? -imp -:: -PrݔtyDClbackW - : 0; - -2616 - gimp -:: -NivePrݔtyEnum - -um_ - = - -2617 -um - ? -imp -:: -PrݔtyEnumClbackW - : 0; - -2619 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -ٶ - = -New -(); - -2620 - gٶ --> -SIlFldCou -( -imp -:: -kPrݔtyFldCou -); - -2621 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -NewIn -( -ٶ -). -ToLolChecked -(); - -2622 - gobj --> -SIlFld -( - -2623 -imp -:: -kPrݔtyGrIndex - - -2624 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -gr -))); - -2626 i( - g -) { - -2627 - gobj --> -SIlFld -( - -2628 -imp -:: -kPrݔtySrIndex - - -2629 , -New -< -v8 -:: -Ex ->( -t_ -<*>( - -))); - -2632 i( - gquy -) { - -2633 - gobj --> -SIlFld -( - -2634 -imp -:: -kPrݔtyQuyIndex - - -2635 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -quy -))); - -2638 i( - gd -) { - -2639 - gobj --> -SIlFld -( - -2640 -imp -:: -kPrݔtyDIndex - - -2641 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -d -))); - -2644 i( - gum -) { - -2645 - gobj --> -SIlFld -( - -2646 -imp -:: -kPrݔtyEnumIndex - - -2647 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -um -))); - -2650 i(! - gda -. -IsEmy -()) { - -2651 - gobj --> -SIlFld -( -imp -:: -kDaIndex -, -da -); - -2654 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -2655 - gl --> -SHdr -( -v8 -:: -NamedPrݔtyHdrCfiguti -( - -2656 -gr_ -, -_ -, -quy_ -, -d_ -, -um_ -, -obj -)); - -2658 - gl --> -SNamedPrݔtyHdr -( - -2659 -gr_ - - -2660 , -_ - - -2661 , -quy_ - - -2662 , -d_ - - -2663 , -um_ - - -2664 , -obj -); - -2668 -le -  -SIndexedPrݔtyHdr -( - -2669 -v8 -:: -Lol - -l - - -2670 , -IndexGrClback - -gr - - -2671 , -IndexSrClback - - - = 0 - -2672 , -IndexQuyClback - -quy - = 0 - -2673 , -IndexDClback - -d - = 0 - -2674 , -IndexEnumClback - -um - = 0 - -2675 , -v8 -:: -Lol - -da - = v8::Local()) { - -2676 -HdSce - -sce -; - -2678 - gimp -:: -NiveIndexGr - -gr_ - = - -2679 -imp -:: -IndexGrClbackW -; - -2680 - gimp -:: -NiveIndexSr - -_ - = - -2681 - - ? -imp -:: -IndexSrClbackW - : 0; - -2682 - gimp -:: -NiveIndexQuy - -quy_ - = - -2683 -quy - ? -imp -:: -IndexQuyClbackW - : 0; - -2684 - gimp -:: -NiveIndexD - -d_ - = - -2685 -d - ? -imp -:: -IndexDClbackW - : 0; - -2686 - gimp -:: -NiveIndexEnum - -um_ - = - -2687 -um - ? -imp -:: -IndexEnumClbackW - : 0; - -2689 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -ٶ - = -New -(); - -2690 - gٶ --> -SIlFldCou -( -imp -:: -kIndexPrݔtyFldCou -); - -2691 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -NewIn -( -ٶ -). -ToLolChecked -(); - -2692 - gobj --> -SIlFld -( - -2693 -imp -:: -kIndexPrݔtyGrIndex - - -2694 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -gr -))); - -2696 i( - g -) { - -2697 - gobj --> -SIlFld -( - -2698 -imp -:: -kIndexPrݔtySrIndex - - -2699 , -New -< -v8 -:: -Ex ->( -t_ -<*>( - -))); - -2702 i( - gquy -) { - -2703 - gobj --> -SIlFld -( - -2704 -imp -:: -kIndexPrݔtyQuyIndex - - -2705 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -quy -))); - -2708 i( - gd -) { - -2709 - gobj --> -SIlFld -( - -2710 -imp -:: -kIndexPrݔtyDIndex - - -2711 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -d -))); - -2714 i( - gum -) { - -2715 - gobj --> -SIlFld -( - -2716 -imp -:: -kIndexPrݔtyEnumIndex - - -2717 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -um -))); - -2720 i(! - gda -. -IsEmy -()) { - -2721 - gobj --> -SIlFld -( -imp -:: -kDaIndex -, -da -); - -2724 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -2725 - gl --> -SHdr -( -v8 -:: -IndexedPrݔtyHdrCfiguti -( - -2726 -gr_ -, -_ -, -quy_ -, -d_ -, -um_ -, -obj -)); - -2728 - gl --> -SIndexedPrݔtyHdr -( - -2729 -gr_ - - -2730 , -_ - - -2731 , -quy_ - - -2732 , -d_ - - -2733 , -um_ - - -2734 , -obj -); - -2738 -le -  -SClHdr -( - -2739 -v8 -:: -Lol - -l - - -2740 , -FuniClback - -back - - -2741 , -v8 -:: -Lol - -da - = v8::Local()) { - -2742 -HdSce - -sce -; - -2744 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -ٶ - = -New -(); - -2745 - gٶ --> -SIlFldCou -( -imp -:: -kFuniFldCou -); - -2746 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -NewIn -( -ٶ -). -ToLolChecked -(); - -2748 - gobj --> -SIlFld -( - -2749 -imp -:: -kFuniIndex - - -2750 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -back -))); - -2752 i(! - gda -. -IsEmy -()) { - -2753 - gobj --> -SIlFld -( -imp -:: -kDaIndex -, -da -); - -2756 - gl --> -SClHdr -( -imp -:: -FuniClbackW -, -obj -); - -2760 -le -  -SClAsFuniHdr -( - -2761 -v8 -:: -Lol - -l -, - -2762 -FuniClback - -back -, - -2763 -v8 -:: -Lol - -da - = v8::Local()) { - -2764 -HdSce - -sce -; - -2766 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -ٶ - = -New -(); - -2767 - gٶ --> -SIlFldCou -( -imp -:: -kFuniFldCou -); - -2768 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -NewIn -( -ٶ -). -ToLolChecked -(); - -2770 - gobj --> -SIlFld -( - -2771 -imp -:: -kFuniIndex - - -2772 , -New -< -v8 -:: -Ex ->( -t_ -<*>( -back -))); - -2774 i(! - gda -. -IsEmy -()) { - -2775 - gobj --> -SIlFld -( -imp -:: -kDaIndex -, -da -); - -2778 - gl --> -SClAsFuniHdr -( -imp -:: -FuniClbackW -, -obj -); - -2783  - ~"n_wk.h -" - -2787  - ~"n_obje_wp.h -" - -2791  - ~"n_ive.h -" - -2795 -le - - -2797 - $Expt -( -ADDON_REGISTER_FUNCTION_ARGS_TYPE - -rg -, cڡ * -me -, - -2798 -FuniClback - -f -) { - -2799 -HdSce - -sce -; - -2801 - `S -( -rg -, -New -< -v8 -:: -Sg ->( -me -). - `ToLolChecked -(), - -2802 - `GFuni -( -New -< -v8 -:: -FuniTeme ->( -f -)). - `ToLolChecked -()); - -2803 - } -} - -2807  - sT - { - -2808 -exic - -T -( -v8 -:: -Lol - -t -: -t_ -() { - -2809 -HdSce - -sce -; - -2811 - gt_ -. -Ret -( -To -< -v8 -:: -Obje ->( -t -). -ToLolChecked -()); - -2814 ~ -T -({ - gt_ -. -Ret -(); } - -2816 -le -  - -( -i -) { - -2817 -HdSce - - gsce -; - -2818 - gv8 -:: -Lol -< -v8 -:: -Vue -> -g - = -New -( -i -); - -2819 -Cl -("", -New -( -t_ -), 1, & -g -); - -2822 -le -  -ok -( -bo - -isOk -, cڡ * -msg - = -NULL -) { - -2823 -HdSce - -sce -; - -2824 - gv8 -:: -Lol -< -v8 -:: -Vue -> -gs -[2]; - -2825 - ggs -[0] = -New -( -isOk -); - -2826 i( - gmsg - - ggs -[1] = -New -( -msg -). -ToLolChecked -(); - -2827 -Cl -("ok", -New -( -t_ -), -msg - ? 2 : 1, -gs -); - -2830 -le -  -ss -(cڡ * -msg - = -NULL -) { - -2831 -HdSce - -sce -; - -2832 - gv8 -:: -Lol -< -v8 -:: -Vue -> -hmsg -; - -2833 i( - gmsg - - ghmsg - = -New -( -msg -). -ToLolChecked -(); - -2834 -Cl -("ss", -New -( -t_ -), -msg - ? 1 : 0, & -hmsg -); - -2837 -le -  -d -() { - -2838 -HdSce - - gsce -; - -2839 -Cl -("d", -New -( -t_ -), 0, -NULL -); - -2842 - give -: - -2843 -Psit -< -v8 -:: -Obje -> -t_ -; - -2846  - #NAN_STRINGIZE2 -( -x -#x - - ) - -2847  - #NAN_STRINGIZE -( -x - - $NAN_STRINGIZE2 -( -x -) - - ) - -2848  - #NAN_TEST_EXPRESSION -( -exessi -) \ - -2849 -exessi - ), -__FILE__ - ":" - `NAN_STRINGIZE -( -__LINE__ -": " #exessi - - ) - -2851  - #NAN_EXPORT -( -rg -, -funi - - `Expt -Ѭg, #funi, funi) - - ) - -2853 #unde -TYPE_CHECK - - -2857 -mea - -imp - { - -2859 -me - < -tyme - -T ->  -Maybefr -; - -2861 -me - < -tyme - -T ->  -Maybefr -< -v8 -:: -Lol - > { - -2862 -le -  -MaybeLol -< -T -> - `cvt -( -v8 -:: -Lol - -v -) { - -2863  -v -; - -2867 -me - < -tyme - -T ->  -Maybefr -< -MaybeLol - > { - -2868 -le -  -MaybeLol -< -T -> - `cvt -(MaybeLol -v -) { - -2869  -v -; - -2873 - } -} - -2875 - gme - < -tyme - - gT -,em< - gtyme -> -ass - - gMaybeMaybe -> - -2876 -le - - gMaybeLol -< - gT -> - -2877 -MakeMaybe -( -MaybeMaybe -< -T -> -v -) { - -2878  - gimp -:: -Maybefr -< -MaybeMaybe -< -T -> >:: -cvt -( -v -); - -2883  - ~"n_tydy_cڋs.h -" - -2887  - ~"n_js.h -" - - @interface/node_modules/nan/nan_callbacks.h - -9 #ide -NAN_CALLBACKS_H_ - - -10  - #NAN_CALLBACKS_H_ - - - ) - -12 - gme -< -tyme - - gT -> -ass - - gFuniClbackInfo -; - -13 - gme -< -tyme - - gT -> -ass - - gPrݔtyClbackInfo -; - -14 - gme -< -tyme - - gT -> -ass - - gGlob -; - -16 (* - tFuniClback -)(cڡ - tFuniClbackInfo -< - tv8 -:: - tVue ->&); - -17 (* - tGrClback -) - -18 ( - tv8 -:: - tLol -, cڡ - tPrݔtyClbackInfo -&); - -19 (* - tSrClback -)( - -20 - tv8 -:: - tLol -, - -21 - tv8 -:: - tLol -, - -22 cڡ - tPrݔtyClbackInfo -<>&); - -23 (* - tPrݔtyGrClback -)( - -24 - tv8 -:: - tLol -, - -25 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->&); - -26 (* - tPrݔtySrClback -)( - -27 - tv8 -:: - tLol -, - -28 - tv8 -:: - tLol -, - -29 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->&); - -30 (* - tPrݔtyEnumClback -) - -31 (cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tAay ->&); - -32 (* - tPrݔtyDClback -)( - -33 - tv8 -:: - tLol -, - -34 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tBoޗn ->&); - -35 (* - tPrݔtyQuyClback -)( - -36 - tv8 -:: - tLol -, - -37 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tIeg ->&); - -38 (* - tIndexGrClback -)( - -39 - tut32_t -, - -40 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->&); - -41 (* - tIndexSrClback -)( - -42 - tut32_t -, - -43 - tv8 -:: - tLol -, - -44 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tVue ->&); - -45 (* - tIndexEnumClback -) - -46 (cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tAay ->&); - -47 (* - tIndexDClback -)( - -48 - tut32_t -, - -49 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tBoޗn ->&); - -50 (* - tIndexQuyClback -)( - -51 - tut32_t -, - -52 cڡ - tPrݔtyClbackInfo -< - tv8 -:: - tIeg ->&); - -54 -mea - -imp - { - -55  -v8 -:: - tLol -< - tv8 -:: - tAcssSigtu -> - tSig -; - -57 cڡ  -kDaIndex - = 0; - -59 cڡ  -kFuniIndex - = 1; - -60 cڡ  -kFuniFldCou - = 2; - -62 cڡ  -kGrIndex - = 1; - -63 cڡ  -kSrIndex - = 2; - -64 cڡ  -kAcssFldCou - = 3; - -66 cڡ  -kPrݔtyGrIndex - = 1; - -67 cڡ  -kPrݔtySrIndex - = 2; - -68 cڡ  -kPrݔtyEnumIndex - = 3; - -69 cڡ  -kPrݔtyDIndex - = 4; - -70 cڡ  -kPrݔtyQuyIndex - = 5; - -71 cڡ  -kPrݔtyFldCou - = 6; - -73 cڡ  -kIndexPrݔtyGrIndex - = 1; - -74 cڡ  -kIndexPrݔtySrIndex - = 2; - -75 cڡ  -kIndexPrݔtyEnumIndex - = 3; - -76 cڡ  -kIndexPrݔtyDIndex - = 4; - -77 cڡ  -kIndexPrݔtyQuyIndex - = 5; - -78 cڡ  -kIndexPrݔtyFldCou - = 6; - -80 - } -} - -82 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -83  - ~"n_backs_12_l.h -" - -85  - ~"n_backs_e_12_l.h -" - - @interface/node_modules/nan/nan_callbacks_12_inl.h - -9 #ide -NAN_CALLBACKS_12_INL_H_ - - -10  - #NAN_CALLBACKS_12_INL_H_ - - - ) - -12 - gme -< -tyme - - gT -> - -13 as - cRuVue - { - -14 - mv8 -:: -RuVue -< -T -> -vue_ -; - -16 - mpublic -: - -17 -me - < -ass - -S -> - -18 -exic - -le - -RuVue -(cڡ -v8 -::RuVue< -S -> & -vue -) : - -19 - $vue_ -( -vue -) {} - -20 -me - < -ass - -S -> - -21 -exic - -le - - `RuVue -(cڡ -RuVue -< -S ->& -th -) - -22 : - $vue_ -( -th -. -vue_ -) { - -23 - `TYPE_CHECK -( -T -, -S -); - -24 - } -} - -27 - gme - < -tyme - - gS -> -le -  -S -(cڡ -v8 -:: -Lol -< -S -> & -hd -) { - -28 -TYPE_CHECK -( -T -, -S -); - -29 - gvue_ -. -S -( -hd -); - -32 - gme - < -tyme - - gS -> -le -  -S -(cڡ -Glob -< -S -> & -hd -) { - -33 -TYPE_CHECK -( -T -, -S -); - -34 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -35 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && \ - -36 ( -V8_MINOR_VERSION - > 5 || (V8_MINOR_VERSION == 5 && \ - -37 -defed -( -V8_BUILD_NUMBER -) && V8_BUILD_NUMBER >= 8)))) - -38 -vue_ -. -S -( -hd -); - -40 - gvue_ -. -S -(* -t_ -*>(& -hd -)); - -41 - gcڡ_ -< - gGlob -< - gS -> &>( - ghd -). -Ret -(); - -46 -le -  - $S -( -bo - -vue -) { - -47 - `TYPE_CHECK -( -T -, -v8 -:: -Boޗn -); - -48 -vue_ -. - `S -( -vue -); - -49 - } -} - -51 -le -  - $S -( -i -) { - -52 - `TYPE_CHECK -( -T -, -v8 -:: -Numb -); - -53 -vue_ -. - `S -( -i -); - -54 - } -} - -56 -le -  - $S -( -t32_t - -i -) { - -57 - `TYPE_CHECK -( -T -, -v8 -:: -Ieg -); - -58 -vue_ -. - `S -( -i -); - -59 - } -} - -61 -le -  - $S -( -ut32_t - -i -) { - -62 - `TYPE_CHECK -( -T -, -v8 -:: -Ieg -); - -63 -vue_ -. - `S -( -i -); - -64 - } -} - -67 -le -  - $SNu -() { - -68 - `TYPE_CHECK -( -T -, -v8 -:: -Primive -); - -69 -vue_ -. - `SNu -(); - -70 - } -} - -72 -le -  - $SUndefed -() { - -73 - `TYPE_CHECK -( -T -, -v8 -:: -Primive -); - -74 -vue_ -. - `SUndefed -(); - -75 - } -} - -77 -le -  - $SEmySg -() { - -78 - `TYPE_CHECK -( -T -, -v8 -:: -Sg -); - -79 -vue_ -. - `SEmySg -(); - -80 - } -} - -83 -le - - gv8 -:: -Isީe - * - $GIsީe -() const { - -84  -vue_ -. - `GIsީe -(); - -85 - } -} - -88 - gme -< -tyme - - gS -> - -89 -le -  - $S -( -S - * -whev -{ - `TYPE_CHECK -(S*, -v8 -:: -Primive -); - } -} - -92 - gme -< -tyme - - gT -> - -93 as - cFuniClbackInfo - { - -94 cڡ - mv8 -:: -FuniClbackInfo -< -T -> & -fo_ -; - -95 cڡ - mv8 -:: -Lol -< -v8 -:: -Vue -> -da_ -; - -97 - mpublic -: - -98 -exic - -le - -FuniClbackInfo -( - -99 cڡ -v8 -:: -FuniClbackInfo -< -T -> & -fo - - -100 , -v8 -:: -Lol - -da -) : - -101 -fo_ -( -fo -) - -102 , - $da_ -( -da -) {} - -104 -le - -RuVue -< -T -> - $GRuVue -() const { - -105  -RuVue -< -T ->( -fo_ -. - `GRuVue -()); - -106 - } -} - -108 #i -NODE_MAJOR_VERSION - < 10 - -109 -le - - gv8 -:: -Lol -< -v8 -:: -Funi -> - $Ce -(cڡ {  -fo_ -. - `Ce -(); - } -} - -111 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $Da -(cڡ {  -da_ -; - } -} - -112 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $Hd -(cڡ {  -fo_ -. - `Hd -(); - } -} - -113 -le - -bo - - $IsCڡruCl -(cڡ {  -fo_ -. - `IsCڡruCl -(); - } -} - -114 -le -  - $Lgth -(cڡ {  -fo_ -. - `Lgth -(); - } -} - -115 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -ݔ -[]( -i -cڡ {  -fo_ -[i]; } - -116 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $This -(cڡ {  -fo_ -. - `This -(); - } -} - -117 -le - - gv8 -:: -Isީe - * - $GIsީe -(cڡ {  -fo_ -. - `GIsީe -(); - } -} - -120 - geed -: - -121 cڡ  -kHdIndex - = 0; - -122 cڡ  - gkIsީeIndex - = 1; - -123 cڡ  - gkRuVueDeuVueIndex - = 2; - -124 cڡ  - gkRuVueIndex - = 3; - -125 cڡ  - gkDaIndex - = 4; - -126 cڡ  - gkCeIndex - = 5; - -127 cڡ  - gkCڋxtSaveIndex - = 6; - -128 cڡ  - gkArgsLgth - = 7; - -130 - give -: - -131 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -FuniClbackInfo -) - -134 - gme -< -tyme - - gT -> - -135 as - cPrݔtyClbackInfo - { - -136 cڡ - mv8 -:: -PrݔtyClbackInfo -< -T -> & -fo_ -; - -137 cڡ - mv8 -:: -Lol -< -v8 -:: -Vue -> -da_ -; - -139 - mpublic -: - -140 -exic - -le - -PrݔtyClbackInfo -( - -141 cڡ -v8 -:: -PrݔtyClbackInfo -< -T -> & -fo - - -142 , cڡ -v8 -:: -Lol - -da -) : - -143 -fo_ -( -fo -) - -144 , - $da_ -( -da -) {} - -146 -le - -v8 -:: -Isީe -* - $GIsީe -(cڡ {  -fo_ -. - `GIsީe -(); - } -} - -147 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $Da -(cڡ {  -da_ -; - } -} - -148 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $This -(cڡ {  -fo_ -. - `This -(); - } -} - -149 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $Hd -(cڡ {  -fo_ -. - `Hd -(); - } -} - -150 -le - - gRuVue -< - gT -> - $GRuVue -() const { - -151  -RuVue -< -T ->( -fo_ -. - `GRuVue -()); - -152 - } -} - -154 - geed -: - -155 cڡ  -kHdIndex - = 0; - -156 cڡ  - gkIsީeIndex - = 1; - -157 cڡ  - gkRuVueDeuVueIndex - = 2; - -158 cڡ  - gkRuVueIndex - = 3; - -159 cڡ  - gkDaIndex - = 4; - -160 cڡ  - gkThisIndex - = 5; - -161 cڡ  - gkArgsLgth - = 6; - -163 - give -: - -164 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -PrݔtyClbackInfo -) - -167 -mea - - gimp - { - -169  -FuniClbackW -(cڡ -v8 -:: -FuniClbackInfo - & -fo -) { - -170 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -171 -FuniClback - - gback - = -t_ -( - -172 -t_ -< -_t ->( - -173 -obj --> -GIlFld -( -kFuniIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -174 - gFuniClbackInfo -< - gv8 -:: -Vue -> - -175 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -176 -back -( -cbfo -); - -179 (* - gNiveFuni -)(cڡ - tv8 -:: - tFuniClbackInfo - &); - -181 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -183  -GrClbackW -( - -184 -v8 -:: -Lol - -ݔty - - -185 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -186 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -187 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -188 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -189 -GrClback - - gback - = -t_ -( - -190 -t_ -< -_t ->( - -191 -obj --> -GIlFld -( -kGrIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -192 -back -( -ݔty -. -As -< -v8 -:: -Sg ->(), -cbfo -); - -195 (* - gNiveGr -) - -196 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -199  -SrClbackW -( - -200 -v8 -:: -Lol - -ݔty - - -201 , -v8 -:: -Lol - -vue - - -202 , cڡ -v8 -:: -PrݔtyClbackInfo -<> & -fo -) { - -203 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -204 - gPrݔtyClbackInfo -<> - -205 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -206 -SrClback - - gback - = -t_ -( - -207 -t_ -< -_t ->( - -208 -obj --> -GIlFld -( -kSrIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -209 -back -( -ݔty -. -As -< -v8 -:: -Sg ->(), -vue -, -cbfo -); - -212 (* - gNiveSr -)( - -213 - tv8 -:: - tLol - - -214 , - tv8 -:: - tLol - - -215 , cڡ - tv8 -:: - tPrݔtyClbackInfo -<> &); - -218  -GrClbackW -( - -219 -v8 -:: -Lol - -ݔty - - -220 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -221 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -222 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -223 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -224 -GrClback - - gback - = -t_ -( - -225 -t_ -< -_t ->( - -226 -obj --> -GIlFld -( -kGrIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -227 -back -( -ݔty -, -cbfo -); - -230 (* - gNiveGr -) - -231 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -234  -SrClbackW -( - -235 -v8 -:: -Lol - -ݔty - - -236 , -v8 -:: -Lol - -vue - - -237 , cڡ -v8 -:: -PrݔtyClbackInfo -<> & -fo -) { - -238 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -239 - gPrݔtyClbackInfo -<> - -240 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -241 -SrClback - - gback - = -t_ -( - -242 -t_ -< -_t ->( - -243 -obj --> -GIlFld -( -kSrIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -244 -back -( -ݔty -, -vue -, -cbfo -); - -247 (* - gNiveSr -)( - -248 - tv8 -:: - tLol - - -249 , - tv8 -:: - tLol - - -250 , cڡ - tv8 -:: - tPrݔtyClbackInfo -<> &); - -253 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -255  -PrݔtyGrClbackW -( - -256 -v8 -:: -Lol - -ݔty - - -257 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -258 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -259 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -260 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -261 -PrݔtyGrClback - - gback - = -t_ -( - -262 -t_ -< -_t ->( - -263 -obj --> -GIlFld -( -kPrݔtyGrIndex -) - -264 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -265 -back -( -ݔty -. -As -< -v8 -:: -Sg ->(), -cbfo -); - -268 (* - gNivePrݔtyGr -) - -269 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -272  -PrݔtySrClbackW -( - -273 -v8 -:: -Lol - -ݔty - - -274 , -v8 -:: -Lol - -vue - - -275 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -276 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -277 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -278 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -279 -PrݔtySrClback - - gback - = -t_ -( - -280 -t_ -< -_t ->( - -281 -obj --> -GIlFld -( -kPrݔtySrIndex -) - -282 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -283 -back -( -ݔty -. -As -< -v8 -:: -Sg ->(), -vue -, -cbfo -); - -286 (* - gNivePrݔtySr -)( - -287 - tv8 -:: - tLol - - -288 , - tv8 -:: - tLol - - -289 , cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -292  -PrݔtyEnumClbackW -( - -293 cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -294 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -295 - gPrݔtyClbackInfo -< - gv8 -:: -Aay -> - -296 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -297 -PrݔtyEnumClback - - gback - = - -298 -t_ -< -PrݔtyEnumClback ->et_< -_t ->( - -299 -obj --> -GIlFld -( -kPrݔtyEnumIndex -) - -300 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -301 -back -( -cbfo -); - -304 (* - gNivePrݔtyEnum -) - -305 (cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -308  -PrݔtyDClbackW -( - -309 -v8 -:: -Lol - -ݔty - - -310 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -311 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -312 - gPrݔtyClbackInfo -< - gv8 -:: -Boޗn -> - -313 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -314 -PrݔtyDClback - - gback - = -t_ -( - -315 -t_ -< -_t ->( - -316 -obj --> -GIlFld -( -kPrݔtyDIndex -) - -317 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -318 -back -( -ݔty -. -As -< -v8 -:: -Sg ->(), -cbfo -); - -321 ( - gNivePrݔtyD -) - -322 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -325  -PrݔtyQuyClbackW -( - -326 -v8 -:: -Lol - -ݔty - - -327 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -328 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -329 - gPrݔtyClbackInfo -< - gv8 -:: -Ieg -> - -330 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -331 -PrݔtyQuyClback - - gback - = -t_ -( - -332 -t_ -< -_t ->( - -333 -obj --> -GIlFld -( -kPrݔtyQuyIndex -) - -334 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -335 -back -( -ݔty -. -As -< -v8 -:: -Sg ->(), -cbfo -); - -338 (* - gNivePrݔtyQuy -) - -339 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -342  -PrݔtyGrClbackW -( - -343 -v8 -:: -Lol - -ݔty - - -344 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -345 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -346 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -347 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -348 -PrݔtyGrClback - - gback - = -t_ -( - -349 -t_ -< -_t ->( - -350 -obj --> -GIlFld -( -kPrݔtyGrIndex -) - -351 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -352 -back -( -ݔty -, -cbfo -); - -355 (* - gNivePrݔtyGr -) - -356 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -359  -PrݔtySrClbackW -( - -360 -v8 -:: -Lol - -ݔty - - -361 , -v8 -:: -Lol - -vue - - -362 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -363 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -364 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -365 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -366 -PrݔtySrClback - - gback - = -t_ -( - -367 -t_ -< -_t ->( - -368 -obj --> -GIlFld -( -kPrݔtySrIndex -) - -369 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -370 -back -( -ݔty -, -vue -, -cbfo -); - -373 (* - gNivePrݔtySr -)( - -374 - tv8 -:: - tLol - - -375 , - tv8 -:: - tLol - - -376 , cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -379  -PrݔtyEnumClbackW -( - -380 cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -381 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -382 - gPrݔtyClbackInfo -< - gv8 -:: -Aay -> - -383 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -384 -PrݔtyEnumClback - - gback - = - -385 -t_ -< -PrݔtyEnumClback ->et_< -_t ->( - -386 -obj --> -GIlFld -( -kPrݔtyEnumIndex -) - -387 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -388 -back -( -cbfo -); - -391 (* - gNivePrݔtyEnum -) - -392 (cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -395  -PrݔtyDClbackW -( - -396 -v8 -:: -Lol - -ݔty - - -397 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -398 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -399 - gPrݔtyClbackInfo -< - gv8 -:: -Boޗn -> - -400 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -401 -PrݔtyDClback - - gback - = -t_ -( - -402 -t_ -< -_t ->( - -403 -obj --> -GIlFld -( -kPrݔtyDIndex -) - -404 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -405 -back -( -ݔty -, -cbfo -); - -408 ( - gNivePrݔtyD -) - -409 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -412  -PrݔtyQuyClbackW -( - -413 -v8 -:: -Lol - -ݔty - - -414 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -415 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -416 - gPrݔtyClbackInfo -< - gv8 -:: -Ieg -> - -417 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -418 -PrݔtyQuyClback - - gback - = -t_ -( - -419 -t_ -< -_t ->( - -420 -obj --> -GIlFld -( -kPrݔtyQuyIndex -) - -421 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -422 -back -( -ݔty -, -cbfo -); - -425 (* - gNivePrݔtyQuy -) - -426 ( - tv8 -:: - tLol -, cڡ v8:: - tPrݔtyClbackInfo - &); - -430  -IndexGrClbackW -( - -431 -ut32_t - -dex -, cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -432 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -433 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -434 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -435 -IndexGrClback - - gback - = -t_ -( - -436 -t_ -< -_t ->( - -437 -obj --> -GIlFld -( -kIndexPrݔtyGrIndex -) - -438 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -439 -back -( -dex -, -cbfo -); - -442 (* - gNiveIndexGr -) - -443 ( - tut32_t -, cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -446  -IndexSrClbackW -( - -447 -ut32_t - -dex - - -448 , -v8 -:: -Lol - -vue - - -449 , cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -450 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -451 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -452 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -453 -IndexSrClback - - gback - = -t_ -( - -454 -t_ -< -_t ->( - -455 -obj --> -GIlFld -( -kIndexPrݔtySrIndex -) - -456 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -457 -back -( -dex -, -vue -, -cbfo -); - -460 (* - gNiveIndexSr -)( - -461 - tut32_t - - -462 , - tv8 -:: - tLol - - -463 , cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -466  -IndexEnumClbackW -( - -467 cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -468 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -469 - gPrݔtyClbackInfo -< - gv8 -:: -Aay -> - -470 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -471 -IndexEnumClback - - gback - = -t_ -( - -472 -t_ -< -_t ->( - -473 -obj --> -GIlFld -( - -474 -kIndexPrݔtyEnumIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -475 -back -( -cbfo -); - -478 (* - gNiveIndexEnum -) - -479 (cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -482  -IndexDClbackW -( - -483 -ut32_t - -dex -, cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -484 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -485 - gPrݔtyClbackInfo -< - gv8 -:: -Boޗn -> - -486 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -487 -IndexDClback - - gback - = -t_ -( - -488 -t_ -< -_t ->( - -489 -obj --> -GIlFld -( -kIndexPrݔtyDIndex -) - -490 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -491 -back -( -dex -, -cbfo -); - -494 (* - gNiveIndexD -) - -495 ( - tut32_t -, cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - -498  -IndexQuyClbackW -( - -499 -ut32_t - -dex -, cڡ -v8 -:: -PrݔtyClbackInfo - & -fo -) { - -500 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -501 - gPrݔtyClbackInfo -< - gv8 -:: -Ieg -> - -502 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -503 -IndexQuyClback - - gback - = -t_ -( - -504 -t_ -< -_t ->( - -505 -obj --> -GIlFld -( -kIndexPrݔtyQuyIndex -) - -506 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -507 -back -( -dex -, -cbfo -); - -510 (* - gNiveIndexQuy -) - -511 ( - tut32_t -, cڡ - tv8 -:: - tPrݔtyClbackInfo - &); - - @interface/node_modules/nan/nan_callbacks_pre_12_inl.h - -9 #ide -NAN_CALLBACKS_PRE_12_INL_H_ - - -10  - #NAN_CALLBACKS_PRE_12_INL_H_ - - - ) - -12 -mea - - gimp - { - -13 - gme -< -tyme - - gT -> -ass - - gRuVueImp -; - -16 - gme -< -tyme - - gT -> - -17 as - cRuVue - { - -18 - mv8 -:: -Isީe - * -isީe_ -; - -19 - mv8 -:: -Psit -< -T -> * -vue_ -; - -20 -nd - -ass - - mimp -:: -RuVueImp -< -T ->; - -22 - mpublic -: - -23 -me - < -ass - -S -> - -24 -exic - -le - -RuVue -( -v8 -:: -Isީe - * -isީe -, v8:: -Psit -< -S -> * -p -) : - -25 -isީe_ -( -isީe -), - $vue_ -( -p -) {} - -26 -me - < -ass - -S -> - -27 -exic - -le - - `RuVue -(cڡ -RuVue -< -S ->& -th -) - -28 : - `isީe_ -( -th -. -isީe_ -), - $vue_ -( -th -. -vue_ -) { - -29 - `TYPE_CHECK -( -T -, -S -); - -30 - } -} - -33 - gme - < -tyme - - gS -> -le -  -S -(cڡ -v8 -:: -Lol -< -S -> & -hd -) { - -34 -TYPE_CHECK -( -T -, -S -); - -35 - gvue_ --> -Dio -(); - -36 * - gvue_ - = -v8 -:: -Psit -< -T ->:: -New -( -hd -); - -39 - gme - < -tyme - - gS -> -le -  -S -(cڡ -Glob -< -S -> & -hd -) { - -40 -TYPE_CHECK -( -T -, -S -); - -41 - gvue_ --> -Dio -(); - -42 * - gvue_ - = -v8 -:: -Psit -< -T ->:: -New -( -hd -. -rsit -); - -43 - gcڡ_ -< - gGlob -< - gS -> &>( - ghd -). -Ret -(); - -47 -le -  - $S -( -bo - -vue -) { - -48 -v8 -:: -HdSce - -sce -; - -50 - `TYPE_CHECK -( -T -, -v8 -:: -Boޗn -); - -51 -vue_ --> - `Dio -(); - -52 * -vue_ - = -v8 -:: -Psit -< -T ->:: - `New -(v8:: -Boޗn -::New( -vue -)); - -53 - } -} - -55 -le -  - $S -( -i -) { - -56 -v8 -:: -HdSce - -sce -; - -58 - `TYPE_CHECK -( -T -, -v8 -:: -Numb -); - -59 -vue_ --> - `Dio -(); - -60 * -vue_ - = -v8 -:: -Psit -< -T ->:: - `New -(v8:: -Numb -::New( -i -)); - -61 - } -} - -63 -le -  - $S -( -t32_t - -i -) { - -64 -v8 -:: -HdSce - -sce -; - -66 - `TYPE_CHECK -( -T -, -v8 -:: -Ieg -); - -67 -vue_ --> - `Dio -(); - -68 * -vue_ - = -v8 -:: -Psit -< -T ->:: - `New -(v8:: -I32 -::New( -i -)); - -69 - } -} - -71 -le -  - $S -( -ut32_t - -i -) { - -72 -v8 -:: -HdSce - -sce -; - -74 - `TYPE_CHECK -( -T -, -v8 -:: -Ieg -); - -75 -vue_ --> - `Dio -(); - -76 * -vue_ - = -v8 -:: -Psit -< -T ->:: - `New -(v8:: -Ut32 -:: - `NewFromUnsigd -( -i -)); - -77 - } -} - -80 -le -  - $SNu -() { - -81 -v8 -:: -HdSce - -sce -; - -83 - `TYPE_CHECK -( -T -, -v8 -:: -Primive -); - -84 -vue_ --> - `Dio -(); - -85 * -vue_ - = -v8 -:: -Psit -< -T ->:: - `New -(v8:: - `Nu -()); - -86 - } -} - -88 -le -  - $SUndefed -() { - -89 -v8 -:: -HdSce - -sce -; - -91 - `TYPE_CHECK -( -T -, -v8 -:: -Primive -); - -92 -vue_ --> - `Dio -(); - -93 * -vue_ - = -v8 -:: -Psit -< -T ->:: - `New -(v8:: - `Undefed -()); - -94 - } -} - -96 -le -  - $SEmySg -() { - -97 -v8 -:: -HdSce - -sce -; - -99 - `TYPE_CHECK -( -T -, -v8 -:: -Sg -); - -100 -vue_ --> - `Dio -(); - -101 * -vue_ - = -v8 -:: -Psit -< -T ->:: - `New -(v8:: -Sg -:: - `Emy -()); - -102 - } -} - -105 -le - - gv8 -:: -Isީe - * - $GIsީe -() const { - -106  -isީe_ -; - -107 - } -} - -110 - gme -< -tyme - - gS -> - -111 -le -  - $S -( -S - * -whev -{ - `TYPE_CHECK -(S*, -v8 -:: -Primive -); - } -} - -114 - gme -< -tyme - - gT -> - -115 as - cFuniClbackInfo - { - -116 cڡ - mv8 -:: -Argumts - & -gs_ -; - -117 - mv8 -:: -Lol -< -v8 -:: -Vue -> -da_ -; - -118 - mRuVue -< - mT -> - mtu_vue_ -; - -119 - mv8 -:: -Psit -< -T -> -tv_ -; - -121 - mpublic -: - -122 -exic - -le - -FuniClbackInfo -( - -123 cڡ -v8 -:: -Argumts - & -gs - - -124 , -v8 -:: -Lol - -da -) : - -125 -gs_ -( -gs -) - -126 , -da_ -( -da -) - -127 , -tu_vue_ -( -gs -. -GIsީe -(), & -tv_ -) - -128 , -tv_ -( -v8 -:: -Psit -< -T ->:: -New -(v8:: - $Undefed -())) {} - -130 -le - ~ - $FuniClbackInfo -() { - -131 -tv_ -. - `Dio -(); - -132 -tv_ -. - `Cˬ -(); - -133 - } -} - -135 -le - - gRuVue -< - gT -> - $GRuVue -() const { - -136  -RuVue -< -T ->( -tu_vue_ -); - -137 - } -} - -139 -le - - gv8 -:: -Lol -< -v8 -:: -Funi -> - $Ce -(cڡ {  -gs_ -. - `Ce -(); - } -} - -140 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $Da -(cڡ {  -da_ -; - } -} - -141 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $Hd -(cڡ {  -gs_ -. - `Hd -(); - } -} - -142 -le - -bo - - $IsCڡruCl -(cڡ {  -gs_ -. - `IsCڡruCl -(); - } -} - -143 -le -  - $Lgth -(cڡ {  -gs_ -. - `Lgth -(); - } -} - -144 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -ݔ -[]( -i -cڡ {  -gs_ -[i]; } - -145 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $This -(cڡ {  -gs_ -. - `This -(); - } -} - -146 -le - - gv8 -:: -Isީe - * - $GIsީe -(cڡ {  -gs_ -. - `GIsީe -(); - } -} - -149 - geed -: - -150 cڡ  -kHdIndex - = 0; - -151 cڡ  - gkIsީeIndex - = 1; - -152 cڡ  - gkRuVueDeuVueIndex - = 2; - -153 cڡ  - gkRuVueIndex - = 3; - -154 cڡ  - gkDaIndex - = 4; - -155 cڡ  - gkCeIndex - = 5; - -156 cڡ  - gkCڋxtSaveIndex - = 6; - -157 cڡ  - gkArgsLgth - = 7; - -159 - give -: - -160 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -FuniClbackInfo -) - -163 - gme -< -tyme - - gT -> - -164 as - cPrݔtyClbackInfoBa - { - -165 cڡ - mv8 -:: -AcssInfo - & -fo_ -; - -166 cڡ - mv8 -:: -Lol -< -v8 -:: -Vue -> -da_ -; - -168 - mpublic -: - -169 -exic - -le - -PrݔtyClbackInfoBa -( - -170 cڡ -v8 -:: -AcssInfo - & -fo - - -171 , cڡ -v8 -:: -Lol - -da -) : - -172 -fo_ -( -fo -) - -173 , - $da_ -( -da -) {} - -175 -le - -v8 -:: -Isީe -* - $GIsީe -(cڡ {  -fo_ -. - `GIsީe -(); - } -} - -176 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> - $Da -(cڡ {  -da_ -; - } -} - -177 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $This -(cڡ {  -fo_ -. - `This -(); - } -} - -178 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $Hd -(cڡ {  -fo_ -. - `Hd -(); - } -} - -180 - geed -: - -181 cڡ  -kHdIndex - = 0; - -182 cڡ  - gkIsީeIndex - = 1; - -183 cڡ  - gkRuVueDeuVueIndex - = 2; - -184 cڡ  - gkRuVueIndex - = 3; - -185 cڡ  - gkDaIndex - = 4; - -186 cڡ  - gkThisIndex - = 5; - -187 cڡ  - gkArgsLgth - = 6; - -189 - give -: - -190 -NAN_DISALLOW_ASSIGN_COPY_MOVE -( -PrݔtyClbackInfoBa -) - -193 - gme -< -tyme - - gT -> - -194 -ass - - gPrݔtyClbackInfo - : -public - -PrݔtyClbackInfoBa -< -T -> { - -195 -RuVue -< -T -> -tu_vue_ -; - -196 - gv8 -:: -Psit -< -T -> -tv_ -; - -198 - gpublic -: - -199 -exic - -le - -PrݔtyClbackInfo -( - -200 cڡ -v8 -:: -AcssInfo - & -fo - - -201 , cڡ -v8 -:: -Lol - -da -) : - -202 -PrݔtyClbackInfoBa -< -T ->( -fo -, - gda -) - -203 , -tu_vue_ -( -fo -. -GIsީe -(), & -tv_ -) - -204 , -tv_ -( -v8 -:: -Psit -< -T ->:: -New -(v8:: -Undefed -())) {} - -206 -le - ~ -PrݔtyClbackInfo -() { - -207 -tv_ -. -Dio -(); - -208 - gtv_ -. -Cˬ -(); - -211 -le - - gRuVue -< - gT -> -GRuVue -(cڡ {  - gtu_vue_ -; } - -214 - gme -<> - -215 -ass - - gPrݔtyClbackInfo -< - gv8 -:: -Aay -> : - -216 -public - -PrݔtyClbackInfoBa -< -v8 -:: -Aay -> { - -217 -RuVue -< -v8 -:: -Aay -> -tu_vue_ -; - -218 - gv8 -:: -Psit -< -v8 -:: -Aay -> -tv_ -; - -220 - gpublic -: - -221 -exic - -le - -PrݔtyClbackInfo -( - -222 cڡ -v8 -:: -AcssInfo - & -fo - - -223 , cڡ -v8 -:: -Lol - -da -) : - -224 -PrݔtyClbackInfoBa -< -v8 -:: -Aay ->( -fo -, - gda -) - -225 , -tu_vue_ -( -fo -. -GIsީe -(), & -tv_ -) - -226 , -tv_ -( -v8 -:: -Psit -:: -New -(v8:: -Lol -())) {} - -228 -le - ~ -PrݔtyClbackInfo -() { - -229 -tv_ -. -Dio -(); - -230 - gtv_ -. -Cˬ -(); - -233 -le - - gRuVue -< - gv8 -:: -Aay -> -GRuVue -() const { - -234  -tu_vue_ -; - -238 - gme -<> - -239 -ass - - gPrݔtyClbackInfo -< - gv8 -:: -Boޗn -> : - -240 -public - -PrݔtyClbackInfoBa -< -v8 -:: -Boޗn -> { - -241 -RuVue -< -v8 -:: -Boޗn -> -tu_vue_ -; - -242 - gv8 -:: -Psit -< -v8 -:: -Boޗn -> -tv_ -; - -244 - gpublic -: - -245 -exic - -le - -PrݔtyClbackInfo -( - -246 cڡ -v8 -:: -AcssInfo - & -fo - - -247 , cڡ -v8 -:: -Lol - -da -) : - -248 -PrݔtyClbackInfoBa -< -v8 -:: -Boޗn ->( -fo -, - gda -) - -249 , -tu_vue_ -( -fo -. -GIsީe -(), & -tv_ -) - -250 , -tv_ -( -v8 -:: -Psit -:: -New -(v8:: -Lol -())) {} - -252 -le - ~ -PrݔtyClbackInfo -() { - -253 -tv_ -. -Dio -(); - -254 - gtv_ -. -Cˬ -(); - -257 -le - - gRuVue -< - gv8 -:: -Boޗn -> -GRuVue -() const { - -258  -tu_vue_ -; - -262 - gme -<> - -263 -ass - - gPrݔtyClbackInfo -< - gv8 -:: -Ieg -> : - -264 -public - -PrݔtyClbackInfoBa -< -v8 -:: -Ieg -> { - -265 -RuVue -< -v8 -:: -Ieg -> -tu_vue_ -; - -266 - gv8 -:: -Psit -< -v8 -:: -Ieg -> -tv_ -; - -268 - gpublic -: - -269 -exic - -le - -PrݔtyClbackInfo -( - -270 cڡ -v8 -:: -AcssInfo - & -fo - - -271 , cڡ -v8 -:: -Lol - -da -) : - -272 -PrݔtyClbackInfoBa -< -v8 -:: -Ieg ->( -fo -, - gda -) - -273 , -tu_vue_ -( -fo -. -GIsީe -(), & -tv_ -) - -274 , -tv_ -( -v8 -:: -Psit -:: -New -(v8:: -Lol -())) {} - -276 -le - ~ -PrݔtyClbackInfo -() { - -277 -tv_ -. -Dio -(); - -278 - gtv_ -. -Cˬ -(); - -281 -le - - gRuVue -< - gv8 -:: -Ieg -> -GRuVue -() const { - -282  -tu_vue_ -; - -286 -mea - - gimp - { - -287 - gme -< -tyme - - gT -> - -288 -ass - - gRuVueImp - : -public - -RuVue -< -T -> { - -289 -public -: - -290 -exic - -RuVueImp -( -RuVue -< -T -> -th -) : - -291 -RuVue -< -T ->( -th -) {} - -292 -le - -v8 -:: -Hd -< -T -> -Vue -() { - -293  * -RuVue -< -T ->:: -vue_ -; - -298 - gv8 -:: -Hd -< -v8 -:: -Vue -> -FuniClbackW -(cڡ v8:: -Argumts - & -gs -) { - -299 -v8 -:: -Lol - -obj - = -gs -. -Da -(). -As -(); - -300 -FuniClback - - gback - = -t_ -( - -301 -t_ -< -_t ->( - -302 -obj --> -GIlFld -( -kFuniIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -303 - gFuniClbackInfo -< - gv8 -:: -Vue -> - -304 -cbfo -( -gs -, -obj --> -GIlFld -( -kDaIndex -)); - -305 -back -( -cbfo -); - -306  - gRuVueImp -< - gv8 -:: -Vue ->( -cbfo -. -GRuVue -()).Value(); - -309  - gv8 -:: - tHd -< - tv8 -:: - tVue -> (* - tNiveFuni -)(cڡ v8:: - tArgumts - &); - -312 - gv8 -:: -Hd -< -v8 -:: -Vue -> -GrClbackW -( - -313 -v8 -:: -Lol - -ݔty -, cڡ v8:: -AcssInfo - & -fo -) { - -314 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -315 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -316 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -317 -GrClback - - gback - = -t_ -( - -318 -t_ -< -_t ->( - -319 -obj --> -GIlFld -( -kGrIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -320 -back -( -ݔty -, -cbfo -); - -321  - gRuVueImp -< - gv8 -:: -Vue ->( -cbfo -. -GRuVue -()).Value(); - -324  - gv8 -:: - tHd -< - tv8 -:: - tVue -> (* - tNiveGr -) - -325 ( - tv8 -:: - tLol -, cڡ v8:: - tAcssInfo - &); - -328  -SrClbackW -( - -329 -v8 -:: -Lol - -ݔty - - -330 , -v8 -:: -Lol - -vue - - -331 , cڡ -v8 -:: -AcssInfo - & -fo -) { - -332 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -333 - gPrݔtyClbackInfo -<> - -334 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -335 -SrClback - - gback - = -t_ -( - -336 -t_ -< -_t ->( - -337 -obj --> -GIlFld -( -kSrIndex -). -As -< -v8 -:: -Ex ->()-> -Vue -())); - -338 -back -( -ݔty -, -vue -, -cbfo -); - -341 (* - gNiveSr -) - -342 ( - tv8 -:: - tLol -, v8::Lol, cڡ v8:: - tAcssInfo - &); - -345 - gv8 -:: -Hd -< -v8 -:: -Vue -> -PrݔtyGrClbackW -( - -346 -v8 -:: -Lol - -ݔty -, cڡ v8:: -AcssInfo - & -fo -) { - -347 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -348 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -349 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -350 -PrݔtyGrClback - - gback - = -t_ -( - -351 -t_ -< -_t ->( - -352 -obj --> -GIlFld -( -kPrݔtyGrIndex -) - -353 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -354 -back -( -ݔty -, -cbfo -); - -355  - gRuVueImp -< - gv8 -:: -Vue ->( -cbfo -. -GRuVue -()).Value(); - -358  - gv8 -:: - tHd -< - tv8 -:: - tVue -> (* - tNivePrݔtyGr -) - -359 ( - tv8 -:: - tLol -, cڡ v8:: - tAcssInfo - &); - -362 - gv8 -:: -Hd -< -v8 -:: -Vue -> -PrݔtySrClbackW -( - -363 -v8 -:: -Lol - -ݔty - - -364 , -v8 -:: -Lol - -vue - - -365 , cڡ -v8 -:: -AcssInfo - & -fo -) { - -366 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -367 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -368 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -369 -PrݔtySrClback - - gback - = -t_ -( - -370 -t_ -< -_t ->( - -371 -obj --> -GIlFld -( -kPrݔtySrIndex -) - -372 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -373 -back -( -ݔty -, -vue -, -cbfo -); - -374  - gRuVueImp -< - gv8 -:: -Vue ->( -cbfo -. -GRuVue -()).Value(); - -377  - gv8 -:: - tHd -< - tv8 -:: - tVue -> (* - tNivePrݔtySr -) - -378 ( - tv8 -:: - tLol -, v8::Lol, cڡ v8:: - tAcssInfo - &); - -381 - gv8 -:: -Hd -< -v8 -:: -Aay -> -PrݔtyEnumClbackW -( - -382 cڡ -v8 -:: -AcssInfo - & -fo -) { - -383 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -384 - gPrݔtyClbackInfo -< - gv8 -:: -Aay -> - -385 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -386 -PrݔtyEnumClback - - gback - = - -387 -t_ -< -PrݔtyEnumClback ->et_< -_t ->( - -388 -obj --> -GIlFld -( -kPrݔtyEnumIndex -) - -389 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -390 -back -( -cbfo -); - -391  - gRuVueImp -< - gv8 -:: -Aay ->( -cbfo -. -GRuVue -()). -Vue -(); - -394  - gv8 -:: - tHd -< - tv8 -:: - tAay -> (* - tNivePrݔtyEnum -) - -395 (cڡ - tv8 -:: - tAcssInfo - &); - -398 - gv8 -:: -Hd -< -v8 -:: -Boޗn -> -PrݔtyDClbackW -( - -399 -v8 -:: -Lol - -ݔty - - -400 , cڡ -v8 -:: -AcssInfo - & -fo -) { - -401 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -402 - gPrݔtyClbackInfo -< - gv8 -:: -Boޗn -> - -403 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -404 -PrݔtyDClback - - gback - = -t_ -( - -405 -t_ -< -_t ->( - -406 -obj --> -GIlFld -( -kPrݔtyDIndex -) - -407 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -408 -back -( -ݔty -, -cbfo -); - -409  - gRuVueImp -< - gv8 -:: -Boޗn ->( -cbfo -. -GRuVue -()). -Vue -(); - -412  - gv8 -:: - tHd -< - tv8 -:: - tBoޗn -> ( - tNivePrݔtyD -) - -413 ( - tv8 -:: - tLol -, cڡ v8:: - tAcssInfo - &); - -416 - gv8 -:: -Hd -< -v8 -:: -Ieg -> -PrݔtyQuyClbackW -( - -417 -v8 -:: -Lol - -ݔty -, cڡ v8:: -AcssInfo - & -fo -) { - -418 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -419 - gPrݔtyClbackInfo -< - gv8 -:: -Ieg -> - -420 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -421 -PrݔtyQuyClback - - gback - = -t_ -( - -422 -t_ -< -_t ->( - -423 -obj --> -GIlFld -( -kPrݔtyQuyIndex -) - -424 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -425 -back -( -ݔty -, -cbfo -); - -426  - gRuVueImp -< - gv8 -:: -Ieg ->( -cbfo -. -GRuVue -()). -Vue -(); - -429  - gv8 -:: - tHd -< - tv8 -:: - tIeg -> (* - tNivePrݔtyQuy -) - -430 ( - tv8 -:: - tLol -, cڡ v8:: - tAcssInfo - &); - -433 - gv8 -:: -Hd -< -v8 -:: -Vue -> -IndexGrClbackW -( - -434 -ut32_t - -dex -, cڡ -v8 -:: -AcssInfo - & -fo -) { - -435 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -436 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -437 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -438 -IndexGrClback - - gback - = -t_ -( - -439 -t_ -< -_t ->( - -440 -obj --> -GIlFld -( -kIndexPrݔtyGrIndex -) - -441 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -442 -back -( -dex -, -cbfo -); - -443  - gRuVueImp -< - gv8 -:: -Vue ->( -cbfo -. -GRuVue -()).Value(); - -446  - gv8 -:: - tHd -< - tv8 -:: - tVue -> (* - tNiveIndexGr -) - -447 ( - tut32_t -, cڡ - tv8 -:: - tAcssInfo - &); - -450 - gv8 -:: -Hd -< -v8 -:: -Vue -> -IndexSrClbackW -( - -451 -ut32_t - -dex - - -452 , -v8 -:: -Lol - -vue - - -453 , cڡ -v8 -:: -AcssInfo - & -fo -) { - -454 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -455 - gPrݔtyClbackInfo -< - gv8 -:: -Vue -> - -456 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -457 -IndexSrClback - - gback - = -t_ -( - -458 -t_ -< -_t ->( - -459 -obj --> -GIlFld -( -kIndexPrݔtySrIndex -) - -460 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -461 -back -( -dex -, -vue -, -cbfo -); - -462  - gRuVueImp -< - gv8 -:: -Vue ->( -cbfo -. -GRuVue -()).Value(); - -465  - gv8 -:: - tHd -< - tv8 -:: - tVue -> (* - tNiveIndexSr -) - -466 ( - tut32_t -, - tv8 -:: - tLol -, cڡ v8:: - tAcssInfo - &); - -469 - gv8 -:: -Hd -< -v8 -:: -Aay -> -IndexEnumClbackW -( - -470 cڡ -v8 -:: -AcssInfo - & -fo -) { - -471 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -472 - gPrݔtyClbackInfo -< - gv8 -:: -Aay -> - -473 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -474 -IndexEnumClback - - gback - = -t_ -( - -475 -t_ -< -_t ->( - -476 -obj --> -GIlFld -( -kIndexPrݔtyEnumIndex -) - -477 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -478 -back -( -cbfo -); - -479  - gRuVueImp -< - gv8 -:: -Aay ->( -cbfo -. -GRuVue -()). -Vue -(); - -482  - gv8 -:: - tHd -< - tv8 -:: - tAay -> (* - tNiveIndexEnum -) - -483 (cڡ - tv8 -:: - tAcssInfo - &); - -486 - gv8 -:: -Hd -< -v8 -:: -Boޗn -> -IndexDClbackW -( - -487 -ut32_t - -dex -, cڡ -v8 -:: -AcssInfo - & -fo -) { - -488 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -489 - gPrݔtyClbackInfo -< - gv8 -:: -Boޗn -> - -490 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -491 -IndexDClback - - gback - = -t_ -( - -492 -t_ -< -_t ->( - -493 -obj --> -GIlFld -( -kIndexPrݔtyDIndex -) - -494 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -495 -back -( -dex -, -cbfo -); - -496  - gRuVueImp -< - gv8 -:: -Boޗn ->( -cbfo -. -GRuVue -()). -Vue -(); - -499  - gv8 -:: - tHd -< - tv8 -:: - tBoޗn -> (* - tNiveIndexD -) - -500 ( - tut32_t -, cڡ - tv8 -:: - tAcssInfo - &); - -503 - gv8 -:: -Hd -< -v8 -:: -Ieg -> -IndexQuyClbackW -( - -504 -ut32_t - -dex -, cڡ -v8 -:: -AcssInfo - & -fo -) { - -505 -v8 -:: -Lol - -obj - = -fo -. -Da -(). -As -(); - -506 - gPrݔtyClbackInfo -< - gv8 -:: -Ieg -> - -507 -cbfo -( -fo -, -obj --> -GIlFld -( -kDaIndex -)); - -508 -IndexQuyClback - - gback - = -t_ -( - -509 -t_ -< -_t ->( - -510 -obj --> -GIlFld -( -kIndexPrݔtyQuyIndex -) - -511 . -As -< -v8 -:: -Ex ->()-> -Vue -())); - -512 -back -( -dex -, -cbfo -); - -513  - gRuVueImp -< - gv8 -:: -Ieg ->( -cbfo -. -GRuVue -()). -Vue -(); - -516  - gv8 -:: - tHd -< - tv8 -:: - tIeg -> (* - tNiveIndexQuy -) - -517 ( - tut32_t -, cڡ - tv8 -:: - tAcssInfo - &); - - @interface/node_modules/nan/nan_converters.h - -9 #ide -NAN_CONVERTERS_H_ - - -10  - #NAN_CONVERTERS_H_ - - - ) - -12 -mea - - gimp - { - -13 - gme -< -tyme - - gT ->  - sToFayBa - { - -14  - gMaybeLol -< - tT -> - ttu_t -; - -16 - gme -< -tyme - - gT ->  - sVueFayBa - {  - gMaybe -< - tT -> - ttu_t -; }; - -18 - gme -< -tyme - - gT ->  - gToFay -; - -20 - gme -<> - -21  - gToFay -< - gv8 -:: -Funi -> : -ToFayBa -< -v8 -::Function> { - -22  -le - -tu_t - -cvt -( -v8 -:: -Lol - -v -) { - -23 i( -v -. -IsEmy -(|| !v-> -IsFuni -() -MaybeLol -< -v8 -:: -Funi ->(); - -24  - gMaybeLol -< - gv8 -:: -Funi ->( -v -. -As -< -v8 -::Function>()); - -28  - #X -( -TYPE -) \ - -29 -me -<> \ - -30  -ToFay -< -v8 -:: -TYPE -> : -ToFayBa - { \ - -31  -le - -tu_t - - `cvt -( -v8 -:: -Lol - -v -); \ - -32 }; - - ) - -34 -X -( -Boޗn -) - -35 -X -( -Numb -) - -36 -X -( -Sg -) - -37 -X -( -Obje -) - -38 -X -( -Ieg -) - -39 -X -( -Ut32 -) - -40 -X -( -I32 -) - -42 #unde -X - - -44  - #X -( -TYPE -) \ - -45 -me -<> \ - -46  -ToFay -< -TYPE -> : -VueFayBa - { \ - -47  -le - -tu_t - - `cvt -( -v8 -:: -Lol - -v -); \ - -48 }; - - ) - -50 -X -( -bo -) - -51 -X -() - -52 -X -( -t64_t -) - -53 -X -( -ut32_t -) - -54 -X -( -t32_t -) - -56 #unde -X - - -59 - gme -< -tyme - - gT -> - -60 -le - - -61 -tyme - - gimp -:: -ToFay -< -T ->:: -tu_t - -To -( -v8 -:: -Lol - -v -) { - -62  -imp -:: -ToFay -< -T ->:: -cvt -( -v -); - -65 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -66 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -67  - ~"n_cvrs_43_l.h -" - -69  - ~"n_cvrs_e_43_l.h -" - - @interface/node_modules/nan/nan_converters_43_inl.h - -9 #ide -NAN_CONVERTERS_43_INL_H_ - - -10  - #NAN_CONVERTERS_43_INL_H_ - - - ) - -12  - #X -( -TYPE -) \ - -13 -imp -:: -ToFay -< -v8 -:: -TYPE ->:: -tu_t - \ - -14 -imp -:: -ToFay -< -v8 -:: -TYPE ->:: - `cvt -(v8:: -Lol - -v -) { \ - -15 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); \ - -16 -v8 -:: -EsbHdSce - - `sce -( -isީe -); \ - -17  -sce -. - `Es -( \ - -18 -v --> -To - ## - `TYPE -( -isީe --> - `GCutCڋxt -()) \ - -19 . - `FromMaybe -( -v8 -:: -Lol -())); \ - -20 } - - ) - -22 - $X -( -Numb -) - -23 - $X -( -Sg -) - -24 - $X -( -Obje -) - -25 - $X -( -Ieg -) - -26 - $X -( -Ut32 -) - -27 - $X -( -I32 -) - -29 #i -V8_MAJOR_VERSION - < 7 || (V8_MAJOR_VERSION =7 && -V8_MINOR_VERSION - == 0) - -30 - $X -( -Boޗn -) - -32 -imp -:: -ToFay -< -v8 -:: -Boޗn ->:: -tu_t - \ - -33 -imp -:: -ToFay -< -v8 -:: -Boޗn ->:: - `cvt -(v8:: -Lol - -v -) { \ - -34 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); \ - -35 -v8 -:: -EsbHdSce - - `sce -( -isީe -); \ - -36  -sce -. - `Es -( -v --> - `ToBoޗn -( -isީe -)); \ - -37 - } -} - -40 #unde -X - - -42  - #X -( -TYPE -, -NAME -) \ - -43 -imp -:: -ToFay -< -TYPE ->:: -tu_t - \ - -44 -imp -:: -ToFay -< -TYPE ->:: - `cvt -( -v8 -:: -Lol - -v -) { \ - -45 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); \ - -46 -v8 -:: -HdSce - - `sce -( -isީe -); \ - -47  -v --> -NAME - ## - `Vue -( -isީe --> - `GCutCڋxt -()); \ - -48 } - - ) - -50 - $X -(, -Numb -) - -51 - $X -( -t64_t -, -Ieg -) - -52 - $X -( -ut32_t -, -Ut32 -) - -53 - $X -( -t32_t -, -I32 -) - -55 #i -V8_MAJOR_VERSION - < 7 || (V8_MAJOR_VERSION =7 && -V8_MINOR_VERSION - == 0) - -56 - $X -( -bo -, -Boޗn -) - -58 -imp -:: -ToFay -< -bo ->:: -tu_t - \ - -59 -imp -:: -ToFay -< -bo ->:: - `cvt -( -v8 -:: -Lol - -v -) { \ - -60 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: - `GCut -(); \ - -61 -v8 -:: -HdSce - - `sce -( -isީe -); \ - -62  -Ju -< -bo ->( -v --> - `BoޗnVue -( -isީe -)); \ - -63 - } -} - -66 #unde -X - - - @interface/node_modules/nan/nan_converters_pre_43_inl.h - -9 #ide -NAN_CONVERTERS_PRE_43_INL_H_ - - -10  - #NAN_CONVERTERS_PRE_43_INL_H_ - - - ) - -12  - #X -( -TYPE -) \ - -13 -imp -:: -ToFay -< -v8 -:: -TYPE ->:: -tu_t - \ - -14 -imp -:: -ToFay -< -v8 -:: -TYPE ->:: - `cvt -(v8:: -Lol - -v -) { \ - -15  -v --> -To - ## - `TYPE -(); \ - -16 } - - ) - -18 - $X -( -Boޗn -) - -19 - $X -( -Numb -) - -20 - $X -( -Sg -) - -21 - $X -( -Obje -) - -22 - $X -( -Ieg -) - -23 - $X -( -Ut32 -) - -24 - $X -( -I32 -) - -26 #unde -X - - -28  - #X -( -TYPE -, -NAME -) \ - -29 -imp -:: -ToFay -< -TYPE ->:: -tu_t - \ - -30 -imp -:: -ToFay -< -TYPE ->:: - `cvt -( -v8 -:: -Lol - -v -) { \ - -31  - `Ju -( -v --> -NAME - ## - `Vue -()); \ - -32 - } - - ) -} - -34 - $X -( -bo -, -Boޗn -) - -35 - $X -(, -Numb -) - -36 - $X -( -t64_t -, -Ieg -) - -37 - $X -( -ut32_t -, -Ut32 -) - -38 - $X -( -t32_t -, -I32 -) - -40 #unde -X - - - @interface/node_modules/nan/nan_define_own_property_helper.h - -9 #ide -NAN_DEFINE_OWN_PROPERTY_HELPER_H_ - - -10  - #NAN_DEFINE_OWN_PROPERTY_HELPER_H_ - - - ) - -12 -mea - - gimp - { - -14 -le - - gMaybe -< - gbo -> -DefeOwnPrݔtyHr -( - -15 -v8 -:: -PrݔtyAribu - -cut - - -16 , -v8 -:: -Hd - -obj - - -17 , -v8 -:: -Hd - -key - - -18 , -v8 -:: -Hd - -vue - - -19 , -v8 -:: -PrݔtyAribu - -ibs - = v8:: -Ne -) { - -20  !( -cut - & -v8 -:: -DtDe -) || - -21 (!( -cut - & -v8 -:: -RdOy -) && - -22 !(( -ibs - ^ -cut -& ~ -v8 -:: -RdOy -)) - -23 ? -Ju -< -bo ->( -obj --> -FS -( -key -, -vue -, -ibs -)) - -24 : -Nhg -< -bo ->(); - - @interface/node_modules/nan/nan_implementation_12_inl.h - -9 #ide -NAN_IMPLEMENTATION_12_INL_H_ - - -10  - #NAN_IMPLEMENTATION_12_INL_H_ - - - ) - -15 -mea - - gimp - { - -19 - gFay -< - gv8 -:: -Aay ->:: -tu_t - - -20 -Fay -< -v8 -:: -Aay ->:: -New -() { - -21  -v8 -:: -Aay -:: -New -(v8:: -Isީe -:: -GCut -()); - -24 - gFay -< - gv8 -:: -Aay ->:: -tu_t - - -25 -Fay -< -v8 -:: -Aay ->:: -New -( -ngth -) { - -26  -v8 -:: -Aay -:: -New -(v8:: -Isީe -:: -GCut -(), -ngth -); - -31 - gFay -< - gv8 -:: -Boޗn ->:: -tu_t - - -32 -Fay -< -v8 -:: -Boޗn ->:: -New -( -bo - -vue -) { - -33  -v8 -:: -Boޗn -:: -New -(v8:: -Isީe -:: -GCut -(), -vue -); - -38 - gFay -< - gv8 -:: -BoޗnObje ->:: -tu_t - - -39 -Fay -< -v8 -:: -BoޗnObje ->:: -New -( -bo - -vue -) { - -40 #i( -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION -) - -41  -v8 -:: -BoޗnObje -:: -New -( - -42 -v8 -:: -Isީe -:: -GCut -(), -vue -). - gAs -< - gv8 -:: -BoޗnObje ->(); - -44  - gv8 -:: -BoޗnObje -:: -New -( -vue -). -As -< -v8 -::BooleanObject>(); - -50 - gFay -< - gv8 -:: -Cڋxt ->:: -tu_t - - -51 -Fay -< -v8 -:: -Cڋxt ->:: -New -v8:: -ExnsiCfiguti -* -exnsis - - -52 , -v8 -:: -Lol - -tm - - -53 , -v8 -:: -Lol - -obj -) { - -54  -v8 -:: -Cڋxt -:: -New -(v8:: -Isީe -:: -GCut -(), -exnsis -, -tm -, -obj -); - -59 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -60 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -61 -Fay -< -v8 -:: -De ->:: -tu_t - - -62 -Fay -< -v8 -:: -De ->:: -New -( -vue -) { - -63 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -64 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -65  - gsce -. -Es -( -v8 -:: -De -:: -New -( -isީe --> -GCutCڋxt -(), -vue -) - -66 . -FromMaybe -( -v8 -:: -Lol -()). -As -()); - -69 - gFay -< - gv8 -:: -De ->:: -tu_t - - -70 -Fay -< -v8 -:: -De ->:: -New -( -vue -) { - -71  -v8 -:: -De -:: -New -(v8:: -Isީe -:: -GCut -(), -vue -). - gAs -< - gv8 -::Date>(); - -77 - gFay -< - gv8 -:: -Ex ->:: -tu_t - - -78 -Fay -< -v8 -:: -Ex ->:: -New -(* -vue -) { - -79  -v8 -:: -Ex -:: -New -(v8:: -Isީe -:: -GCut -(), -vue -); - -84 - gFay -< - gv8 -:: -Funi ->:: -tu_t - - -85 -Fay -< -v8 -:: -Funi ->:: -New - -FuniClback - -back - - -86 , -v8 -:: -Lol - -da -) { - -87 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -88 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -89 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -l - = v8::ObjeTeme:: -New -( -isީe -); - -90 - gl --> -SIlFldCou -( -imp -:: -kFuniFldCou -); - -91 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -NewIn -( -l -). -ToLolChecked -(); - -93 - gobj --> -SIlFld -( - -94 -imp -:: -kFuniIndex - - -95 , -v8 -:: -Ex -:: -New -( -isީe -, -t_ -<*>( -back -))); - -97 - gv8 -:: -Lol -< -v8 -:: -Vue -> -v - = v8::Lol:: -New -( -isީe -, -da -); - -99 i(! - gv -. -IsEmy -()) { - -100 - gobj --> -SIlFld -( -imp -:: -kDaIndex -, -v -); - -103 #i -NODE_MAJOR_VERSION - >= 10 - -104 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -105 - gv8 -:: -Lol -< -v8 -:: -Funi -> -funi - = - -106 -v8 -:: -Funi -:: -New -( -cڋxt -, -imp -:: -FuniClbackW -, -obj -) - -107 . -ToLolChecked -(); - -109 - gv8 -:: -Lol -< -v8 -:: -Funi -> -funi - = - -110 -v8 -:: -Funi -:: -New -( -isީe -, -imp -:: -FuniClbackW -, -obj -); - -113  - gsce -. -Es -( -funi -); - -118 - gFay -< - gv8 -:: -FuniTeme ->:: -tu_t - - -119 -Fay -< -v8 -:: -FuniTeme ->:: -New - -FuniClback - -back - - -120 , -v8 -:: -Lol - -da - - -121 , -v8 -:: -Lol - -sigtu -) { - -122 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -123 i( - gback -) { - -124 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -125 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -l - = v8::ObjeTeme:: -New -( -isީe -); - -126 - gl --> -SIlFldCou -( -imp -:: -kFuniFldCou -); - -127 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -NewIn -( -l -). -ToLolChecked -(); - -129 - gobj --> -SIlFld -( - -130 -imp -:: -kFuniIndex - - -131 , -v8 -:: -Ex -:: -New -( -isީe -, -t_ -<*>( -back -))); - -132 - gv8 -:: -Lol -< -v8 -:: -Vue -> -v - = v8::Lol:: -New -( -isީe -, -da -); - -134 i(! - gv -. -IsEmy -()) { - -135 - gobj --> -SIlFld -( -imp -:: -kDaIndex -, -v -); - -138  - gsce -. -Es -( -v8 -:: -FuniTeme -:: -New - -isީe - - -139 , -imp -:: -FuniClbackW - - -140 , -obj - - -141 , -sigtu -)); - -143  - gv8 -:: -FuniTeme -:: -New -( -isީe -, 0, -da -, -sigtu -); - -149 - gFay -< - gv8 -:: -Numb ->:: -tu_t - - -150 -Fay -< -v8 -:: -Numb ->:: -New -( -vue -) { - -151  -v8 -:: -Numb -:: -New -(v8:: -Isީe -:: -GCut -(), -vue -); - -156 - gFay -< - gv8 -:: -NumbObje ->:: -tu_t - - -157 -Fay -< -v8 -:: -NumbObje ->:: -New -( -vue -) { - -158  -v8 -:: -NumbObje -:: -New -v8:: -Isީe -:: -GCut -() - -159 , -vue -). - gAs -< - gv8 -:: -NumbObje ->(); - -164 - gme - < -tyme - - gT -> - -165 -tyme - - gIegFay -< - gT ->:: -tu_t - - -166 -IegFay -< -T ->:: -New -( -t32_t - -vue -) { - -167  -To -< -T ->(T:: -New -( -v8 -:: -Isީe -:: -GCut -(), -vue -)); - -170 - gme - < -tyme - - gT -> - -171 -tyme - - gIegFay -< - gT ->:: -tu_t - - -172 -IegFay -< -T ->:: -New -( -ut32_t - -vue -) { - -173  -To -< -T ->(T:: -NewFromUnsigd -( -v8 -:: -Isީe -:: -GCut -(), -vue -)); - -176 - gFay -< - gv8 -:: -Ut32 ->:: -tu_t - - -177 -Fay -< -v8 -:: -Ut32 ->:: -New -( -t32_t - -vue -) { - -178  -To -< -v8 -:: -Ut32 ->( - -179 -v8 -:: -Ut32 -:: -NewFromUnsigd -(v8:: -Isީe -:: -GCut -(), -vue -)); - -182 - gFay -< - gv8 -:: -Ut32 ->:: -tu_t - - -183 -Fay -< -v8 -:: -Ut32 ->:: -New -( -ut32_t - -vue -) { - -184  -To -< -v8 -:: -Ut32 ->( - -185 -v8 -:: -Ut32 -:: -NewFromUnsigd -(v8:: -Isީe -:: -GCut -(), -vue -)); - -190 - gFay -< - gv8 -:: -Obje ->:: -tu_t - - -191 -Fay -< -v8 -:: -Obje ->:: -New -() { - -192  -v8 -:: -Obje -:: -New -(v8:: -Isީe -:: -GCut -()); - -197 - gFay -< - gv8 -:: -ObjeTeme ->:: -tu_t - - -198 -Fay -< -v8 -:: -ObjeTeme ->:: -New -() { - -199  -v8 -:: -ObjeTeme -:: -New -(v8:: -Isީe -:: -GCut -()); - -204 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -205 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -206 -Fay -< -v8 -:: -RegExp ->:: -tu_t - - -207 -Fay -< -v8 -:: -RegExp ->:: -New -( - -208 -v8 -:: -Lol - -n - - -209 , -v8 -:: -RegExp -:: -Fgs - -ags -) { - -210 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -211 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -212  - gsce -. -Es -( - -213 -v8 -:: -RegExp -:: -New -( -isީe --> -GCutCڋxt -(), -n -, -ags -) - -214 . -FromMaybe -( -v8 -:: -Lol -())); - -217 - gFay -< - gv8 -:: -RegExp ->:: -tu_t - - -218 -Fay -< -v8 -:: -RegExp ->:: -New -( - -219 -v8 -:: -Lol - -n - - -220 , -v8 -:: -RegExp -:: -Fgs - -ags -) { - -221  -v8 -:: -RegExp -:: -New -( -n -, -ags -); - -227 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -228 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -229 -Fay -< -v8 -:: -St ->:: -tu_t - - -230 -Fay -< -v8 -:: -St ->:: -New -v8:: -Lol - -sour -) { - -231 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -232 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -233 - gv8 -:: -StComp -:: -Sour - -c -( -sour -); - -234  - gsce -. -Es -( - -235 -v8 -:: -StComp -:: -Compe -( -isީe --> -GCutCڋxt -(), & -c -) - -236 . -FromMaybe -( -v8 -:: -Lol -())); - -239 - gFay -< - gv8 -:: -St ->:: -tu_t - - -240 -Fay -< -v8 -:: -St ->:: -New -v8:: -Lol - -sour - - -241 , -v8 -:: -StOrig - cڡ& -ig -) { - -242 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -243 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -244 - gv8 -:: -StComp -:: -Sour - -c -( -sour -, -ig -); - -245  - gsce -. -Es -( - -246 -v8 -:: -StComp -:: -Compe -( -isީe --> -GCutCڋxt -(), & -c -) - -247 . -FromMaybe -( -v8 -:: -Lol -())); - -250 - gFay -< - gv8 -:: -St ->:: -tu_t - - -251 -Fay -< -v8 -:: -St ->:: -New -v8:: -Lol - -sour -) { - -252 -v8 -:: -StComp -:: -Sour - -c -( -sour -); - -253  - gv8 -:: -StComp -:: -Compe -( -v8 -:: -Isީe -:: -GCut -(), & -c -); - -256 - gFay -< - gv8 -:: -St ->:: -tu_t - - -257 -Fay -< -v8 -:: -St ->:: -New -v8:: -Lol - -sour - - -258 , -v8 -:: -StOrig - cڡ& -ig -) { - -259 -v8 -:: -StComp -:: -Sour - -c -( -sour -, -ig -); - -260  - gv8 -:: -StComp -:: -Compe -( -v8 -:: -Isީe -:: -GCut -(), & -c -); - -266 - gFay -< - gv8 -:: -Sigtu ->:: -tu_t - - -267 -Fay -< -v8 -:: -Sigtu ->:: -New -(Fay:: -FTH - -iv -) { - -268  -v8 -:: -Sigtu -:: -New -(v8:: -Isީe -:: -GCut -(), -iv -); - -273 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -274 -Fay -< -v8 -:: -Sg ->:: -New -() { - -275  -v8 -:: -Sg -:: -Emy -(v8:: -Isީe -:: -GCut -()); - -278 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -279 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -280 -Fay -< -v8 -:: -Sg ->:: -tu_t - - -281 -Fay -< -v8 -:: -Sg ->:: -New -(cڡ * -vue -,  -ngth -) { - -282  - gv8 -:: -Sg -:: -NewFromUtf8 -( - -283 -v8 -:: -Isީe -:: -GCut -(), -vue -, v8:: -NewSgTy -:: -kNm -, -ngth -); - -286 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -287 -Fay -< -v8 -:: -Sg ->:: -New -( -d -:: -rg - cڡ& -vue -) { - -288 -as -( -vue -. -size -(< -INT_MAX - && "stringooong"); - -289  - gv8 -:: -Sg -:: -NewFromUtf8 -( -v8 -:: -Isީe -:: -GCut -(), - -290 -vue -. -da -(), -v8 -:: -NewSgTy -:: -kNm -, -ic_ -<>(vue. -size -())); - -293 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -294 -Fay -< -v8 -:: -Sg ->:: -New -(cڡ -ut16_t - * -vue -,  -ngth -) { - -295  - gv8 -:: -Sg -:: -NewFromTwoBy -( -v8 -:: -Isީe -:: -GCut -(), -vue -, - -296 -v8 -:: -NewSgTy -:: -kNm -, -ngth -); - -299 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -300 -Fay -< -v8 -:: -Sg ->:: -New -(v8::Sg:: -ExSgResour - * -vue -) { - -301  -v8 -:: -Sg -:: -NewExTwoBy -(v8:: -Isީe -:: -GCut -(), -vue -); - -304 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -305 -Fay -< -v8 -:: -Sg ->:: -New -( -ExOBySgResour - * -vue -) { - -306  -v8 -:: -Sg -:: -NewExOBy -(v8:: -Isީe -:: -GCut -(), -vue -); - -309 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -310 -Fay -< -v8 -:: -Sg ->:: -New -(cڡ * -vue -,  -ngth -) { - -311  - gv8 -:: -Sg -:: -NewFromUtf8 -( -v8 -:: -Isީe -:: -GCut -(), -vue -, - -312 -v8 -:: -Sg -:: -kNmSg -, -ngth -); - -315 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -316 -Fay -< -v8 -:: -Sg ->:: -New -( - -317 -d -:: -rg - cڡ& -vue -) { - -318 -as -( -vue -. -size -(< -INT_MAX - && "stringooong"); - -319  - gv8 -:: -Sg -:: -NewFromUtf8 -( -v8 -:: -Isީe -:: -GCut -(), -vue -. -da -(), - -320 -v8 -:: -Sg -:: -kNmSg -, - -321 -ic_ -<>( -vue -. -size -())); - -324 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -325 -Fay -< -v8 -:: -Sg ->:: -New -(cڡ -ut16_t - * -vue -,  -ngth -) { - -326  - gv8 -:: -Sg -:: -NewFromTwoBy -( -v8 -:: -Isީe -:: -GCut -(), -vue -, - -327 -v8 -:: -Sg -:: -kNmSg -, -ngth -); - -330 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -331 -Fay -< -v8 -:: -Sg ->:: -New -(v8::Sg:: -ExSgResour - * -vue -) { - -332  -v8 -:: -Sg -:: -NewEx -(v8:: -Isީe -:: -GCut -(), -vue -); - -335 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -336 -Fay -< -v8 -:: -Sg ->:: -New -( -ExOBySgResour - * -vue -) { - -337  -v8 -:: -Sg -:: -NewEx -(v8:: -Isީe -:: -GCut -(), -vue -); - -346 - gFay -< - gv8 -:: -SgObje ->:: -tu_t - - -347 -Fay -< -v8 -:: -SgObje ->:: -New -(v8:: -Lol - -vue -) { - -349 #i -V8_MAJOR_VERSION - > 7 || (V8_MAJOR_VERSION =7 && -V8_MINOR_VERSION - > 0) - -350  -v8 -:: -SgObje -:: -New -(v8:: -Isީe -:: -GCut -(), -vue -) - -351 . - gAs -< - gv8 -:: -SgObje ->(); - -353 #ifde -_MSC_VER - - -354 #agm -wng -( -push -) - -355 #agm -wng -( -dib - : 4996) - -357 #ifde -__GNUC__ - - -358 #agm -GCC - -dgnoic - -push - - -359 #agm -GCC - -dgnoic - -igned - "-Wdeprecated-declarations" - -361  - gv8 -:: -SgObje -:: -New -( -vue -). -As -< -v8 -::StringObject>(); - -362 #ifde -__GNUC__ - - -363 #agm -GCC - -dgnoic - -p - - -365 #ifde -_MSC_VER - - -366 #agm -wng -( -p -) - -373 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -374 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -375 -Fay -< -v8 -:: -UnboundSt ->:: -tu_t - - -376 -Fay -< -v8 -:: -UnboundSt ->:: -New -(v8:: -Lol - -sour -) { - -377 -v8 -:: -StComp -:: -Sour - -c -( -sour -); - -378  - gv8 -:: -StComp -:: -CompeUnboundSt -( - -379 -v8 -:: -Isީe -:: -GCut -(), & -c -); - -382 - gFay -< - gv8 -:: -UnboundSt ->:: -tu_t - - -383 -Fay -< -v8 -:: -UnboundSt ->:: -New -v8:: -Lol - -sour - - -384 , -v8 -:: -StOrig - cڡ& -ig -) { - -385 -v8 -:: -StComp -:: -Sour - -c -( -sour -, -ig -); - -386  - gv8 -:: -StComp -:: -CompeUnboundSt -( - -387 -v8 -:: -Isީe -:: -GCut -(), & -c -); - -390 - gFay -< - gv8 -:: -UnboundSt ->:: -tu_t - - -391 -Fay -< -v8 -:: -UnboundSt ->:: -New -(v8:: -Lol - -sour -) { - -392 -v8 -:: -StComp -:: -Sour - -c -( -sour -); - -393  - gv8 -:: -StComp -:: -CompeUnbound -( -v8 -:: -Isީe -:: -GCut -(), & -c -); - -396 - gFay -< - gv8 -:: -UnboundSt ->:: -tu_t - - -397 -Fay -< -v8 -:: -UnboundSt ->:: -New -v8:: -Lol - -sour - - -398 , -v8 -:: -StOrig - cڡ& -ig -) { - -399 -v8 -:: -StComp -:: -Sour - -c -( -sour -, -ig -); - -400  - gv8 -:: -StComp -:: -CompeUnbound -( -v8 -:: -Isީe -:: -GCut -(), & -c -); - -408 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -409 - gme - < -tyme - - gT -> - -410 -le - - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Hd - -h -) { - -411  -v8 -:: -Lol -< -T ->:: -New -(v8:: -Isީe -:: -GCut -(), -h -); - -415 - gme - < -tyme - - gT -,ym - gM -> - -416 -le - - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Psit - cڡ& -p -) { - -417  - gv8 -:: -Lol -< -T ->:: -New -( -v8 -:: -Isީe -:: -GCut -(), -p -); - -420 - gme - < -tyme - - gT -,ym - gM -> - -421 -le - - gv8 -:: -Lol -< -T -> -New -( -Psit - cڡ& -p -) { - -422  - gv8 -:: -Lol -< -T ->:: -New -( -v8 -:: -Isީe -:: -GCut -(), -p -); - -425 - gme - < -tyme - - gT -> - -426 -le - - gv8 -:: -Lol -< -T -> -New -( -Glob - cڡ& -p -) { - -427  -v8 -:: -Lol -< -T ->:: -New -(v8:: -Isީe -:: -GCut -(), -p -); - - @interface/node_modules/nan/nan_implementation_pre_12_inl.h - -9 #ide -NAN_IMPLEMENTATION_PRE_12_INL_H_ - - -10  - #NAN_IMPLEMENTATION_PRE_12_INL_H_ - - - ) - -16 -mea - - gimp - { - -20 - gFay -< - gv8 -:: -Aay ->:: -tu_t - - -21 -Fay -< -v8 -:: -Aay ->:: -New -() { - -22  -v8 -:: -Aay -:: -New -(); - -25 - gFay -< - gv8 -:: -Aay ->:: -tu_t - - -26 -Fay -< -v8 -:: -Aay ->:: -New -( -ngth -) { - -27  -v8 -:: -Aay -:: -New -( -ngth -); - -32 - gFay -< - gv8 -:: -Boޗn ->:: -tu_t - - -33 -Fay -< -v8 -:: -Boޗn ->:: -New -( -bo - -vue -) { - -34  -v8 -:: -Boޗn -:: -New -( -vue -)-> -ToBoޗn -(); - -39 - gFay -< - gv8 -:: -BoޗnObje ->:: -tu_t - - -40 -Fay -< -v8 -:: -BoޗnObje ->:: -New -( -bo - -vue -) { - -41  -v8 -:: -BoޗnObje -:: -New -( -vue -). -As -(); - -46 - gFay -< - gv8 -:: -Cڋxt ->:: -tu_t - - -47 -Fay -< -v8 -:: -Cڋxt ->:: -New -v8:: -ExnsiCfiguti -* -exnsis - - -48 , -v8 -:: -Lol - -tm - - -49 , -v8 -:: -Lol - -obj -) { - -50 -v8 -:: -Psit - -x - = v8::Cڋxt:: -New -( -exnsis -, -tm -, -obj -); - -51 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -lx - = v8::Lol:: -New -( -x -); - -52 - gx -. -Dio -(); - -53  - glx -; - -58 - gFay -< - gv8 -:: -De ->:: -tu_t - - -59 -Fay -< -v8 -:: -De ->:: -New -( -vue -) { - -60  -v8 -:: -De -:: -New -( -vue -). -As -(); - -65 - gFay -< - gv8 -:: -Ex ->:: -tu_t - - -66 -Fay -< -v8 -:: -Ex ->:: -New -(* -vue -) { - -67  -v8 -:: -Ex -:: -New -( -vue -); - -72 - gFay -< - gv8 -:: -Funi ->:: -tu_t - - -73 -Fay -< -v8 -:: -Funi ->:: -New - -FuniClback - -back - - -74 , -v8 -:: -Lol - -da -) { - -75 -v8 -:: -HdSce - -sce -; - -77  - gsce -. -Clo -( -Fay -< -v8 -:: -FuniTeme ->:: -New -( - -78 -back -, -da -, -v8 -:: -Lol -()) - -79 -> -GFuni -()); - -85 - gFay -< - gv8 -:: -FuniTeme ->:: -tu_t - - -86 -Fay -< -v8 -:: -FuniTeme ->:: -New - -FuniClback - -back - - -87 , -v8 -:: -Lol - -da - - -88 , -v8 -:: -Lol - -sigtu -) { - -89 i( -back -) { - -90 -v8 -:: -HdSce - -sce -; - -92 - gv8 -:: -Lol -< -v8 -:: -ObjeTeme -> -l - = v8::ObjeTeme:: -New -(); - -93 - gl --> -SIlFldCou -( -imp -:: -kFuniFldCou -); - -94 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj - = -l --> -NewIn -(); - -96 - gobj --> -SIlFld -( - -97 -imp -:: -kFuniIndex - - -98 , -v8 -:: -Ex -:: -New -( -t_ -<*>( -back -))); - -100 - gv8 -:: -Lol -< -v8 -:: -Vue -> -v - = v8::Lol:: -New -( -da -); - -102 i(! - gv -. -IsEmy -()) { - -103 - gobj --> -SIlFld -( -imp -:: -kDaIndex -, -v -); - -108  - gsce -. -Clo -( - -109 -v8 -:: -FuniTeme -:: -New -( -imp -:: -FuniClbackW - - -110 , -obj - - -111 , -sigtu -)); - -113  - gv8 -:: -FuniTeme -:: -New -(0, -da -, -sigtu -); - -119 - gFay -< - gv8 -:: -Numb ->:: -tu_t - - -120 -Fay -< -v8 -:: -Numb ->:: -New -( -vue -) { - -121  -v8 -:: -Numb -:: -New -( -vue -); - -126 - gFay -< - gv8 -:: -NumbObje ->:: -tu_t - - -127 -Fay -< -v8 -:: -NumbObje ->:: -New -( -vue -) { - -128  -v8 -:: -NumbObje -:: -New -( -vue -). -As -(); - -133 - gme - < -tyme - - gT -> - -134 -tyme - - gIegFay -< - gT ->:: -tu_t - - -135 -IegFay -< -T ->:: -New -( -t32_t - -vue -) { - -136  -To -< -T ->(T:: -New -( -vue -)); - -139 - gme - < -tyme - - gT -> - -140 -tyme - - gIegFay -< - gT ->:: -tu_t - - -141 -IegFay -< -T ->:: -New -( -ut32_t - -vue -) { - -142  -To -< -T ->(T:: -NewFromUnsigd -( -vue -)); - -145 - gFay -< - gv8 -:: -Ut32 ->:: -tu_t - - -146 -Fay -< -v8 -:: -Ut32 ->:: -New -( -t32_t - -vue -) { - -147  -To -< -v8 -:: -Ut32 ->(v8::Ut32:: -NewFromUnsigd -( -vue -)); - -150 - gFay -< - gv8 -:: -Ut32 ->:: -tu_t - - -151 -Fay -< -v8 -:: -Ut32 ->:: -New -( -ut32_t - -vue -) { - -152  -To -< -v8 -:: -Ut32 ->(v8::Ut32:: -NewFromUnsigd -( -vue -)); - -158 - gFay -< - gv8 -:: -Obje ->:: -tu_t - - -159 -Fay -< -v8 -:: -Obje ->:: -New -() { - -160  -v8 -:: -Obje -:: -New -(); - -165 - gFay -< - gv8 -:: -ObjeTeme ->:: -tu_t - - -166 -Fay -< -v8 -:: -ObjeTeme ->:: -New -() { - -167  -v8 -:: -ObjeTeme -:: -New -(); - -172 - gFay -< - gv8 -:: -RegExp ->:: -tu_t - - -173 -Fay -< -v8 -:: -RegExp ->:: -New -( - -174 -v8 -:: -Lol - -n - - -175 , -v8 -:: -RegExp -:: -Fgs - -ags -) { - -176  -v8 -:: -RegExp -:: -New -( -n -, -ags -); - -181 - gFay -< - gv8 -:: -St ->:: -tu_t - - -182 -Fay -< -v8 -:: -St ->:: -New -v8:: -Lol - -sour -) { - -183  -v8 -:: -St -:: -New -( -sour -); - -185 - gFay -< - gv8 -:: -St ->:: -tu_t - - -186 -Fay -< -v8 -:: -St ->:: -New -v8:: -Lol - -sour - - -187 , -v8 -:: -StOrig - cڡ& -ig -) { - -188  -v8 -:: -St -:: -New -( -sour -, -cڡ_ -(& -ig -)); - -193 - gFay -< - gv8 -:: -Sigtu ->:: -tu_t - - -194 -Fay -< -v8 -:: -Sigtu ->:: -New -(Fay:: -FTH - -iv -) { - -195  -v8 -:: -Sigtu -:: -New -( -iv -); - -200 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -201 -Fay -< -v8 -:: -Sg ->:: -New -() { - -202  -v8 -:: -Sg -:: -Emy -(); - -205 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -206 -Fay -< -v8 -:: -Sg ->:: -New -(cڡ * -vue -,  -ngth -) { - -207  - gv8 -:: -Sg -:: -New -( -vue -, -ngth -); - -210 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -211 -Fay -< -v8 -:: -Sg ->:: -New -( - -212 -d -:: -rg - cڡ& -vue -) { - -213 -as -( -vue -. -size -(< -INT_MAX - && "stringooong"); - -214  - gv8 -:: -Sg -:: -New -( -vue -. -da -(), -ic_ -<>(vue. -size -())); - -217 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -218 -Fay -< -v8 -:: -Sg ->:: -New -(cڡ -ut16_t - * -vue -,  -ngth -) { - -219  - gv8 -:: -Sg -:: -New -( -vue -, -ngth -); - -222 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -223 -Fay -< -v8 -:: -Sg ->:: -New -(v8::Sg:: -ExSgResour - * -vue -) { - -224  -v8 -:: -Sg -:: -NewEx -( -vue -); - -227 - gFay -< - gv8 -:: -Sg ->:: -tu_t - - -228 -Fay -< -v8 -:: -Sg ->:: -New -(v8::Sg:: -ExAsciiSgResour - * -vue -) { - -229  -v8 -:: -Sg -:: -NewEx -( -vue -); - -234 - gFay -< - gv8 -:: -SgObje ->:: -tu_t - - -235 -Fay -< -v8 -:: -SgObje ->:: -New -(v8:: -Lol - -vue -) { - -236  -v8 -:: -SgObje -:: -New -( -vue -). -As -(); - -243 - gme - < -tyme - - gT -> - -244 -le - - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Hd - -h -) { - -245  -v8 -:: -Lol -< -T ->:: -New -( -h -); - -248 - gme - < -tyme - - gT -> - -249 -le - - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Psit - cڡ& -p -) { - -250  -v8 -:: -Lol -< -T ->:: -New -( -p -); - -253 - gme - < -tyme - - gT -,ym - gM -> - -254 -le - - gv8 -:: -Lol -< -T -> -New -( -Psit - cڡ& -p -) { - -255  - gv8 -:: -Lol -< -T ->:: -New -( -p -. -rsit -); - -258 - gme - < -tyme - - gT -> - -259 -le - - gv8 -:: -Lol -< -T -> -New -( -Glob - cڡ& -p -) { - -260  -v8 -:: -Lol -< -T ->:: -New -( -p -. -rsit -); - - @interface/node_modules/nan/nan_json.h - -9 #ide -NAN_JSON_H_ - - -10  - #NAN_JSON_H_ - - - ) - -12 #i -NODE_MODULE_VERSION - < -NODE_0_12_MODULE_VERSION - - -13  - #NAN_JSON_H_NEED_PARSE - 1 - - ) - -15  - #NAN_JSON_H_NEED_PARSE - 0 - - ) - -18 #i -NODE_MODULE_VERSION - > -NODE_7_0_MODULE_VERSION - - -19  - #NAN_JSON_H_NEED_STRINGIFY - 0 - - ) - -21  - #NAN_JSON_H_NEED_STRINGIFY - 1 - - ) - -24 as - cJSON - { - -25 - mpublic -: - -26 - $JSON -() { - -27 #i -NAN_JSON_H_NEED_PARSE - + -NAN_JSON_H_NEED_STRINGIFY - - -28 -N -:: -HdSce - -sce -; - -30 -N -:: -MaybeLol -< -v8 -:: -Vue -> -maybe_glob_js - = N:: - `G -( - -31 -N -:: - `GCutCڋxt -()-> - `Glob -(), - -32 -N -:: - `New -("JSON"). - `ToLolChecked -() - -35 - `as -(! -maybe_glob_js -. - `IsEmy -() && "global JSON ismpty"); - -36 -v8 -:: -Lol - -v_glob_js - = -maybe_glob_js -. - `ToLolChecked -(); - -38 - `as -( -v_glob_js --> - `IsObje -() && "global JSON isotn object"); - -39 -N -:: -MaybeLol -< -v8 -:: -Obje -> -maybe_obj_glob_js - = - -40 -N -:: -To -< -v8 -:: -Obje ->( -v_glob_js -); - -42 - `as -(! -maybe_obj_glob_js -. - `IsEmy -() && "global JSON object ismpty"); - -43 -v8 -:: -Lol - -glob_js - = -maybe_obj_glob_js -. - `ToLolChecked -(); - -45 #i -NAN_JSON_H_NEED_PARSE - - -46 -N -:: -MaybeLol -< -v8 -:: -Vue -> -maybe_r_mhod - = N:: - `G -( - -47 -glob_js -, -N -:: - `New -("r"). - `ToLolChecked -() - -50 - `as -(! -maybe_r_mhod -. - `IsEmy -() && "JSON.parse ismpty"); - -51 -v8 -:: -Lol - -r_mhod - = -maybe_r_mhod -. - `ToLolChecked -(); - -53 - `as -( -r_mhod --> - `IsFuni -() && "JSON.parse isot function"); - -54 -r_cb_ -. - `Ret -( -r_mhod -. -As -< -v8 -:: -Funi ->()); - -57 #i -NAN_JSON_H_NEED_STRINGIFY - - -58 -N -:: -MaybeLol -< -v8 -:: -Vue -> -maybe_rgify_mhod - = N:: - `G -( - -59 -glob_js -, -N -:: - `New -("rgify"). - `ToLolChecked -() - -62 - `as -(! -maybe_rgify_mhod -. - `IsEmy -() && "JSON.stringify ismpty"); - -63 -v8 -:: -Lol - -rgify_mhod - = - -64 -maybe_rgify_mhod -. - `ToLolChecked -(); - -66 - `as -( - -67 -rgify_mhod --> - `IsFuni -() && "JSON.stringify isot function" - -69 -rgify_cb_ -. - `Ret -( -rgify_mhod -. -As -< -v8 -:: -Funi ->()); - -74 -le - - -75 -N -:: -MaybeLol -< -v8 -:: -Vue -> - `P -(v8:: -Lol - -js_rg -) { - -76 -N -:: -EsbHdSce - -sce -; - -77 #i -NAN_JSON_H_NEED_PARSE - - -78  -sce -. - `Es -( - `r -( -js_rg -)); - -80 -N -:: -MaybeLol -< -v8 -:: -Vue -> -su -; - -81 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - && \ - -82 -NODE_MODULE_VERSION - < -IOJS_2_0_MODULE_VERSION - - -83 -su - = -v8 -:: -JSON -:: - `P -( -js_rg -); - -85 #i -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION - - -86 -v8 -:: -Lol - -cڋxt__isީe - = -N -:: - `GCutCڋxt -(); - -88 -v8 -:: -Isީe -* -cڋxt__isީe - = v8::Isީe:: - `GCut -(); - -90 -su - = -v8 -:: -JSON -:: - `P -( -cڋxt__isީe -, -js_rg -); - -93 i( -su -. - `IsEmy -() -v8 -:: -Lol -(); - -94  -sce -. - `Es -( -su -. - `ToLolChecked -()); - -96 - } -} - -98 -le - - -99 - gN -:: -MaybeLol -< -v8 -:: -Sg -> -Sgify -(v8:: -Lol - -js_obje -) { - -100 -N -:: -EsbHdSce - -sce -; - -101 - gN -:: -MaybeLol -< -v8 -:: -Sg -> -su - = - -102 #i -NAN_JSON_H_NEED_STRINGIFY - - -103 -N -:: -To -< -v8 -:: -Sg ->( -rgify -( -js_obje -)); - -105 - gv8 -:: -JSON -:: -Sgify -( -N -:: -GCutCڋxt -(), -js_obje -); - -107 i( - gsu -. -IsEmy -() - gv8 -:: -Lol -< -v8 -:: -Sg ->(); - -108  - gsce -. -Es -( -su -. -ToLolChecked -()); - -111 -le - - -112 - gN -:: -MaybeLol -< -v8 -:: -Sg -> -Sgify -(v8:: -Lol - -js_obje -, - -113 -v8 -:: -Lol - -g -) { - -114 -N -:: -EsbHdSce - -sce -; - -115 - gN -:: -MaybeLol -< -v8 -:: -Sg -> -su - = - -116 #i -NAN_JSON_H_NEED_STRINGIFY - - -117 -N -:: -To -< -v8 -:: -Sg ->( -rgify -( -js_obje -, -g -)); - -119 - gv8 -:: -JSON -:: -Sgify -( -N -:: -GCutCڋxt -(), -js_obje -, -g -); - -121 i( - gsu -. -IsEmy -() - gv8 -:: -Lol -< -v8 -:: -Sg ->(); - -122  - gsce -. -Es -( -su -. -ToLolChecked -()); - -125 - give -: - -126 - $NAN_DISALLOW_ASSIGN_COPY_MOVE -( -JSON -) - -127 #i -NAN_JSON_H_NEED_PARSE - - -128 -N -:: -Clback - -r_cb_ -; - -130 #i -NAN_JSON_H_NEED_STRINGIFY - - -131 -N -:: -Clback - -rgify_cb_ -; - -134 #i -NAN_JSON_H_NEED_PARSE - - -135 -le - -v8 -:: -Lol - - `r -(v8::Lol -g -) { - -136 - `as -(! -r_cb_ -. - `IsEmy -() && "parse_cb_ ismpty"); - -137 -AsyncResour - - `sour -("nan:JSON.parse"); - -138  -r_cb_ -. - `Cl -(1, & -g -, & -sour -). - `FromMaybe -( -v8 -:: -Lol -()); - -139 - } -} - -142 #i -NAN_JSON_H_NEED_STRINGIFY - - -143 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -rgify -(v8::Lol -g -) { - -144 -as -(! -rgify_cb_ -. -IsEmy -() && "stringify_cb_ ismpty"); - -145 -AsyncResour - -sour -("nan:JSON.stringify"); - -146  - grgify_cb_ -. -Cl -(1, & -g -, & -sour -) - -147 . -FromMaybe -( -v8 -:: -Lol -()); - -150 -le - - gv8 -:: -Lol -< -v8 -:: -Vue -> -rgify -(v8::Lol -g -, - -151 -v8 -:: -Lol - -g -) { - -152 -as -(! -rgify_cb_ -. -IsEmy -() && "stringify_cb_ ismpty"); - -154 - gv8 -:: -Lol -< -v8 -:: -Vue -> -gv -[] = { - -155 -g -, - -156 -N -:: -Nu -(), - -157 -g - - -159 -AsyncResour - -sour -("nan:JSON.stringify"); - -160  - grgify_cb_ -. -Cl -(3, -gv -, & -sour -) - -161 . -FromMaybe -( -v8 -:: -Lol -()); - - @interface/node_modules/nan/nan_maybe_43_inl.h - -9 #ide -NAN_MAYBE_43_INL_H_ - - -10  - #NAN_MAYBE_43_INL_H_ - - - ) - -12 - gme -< -tyme - - gT -> - -13 -usg - - gMaybeLol - = -v8 -:: -MaybeLol -< -T ->; - -15 -le - - -16 - gMaybeLol -< - gv8 -:: -Sg -> -ToDaSg -( -v8 -:: -Lol - -v -) { - -17 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -18 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -19  - gsce -. -Es -( -v --> -ToDaSg -( -isީe --> -GCutCڋxt -()) - -20 . -FromMaybe -( -v8 -:: -Lol -())); - -23 -le - - -24 - gMaybeLol -< - gv8 -:: -Ut32 -> -ToAayIndex -( -v8 -:: -Lol - -v -) { - -25 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -26 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -27  - gsce -. -Es -( -v --> -ToAayIndex -( -isީe --> -GCutCڋxt -()) - -28 . -FromMaybe -( -v8 -:: -Lol -())); - -31 -le - - -32 - gMaybe -< - gbo -> -Equs -( -v8 -:: -Lol - -a -, v8::Lol( -b -)) { - -33 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -34 - gv8 -:: -HdSce - -sce -( -isީe -); - -35  - ga --> -Equs -( -isީe --> -GCutCڋxt -(), -b -); - -38 -le - - -39 - gMaybeLol -< - gv8 -:: -Obje -> -NewIn -( -v8 -:: -Lol - -h -) { - -40 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -41 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -42  - gsce -. -Es -( -h --> -NewIn -( -isީe --> -GCutCڋxt -()) - -43 . -FromMaybe -( -v8 -:: -Lol -())); - -46 -le - - -47 - gMaybeLol -< - gv8 -:: -Obje -> -NewIn -( - -48 -v8 -:: -Lol - -h - - -49 ,  -gc - - -50 , -v8 -:: -Lol - -gv -[]) { - -51 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -52 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -53  - gsce -. -Es -( -h --> -NewIn -( -isީe --> -GCutCڋxt -(), -gc -, -gv -) - -54 . -FromMaybe -( -v8 -:: -Lol -())); - -57 -le - - -58 - gMaybeLol -< - gv8 -:: -Obje -> -NewIn -( -v8 -:: -Lol - -h -) { - -59 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -60 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -61  - gsce -. -Es -( -h --> -NewIn -( -isީe --> -GCutCڋxt -()) - -62 . -FromMaybe -( -v8 -:: -Lol -())); - -66 -le - - gMaybeLol -< - gv8 -:: -Funi -> -GFuni -( - -67 -v8 -:: -Lol - -t -) { - -68 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -69 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -70  - gsce -. -Es -( -t --> -GFuni -( -isީe --> -GCutCڋxt -()) - -71 . -FromMaybe -( -v8 -:: -Lol -())); - -74 -le - - gMaybe -< - gbo -> -S -( - -75 -v8 -:: -Lol - -obj - - -76 , -v8 -:: -Lol - -key - - -77 , -v8 -:: -Lol - -vue -) { - -78 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -79 - gv8 -:: -HdSce - -sce -( -isީe -); - -80  - gobj --> -S -( -isީe --> -GCutCڋxt -(), -key -, -vue -); - -83 -le - - gMaybe -< - gbo -> -S -( - -84 -v8 -:: -Lol - -obj - - -85 , -ut32_t - -dex - - -86 , -v8 -:: -Lol - -vue -) { - -87 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -88 - gv8 -:: -HdSce - -sce -( -isީe -); - -89  - gobj --> -S -( -isީe --> -GCutCڋxt -(), -dex -, -vue -); - -92 #i -NODE_MODULE_VERSION - < -NODE_4_0_MODULE_VERSION - - -93  - ~"n_defe_own_ݔty_hr.h -" - -96 -le - - gMaybe -< - gbo -> -DefeOwnPrݔty -( - -97 -v8 -:: -Lol - -obj - - -98 , -v8 -:: -Lol - -key - - -99 , -v8 -:: -Lol - -vue - - -100 , -v8 -:: -PrݔtyAribu - -ibs - = v8:: -Ne -) { - -101 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -102 - gv8 -:: -HdSce - -sce -( -isީe -); - -103 #i -NODE_MODULE_VERSION - > -NODE_4_0_MODULE_VERSION - - -104  - gobj --> -DefeOwnPrݔty -( -isީe --> -GCutCڋxt -(), -key -, -vue -, - -105 -ibs -); - -107 - gMaybe -< - gv8 -:: -PrݔtyAribu -> -maybeCut - = - -108 -obj --> -GPrݔtyAribus -( -isީe --> -GCutCڋxt -(), -key -); - -109 i( - gmaybeCut -. -IsNhg -()) { - -110  - gNhg -< - gbo ->(); - -112 - gv8 -:: -PrݔtyAribu - -cut - = -maybeCut -. -FromJu -(); - -113  - gimp -:: -DefeOwnPrݔtyHr -( -cut -, -obj -, -key -, -vue -, -ibs -); - -117 -NAN_DEPRECATED - -le - - gMaybe -< - gbo -> -FS -( - -118 -v8 -:: -Lol - -obj - - -119 , -v8 -:: -Lol - -key - - -120 , -v8 -:: -Lol - -vue - - -121 , -v8 -:: -PrݔtyAribu - -ibs - = v8:: -Ne -) { - -122 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -123 - gv8 -:: -HdSce - -sce -( -isީe -); - -124 #i -NODE_MODULE_VERSION - > -NODE_9_0_MODULE_VERSION - - -125  - gkey --> -IsName -() - -126 ? - gobj --> -DefeOwnPrݔty -( -isީe --> -GCutCڋxt -(), - -127 -key -. -As -< -v8 -:: -Name ->(), -vue -, -ibs -) - -128 : -Nhg -< -bo ->(); - -130  - gobj --> -FS -( -isީe --> -GCutCڋxt -(), -key -, -vue -, -ibs -); - -134 -le - - gMaybeLol -< - gv8 -:: -Vue -> -G -( - -135 -v8 -:: -Lol - -obj - - -136 , -v8 -:: -Lol - -key -) { - -137 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -138 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -139  - gsce -. -Es -( -obj --> -G -( -isީe --> -GCutCڋxt -(), -key -) - -140 . -FromMaybe -( -v8 -:: -Lol -())); - -143 -le - - -144 - gMaybeLol -< - gv8 -:: -Vue -> -G -( -v8 -:: -Lol - -obj -, -ut32_t - -dex -) { - -145 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -146 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -147  - gsce -. -Es -( -obj --> -G -( -isީe --> -GCutCڋxt -(), -dex -) - -148 . -FromMaybe -( -v8 -:: -Lol -())); - -151 -le - - gv8 -:: -PrݔtyAribu - -GPrݔtyAribus -( - -152 -v8 -:: -Lol - -obj - - -153 , -v8 -:: -Lol - -key -) { - -154 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -155 - gv8 -:: -HdSce - -sce -( -isީe -); - -156  - gobj --> -GPrݔtyAribus -( -isީe --> -GCutCڋxt -(), -key -) - -157 . -FromJu -(); - -160 -le - - gMaybe -< - gbo -> -Has -( - -161 -v8 -:: -Lol - -obj - - -162 , -v8 -:: -Lol - -key -) { - -163 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -164 - gv8 -:: -HdSce - -sce -( -isީe -); - -165  - gobj --> -Has -( -isީe --> -GCutCڋxt -(), -key -); - -168 -le - - gMaybe -< - gbo -> -Has -( -v8 -:: -Lol - -obj -, -ut32_t - -dex -) { - -169 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -170 - gv8 -:: -HdSce - -sce -( -isީe -); - -171  - gobj --> -Has -( -isީe --> -GCutCڋxt -(), -dex -); - -174 -le - - gMaybe -< - gbo -> -De -( - -175 -v8 -:: -Lol - -obj - - -176 , -v8 -:: -Lol - -key -) { - -177 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -178 - gv8 -:: -HdSce - -sce -( -isީe -); - -179  - gobj --> -De -( -isީe --> -GCutCڋxt -(), -key -); - -182 -le - - -183 - gMaybe -< - gbo -> -De -( -v8 -:: -Lol - -obj -, -ut32_t - -dex -) { - -184 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -185 - gv8 -:: -HdSce - -sce -( -isީe -); - -186  - gobj --> -De -( -isީe --> -GCutCڋxt -(), -dex -); - -189 -le - - -190 - gMaybeLol -< - gv8 -:: -Aay -> -GPrݔtyNames -( -v8 -:: -Lol - -obj -) { - -191 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -192 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -193  - gsce -. -Es -( -obj --> -GPrݔtyNames -( -isީe --> -GCutCڋxt -()) - -194 . -FromMaybe -( -v8 -:: -Lol -())); - -197 -le - - -198 - gMaybeLol -< - gv8 -:: -Aay -> -GOwnPrݔtyNames -( -v8 -:: -Lol - -obj -) { - -199 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -200 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -201  - gsce -. -Es -( -obj --> -GOwnPrݔtyNames -( -isީe --> -GCutCڋxt -()) - -202 . -FromMaybe -( -v8 -:: -Lol -())); - -205 -le - - gMaybe -< - gbo -> -SPry -( - -206 -v8 -:: -Lol - -obj - - -207 , -v8 -:: -Lol - -y -) { - -208 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -209 - gv8 -:: -HdSce - -sce -( -isީe -); - -210  - gobj --> -SPry -( -isީe --> -GCutCڋxt -(), -y -); - -213 -le - - gMaybeLol -< - gv8 -:: -Sg -> -ObjeProToSg -( - -214 -v8 -:: -Lol - -obj -) { - -215 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -216 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -217  - gsce -. -Es -( -obj --> -ObjeProToSg -( -isީe --> -GCutCڋxt -()) - -218 . -FromMaybe -( -v8 -:: -Lol -())); - -221 -le - - gMaybe -< - gbo -> -HasOwnPrݔty -( - -222 -v8 -:: -Lol - -obj - - -223 , -v8 -:: -Lol - -key -) { - -224 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -225 - gv8 -:: -HdSce - -sce -( -isީe -); - -226  - gobj --> -HasOwnPrݔty -( -isީe --> -GCutCڋxt -(), -key -); - -229 -le - - gMaybe -< - gbo -> -HasRlNamedPrݔty -( - -230 -v8 -:: -Lol - -obj - - -231 , -v8 -:: -Lol - -key -) { - -232 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -233 - gv8 -:: -HdSce - -sce -( -isީe -); - -234  - gobj --> -HasRlNamedPrݔty -( -isީe --> -GCutCڋxt -(), -key -); - -237 -le - - gMaybe -< - gbo -> -HasRlIndexedPrݔty -( - -238 -v8 -:: -Lol - -obj - - -239 , -ut32_t - -dex -) { - -240 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -241 - gv8 -:: -HdSce - -sce -( -isީe -); - -242  - gobj --> -HasRlIndexedPrݔty -( -isީe --> -GCutCڋxt -(), -dex -); - -245 -le - - gMaybe -< - gbo -> -HasRlNamedClbackPrݔty -( - -246 -v8 -:: -Lol - -obj - - -247 , -v8 -:: -Lol - -key -) { - -248 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -249 - gv8 -:: -HdSce - -sce -( -isީe -); - -250  - gobj --> -HasRlNamedClbackPrݔty -( -isީe --> -GCutCڋxt -(), -key -); - -253 -le - - gMaybeLol -< - gv8 -:: -Vue -> -GRlNamedPrݔtyInPryCha -( - -254 -v8 -:: -Lol - -obj - - -255 , -v8 -:: -Lol - -key -) { - -256 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -257 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -258  - gsce -. -Es -( -obj --> -GRlNamedPrݔtyInPryCha -( - -259 -isީe --> -GCutCڋxt -(), -key -) - -260 . -FromMaybe -( -v8 -:: -Lol -())); - -263 -le - - gMaybeLol -< - gv8 -:: -Vue -> -GRlNamedPrݔty -( - -264 -v8 -:: -Lol - -obj - - -265 , -v8 -:: -Lol - -key -) { - -266 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -267 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -268  - gsce -. -Es -( - -269 -obj --> -GRlNamedPrݔty -( -isީe --> -GCutCڋxt -(), -key -) - -270 . -FromMaybe -( -v8 -:: -Lol -())); - -273 -le - - gMaybeLol -< - gv8 -:: -Vue -> -ClAsFuni -( - -274 -v8 -:: -Lol - -obj - - -275 , -v8 -:: -Lol - -cv - - -276 ,  -gc - - -277 , -v8 -:: -Lol - -gv -[]) { - -278 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -279 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -280  - gsce -. -Es -( - -281 -obj --> -ClAsFuni -( -isީe --> -GCutCڋxt -(), -cv -, -gc -, -gv -) - -282 . -FromMaybe -( -v8 -:: -Lol -())); - -285 -le - - gMaybeLol -< - gv8 -:: -Vue -> -ClAsCڡru -( - -286 -v8 -:: -Lol - -obj - - -287 ,  -gc -, -v8 -:: -Lol - -gv -[]) { - -288 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -289 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -290  - gsce -. -Es -( - -291 -obj --> -ClAsCڡru -( -isީe --> -GCutCڋxt -(), -gc -, -gv -) - -292 . -FromMaybe -( -v8 -:: -Lol -())); - -295 -le - - -296 - gMaybeLol -< - gv8 -:: -Sg -> -GSourLe -( -v8 -:: -Lol - -msg -) { - -297 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -298 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -299  - gsce -. -Es -( -msg --> -GSourLe -( -isީe --> -GCutCڋxt -()) - -300 . -FromMaybe -( -v8 -:: -Lol -())); - -303 -le - - gMaybe -<> -GLeNumb -( -v8 -:: -Lol - -msg -) { - -304 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -305 - gv8 -:: -HdSce - -sce -( -isީe -); - -306  - gmsg --> -GLeNumb -( -isީe --> -GCutCڋxt -()); - -309 -le - - gMaybe -<> -GSCumn -( -v8 -:: -Lol - -msg -) { - -310 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -311 - gv8 -:: -HdSce - -sce -( -isީe -); - -312  - gmsg --> -GSCumn -( -isީe --> -GCutCڋxt -()); - -315 -le - - gMaybe -<> -GEndCumn -( -v8 -:: -Lol - -msg -) { - -316 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -317 - gv8 -:: -HdSce - -sce -( -isީe -); - -318  - gmsg --> -GEndCumn -( -isީe --> -GCutCڋxt -()); - -321 -le - - gMaybeLol -< - gv8 -:: -Obje -> -CleEmtAt -( - -322 -v8 -:: -Lol - -y - - -323 , -ut32_t - -dex -) { - -324 #i( -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION -) - -325 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -326 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -327 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -328 - gv8 -:: -Lol -< -v8 -:: -Vue -> -em -; - -329 - gv8 -:: -Lol -< -v8 -:: -Obje -> -obj -; - -330 i(! - gy --> -G -( -cڋxt -, -dex -). -ToLol -(& -em -)) { - -331  - gsce -. -Es -( -obj -); - -333 i(! - gem --> -ToObje -( -cڋxt -). -ToLol -(& -obj -)) { - -334  - gsce -. -Es -( -v8 -:: -Lol -()); - -336  - gsce -. -Es -( -obj --> -Cle -()); - -338 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -339 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -340  - gsce -. -Es -( -y --> -CleEmtAt -( -isީe --> -GCutCڋxt -(), -dex -) - -341 . -FromMaybe -( -v8 -:: -Lol -())); - -345 -le - - gMaybeLol -< - gv8 -:: -Vue -> -Cl -( - -346 -v8 -:: -Lol - -fun - - -347 , -v8 -:: -Lol - -cv - - -348 ,  -gc - - -349 , -v8 -:: -Lol - -gv -[]) { - -350 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -351 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -352  - gsce -. -Es -( -fun --> -Cl -( -isީe --> -GCutCڋxt -(), -cv -, -gc -, -gv -) - -353 . -FromMaybe -( -v8 -:: -Lol -())); - - @interface/node_modules/nan/nan_maybe_pre_43_inl.h - -9 #ide -NAN_MAYBE_PRE_43_INL_H_ - - -10  - #NAN_MAYBE_PRE_43_INL_H_ - - - ) - -12 - gme -< -tyme - - gT -> - -13 as - cMaybeLol - { - -14 - mpublic -: - -15 -le - - $MaybeLol -(: - `v_ -( -v8 -:: -Lol -< -T ->()) {} - -17 -me -< -tyme - -S -> - -18 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -19 -le - - -20 - `MaybeLol -( -v8 -:: -Lol -< -S -> -th -: - $v_ -( -th -{ - } -} - -22 -le - - -23 -MaybeLol -( -v8 -:: -Lol -< -S -> -th -) : - -24 -v_ -(* -t_ -< -v8 -:: -Lol -< -T ->*>(& -th -)) {} - -27 -le - -bo - - $IsEmy -(cڡ {  -v_ -. - `IsEmy -(); - } -} - -29 - gme -< -tyme - - gS -> - -30 -le - -bo - -ToLol -( -v8 -:: -Lol -< -S -> * -out -) const { - -31 * -out - = -v_ -; - -32  ! -IsEmy -(); - -35 -le - - gv8 -:: -Lol -< -T -> - $ToLolChecked -() const { - -36 #i - `defed -( -V8_ENABLE_CHECKS -) - -37 - `as -(! - `IsEmy -() && "ToLocalChecked is Empty"); - -39  -v_ -; - -40 - } -} - -42 - gme -< -tyme - - gS -> - -43 -le - - gv8 -:: -Lol -< -S -> -FromMaybe -( -v8 -::Lol -deu_vue -) const { - -44  -IsEmy -(? -deu_vue - : -v8 -:: -Lol -< -S ->( -v_ -); - -47 - give -: - -48 -v8 -:: -Lol -< -T -> -v_ -; - -51 -le - - -52 - gMaybeLol -< - gv8 -:: -Sg -> -ToDaSg -( -v8 -:: -Hd - -v -) { - -53  -MaybeLol -< -v8 -:: -Sg ->( -v --> -ToDaSg -()); - -56 -le - - -57 - gMaybeLol -< - gv8 -:: -Ut32 -> -ToAayIndex -( -v8 -:: -Hd - -v -) { - -58  -MaybeLol -< -v8 -:: -Ut32 ->( -v --> -ToAayIndex -()); - -61 -le - - -62 - gMaybe -< - gbo -> -Equs -( -v8 -:: -Hd - -a -, v8::Hd( -b -)) { - -63  -Ju -< -bo ->( -a --> -Equs -( -b -)); - -66 -le - - -67 - gMaybeLol -< - gv8 -:: -Obje -> -NewIn -( -v8 -:: -Hd - -h -) { - -68  -MaybeLol -< -v8 -:: -Obje ->( -h --> -NewIn -()); - -71 -le - - -72 - gMaybeLol -< - gv8 -:: -Obje -> -NewIn -( - -73 -v8 -:: -Lol - -h - - -74 ,  -gc - - -75 , -v8 -:: -Lol - -gv -[]) { - -76  -MaybeLol -< -v8 -:: -Obje ->( -h --> -NewIn -( -gc -, -gv -)); - -79 -le - - -80 - gMaybeLol -< - gv8 -:: -Obje -> -NewIn -( -v8 -:: -Hd - -h -) { - -81  -MaybeLol -< -v8 -:: -Obje ->( -h --> -NewIn -()); - -84 -le - - -85 - gMaybeLol -< - gv8 -:: -Funi -> -GFuni -( -v8 -:: -Hd - -t -) { - -86  -MaybeLol -< -v8 -:: -Funi ->( -t --> -GFuni -()); - -89 -le - - gMaybe -< - gbo -> -S -( - -90 -v8 -:: -Hd - -obj - - -91 , -v8 -:: -Hd - -key - - -92 , -v8 -:: -Hd - -vue -) { - -93  -Ju -< -bo ->( -obj --> -S -( -key -, -vue -)); - -96 -le - - gMaybe -< - gbo -> -S -( - -97 -v8 -:: -Hd - -obj - - -98 , -ut32_t - -dex - - -99 , -v8 -:: -Hd - -vue -) { - -100  -Ju -< -bo ->( -obj --> -S -( -dex -, -vue -)); - -103  - ~"n_defe_own_ݔty_hr.h -" - -105 -le - - gMaybe -< - gbo -> -DefeOwnPrݔty -( - -106 -v8 -:: -Hd - -obj - - -107 , -v8 -:: -Hd - -key - - -108 , -v8 -:: -Hd - -vue - - -109 , -v8 -:: -PrݔtyAribu - -ibs - = v8:: -Ne -) { - -110 -v8 -:: -PrݔtyAribu - -cut - = -obj --> -GPrݔtyAribus -( -key -); - -111  - gimp -:: -DefeOwnPrݔtyHr -( -cut -, -obj -, -key -, -vue -, -ibs -); - -114 -NAN_DEPRECATED - -le - - gMaybe -< - gbo -> -FS -( - -115 -v8 -:: -Hd - -obj - - -116 , -v8 -:: -Hd - -key - - -117 , -v8 -:: -Hd - -vue - - -118 , -v8 -:: -PrݔtyAribu - -ibs - = v8:: -Ne -) { - -119  -Ju -< -bo ->( -obj --> -FS -( -key -, -vue -, -ibs -)); - -122 -le - - gMaybeLol -< - gv8 -:: -Vue -> -G -( - -123 -v8 -:: -Hd - -obj - - -124 , -v8 -:: -Hd - -key -) { - -125  -MaybeLol -< -v8 -:: -Vue ->( -obj --> -G -( -key -)); - -128 -le - - gMaybeLol -< - gv8 -:: -Vue -> -G -( - -129 -v8 -:: -Hd - -obj - - -130 , -ut32_t - -dex -) { - -131  - gMaybeLol -< - gv8 -:: -Vue ->( -obj --> -G -( -dex -)); - -134 -le - - gMaybe -< - gv8 -:: -PrݔtyAribu -> -GPrݔtyAribus -( - -135 -v8 -:: -Hd - -obj - - -136 , -v8 -:: -Hd - -key -) { - -137  -Ju -< -v8 -:: -PrݔtyAribu ->( -obj --> -GPrݔtyAribus -( -key -)); - -140 -le - - gMaybe -< - gbo -> -Has -( - -141 -v8 -:: -Hd - -obj - - -142 , -v8 -:: -Hd - -key -) { - -143  -Ju -< -bo ->( -obj --> -Has -( -key -)); - -146 -le - - gMaybe -< - gbo -> -Has -( - -147 -v8 -:: -Hd - -obj - - -148 , -ut32_t - -dex -) { - -149  - gJu -< - gbo ->( - gobj --> -Has -( -dex -)); - -152 -le - - gMaybe -< - gbo -> -De -( - -153 -v8 -:: -Hd - -obj - - -154 , -v8 -:: -Hd - -key -) { - -155  -Ju -< -bo ->( -obj --> -De -( -key -)); - -158 -le - - gMaybe -< - gbo -> -De -( - -159 -v8 -:: -Hd - -obj - - -160 , -ut32_t - -dex -) { - -161  - gJu -< - gbo ->( - gobj --> -De -( -dex -)); - -164 -le - - -165 - gMaybeLol -< - gv8 -:: -Aay -> -GPrݔtyNames -( -v8 -:: -Hd - -obj -) { - -166  -MaybeLol -< -v8 -:: -Aay ->( -obj --> -GPrݔtyNames -()); - -169 -le - - -170 - gMaybeLol -< - gv8 -:: -Aay -> -GOwnPrݔtyNames -( -v8 -:: -Hd - -obj -) { - -171  -MaybeLol -< -v8 -:: -Aay ->( -obj --> -GOwnPrݔtyNames -()); - -174 -le - - gMaybe -< - gbo -> -SPry -( - -175 -v8 -:: -Hd - -obj - - -176 , -v8 -:: -Hd - -y -) { - -177  -Ju -< -bo ->( -obj --> -SPry -( -y -)); - -180 -le - - gMaybeLol -< - gv8 -:: -Sg -> -ObjeProToSg -( - -181 -v8 -:: -Hd - -obj -) { - -182  -MaybeLol -< -v8 -:: -Sg ->( -obj --> -ObjeProToSg -()); - -185 -le - - gMaybe -< - gbo -> -HasOwnPrݔty -( - -186 -v8 -:: -Hd - -obj - - -187 , -v8 -:: -Hd - -key -) { - -188  -Ju -< -bo ->( -obj --> -HasOwnPrݔty -( -key -)); - -191 -le - - gMaybe -< - gbo -> -HasRlNamedPrݔty -( - -192 -v8 -:: -Hd - -obj - - -193 , -v8 -:: -Hd - -key -) { - -194  -Ju -< -bo ->( -obj --> -HasRlNamedPrݔty -( -key -)); - -197 -le - - gMaybe -< - gbo -> -HasRlIndexedPrݔty -( - -198 -v8 -:: -Hd - -obj - - -199 , -ut32_t - -dex -) { - -200  - gJu -< - gbo ->( - gobj --> -HasRlIndexedPrݔty -( -dex -)); - -203 -le - - gMaybe -< - gbo -> -HasRlNamedClbackPrݔty -( - -204 -v8 -:: -Hd - -obj - - -205 , -v8 -:: -Hd - -key -) { - -206  -Ju -< -bo ->( -obj --> -HasRlNamedClbackPrݔty -( -key -)); - -209 -le - - gMaybeLol -< - gv8 -:: -Vue -> -GRlNamedPrݔtyInPryCha -( - -210 -v8 -:: -Hd - -obj - - -211 , -v8 -:: -Hd - -key -) { - -212  -MaybeLol -< -v8 -:: -Vue ->( - -213 -obj --> -GRlNamedPrݔtyInPryCha -( -key -)); - -216 -le - - gMaybeLol -< - gv8 -:: -Vue -> -GRlNamedPrݔty -( - -217 -v8 -:: -Hd - -obj - - -218 , -v8 -:: -Hd - -key -) { - -219  -MaybeLol -< -v8 -:: -Vue ->( -obj --> -GRlNamedPrݔty -( -key -)); - -222 -le - - gMaybeLol -< - gv8 -:: -Vue -> -ClAsFuni -( - -223 -v8 -:: -Hd - -obj - - -224 , -v8 -:: -Hd - -cv - - -225 ,  -gc - - -226 , -v8 -:: -Hd - -gv -[]) { - -227  -MaybeLol -< -v8 -:: -Vue ->( -obj --> -ClAsFuni -( -cv -, -gc -, -gv -)); - -230 -le - - gMaybeLol -< - gv8 -:: -Vue -> -ClAsCڡru -( - -231 -v8 -:: -Hd - -obj - - -232 ,  -gc - - -233 , -v8 -:: -Lol - -gv -[]) { - -234  -MaybeLol -< -v8 -:: -Vue ->( -obj --> -ClAsCڡru -( -gc -, -gv -)); - -237 -le - - -238 - gMaybeLol -< - gv8 -:: -Sg -> -GSourLe -( -v8 -:: -Hd - -msg -) { - -239  -MaybeLol -< -v8 -:: -Sg ->( -msg --> -GSourLe -()); - -242 -le - - gMaybe -<> -GLeNumb -( -v8 -:: -Hd - -msg -) { - -243  -Ju -<>( -msg --> -GLeNumb -()); - -246 -le - - gMaybe -<> -GSCumn -( -v8 -:: -Hd - -msg -) { - -247  -Ju -<>( -msg --> -GSCumn -()); - -250 -le - - gMaybe -<> -GEndCumn -( -v8 -:: -Hd - -msg -) { - -251  -Ju -<>( -msg --> -GEndCumn -()); - -254 -le - - gMaybeLol -< - gv8 -:: -Obje -> -CleEmtAt -( - -255 -v8 -:: -Hd - -y - - -256 , -ut32_t - -dex -) { - -257  - gMaybeLol -< - gv8 -:: -Obje ->( -y --> -CleEmtAt -( -dex -)); - -260 -le - - gMaybeLol -< - gv8 -:: -Vue -> -Cl -( - -261 -v8 -:: -Lol - -fun - - -262 , -v8 -:: -Lol - -cv - - -263 ,  -gc - - -264 , -v8 -:: -Lol - -gv -[]) { - -265  -MaybeLol -< -v8 -:: -Vue ->( -fun --> -Cl -( -cv -, -gc -, -gv -)); - - @interface/node_modules/nan/nan_new.h - -9 #ide -NAN_NEW_H_ - - -10  - #NAN_NEW_H_ - - - ) - -12 -mea - - gimp - { - -15 - gme - < -tyme - - gT -> - gv8 -:: -Lol -< -T -> -To -( -v8 -::Lol -i -); - -17 - gme - <> - -18 -le - - -19 - gv8 -:: -Lol -< -v8 -:: -Ieg -> - -20 -To -< -v8 -:: -Ieg ->(v8:: -Lol - -i -) { - -21  -N -:: -To -< -v8 -:: -Ieg ->( -i -). -ToLolChecked -(); - -24 - gme - <> - -25 -le - - -26 - gv8 -:: -Lol -< -v8 -:: -I32 -> - -27 -To -< -v8 -:: -I32 ->(v8:: -Lol - -i -) { - -28  -N -:: -To -< -v8 -:: -I32 ->( -i -). -ToLolChecked -(); - -31 - gme - <> - -32 -le - - -33 - gv8 -:: -Lol -< -v8 -:: -Ut32 -> - -34 -To -< -v8 -:: -Ut32 ->(v8:: -Lol - -i -) { - -35  -N -:: -To -< -v8 -:: -Ut32 ->( -i -). -ToLolChecked -(); - -38 - gme - < -tyme - - gT ->  - sFayBa - { - -39  - gv8 -:: - tLol -< - tT -> - ttu_t -; - -42 - gme - < -tyme - - gT ->  - sMaybeFayBa - { - -43  - gMaybeLol -< - tT -> - ttu_t -; - -46 - gme - < -tyme - - gT ->  - gFay -; - -48 - gme - <> - -49  - gFay -< - gv8 -:: -Aay -> : -FayBa -< -v8 -::Array> { - -50  -le - -tu_t - -New -(); - -51  -le - -tu_t - -New -( -ngth -); - -54 - gme - <> - -55  - gFay -< - gv8 -:: -Boޗn -> : -FayBa -< -v8 -::Boolean> { - -56  -le - -tu_t - -New -( -bo - -vue -); - -59 - gme - <> - -60  - gFay -< - gv8 -:: -BoޗnObje -> : -FayBa -< -v8 -::BooleanObject> { - -61  -le - -tu_t - -New -( -bo - -vue -); - -64 - gme - <> - -65  - gFay -< - gv8 -:: -Cڋxt -> : -FayBa -< -v8 -::Context> { - -66  -le - - -67 -tu_t - - -68 -New - -v8 -:: -ExnsiCfiguti -* -exnsis - = -NULL - - -69 , -v8 -:: -Lol - -tm - = v8::Local() - -70 , -v8 -:: -Lol - -obj - = v8::Local()); - -73 - gme - <> - -74  - gFay -< - gv8 -:: -De -> : -MaybeFayBa -< -v8 -::Date> { - -75  -le - -tu_t - -New -( -vue -); - -78 - gme - <> - -79  - gFay -< - gv8 -:: -Ex -> : -FayBa -< -v8 -::External> { - -80  -le - -tu_t - -New -(* -vue -); - -83 - gme - <> - -84  - gFay -< - gv8 -:: -Funi -> : -FayBa -< -v8 -::Function> { - -85  -le - - -86 -tu_t - - -87 -New - -FuniClback - -back - - -88 , -v8 -:: -Lol - -da - = v8::Local()); - -91 - gme - <> - -92  - gFay -< - gv8 -:: -FuniTeme -> : -FayBa -< -v8 -::FunctionTemplate> { - -93  -le - - -94 -tu_t - - -95 -New - -FuniClback - -back - = -NULL - - -96 , -v8 -:: -Lol - -da - = v8::Local() - -97 , -v8 -:: -Lol - -sigtu - = v8::Local()); - -100 - gme - <> - -101  - gFay -< - gv8 -:: -Numb -> : -FayBa -< -v8 -::Number> { - -102  -le - -tu_t - -New -( -vue -); - -105 - gme - <> - -106  - gFay -< - gv8 -:: -NumbObje -> : -FayBa -< -v8 -::NumberObject> { - -107  -le - -tu_t - -New -( -vue -); - -110 - gme - < -tyme - - gT -> - -111  - gIegFay - : -FayBa -< -T -> { - -112  -tyme - - tFayBa -< - tT ->:: - ttu_t -eturn_t; - -113  -le - -tu_t - -New -( -t32_t - -vue -); - -114  -le - -tu_t - -New -( -ut32_t - -vue -); - -117 - gme - <> - -118  - gFay -< - gv8 -:: -Ieg -> : -IegFay -< -v8 -::Integer> {}; - -120 - gme - <> - -121  - gFay -< - gv8 -:: -I32 -> : -IegFay -< -v8 -::Int32> {}; - -123 - gme - <> - -124  - gFay -< - gv8 -:: -Ut32 -> : -FayBa -< -v8 -::Uint32> { - -125  -le - -tu_t - -New -( -t32_t - -vue -); - -126  -le - -tu_t - -New -( -ut32_t - -vue -); - -129 - gme - <> - -130  - gFay -< - gv8 -:: -Obje -> : -FayBa -< -v8 -::Object> { - -131  -le - -tu_t - -New -(); - -134 - gme - <> - -135  - gFay -< - gv8 -:: -ObjeTeme -> : -FayBa -< -v8 -::ObjectTemplate> { - -136  -le - -tu_t - -New -(); - -139 - gme - <> - -140  - gFay -< - gv8 -:: -RegExp -> : -MaybeFayBa -< -v8 -::RegExp> { - -141  -le - -tu_t - -New -( - -142 -v8 -:: -Lol - -n -, v8:: -RegExp -:: -Fgs - -ags -); - -145 - gme - <> - -146  - gFay -< - gv8 -:: -St -> : -MaybeFayBa -< -v8 -::Script> { - -147  -le - -tu_t - -New - -v8 -:: -Lol - -sour -); - -148  -le - -tu_t - -New - -v8 -:: -Lol - -sour - - -149 , -v8 -:: -StOrig - cڡ& -ig -); - -152 - gme - <> - -153  - gFay -< - gv8 -:: -Sigtu -> : -FayBa -< -v8 -::Signature> { - -154  -v8 -:: - tLol -< - tv8 -:: - tFuniTeme -> - tFTH -; - -155  -le - -tu_t - -New -( -FTH - -iv - = FTH()); - -158 - gme - <> - -159  - gFay -< - gv8 -:: -Sg -> : -MaybeFayBa -< -v8 -::String> { - -160  -le - -tu_t - -New -(); - -161  -le - -tu_t - -New -(cڡ * -vue -,  -ngth - = -1); - -162  -le - -tu_t - -New -(cڡ -ut16_t - * -vue -,  -ngth - = -1); - -163  -le - -tu_t - -New -( -d -:: -rg - cڡ& -vue -); - -165  -le - -tu_t - -New -( -v8 -:: -Sg -:: -ExSgResour - * -vue -); - -166  -le - -tu_t - -New -( -ExOBySgResour - * -vue -); - -169 - gme - <> - -170  - gFay -< - gv8 -:: -SgObje -> : -FayBa -< -v8 -::StringObject> { - -171  -le - -tu_t - -New -( -v8 -:: -Lol - -vue -); - -176 #i( -NODE_MODULE_VERSION - >= 12) - -178 -mea - - gimp - { - -180 - gme - <> - -181  - gFay -< - gv8 -:: -UnboundSt -> : -MaybeFayBa -< -v8 -::UnboundScript> { - -182  -le - -tu_t - -New - -v8 -:: -Lol - -sour -); - -183  -le - -tu_t - -New - -v8 -:: -Lol - -sour - - -184 , -v8 -:: -StOrig - cڡ& -ig -); - -189  - ~"n_imemti_12_l.h -" - -193  - ~"n_imemti_e_12_l.h -" - -199 - gme - < -tyme - - gT -> - -200 -tyme - - gimp -:: -Fay -< -T ->:: -tu_t - - -201 - $New -() { - -202  -imp -:: -Fay -< -T ->:: - `New -(); - -203 - } -} - -205 - gme - < -tyme - - gT -,ym - gA0 -> - -206 -tyme - - gimp -:: -Fay -< -T ->:: -tu_t - - -207 - $New -( -A0 - -g0 -) { - -208  -imp -:: -Fay -< -T ->:: - `New -( -g0 -); - -209 - } -} - -211 - gme - < -tyme - - gT -,ym - gA0 -,ym - gA1 -> - -212 -tyme - - gimp -:: -Fay -< -T ->:: -tu_t - - -213 - $New -( -A0 - -g0 -, -A1 - -g1 -) { - -214  -imp -:: -Fay -< -T ->:: - `New -( -g0 -, -g1 -); - -215 - } -} - -217 - gme - < -tyme - - gT -,ym - gA0 -,ym - gA1 -,ym - gA2 -> - -218 -tyme - - gimp -:: -Fay -< -T ->:: -tu_t - - -219 - $New -( -A0 - -g0 -, -A1 - -g1 -, -A2 - -g2 -) { - -220  -imp -:: -Fay -< -T ->:: - `New -( -g0 -, -g1 -, -g2 -); - -221 - } -} - -223 - gme - < -tyme - - gT -,ym - gA0 -,ym - gA1 -,ym - gA2 -,ym - gA3 -> - -224 -tyme - - gimp -:: -Fay -< -T ->:: -tu_t - - -225 - $New -( -A0 - -g0 -, -A1 - -g1 -, -A2 - -g2 -, -A3 - -g3 -) { - -226  -imp -:: -Fay -< -T ->:: - `New -( -g0 -, -g1 -, -g2 -, -g3 -); - -227 - } -} - -235 - gme - < -tyme - - gT -> - -236 -tyme - - gimp -:: -Fay -< -T ->:: -tu_t - - -237 -New - -FuniClback - -back - - -238 , -v8 -:: -Lol - -da - = v8::Local()) { - -239  -imp -:: -Fay -< -T ->:: -New -( -back -, -da -); - -243 - gme - < -tyme - - gT -,ym - gA2 -> - -244 -tyme - - gimp -:: -Fay -< -T ->:: -tu_t - - -245 -New - -FuniClback - -back - - -246 , -v8 -:: -Lol - -da - = v8::Local() - -247 , -A2 - -a2 - = - $A2 -()) { - -248  -imp -:: -Fay -< -T ->:: - `New -( -back -, -da -, -a2 -); - -249 - } -} - -253 #i -NODE_MODULE_VERSION - < -IOJS_3_0_MODULE_VERSION - - -254 - gme - < -tyme - - gT -> -le - - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Hd - -h -); - -257 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -258 - gme - < -tyme - - gT -,ym - gM -> - -259 -le - - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Psit - cڡ& -p -); - -261 - gme - < -tyme - - gT -> -le - - gv8 -:: -Lol -< -T -> -New -( -v8 -:: -Psit - cڡ& -p -); - -263 - gme - < -tyme - - gT -,ym - gM -> - -264 -le - - gv8 -:: -Lol -< -T -> -New -( -Psit - cڡ& -p -); - -265 - gme - < -tyme - - gT -> - -266 -le - - gv8 -:: -Lol -< -T -> -New -( -Glob - cڡ& -p -); - -268 -le - - -269 - gimp -:: -Fay -< -v8 -:: -Boޗn ->:: -tu_t - - -270 - $New -( -bo - -vue -) { - -271  -New -< -v8 -:: -Boޗn ->( -vue -); - -272 - } -} - -274 -le - - -275 - gimp -:: -Fay -< -v8 -:: -I32 ->:: -tu_t - - -276 - $New -( -t32_t - -vue -) { - -277  -New -< -v8 -:: -I32 ->( -vue -); - -278 - } -} - -280 -le - - -281 - gimp -:: -Fay -< -v8 -:: -Ut32 ->:: -tu_t - - -282 - $New -( -ut32_t - -vue -) { - -283  -New -< -v8 -:: -Ut32 ->( -vue -); - -284 - } -} - -286 -le - - -287 - gimp -:: -Fay -< -v8 -:: -Numb ->:: -tu_t - - -288 - $New -( -vue -) { - -289  -New -< -v8 -:: -Numb ->( -vue -); - -290 - } -} - -292 -le - - -293 - gimp -:: -Fay -< -v8 -:: -Sg ->:: -tu_t - - -294 - $New -( -d -:: -rg - cڡ& -vue -) { - -295  -New -< -v8 -:: -Sg ->( -vue -); - -296 - } -} - -298 -le - - -299 - gimp -:: -Fay -< -v8 -:: -Sg ->:: -tu_t - - -300 - $New -(cڡ * -vue -,  -ngth -) { - -301  -New -< -v8 -:: -Sg ->( -vue -, -ngth -); - -302 - } -} - -304 -le - - -305 - gimp -:: -Fay -< -v8 -:: -Sg ->:: -tu_t - - -306 - $New -(cڡ -ut16_t - * -vue -,  -ngth -) { - -307  -New -< -v8 -:: -Sg ->( -vue -, -ngth -); - -308 - } -} - -310 -le - - -311 - gimp -:: -Fay -< -v8 -:: -Sg ->:: -tu_t - - -312 - $New -(cڡ * -vue -) { - -313  -New -< -v8 -:: -Sg ->( -vue -); - -314 - } -} - -316 -le - - -317 - gimp -:: -Fay -< -v8 -:: -Sg ->:: -tu_t - - -318 - $New -(cڡ -ut16_t - * -vue -) { - -319  -New -< -v8 -:: -Sg ->( -vue -); - -320 - } -} - -322 -le - - -323 - gimp -:: -Fay -< -v8 -:: -Sg ->:: -tu_t - - -324 - $New -( -v8 -:: -Sg -:: -ExSgResour - * -vue -) { - -325  -New -< -v8 -:: -Sg ->( -vue -); - -326 - } -} - -328 -le - - -329 - gimp -:: -Fay -< -v8 -:: -Sg ->:: -tu_t - - -330 - $New -( -ExOBySgResour - * -vue -) { - -331  -New -< -v8 -:: -Sg ->( -vue -); - -332 - } -} - -334 -le - - -335 - gimp -:: -Fay -< -v8 -:: -RegExp ->:: -tu_t - - -336 -New -( -v8 -:: -Lol - -n -, v8:: -RegExp -:: -Fgs - -ags -) { - -337  -New -< -v8 -:: -RegExp ->( -n -, - gags -); - - @interface/node_modules/nan/nan_object_wrap.h - -9 #ide -NAN_OBJECT_WRAP_H_ - - -10  - #NAN_OBJECT_WRAP_H_ - - - ) - -12 as - cObjeWp - { - -13 - mpublic -: - -14 - $ObjeWp -() { - -15 -fs_ - = 0; - -19 -vtu - ~ - $ObjeWp -() { - -20 i( - `rsit -(). - `IsEmy -()) { - -24 - `rsit -(). - `CˬWk -(); - -25 - `rsit -(). - `Ret -(); - -26 - } -} - -29 - gme - < -ass - - gT -> - -30  -le - -T -* -Unwp -( -v8 -:: -Lol - -obje -) { - -31 -as -(! -obje -. -IsEmy -()); - -32 -as -( -obje --> -IlFldCou -() > 0); - -35 * - gr - = -GIlFldPor -( -obje -, 0); - -36 -ObjeWp -* - gwp - = -ic_ -( -r -); - -37  - gic_ -< - gT -*>( - gwp -); - -41 -le - - gv8 -:: -Lol -< -v8 -:: -Obje -> - $hd -() const { - -42  - `New -( -hd_ -); - -43 - } -} - -46 -le - - gPsit -< - gv8 -:: -Obje ->& - $rsit -() { - -47  -hd_ -; - -48 - } -} - -51 - geed -: - -52 -le -  -Wp -( -v8 -:: -Lol - -obje -) { - -53 -as -( -rsit -(). -IsEmy -()); - -54 -as -( -obje --> -IlFldCou -() > 0); - -55 -SIlFldPor -( -obje -, 0, -this -); - -56 -rsit -(). -Ret -( -obje -); - -57 -MakeWk -(); - -60 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -61 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -63 -le -  - $MakeWk -() { - -64 - `rsit -(). -v8 -:: -PsitBa -:: - `SWk -( - -65 -this -, -WkClback -, -v8 -:: -WkClbackTy -:: -kPam -); - -66 #i -NODE_MAJOR_VERSION - < 10 - -68 - `rsit -(). - `MkInddt -(); - -70 - } -} - -72 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -74 -le -  - $MakeWk -() { - -75 - `rsit -(). -v8 -:: -PsitBa -:: - `SWk -( -this -, -WkClback -); - -76 - `rsit -(). - `MkInddt -(); - -77 - } -} - -81 -le -  - $MakeWk -() { - -82 - `rsit -(). -rsit -. - `MakeWk -( -this -, -WkClback -); - -83 - `rsit -(). - `MkInddt -(); - -84 - } -} - -92 -vtu -  - $Ref -() { - -93 - `as -(! - `rsit -(). - `IsEmy -()); - -94 - `rsit -(). - `CˬWk -(); - -95 -fs_ -++; - -96 - } -} - -107 -vtu -  - $Uef -() { - -108 - `as -(! - `rsit -(). - `IsEmy -()); - -109 - `as -(! - `rsit -(). - `IsWk -()); - -110 - `as -( -fs_ - > 0); - -111 i(-- -fs_ - == 0) - -112 - `MakeWk -(); - -113 - } -} - -115  - gfs_ -; - -117 - give -: - -118 - $NAN_DISALLOW_ASSIGN_COPY_MOVE -( -ObjeWp -) - -119 #i - `defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -120 ( -V8_MAJOR_VERSION - =4 && - `defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -123 - `WkClback -( -v8 -:: -WkClbackInfo -< -ObjeWp -> cڡ& -fo -) { - -124 -ObjeWp -* -wp - = -fo -. - `GPam -(); - -125 - `as -( -wp --> -fs_ - == 0); - -126 -wp --> -hd_ -. - `Ret -(); - -127 -de - -wp -; - -128 - } -} - -130 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -133 -WkClback -( -v8 -:: -WkClbackDa - cڡ& -da -) { - -134 -ObjeWp -* - gwp - = -da -. -GPam -(); - -135 -as -( -wp --> -fs_ - == 0); - -136 -as -( -wp --> -hd_ -. -IsNrDth -()); - -137 - gwp --> - ghd_ -. -Ret -(); - -138 -de - - gwp -; - -143  -WkClback -( -v8 -:: -Psit - -vue -, * -da -) { - -144 -ObjeWp - * - gwp - = -ic_ -( -da -); - -145 -as -( -wp --> -fs_ - == 0); - -146 -as -( -wp --> -hd_ -. -IsNrDth -()); - -147 - gwp --> - ghd_ -. -Ret -(); - -148 -de - - gwp -; - -152 - gPsit -< - gv8 -:: -Obje -> -hd_ -; - - @interface/node_modules/nan/nan_persistent_12_inl.h - -9 #ide -NAN_PERSISTENT_12_INL_H_ - - -10  - #NAN_PERSISTENT_12_INL_H_ - - - ) - -12 - gme -< -tyme - - gT -,ym - gM -> -ass - - gPsit - : - -13 -public - -v8 -:: -Psit -< -T -, - gM -> { - -14 - gpublic -: - -15 -le - -Psit -(: -v8 -::Psit< -T -, - gM ->() {} - -17 - gme -< -tyme - - gS -> -le - -Psit -( -v8 -:: -Lol -< -S -> -th -) : - -18 -v8 -:: -Psit -< -T -, - gM ->( - gv8 -:: -Isީe -:: -GCut -(), - gth -) {} - -20 - gme -< -tyme - - gS -,ym - gM2 -> - -21 -le - - -22 -Psit -(cڡ -v8 -::Psit< -S -, -M2 -> & -th -) : - -23 -v8 -:: -Psit -< -T -, - gM2 ->( - gv8 -:: -Isީe -:: -GCut -(), - gth -) {} - -25 -le -  -Ret -({ - gv8 -:: -PsitBa -< -T ->::Reset(); } - -27 - gme - < -tyme - - gS -> - -28 -le -  -Ret -(cڡ -v8 -:: -Lol -< -S -> & -h -) { - -29 -v8 -:: -PsitBa -< -T ->:: -Ret -(v8:: -Isީe -:: -GCut -(), -h -); - -32 - gme - < -tyme - - gS -> - -33 -le -  -Ret -(cڡ -v8 -:: -PsitBa -< -S -> & -h -) { - -34 -v8 -:: -PsitBa -< -T ->:: -Ret -(v8:: -Isީe -:: -GCut -(), -h -); - -37 - gme -< -tyme - - gP -> - -38 -le -  -SWk -( - -39 -P - * -m - - -40 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -41 , -WkClbackTy - -ty -); - -43 - give -: - -44 -le - -T - * -ݔ -*(cڡ {  * -PsitBa -:: -rsit -; } - -46 - gme -< -tyme - - gS -,ym - gM2 -> - -47 -le -  -Cy -(cڡ -Psit -< -S -, -M2 -> & -th -) { - -48 -TYPE_CHECK -( -T -, -S -); - -50 - gthis --> -Ret -(); - -52 i(! - gth -. -IsEmy -()) { - -53 - gthis --> -Ret -( -th -); - -54 - gM -:: -Cy -( -th -, -this -); - -59 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -60 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -61 -me -< -tyme - -T -> - -62 -ass - -Glob - : -public - -v8 -::Glob< -T -> { - -63 -public -: - -64 -le - -Glob -(: -v8 -::Glob< -T ->() {} - -66 -me -< -tyme - -S -> -le - -Glob -( -v8 -:: -Lol - -th -) : - -67 -v8 -:: -Glob -< -T ->(v8:: -Isީe -:: -GCut -(), -th -) {} - -69 -me -< -tyme - -S -> - -70 -le - - -71 -Glob -(cڡ -v8 -:: -PsitBa -< -S -> & -th -) : - -72 -v8 -:: -Glob -< -S ->(v8:: -Isީe -:: -GCut -(), -th -) {} - -74 -le -  -Ret -({ -v8 -:: -PsitBa -< -T ->::Reset(); } - -76 - gme - < -tyme - - gS -> - -77 -le -  -Ret -(cڡ -v8 -:: -Lol -< -S -> & -h -) { - -78 -v8 -:: -PsitBa -< -T ->:: -Ret -(v8:: -Isީe -:: -GCut -(), -h -); - -81 - gme - < -tyme - - gS -> - -82 -le -  -Ret -(cڡ -v8 -:: -PsitBa -< -S -> & -h -) { - -83 -v8 -:: -PsitBa -< -T ->:: -Ret -(v8:: -Isީe -:: -GCut -(), -h -); - -86 - gme -< -tyme - - gP -> - -87 -le -  -SWk -( - -88 -P - * -m - - -89 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -90 , -WkClbackTy - -ty -) { - -91 - gt_ -< - gPsit -< - gT ->*>( - gthis -)-> -SWk -( - -92 -m -, -back -, -ty -); - -96 - gme -< -tyme - - gT -> - -97 -ass - - gGlob - : -public - -v8 -:: -UniquePsit -< -T -> { - -98 -public -: - -99 -le - -Glob -(: -v8 -:: -UniquePsit -< -T ->() {} - -101 -me -< -tyme - -S -> -le - -Glob -( -v8 -:: -Lol - -th -) : - -102 -v8 -:: -UniquePsit -< -T ->(v8:: -Isީe -:: -GCut -(), - gth -) {} - -104 - gme -< -tyme - - gS -> - -105 -le - - -106 -Glob -(cڡ -v8 -:: -PsitBa -< -S -> & -th -) : - -107 -v8 -:: -UniquePsit -< -S ->(v8:: -Isީe -:: -GCut -(), - gth -) {} - -109 -le -  -Ret -({ - gv8 -:: -PsitBa -< -T ->::Reset(); } - -111 - gme - < -tyme - - gS -> - -112 -le -  -Ret -(cڡ -v8 -:: -Lol -< -S -> & -h -) { - -113 -v8 -:: -PsitBa -< -T ->:: -Ret -(v8:: -Isީe -:: -GCut -(), -h -); - -116 - gme - < -tyme - - gS -> - -117 -le -  -Ret -(cڡ -v8 -:: -PsitBa -< -S -> & -h -) { - -118 -v8 -:: -PsitBa -< -T ->:: -Ret -(v8:: -Isީe -:: -GCut -(), -h -); - -121 - gme -< -tyme - - gP -> - -122 -le -  -SWk -( - -123 -P - * -m - - -124 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -125 , -WkClbackTy - -ty -) { - -126 - gt_ -< - gPsit -< - gT ->*>( - gthis -)-> -SWk -( - -127 -m -, -back -, -ty -); - - @interface/node_modules/nan/nan_persistent_pre_12_inl.h - -9 #ide -NAN_PERSISTENT_PRE_12_INL_H_ - - -10  - #NAN_PERSISTENT_PRE_12_INL_H_ - - - ) - -12 - gme -< -tyme - - gT -> - -13 as - cPsitBa - { - -14 - mv8 -:: -Psit -< -T -> -rsit -; - -15 - mme -< -tyme - - mU -> - -16 -nd - - mv8 -:: -Lol -< -U -> -New -(cڡ -PsitBa - & -p -); - -17 - mme -< -tyme - - mU -,ym - mM -> - -18 -nd - - mv8 -:: -Lol -< -U -> -New -(cڡ -Psit - & -p -); - -19 - mme -< -tyme - - mU -> - -20 -nd - - mv8 -:: -Lol -< -U -> -New -(cڡ -Glob - & -p -); - -21 - mme -< -tyme - - mS -> -nd - -ass - - mRuVue -; - -23 - mpublic -: - -24 -le - - $PsitBa -() : - -25 - $rsit -() {} - -27 -le -  - $Ret -() { - -28 -rsit -. - `Dio -(); - -29 -rsit -. - `Cˬ -(); - -30 - } -} - -32 - gme -< -tyme - - gS -> - -33 -le -  -Ret -(cڡ -v8 -:: -Lol -< -S -> & -h -) { - -34 -TYPE_CHECK -( -T -, -S -); - -36 i(! - grsit -. -IsEmy -()) { - -37 - grsit -. -Dio -(); - -40 i( - gh -. -IsEmy -()) { - -41 - grsit -. -Cˬ -(); - -43 - grsit - = -v8 -:: -Psit -< -T ->:: -New -( -h -); - -47 - gme -< -tyme - - gS -> - -48 -le -  -Ret -(cڡ -PsitBa -< -S -> & -h -) { - -49 -TYPE_CHECK -( -T -, -S -); - -51 i(! - grsit -. -IsEmy -()) { - -52 - grsit -. -Dio -(); - -55 i( - gh -. -IsEmy -()) { - -56 - grsit -. -Cˬ -(); - -58 - grsit - = -v8 -:: -Psit -< -T ->:: -New -( -h -. -rsit -); - -62 -le - -bo - - $IsEmy -(cڡ {  -rsit -. - `IsEmy -(); - } -} - -64 -le -  - $Emy -({ -rsit -. - `Cˬ -(); - } -} - -66 - gme -< -tyme - - gS -> - -67 -le - -bo - - gݔ -==(cڡ -PsitBa -< -S -> & -th -) const { - -68  -this --> -rsit - = -th -.persistent; - -71 - gme -< -tyme - - gS -> - -72 -le - -bo - - gݔ -==(cڡ -v8 -:: -Lol -< -S -> & -th -) const { - -73  -this --> -rsit - = -th -; - -76 - gme -< -tyme - - gS -> - -77 -le - -bo - - gݔ -!=(cڡ -PsitBa -< -S -> & -th -) const { - -78  ! -ݔ -==( -th -); - -81 - gme -< -tyme - - gS -> - -82 -le - -bo - - gݔ -!=(cڡ -v8 -:: -Lol -< -S -> & -th -) const { - -83  ! -ݔ -==( -th -); - -86 - gme -< -tyme - - gP -> - -87 -le -  -SWk -( - -88 -P - * -m - - -89 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -90 , -WkClbackTy - -ty -); - -92 -le -  - $CˬWk -({ -rsit -. - `CˬWk -(); - } -} - -94 -le -  - $MkInddt -({ -rsit -. - `MkInddt -(); - } -} - -96 -le - -bo - - $IsInddt -(cڡ {  -rsit -. - `IsInddt -(); - } -} - -98 -le - -bo - - $IsNrDth -(cڡ {  -rsit -. - `IsNrDth -(); - } -} - -100 -le - -bo - - $IsWk -(cڡ {  -rsit -. - `IsWk -(); - } -} - -102 - give -: - -103 -le - -exic - -PsitBa -( -v8 -:: -Psit -< -T -> -th -) : - -104 - $rsit -( -th -{ - } -} - -105 -le - -exic - - $PsitBa -( -T - * -v -: - $rsit -( -v -{ - } -} - -106 -me -< -tyme - -S -,ym - gM -> -nd - -ass - - gPsit -; - -107 - gme -< -tyme - - gS -> -nd - -ass - - gGlob -; - -108 -nd - -ass - - gObjeWp -; - -111 - gme -< -tyme - - gT -> - -112 as - cNCyabPsitTs - { - -113 - mpublic -: - -114  -Psit -< - tT -, - tNCyabPsitTs - > - -115 - tNCyabPsit -; - -116 cڡ -bo - - mkRetInDeru - = -l -; - -117 - mme -< -tyme - - mS -,ym - mM -> - -118 -le -  -Cy -(cڡ -Psit -< -S -, -M -> & -sour -, - -119 -NCyabPsit - * -de -) { - -120 - mUncompab -< - mv8 -:: -Obje ->(); - -123 - gme -< -tyme - - gO -> -le -  - $Uncompab -() { - -124 - `TYPE_CHECK -( -O -, -v8 -:: -Primive -); - -125 - } -} - -128 - gme -< -tyme - - gT -> - -129  - sCyabPsitTs - { - -130  - mPsit -< - tT -, - tCyabPsitTs - > - tCyabPsit -; - -131 cڡ -bo - - mkRetInDeru - = -ue -; - -132 - mme -< -tyme - - mS -,ym - mM -> - -133  -le -  -Cy -(cڡ -Psit -< -S -, -M -> & -sour -, - -134 -CyabPsit - * -de -) {} - -137 - gme -< -tyme - - gT -,ym - gM -> -ass - - gPsit - : - -138 -public - -PsitBa -< -T -> { - -139 -public -: - -140 -le - -Psit -() {} - -142 -me -< -tyme - -S -> -le - -Psit -( -v8 -:: -Hd - -th -) - -143 : -PsitBa -< -T ->( -v8 -:: -Psit -:: -New -( -th -)) { - -144 -TYPE_CHECK -( -T -, -S -); - -147 -le - -Psit -(cڡ Psi& -th -: -PsitBa -< -T ->() { - -148 -Cy -( -th -); - -151 - gme -< -tyme - - gS -,ym - gM2 -> - -152 -le - -Psit -(cڡ Psit< -S -, -M2 -> & -th -) : - -153 -PsitBa -< -T ->() { - -154 -Cy -( -th -); - -157 -le - - gPsit - & - gݔ -=(cڡ -Psit - & -th -) { - -158 -Cy -( -th -); - -159  * - gthis -; - -162 - gme - < -ass - - gS -, cs - gM2 -> - -163 -le - - gPsit - & - gݔ -=(cڡ -Psit -< -S -, - gM2 -> & - gth -) { - -164 -Cy -( -th -); - -165  * - gthis -; - -168 - gle - ~ -Psit -() { - -169 i( - gM -:: -kRetInDeru - -this --> -Ret -(); - -172 - give -: - -173 -le - -T - * -ݔ -*(cڡ {  * -PsitBa -:: -rsit -; } - -175 - gme -< -tyme - - gS -,ym - gM2 -> - -176 -le -  -Cy -(cڡ -Psit -< -S -, -M2 -> & -th -) { - -177 -TYPE_CHECK -( -T -, -S -); - -179 - gthis --> -Ret -(); - -181 i(! - gth -. -IsEmy -()) { - -182 - gthis --> - grsit - = -v8 -:: -Psit -< -T ->:: -New -( -th -. -rsit -); - -183 - gM -:: -Cy -( -th -, -this -); - -188 - gme -< -tyme - - gT -> - -189 -ass - - gGlob - : -public - -PsitBa -< -T -> { - -190  - sRVue - { - -191 -le - -exic - -RVue -( -Glob -* -obj -: -obje -(obj) {} - -192 -Glob -* -obje -; - -195 - gpublic -: - -196 -le - -Glob -(: -PsitBa -< -T ->(0) { } - -198 -me - < -tyme - -S -> - -199 -le - -Glob -( -v8 -:: -Lol -< -S -> -th -) - -200 : -PsitBa -< -T ->( -v8 -:: -Psit -:: -New -( -th -)) { - -201 -TYPE_CHECK -( -T -, -S -); - -204 - gme - < -tyme - - gS -> - -205 -le - -Glob -(cڡ -PsitBa -< -S -> & -th -) - -206 : -PsitBa -< -T ->( -th -) { - -207 -TYPE_CHECK -( -T -, -S -); - -212 -le - -Glob -( -RVue - -rvue -) - -213 : -PsitBa -< -T ->( -rvue -. -obje --> -rsit -) { - -214 -rvue -. -obje --> -Ret -(); - -216 - gle - ~ -Glob -({ - gthis --> -Ret -(); } - -220 - gme -< -tyme - - gS -> - -221 -le - - gGlob - & - gݔ -=( -Glob -< -S -> -rhs -) { - -222 -TYPE_CHECK -( -T -, -S -); - -223 - gthis --> -Ret -( -rhs -. -rsit -); - -224 - grhs -. -Ret -(); - -225  * - gthis -; - -230 -le - -ݔ - -RVue -({  RVue( -this -); } - -234 -Glob - -Pass -({  Glob( -RVue -( -this -)); } - -236 - give -: - -237 -Glob -(Global &); - -238  - gݔ -=( -Glob - &); - -239 - gme -< -tyme - - gS -> -nd - -ass - - gRuVue -; - - @interface/node_modules/nan/nan_private.h - -9 #ide -NAN_PRIVATE_H_ - - -10  - #NAN_PRIVATE_H_ - - - ) - -12 -le - - gMaybe -< - gbo -> - -13 -HasPrive -( -v8 -:: -Lol - -obje -, v8::Lol -key -) { - -14 -HdSce - -sce -; - -15 #i -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION - - -16 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -17 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -18 - gv8 -:: -Lol -< -v8 -:: -Prive -> -ive_key - = v8::Prive:: -FApi -( -isީe -, -key -); - -19  - gobje --> -HasPrive -( -cڋxt -, -ive_key -); - -21  -Ju -(! -obje --> -GHiddVue -( -key -). -IsEmy -()); - -25 -le - - gMaybeLol -< - gv8 -:: -Vue -> - -26 -GPrive -( -v8 -:: -Lol - -obje -, v8::Lol -key -) { - -27 #i -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION - - -28 -v8 -:: -Isީe - * -isީe - = v8::Isީe:: -GCut -(); - -29 - gv8 -:: -EsbHdSce - -sce -( -isީe -); - -30 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -31 - gv8 -:: -Lol -< -v8 -:: -Prive -> -ive_key - = v8::Prive:: -FApi -( -isީe -, -key -); - -32 - gv8 -:: -MaybeLol -< -v8 -:: -Vue -> -v - = -obje --> -GPrive -( -cڋxt -, -ive_key -); - -33  - gsce -. -Es -( -v -. -ToLolChecked -()); - -35 -EsbHdSce - - gsce -; - -36 - gv8 -:: -Lol -< -v8 -:: -Vue -> -v - = -obje --> -GHiddVue -( -key -); - -37 i( - gv -. -IsEmy -()) { - -38 - gv - = -Undefed -(); - -40  - gsce -. -Es -( -v -); - -44 -le - - gMaybe -< - gbo -> -SPrive -( - -45 -v8 -:: -Lol - -obje -, - -46 -v8 -:: -Lol - -key -, - -47 -v8 -:: -Lol - -vue -) { - -48 #i -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION - - -49 -HdSce - -sce -; - -50 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -51 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -52 - gv8 -:: -Lol -< -v8 -:: -Prive -> -ive_key - = v8::Prive:: -FApi -( -isީe -, -key -); - -53  - gobje --> -SPrive -( -cڋxt -, -ive_key -, -vue -); - -55  -Ju -( -obje --> -SHiddVue -( -key -, -vue -)); - -59 -le - - gMaybe -< - gbo -> -DePrive -( - -60 -v8 -:: -Lol - -obje -, - -61 -v8 -:: -Lol - -key -) { - -62 #i -NODE_MODULE_VERSION - > -NODE_6_0_MODULE_VERSION - - -63 -HdSce - -sce -; - -64 - gv8 -:: -Isީe - * -isީe - = -v8 -::Isީe:: -GCut -(); - -65 - gv8 -:: -Lol -< -v8 -:: -Prive -> -ive_key - = v8::Prive:: -FApi -( -isީe -, -key -); - -66  - gobje --> -DePrive -( -isީe --> -GCutCڋxt -(), -ive_key -); - -68  -Ju -( -obje --> -DeHiddVue -( -key -)); - - @interface/node_modules/nan/nan_string_bytes.h - -22 #ide -NAN_STRING_BYTES_H_ - - -23  - #NAN_STRING_BYTES_H_ - - - ) - -27 -mea - - gimp - { - -29 -usg - - gv8 -:: -Lol -; - -30 -usg - - gv8 -:: -Obje -; - -31 -usg - - gv8 -:: -Sg -; - -32 -usg - - gv8 -:: -Vue -; - -37  - #ba64_coded_size -( -size -((siz+ 2 - ((siz+ 2% 3)/ 3 * 4) - - ) - -43  -bo - -cڏs_n_ascii_ow -(cڡ * -buf -, -size_t - -n -) { - -44  -size_t - - gi - = 0; i < - gn -; ++i) { - -45 i( - gbuf -[ -i -] & 0x80 - gue -; - -47  - gl -; - -51  -bo - -cڏs_n_ascii -(cڡ * -c -, -size_t - -n -) { - -52 i( - gn - < 16) { - -53  -cڏs_n_ascii_ow -( -c -, -n -); - -56 cڡ  - gbys_r_wd - = (*); - -57 cڡ  - gign_mask - = -bys_r_wd - - 1; - -58 cڡ  - guligd - = -t_ -< -u_t ->( -c -& -ign_mask -; - -60 i( - guligd - > 0) { - -61 cڡ  - gn - = -bys_r_wd - - -uligd -; - -62 i( -cڏs_n_ascii_ow -( -c -, -n -) - gue -; - -63 - gc - + -n -; - -64 - gn - - -n -; - -68 #i -defed -( -__x86_64__ -|| defed( -_WIN64 -) - -69 cڡ -u_t - - gmask - = 0x8080808080808080ll; - -71 cڡ -u_t - - gmask - = 0x80808080l; - -74 cڡ -u_t -* - gcw - = -t_ -( -c -); - -76  -size_t - - gi - = 0, - gn - = -n - / -bys_r_wd -; i <; ++i) { - -77 i( - gcw -[ -i -] & - gmask - - gue -; - -80 cڡ  - gmad - = -n - & -ign_mask -; - -81 i( - gmad - > 0) { - -82 cڡ -size_t - - gofft - = -n - - -mad -; - -83 i( -cڏs_n_ascii_ow -( -c - + -offt -, -mad -) - gue -; - -86  - gl -; - -90  -f_ascii_ow -(cڡ * -c -, * -d -, -size_t - -n -) { - -91  -size_t - - gi - = 0; i < - gn -; ++i) { - -92 - gd -[ -i -] = -c -[i] & 0x7f; - -97  -f_ascii -(cڡ * -c -, * -d -, -size_t - -n -) { - -98 i( - gn - < 16) { - -99 -f_ascii_ow -( -c -, -d -, -n -); - -103 cڡ  - gbys_r_wd - = (*); - -104 cڡ  - gign_mask - = -bys_r_wd - - 1; - -105 cڡ  - gc_ulign - = -t_ -< -u_t ->( -c -& -ign_mask -; - -106 cڡ  - gd_ulign - = -t_ -< -u_t ->( -d -& -ign_mask -; - -108 i( - gc_ulign - > 0) { - -109 i( - gc_ulign - = -d_ulign -) { - -110 cڡ  -ulign - = -bys_r_wd - - -c_ulign -; - -111 -f_ascii_ow -( -c -, -d -, -ulign -); - -112 - gc - + -ulign -; - -113 - gd - + -ulign -; - -114 - gn - - -c_ulign -; - -116 -f_ascii_ow -( -c -, -d -, -n -); - -121 #i -defed -( -__x86_64__ -|| defed( -_WIN64 -) - -122 cڡ -u_t - - gmask - = ~0x8080808080808080ll; - -124 cڡ -u_t - - gmask - = ~0x80808080l; - -127 cڡ -u_t -* - gcw - = -t_ -( -c -); - -128 -u_t -* - gdw - = -t_ -( -d -); - -130  -size_t - - gi - = 0, - gn - = -n - / -bys_r_wd -; i <; ++i) { - -131 - gdw -[ -i -] = -cw -[i] & -mask -; - -134 cڡ  - gmad - = -n - & -ign_mask -; - -135 i( - gmad - > 0) { - -136 cڡ -size_t - - gofft - = -n - - -mad -; - -137 -f_ascii_ow -( -c - + -offt -, -d - + offt, -mad -); - -142  -size_t - -ba64_code -(cڡ * -c -, - -143 -size_t - - -, - -144 * -d -, - -145 -size_t - -dn -) { - -147 -as -( -dn - > -ba64_coded_size -( - -) && - -150 - gdn - = -ba64_coded_size -( - -); - -152  - ga -; - -153  - gb -; - -154  - gc -; - -155  - gi -; - -156  - gk -; - -157  - gn -; - -159 cڡ  - gb -[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - -163 - gi - = 0; - -164 - gk - = 0; - -165 - gn - = - - / 3 * 3; - -167  - gi - < - gn -) { - -168 - ga - = -c -[ -i - + 0] & 0xff; - -169 - gb - = -c -[ -i - + 1] & 0xff; - -170 - gc - = -c -[ -i - + 2] & 0xff; - -172 - gd -[ -k - + 0] = -b -[ -a - >> 2]; - -173 - gd -[ -k - + 1] = -b -[(( -a - & 3<< 4| ( -b - >> 4)]; - -174 - gd -[ -k - + 2] = -b -[(( -b - & 0x0f<< 2| ( -c - >> 6)]; - -175 - gd -[ -k - + 3] = -b -[ -c - & 0x3f]; - -177 - gi - += 3; - -178 - gk - += 4; - -181 i( - gn - ! - -) { - -182  - - - -n -) { - -184 -a - = -c -[ -i - + 0] & 0xff; - -185 - gd -[ -k - + 0] = -b -[ -a - >> 2]; - -186 - gd -[ -k - + 1] = -b -[( -a - & 3) << 4]; - -187 - gd -[ -k - + 2] = '='; - -188 - gd -[ -k - + 3] = '='; - -192 -a - = -c -[ -i - + 0] & 0xff; - -193 - gb - = -c -[ -i - + 1] & 0xff; - -194 - gd -[ -k - + 0] = -b -[ -a - >> 2]; - -195 - gd -[ -k - + 1] = -b -[(( -a - & 3<< 4| ( -b - >> 4)]; - -196 - gd -[ -k - + 2] = -b -[( -b - & 0x0f) << 2]; - -197 - gd -[ -k - + 3] = '='; - -202  - gdn -; - -206  -size_t - -hex_code -(cڡ * -c -, size_ - -, * -d -, size_ -dn -) { - -208 -as -( -dn - > - - * 2 && - -211 - gdn - = - - * 2; - -212  -ut32_t - - gi - = 0, - gk - = 0; k < - gdn -; i += 1, k += 2) { - -213 cڡ  -hex -[] = "0123456789abcdef"; - -214 -ut8_t - - gv - = -ic_ -( -c -[ -i -]); - -215 - gd -[ -k - + 0] = -hex -[ -v - >> 4]; - -216 - gd -[ -k - + 1] = -hex -[ -v - & 15]; - -219  - gdn -; - -224  - gLol -< - gVue -> -Encode -(cڡ * -buf -, - -225 -size_t - -bu -, - -226 -Encodg - -codg -) { - -227 -as -( -bu - < -node -:: -Bufr -:: -kMaxLgth -); - -228 i(! - gbu - && - gcodg - ! -BUFFER -) - -229  -New -(""). -ToLolChecked -(); - -231 - gLol -< - gSg -> - gv -; - -232  - gcodg -) { - -233  - gBUFFER -: - -234  -CyBufr -( -buf -, -bu -). -ToLolChecked -(); - -236  - gASCII -: - -237 i( -cڏs_n_ascii -( -buf -, -bu -)) { - -238 * - gout - = -w - [ -bu -]; - -239 -f_ascii -( -buf -, -out -, -bu -); - -240 - gv - = -New -< -Sg ->( -out -, - gbu -). -ToLolChecked -(); - -241 - gde -[] - gout -; - -243 - gv - = -New -< -Sg ->( -buf -, - gbu -). -ToLolChecked -(); - -247  - gUTF8 -: - -248 -v - = -New -< -Sg ->( -buf -, - gbu -). -ToLolChecked -(); - -251  - gBINARY -: { - -253 cڡ * -cbuf - = -t_ -( -buf -); - -254 -ut16_t - * - gtwobybuf - = -w - ut16_t[ -bu -]; - -255  -size_t - - gi - = 0; i < - gbu -; i++) { - -257 - gtwobybuf -[ -i -] = -cbuf -[i]; - -259 - gv - = -New -< -Sg ->( -twobybuf -, - gbu -). -ToLolChecked -(); - -260 - gde -[] - gtwobybuf -; - -264  - gBASE64 -: { - -265 -size_t - -dn - = -ba64_coded_size -( -bu -); - -266 * - gd - = -w - [ -dn -]; - -268 -size_t - - gwrn - = -ba64_code -( -buf -, -bu -, -d -, -dn -); - -269 -as -( -wrn - = -dn -); - -271 - gv - = -New -< -Sg ->( -d -, - gdn -). -ToLolChecked -(); - -272 - gde -[] - gd -; - -276  - gUCS2 -: { - -277 cڡ -ut16_t -* -da - = -t_ -( -buf -); - -278 - gv - = -New -< -Sg ->( -da -, - gbu - / 2). -ToLolChecked -(); - -282  - gHEX -: { - -283 -size_t - -dn - = -bu - * 2; - -284 * - gd - = -w - [ -dn -]; - -285 -size_t - - gwrn - = -hex_code -( -buf -, -bu -, -d -, -dn -); - -286 -as -( -wrn - = -dn -); - -288 - gv - = -New -< -Sg ->( -d -, - gdn -). -ToLolChecked -(); - -289 - gde -[] - gd -; - -294 -as -(0 && "unknownncoding"); - -298  - gv -; - -301 #unde -ba64_coded_size - - - @interface/node_modules/nan/nan_typedarray_contents.h - -9 #ide -NAN_TYPEDARRAY_CONTENTS_H_ - - -10  - #NAN_TYPEDARRAY_CONTENTS_H_ - - - ) - -12 - gme -< -tyme - - gT -> - -13 as - cTydAayCڋs - { - -14 - mpublic -: - -15 -le - -exic - -TydAayCڋs -( -v8 -:: -Lol - -om -) : - -16 -ngth_ -(0), - $da_ -( -NULL -) { - -17 -HdSce - -sce -; - -19 -size_t - -ngth - = 0; - -20 * -da - = -NULL -; - -22 #i - `defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -23 ( -V8_MAJOR_VERSION - =4 && - `defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -25 i( -om --> - `IsAayBufrVw -()) { - -26 -v8 -:: -Lol - -y - = - -27 -v8 -:: -Lol -:: - `Ca -( -om -); - -29 cڡ -size_t - -by_ngth - = -y --> - `ByLgth -(); - -30 cڡ -rdiff_t - -by_offt - = -y --> - `ByOfft -(); - -31 -v8 -:: -Lol - -bufr - = -y --> - `Bufr -(); - -33 -ngth - = -by_ngth - / ( -T -); - -36 #i( -V8_MAJOR_VERSION - >= 8) - -37 -da - = -ic_ -<*>( -bufr --> - `GBackgSte -()-> - `Da -()+ -by_offt -; - -39 -da - = -ic_ -<*>( -bufr --> - `GCڋs -(). - `Da -()+ -by_offt -; - -45 i( -om --> - `IsObje -(&& !om-> - `IsNu -()) { - -46 -v8 -:: -Lol - -y - = v8::Lol:: - `Ca -( -om -); - -48 -MaybeLol -< -v8 -:: -Vue -> -bufr - = - `G -( -y -, - -49 -New -< -v8 -:: -Sg ->("bufr"). - `ToLolChecked -()); - -50 -MaybeLol -< -v8 -:: -Vue -> -by_ngth - = - `G -( -y -, - -51 -New -< -v8 -:: -Sg ->("byLgth"). - `ToLolChecked -()); - -52 -MaybeLol -< -v8 -:: -Vue -> -by_offt - = - `G -( -y -, - -53 -New -< -v8 -:: -Sg ->("byOfft"). - `ToLolChecked -()); - -55 i(! -bufr -. - `IsEmy -() && - -56 ! -by_ngth -. - `IsEmy -(&& by_ngth. - `ToLolChecked -()-> - `IsUt32 -() && - -57 ! -by_offt -. - `IsEmy -(&& by_offt. - `ToLolChecked -()-> - `IsUt32 -()) { - -58 -da - = -y --> - `GIndexedPrݔtsExAayDa -(); - -59 if( -da -) { - -60 -ngth - = -by_ngth -. - `ToLolChecked -()-> - `Ut32Vue -(/ ( -T -); - -67 #i - `defed -( -_MSC_VER -&& _MSC_VER >1900 || -__lulus - >= 201103L - -68 - `as -( -t_ -< -u_t ->( -da -% - `ignof - ( -T -) == 0); - -69 #i - `defed -( -_MSC_VER -&& _MSC_VER >1600 || defed( -__GNUC__ -) - -70 - `as -( -t_ -< -u_t ->( -da -% - `__ignof -( -T -) == 0); - -72 - `as -( -t_ -< -u_t ->( -da -%  ( -T -) == 0); - -75 -ngth_ - = -ngth -; - -76 -da_ - = -ic_ -< -T -*>( -da -); - -79 -le - -size_t - - $ngth -(cڡ {  -ngth_ -; - } -} - -80 -le - -T -* - gݔ -*({  - gda_ -; } - -81 -le - cڡ -T -* - gݔ -*(cڡ {  - gda_ -; } - -83 - give -: - -84 - $NAN_DISALLOW_ASSIGN_COPY_MOVE -( -TydAayCڋs -) - -87 * -ݔ - - `w -( -size_t - -size -); - -88  -ݔ - - $de -(*, -size_t -) { - -89 - `abt -(); - -90 - } -} - -92 -size_t - - gngth_ -; - -93 -T -* - gda_ -; - - @interface/node_modules/nan/nan_weak.h - -9 #ide -NAN_WEAK_H_ - - -10  - #NAN_WEAK_H_ - - - ) - -12 cڡ  - gkIlFldsInWkClback - = 2; - -13 cڡ  - gkNoIlFldIndex - = -1; - -15 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -16 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -17  - #NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - \ - -18 -v8 -:: -WkClbackInfo - > cڡ& - - ) - -19  - #NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - \ - -20 -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - - - ) - -21  - #NAN_WEAK_PARAMETER_CALLBACK_SIG_ - -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - - - ) - -22  - #NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - - - ) - -23 #i -NODE_MODULE_VERSION - > -IOJS_1_1_MODULE_VERSION - - -24  - #NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - \ - -25 -v8 -:: -PhtomClbackDa -< -WkClbackInfo -< -T -> > cڡ& - - ) - -26  - #NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - \ - -27 -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - - - ) - -28  - #NAN_WEAK_PARAMETER_CALLBACK_SIG_ - -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - - - ) - -29  - #NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - - - ) - -30 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -31  - #NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - \ - -32 -v8 -:: -PhtomClbackDa -< -WkClbackInfo -< -T -> > cڡ& - - ) - -33  - #NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - \ - -34 -v8 -:: -IlFldsClbackDa -< -WkClbackInfo -< -T ->, > cڡ& - - ) - -35  - #NAN_WEAK_PARAMETER_CALLBACK_SIG_ - -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - - - ) - -36  - #NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - - - ) - -37 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -38  - #NAN_WEAK_CALLBACK_DATA_TYPE_ - \ - -39 -v8 -:: -WkClbackDa -< -S -, -WkClbackInfo -< -T -> > cڡ& - - ) - -40  - #NAN_WEAK_CALLBACK_SIG_ - -NAN_WEAK_CALLBACK_DATA_TYPE_ - - - ) - -42  - #NAN_WEAK_CALLBACK_DATA_TYPE_ - * - - ) - -43  - #NAN_WEAK_CALLBACK_SIG_ - \ - -44 -v8 -:: -Psit -, -NAN_WEAK_CALLBACK_DATA_TYPE_ - - - ) - -47 - gme -< -tyme - - gT -> - -48 as - cWkClbackInfo - { - -49 - mpublic -: - -50 (* - tClback -)(cڡ - tWkClbackInfo -< - tT ->& - tda -); - -51 - `WkClbackInfo -( - -52 -Psit -< -v8 -:: -Vue -> * -rsit - - -53 , -Clback - -back - - -54 , * -m - - -55 , * -fld1 - = 0 - -56 , * -fld2 - = 0) : - -57 - `back_ -( -back -), - `isީe_ -(0), - $m_ -( -m -) { - -58 -d -:: - `memy -(& -rsit_ -, -rsit -,  ( -v8 -:: -Psit -)); - -59 -_flds_ -[0] = -fld1 -; - -60 -_flds_ -[1] = -fld2 -; - -62 -le - -v8 -:: -Isީe - * - $GIsީe -(cڡ {  -isީe_ -; - } -} - -63 -le - -T - * - $GPam -(cڡ {  -ic_ -< -T -*>( -m_ -); - } -} - -64 -le - * - $GIlFld -( -dex -) const { - -65 - `as -(( -dex - == 0 || index == 1) && "internal field index out of bounds"); - -66 i( -dex - == 0) { - -67  -_flds_ -[0]; - -69  -_flds_ -[1]; - -71 - } -} - -73 - give -: - -74 - $NAN_DISALLOW_ASSIGN_COPY_MOVE -( -WkClbackInfo -) - -75 -Clback - -back_ -; - -76 -v8 -:: -Isީe - * -isީe_ -; - -77 * -m_ -; - -78 * -_flds_ -[ -kIlFldsInWkClback -]; - -79 -v8 -:: -Psit - -rsit_ -; - -80 -me -< -tyme - -S -,ym -M -> -nd - -ass - -Psit -; - -81 -me -< -tyme - -S -> -nd - -ass - -PsitBa -; - -82 #i -NODE_MODULE_VERSION - < -NODE_0_12_MODULE_VERSION - - -83 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -84 -me -< -tyme - -S -> - -85  - `voke -( -NAN_WEAK_CALLBACK_SIG_ - -da -); - -86 -me -< -tyme - -S -> - -87  -WkClbackInfo - * - `unwp -( -NAN_WEAK_CALLBACK_DATA_TYPE_ - -da -); - -89  - `voke -( -NAN_WEAK_CALLBACK_SIG_ - -da -); - -90  -WkClbackInfo - * - `unwp -( -NAN_WEAK_CALLBACK_DATA_TYPE_ - -da -); - -93 #i - `defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -94 ( -V8_MAJOR_VERSION - =4 && - `defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -95 -me -< -bo - -isFPass -> - -96  - `vokam -( -NAN_WEAK_PARAMETER_CALLBACK_SIG_ - -da -); - -97 -me -< -bo - -isFPass -> - -98  - `vokwofld -( -NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - -da -); - -100  - `vokam -( -NAN_WEAK_PARAMETER_CALLBACK_SIG_ - -da -); - -101  - `vokwofld -( -NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - -da -); - -103  -WkClbackInfo - * - `unwam -( - -104 -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - -da -); - -105  -WkClbackInfo - * - `unwwofld -( - -106 -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - -da -); - -108 - } -}; - -111 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -112 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -114 -me -< -tyme - -T -> - -115 -me -< -bo - -isFPass -> - -117 -WkClbackInfo -< -T ->:: - $vokam -( -NAN_WEAK_PARAMETER_CALLBACK_SIG_ - -da -) { - -118 -WkClbackInfo -< -T -> * -cbfo - = - `unwam -( -da -); - -119 i( -isFPass -) { - -120 -cbfo --> -rsit_ -. - `Ret -(); - -121 -da -. - `SSecdPassClback -( -vokam -< -l ->); - -123 -cbfo --> - `back_ -(*cbinfo); - -124 -de - -cbfo -; - -126 - } -} - -128 - gme -< -tyme - - gT -> - -129 - gme -< -bo - - gisFPass -> - -131 - gWkClbackInfo -< - gT ->:: - $vokwofld -( -NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - -da -) { - -132 -WkClbackInfo -< -T -> * -cbfo - = - `unwwofld -( -da -); - -133 i( -isFPass -) { - -134 -cbfo --> -rsit_ -. - `Ret -(); - -135 -da -. - `SSecdPassClback -( -vokwofld -< -l ->); - -137 -cbfo --> - `back_ -(*cbinfo); - -138 -de - -cbfo -; - -140 - } -} - -142 - gme -< -tyme - - gT -> - -143 - gWkClbackInfo -< - gT -> *WkClbackInfo:: - $unwam -( - -144 -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - -da -) { - -145 -WkClbackInfo -< -T -> * -cbfo - = - -146 -ic_ -< -WkClbackInfo -< -T ->*>( -da -. - `GPam -()); - -147 -cbfo --> -isީe_ - = -da -. - `GIsީe -(); - -148  -cbfo -; - -149 - } -} - -151 - gme -< -tyme - - gT -> - -152 - gWkClbackInfo -< - gT -> *WkClbackInfo:: - $unwwofld -( - -153 -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - -da -) { - -154 -WkClbackInfo -< -T -> * -cbfo - = - -155 -ic_ -< -WkClbackInfo -< -T ->*>( -da -. - `GIlFld -(0)); - -156 -cbfo --> -isީe_ - = -da -. - `GIsީe -(); - -157  -cbfo -; - -158 - } -} - -160 #unde -NAN_WEAK_PARAMETER_CALLBACK_SIG_ - - -161 #unde -NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - - -162 #unde -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - - -163 #unde -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - - -164 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -166 - gme -< -tyme - - gT -> - -168 - gWkClbackInfo -< - gT ->:: - $vokam -( -NAN_WEAK_PARAMETER_CALLBACK_SIG_ - -da -) { - -169 -WkClbackInfo -< -T -> * -cbfo - = - `unwam -( -da -); - -170 -cbfo --> -rsit_ -. - `Ret -(); - -171 -cbfo --> - `back_ -(*cbinfo); - -172 -de - -cbfo -; - -173 - } -} - -175 - gme -< -tyme - - gT -> - -177 - gWkClbackInfo -< - gT ->:: - $vokwofld -( -NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - -da -) { - -178 -WkClbackInfo -< -T -> * -cbfo - = - `unwwofld -( -da -); - -179 -cbfo --> -rsit_ -. - `Ret -(); - -180 -cbfo --> - `back_ -(*cbinfo); - -181 -de - -cbfo -; - -182 - } -} - -184 - gme -< -tyme - - gT -> - -185 - gWkClbackInfo -< - gT -> *WkClbackInfo:: - $unwam -( - -186 -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - -da -) { - -187 -WkClbackInfo -< -T -> * -cbfo - = - -188 -ic_ -< -WkClbackInfo -< -T ->*>( -da -. - `GPam -()); - -189 -cbfo --> -isީe_ - = -da -. - `GIsީe -(); - -190  -cbfo -; - -191 - } -} - -193 - gme -< -tyme - - gT -> - -194 - gWkClbackInfo -< - gT -> *WkClbackInfo:: - $unwwofld -( - -195 -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - -da -) { - -196 -WkClbackInfo -< -T -> * -cbfo - = - -197 -ic_ -< -WkClbackInfo -< -T ->*>( -da -. - `GIlFld1 -()); - -198 -cbfo --> -isީe_ - = -da -. - `GIsީe -(); - -199  -cbfo -; - -200 - } -} - -202 #unde -NAN_WEAK_PARAMETER_CALLBACK_SIG_ - - -203 #unde -NAN_WEAK_TWOFIELD_CALLBACK_SIG_ - - -204 #unde -NAN_WEAK_PARAMETER_CALLBACK_DATA_TYPE_ - - -205 #unde -NAN_WEAK_TWOFIELD_CALLBACK_DATA_TYPE_ - - -206 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -208 - gme -< -tyme - - gT -> - -209 - gme -< -tyme - - gS -> - -210  - gWkClbackInfo -< - gT ->:: - $voke -( -NAN_WEAK_CALLBACK_SIG_ - -da -) { - -211 -WkClbackInfo -< -T -> * -cbfo - = - `unwp -( -da -); - -212 -cbfo --> -rsit_ -. - `Ret -(); - -213 -cbfo --> - `back_ -(*cbinfo); - -214 -de - -cbfo -; - -215 - } -} - -217 - gme -< -tyme - - gT -> - -218 - gme -< -tyme - - gS -> - -219 - gWkClbackInfo -< - gT -> *WkClbackInfo:: - $unwp -( - -220 -NAN_WEAK_CALLBACK_DATA_TYPE_ - -da -) { - -221 * -m - = -da -. - `GPam -(); - -222 -WkClbackInfo -< -T -> * -cbfo - = - -223 -ic_ -< -WkClbackInfo -< -T ->*>( -m -); - -224 -cbfo --> -isީe_ - = -da -. - `GIsީe -(); - -225  -cbfo -; - -226 - } -} - -228 #unde -NAN_WEAK_CALLBACK_SIG_ - - -229 #unde -NAN_WEAK_CALLBACK_DATA_TYPE_ - - -232 - gme -< -tyme - - gT -> - -233  - gWkClbackInfo -< - gT ->:: - $voke -( -NAN_WEAK_CALLBACK_SIG_ - -da -) { - -234 -WkClbackInfo -< -T -> * -cbfo - = - `unwp -( -da -); - -235 -cbfo --> -rsit_ -. - `Dio -(); - -236 -cbfo --> -rsit_ -. - `Cˬ -(); - -237 -cbfo --> - `back_ -(*cbinfo); - -238 -de - -cbfo -; - -239 - } -} - -241 - gme -< -tyme - - gT -> - -242 - gWkClbackInfo -< - gT -> *WkClbackInfo:: - $unwp -( - -243 -NAN_WEAK_CALLBACK_DATA_TYPE_ - -da -) { - -244 -WkClbackInfo -< -T -> * -cbfo - = - -245 -ic_ -< -WkClbackInfo -< -T ->*>( -da -); - -246 -cbfo --> -isީe_ - = -v8 -:: -Isީe -:: - `GCut -(); - -247  -cbfo -; - -248 - } -} - -250 #unde -NAN_WEAK_CALLBACK_SIG_ - - -251 #unde -NAN_WEAK_CALLBACK_DATA_TYPE_ - - -254 #i -defed -( -V8_MAJOR_VERSION -) && (V8_MAJOR_VERSION > 4 || \ - -255 ( - gV8_MAJOR_VERSION - =4 && -defed -( -V8_MINOR_VERSION -) && V8_MINOR_VERSION >= 3)) - -256 -me -< -tyme - -T -,ym - gM -> - -257 - gme -< -tyme - - gP -> - -258 -le -  - gPsit -< - gT -, - gM ->:: -SWk -( - -259 -P - * -m - - -260 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -261 , -WkClbackTy - -ty -) { - -262 - gWkClbackInfo -< - gP -> * - gwcbd -; - -263 i( - gty - = -WkClbackTy -:: -kPam -) { - -264 -wcbd - = -w - -WkClbackInfo -< -P ->( - -265 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -266 , - gback - - -267 , - gm -); - -268 - gv8 -:: -PsitBa -< -T ->:: -SWk -( - -269 -wcbd - - -270 , -WkClbackInfo -< -P ->:: -me - -vokam -< -ue -> - -271 , -ty -); - -273 - gv8 -:: -Lol -< -v8 -:: -Vue ->* -lf_v -( -t_ -*>( -this -)); - -274 -as -((* -lf_v -)-> -IsObje -()); - -275 - gv8 -:: -Lol -< -v8 -:: -Obje -> -lf -((* -lf_v -). -As -()); - -276  - gcou - = -lf --> -IlFldCou -(); - -277 * - g_flds -[ -kIlFldsInWkClback -] = {0, 0}; - -278  - gi - = 0; i < - gcou - && i < - gkIlFldsInWkClback -; i++) { - -279 - g_flds -[ -i -] = -lf --> -GAligdPorFromIlFld -(i); - -281 - gwcbd - = -w - -WkClbackInfo -< -P ->( - -282 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -283 , - gback - - -285 , - g_flds -[0] - -286 , - g_flds -[1]); - -287 - glf --> -SAligdPorInIlFld -(0, -wcbd -); - -288 - gv8 -:: -PsitBa -< -T ->:: -SWk -( - -289 -ic_ -< -WkClbackInfo -< -P ->*>(0) - -290 , -WkClbackInfo -< -P ->:: -me - -vokwofld -< -ue -> - -291 , -ty -); - -294 #i -NODE_MODULE_VERSION - > -IOJS_1_1_MODULE_VERSION - - -295 - gme -< -tyme - - gT -,ym - gM -> - -296 - gme -< -tyme - - gP -> - -297 -le -  - gPsit -< - gT -, - gM ->:: -SWk -( - -298 -P - * -m - - -299 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -300 , -WkClbackTy - -ty -) { - -301 - gWkClbackInfo -< - gP -> * - gwcbd -; - -302 i( - gty - = -WkClbackTy -:: -kPam -) { - -303 -wcbd - = -w - -WkClbackInfo -< -P ->( - -304 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -305 , - gback - - -306 , - gm -); - -307 - gv8 -:: -PsitBa -< -T ->:: -SPhtom -( - -308 -wcbd - - -309 , -WkClbackInfo -< -P ->:: -vokam -); - -311 - gv8 -:: -Lol -< -v8 -:: -Vue ->* -lf_v -( -t_ -*>( -this -)); - -312 -as -((* -lf_v -)-> -IsObje -()); - -313 - gv8 -:: -Lol -< -v8 -:: -Obje -> -lf -((* -lf_v -). -As -()); - -314  - gcou - = -lf --> -IlFldCou -(); - -315 * - g_flds -[ -kIlFldsInWkClback -] = {0, 0}; - -316  - gi - = 0; i < - gcou - && i < - gkIlFldsInWkClback -; i++) { - -317 - g_flds -[ -i -] = -lf --> -GAligdPorFromIlFld -(i); - -319 - gwcbd - = -w - -WkClbackInfo -< -P ->( - -320 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -321 , - gback - - -323 , - g_flds -[0] - -324 , - g_flds -[1]); - -325 - glf --> -SAligdPorInIlFld -(0, -wcbd -); - -326 - gv8 -:: -PsitBa -< -T ->:: -SPhtom -( - -327 -ic_ -< -WkClbackInfo -< -P ->*>(0) - -328 , -WkClbackInfo -< -P ->:: -vokwofld - - -330 , -cou - > 1 ? 1 : -kNoIlFldIndex -); - -333 #i -NODE_MODULE_VERSION - > -NODE_0_12_MODULE_VERSION - - -334 - gme -< -tyme - - gT -,ym - gM -> - -335 - gme -< -tyme - - gP -> - -336 -le -  - gPsit -< - gT -, - gM ->:: -SWk -( - -337 -P - * -m - - -338 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -339 , -WkClbackTy - -ty -) { - -340 - gWkClbackInfo -< - gP -> * - gwcbd -; - -341 i( - gty - = -WkClbackTy -:: -kPam -) { - -342 -wcbd - = -w - -WkClbackInfo -< -P ->( - -343 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -344 , - gback - - -345 , - gm -); - -346 - gv8 -:: -PsitBa -< -T ->:: -SPhtom -( - -347 -wcbd - - -348 , -WkClbackInfo -< -P ->:: -vokam -); - -350 - gv8 -:: -Lol -< -v8 -:: -Vue ->* -lf_v -( -t_ -*>( -this -)); - -351 -as -((* -lf_v -)-> -IsObje -()); - -352 - gv8 -:: -Lol -< -v8 -:: -Obje -> -lf -((* -lf_v -). -As -()); - -353  - gcou - = -lf --> -IlFldCou -(); - -354 * - g_flds -[ -kIlFldsInWkClback -] = {0, 0}; - -355  - gi - = 0; i < - gcou - && i < - gkIlFldsInWkClback -; i++) { - -356 - g_flds -[ -i -] = -lf --> -GAligdPorFromIlFld -(i); - -358 - gwcbd - = -w - -WkClbackInfo -< -P ->( - -359 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -360 , - gback - - -362 , - g_flds -[0] - -363 , - g_flds -[1]); - -364 - glf --> -SAligdPorInIlFld -(0, -wcbd -); - -365 - gv8 -:: -PsitBa -< -T ->:: -SPhtom -( - -366 -WkClbackInfo -< -P ->:: -vokwofld - - -368 , -cou - > 1 ? 1 : -kNoIlFldIndex -); - -371 #i -NODE_MODULE_VERSION - > -NODE_0_10_MODULE_VERSION - - -372 - gme -< -tyme - - gT -,ym - gM -> - -373 - gme -< -tyme - - gP -> - -374 -le -  - gPsit -< - gT -, - gM ->:: -SWk -( - -375 -P - * -m - - -376 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -377 , -WkClbackTy - -ty -) { - -378 - gWkClbackInfo -< - gP -> * - gwcbd -; - -379 i( - gty - = -WkClbackTy -:: -kPam -) { - -380 -wcbd - = -w - -WkClbackInfo -< -P ->( - -381 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -382 , - gback - - -383 , - gm -); - -384 - gv8 -:: -PsitBa -< -T ->:: -SWk -( -wcbd -, -WkClbackInfo -< -P ->:: -voke -); - -386 - gv8 -:: -Lol -< -v8 -:: -Vue ->* -lf_v -( -t_ -*>( -this -)); - -387 -as -((* -lf_v -)-> -IsObje -()); - -388 - gv8 -:: -Lol -< -v8 -:: -Obje -> -lf -((* -lf_v -). -As -()); - -389  - gcou - = -lf --> -IlFldCou -(); - -390 * - g_flds -[ -kIlFldsInWkClback -] = {0, 0}; - -391  - gi - = 0; i < - gcou - && i < - gkIlFldsInWkClback -; i++) { - -392 - g_flds -[ -i -] = -lf --> -GAligdPorFromIlFld -(i); - -394 - gwcbd - = -w - -WkClbackInfo -< -P ->( - -395 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -396 , - gback - - -398 , - g_flds -[0] - -399 , - g_flds -[1]); - -400 - gv8 -:: -PsitBa -< -T ->:: -SWk -( -wcbd -, -WkClbackInfo -< -P ->:: -voke -); - -404 - gme -< -tyme - - gT -> - -405 - gme -< -tyme - - gP -> - -406 -le -  - gPsitBa -< - gT ->:: -SWk -( - -407 -P - * -m - - -408 , -tyme - -WkClbackInfo -< -P ->:: -Clback - -back - - -409 , -WkClbackTy - -ty -) { - -410 - gWkClbackInfo -< - gP -> * - gwcbd -; - -411 i( - gty - = -WkClbackTy -:: -kPam -) { - -412 -wcbd - = -w - -WkClbackInfo -< -P ->( - -413 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -414 , - gback - - -415 , - gm -); - -416 - grsit -. -MakeWk -( -wcbd -, -WkClbackInfo -< -P ->:: -voke -); - -418 - gv8 -:: -Lol -< -v8 -:: -Vue ->* -lf_v -( -t_ -*>( -this -)); - -419 -as -((* -lf_v -)-> -IsObje -()); - -420 - gv8 -:: -Lol -< -v8 -:: -Obje -> -lf -((* -lf_v -). -As -()); - -421  - gcou - = -lf --> -IlFldCou -(); - -422 * - g_flds -[ -kIlFldsInWkClback -] = {0, 0}; - -423  - gi - = 0; i < - gcou - && i < - gkIlFldsInWkClback -; i++) { - -424 - g_flds -[ -i -] = -lf --> -GPorFromIlFld -(i); - -426 - gwcbd - = -w - -WkClbackInfo -< -P ->( - -427 -t_ -< -Psit -< -v8 -:: -Vue ->*>( -this -) - -428 , - gback - - -430 , - g_flds -[0] - -431 , - g_flds -[1]); - -432 - grsit -. -MakeWk -( -wcbd -, -WkClbackInfo -< -P ->:: -voke -); - - @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/fsevents.cc - -6  - ~"n.h -" - -7  - ~"uv.h -" - -8  - ~"v8.h -" - -9  - ~"CeFoundi/CeFoundi.h -" - -10  - ~"CeSvis/CeSvis.h -" - -11  - ~ - -12  - ~ - -14  - ~"c/age.cc -" - -15 -mea - - gf - { - -16 as - cFSEvts - : -public - -N -:: -ObjeWp - { - -17 -public -: - -18 -exic - -FSEvts -(cڡ * -th -); - -19 ~ -FSEvts -(); - -21 -uv_mux_t - - gmux -; - -24 -uv_async_t - - gasync -; - -25  -asyncS -(); - -26  -asyncTrigg -(); - -27  -asyncSt -(); - -30 -uv_thad_t - - gthad -; - -31 -CFRunLoRef - - gthadlo -; - -32  -thadS -(); - -33  -thadRun -(* -x -); - -34  -thadSt -(); - -37 - gN -:: -AsyncResour - -async_sour -; - -38  -emEvt -(cڡ * -th -, -UI32 - -ags -, -UI64 - -id -); - -41 -CFAayRef - - gths -; - -42 - gd -:: -ve -< -f_evt -*> -evts -; - -43  -Inlize -( -v8 -:: -Lol - -expts -); - -46  -NAN_METHOD -( -New -); - -47  -NAN_METHOD -( -St -); - -48  -NAN_METHOD -( -S -); - -53 -usg - -mea - - gf -; - -55 - gFSEvts -:: - $FSEvts -(cڡ * -th -) - -56 : - `async_sour -("fsevents:FSEvents") { - -57 -CFSgRef - -ds -[] = { - `CFSgCeWhCSg -( -NULL -, -th -, -kCFSgEncodgUTF8 -) }; - -58 -ths - = - `CFAayCe -( -NULL -, (cڡ **)& -ds -, 1, NULL); - -59 -thadlo - = -NULL -; - -60 i( - `uv_mux_ -(& -mux -) - `abt -(); - -61 - } -} - -62 - gFSEvts -::~ - $FSEvts -() { - -63 - `CFR -( -ths -); - -64 - `uv_mux_deroy -(& -mux -); - -65 - } -} - -67 #ide -kFSEvtSmEvtFgImCed - - -68  - #kFSEvtSmEvtFgImCed - 0x00000010 - - ) - -71  - ~"c/async.cc -" - -72  - ~"c/thad.cc -" - -73  - ~"c/cڡts.cc -" - -74  - ~"c/mhods.cc -" - -76  - gFSEvts -:: -Inlize -( -v8 -:: -Lol - -expts -) { - -77 -v8 -:: -Isީe -* -isީe - = -expts --> -GIsީe -(); - -78 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -79 - gv8 -:: -Lol -< -v8 -:: -FuniTeme -> -l - = -N -:: -New -( -FSEvts -::New); - -80 - gl --> -SCssName -( -N -:: -New -< -v8 -:: -Sg ->("FSEvts"). -ToLolChecked -()); - -81 - gl --> -InTeme -()-> -SIlFldCou -(1); - -82 - gN -:: -SPryTeme -( -l -, "t", -N -:: -New -< -v8 -:: -FuniTeme ->( -FSEvts -:: -S -)); - -83 - gN -:: -SPryTeme -( -l -, "", -N -:: -New -< -v8 -:: -FuniTeme ->( -FSEvts -:: -St -)); - -84 - gN -:: -S -( -expts -, -N -:: -New -< -v8 -:: -Sg ->("Cڡts"). -ToLolChecked -(), -Cڡts -()); - -85 - gN -:: -S -( -expts -, -N -:: -New -< -v8 -:: -Sg ->("FSEvts"). -ToLolChecked -(), -l --> -GFuni -( -cڋxt -).ToLocalChecked()); - -88 -NODE_MODULE -( -f -, -FSEvts -:: -Inlize -) - - @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/async.cc - -7  - $async_age -( -uv_async_t - * -async -) { - -8 i(! -async --> -da -) ; - -9 -FSEvts - * -f - = (FSEvt*) -async --> -da -; - -10 -CFIndex - -idx -, -t -; - -11 -f_evt - * -evt -; - -12  -thbuf -[1024]; - -13 cڡ * -thr - = -NULL -; - -14 - `uv_mux_lock -(& -f --> -mux -); - -15 -t - = -f --> -evts -. - `size -(); - -16  -idx -=0; idx< -t -; idx++) { - -17 -evt - = -f --> -evts -. - ` -( -idx -); - -18 i( -evt - = -NULL -) ; - -19 -thr - = - `CFSgGCSgP -( -evt --> -th -, -kCFSgEncodgUTF8 -); - -20 i(! -thr - - `CFSgGCSg -( -evt --> -th -, -thbuf -, 1024, -kCFSgEncodgUTF8 -); - -21 -f --> - `emEvt -( -thr - ?h: -thbuf -, -evt --> -ags -,vt-> -id -); - -22 -de - -evt -; - -24 i( -t ->0 -f --> -evts -. - `r -(); - -25 - `uv_mux_uock -(& -f --> -mux -); - -26 - } -} - -28  - gFSEvts -:: - $asyncS -() { - -29 i( -async -. -da - = -this -) ; - -30 -async -. -da - = -this -; - -31 - `uv_async_ -( - `uv_deu_lo -(), & -async -, ( -uv_async_cb - -async_age -); - -32 - } -} - -34  - gFSEvts -:: - $asyncTrigg -() { - -35 i( -async -. -da - ! -this -) ; - -36 - `uv_async_nd -(& -async -); - -37 - } -} - -39  - gFSEvts -:: - $asyncSt -() { - -40 i( -async -. -da - ! -this -) ; - -41 -async -. -da - = -NULL -; - -42 - `uv_o -(( -uv_hd_t - *& -async -, -NULL -); - -43 - } -} - - @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/constants.cc - -7 #ide -kFSEvtSmEvtFgNe - - -8  - #kFSEvtSmEvtFgNe - 0x00000000 - - ) - -11 #ide -kFSEvtSmEvtFgMuSnSubDs - - -12  - #kFSEvtSmEvtFgMuSnSubDs - 0x00000001 - - ) - -15 #ide -kFSEvtSmEvtFgUrDrݳd - - -16  - #kFSEvtSmEvtFgUrDrݳd - 0x00000002 - - ) - -19 #ide -kFSEvtSmEvtFgKlDrݳd - - -20  - #kFSEvtSmEvtFgKlDrݳd - 0x00000004 - - ) - -23 #ide -kFSEvtSmEvtFgEvtIdsWed - - -24  - #kFSEvtSmEvtFgEvtIdsWed - 0x00000008 - - ) - -27 #ide -kFSEvtSmEvtFgHiyDe - - -28  - #kFSEvtSmEvtFgHiyDe - 0x00000010 - - ) - -31 #ide -kFSEvtSmEvtFgRoChged - - -32  - #kFSEvtSmEvtFgRoChged - 0x00000020 - - ) - -35 #ide -kFSEvtSmEvtFgMou - - -36  - #kFSEvtSmEvtFgMou - 0x00000040 - - ) - -39 #ide -kFSEvtSmEvtFgUnmou - - -40  - #kFSEvtSmEvtFgUnmou - 0x00000080 - - ) - -43 #ide -kFSEvtSmEvtFgImCed - - -44  - #kFSEvtSmEvtFgImCed - 0x00000100 - - ) - -47 #ide -kFSEvtSmEvtFgImRemoved - - -48  - #kFSEvtSmEvtFgImRemoved - 0x00000200 - - ) - -51 #ide -kFSEvtSmEvtFgImInodeMaMod - - -52  - #kFSEvtSmEvtFgImInodeMaMod - 0x00000400 - - ) - -55 #ide -kFSEvtSmEvtFgImRamed - - -56  - #kFSEvtSmEvtFgImRamed - 0x00000800 - - ) - -59 #ide -kFSEvtSmEvtFgImModifd - - -60  - #kFSEvtSmEvtFgImModifd - 0x00001000 - - ) - -63 #ide -kFSEvtSmEvtFgImFdInfoMod - - -64  - #kFSEvtSmEvtFgImFdInfoMod - 0x00002000 - - ) - -67 #ide -kFSEvtSmEvtFgImChgeOwr - - -68  - #kFSEvtSmEvtFgImChgeOwr - 0x00004000 - - ) - -71 #ide -kFSEvtSmEvtFgImXMod - - -72  - #kFSEvtSmEvtFgImXMod - 0x00008000 - - ) - -75 #ide -kFSEvtSmEvtFgImIsFe - - -76  - #kFSEvtSmEvtFgImIsFe - 0x00010000 - - ) - -79 #ide -kFSEvtSmEvtFgImIsD - - -80  - #kFSEvtSmEvtFgImIsD - 0x00020000 - - ) - -83 #ide -kFSEvtSmEvtFgImIsSymlk - - -84  - #kFSEvtSmEvtFgImIsSymlk - 0x00040000 - - ) - -87  - gv8 -:: -Lol -< -v8 -:: -Obje -> - $Cڡts -() { - -88 -v8 -:: -Lol - -obje - = -N -:: -New -(); - -89 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgNe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgNe -)); - -90 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgMuSnSubDs"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgMuSnSubDs -)); - -91 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgUrDrݳd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgUrDrݳd -)); - -92 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgKlDrݳd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgKlDrݳd -)); - -93 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgEvtIdsWed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgEvtIdsWed -)); - -94 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgHiyDe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgHiyDe -)); - -95 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgRoChged"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgRoChged -)); - -96 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgMou"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgMou -)); - -97 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgUnmou"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgUnmou -)); - -98 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImCed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImCed -)); - -99 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImRemoved"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImRemoved -)); - -100 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImInodeMaMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImInodeMaMod -)); - -101 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImRamed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImRamed -)); - -102 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImModifd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImModifd -)); - -103 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImFdInfoMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImFdInfoMod -)); - -104 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImChgeOwr"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImChgeOwr -)); - -105 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImXMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImXMod -)); - -106 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsFe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsFe -)); - -107 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsD"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsD -)); - -108 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsSymlk"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsSymlk -)); - -109  -obje -; - -110 - } -} - - @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/methods.cc - -6  - gFSEvts -:: - $emEvt -(cڡ * -th -, -UI32 - -ags -, -UI64 - -id -) { - -7 -N -:: -HdSce - -hd_sce -; - -8 -v8 -:: -Lol - -obje - = - `hd -(); - -9 -v8 -:: -Lol - -key - = -N -:: -New -("hdr"). - `ToLolChecked -(); - -10 -N -:: -Clback - - `hdr -(N:: -To -< -v8 -:: -Funi ->(N:: - `G -( -obje -, -key -). - `ToLolChecked -()).ToLocalChecked()); - -11 -v8 -:: -Lol - -gv -[] = { - -12 -N -:: -New -< -v8 -:: -Sg ->( -th -). - `ToLolChecked -(), - -13 -N -:: -New -< -v8 -:: -Numb ->( -ags -), - -14 -N -:: -New -< -v8 -:: -Numb ->( -id -) - -16 -hdr -. - `Cl -(3, -gv -, & -async_sour -); - -17 - } -} - -19 - $NAN_METHOD -( -FSEvts -:: -New -) { - -20 -N -:: -Utf8Sg - - `th -( -fo -[0]); - -22 -FSEvts - * -f - = -w - - `FSEvts -(* -th -); - -23 -f --> - `Wp -( -fo -. - `This -()); - -24 -N -:: - `S -( -fo -. - `This -(), N:: -New -< -v8 -:: -Sg ->("hdr"). - `ToLolChecked -(), info[1]); - -26 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -27 - } -} - -29 - $NAN_METHOD -( -FSEvts -:: -St -) { - -30 -FSEvts -* -f - = -N -:: -ObjeWp -:: -Unwp -( -fo -. - `This -()); - -32 -f --> - `thadSt -(); - -33 -f --> - `asyncSt -(); - -35 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -36 - } -} - -38 - $NAN_METHOD -( -FSEvts -:: -S -) { - -39 -FSEvts -* -f - = -N -:: -ObjeWp -:: -Unwp -( -fo -. - `This -()); - -40 -f --> - `asyncS -(); - -41 -f --> - `thadS -(); - -43 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -44 - } -} - - @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/storage.cc - -6  - sf_evt - { - -7 -UI64 - - mid -; - -8 -UI32 - - mags -; - -9 -CFSgRef - - mth -; - -11 -f_evt -( -CFSgRef - -evtPh -, -UI32 - -evtFg -, -UI64 - -evtId -) { - -12 - mthis --> - mth - = -evtPh -; - -13 - mthis --> - mags - = -evtFg -; - -14 - mthis --> - mid - = -evtId -; - -15 i( - mthis --> - mth - ! -NULL -) - -16 -CFRa -( -this --> -th -); - -19 ~ -f_evt -() { - -20 i( - mthis --> - mth - ! -NULL -) - -21 -CFR -( -this --> -th -); - -24 - mive -: - -25 -f_evt -(const fse_event&); - -26  - mݔ -=(cڡ -f_evt -&); - - @interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/thread.cc - -7 #ide -kFSEvtSmCeFgNe - - -8  - #kFSEvtSmCeFgNe - 0x00000000 - - ) - -11 #ide -kFSEvtSmCeFgUCFTys - - -12  - #kFSEvtSmCeFgUCFTys - 0x00000001 - - ) - -15 #ide -kFSEvtSmCeFgNoDer - - -16  - #kFSEvtSmCeFgNoDer - 0x00000002 - - ) - -19 #ide -kFSEvtSmCeFgWchRo - - -20  - #kFSEvtSmCeFgWchRo - 0x00000004 - - ) - -23 #ide -kFSEvtSmCeFgIgneSf - - -24  - #kFSEvtSmCeFgIgneSf - 0x00000008 - - ) - -27 #ide -kFSEvtSmCeFgFeEvts - - -28  - #kFSEvtSmCeFgFeEvts - 0x00000010 - - ) - -31  - gFSEvts -:: - $thadS -() { - -32 i( -thadlo -) ; - -33 i( - `uv_thad_ -(& -thad -, & -FSEvts -:: -thadRun -, -this -) - `abt -(); - -34 - } -} - -36  - $HdSmEvts -( -CڡFSEvtSmRef - -am -, * -x -, -size_t - -numEvts -, * -evtPhs -, cڡ -FSEvtSmEvtFgs - -evtFgs -[], cڡ -FSEvtSmEvtId - -evtIds -[]) { - -37 -FSEvts - * -f - = (FSEvt*) -x -; - -38 -size_t - -idx -; - -39 - `uv_mux_lock -(& -f --> -mux -); - -40  -idx -=0; idx < -numEvts -; idx++) { - -41 -f_evt - * -evt - = -w - - `f_evt -( - -42 ( -CFSgRef -) - `CFAayGVueAtIndex -(( -CFAayRef -) -evtPhs -, -idx -), - -43 -evtFgs -[ -idx -], - -44 -evtIds -[ -idx -] - -46 -f --> -evts -. - `push_back -( -evt -); - -48 -f --> - `asyncTrigg -(); - -49 - `uv_mux_uock -(& -f --> -mux -); - -50 - } -} - -52  - gFSEvts -:: - $thadRun -(* -x -) { - -53 -FSEvts - * -f - = (FSEvts*) -x -; - -54 -FSEvtSmCڋxt - -cڋxt - = { 0, -x -, -NULL -, NULL, NULL }; - -55 -f --> -thadlo - = - `CFRunLoGCut -(); - -56 -FSEvtSmRef - -am - = - `FSEvtSmCe -( -NULL -, & -HdSmEvts -, & -cڋxt -, -f --> -ths -, -kFSEvtSmEvtIdSNow -, ( -CFAbsuTime -0.1, -kFSEvtSmCeFgNe - | -kFSEvtSmCeFgWchRo - | -kFSEvtSmCeFgFeEvts - | -kFSEvtSmCeFgUCFTys -); - -57 - `FSEvtSmScheduWhRunLo -( -am -, -f --> -thadlo -, -kCFRunLoDeuMode -); - -58 - `FSEvtSmS -( -am -); - -59 - `CFRunLoRun -(); - -60 - `FSEvtSmSt -( -am -); - -61 - `FSEvtSmUnscheduFromRunLo -( -am -, -f --> -thadlo -, -kCFRunLoDeuMode -); - -62 - `FSEvtSmInvide -( -am -); - -63 - `FSEvtSmR -( -am -); - -64 -f --> -thadlo - = -NULL -; - -65 - } -} - -67  - gFSEvts -:: - $thadSt -() { - -68 i(! -thadlo -) ; - -69 - `CFRunLoSt -( -thadlo -); - -70 i( - `uv_thad_jo -(& -thad -) - `abt -(); - -71 - } -} - - @interface/node_modules/webpack-dev-server/node_modules/fsevents/fsevents.cc - -6  - ~"n.h -" - -7  - ~"uv.h -" - -8  - ~"v8.h -" - -9  - ~"CeFoundi/CeFoundi.h -" - -10  - ~"CeSvis/CeSvis.h -" - -11  - ~ - -12  - ~ - -14  - ~"c/age.cc -" - -15 -mea - - gf - { - -16 as - cFSEvts - : -public - -N -:: -ObjeWp - { - -17 -public -: - -18 -exic - -FSEvts -(cڡ * -th -); - -19 ~ -FSEvts -(); - -21 -uv_mux_t - - gmux -; - -24 -uv_async_t - - gasync -; - -25  -asyncS -(); - -26  -asyncTrigg -(); - -27  -asyncSt -(); - -30 -uv_thad_t - - gthad -; - -31 -CFRunLoRef - - gthadlo -; - -32  -thadS -(); - -33  -thadRun -(* -x -); - -34  -thadSt -(); - -37 - gN -:: -AsyncResour - -async_sour -; - -38  -emEvt -(cڡ * -th -, -UI32 - -ags -, -UI64 - -id -); - -41 -CFAayRef - - gths -; - -42 - gd -:: -ve -< -f_evt -*> -evts -; - -43  -Inlize -( -v8 -:: -Lol - -expts -); - -46  -NAN_METHOD -( -New -); - -47  -NAN_METHOD -( -St -); - -48  -NAN_METHOD -( -S -); - -53 -usg - -mea - - gf -; - -55 - gFSEvts -:: - $FSEvts -(cڡ * -th -) - -56 : - `async_sour -("fsevents:FSEvents") { - -57 -CFSgRef - -ds -[] = { - `CFSgCeWhCSg -( -NULL -, -th -, -kCFSgEncodgUTF8 -) }; - -58 -ths - = - `CFAayCe -( -NULL -, (cڡ **)& -ds -, 1, NULL); - -59 -thadlo - = -NULL -; - -60 i( - `uv_mux_ -(& -mux -) - `abt -(); - -61 - } -} - -62 - gFSEvts -::~ - $FSEvts -() { - -63 - `CFR -( -ths -); - -64 - `uv_mux_deroy -(& -mux -); - -65 - } -} - -67 #ide -kFSEvtSmEvtFgImCed - - -68  - #kFSEvtSmEvtFgImCed - 0x00000010 - - ) - -71  - ~"c/async.cc -" - -72  - ~"c/thad.cc -" - -73  - ~"c/cڡts.cc -" - -74  - ~"c/mhods.cc -" - -76  - gFSEvts -:: -Inlize -( -v8 -:: -Lol - -expts -) { - -77 -v8 -:: -Isީe -* -isީe - = -expts --> -GIsީe -(); - -78 - gv8 -:: -Lol -< -v8 -:: -Cڋxt -> -cڋxt - = -isީe --> -GCutCڋxt -(); - -79 - gv8 -:: -Lol -< -v8 -:: -FuniTeme -> -l - = -N -:: -New -( -FSEvts -::New); - -80 - gl --> -SCssName -( -N -:: -New -< -v8 -:: -Sg ->("FSEvts"). -ToLolChecked -()); - -81 - gl --> -InTeme -()-> -SIlFldCou -(1); - -82 - gN -:: -SPryTeme -( -l -, "t", -N -:: -New -< -v8 -:: -FuniTeme ->( -FSEvts -:: -S -)); - -83 - gN -:: -SPryTeme -( -l -, "", -N -:: -New -< -v8 -:: -FuniTeme ->( -FSEvts -:: -St -)); - -84 - gN -:: -S -( -expts -, -N -:: -New -< -v8 -:: -Sg ->("Cڡts"). -ToLolChecked -(), -Cڡts -()); - -85 - gN -:: -S -( -expts -, -N -:: -New -< -v8 -:: -Sg ->("FSEvts"). -ToLolChecked -(), -l --> -GFuni -( -cڋxt -).ToLocalChecked()); - -88 -NODE_MODULE -( -f -, -FSEvts -:: -Inlize -) - - @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/async.cc - -7  - $async_age -( -uv_async_t - * -async -) { - -8 i(! -async --> -da -) ; - -9 -FSEvts - * -f - = (FSEvt*) -async --> -da -; - -10 -CFIndex - -idx -, -t -; - -11 -f_evt - * -evt -; - -12  -thbuf -[1024]; - -13 cڡ * -thr - = -NULL -; - -14 - `uv_mux_lock -(& -f --> -mux -); - -15 -t - = -f --> -evts -. - `size -(); - -16  -idx -=0; idx< -t -; idx++) { - -17 -evt - = -f --> -evts -. - ` -( -idx -); - -18 i( -evt - = -NULL -) ; - -19 -thr - = - `CFSgGCSgP -( -evt --> -th -, -kCFSgEncodgUTF8 -); - -20 i(! -thr - - `CFSgGCSg -( -evt --> -th -, -thbuf -, 1024, -kCFSgEncodgUTF8 -); - -21 -f --> - `emEvt -( -thr - ?h: -thbuf -, -evt --> -ags -,vt-> -id -); - -22 -de - -evt -; - -24 i( -t ->0 -f --> -evts -. - `r -(); - -25 - `uv_mux_uock -(& -f --> -mux -); - -26 - } -} - -28  - gFSEvts -:: - $asyncS -() { - -29 i( -async -. -da - = -this -) ; - -30 -async -. -da - = -this -; - -31 - `uv_async_ -( - `uv_deu_lo -(), & -async -, ( -uv_async_cb - -async_age -); - -32 - } -} - -34  - gFSEvts -:: - $asyncTrigg -() { - -35 i( -async -. -da - ! -this -) ; - -36 - `uv_async_nd -(& -async -); - -37 - } -} - -39  - gFSEvts -:: - $asyncSt -() { - -40 i( -async -. -da - ! -this -) ; - -41 -async -. -da - = -NULL -; - -42 - `uv_o -(( -uv_hd_t - *& -async -, -NULL -); - -43 - } -} - - @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/constants.cc - -7 #ide -kFSEvtSmEvtFgNe - - -8  - #kFSEvtSmEvtFgNe - 0x00000000 - - ) - -11 #ide -kFSEvtSmEvtFgMuSnSubDs - - -12  - #kFSEvtSmEvtFgMuSnSubDs - 0x00000001 - - ) - -15 #ide -kFSEvtSmEvtFgUrDrݳd - - -16  - #kFSEvtSmEvtFgUrDrݳd - 0x00000002 - - ) - -19 #ide -kFSEvtSmEvtFgKlDrݳd - - -20  - #kFSEvtSmEvtFgKlDrݳd - 0x00000004 - - ) - -23 #ide -kFSEvtSmEvtFgEvtIdsWed - - -24  - #kFSEvtSmEvtFgEvtIdsWed - 0x00000008 - - ) - -27 #ide -kFSEvtSmEvtFgHiyDe - - -28  - #kFSEvtSmEvtFgHiyDe - 0x00000010 - - ) - -31 #ide -kFSEvtSmEvtFgRoChged - - -32  - #kFSEvtSmEvtFgRoChged - 0x00000020 - - ) - -35 #ide -kFSEvtSmEvtFgMou - - -36  - #kFSEvtSmEvtFgMou - 0x00000040 - - ) - -39 #ide -kFSEvtSmEvtFgUnmou - - -40  - #kFSEvtSmEvtFgUnmou - 0x00000080 - - ) - -43 #ide -kFSEvtSmEvtFgImCed - - -44  - #kFSEvtSmEvtFgImCed - 0x00000100 - - ) - -47 #ide -kFSEvtSmEvtFgImRemoved - - -48  - #kFSEvtSmEvtFgImRemoved - 0x00000200 - - ) - -51 #ide -kFSEvtSmEvtFgImInodeMaMod - - -52  - #kFSEvtSmEvtFgImInodeMaMod - 0x00000400 - - ) - -55 #ide -kFSEvtSmEvtFgImRamed - - -56  - #kFSEvtSmEvtFgImRamed - 0x00000800 - - ) - -59 #ide -kFSEvtSmEvtFgImModifd - - -60  - #kFSEvtSmEvtFgImModifd - 0x00001000 - - ) - -63 #ide -kFSEvtSmEvtFgImFdInfoMod - - -64  - #kFSEvtSmEvtFgImFdInfoMod - 0x00002000 - - ) - -67 #ide -kFSEvtSmEvtFgImChgeOwr - - -68  - #kFSEvtSmEvtFgImChgeOwr - 0x00004000 - - ) - -71 #ide -kFSEvtSmEvtFgImXMod - - -72  - #kFSEvtSmEvtFgImXMod - 0x00008000 - - ) - -75 #ide -kFSEvtSmEvtFgImIsFe - - -76  - #kFSEvtSmEvtFgImIsFe - 0x00010000 - - ) - -79 #ide -kFSEvtSmEvtFgImIsD - - -80  - #kFSEvtSmEvtFgImIsD - 0x00020000 - - ) - -83 #ide -kFSEvtSmEvtFgImIsSymlk - - -84  - #kFSEvtSmEvtFgImIsSymlk - 0x00040000 - - ) - -87  - gv8 -:: -Lol -< -v8 -:: -Obje -> - $Cڡts -() { - -88 -v8 -:: -Lol - -obje - = -N -:: -New -(); - -89 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgNe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgNe -)); - -90 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgMuSnSubDs"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgMuSnSubDs -)); - -91 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgUrDrݳd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgUrDrݳd -)); - -92 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgKlDrݳd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgKlDrݳd -)); - -93 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgEvtIdsWed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgEvtIdsWed -)); - -94 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgHiyDe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgHiyDe -)); - -95 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgRoChged"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgRoChged -)); - -96 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgMou"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgMou -)); - -97 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgUnmou"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgUnmou -)); - -98 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImCed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImCed -)); - -99 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImRemoved"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImRemoved -)); - -100 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImInodeMaMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImInodeMaMod -)); - -101 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImRamed"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImRamed -)); - -102 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImModifd"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImModifd -)); - -103 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImFdInfoMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImFdInfoMod -)); - -104 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImChgeOwr"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImChgeOwr -)); - -105 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImXMod"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImXMod -)); - -106 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsFe"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsFe -)); - -107 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsD"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsD -)); - -108 -N -:: - `S -( -obje -, N:: -New -< -v8 -:: -Sg ->("kFSEvtSmEvtFgImIsSymlk"). - `ToLolChecked -(), N::New( -kFSEvtSmEvtFgImIsSymlk -)); - -109  -obje -; - -110 - } -} - - @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/methods.cc - -6  - gFSEvts -:: - $emEvt -(cڡ * -th -, -UI32 - -ags -, -UI64 - -id -) { - -7 -N -:: -HdSce - -hd_sce -; - -8 -v8 -:: -Lol - -obje - = - `hd -(); - -9 -v8 -:: -Lol - -key - = -N -:: -New -("hdr"). - `ToLolChecked -(); - -10 -N -:: -Clback - - `hdr -(N:: -To -< -v8 -:: -Funi ->(N:: - `G -( -obje -, -key -). - `ToLolChecked -()).ToLocalChecked()); - -11 -v8 -:: -Lol - -gv -[] = { - -12 -N -:: -New -< -v8 -:: -Sg ->( -th -). - `ToLolChecked -(), - -13 -N -:: -New -< -v8 -:: -Numb ->( -ags -), - -14 -N -:: -New -< -v8 -:: -Numb ->( -id -) - -16 -hdr -. - `Cl -(3, -gv -, & -async_sour -); - -17 - } -} - -19 - $NAN_METHOD -( -FSEvts -:: -New -) { - -20 -N -:: -Utf8Sg - - `th -( -fo -[0]); - -22 -FSEvts - * -f - = -w - - `FSEvts -(* -th -); - -23 -f --> - `Wp -( -fo -. - `This -()); - -24 -N -:: - `S -( -fo -. - `This -(), N:: -New -< -v8 -:: -Sg ->("hdr"). - `ToLolChecked -(), info[1]); - -26 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -27 - } -} - -29 - $NAN_METHOD -( -FSEvts -:: -St -) { - -30 -FSEvts -* -f - = -N -:: -ObjeWp -:: -Unwp -( -fo -. - `This -()); - -32 -f --> - `thadSt -(); - -33 -f --> - `asyncSt -(); - -35 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -36 - } -} - -38 - $NAN_METHOD -( -FSEvts -:: -S -) { - -39 -FSEvts -* -f - = -N -:: -ObjeWp -:: -Unwp -( -fo -. - `This -()); - -40 -f --> - `asyncS -(); - -41 -f --> - `thadS -(); - -43 -fo -. - `GRuVue -(). - `S -(fo. - `This -()); - -44 - } -} - - @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/storage.cc - -6  - sf_evt - { - -7 -UI64 - - mid -; - -8 -UI32 - - mags -; - -9 -CFSgRef - - mth -; - -11 -f_evt -( -CFSgRef - -evtPh -, -UI32 - -evtFg -, -UI64 - -evtId -) { - -12 - mthis --> - mth - = -evtPh -; - -13 - mthis --> - mags - = -evtFg -; - -14 - mthis --> - mid - = -evtId -; - -15 i( - mthis --> - mth - ! -NULL -) - -16 -CFRa -( -this --> -th -); - -19 ~ -f_evt -() { - -20 i( - mthis --> - mth - ! -NULL -) - -21 -CFR -( -this --> -th -); - -24 - mive -: - -25 -f_evt -(const fse_event&); - -26  - mݔ -=(cڡ -f_evt -&); - - @interface/node_modules/webpack-dev-server/node_modules/fsevents/src/thread.cc - -7 #ide -kFSEvtSmCeFgNe - - -8  - #kFSEvtSmCeFgNe - 0x00000000 - - ) - -11 #ide -kFSEvtSmCeFgUCFTys - - -12  - #kFSEvtSmCeFgUCFTys - 0x00000001 - - ) - -15 #ide -kFSEvtSmCeFgNoDer - - -16  - #kFSEvtSmCeFgNoDer - 0x00000002 - - ) - -19 #ide -kFSEvtSmCeFgWchRo - - -20  - #kFSEvtSmCeFgWchRo - 0x00000004 - - ) - -23 #ide -kFSEvtSmCeFgIgneSf - - -24  - #kFSEvtSmCeFgIgneSf - 0x00000008 - - ) - -27 #ide -kFSEvtSmCeFgFeEvts - - -28  - #kFSEvtSmCeFgFeEvts - 0x00000010 - - ) - -31  - gFSEvts -:: - $thadS -() { - -32 i( -thadlo -) ; - -33 i( - `uv_thad_ -(& -thad -, & -FSEvts -:: -thadRun -, -this -) - `abt -(); - -34 - } -} - -36  - $HdSmEvts -( -CڡFSEvtSmRef - -am -, * -x -, -size_t - -numEvts -, * -evtPhs -, cڡ -FSEvtSmEvtFgs - -evtFgs -[], cڡ -FSEvtSmEvtId - -evtIds -[]) { - -37 -FSEvts - * -f - = (FSEvt*) -x -; - -38 -size_t - -idx -; - -39 - `uv_mux_lock -(& -f --> -mux -); - -40  -idx -=0; idx < -numEvts -; idx++) { - -41 -f_evt - * -evt - = -w - - `f_evt -( - -42 ( -CFSgRef -) - `CFAayGVueAtIndex -(( -CFAayRef -) -evtPhs -, -idx -), - -43 -evtFgs -[ -idx -], - -44 -evtIds -[ -idx -] - -46 -f --> -evts -. - `push_back -( -evt -); - -48 -f --> - `asyncTrigg -(); - -49 - `uv_mux_uock -(& -f --> -mux -); - -50 - } -} - -52  - gFSEvts -:: - $thadRun -(* -x -) { - -53 -FSEvts - * -f - = (FSEvts*) -x -; - -54 -FSEvtSmCڋxt - -cڋxt - = { 0, -x -, -NULL -, NULL, NULL }; - -55 -f --> -thadlo - = - `CFRunLoGCut -(); - -56 -FSEvtSmRef - -am - = - `FSEvtSmCe -( -NULL -, & -HdSmEvts -, & -cڋxt -, -f --> -ths -, -kFSEvtSmEvtIdSNow -, ( -CFAbsuTime -0.1, -kFSEvtSmCeFgNe - | -kFSEvtSmCeFgWchRo - | -kFSEvtSmCeFgFeEvts - | -kFSEvtSmCeFgUCFTys -); - -57 - `FSEvtSmScheduWhRunLo -( -am -, -f --> -thadlo -, -kCFRunLoDeuMode -); - -58 - `FSEvtSmS -( -am -); - -59 - `CFRunLoRun -(); - -60 - `FSEvtSmSt -( -am -); - -61 - `FSEvtSmUnscheduFromRunLo -( -am -, -f --> -thadlo -, -kCFRunLoDeuMode -); - -62 - `FSEvtSmInvide -( -am -); - -63 - `FSEvtSmR -( -am -); - -64 -f --> -thadlo - = -NULL -; - -65 - } -} - -67  - gFSEvts -:: - $thadSt -() { - -68 i(! -thadlo -) ; - -69 - `CFRunLoSt -( -thadlo -); - -70 i( - `uv_thad_jo -(& -thad -) - `abt -(); - -71 - } -} - - @interface/node_modules/zlib/src/node-zlib.cc - -1  - ~ - -2  - ~ - -3  - ~ - -4  - ~ - -6  - ~ - -7  - ~ - -8  - ~ - -10 -usg - -mea - - gv8 -; - -11 -usg - -mea - - gnode -; - -14 #i -NODE_VERSION_AT_LEAST -(0,3,0) - -15  - #Bufr_Da - -Bufr -:: -Da - - - ) - -16  - #Bufr_Lgth - -Bufr -:: -Lgth - - - ) - -17  - #Bufr_New - -Bufr -:: -New - - - ) - -19 -le - * -Bufr_Da -( -Hd -< -Obje -> -obj -) { - -20  ( - gObjeWp -:: -Unwp -< -Bufr ->( -obj -))-> -da -(); - -22 -le - -size_t - -Bufr_Lgth -( -Hd -< -Obje -> -obj -) { - -23  ( - gObjeWp -:: -Unwp -< -Bufr ->( -obj -))-> -ngth -(); - -25 -le - -Bufr -* - $Bufr_New -(* -da -, -size_t - -ngth -) { - -26 -Bufr -* -bufr - = Bufr:: - `New -( -ngth -); - -27 - `memy -( -bufr --> - `da -(), -da -, -ngth -); - -28  -bufr -; - -29 - } -} - -33 -z_am - - gdee_s -; - -34 -z_am - - ge_s -; - -36 -le - - gHd -< - gVue -> - $ZLib_r -(cڡ * -msg - = -NULL -) { - -37  - `ThrowExi -( -Exi -:: - `E -( - -38 -Sg -:: - `New -( -msg - ? msg : "Unknown Error"))); - -39 - } -} - -41  - #ZLib_Xe -( -x -, - -) \ - -42 -Hd -< -Vue -> -ZLib_ -## -x -## - `e -(cڡ -Argumts -& -gs -) { \ - -43 -HdSce - -sce -; \ - -45 i( -gs -. - `Lgth -(< 1 || ! -Bufr -:: - `HasIn -(args[0])) { \ - -46  - `ZLib_r -("Expected Buffers firstrgument"); \ - -49 i(( -x -## - `eRet -(&x## -e_s -)! -Z_OK -) { \ - -50 - `as -(( -l -, "ZLib stream is beyondepair")); \ - -53 -Lol -< -Obje -> -put - = -gs -[0]-> - `ToObje -(); \ - -54 -x -## -e_s -. -xt_ - = ( -Byf -*) - `Bufr_Da -( -put -); \ - -55  -ngth - = -x -## -e_s -. -ava_ - = - `Bufr_Lgth -( -put -); \ - -57  -t -; \ - -58 * -su - = -NULL -; \ - -60  -comesd - = 0; \ - -62 -su - = (*) - `loc -esu, -comesd - + - - * -ngth -); \ - -63 i(! -su - - `ZLib_r -("Couldotllocate memory"); \ - -65 -x -## -e_s -. -ava_out - = - - * -ngth -; \ - -66 -x -## -e_s -. -xt_out - = ( -Byf -*) -su - + -comesd -; \ - -68 -t - = -x -## - `e -(&x## -e_s -, -Z_FINISH -); \ - -69 i( -t - ! -Z_STREAM_END - && ! -Z_OK - && ! -Z_BUF_ERROR -) { \ - -70 - ` -( -su -); \ - -71  - `ZLib_r -( -x -## -e_s -. -msg -); \ - -74 -comesd - +( - - * -ngth - - -x -## -e_s -. -ava_out -); \ - -75 }  -x -## -e_s -. -ava_out - == 0); \ - -77 -Bufr -* -ouut - = - `Bufr_New -( -su -, -comesd -); \ - -78 - ` -( -su -); \ - -79  -sce -. - `Clo -( -Lol -< -Vue ->:: - `New -( -ouut --> -hd_ -)); \ - -80 } - - ) - -82 -ZLib_Xe -( -de -, 1); - -83 -ZLib_Xe -( - -, 2); - -85 "C"  - - ( -Hd -< -Obje -> -rg -) { - -86 -dee_s -. -zloc - = -e_s -.zlo -Z_NULL -; - -87 -dee_s -. -z - = -e_s -.z = -Z_NULL -; - -88 -dee_s -. -aque - = -e_s -.aqu -Z_NULL -; - -90 -deeIn -(& -dee_s -, -Z_DEFAULT_COMPRESSION -); - -91 -eIn -(& -e_s -); - -93 -NODE_SET_METHOD -( -rg -, "dee", -ZLib_dee -); - -94 -NODE_SET_METHOD -( -rg -, "e", -ZLib_e -); - - @lib/ESPAsyncWebServer/AsyncEventSource.cpp - -20  - ~"Arduo.h -" - -21  - ~"AsyncEvtSour.h -" - -23  -Sg - - $geEvtMesge -(cڡ * -mesge -, cڡ * -evt -, -ut32_t - -id -, ut32_ -c -){ - -24 -Sg - -ev -; - -26 if( -c -){ - -27 -ev - + - `F -("retry: "); - -28 -ev - + -c -; - -29 -ev - + - `F -("\r\n"); - -32 if( -id -){ - -33 -ev - + - `F -("id: "); - -34 -ev - + - `Sg -( -id -); - -35 -ev - + - `F -("\r\n"); - -38 if( -evt - ! -NULL -){ - -39 -ev - + - `F -("event: "); - -40 -ev - + - `Sg -( -evt -); - -41 -ev - + - `F -("\r\n"); - -44 if( -mesge - ! -NULL -){ - -45 -size_t - -mesgeL - = - ` -( -mesge -); - -46 * -leS - = (*) -mesge -; - -47 * -leEnd -; - -49 * -xtN - = - `rchr -( -leS -, '\n'); - -50 * -xtR - = - `rchr -( -leS -, '\r'); - -51 if( -xtN - = -NULL - && -xtR - == NULL){ - -52 -size_t - -Β - = ((*) -mesge - + -mesgeL -- -leS -; - -53 * -lda - = (*) - `mloc -( -Β -+1); - -54 if( -lda - ! -NULL -){ - -55 - `memy -( -lda -, -leS -, -Β -); - -56 -lda -[ -Β -] = 0; - -57 -ev - + - `F -("data: "); - -58 -ev - + -lda -; - -59 -ev - + - `F -("\r\n\r\n"); - -60 - ` -( -lda -); - -62 -leS - = (*) -mesge - + -mesgeL -; - -64 * -xtLe - = -NULL -; - -65 if( -xtN - ! -NULL - && -xtR - != NULL){ - -66 if( -xtR - < -xtN -){ - -67 -leEnd - = -xtR -; - -68 if( -xtN - =( -xtR - + 1)) - -69 -xtLe - = -xtN - + 1; - -71 -xtLe - = -xtR - + 1; - -73 -leEnd - = -xtN -; - -74 if( -xtR - =( -xtN - + 1)) - -75 -xtLe - = -xtR - + 1; - -77 -xtLe - = -xtN - + 1; - -79 } if( -xtN - ! -NULL -){ - -80 -leEnd - = -xtN -; - -81 -xtLe - = -xtN - + 1; - -83 -leEnd - = -xtR -; - -84 -xtLe - = -xtR - + 1; - -87 -size_t - -Β - = -leEnd - - -leS -; - -88 * -lda - = (*) - `mloc -( -Β -+1); - -89 if( -lda - ! -NULL -){ - -90 - `memy -( -lda -, -leS -, -Β -); - -91 -lda -[ -Β -] = 0; - -92 -ev - + - `F -("data: "); - -93 -ev - + -lda -; - -94 -ev - + - `F -("\r\n"); - -95 - ` -( -lda -); - -97 -leS - = -xtLe -; - -98 if( -leS - =((*) -mesge - + -mesgeL -)) - -99 -ev - + - `F -("\r\n"); - -101 }  -leS - < ((*) -mesge - + -mesgeL -)); - -104  -ev -; - -105 - } -} - -109 - gAsyncEvtSourMesge -:: - $AsyncEvtSourMesge -(cڡ * -da -, -size_t - -n -) - -110 : - `_da -( -nuαr -), - `_n -( -n -), - `_ -(0), - $_acked -(0) - -112 -_da - = ( -ut8_t -*) - `mloc -( -_n -+1); - -113 if( -_da - = -nuαr -){ - -114 -_n - = 0; - -116 - `memy -( -_da -, -da -, -n -); - -117 -_da -[ -_n -] = 0; - -119 - } -} - -121 - gAsyncEvtSourMesge -::~ - $AsyncEvtSourMesge -() { - -122 if( -_da - ! -NULL -) - -123 - ` -( -_da -); - -124 - } -} - -126 -size_t - - gAsyncEvtSourMesge -:: - $ack -( -size_t - -n -, -ut32_t - -time -) { - -127 () -time -; - -129 if( -_acked - + -n - > -_n -){ - -131 cڡ -size_t - -exa - = -_acked - + -n - - -_n -; - -132 -_acked - = -_n -; - -133  -exa -; - -136 -_acked - + -n -; - -138 - } -} - -140 -size_t - - gAsyncEvtSourMesge -:: - $nd -( -AsyncCl - * - -) { - -141 cڡ -size_t - -n - = -_n - - -_ -; - -142 if( - --> - `a -(< -n -){ - -145 -size_t - - - = - --> - `add -((cڡ *) -_da -, -n -); - -146 if( - --> - `nSd -()) - -147 - --> - `nd -(); - -148 -_ - + - -; - -149  - -; - -150 - } -} - -154 - gAsyncEvtSourCl -:: - $AsyncEvtSourCl -( -AsyncWebSvReque - * -que -, -AsyncEvtSour - * -rv -) - -155 : - `_mesgeQueue -( -LkedLi -< -AsyncEvtSourMesge - *>([](AsyncEvtSourMesg* -m -){ -de - m; - } -})) - -157 - g_ - = -que --> - -(); - -158 - g_rv - = -rv -; - -159 - g_ϡId - = 0; - -160 if( - gque --> -hasHd -( -F -("Last-Event-ID"))) - -161 - g_ϡId - = -oi -( -que --> -gHd -( -F -("La-Evt-ID"))-> -vue -(). -c_r -()); - -163 - g_ --> -tRxTimeout -(0); - -164 - g_ --> -E -( -NULL -, NULL); - -165 - g_ --> -Ack -([](* -r -, -AsyncCl -* -c -, -size_t - -n -, -ut32_t - -time -){ ()c; (( -AsyncEvtSourCl -*)))-> -_Ack -֒,ime); }, -this -); - -166 - g_ --> -Pl -([](* -r -, -AsyncCl -* -c -){ ()c; (( -AsyncEvtSourCl -*)))-> -_Pl -(); }, -this -); - -167 - g_ --> -Da -( -NULL -, NULL); - -168 - g_ --> -Timeout -([ -this -](* -r -, -AsyncCl -* -c - -__ibu__ -(( -unud -)), -ut32_t - -time -){ (( -AsyncEvtSourCl -*)))-> -_Timeout -(time); },his); - -169 - g_ --> -Disc -([ -this -](* -r -, -AsyncCl -* -c -){ (( -AsyncEvtSourCl -*)))-> -_Disc -(); -de - c; },his); - -171 - g_rv --> -_addCl -( -this -); - -172 -de - - gque -; - -175 - gAsyncEvtSourCl -::~ - $AsyncEvtSourCl -(){ - -176 -_mesgeQueue -. - ` -(); - -177 - `o -(); - -178 - } -} - -180  - gAsyncEvtSourCl -:: - $_queueMesge -( -AsyncEvtSourMesge - * -daMesge -){ - -181 if( -daMesge - = -NULL -) - -183 if(! - `ced -()){ - -184 -de - -daMesge -; - -187 if( -_mesgeQueue -. - `ngth -(> -SSE_MAX_QUEUED_MESSAGES -){ - -188 - `s_tf -( - `Sg -( - `F -("ERROR: Tomy mesgequeued\n")). - `c_r -()); - -189 -de - -daMesge -; - -191 -_mesgeQueue -. - `add -( -daMesge -); - -193 if( -_ --> - `nSd -()) - -194 - `_runQueue -(); - -195 - } -} - -197  - gAsyncEvtSourCl -:: - $_Ack -( -size_t - -n -, -ut32_t - -time -){ - -198  -n - && ! -_mesgeQueue -. - `isEmy -()){ - -199 -n - = -_mesgeQueue -. - `t -()-> - `ack -֒, -time -); - -200 if( -_mesgeQueue -. - `t -()-> - `fished -()) - -201 -_mesgeQueue -. - `move -(_mesgeQueue. - `t -()); - -204 - `_runQueue -(); - -205 - } -} - -207  - gAsyncEvtSourCl -:: - $_Pl -(){ - -208 if(! -_mesgeQueue -. - `isEmy -()){ - -209 - `_runQueue -(); - -211 - } -} - -214  - gAsyncEvtSourCl -:: -_Timeout -( -ut32_t - -time - -__ibu__ -(( -unud -))){ - -215 -_ --> -o -( -ue -); - -218  - gAsyncEvtSourCl -:: - $_Disc -(){ - -219 -_ - = -NULL -; - -220 -_rv --> - `_hdDisc -( -this -); - -221 - } -} - -223  - gAsyncEvtSourCl -:: - $o -(){ - -224 if( -_ - ! -NULL -) - -225 -_ --> - `o -(); - -226 - } -} - -228  - gAsyncEvtSourCl -:: - $wre -(cڡ * -mesge -, -size_t - -n -){ - -229 - `_queueMesge -( -w - - `AsyncEvtSourMesge -( -mesge -, -n -)); - -230 - } -} - -232  - gAsyncEvtSourCl -:: - $nd -(cڡ * -mesge -, cڡ * -evt -, -ut32_t - -id -, ut32_ -c -){ - -233 -Sg - -ev - = - `geEvtMesge -( -mesge -, -evt -, -id -, -c -); - -234 - `_queueMesge -( -w - - `AsyncEvtSourMesge -( -ev -. - `c_r -(),v. - `ngth -())); - -235 - } -} - -237  - gAsyncEvtSourCl -:: - $_runQueue -(){ - -238 ! -_mesgeQueue -. - `isEmy -(&& _mesgeQueue. - `t -()-> - `fished -()){ - -239 -_mesgeQueue -. - `move -(_mesgeQueue. - `t -()); - -242 aut -i - = -_mesgeQueue -. - `beg -(); i !_mesgeQueue. - `d -(); ++i) - -244 if(!(* -i -)-> - ` -()) - -245 (* -i -)-> - `nd -( -_ -); - -247 - } -} - -252 - gAsyncEvtSour -:: - $AsyncEvtSour -(cڡ -Sg -& -u -) - -253 : - `_u -( -u -) - -254 , - `_s -( -LkedLi -< -AsyncEvtSourCl - *>([](AsyncEvtSourCl * -c -){ -de - c; - } -})) - -255 , - $_ccb -( -NULL -) - -256 { - } -} - -258 - gAsyncEvtSour -::~ - $AsyncEvtSour -(){ - -259 - `o -(); - -260 - } -} - -262  - gAsyncEvtSour -:: - $C -( -ArEvtHdrFuni - -cb -){ - -263 -_ccb - = -cb -; - -264 - } -} - -266  - gAsyncEvtSour -:: - $_addCl -( -AsyncEvtSourCl - * - -){ - -280 -_s -. - `add -( - -); - -281 if( -_ccb -) - -282 - `_ccb -( - -); - -283 - } -} - -285  - gAsyncEvtSour -:: - $_hdDisc -( -AsyncEvtSourCl - * - -){ - -286 -_s -. - `move -( - -); - -287 - } -} - -289  - gAsyncEvtSour -:: - $o -(){ - -290 cڡut& -c -: -_s -){ - -291 if( -c --> - `ced -()) - -292 -c --> - `o -(); - -294 - } -} - -297 -size_t - - gAsyncEvtSour -:: - $avgPacksWag -() const { - -298 if( -_s -. - `isEmy -()) - -301 -size_t - -aql -=0; - -302 -ut32_t - -nCedCls -=0; - -304 cڡut& -c -: -_s -){ - -305 if( -c --> - `ced -()) { - -306 -aql -+= -c --> - `cksWag -(); - -307 ++ -nCedCls -; - -311  (( -aql -+ ( -nCedCls -/2))/(nConnectedClients); - -312 - } -} - -314  - gAsyncEvtSour -:: - $nd -(cڡ * -mesge -, cڡ * -evt -, -ut32_t - -id -, ut32_ -c -){ - -317 -Sg - -ev - = - `geEvtMesge -( -mesge -, -evt -, -id -, -c -); - -318 cڡut& -c -: -_s -){ - -319 if( -c --> - `ced -()) { - -320 -c --> - `wre -( -ev -. - `c_r -(),v. - `ngth -()); - -323 - } -} - -325 -size_t - - gAsyncEvtSour -:: - $cou -() const { - -326  -_s -. - `cou_if -([]( -AsyncEvtSourCl - * -c -){ - -327  -c --> - `ced -(); - -329 - } -} - -331 -bo - - gAsyncEvtSour -:: - $nHd -( -AsyncWebSvReque - * -que -){ - -332 if( -que --> - `mhod -(! -HTTP_GET - || !que-> - `u -(). - `equs -( -_u -)) { - -333  -l -; - -335 -que --> - `addIegHd -( - `F -("Last-Event-ID")); - -336  -ue -; - -337 - } -} - -339  - gAsyncEvtSour -:: - $hdReque -( -AsyncWebSvReque - * -que -){ - -340 if(( -_uame -. - `ngth -(&& -_sswd -.ngth()&& ! -que --> - `authti -(_uame. - `c_r -(), _password.c_str())) { - -341  -que --> - `queAuthtiti -(); - -343 -que --> - `nd -( -w - - `AsyncEvtSourReڣ -( -this -)); - -344 - } -} - -348 - gAsyncEvtSourReڣ -:: - $AsyncEvtSourReڣ -( -AsyncEvtSour - * -rv -){ - -349 -_rv - = -rv -; - -350 -_code - = 200; - -351 -_cڋTy - = - `F -("text/event-stream"); - -352 -_ndCڋLgth - = -l -; - -353 - `addHd -( - `F -("Cache-Control"), F("no-cache")); - -354 - `addHd -( - `F -("Connection"), F("keep-alive")); - -355 - } -} - -357  - gAsyncEvtSourReڣ -:: - $_d -( -AsyncWebSvReque - * -que -){ - -358 -Sg - -out - = - `_asmbHd -( -que --> - `vsi -()); - -359 -que --> - ` -()-> - `wre -( -out -. - `c_r -(), -_hdLgth -); - -360 -_e - = -RESPONSE_WAIT_ACK -; - -361 - } -} - -363 -size_t - - gAsyncEvtSourReڣ -:: -_ack -( -AsyncWebSvReque - * -que -, size_ -n -, -ut32_t - -time - -__ibu__ -(( -unud -))){ - -364 if( - gn -){ - -365 -w - -AsyncEvtSourCl -( -que -, -_rv -); - - @lib/ESPAsyncWebServer/AsyncEventSource.h - -20 #ide -ASYNCEVENTSOURCE_H_ - - -21  - #ASYNCEVENTSOURCE_H_ - - - ) - -23  - ~ - -24 #ifde -ESP32 - - -25  - ~ - -26  - #SSE_MAX_QUEUED_MESSAGES - 32 - - ) - -28  - ~ - -29  - #SSE_MAX_QUEUED_MESSAGES - 8 - - ) - -31  - ~ - -33  - ~"AsyncWebSynchrizi.h -" - -35 #ifde -ESP8266 - - -36  - ~ - -37 #ifde -CRYPTO_HASH_h - - -38  - ~<../c/Hash.h -> - -42 #ifde -ESP32 - - -43  - #DEFAULT_MAX_SSE_CLIENTS - 8 - - ) - -45  - #DEFAULT_MAX_SSE_CLIENTS - 4 - - ) - -48 -ass - - gAsyncEvtSour -; - -49 -ass - - gAsyncEvtSourReڣ -; - -50 -ass - - gAsyncEvtSourCl -; - -51  - gd -:: - tfuni -<( - tAsyncEvtSourCl - * - t -)> - tArEvtHdrFuni -; - -53 as - cAsyncEvtSourMesge - { - -54 - mive -: - -55 -ut8_t - * -_da -; - -56 -size_t - - m_n -; - -57 -size_t - - m_ -; - -59 -size_t - - m_acked -; - -60 - mpublic -: - -61 -AsyncEvtSourMesge -(cڡ * -da -, -size_t - -n -); - -62 ~ -AsyncEvtSourMesge -(); - -63 -size_t - -ack -(size_ -n -, -ut32_t - -time - -__ibu__ -(( -unud -))); - -64 -size_t - -nd -( -AsyncCl - * - -); - -65 -bo - - $fished -(){  -_acked - = -_n -; } - -66 -bo - - $ -({  -_ - = -_n -; - } -} - -69 as - cAsyncEvtSourCl - { - -70 - mive -: - -71 -AsyncCl - * -_ -; - -72 -AsyncEvtSour - * - m_rv -; - -73 -ut32_t - - m_ϡId -; - -74 - mLkedLi -< - mAsyncEvtSourMesge - *> - m_mesgeQueue -; - -75  -_queueMesge -( -AsyncEvtSourMesge - * -daMesge -); - -76  -_runQueue -(); - -78 - mpublic -: - -80 -AsyncEvtSourCl -( -AsyncWebSvReque - * -que -, -AsyncEvtSour - * -rv -); - -81 ~ -AsyncEvtSourCl -(); - -83 -AsyncCl -* - $ -(){  -_ -; } - -84  - `o -(); - -85  - `wre -(cڡ * -mesge -, -size_t - -n -); - -86  - `nd -(cڡ * -mesge -, cڡ * -evt -= -NULL -, -ut32_t - -id -=0, ut32_ -c -=0); - -87 -bo - - $ced -(cڡ {  ( -_ - ! -NULL -&& _-> - `ced -(); - } -} - -88 -ut32_t - - $ϡId -(cڡ {  -_ϡId -; - } -} - -89 -size_t - - $cksWag -(cڡ {  -_mesgeQueue -. - `ngth -(); - } -} - -92  -_Ack -( -size_t - -n -, -ut32_t - -time -); - -93  -_Pl -(); - -94  -_Timeout -( -ut32_t - -time -); - -95  -_Disc -(); - -98 as - cAsyncEvtSour -: -public - -AsyncWebHdr - { - -99 -ive -: - -100 -Sg - -_u -; - -101 - mLkedLi -< - mAsyncEvtSourCl - *> - m_s -; - -102 -ArEvtHdrFuni - - m_ccb -; - -103 - mpublic -: - -104 -AsyncEvtSour -(cڡ -Sg -& -u -); - -105 ~ -AsyncEvtSour -(); - -107 cڡ * - $u -(cڡ {  -_u -. - `c_r -(); } - -108  - `o -(); - -109  - `C -( -ArEvtHdrFuni - -cb -); - -110  - `nd -(cڡ * -mesge -, cڡ * -evt -= -NULL -, -ut32_t - -id -=0, ut32_ -c -=0); - -111 -size_t - - $cou -() const; - -112 -size_t - - $avgPacksWag -() const; - -115  - `_addCl -( -AsyncEvtSourCl - * - -); - -116  - `_hdDisc -( -AsyncEvtSourCl - * - -); - -117 -vtu - -bo - - $nHd -( -AsyncWebSvReque - * -que - -ovride - -f -; - -118 -vtu -  - $hdReque -( -AsyncWebSvReque - * -que - -ovride - -f -; - -119 - } -}; - -121 as - cAsyncEvtSourReڣ -: -public - -AsyncWebSvReڣ - { - -122 -ive -: - -123 -Sg - -_cڋ -; - -124 -AsyncEvtSour - * - m_rv -; - -125 - mpublic -: - -126 -AsyncEvtSourReڣ -( -AsyncEvtSour - * -rv -); - -127  -_d -( -AsyncWebSvReque - * -que -); - -128 -size_t - -_ack -( -AsyncWebSvReque - * -que -, size_ -n -, -ut32_t - -time -); - -129 -bo - - $_sourVid -(cڡ {  -ue -; } - -130 - } -}; - - @lib/ESPAsyncWebServer/AsyncJson.h - -35 #ide -ASYNC_JSON_H_ - - -36  - #ASYNC_JSON_H_ - - - ) - -37  - ~ - -38  - ~ - -39  - ~ - -41 #i -ARDUINOJSON_VERSION_MAJOR - == 5 - -42  - #ARDUINOJSON_5_COMPATIBILITY - - - ) - -44  - #DYNAMIC_JSON_DOCUMENT_SIZE - 1024 - - ) - -47 -cڡex - cڡ * - gJSON_MIMETYPE - = "application/json"; - -53 as - cChunkPrt - : -public - -Prt - { - -54 -ive -: - -55 -ut8_t -* -_dei -; - -56 -size_t - - m_to_sk -; - -57 -size_t - - m_to_wre -; - -58 -size_t - - m_pos -; - -59 - mpublic -: - -60 - $ChunkPrt -( -ut8_t -* -dei -, -size_t - -om -, size_ -n -) - -61 : - `_dei -( -dei -), - `_to_sk -( -om -), - `_to_wre -( -n -), -_pos -{0} { - } -} - -62 - gvtu - ~ - $ChunkPrt -(){ - } -} - -63 -size_t - - $wre -( -ut8_t - -c -){ - -64 i( -_to_sk - > 0) { - -65 -_to_sk ---; - -67 } i( -_to_wre - > 0) { - -68 -_to_wre ---; - -69 -_dei -[ -_pos -++] = -c -; - -73 - } -} - -74 -size_t - - $wre -(cڡ -ut8_t - * -bufr -, -size_t - -size -) - -76  -this --> -Prt -:: - `wre -( -bufr -, -size -); - -77 - } -} - -80 as - cAsyncJsReڣ -: -public - -AsyncAbReڣ - { - -81 -eed -: - -83 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -84 -DymicJsBufr - -_jsBufr -; - -86 -DymicJsDocumt - - m_jsBufr -; - -89 -JsV - - m_ro -; - -90 -bo - - m_isVid -; - -92 - mpublic -: - -94 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -95 - $AsyncJsReڣ -( -bo - -isAay -= -l -): -_isVid -{false} { - -96 -_code - = 200; - -97 -_cڋTy - = -JSON_MIMETYPE -; - -98 if( -isAay -) - -99 -_ro - = -_jsBufr -. - `Aay -(); - -101 -_ro - = -_jsBufr -. - `Obje -(); - -102 - } -} - -104 - $AsyncJsReڣ -( -bo - -isAay -= -l -, -size_t - -maxJsBufrSize - = -DYNAMIC_JSON_DOCUMENT_SIZE -: - `_jsBufr -(maxJsBufrSize), -_isVid -{ - } -false} { - -105 - g_code - = 200; - -106 - g_cڋTy - = -JSON_MIMETYPE -; - -107 if( - gisAay -) - -108 - g_ro - = -_jsBufr -. -NeedAay -(); - -110 - g_ro - = -_jsBufr -. -NeedObje -(); - -114 ~ - $AsyncJsReڣ -({ - } -} - -115 - gJsV - & - $gRo -({  -_ro -; - } -} - -116 -bo - - $_sourVid -(cڡ {  -_isVid -; - } -} - -117 -size_t - - $tLgth -() { - -119 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -120 -_cڋLgth - = -_ro -. - `msuLgth -(); - -122 -_cڋLgth - = - `msuJs -( -_ro -); - -125 i( -_cڋLgth -{ -_isVid - = -ue -; } - -126  -_cڋLgth -; - -127 - } -} - -129 -size_t - - $gSize -({  -_jsBufr -. - `size -(); - } -} - -131 -size_t - - $_flBufr -( -ut8_t - * -da -, -size_t - -n -){ - -132 -ChunkPrt - - `de -( -da -, -_Lgth -, -n -); - -134 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -135 -_ro -. - `tTo - -de - ) ; - -137 - `rlizeJs -( -_ro -, -de -); - -139  -n -; - -140 - } -} - -143 as - cPyAsyncJsReڣ -: -public - -AsyncJsReڣ - { - -144 -public -: - -145 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -146 - $PyAsyncJsReڣ - ( -bo - -isAay -= -l -: -AsyncJsReڣ -{isAay} { - } -} - -148 - $PyAsyncJsReڣ - ( -bo - -isAay -= -l -, -size_t - -maxJsBufrSize - = -DYNAMIC_JSON_DOCUMENT_SIZE -: -AsyncJsReڣ -{isAay, - } -maxJsonBufferSize} {} - -150 -size_t - - $tLgth - () { - -151 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -152 -_cڋLgth - = -_ro -. - `msuPyLgth - (); - -154 -_cڋLgth - = - `msuJsPy -( -_ro -); - -156 i( -_cڋLgth -{ -_isVid - = -ue -;} - -157  -_cڋLgth -; - -158 - } -} - -159 -size_t - - $_flBufr - ( -ut8_t - * -da -, -size_t - -n -) { - -160 -ChunkPrt - - `de - ( -da -, -_Lgth -, -n -); - -161 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -162 -_ro -. - `tyPrtTo - ( -de -); - -164 - `rlizeJsPy -( -_ro -, -de -); - -166  -n -; - -167 - } -} - -170  - gd -:: - tfuni -<( - tAsyncWebSvReque - * - tque -, - tJsV - & - tjs -)> - tArJsRequeHdrFuni -; - -172 as - cAsyncClbackJsWebHdr -: -public - -AsyncWebHdr - { - -173 -ive -: - -174 -eed -: - -175 cڡ -Sg - -_uri -; - -176 -WebRequeMhodCompose - - m_mhod -; - -177 -ArJsRequeHdrFuni - - m_Reque -; - -178 -size_t - - m_cڋLgth -; - -179 #ide -ARDUINOJSON_5_COMPATIBILITY - - -180 cڡ -size_t - - mmaxJsBufrSize -; - -182 -size_t - - m_maxCڋLgth -; - -183 - mpublic -: - -184 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -185 - $AsyncClbackJsWebHdr -(cڡ -Sg -& -uri -, -ArJsRequeHdrFuni - -Reque -) - -186 : - `_uri -( -uri -), - `_mhod -( -HTTP_POST -| -HTTP_PUT -| -HTTP_PATCH -), - `_Reque -( -Reque -), - $_maxCڋLgth -(16384) {} - -188 - $AsyncClbackJsWebHdr -(cڡ -Sg -& -uri -, -ArJsRequeHdrFuni - -Reque -, -size_t - -maxJsBufrSize -= -DYNAMIC_JSON_DOCUMENT_SIZE -) - -189 : - `_uri -( -uri -), - `_mhod -( -HTTP_POST -| -HTTP_PUT -| -HTTP_PATCH -), - `_Reque -( -Reque -), - `maxJsBufrSize -( -maxJsBufrSize -), - $_maxCڋLgth -(16384{ - } -} - -192  - $tMhod -( -WebRequeMhodCompose - -mhod -){ -_mhod - = mhod; - } -} - -193  - $tMaxCڋLgth -( -maxCڋLgth -){ -_maxCڋLgth - = maxCڋLgth; - } -} - -194  - $Reque -( -ArJsRequeHdrFuni - - -){ -_Reque - = fn; - } -} - -196 -vtu - -bo - - $nHd -( -AsyncWebSvReque - * -que - -ovride - -f -{ - -197 if(! -_Reque -) - -198  -l -; - -200 if(!( -_mhod - & -que --> - `mhod -())) - -201  -l -; - -203 if( -_uri -. - `ngth -(&& (_ur! -que --> - `u -(&& !que->u(). - `tsWh -(_uri+"/"))) - -204  -l -; - -206 i! -que --> - `cڋTy -(). - `equsIgneCa -( -JSON_MIMETYPE -) ) - -207  -l -; - -209 -que --> - `addIegHd -("ANY"); - -210  -ue -; - -211 - } -} - -213 -vtu -  - $hdReque -( -AsyncWebSvReque - * -que - -ovride - -f - { - -214 if( -_Reque -) { - -215 i( -que --> -_mpObje - ! -NULL -) { - -217 #ifde -ARDUINOJSON_5_COMPATIBILITY - - -218 -DymicJsBufr - -jsBufr -; - -219 -JsV - -js - = -jsBufr -. - `r -(( -ut8_t -*)( -que --> -_mpObje -)); - -220 i( -js -. - `sucss -()) { - -222 -DymicJsDocumt - - `jsBufr -( -this --> -maxJsBufrSize -); - -223 -DerliziE - -r - = - `derlizeJs -( -jsBufr -, ( -ut8_t -*)( -que --> -_mpObje -)); - -224 if(! -r -) { - -225 -JsV - -js - = -jsBufr -. -as -(); - -228 - `_Reque -( -que -, -js -); - -232 -que --> - `nd -( -_cڋLgth - > -_maxCڋLgth - ? 413 : 400); - -234 -que --> - `nd -(500); - -236 - } -} - -237 -vtu -  - $hdUd -( -AsyncWebSvReque - * -que -, cڡ -Sg -& -fame -, -size_t - -dex -, -ut8_t - * -da -, size_ -n -, -bo - -f - -ovride - final { - -238 - } -} - -239 -vtu -  - $hdBody -( -AsyncWebSvReque - * -que -, -ut8_t - * -da -, -size_t - -n -, size_ -dex -, size_ -tٮ - -ovride - -f - { - -240 i( -_Reque -) { - -241 -_cڋLgth - = -tٮ -; - -242 i( -tٮ - > 0 && -que --> -_mpObje - = -NULL - &&ٮ < -_maxCڋLgth -) { - -243 -que --> -_mpObje - = - `mloc -( -tٮ -); - -245 i( -que --> -_mpObje - ! -NULL -) { - -246 - `memy -(( -ut8_t -*)( -que --> -_mpObje -+ -dex -, -da -, -n -); - -249 - } -} - -250 -vtu - -bo - - $isRequeHdrTrivl -( -ovride - -f - { -_Reque - ? -l - : -ue -; - } -} - - @lib/ESPAsyncWebServer/AsyncWebSocket.cpp - -21  - ~"Arduo.h -" - -22  - ~"AsyncWebSock.h -" - -24  - ~ - -26 #ide -ESP8266 - - -29 -ut32_t - -e -[5]; - -30 -ut32_t - -cou -[2]; - -31  -bufr -[64]; - -32 } - tSHA1_CTX -; - -34  -SHA1Tnsfm -( -ut32_t - -e -[5], cڡ  -bufr -[64]); - -35  -SHA1In -( -SHA1_CTX -* -cڋxt -); - -36  -SHA1Upde -( -SHA1_CTX -* -cڋxt -, cڡ * -da -, -ut32_t - -n -); - -37  -SHA1F -( -dige -[20], -SHA1_CTX -* -cڋxt -); - -40  - ~ - -43  - #MAX_PRINTF_LEN - 64 - - ) - -45 -size_t - -AsyncWebSockMesgeBufrLkedLi -:: -_tٮCou - = 0; - -46 -size_t - - gAsyncWebSockMesgeBufrLkedLi -:: -_tٮSize - = 0; - -48 -size_t - - $webSockSdFmeWdow -( -AsyncCl - * - -){ - -49 if(! - --> - `nSd -()) - -51 -size_t - -a - = - --> - `a -(); - -52 if( -a - < 9) - -54  -a - - 8; - -55 - } -} - -57 -size_t - - $webSockSdFme -( -AsyncCl - * - -, -bo - -f -, -ut8_t - -code -, bo -mask -, ut8_* -da -, -size_t - -n -){ - -58 if(! - --> - `nSd -()) - -60 -size_t - -a - = - --> - `a -(); - -61 if( -a - < 2) - -63 -ut8_t - -mbuf -[4] = {0,0,0,0}; - -64 -ut8_t - -hdL - = 2; - -65 if( -n - && -mask -){ - -66 -hdL - += 4; - -67 -mbuf -[0] = - `nd -() % 0xFF; - -68 -mbuf -[1] = - `nd -() % 0xFF; - -69 -mbuf -[2] = - `nd -() % 0xFF; - -70 -mbuf -[3] = - `nd -() % 0xFF; - -72 if( -n - > 125) - -73 -hdL - += 2; - -74 if( -a - < -hdL -) - -76 -a - - -hdL -; - -78 if( -n - > -a -)en = space; - -80 -ut8_t - * -buf - = (ut8_t*) - `mloc -( -hdL -); - -81 if( -buf - = -NULL -){ - -86 -buf -[0] = -code - & 0x0F; - -87 if( -f -) - -88 -buf -[0] |= 0x80; - -89 if( -n - < 126) - -90 -buf -[1] = -n - & 0x7F; - -92 -buf -[1] = 126; - -93 -buf -[2] = ( -ut8_t -)(( -n - >> 8) & 0xFF); - -94 -buf -[3] = ( -ut8_t -)( -n - & 0xFF); - -96 if( -n - && -mask -){ - -97 -buf -[1] |= 0x80; - -98 - `memy -( -buf - + ( -hdL - - 4), -mbuf -, 4); - -100 if( - --> - `add -((cڡ *) -buf -, -hdL -) != headLen){ - -102 - ` -( -buf -); - -105 - ` -( -buf -); - -107 if( -n -){ - -108 if( -n - && -mask -){ - -109 -size_t - -i -; - -110  -i -=0;i< -n -;i++) - -111 -da -[ -i -] = da[i] ^ -mbuf -[i%4]; - -113 if( - --> - `add -((cڡ *) -da -, -n -) !=en){ - -118 if(! - --> - `nd -()){ - -122  -n -; - -123 - } -} - -132 - gAsyncWebSockMesgeBufr -:: - $AsyncWebSockMesgeBufr -() - -133 : - `_da -( -nuαr -) - -134 , - `_n -(0) - -135 , - `_lock -( -l -) - -136 , - $_cou -(0) - -139 - } -} - -141 - gAsyncWebSockMesgeBufr -:: - $AsyncWebSockMesgeBufr -( -ut8_t - * -da -, -size_t - -size -) - -142 : - `_da -( -nuαr -) - -143 , - `_n -( -size -) - -144 , - `_lock -( -l -) - -145 , - $_cou -(0) - -148 i(! -da -) { - -152 -_da - = -w - -ut8_t -[ -_n - + 1]; - -154 i( -_da -) { - -155 - `memy -( -_da -, -da -, -_n -); - -156 -_da -[ -_n -] = 0; - -158 - } -} - -161 - gAsyncWebSockMesgeBufr -:: - $AsyncWebSockMesgeBufr -( -size_t - -size -) - -162 : - `_da -( -nuαr -) - -163 , - `_n -( -size -) - -164 , - `_lock -( -l -) - -165 , - $_cou -(0) - -167 -_da - = -w - -ut8_t -[ -_n - + 1]; - -169 i( -_da -) { - -170 -_da -[ -_n -] = 0; - -173 - } -} - -175 - gAsyncWebSockMesgeBufr -:: - $AsyncWebSockMesgeBufr -(cڡ -AsyncWebSockMesgeBufr - & -cy -) - -176 : - `_da -( -nuαr -) - -177 , - `_n -(0) - -178 , - `_lock -( -l -) - -179 , - $_cou -(0) - -181 -_n - = -cy -._len; - -182 -_lock - = -cy -._lock; - -183 -_cou - = 0; - -185 i( -_n -) { - -186 -_da - = -w - -ut8_t -[ -_n - + 1]; - -187 -_da -[ -_n -] = 0; - -190 i( -_da -) { - -191 - `memy -( -_da -, -cy -._da, -_n -); - -192 -_da -[ -_n -] = 0; - -195 - } -} - -197 - gAsyncWebSockMesgeBufr -:: - $AsyncWebSockMesgeBufr -( -AsyncWebSockMesgeBufr - && -cy -) - -198 : - `_da -( -nuαr -) - -199 , - `_n -(0) - -200 , - `_lock -( -l -) - -201 , - $_cou -(0) - -203 -_n - = -cy -._len; - -204 -_lock - = -cy -._lock; - -205 -_cou - = 0; - -207 i( -cy -. -_da -) { - -208 -_da - = -cy -._data; - -209 -cy -. -_da - = -nuαr -; - -212 - } -} - -214 - gAsyncWebSockMesgeBufr -::~ - $AsyncWebSockMesgeBufr -() - -216 i( -_da -) { - -217 -de -[] -_da -; - -219 - } -} - -221 -bo - - gAsyncWebSockMesgeBufr -:: - $rve -( -size_t - -size -) - -223 -_n - = -size -; - -225 i( -_da -) { - -226 -de -[] -_da -; - -227 -_da - = -nuαr -; - -230 -_da - = -w - -ut8_t -[ -_n - + 1]; - -232 i( -_da -) { - -233 -_da -[ -_n -] = 0; - -234  -ue -; - -236  -l -; - -239 - } -} - -247 as - cAsyncWebSockCڌ - { - -248 - mive -: - -249 -ut8_t - -_code -; - -250 -ut8_t - * - m_da -; - -251 -size_t - - m_n -; - -252 -bo - - m_mask -; - -253 -bo - - m_fished -; - -254 - mpublic -: - -255 - $AsyncWebSockCڌ -( -ut8_t - -code -, ut8_* -da -= -NULL -, -size_t - -n -=0, -bo - -mask -= -l -) - -256 : - `_code -( -code -) - -257 , - `_n -( -n -) - -258 , - `_mask -( -n - && -mask -) - -259 , - $_fished -( -l -) - -261 if( -da - = -NULL -) - -262 -_n - = 0; - -263 if( -_n -){ - -264 if( -_n - > 125) - -265 -_n - = 125; - -266 -_da - = ( -ut8_t -*) - `mloc -( -_n -); - -267 if( -_da - = -NULL -) - -268 -_n - = 0; - -269 - `memy_P -( -_da -, -da -, -n -); - -270 } -_da - = -NULL -; - -272 -vtu - ~ - $AsyncWebSockCڌ -(){ - -273 if( -_da - ! -NULL -) - -274 - ` -( -_da -); - -275 - } -} - -276 -vtu - -bo - - $fished -(cڡ {  -_fished -; - } -} - -277 -ut8_t - - $code -(){  -_code -; - } -} - -278 -ut8_t - - $n -(){  -_n - + 2; - } -} - -279 -size_t - - $nd -( -AsyncCl - * - -){ - -280 -_fished - = -ue -; - -281  - `webSockSdFme -( - -, -ue -, -_code - & 0x0F, -_mask -, -_da -, -_n -); - -282 - } -} - -290 - gAsyncWebSockBasicMesge -:: - $AsyncWebSockBasicMesge -(cڡ * -da -, -size_t - -n -, -ut8_t - -code -, -bo - -mask -) - -291 : - `_n -( -n -) - -292 , - `_ -(0) - -293 , - `_ack -(0) - -294 , - $_acked -(0) - -296 -_code - = -code - & 0x07; - -297 -_mask - = -mask -; - -298 -_da - = ( -ut8_t -*) - `mloc -( -_n -+1); - -299 if( -_da - = -NULL -){ - -300 -_n - = 0; - -301 -_us - = -WS_MSG_ERROR -; - -303 -_us - = -WS_MSG_SENDING -; - -304 - `memy -( -_da -, -da -, -_n -); - -305 -_da -[ -_n -] = 0; - -307 - } -} - -308 - gAsyncWebSockBasicMesge -:: - $AsyncWebSockBasicMesge -( -ut8_t - -code -, -bo - -mask -) - -309 : - `_n -(0) - -310 , - `_ -(0) - -311 , - `_ack -(0) - -312 , - `_acked -(0) - -313 , - $_da -( -NULL -) - -315 -_code - = -code - & 0x07; - -316 -_mask - = -mask -; - -318 - } -} - -321 - gAsyncWebSockBasicMesge -::~ - $AsyncWebSockBasicMesge -() { - -322 if( -_da - ! -NULL -) - -323 - ` -( -_da -); - -324 - } -} - -326  - gAsyncWebSockBasicMesge -:: - $ack -( -size_t - -n -, -ut32_t - -time -) { - -327 () -time -; - -328 -_acked - + -n -; - -329 if( -_ - = -_n - && -_acked - = -_ack -){ - -330 -_us - = -WS_MSG_SENT -; - -332 - } -} - -333 -size_t - - gAsyncWebSockBasicMesge -:: - $nd -( -AsyncCl - * - -) { - -334 if( -_us - ! -WS_MSG_SENDING -) - -336 if( -_acked - < -_ack -){ - -339 if( -_ - = -_n -){ - -340 if( -_acked - = -_ack -) - -341 -_us - = -WS_MSG_SENT -; - -344 if( -_ - > -_n -){ - -345 -_us - = -WS_MSG_ERROR -; - -349 -size_t - -toSd - = -_n - - -_ -; - -350 -size_t - -wdow - = - `webSockSdFmeWdow -( - -); - -352 if( -wdow - < -toSd -) { - -353 -toSd - = -wdow -; - -356 -_ - + -toSd -; - -357 -_ack - + -toSd - + (oSd < 126)?2:4+ ( -_mask - * 4); - -359 -bo - -f - = ( -_ - = -_n -); - -360 -ut8_t -* -dP - = (ut8_t*)( -_da - + ( -_ - - -toSd -)); - -361 -ut8_t - -Code - = ( -toSd - && -_ - =toSd)? -_code -:(ut8_t) -WS_CONTINUATION -; - -363 -size_t - - - = - `webSockSdFme -( - -, -f -, -Code -, -_mask -, -dP -, -toSd -); - -364 -_us - = -WS_MSG_SENDING -; - -365 if( -toSd - && - - !=oSend){ - -366 -_ - -( -toSd - - - -); - -367 -_ack - -( -toSd - - - -); - -369  - -; - -370 - } -} - -391 - gAsyncWebSockMuiMesge -:: - $AsyncWebSockMuiMesge -( -AsyncWebSockMesgeBufr - * -bufr -, -ut8_t - -code -, -bo - -mask -) - -392 : - `_n -(0) - -393 , - `_ -(0) - -394 , - `_ack -(0) - -395 , - `_acked -(0) - -396 , - $_WSbufr -( -nuαr -) - -399 -_code - = -code - & 0x07; - -400 -_mask - = -mask -; - -402 i( -bufr -) { - -403 -_WSbufr - = -bufr -; - -404 (* -_WSbufr -)++; - -405 -_da - = -bufr --> - `g -(); - -406 -_n - = -bufr --> - `ngth -(); - -407 -_us - = -WS_MSG_SENDING -; - -410 -_us - = -WS_MSG_ERROR -; - -413 - } -} - -416 - gAsyncWebSockMuiMesge -::~ - $AsyncWebSockMuiMesge -() { - -417 i( -_WSbufr -) { - -418 (* -_WSbufr -)--; - -420 - } -} - -422  - gAsyncWebSockMuiMesge -:: - $ack -( -size_t - -n -, -ut32_t - -time -) { - -423 () -time -; - -424 -_acked - + -n -; - -425 if( -_ - > -_n - && -_acked - > -_ack -){ - -426 -_us - = -WS_MSG_SENT -; - -429 - } -} - -430 -size_t - - gAsyncWebSockMuiMesge -:: - $nd -( -AsyncCl - * - -) { - -431 if( -_us - ! -WS_MSG_SENDING -) - -433 if( -_acked - < -_ack -){ - -436 if( -_ - = -_n -){ - -437 -_us - = -WS_MSG_SENT -; - -440 if( -_ - > -_n -){ - -441 -_us - = -WS_MSG_ERROR -; - -446 -size_t - -toSd - = -_n - - -_ -; - -447 -size_t - -wdow - = - `webSockSdFmeWdow -( - -); - -449 if( -wdow - < -toSd -) { - -450 -toSd - = -wdow -; - -453 -_ - + -toSd -; - -454 -_ack - + -toSd - + (oSd < 126)?2:4+ ( -_mask - * 4); - -458 -bo - -f - = ( -_ - = -_n -); - -459 -ut8_t -* -dP - = (ut8_t*)( -_da - + ( -_ - - -toSd -)); - -460 -ut8_t - -Code - = ( -toSd - && -_ - =toSd)? -_code -:(ut8_t) -WS_CONTINUATION -; - -462 -size_t - - - = - `webSockSdFme -( - -, -f -, -Code -, -_mask -, -dP -, -toSd -); - -463 -_us - = -WS_MSG_SENDING -; - -464 if( -toSd - && - - !=oSend){ - -466 -_ - -( -toSd - - - -); - -467 -_ack - -( -toSd - - - -); - -470  - -; - -471 - } -} - -477 cڡ * - gAWSC_PING_PAYLOAD -[] - gPROGMEM - = { "ESPAsyncWebServer-PING" }; - -478 cڡ -size_t - - gAWSC_PING_PAYLOAD_LEN - = 22; - -480 - gAsyncWebSockCl -:: - $AsyncWebSockCl -( -AsyncWebSvReque - * -que -, -AsyncWebSock - * -rv -) - -481 : - `_cڌQueue -( -LkedLi -< -AsyncWebSockCڌ - *>([](AsyncWebSockCڌ * -c -){ -de - c; - } -})) - -482 , -_mesgeQueue -( -LkedLi -< -AsyncWebSockMesge - *>([](AsyncWebSockMesg* -m -){ -de - m; })) - -483 , - $_mpObje -( -NULL -) - -485 -_ - = -que --> - ` -(); - -486 -_rv - = -rv -; - -487 -_Id - = -_rv --> - `_gNextId -(); - -488 -_us - = -WS_CONNECTED -; - -489 -_pe - = 0; - -490 -_ϡMesgeTime - = - `mlis -(); - -491 -_kpAlivePiod - = 0; - -492 -_ --> - `tRxTimeout -(0); - -493 -_ --> - `E -([](* -r -, -AsyncCl -* -c -, -t8_t - -r -){ ()c; (( -AsyncWebSockCl -*)))-> - `_E -Ӽ); }, -this -); - -494 -_ --> - `Ack -([](* -r -, -AsyncCl -* -c -, -size_t - -n -, -ut32_t - -time -){ ()c; (( -AsyncWebSockCl -*)))-> - `_Ack -֒,ime); }, -this -); - -495 -_ --> - `Disc -([](* -r -, -AsyncCl -* -c -){ (( -AsyncWebSockCl -*)))-> - `_Disc -(); -de - c; }, -this -); - -496 -_ --> - `Timeout -([](* -r -, -AsyncCl -* -c -, -ut32_t - -time -){ ()c; (( -AsyncWebSockCl -*)))-> - `_Timeout -ime); }, -this -); - -497 -_ --> - `Da -([](* -r -, -AsyncCl -* -c -, * -buf -, -size_t - -n -){ ()c; (( -AsyncWebSockCl -*)))-> - `_Da -(buf,); }, -this -); - -498 -_ --> - `Pl -([](* -r -, -AsyncCl -* -c -){ ()c; (( -AsyncWebSockCl -*)))-> - `_Pl -(); }, -this -); - -499 -_rv --> - `_addCl -( -this -); - -500 -_rv --> - `_hdEvt -( -this -, -WS_EVT_CONNECT -, -que -, -NULL -, 0); - -501 -de - -que -; - -502 - } -} - -504 - gAsyncWebSockCl -::~ - $AsyncWebSockCl -(){ - -505 -_mesgeQueue -. - ` -(); - -506 -_cڌQueue -. - ` -(); - -507 -_rv --> - `_hdEvt -( -this -, -WS_EVT_DISCONNECT -, -NULL -, NULL, 0); - -508 - } -} - -510  - gAsyncWebSockCl -:: - $_Ack -( -size_t - -n -, -ut32_t - -time -){ - -511 -_ϡMesgeTime - = - `mlis -(); - -512 if(! -_cڌQueue -. - `isEmy -()){ - -513 aut -hd - = -_cڌQueue -. - `t -(); - -514 if( -hd --> - `fished -()){ - -515 -n - - -hd --> - `n -(); - -516 if( -_us - = -WS_DISCONNECTING - && -hd --> - `code -(= -WS_DISCONNECT -){ - -517 -_cڌQueue -. - `move -( -hd -); - -518 -_us - = -WS_DISCONNECTED -; - -519 -_ --> - `o -( -ue -); - -522 -_cڌQueue -. - `move -( -hd -); - -525 if( -n - && ! -_mesgeQueue -. - `isEmy -()){ - -526 -_mesgeQueue -. - `t -()-> - `ack -( -n -, -time -); - -528 -_rv --> - `_nBufrs -(); - -529 - `_runQueue -(); - -530 - } -} - -532  - gAsyncWebSockCl -:: - $_Pl -(){ - -533 if( -_ --> - `nSd -(&& (! -_cڌQueue -. - `isEmy -(|| ! -_mesgeQueue -.isEmpty())){ - -534 - `_runQueue -(); - -535 } if( -_kpAlivePiod - > 0 && -_cڌQueue -. - `isEmy -(&& -_mesgeQueue -.isEmy(&& ( - `mlis -(- -_ϡMesgeTime -) >= _keepAlivePeriod){ - -536 - `pg -(( -ut8_t - *) -AWSC_PING_PAYLOAD -, -AWSC_PING_PAYLOAD_LEN -); - -538 - } -} - -540  - gAsyncWebSockCl -:: - $_runQueue -(){ - -541 ! -_mesgeQueue -. - `isEmy -(&& _mesgeQueue. - `t -()-> - `fished -()){ - -542 -_mesgeQueue -. - `move -(_mesgeQueue. - `t -()); - -545 if(! -_cڌQueue -. - `isEmy -(&& ( -_mesgeQueue -.isEmy(|| _mesgeQueue. - `t -()-> - `bwnFmes -()&& - `webSockSdFmeWdow -( -_ -> ( -size_t -)(_cڌQueue.t()-> - `n -() - 1)){ - -546 -_cڌQueue -. - `t -()-> - `nd -( -_ -); - -547 } if(! -_mesgeQueue -. - `isEmy -(&& _mesgeQueue. - `t -()-> - `bwnFmes -(&& - `webSockSdFmeWdow -( -_ -)){ - -548 -_mesgeQueue -. - `t -()-> - `nd -( -_ -); - -550 - } -} - -552 -bo - - gAsyncWebSockCl -:: - $queueIsFu -(){ - -553 if( - `_queueIsFu -(|| ( -_us - ! -WS_CONNECTED - -ue -; - -554  -l -; - -555 - } -} - -557 -bo - - gAsyncWebSockCl -:: - $_queueIsFu -() const { - -559 ( -_rv --> - `gQueuedMesgeCou -(> -WS_MAX_QUEUED_MESSAGES -) || - -560 ( -_rv --> - `gQueuedMesgeSize -(> -WS_MAX_QUEUED_MESSAGES_SIZE -) - -561 #i -WS_MAX_QUEUED_MESSAGES_MIN_HEAP - - -562 || ( -ESP -. - `gFeHp -(< -WS_MAX_QUEUED_MESSAGES_MIN_HEAP -) - -565 - } -} - -567  - gAsyncWebSockCl -:: - $_queueMesge -( -AsyncWebSockMesge - * -daMesge -){ - -568 if( -daMesge - = -NULL -) - -570 if( -_us - ! -WS_CONNECTED -){ - -571 -de - -daMesge -; - -574 if( - `_queueIsFu -()){ - -575 #i -DEBUG - - -576 :: - `tf -( - `PSTR -("AsyncWebSocketClient: Too many messages queued\n")); - -578 -de - -daMesge -; - -580 -_mesgeQueue -. - `add -( -daMesge -); - -582 if( -_ --> - `nSd -()) - -583 - `_runQueue -(); - -584 - } -} - -586  - gAsyncWebSockCl -:: - $_queueCڌ -( -AsyncWebSockCڌ - * -cڌMesge -){ - -587 if( -cڌMesge - = -NULL -) - -589 -_cڌQueue -. - `add -( -cڌMesge -); - -590 if( -_ --> - `nSd -()) - -591 - `_runQueue -(); - -592 - } -} - -594  - gAsyncWebSockCl -:: - $o -( -ut16_t - -code -, cڡ * -mesge -){ - -595 if( -_us - ! -WS_CONNECTED -) - -597 if( -code -){ - -598 -ut8_t - -ckL - = 2; - -599 if( -mesge - ! -NULL -){ - -600 -size_t - -mn - = - ` -( -mesge -); - -601 if( -mn - > 123) mlen = 123; - -602 -ckL - + -mn -; - -604 * -buf - = (*) - `mloc -( -ckL -); - -605 if( -buf - ! -NULL -){ - -606 -buf -[0] = ( -ut8_t -)( -code - >> 8); - -607 -buf -[1] = ( -ut8_t -)( -code - & 0xFF); - -608 if( -mesge - ! -NULL -){ - -609 - `memy -( -buf -+2, -mesge -, -ckL - -2); - -611 - `_queueCڌ -( -w - - `AsyncWebSockCڌ -( -WS_DISCONNECT -,( -ut8_t -*) -buf -, -ckL -)); - -612 - ` -( -buf -); - -616 - `_queueCڌ -( -w - - `AsyncWebSockCڌ -( -WS_DISCONNECT -)); - -617 - } -} - -619  - gAsyncWebSockCl -:: - $pg -( -ut8_t - * -da -, -size_t - -n -){ - -620 if( -_us - = -WS_CONNECTED -) - -621 - `_queueCڌ -( -w - - `AsyncWebSockCڌ -( -WS_PING -, -da -, -n -)); - -622 - } -} - -624  - gAsyncWebSockCl -:: - $_E -( -t8_t -){ - } -} - -626  -AsyncWebSockCl -:: - $_Timeout -( -ut32_t - -time -){ - -627 () -time -; - -628 -_ --> - `o -( -ue -); - -629 - } -} - -631  - gAsyncWebSockCl -:: - $_Disc -(){ - -632 -_ - = -NULL -; - -633 -_rv --> - `_hdDisc -( -this -); - -634 - } -} - -636  - gAsyncWebSockCl -:: - $_Da -(* -pbuf -, -size_t - - -){ - -637 -_ϡMesgeTime - = - `mlis -(); - -638 -ut8_t - * -da - = (ut8_t*) -pbuf -; - -639  - - > 0){ - -640 if(! -_pe -){ - -641 cڡ -ut8_t - * -fda - = -da -; - -642 -_pfo -. -dex - = 0; - -643 -_pfo -. -f - = ( -fda -[0] & 0x80) != 0; - -644 -_pfo -. -code - = -fda -[0] & 0x0F; - -645 -_pfo -. -masked - = ( -fda -[1] & 0x80) != 0; - -646 -_pfo -. -n - = -fda -[1] & 0x7F; - -647 -da - += 2; - -648 - - -= 2; - -649 if( -_pfo -. -n - == 126){ - -650 -_pfo -. -n - = -fda -[3] | ( -ut16_t -)(fdata[2]) << 8; - -651 -da - += 2; - -652 - - -= 2; - -653 } if( -_pfo -. -n - == 127){ - -654 -_pfo -. -n - = -fda -[9] | ( -ut16_t -)(fda[8]<< 8 | ( -ut32_t -)(fda[7]<< 16 | (ut32_t)(fda[6]<< 24 | ( -ut64_t -)(fdata[5]) << 32 | (uint64_t)(fdata[4]) << 40 | (uint64_t)(fdata[3]) << 48 | (uint64_t)(fdata[2]) << 56; - -655 -da - += 8; - -656 - - -= 8; - -659 if( -_pfo -. -masked -){ - -660 - `memy -( -_pfo -. -mask -, -da -, 4); - -661 -da - += 4; - -662 - - -= 4; - -666 cڡ -size_t - -d - = -d -:: - `m -((size_t)( -_pfo -. -n - - _pfo. -dex -), - -); - -667 cڡut -da - = -da -[ -d -]; - -669 if( -_pfo -. -masked -){ - -670  -size_t - -i -=0;i< -d -;i++) - -671 -da -[ -i -] ^ -_pfo -. -mask -[(_pfo. -dex -+i)%4]; - -674 if(( -d - + -_pfo -. -dex -< _pfo. -n -){ - -675 -_pe - = 1; - -677 if( -_pfo -. -dex - == 0){ - -678 if( -_pfo -. -code -){ - -679 -_pfo -. -mesge_code - = _pfo. -code -; - -680 -_pfo -. -num - = 0; - -681 } -_pfo -. -num - += 1; - -683 -_rv --> - `_hdEvt -( -this -, -WS_EVT_DATA -, (*)& -_pfo -, ( -ut8_t -*) -da -, -d -); - -685 -_pfo -. -dex - + -d -; - -686 } if(( -d - + -_pfo -. -dex -=_pfo. -n -){ - -687 -_pe - = 0; - -688 if( -_pfo -. -code - = -WS_DISCONNECT -){ - -689 if( -d -){ - -690 -ut16_t - -asCode - = (ut16_t)( -da -[0] << 8) + data[1]; - -691 * -asSg - = (*)( -da -+2); - -692 if( -asCode - > 1001){ - -693 -_rv --> - `_hdEvt -( -this -, -WS_EVT_ERROR -, (*)& -asCode -, ( -ut8_t -*) -asSg -, - ` -(reasonString)); - -696 if( -_us - = -WS_DISCONNECTING -){ - -697 -_us - = -WS_DISCONNECTED -; - -698 -_ --> - `o -( -ue -); - -700 -_us - = -WS_DISCONNECTING -; - -701 -_ --> - `ackL -(); - -702 - `_queueCڌ -( -w - - `AsyncWebSockCڌ -( -WS_DISCONNECT -, -da -, -d -)); - -704 } if( -_pfo -. -code - = -WS_PING -){ - -705 - `_queueCڌ -( -w - - `AsyncWebSockCڌ -( -WS_PONG -, -da -, -d -)); - -706 } if( -_pfo -. -code - = -WS_PONG -){ - -707 if( -d - ! -AWSC_PING_PAYLOAD_LEN - || - `memcmp_P -( -da -, -AWSC_PING_PAYLOAD -, AWSC_PING_PAYLOAD_LEN) != 0) - -708 -_rv --> - `_hdEvt -( -this -, -WS_EVT_PONG -, -NULL -, -da -, -d -); - -709 } if( -_pfo -. -code - < 8){ - -710 -_rv --> - `_hdEvt -( -this -, -WS_EVT_DATA -, (*)& -_pfo -, -da -, -d -); - -719 i( -d - > 0) - -720 -da -[ -d -] = -da -; - -722 -da - + -d -; - -723 - - - -d -; - -725 - } -} - -727 -size_t - - gAsyncWebSockCl -:: - $tf -(cڡ * -fm -, ...) { - -728 -va_li - -g -; - -729 - `va_t -( -g -, -fm -); - -730 * -mp - = -w - [ -MAX_PRINTF_LEN -]; - -731 if(! -mp -){ - -732 - `va_d -( -g -); - -735 * -bufr - = -mp -; - -736 -size_t - -n - = - `vtf -( -mp -, -MAX_PRINTF_LEN -, -fm -, -g -); - -737 - `va_d -( -g -); - -739 i( -n - > ( -MAX_PRINTF_LEN - - 1)) { - -740 -bufr - = -w - [ -n - + 1]; - -741 i(! -bufr -) { - -742 -de -[] -mp -; - -745 - `va_t -( -g -, -fm -); - -746 - `vtf -( -bufr -, -n - + 1, -fm -, -g -); - -747 - `va_d -( -g -); - -749 - `xt -( -bufr -, -n -); - -750 i( -bufr - ! -mp -) { - -751 -de -[] -bufr -; - -753 -de -[] -mp -; - -754  -n -; - -755 - } -} - -757 #ide -ESP32 - - -758 -size_t - - gAsyncWebSockCl -:: - $tf_P -( -PGM_P - -fmP -, ...) { - -759 -va_li - -g -; - -760 - `va_t -( -g -, -fmP -); - -761 * -mp - = -w - [ -MAX_PRINTF_LEN -]; - -762 if(! -mp -){ - -763 - `va_d -( -g -); - -766 * -bufr - = -mp -; - -767 -size_t - -n - = - `vtf_P -( -mp -, -MAX_PRINTF_LEN -, -fmP -, -g -); - -768 - `va_d -( -g -); - -770 i( -n - > ( -MAX_PRINTF_LEN - - 1)) { - -771 -bufr - = -w - [ -n - + 1]; - -772 i(! -bufr -) { - -773 -de -[] -mp -; - -776 - `va_t -( -g -, -fmP -); - -777 - `vtf_P -( -bufr -, -n - + 1, -fmP -, -g -); - -778 - `va_d -( -g -); - -780 - `xt -( -bufr -, -n -); - -781 i( -bufr - ! -mp -) { - -782 -de -[] -bufr -; - -784 -de -[] -mp -; - -785  -n -; - -786 - } -} - -789  - gAsyncWebSockCl -:: - $xt -(cڡ * -mesge -, -size_t - -n -){ - -790 - `_queueMesge -( -w - - `AsyncWebSockBasicMesge -( -mesge -, -n -)); - -791 - } -} - -792  - gAsyncWebSockCl -:: - $xt -(cڡ * -mesge -){ - -793 - `xt -( -mesge -, - ` -(message)); - -794 - } -} - -795  - gAsyncWebSockCl -:: - $xt -( -ut8_t - * -mesge -, -size_t - -n -){ - -796 - `xt -((cڡ *) -mesge -, -n -); - -797 - } -} - -798  - gAsyncWebSockCl -:: - $xt -(* -mesge -){ - -799 - `xt -( -mesge -, - ` -(message)); - -800 - } -} - -801  - gAsyncWebSockCl -:: - $xt -(cڡ -Sg - & -mesge -){ - -802 - `xt -( -mesge -. - `c_r -(), mesge. - `ngth -()); - -803 - } -} - -804  - gAsyncWebSockCl -:: - $xt -(cڡ -__FshSgHr - * -da -){ - -805 - `xt -( - `Sg -( -da -)); - -806 - } -} - -807  - gAsyncWebSockCl -:: - $xt -( -AsyncWebSockMesgeBufr - * -bufr -) - -809 - `_queueMesge -( -w - - `AsyncWebSockMuiMesge -( -bufr -)); - -810 - } -} - -812  - gAsyncWebSockCl -:: - $by -(cڡ * -mesge -, -size_t - -n -){ - -813 - `_queueMesge -( -w - - `AsyncWebSockBasicMesge -( -mesge -, -n -, -WS_BINARY -)); - -814 - } -} - -815  - gAsyncWebSockCl -:: - $by -(cڡ * -mesge -){ - -816 - `by -( -mesge -, - ` -(message)); - -817 - } -} - -818  - gAsyncWebSockCl -:: - $by -( -ut8_t - * -mesge -, -size_t - -n -){ - -819 - `by -((cڡ *) -mesge -, -n -); - -820 - } -} - -821  - gAsyncWebSockCl -:: - $by -(* -mesge -){ - -822 - `by -( -mesge -, - ` -(message)); - -823 - } -} - -824  - gAsyncWebSockCl -:: - $by -(cڡ -Sg - & -mesge -){ - -825 - `by -( -mesge -. - `c_r -(), mesge. - `ngth -()); - -826 - } -} - -827  - gAsyncWebSockCl -:: - $by -(cڡ -__FshSgHr - * -da -, -size_t - -n -){ - -828 -PGM_P - -p - = -t_ -( -da -); - -829 * -mesge - = (* - `mloc -( -n -); - -830 if( -mesge -){ - -831 - `memy_P -( -mesge -, -p -, -n -); - -832 - `by -( -mesge -, -n -); - -833 - ` -( -mesge -); - -836 - } -} - -837  - gAsyncWebSockCl -:: - $by -( -AsyncWebSockMesgeBufr - * -bufr -) - -839 - `_queueMesge -( -w - - `AsyncWebSockMuiMesge -( -bufr -, -WS_BINARY -)); - -840 - } -} - -842 -IPAddss - - gAsyncWebSockCl -:: - $meIP -() { - -843 if(! -_ -) { - -844  - `IPAddss -(0U); - -846  -_ --> - `meIP -(); - -847 - } -} - -849 -ut16_t - - gAsyncWebSockCl -:: - $mePt -() { - -850 if(! -_ -) { - -853  -_ --> - `mePt -(); - -854 - } -} - -862 - gAsyncWebSock -:: - $AsyncWebSock -(cڡ -Sg -& -u -) - -863 : - `_u -( -u -) - -864 , - `_s -( -LkedLi -< -AsyncWebSockCl - *>([](AsyncWebSockCl * -c -){ -de - c; - } -})) - -865 , -_cNextId -(1) - -866 , - $_abd -( -ue -) - -868 -_evtHdr - = -NULL -; - -869 - } -} - -871 - gAsyncWebSock -::~ - $AsyncWebSock -(){ - } -} - -873  -AsyncWebSock -:: - $_hdEvt -( -AsyncWebSockCl - * - -, -AwsEvtTy - -ty -, * -g -, -ut8_t - * -da -, -size_t - -n -){ - -874 if( -_evtHdr - ! -NULL -){ - -875 - `_evtHdr -( -this -, - -, -ty -, -g -, -da -, -n -); - -877 - } -} - -879  - gAsyncWebSock -:: - $_addCl -( -AsyncWebSockCl - * - -){ - -880 -_s -. - `add -( - -); - -881 - } -} - -883  - gAsyncWebSock -:: - $_hdDisc -( -AsyncWebSockCl - * - -){ - -885 -_s -. - `move_f -([=]( -AsyncWebSockCl - * -c -){ - -886  -c --> - `id -(= - -->id(); - -888 - } -} - -890 -bo - - gAsyncWebSock -:: - $avaabFWreA -(){ - -891 cڡuto& -c -: -_s -){ - -892 if( -c --> - `queueIsFu -() -l -; - -894  -ue -; - -895 - } -} - -897 -bo - - gAsyncWebSock -:: - $avaabFWre -( -ut32_t - -id -){ - -898 cڡuto& -c -: -_s -){ - -899 if( -c --> - `queueIsFu -(&& (c-> - `id -(= -id - ) -l -; - -901  -ue -; - -902 - } -} - -904 -size_t - - gAsyncWebSock -:: - $cou -() const { - -905  -_s -. - `cou_if -([]( -AsyncWebSockCl - * -c -){ - -906  -c --> - `us -(= -WS_CONNECTED -; - -908 - } -} - -910 -AsyncWebSockCl - * - gAsyncWebSock -:: - $ -( -ut32_t - -id -){ - -911 cڡut& -c -: -_s -){ - -912 if( -c --> - `id -(= -id - && c-> - `us -(= -WS_CONNECTED -){ - -913  -c -; - -916  -nuαr -; - -917 - } -} - -920  - gAsyncWebSock -:: - $o -( -ut32_t - -id -, -ut16_t - -code -, cڡ * -mesge -){ - -921 -AsyncWebSockCl - * -c - = - ` -( -id -); - -922 if( -c -) - -923 -c --> - `o -( -code -, -mesge -); - -924 - } -} - -926  - gAsyncWebSock -:: - $oA -( -ut16_t - -code -, cڡ * -mesge -){ - -927 cڡuto& -c -: -_s -){ - -928 if( -c --> - `us -(= -WS_CONNECTED -) - -929 -c --> - `o -( -code -, -mesge -); - -931 - } -} - -933  - gAsyncWebSock -:: - $nupCls -( -ut16_t - -maxCls -) - -935 i( - `cou -(> -maxCls -){ - -936 -_s -. - `t -()-> - `o -(); - -938 - } -} - -940  - gAsyncWebSock -:: - $pg -( -ut32_t - -id -, -ut8_t - * -da -, -size_t - -n -){ - -941 -AsyncWebSockCl - * -c - = - ` -( -id -); - -942 if( -c -) - -943 -c --> - `pg -( -da -, -n -); - -944 - } -} - -946  - gAsyncWebSock -:: - $pgA -( -ut8_t - * -da -, -size_t - -n -){ - -947 cڡuto& -c -: -_s -){ - -948 if( -c --> - `us -(= -WS_CONNECTED -) - -949 -c --> - `pg -( -da -, -n -); - -951 - } -} - -953  - gAsyncWebSock -:: - $xt -( -ut32_t - -id -, cڡ * -mesge -, -size_t - -n -){ - -954 -AsyncWebSockCl - * -c - = - ` -( -id -); - -955 if( -c -) - -956 -c --> - `xt -( -mesge -, -n -); - -957 - } -} - -959  - gAsyncWebSock -:: - $xtA -( -AsyncWebSockMesgeBufr - * -bufr -){ - -960 i(! -bufr -) ; - -961 -bufr --> - `lock -(); - -962 cڡuto& -c -: -_s -){ - -963 if( -c --> - `us -(= -WS_CONNECTED -){ - -964 -c --> - `xt -( -bufr -); - -967 -bufr --> - `uock -(); - -968 - `_nBufrs -(); - -969 - } -} - -972  - gAsyncWebSock -:: - $xtA -(cڡ * -mesge -, -size_t - -n -){ - -973 -AsyncWebSockMesgeBufr - * -WSBufr - = - `makeBufr -(( -ut8_t - *) -mesge -, -n -); - -974 - `xtA -( -WSBufr -); - -975 - } -} - -977  - gAsyncWebSock -:: - $by -( -ut32_t - -id -, cڡ * -mesge -, -size_t - -n -){ - -978 -AsyncWebSockCl - * -c - = - ` -( -id -); - -979 if( -c -) - -980 -c --> - `by -( -mesge -, -n -); - -981 - } -} - -983  - gAsyncWebSock -:: - $byA -(cڡ * -mesge -, -size_t - -n -){ - -984 -AsyncWebSockMesgeBufr - * -bufr - = - `makeBufr -(( -ut8_t - *) -mesge -, -n -); - -985 - `byA -( -bufr -); - -986 - } -} - -988  - gAsyncWebSock -:: - $byA -( -AsyncWebSockMesgeBufr - * -bufr -) - -990 i(! -bufr -) ; - -991 -bufr --> - `lock -(); - -992 cڡuto& -c -: -_s -){ - -993 if( -c --> - `us -(= -WS_CONNECTED -) - -994 -c --> - `by -( -bufr -); - -996 -bufr --> - `uock -(); - -997 - `_nBufrs -(); - -998 - } -} - -1000  - gAsyncWebSock -:: - $mesge -( -ut32_t - -id -, -AsyncWebSockMesge - * -mesge -){ - -1001 -AsyncWebSockCl - * -c - = - ` -( -id -); - -1002 if( -c -) - -1003 -c --> - `mesge -( -mesge -); - -1004 - } -} - -1006  - gAsyncWebSock -:: - $mesgeA -( -AsyncWebSockMuiMesge - * -mesge -){ - -1007 cڡuto& -c -: -_s -){ - -1008 if( -c --> - `us -(= -WS_CONNECTED -) - -1009 -c --> - `mesge -( -mesge -); - -1011 - `_nBufrs -(); - -1012 - } -} - -1014 -size_t - - gAsyncWebSock -:: - $tf -( -ut32_t - -id -, cڡ * -fm -, ...){ - -1015 -AsyncWebSockCl - * -c - = - ` -( -id -); - -1016 if( -c -){ - -1017 -va_li - -g -; - -1018 - `va_t -( -g -, -fm -); - -1019 -size_t - -n - = -c --> - `tf -( -fm -, -g -); - -1020 - `va_d -( -g -); - -1021  -n -; - -1024 - } -} - -1026 -size_t - - gAsyncWebSock -:: - $tfA -(cڡ * -fm -, ...) { - -1027 -va_li - -g -; - -1028 * -mp - = -w - [ -MAX_PRINTF_LEN -]; - -1029 if(! -mp -){ - -1032 - `va_t -( -g -, -fm -); - -1033 -size_t - -n - = - `vtf -( -mp -, -MAX_PRINTF_LEN -, -fm -, -g -); - -1034 - `va_d -( -g -); - -1035 -de -[] -mp -; - -1037 -AsyncWebSockMesgeBufr - * -bufr - = - `makeBufr -( -n -); - -1038 i(! -bufr -) { - -1042 - `va_t -( -g -, -fm -); - -1043 - `vtf -(*) -bufr --> - `g -(), -n - + 1, -fm -, -g -); - -1044 - `va_d -( -g -); - -1046 - `xtA -( -bufr -); - -1047  -n -; - -1048 - } -} - -1050 #ide -ESP32 - - -1051 -size_t - - gAsyncWebSock -:: - $tf_P -( -ut32_t - -id -, -PGM_P - -fmP -, ...){ - -1052 -AsyncWebSockCl - * -c - = - ` -( -id -); - -1053 if( -c - ! -NULL -){ - -1054 -va_li - -g -; - -1055 - `va_t -( -g -, -fmP -); - -1056 -size_t - -n - = -c --> - `tf_P -( -fmP -, -g -); - -1057 - `va_d -( -g -); - -1058  -n -; - -1061 - } -} - -1064 -size_t - - gAsyncWebSock -:: - $tfA_P -( -PGM_P - -fmP -, ...) { - -1065 -va_li - -g -; - -1066 * -mp - = -w - [ -MAX_PRINTF_LEN -]; - -1067 if(! -mp -){ - -1070 - `va_t -( -g -, -fmP -); - -1071 -size_t - -n - = - `vtf_P -( -mp -, -MAX_PRINTF_LEN -, -fmP -, -g -); - -1072 - `va_d -( -g -); - -1073 -de -[] -mp -; - -1075 -AsyncWebSockMesgeBufr - * -bufr - = - `makeBufr -( -n - + 1); - -1076 i(! -bufr -) { - -1080 - `va_t -( -g -, -fmP -); - -1081 - `vtf_P -((*) -bufr --> - `g -(), -n - + 1, -fmP -, -g -); - -1082 - `va_d -( -g -); - -1084 - `xtA -( -bufr -); - -1085  -n -; - -1086 - } -} - -1088  - gAsyncWebSock -:: - $xt -( -ut32_t - -id -, cڡ * -mesge -){ - -1089 - `xt -( -id -, -mesge -, - ` -(message)); - -1090 - } -} - -1091  - gAsyncWebSock -:: - $xt -( -ut32_t - -id -, -ut8_t - * -mesge -, -size_t - -n -){ - -1092 - `xt -( -id -, (cڡ *) -mesge -, -n -); - -1093 - } -} - -1094  - gAsyncWebSock -:: - $xt -( -ut32_t - -id -, * -mesge -){ - -1095 - `xt -( -id -, -mesge -, - ` -(message)); - -1096 - } -} - -1097  - gAsyncWebSock -:: - $xt -( -ut32_t - -id -, cڡ -Sg - & -mesge -){ - -1098 - `xt -( -id -, -mesge -. - `c_r -(), mesge. - `ngth -()); - -1099 - } -} - -1100  - gAsyncWebSock -:: - $xt -( -ut32_t - -id -, cڡ -__FshSgHr - * -mesge -){ - -1101 -AsyncWebSockCl - * -c - = - ` -( -id -); - -1102 if( -c - ! -NULL -) - -1103 -c --> - `xt -( -mesge -); - -1104 - } -} - -1105  - gAsyncWebSock -:: - $xtA -(cڡ * -mesge -){ - -1106 - `xtA -( -mesge -, - ` -(message)); - -1107 - } -} - -1108  - gAsyncWebSock -:: - $xtA -( -ut8_t - * -mesge -, -size_t - -n -){ - -1109 - `xtA -((cڡ *) -mesge -, -n -); - -1110 - } -} - -1111  - gAsyncWebSock -:: - $xtA -(* -mesge -){ - -1112 - `xtA -( -mesge -, - ` -(message)); - -1113 - } -} - -1114  - gAsyncWebSock -:: - $xtA -(cڡ -Sg - & -mesge -){ - -1115 - `xtA -( -mesge -. - `c_r -(), mesge. - `ngth -()); - -1116 - } -} - -1117  - gAsyncWebSock -:: - $xtA -(cڡ -__FshSgHr - * -mesge -){ - -1118 cڡuto& -c -: -_s -){ - -1119 if( -c --> - `us -(= -WS_CONNECTED -) - -1120 -c --> - `xt -( -mesge -); - -1122 - } -} - -1123  - gAsyncWebSock -:: - $by -( -ut32_t - -id -, cڡ * -mesge -){ - -1124 - `by -( -id -, -mesge -, - ` -(message)); - -1125 - } -} - -1126  - gAsyncWebSock -:: - $by -( -ut32_t - -id -, -ut8_t - * -mesge -, -size_t - -n -){ - -1127 - `by -( -id -, (cڡ *) -mesge -, -n -); - -1128 - } -} - -1129  - gAsyncWebSock -:: - $by -( -ut32_t - -id -, * -mesge -){ - -1130 - `by -( -id -, -mesge -, - ` -(message)); - -1131 - } -} - -1132  - gAsyncWebSock -:: - $by -( -ut32_t - -id -, cڡ -Sg - & -mesge -){ - -1133 - `by -( -id -, -mesge -. - `c_r -(), mesge. - `ngth -()); - -1134 - } -} - -1135  - gAsyncWebSock -:: - $by -( -ut32_t - -id -, cڡ -__FshSgHr - * -mesge -, -size_t - -n -){ - -1136 -AsyncWebSockCl - * -c - = - ` -( -id -); - -1137 if( -c - ! -NULL -) - -1138 -c --> - `by -( -mesge -, -n -); - -1139 - } -} - -1140  - gAsyncWebSock -:: - $byA -(cڡ * -mesge -){ - -1141 - `byA -( -mesge -, - ` -(message)); - -1142 - } -} - -1143  - gAsyncWebSock -:: - $byA -( -ut8_t - * -mesge -, -size_t - -n -){ - -1144 - `byA -((cڡ *) -mesge -, -n -); - -1145 - } -} - -1146  - gAsyncWebSock -:: - $byA -(* -mesge -){ - -1147 - `byA -( -mesge -, - ` -(message)); - -1148 - } -} - -1149  - gAsyncWebSock -:: - $byA -(cڡ -Sg - & -mesge -){ - -1150 - `byA -( -mesge -. - `c_r -(), mesge. - `ngth -()); - -1151 - } -} - -1152  - gAsyncWebSock -:: - $byA -(cڡ -__FshSgHr - * -mesge -, -size_t - -n -){ - -1153 cڡuto& -c -: -_s -){ - -1154 if( -c --> - `us -(= -WS_CONNECTED -) - -1155 -c --> - `by -( -mesge -, -n -); - -1157 - } -} - -1159 cڡ  - g__WS_STR_CONNECTION -[] - gPROGMEM - = { "Connection" }; - -1160 cڡ  - g__WS_STR_UPGRADE -[] - gPROGMEM - = { "Upgrade" }; - -1161 cڡ  - g__WS_STR_ORIGIN -[] - gPROGMEM - = { "Origin" }; - -1162 cڡ  - g__WS_STR_VERSION -[] - gPROGMEM - = { "Sec-WebSocket-Version" }; - -1163 cڡ  - g__WS_STR_KEY -[] - gPROGMEM - = { "Sec-WebSocket-Key" }; - -1164 cڡ  - g__WS_STR_PROTOCOL -[] - gPROGMEM - = { "Sec-WebSocket-Protocol" }; - -1165 cڡ  - g__WS_STR_ACCEPT -[] - gPROGMEM - = { "Sec-WebSocket-Accept" }; - -1166 cڡ  - g__WS_STR_UUID -[] - gPROGMEM - = { "258EAFA5-E914-47DA-95CA-C5AB0DC85B11" }; - -1168  - #WS_STR_CONNECTION - - `FPSTR -( -__WS_STR_CONNECTION -) - - ) - -1169  - #WS_STR_UPGRADE - - `FPSTR -( -__WS_STR_UPGRADE -) - - ) - -1170  - #WS_STR_ORIGIN - - `FPSTR -( -__WS_STR_ORIGIN -) - - ) - -1171  - #WS_STR_VERSION - - `FPSTR -( -__WS_STR_VERSION -) - - ) - -1172  - #WS_STR_KEY - - `FPSTR -( -__WS_STR_KEY -) - - ) - -1173  - #WS_STR_PROTOCOL - - `FPSTR -( -__WS_STR_PROTOCOL -) - - ) - -1174  - #WS_STR_ACCEPT - - `FPSTR -( -__WS_STR_ACCEPT -) - - ) - -1175  - #WS_STR_UUID - - `FPSTR -( -__WS_STR_UUID -) - - ) - -1177 -bo - - gAsyncWebSock -:: - $nHd -( -AsyncWebSvReque - * -que -){ - -1178 if(! -_abd -) - -1179  -l -; - -1181 if( -que --> - `mhod -(! -HTTP_GET - || !que-> - `u -(). - `equs -( -_u -|| !que-> - `isExedRequeedCnTy -( -RCT_WS -)) - -1182  -l -; - -1184 -que --> - `addIegHd -( -WS_STR_CONNECTION -); - -1185 -que --> - `addIegHd -( -WS_STR_UPGRADE -); - -1186 -que --> - `addIegHd -( -WS_STR_ORIGIN -); - -1187 -que --> - `addIegHd -( -WS_STR_VERSION -); - -1188 -que --> - `addIegHd -( -WS_STR_KEY -); - -1189 -que --> - `addIegHd -( -WS_STR_PROTOCOL -); - -1190  -ue -; - -1191 - } -} - -1193  - gAsyncWebSock -:: - $hdReque -( -AsyncWebSvReque - * -que -){ - -1194 if(! -que --> - `hasHd -( -WS_STR_VERSION -|| !que->hasHd( -WS_STR_KEY -)){ - -1195 -que --> - `nd -(400); - -1198 if(( -_uame -. - `ngth -(&& -_sswd -.ngth()&& ! -que --> - `authti -(_uame. - `c_r -(), _password.c_str())){ - -1199  -que --> - `queAuthtiti -(); - -1201 -AsyncWebHd -* -vsi - = -que --> - `gHd -( -WS_STR_VERSION -); - -1202 if( -vsi --> - `vue -(). - `toI -() != 13){ - -1203 -AsyncWebSvReڣ - * -ڣ - = -que --> - `begReڣ -(400); - -1204 -ڣ --> - `addHd -( -WS_STR_VERSION -, - `F -("13")); - -1205 -que --> - `nd -( -ڣ -); - -1208 -AsyncWebHd -* -key - = -que --> - `gHd -( -WS_STR_KEY -); - -1209 -AsyncWebSvReڣ - * -ڣ - = -w - - `AsyncWebSockReڣ -( -key --> - `vue -(), -this -); - -1210 if( -que --> - `hasHd -( -WS_STR_PROTOCOL -)){ - -1211 -AsyncWebHd -* -oc - = -que --> - `gHd -( -WS_STR_PROTOCOL -); - -1213 -ڣ --> - `addHd -( -WS_STR_PROTOCOL -, -oc --> - `vue -()); - -1215 -que --> - `nd -( -ڣ -); - -1216 - } -} - -1218 -AsyncWebSockMesgeBufr - * - gAsyncWebSock -:: - $makeBufr -( -size_t - -size -) - -1220 -AsyncWebSockMesgeBufr - * -bufr - = -w - - `AsyncWebSockMesgeBufr -( -size -); - -1221 i( -bufr -) { - -1222 -AsyncWebLockGud - - `l -( -_lock -); - -1223 -_bufrs -. - `add -( -bufr -); - -1225  -bufr -; - -1226 - } -} - -1228 -AsyncWebSockMesgeBufr - * - gAsyncWebSock -:: - $makeBufr -( -ut8_t - * -da -, -size_t - -size -) - -1230 -AsyncWebSockMesgeBufr - * -bufr - = -w - - `AsyncWebSockMesgeBufr -( -da -, -size -); - -1232 i( -bufr -) { - -1233 -AsyncWebLockGud - - `l -( -_lock -); - -1234 -_bufrs -. - `add -( -bufr -); - -1237  -bufr -; - -1238 - } -} - -1240  - gAsyncWebSock -:: - $_nBufrs -() - -1242 -AsyncWebLockGud - - `l -( -_lock -); - -1244  -AsyncWebSockMesgeBufr - * -c -: -_bufrs -){ - -1245 if( -c - && c-> - `nDe -()){ - -1246 -_bufrs -. - `move -( -c -); - -1249 - } -} - -1251 - gAsyncWebSock -:: -AsyncWebSockClLkedLi - -AsyncWebSock -:: - $gCls -() const { - -1252  -_s -; - -1253 - } -} - -1260 - gAsyncWebSockReڣ -:: - $AsyncWebSockReڣ -(cڡ -Sg -& -key -, -AsyncWebSock - * -rv -){ - -1261 -_rv - = -rv -; - -1262 -_code - = 101; - -1263 -_ndCڋLgth - = -l -; - -1265 -ut8_t - * -hash - = (ut8_t*) - `mloc -(20); - -1266 if( -hash - = -NULL -){ - -1267 -_e - = -RESPONSE_FAILED -; - -1270 * -bufr - = (* - `mloc -(33); - -1271 if( -bufr - = -NULL -){ - -1272 - ` -( -hash -); - -1273 -_e - = -RESPONSE_FAILED -; - -1276 #ifde -ESP8266 - - -1277 - `sha1 -( -key - + -WS_STR_UUID -, -hash -); - -1279 ( -Sg -&) -key - + -WS_STR_UUID -; - -1280 -SHA1_CTX - -x -; - -1281 - `SHA1In -(& -x -); - -1282 - `SHA1Upde -(& -x -, (cڡ *) -key -. - `c_r -(), key. - `ngth -()); - -1283 - `SHA1F -( -hash -, & -x -); - -1285 -ba64_codee - -_e -; - -1286 - `ba64__codee -(& -_e -); - -1287  -n - = - `ba64_code_block -((cڡ * -hash -, 20, -bufr -, & -_e -); - -1288 -n - = - `ba64_code_blockd -(( -bufr - +), & -_e -); - -1289 - `addHd -( -WS_STR_CONNECTION -, -WS_STR_UPGRADE -); - -1290 - `addHd -( -WS_STR_UPGRADE -, - `F -("websocket")); - -1291 - `addHd -( -WS_STR_ACCEPT -, -bufr -); - -1292 - ` -( -bufr -); - -1293 - ` -( -hash -); - -1294 - } -} - -1296  - gAsyncWebSockReڣ -:: - $_d -( -AsyncWebSvReque - * -que -){ - -1297 if( -_e - = -RESPONSE_FAILED -){ - -1298 -que --> - ` -()-> - `o -( -ue -); - -1301 -Sg - -out - = - `_asmbHd -( -que --> - `vsi -()); - -1302 -que --> - ` -()-> - `wre -( -out -. - `c_r -(), -_hdLgth -); - -1303 -_e - = -RESPONSE_WAIT_ACK -; - -1304 - } -} - -1306 -size_t - - gAsyncWebSockReڣ -:: - $_ack -( -AsyncWebSvReque - * -que -, -size_t - -n -, -ut32_t - -time -){ - -1307 () -time -; - -1308 if( -n -){ - -1309 -w - - `AsyncWebSockCl -( -que -, -_rv -); - -1312 - } -} - - @lib/ESPAsyncWebServer/AsyncWebSocket.h - -21 #ide -ASYNCWEBSOCKET_H_ - - -22  - #ASYNCWEBSOCKET_H_ - - - ) - -24  - ~ - -25 #ifde -ESP32 - - -26  - ~ - -27 #ide -WS_MAX_QUEUED_MESSAGES - - -28  - #WS_MAX_QUEUED_MESSAGES - 32 - - ) - -30 #ide -WS_MAX_QUEUED_MESSAGES_SIZE - - -31  - #WS_MAX_QUEUED_MESSAGES_SIZE - 65535 - - ) - -34  - ~ - -35 #ide -WS_MAX_QUEUED_MESSAGES - - -36  - #WS_MAX_QUEUED_MESSAGES - 8 - - ) - -38 #ide -WS_MAX_QUEUED_MESSAGES_SIZE - - -39  - #WS_MAX_QUEUED_MESSAGES_SIZE - 8192 - - ) - -42  - ~ - -45 #ide -WS_MAX_QUEUED_MESSAGES_MIN_HEAP - - -46  - #WS_MAX_QUEUED_MESSAGES_MIN_HEAP - 0 - - ) - -49  - ~"AsyncWebSynchrizi.h -" - -51 #ifde -ESP8266 - - -52  - ~ - -53 #ifde -CRYPTO_HASH_h - - -54  - ~<../c/Hash.h -> - -58 #ifde -ESP32 - - -59  - #DEFAULT_MAX_WS_CLIENTS - 8 - - ) - -61  - #DEFAULT_MAX_WS_CLIENTS - 4 - - ) - -64 -ass - - gAsyncWebSock -; - -65 -ass - - gAsyncWebSockReڣ -; - -66 -ass - - gAsyncWebSockCl -; - -67 -ass - - gAsyncWebSockCڌ -; - -73 -ut8_t - - mmesge_code -; - -75 -ut32_t - - mnum -; - -77 -ut8_t - - mf -; - -79 -ut8_t - - mmasked -; - -83 -ut8_t - - mcode -; - -86 -ut64_t - - mn -; - -88 -ut8_t - - mmask -[4]; - -90 -ut64_t - - mdex -; - -91 } - tAwsFmeInfo -; - -93 um { - mWS_DISCONNECTED -, - mWS_CONNECTED -, - mWS_DISCONNECTING - } - tAwsClStus -; - -94 um { - mWS_CONTINUATION -, - mWS_TEXT -, - mWS_BINARY -, - mWS_DISCONNECT - = 0x08, - mWS_PING -, - mWS_PONG - } - tAwsFmeTy -; - -95 um { - mWS_MSG_SENDING -, - mWS_MSG_SENT -, - mWS_MSG_ERROR - } - tAwsMesgeStus -; - -96 um { - mWS_EVT_CONNECT -, - mWS_EVT_DISCONNECT -, - mWS_EVT_PONG -, - mWS_EVT_ERROR -, - mWS_EVT_DATA - } - tAwsEvtTy -; - -98 as - cAsyncWebSockMesgeBufr - { - -99 - mive -: - -100 -ut8_t - * -_da -; - -101 -size_t - - m_n -; - -102 -bo - - m_lock -; - -103 -ut32_t - - m_cou -; - -105 - mpublic -: - -106 -AsyncWebSockMesgeBufr -(); - -107 -AsyncWebSockMesgeBufr -( -size_t - -size -); - -108 -AsyncWebSockMesgeBufr -( -ut8_t - * -da -, -size_t - -size -); - -109 -AsyncWebSockMesgeBufr -(const AsyncWebSocketMessageBuffer &); - -110 -AsyncWebSockMesgeBufr -(AsyncWebSocketMessageBuffer &&); - -111 ~ -AsyncWebSockMesgeBufr -(); - -112  - mݔ - ++( - mi -{ ()i; - m_cou -++; } - -113  - gݔ - --( - gi -{ ()i; i( - g_cou - > 0) { _count--; } ; } - -114 -bo - -rve -( -size_t - -size -); - -115  - $lock -({ -_lock - = -ue -; - } -} - -116  - $uock -({ -_lock - = -l -; - } -} - -117 -ut8_t - * - $g -({  -_da -; - } -} - -118 -size_t - - $ngth -({  -_n -; - } -} - -119 -ut32_t - - $cou -({  -_cou -; - } -} - -120 -bo - - $nDe -({  (! -_cou - && ! -_lock -); - } -} - -122 -nd - - gAsyncWebSock -; - -126 as - cAsyncWebSockMesge - { - -127 - meed -: - -128 -ut8_t - -_code -; - -129 -bo - - m_mask -; - -130 -AwsMesgeStus - - m_us -; - -131 - mpublic -: - -132 - $AsyncWebSockMesge -(): - `_code -( -WS_TEXT -), - `_mask -( -l -), - $_us -( -WS_MSG_ERROR -){} - -133 -vtu - ~ - $AsyncWebSockMesge -(){ - } -} - -134 -vtu -  -ack -( -size_t - -n - -__ibu__ -(( -unud -)), -ut32_t - -time - __attribute__((unused))){} - -135 -vtu - -size_t - -nd -( -AsyncCl - * - - -__ibu__ -(( -unud -))){  0; } - -136 -vtu - -bo - - $fished -(){  -_us - ! -WS_MSG_SENDING -; - } -} - -137 -vtu - -bo - - $bwnFmes -(cڡ {  -l -; - } -} - -140 as - cAsyncWebSockBasicMesge -: -public - -AsyncWebSockMesge - { - -141 -ive -: - -142 -size_t - -_n -; - -143 -size_t - - m_ -; - -144 -size_t - - m_ack -; - -145 -size_t - - m_acked -; - -146 -ut8_t - * - m_da -; - -147 - mpublic -: - -148 -AsyncWebSockBasicMesge -(cڡ * -da -, -size_t - -n -, -ut8_t - -code -= -WS_TEXT -, -bo - -mask -= -l -); - -149 -AsyncWebSockBasicMesge -( -ut8_t - -code -= -WS_TEXT -, -bo - -mask -= -l -); - -150 - mvtu - ~ - $AsyncWebSockBasicMesge -( -ovride -; - -151 -vtu - -bo - - $bwnFmes -(cڡ -ovride - {  -_acked - = -_ack -; } - -152 -vtu -  - $ack -( -size_t - -n -, -ut32_t - -time - -ovride - ; - -153 -vtu - -size_t - - $nd -( -AsyncCl - * - - -ovride - ; - -154 - } -}; - -156 as - cAsyncWebSockMuiMesge -: -public - -AsyncWebSockMesge - { - -157 -ive -: - -158 -ut8_t - * -_da -; - -159 -size_t - - m_n -; - -160 -size_t - - m_ -; - -161 -size_t - - m_ack -; - -162 -size_t - - m_acked -; - -163 -AsyncWebSockMesgeBufr - * - m_WSbufr -; - -164 - mpublic -: - -165 -AsyncWebSockMuiMesge -( -AsyncWebSockMesgeBufr - * -bufr -, -ut8_t - -code -= -WS_TEXT -, -bo - -mask -= -l -); - -166 - mvtu - ~ - $AsyncWebSockMuiMesge -( -ovride -; - -167 -vtu - -bo - - $bwnFmes -(cڡ -ovride - {  -_acked - = -_ack -; } - -168 -vtu -  - $ack -( -size_t - -n -, -ut32_t - -time - -ovride - ; - -169 -vtu - -size_t - - $nd -( -AsyncCl - * - - -ovride - ; - -170 - } -}; - -172 -ass - - gAsyncWebSockMesgeBufrLkedLi - : -public - -LkedLi -< -AsyncWebSockMesgeBufr - *> { - -173 -public -: - -174 -usg - -T - = -AsyncWebSockMesgeBufr - *; - -175 -usg - - gLT - = -LkedLi -< -T ->; - -177 - give -: - -178  -Remove -( -AsyncWebSockMesgeBufr - * -t -) { - -179 -_tٮSize - - -t --> -ngth -(); - -180 - g_tٮCou ---; - -181 -de - - gt -; - -184 - gpublic -: - -185 -AsyncWebSockMesgeBufrLkedLi -(: -LT -([ -this -]( -AsyncWebSockMesgeBufr - * -b -){his-> -Remove -(b); }) { - -188  -add -(cڡ -T -& -t -){ - -189 - g_tٮSize - + -t --> -ngth -(); - -190 - g_tٮCou -++; - -191 - gLT -:: -add -( -t -); - -194 - give -: - -195 -nd - -ass - -AsyncWebSock -; - -198  -size_t - - g_tٮCou -; - -199  -size_t - - g_tٮSize -; - -202 as - cAsyncWebSockCl - { - -203 - mive -: - -204 -AsyncCl - * -_ -; - -205 -AsyncWebSock - * - m_rv -; - -206 -ut32_t - - m_Id -; - -207 -AwsClStus - - m_us -; - -209 - mLkedLi -< - mAsyncWebSockCڌ - *> - m_cڌQueue -; - -210 - mLkedLi -< - mAsyncWebSockMesge - *> - m_mesgeQueue -; - -212 -ut8_t - - m_pe -; - -213 -AwsFmeInfo - - m_pfo -; - -215 -ut32_t - - m_ϡMesgeTime -; - -216 -ut32_t - - m_kpAlivePiod -; - -218  -_queueMesge -( -AsyncWebSockMesge - * -daMesge -); - -219  -_queueCڌ -( -AsyncWebSockCڌ - * -cڌMesge -); - -220  -_runQueue -(); - -222 - mpublic -: - -223 * -_mpObje -; - -225 -AsyncWebSockCl -( -AsyncWebSvReque - * -que -, -AsyncWebSock - * -rv -); - -226 ~ -AsyncWebSockCl -(); - -229 -ut32_t - - $id -(){  -_Id -; } - -230 -AwsClStus - - $us -(){  -_us -; - } -} - -231 -AsyncCl -* - $ -(){  -_ -; - } -} - -232 -AsyncWebSock - * - $rv -(){  -_rv -; - } -} - -233 -AwsFmeInfo - cڡ & - $pfo -(cڡ {  -_pfo -; - } -} - -235 -IPAddss - -meIP -(); - -236 -ut16_t - -mePt -(); - -239  -o -( -ut16_t - -code -=0, cڡ * -mesge -= -NULL -); - -240  -pg -( -ut8_t - * -da -= -NULL -, -size_t - -n -=0); - -243  - $kpAlivePiod -( -ut16_t - -cds -){ - -244 -_kpAlivePiod - = -cds - * 1000; - -245 - } -} - -246 -ut16_t - - $kpAlivePiod -(){ - -247  ( -ut16_t -)( -_kpAlivePiod - / 1000); - -248 - } -} - -251  - $mesge -( -AsyncWebSockMesge - * -mesge -){ - `_queueMesge -(mesge); - } -} - -252 -bo - -queueIsFu -(); - -254 -size_t - - $tf -(cڡ * -fm -, ... - `__ibu__ - (( - `fm - ( -tf -, 2, 3))); - -255 #ide -ESP32 - - -256 -size_t - - $tf_P -( -PGM_P - -fmP -, ... - `__ibu__ - (( - `fm - ( -tf -, 2, 3))); - -258  - `xt -(cڡ * -mesge -, -size_t - -n -); - -259  - `xt -(cڡ * -mesge -); - -260  - `xt -( -ut8_t - * -mesge -, -size_t - -n -); - -261  - `xt -(* -mesge -); - -262  - `xt -(cڡ -Sg - & -mesge -); - -263  - `xt -(cڡ -__FshSgHr - * -da -); - -264  - `xt -( -AsyncWebSockMesgeBufr - * -bufr -); - -266  - `by -(cڡ * -mesge -, -size_t - -n -); - -267  - `by -(cڡ * -mesge -); - -268  - `by -( -ut8_t - * -mesge -, -size_t - -n -); - -269  - `by -(* -mesge -); - -270  - `by -(cڡ -Sg - & -mesge -); - -271  - `by -(cڡ -__FshSgHr - * -da -, -size_t - -n -); - -272  - `by -( -AsyncWebSockMesgeBufr - * -bufr -); - -274 -bo - - $nSd -({  ! - `_queueIsFu -(); - } -} - -276 -bo - - $_queueIsFu -() const; - -279  - `_Ack -( -size_t - -n -, -ut32_t - -time -); - -280  - `_E -( -t8_t -); - -281  - `_Pl -(); - -282  - `_Timeout -( -ut32_t - -time -); - -283  - `_Disc -(); - -284  - `_Da -(* -pbuf -, -size_t - - -); - -285 - } -}; - -287  - gd -:: - tfuni -<( - tAsyncWebSock - * - trv -, - tAsyncWebSockCl - * - t -, - tAwsEvtTy - - tty -, * - tg -, - tut8_t - * - tda -, - tsize_t - - tn -)> - tAwsEvtHdr -; - -290 as - cAsyncWebSock -: -public - -AsyncWebHdr - { - -291 -public -: - -292  -LkedLi -< - tAsyncWebSockCl - *> - tAsyncWebSockClLkedLi -; - -293 - mive -: - -294 -Sg - -_u -; - -295 -AsyncWebSockClLkedLi - - m_s -; - -296 -ut32_t - - m_cNextId -; - -297 -AwsEvtHdr - - m_evtHdr -; - -298 -bo - - m_abd -; - -299 -AsyncWebLock - - m_lock -; - -301 - mpublic -: - -302 -AsyncWebSock -(cڡ -Sg -& -u -); - -303 ~ -AsyncWebSock -(); - -304 cڡ * - $u -(cڡ {  -_u -. - `c_r -(); } - -305  - $ab -( -bo - -e -){ -_abd - =; - } -} - -306 -bo - - $abd -(cڡ {  -_abd -; - } -} - -307 -bo - -avaabFWreA -(); - -308 -bo - -avaabFWre -( -ut32_t - -id -); - -310 -size_t - - $cou -() const; - -311 -AsyncWebSockCl - * - ` -( -ut32_t - -id -); - -312 -bo - - $hasCl -( -ut32_t - -id -){  - ` -(id! -NULL -; - } -} - -314  -o -( -ut32_t - -id -, -ut16_t - -code -=0, cڡ * -mesge -= -NULL -); - -315  -oA -( -ut16_t - -code -=0, cڡ * -mesge -= -NULL -); - -316  -nupCls -( -ut16_t - -maxCls - = -DEFAULT_MAX_WS_CLIENTS -); - -318  -pg -( -ut32_t - -id -, -ut8_t - * -da -= -NULL -, -size_t - -n -=0); - -319  -pgA -( -ut8_t - * -da -= -NULL -, -size_t - -n -=0); - -321  -xt -( -ut32_t - -id -, cڡ * -mesge -, -size_t - -n -); - -322  -xt -( -ut32_t - -id -, cڡ * -mesge -); - -323  -xt -( -ut32_t - -id -, -ut8_t - * -mesge -, -size_t - -n -); - -324  -xt -( -ut32_t - -id -, * -mesge -); - -325  -xt -( -ut32_t - -id -, cڡ -Sg - & -mesge -); - -326  -xt -( -ut32_t - -id -, cڡ -__FshSgHr - * -mesge -); - -328  -xtA -(cڡ * -mesge -, -size_t - -n -); - -329  -xtA -(cڡ * -mesge -); - -330  -xtA -( -ut8_t - * -mesge -, -size_t - -n -); - -331  -xtA -(* -mesge -); - -332  -xtA -(cڡ -Sg - & -mesge -); - -333  -xtA -(cڡ -__FshSgHr - * -mesge -); - -334  -xtA -( -AsyncWebSockMesgeBufr - * -bufr -); - -336  -by -( -ut32_t - -id -, cڡ * -mesge -, -size_t - -n -); - -337  -by -( -ut32_t - -id -, cڡ * -mesge -); - -338  -by -( -ut32_t - -id -, -ut8_t - * -mesge -, -size_t - -n -); - -339  -by -( -ut32_t - -id -, * -mesge -); - -340  -by -( -ut32_t - -id -, cڡ -Sg - & -mesge -); - -341  -by -( -ut32_t - -id -, cڡ -__FshSgHr - * -mesge -, -size_t - -n -); - -343  -byA -(cڡ * -mesge -, -size_t - -n -); - -344  -byA -(cڡ * -mesge -); - -345  -byA -( -ut8_t - * -mesge -, -size_t - -n -); - -346  -byA -(* -mesge -); - -347  -byA -(cڡ -Sg - & -mesge -); - -348  -byA -(cڡ -__FshSgHr - * -mesge -, -size_t - -n -); - -349  -byA -( -AsyncWebSockMesgeBufr - * -bufr -); - -351  -mesge -( -ut32_t - -id -, -AsyncWebSockMesge - *message); - -352  -mesgeA -( -AsyncWebSockMuiMesge - * -mesge -); - -354 -size_t - - $tf -( -ut32_t - -id -, cڡ * -fm -, ... - `__ibu__ - (( - `fm - ( -tf -, 3, 4))); - -355 -size_t - - $tfA -(cڡ * -fm -, ... - `__ibu__ - (( - `fm - ( -tf -, 2, 3))); - -356 #ide -ESP32 - - -357 -size_t - - $tf_P -( -ut32_t - -id -, -PGM_P - -fmP -, ... - `__ibu__ - (( - `fm - ( -tf -, 3, 4))); - -359 -size_t - - $tfA_P -( -PGM_P - -fmP -, ... - `__ibu__ - (( - `fm - ( -tf -, 2, 3))); - -362  - $Evt -( -AwsEvtHdr - -hdr -){ - -363 -_evtHdr - = -hdr -; - -364 - } -} - -367 -ut32_t - - $_gNextId -(){  -_cNextId -++; - } -} - -368  -_addCl -( -AsyncWebSockCl - * - -); - -369  -_hdDisc -( -AsyncWebSockCl - * - -); - -370  -_hdEvt -( -AsyncWebSockCl - * - -, -AwsEvtTy - -ty -, * -g -, -ut8_t - * -da -, -size_t - -n -); - -371 -vtu - -bo - - $nHd -( -AsyncWebSvReque - * -que - -ovride - -f -; - -372 -vtu -  - $hdReque -( -AsyncWebSvReque - * -que - -ovride - -f -; - -376 -AsyncWebSockMesgeBufr - * - `makeBufr -( -size_t - -size - = 0); - -377 -AsyncWebSockMesgeBufr - * - `makeBufr -( -ut8_t - * -da -, -size_t - -size -); - -378 -AsyncWebSockMesgeBufrLkedLi - -_bufrs -; - -379  - `_nBufrs -(); - -381 -AsyncWebSockClLkedLi - - $gCls -() const; - -383 -public -: - -384 #ide -DEBUG_AWS_QUEUE_COUNTERS - - -385  - #DEBUG_AWS_QUEUE_COUNTERS - 0 - - ) - -388 #i -DEBUG_AWS_QUEUE_COUNTERS - - -390 -size_t - - $gQueuedMesgeCou -() const { - -391 - `_vifyCous -(); - -392  -AsyncWebSockMesgeBufrLkedLi -:: -_tٮCou -; - -393 - } -} - -394 -size_t - - $gQueuedMesgeSize -() const { - -395 - `_vifyCous -(); - -396  -AsyncWebSockMesgeBufrLkedLi -:: -_tٮSize -; - -397 - } -} - -399  -size_t - - $_gQueuedMesgeCou -() { - -400  -AsyncWebSockMesgeBufrLkedLi -:: -_tٮCou -; - -401 - } -} - -402  -size_t - - $_gQueuedMesgeSize -() { - -403  -AsyncWebSockMesgeBufrLkedLi -:: -_tٮSize -; - -404 - } -} - -405 - give -: - -406  - $_vifyCous -() const { - -407 -size_t - -t -=0, -c -=0; - -408 cڡut -b -: -_bufrs -) { - -409 -t -+= -b --> - `ngth -(); - -410 -c -++; - -412 i( -AsyncWebSockMesgeBufrLkedLi -:: -_tٮSize -!= -t - || AsyncWebSockMesgeBufrLkedLi:: -_tٮCou -!= -c -) { - -413 :: - `tf -( - `PSTR -("AsyncWebSockMesgeBufrLkedLi siz%u=%u c %u=%u\n"), -AsyncWebSockMesgeBufrLkedLi -:: -_tٮSize -, -t -,AsyncWebSockMesgeBufrLkedLi:: -_tٮCou -, -c -); - -414 - `nic -(); - -416 - } -} - -418 -size_t - - $gQueuedMesgeCou -() const { - -419  - `_gQueuedMesgeCou -(); - -420 - } -} - -421 -size_t - - $gQueuedMesgeSize -() const { - -422  - `_gQueuedMesgeSize -(); - -423 - } -} - -425  -size_t - - $_gQueuedMesgeCou -() { - -426  -AsyncWebSockMesgeBufrLkedLi -:: -_tٮCou -; - -427 - } -} - -428  -size_t - - $_gQueuedMesgeSize -() { - -429  -AsyncWebSockMesgeBufrLkedLi -:: -_tٮSize -; - -430 - } -} - -436 as - cAsyncWebSockReڣ -: -public - -AsyncWebSvReڣ - { - -437 -ive -: - -438 -Sg - -_cڋ -; - -439 -AsyncWebSock - * - m_rv -; - -440 - mpublic -: - -441 -AsyncWebSockReڣ -(cڡ -Sg -& -key -, -AsyncWebSock - * -rv -); - -442  -_d -( -AsyncWebSvReque - * -que -); - -443 -size_t - -_ack -( -AsyncWebSvReque - * -que -, size_ -n -, -ut32_t - -time -); - -444 -bo - - $_sourVid -(cڡ {  -ue -; } - -445 - } -}; - - @lib/ESPAsyncWebServer/AsyncWebSynchronization.h - -1 #ide -ASYNCWEBSYNCHRONIZATION_H_ - - -2  - #ASYNCWEBSYNCHRONIZATION_H_ - - - ) - -6  - ~ - -8 #ifde -ESP32 - - -11 as - cAsyncWebLock - - -13 - mive -: - -14 -SemheHd_t - -_lock -; - -15 -mub - * - m_lockedBy -; - -17 - mpublic -: - -18 - $AsyncWebLock -() { - -19 -_lock - = - `xSemheCeBy -(); - -20 -_lockedBy - = -NULL -; - -21 - `xSemheGive -( -_lock -); - -24 ~ - $AsyncWebLock -() { - -25 - `vSemheDe -( -_lock -); - -26 - } -} - -28 -bo - - $lock -() const { - -29 * -pxCutTCB -; - -30 i( -_lockedBy - ! -pxCutTCB -) { - -31 - `xSemheTake -( -_lock -, -ptMAX_DELAY -); - -32 -_lockedBy - = -pxCutTCB -; - -33  -ue -; - -35  -l -; - -36 - } -} - -38  - $uock -() const { - -39 -_lockedBy - = -NULL -; - -40 - `xSemheGive -( -_lock -); - -41 - } -} - -47 as - cAsyncWebLock - - -50 - mpublic -: - -51 - $AsyncWebLock -() { - -54 ~ - $AsyncWebLock -() { - -55 - } -} - -57 -bo - - $lock -() const { - -58  -l -; - -59 - } -} - -61  - $uock -() const { - -62 - } -} - -66 as - cAsyncWebLockGud - - -68 - mive -: - -69 cڡ -AsyncWebLock - * -_lock -; - -71 - mpublic -: - -72 - $AsyncWebLockGud -(cڡ -AsyncWebLock - & -l -) { - -73 i( -l -. - `lock -()) { - -74 -_lock - = & -l -; - -76 -_lock - = -NULL -; - -80 ~ - $AsyncWebLockGud -() { - -81 i( -_lock -) { - -82 -_lock --> - `uock -(); - -84 - } -} - - @lib/ESPAsyncWebServer/ESPAsyncWebServer.h - -21 #ide -_ESPAsyncWebSv_H_ - - -22  - #_ESPAsyncWebSv_H_ - - - ) - -24  - ~"Arduo.h -" - -26  - ~ - -27  - ~"FS.h -" - -29  - ~"SgAay.h -" - -31 #ifde -ESP32 - - -32  - ~ - -33  - ~ - -34 #i -defed -( -ESP8266 -) - -35  - ~ - -36  - ~ - -38 #r -Ptfm - -n - -su܋d - - -41 #ifde -ASYNCWEBSERVER_REGEX - - -42  - #ASYNCWEBSERVER_REGEX_ATTRIBUTE - - - ) - -44  - #ASYNCWEBSERVER_REGEX_ATTRIBUTE - - `__ibu__ -(( - `wng -("ASYNCWEBSERVER_REGEX defed"))) - - ) - -47  - #DEBUGF -(...) - -48 - - ) - -49 -ass - - gAsyncWebSv -; - -50 -ass - - gAsyncWebSvReque -; - -51 -ass - - gAsyncWebSvReڣ -; - -52 -ass - - gAsyncWebHd -; - -53 -ass - - gAsyncWebPam -; - -54 -ass - - gAsyncWebRewre -; - -55 -ass - - gAsyncWebHdr -; - -56 -ass - - gAsyncSticWebHdr -; - -57 -ass - - gAsyncClbackWebHdr -; - -58 -ass - - gAsyncReڣSm -; - -60 #ide -WEBSERVER_H - - -62 - mHTTP_GET - = 0b00000001, - -63 - mHTTP_POST - = 0b00000010, - -64 - mHTTP_DELETE - = 0b00000100, - -65 - mHTTP_PUT - = 0b00001000, - -66 - mHTTP_PATCH - = 0b00010000, - -67 - mHTTP_HEAD - = 0b00100000, - -68 - mHTTP_OPTIONS - = 0b01000000, - -69 - mHTTP_ANY - = 0b01111111, - -70 } - tWebRequeMhod -; - -73 #ide -HAVE_FS_FILE_OPEN_MODE - - -74 -mea - - gfs - { - -75 as - cFeOnMode - { - -76 - gpublic -: - -77 cڡ * -ad -; - -78 cڡ * - gwre -; - -79 cڡ * - gnd -; - -83  - ~"FeOnMode.h -" - -87  - #RESPONSE_TRY_AGAIN - 0xFFFFFFFF - - ) - -89  -ut8_t - - tWebRequeMhodCompose -; - -90  - gd -:: - tfuni -<()> - tArDiscHdr -; - -96 as - cAsyncWebPam - { - -97 - mive -: - -98 -Sg - -_me -; - -99 -Sg - - m_vue -; - -100 -size_t - - m_size -; - -101 -bo - - m_isFm -; - -102 -bo - - m_isFe -; - -104 - mpublic -: - -106 - $AsyncWebPam -(cڡ -Sg -& -me -, cڡ Sg& -vue -, -bo - -fm -= -l -, bo -fe -=l, -size_t - -size -=0): - `_me -ame), - `_vue -(vue), - `_size -(size), - `_isFm -(fm), - $_isFe -( -fe -){} - -107 cڡ -Sg -& - $me -(cڡ {  -_me -; - } -} - -108 cڡ - gSg -& - $vue -(cڡ {  -_vue -; - } -} - -109 -size_t - - $size -(cڡ {  -_size -; - } -} - -110 -bo - - $isPo -(cڡ {  -_isFm -; - } -} - -111 -bo - - $isFe -(cڡ {  -_isFe -; - } -} - -118 as - cAsyncWebHd - { - -119 - mive -: - -120 -Sg - -_me -; - -121 -Sg - - m_vue -; - -123 - mpublic -: - -124 - $AsyncWebHd -(cڡ -Sg -& -me -, cڡ Sg& -vue -): - `_me -ame), - $_vue -( -vue -){} - -125 - $AsyncWebHd -(cڡ -Sg -& -da -): - `_me -(), - $_vue -(){ - -126 if(! -da -) ; - -127  -dex - = -da -. - `dexOf -(':'); - -128 i( -dex - < 0) ; - -129 -_me - = -da -. - `subrg -(0, -dex -); - -130 -_vue - = -da -. - `subrg -( -dex - + 2); - -131 - } -} - -132 ~ - $AsyncWebHd -(){ - } -} - -133 cڡ - gSg -& - $me -(cڡ {  -_me -; - } -} - -134 cڡ - gSg -& - $vue -(cڡ {  -_vue -; - } -} - -135 -Sg - - $toSg -(cڡ {  - `Sg -( -_me - + - `F -(": "+ -_vue - + F("\r\n")); - } -} - -142 um { - mRCT_NOT_USED - = -1, - mRCT_DEFAULT - = 0, - mRCT_HTTP -, - mRCT_WS -, - mRCT_EVENT -, - mRCT_MAX - } - tRequeedCiTy -; - -144  - gd -:: - tfuni -< - tsize_t -( - tut8_t -*, size_t, size_t)> - tAwsReڣFr -; - -145  - gd -:: - tfuni -< - tSg -(cڡ Sg&)> - tAwsTemePross -; - -147 as - cAsyncWebSvReque - { - -148 -usg - - mFe - = -fs -:: -Fe -; - -149 -usg - - mFS - = -fs -:: -FS -; - -150 -nd - -ass - - mAsyncWebSv -; - -151 -nd - -ass - - mAsyncClbackWebHdr -; - -152 -nd - -ass - - mHpCookHd -; - -153 - mive -: - -154 -AsyncCl -* -_ -; - -155 -AsyncWebSv -* - m_rv -; - -156 -AsyncWebHdr -* - m_hdr -; - -157 -AsyncWebSvReڣ -* - m_ڣ -; - -158 -SgAay - - m_gHds -; - -159 -ArDiscHdr - - m_Disc -; - -161 -Sg - - m_mp -; - -162 -ut8_t - - m_rS -; - -164 -ut8_t - - m_vsi -; - -165 -WebRequeMhodCompose - - m_mhod -; - -166 -Sg - - m_u -; - -167 -Sg - - m_ho -; - -168 -Sg - - m_cڋTy -; - -169 -Sg - - m_boundy -; - -170 -Sg - - m_authizi -; - -171 -RequeedCiTy - - m_qcy -; - -172  -_moveNIegHds -(); - -173 -bo - - m_isDige -; - -174 -bo - - m_isMuɝt -; - -175 -bo - - m_isPϚPo -; - -176 -bo - - m_exgCtue -; - -177 -size_t - - m_cڋLgth -; - -178 -size_t - - m_rdLgth -; - -180 - mLkedLi -< - mAsyncWebHd - *> - m_hds -; - -181 - mLkedLi -< - mAsyncWebPam - *> - m_ms -; - -182 - mLkedLi -< - mSg - *> - m_thPams -; - -184 -ut8_t - - m_muiPS -; - -185 -ut8_t - - m_boundyPosi -; - -186 -size_t - - m_emSIndex -; - -187 -size_t - - m_emSize -; - -188 -Sg - - m_emName -; - -189 -Sg - - m_emFame -; - -190 -Sg - - m_emTy -; - -191 -Sg - - m_emVue -; - -192 -ut8_t - * - m_emBufr -; - -193 -size_t - - m_emBufrIndex -; - -194 -bo - - m_emIsFe -; - -196  -_Pl -(); - -197  -_Ack -( -size_t - -n -, -ut32_t - -time -); - -198  -_E -( -t8_t - -r -); - -199  -_Timeout -( -ut32_t - -time -); - -200  -_Disc -(); - -201  -_Da -(* -buf -, -size_t - -n -); - -203  -_addPam -( -AsyncWebPam -*); - -204  -_addPhPam -(cڡ * -m -); - -206 -bo - -_rReqHd -(); - -207 -bo - -_rReqHd -(); - -208  -_rLe -(); - -209  -_rPϚPoCh -( -ut8_t - -da -); - -210  -_rMuɝtPoBy -( -ut8_t - -da -, -bo - -ϡ -); - -211  -_addGPams -(cڡ -Sg -& -ms -); - -213  -_hdUdS -(); - -214  -_hdUdBy -( -ut8_t - -da -, -bo - -ϡ -); - -215  -_hdUdEnd -(); - -217 - mpublic -: - -218 -Fe - -_mpFe -; - -219 * - m_mpObje -; - -221 -AsyncWebSvReque -( -AsyncWebSv -*, -AsyncCl -*); - -222 ~ -AsyncWebSvReque -(); - -224 -AsyncCl -* - $ -(){  -_ -; } - -225 -ut8_t - - $vsi -(cڡ {  -_vsi -; - } -} - -226 -WebRequeMhodCompose - - $mhod -(cڡ {  -_mhod -; - } -} - -227 cڡ - gSg -& - $u -(cڡ {  -_u -; - } -} - -228 cڡ - gSg -& - $ho -(cڡ {  -_ho -; - } -} - -229 cڡ - gSg -& - $cڋTy -(cڡ {  -_cڋTy -; - } -} - -230 -size_t - - $cڋLgth -(cڡ {  -_cڋLgth -; - } -} - -231 -bo - - $muɝt -(cڡ {  -_isMuɝt -; - } -} - -232 cڡ -__FshSgHr - * - $mhodToSg -() const; - -233 cڡ -__FshSgHr - * - $queedCnTyToSg -() const; - -234 -RequeedCiTy - - $queedCnTy -(cڡ {  -_qcy -; - } -} - -235 -bo - -isExedRequeedCnTy -( -RequeedCiTy - -1 -, RequeedCiTy -2 - = -RCT_NOT_USED -, RequeedCiTy -3 - = RCT_NOT_USED); - -236  -Disc - ( -ArDiscHdr - - -); - -241 -bo - -authti -(cڡ * -hash -); - -242 -bo - -authti -(cڡ * -uame -, cڡ * -sswd -, cڡ * -m - = -NULL -, bo -sswdIsHash - = -l -); - -243  -queAuthtiti -(cڡ * -m - = -NULL -, -bo - -isDige - = -ue -); - -245  - $tHdr -( -AsyncWebHdr - * -hdr -){ -_hdr - = hdr; - } -} - -246  -addIegHd -(cڡ -Sg -& -me -); - -248  -de -(cڡ -Sg -& -u -); - -250  -nd -( -AsyncWebSvReڣ - * -ڣ -); - -251  -nd -( -code -, cڡ -Sg -& -cڋTy -=Sg(), cڡ Sg& -cڋ -=String()); - -252  -nd -( -FS - & -fs -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -=Sg(), -bo - -dowd -= -l -, -AwsTemePross - -back -= -nuαr -); - -253  -nd -( -Fe - -cڋ -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -=Sg(), -bo - -dowd -= -l -, -AwsTemePross - -back -= -nuαr -); - -254  -nd -( -Sm - & -am -, cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsTemePross - -back -= -nuαr -); - -255  -nd -(cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -= -nuαr -); - -256  -ndChunked -(cڡ -Sg -& -cڋTy -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -= -nuαr -); - -257  -nd_P -( -code -, cڡ -Sg -& -cڋTy -, cڡ -ut8_t - * -cڋ -, -size_t - -n -, -AwsTemePross - -back -= -nuαr -); - -258  -nd_P -( -code -, cڡ -Sg -& -cڋTy -, -PGM_P - -cڋ -, -AwsTemePross - -back -= -nuαr -); - -260 -AsyncWebSvReڣ - * -begReڣ -( -code -, cڡ -Sg -& -cڋTy -=Sg(), cڡ Sg& -cڋ -=String()); - -261 -AsyncWebSvReڣ - * -begReڣ -( -FS - & -fs -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -=Sg(), -bo - -dowd -= -l -, -AwsTemePross - -back -= -nuαr -); - -262 -AsyncWebSvReڣ - * -begReڣ -( -Fe - -cڋ -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -=Sg(), -bo - -dowd -= -l -, -AwsTemePross - -back -= -nuαr -); - -263 -AsyncWebSvReڣ - * -begReڣ -( -Sm - & -am -, cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsTemePross - -back -= -nuαr -); - -264 -AsyncWebSvReڣ - * -begReڣ -(cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -= -nuαr -); - -265 -AsyncWebSvReڣ - * -begChunkedReڣ -(cڡ -Sg -& -cڋTy -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -= -nuαr -); - -266 -AsyncReڣSm - * -begReڣSm -(cڡ -Sg -& -cڋTy -, -size_t - -bufrSize -=1460); - -267 -AsyncWebSvReڣ - * -begReڣ_P -( -code -, cڡ -Sg -& -cڋTy -, cڡ -ut8_t - * -cڋ -, -size_t - -n -, -AwsTemePross - -back -= -nuαr -); - -268 -AsyncWebSvReڣ - * -begReڣ_P -( -code -, cڡ -Sg -& -cڋTy -, -PGM_P - -cڋ -, -AwsTemePross - -back -= -nuαr -); - -270 -size_t - - $hds -() const; - -271 -bo - - $hasHd -(cڡ -Sg -& -me -) const; - -272 -bo - - $hasHd -(cڡ -__FshSgHr - * -da -) const; - -274 -AsyncWebHd -* - $gHd -(cڡ -Sg -& -me -) const; - -275 -AsyncWebHd -* - $gHd -(cڡ -__FshSgHr - * -da -) const; - -276 -AsyncWebHd -* - $gHd -( -size_t - -num -) const; - -278 -size_t - - $ms -() const; - -279 -bo - - $hasPam -(cڡ -Sg -& -me -, -bo - -po -= -l -, bo -fe -=false) const; - -280 -bo - - $hasPam -(cڡ -__FshSgHr - * -da -, -bo - -po -= -l -, bo -fe -=false) const; - -282 -AsyncWebPam -* - $gPam -(cڡ -Sg -& -me -, -bo - -po -= -l -, bo -fe -=false) const; - -283 -AsyncWebPam -* - $gPam -(cڡ -__FshSgHr - * -da -, -bo - -po -, bo -fe -) const; - -284 -AsyncWebPam -* - $gPam -( -size_t - -num -) const; - -286 -size_t - - $gs -(cڡ {  - `ms -(); - } -} - -287 cڡ - gSg -& - $g -(cڡ -Sg -& -me -) const; - -288 cڡ -Sg -& - $g -(cڡ -__FshSgHr - * -da -) const; - -289 cڡ -Sg -& - $g -( -size_t - -i -) const; - -290 cڡ -Sg -& - $gName -( -size_t - -i -) const; - -291 -bo - - $hasArg -(cڡ * -me -) const; - -292 -bo - - $hasArg -(cڡ -__FshSgHr - * -da -) const; - -294 cڡ -Sg -& -ASYNCWEBSERVER_REGEX_ATTRIBUTE - - $thArg -( -size_t - -i -) const; - -296 cڡ -Sg -& - $hd -(cڡ * -me -) const; - -297 cڡ -Sg -& - $hd -(cڡ -__FshSgHr - * -da -) const; - -298 cڡ -Sg -& - $hd -( -size_t - -i -) const; - -299 cڡ -Sg -& - $hdName -( -size_t - -i -) const; - -300 -Sg - - $uDecode -(cڡ -Sg -& -xt -) const; - -301 - } -}; - -307  - gd -:: - tfuni -< - tbo -( - tAsyncWebSvReque - * - tque -)> - tArRequeFrFuni -; - -309 -bo - -ON_STA_FILTER -( -AsyncWebSvReque - * -que -); - -311 -bo - -ON_AP_FILTER -( -AsyncWebSvReque - * -que -); - -317 as - cAsyncWebRewre - { - -318 - meed -: - -319 -Sg - -_om -; - -320 -Sg - - m_toU -; - -321 -Sg - - m_ms -; - -322 -ArRequeFrFuni - - m_fr -; - -323 - mpublic -: - -324 - $AsyncWebRewre -(cڡ * -om -, cڡ * -to -): - `_om -(om), - `_toU -o), - `_ms -( - `Sg -()), - $_fr -( -NULL -){ - -325  -dex - = -_toU -. - `dexOf -('?'); - -326 i( -dex - > 0) { - -327 -_ms - = -_toU -. - `subrg -( -dex - +1); - -328 -_toU - = _toU. - `subrg -(0, -dex -); - -331 -vtu - ~ - $AsyncWebRewre -(){ - } -} - -332 - gAsyncWebRewre -& - $tFr -( -ArRequeFrFuni - - -{ -_fr - = fn;  * -this -; - } -} - -333 -bo - - $fr -( -AsyncWebSvReque - * -que -cڡ {  -_fr - = -NULL - || - `_fr -eque); - } -} - -334 cڡ - gSg -& - $om -(cڡ {  -_om -; - } -} - -335 cڡ - gSg -& - $toU -(cڡ {  -_toU -; - } -} - -336 cڡ - gSg -& - $ms -(cڡ {  -_ms -; - } -} - -337 -vtu - -bo - - $mch -( -AsyncWebSvReque - * -que -{  - `om -(=que-> - `u -(&& - `fr -eque); - } -} - -344 as - cAsyncWebHdr - { - -345 - meed -: - -346 -ArRequeFrFuni - -_fr -; - -347 -Sg - - m_uame -; - -348 -Sg - - m_sswd -; - -349 - mpublic -: - -350 - $AsyncWebHdr -(): - `_uame -(""), - `_sswd -(""){} - -351 -AsyncWebHdr -& - $tFr -( -ArRequeFrFuni - - -{ -_fr - = fn;  * -this -; - } -} - -352 - gAsyncWebHdr -& - $tAuthtiti -(cڡ * -uame -, cڡ * -sswd -){ -_uame - = - `Sg -(uame); -_sswd - = Sgasswd);  * -this -; - } -}; - -353 -bo - - $fr -( -AsyncWebSvReque - * -que -){  -_fr - = -NULL - || - `_fr -eque); - } -} - -354 - gvtu - ~ - $AsyncWebHdr -(){ - } -} - -355 -vtu - -bo - -nHd -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -))){ - -356  - gl -; - -358 -vtu -  -hdReque -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -))){} - -359 -vtu -  -hdUd -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -)), cڡ -Sg -& -fame - __ibu__((unud)), -size_t - -dex - __ibu__((unud)), -ut8_t - * -da - __ibu__((unud)), size_ -n - __ibu__((unud)), -bo - -f - __attribute__((unused))){} - -360 -vtu -  -hdBody -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -)), -ut8_t - * -da - __ibu__((unud)), -size_t - -n - __ibu__((unud)), size_ -dex - __ibu__((unud)), size_ -tٮ - __attribute__((unused))){} - -361 -vtu - -bo - - $isRequeHdrTrivl -(){ -ue -; - } -} - -369 - mRESPONSE_SETUP -, - mRESPONSE_HEADERS -, - mRESPONSE_CONTENT -, - mRESPONSE_WAIT_ACK -, - mRESPONSE_END -, - mRESPONSE_FAILED - - -370 } - tWebReڣS -; - -372 as - cAsyncWebSvReڣ - { - -373 - meed -: - -374  -_code -; - -375 - mLkedLi -< - mAsyncWebHd - *> - m_hds -; - -376 -Sg - - m_cڋTy -; - -377 -size_t - - m_cڋLgth -; - -378 -bo - - m_ndCڋLgth -; - -379 -bo - - m_chunked -; - -380 -size_t - - m_hdLgth -; - -381 -size_t - - m_Lgth -; - -382 -size_t - - m_ackedLgth -; - -383 -size_t - - m_wrnLgth -; - -384 -WebReڣS - - m_e -; - -385 cڡ * -_ڣCodeToSg -( -code -); - -386 - mpublic -: - -387 cڡ -__FshSgHr - * -ڣCodeToSg -( -code -); - -389 - mpublic -: - -390 -AsyncWebSvReڣ -(); - -391 - mvtu - ~ -AsyncWebSvReڣ -(); - -392 -vtu -  -tCode -( -code -); - -393 -vtu -  -tCڋLgth -( -size_t - -n -); - -394 -vtu -  -tCڋTy -(cڡ -Sg -& -ty -); - -395 -vtu -  -addHd -(cڡ -Sg -& -me -, cڡ Sg& -vue -); - -396 -vtu - -Sg - -_asmbHd -( -ut8_t - -vsi -); - -397 -vtu - -bo - - $_d -() const; - -398 -vtu - -bo - - $_fished -() const; - -399 -vtu - -bo - - $_ed -() const; - -400 -vtu - -bo - - $_sourVid -() const; - -401 -vtu -  - `_d -( -AsyncWebSvReque - * -que -); - -402 -vtu - -size_t - - `_ack -( -AsyncWebSvReque - * -que -, size_ -n -, -ut32_t - -time -); - -409  -d -:: - tfuni -<( - tAsyncWebSvReque - * - tque -)> - tArRequeHdrFuni -; - -410  -d -:: - tfuni -<( - tAsyncWebSvReque - * - tque -, cڡ - tSg -& - tfame -, - tsize_t - - tdex -, - tut8_t - * - tda -, size_ - tn -, - tbo - - tf -)> - tArUdHdrFuni -; - -411  -d -:: - tfuni -<( - tAsyncWebSvReque - * - tque -, - tut8_t - * - tda -, - tsize_t - - tn -, size_ - tdex -, size_ - ttٮ -)> - tArBodyHdrFuni -; - -413 as - cAsyncWebSv - { - -414 -eed -: - -415 -AsyncSv - -_rv -; - -416 -LkedLi -< -AsyncWebRewre -*> -_wres -; - -417 -LkedLi -< -AsyncWebHdr -*> -_hdrs -; - -418 -AsyncClbackWebHdr -* -_tchAHdr -; - -420 -public -: - -421 - `AsyncWebSv -( -ut16_t - -pt -); - -422 ~ - `AsyncWebSv -(); - -424  - `beg -(); - -425  - `d -(); - -427 #i -ASYNC_TCP_SSL_ENABLED - - -428  - `SFeReque -( -AcSSlFeHdr - -cb -, * -g -); - -429  - `begSecu -(cڡ * - -, cڡ * -ive_key_fe -, cڡ * -sswd -); - -432 -AsyncWebRewre -& - `addRewre -(AsyncWebRewre* -wre -); - -433 -bo - - `moveRewre -( -AsyncWebRewre -* -wre -); - -434 -AsyncWebRewre -& - `wre -(cڡ * -om -, cڡ * -to -); - -436 -AsyncWebHdr -& - `addHdr -(AsyncWebHdr* -hdr -); - -437 -bo - - `moveHdr -( -AsyncWebHdr -* -hdr -); - -439 -AsyncClbackWebHdr -& - ` -(cڡ * -uri -, -ArRequeHdrFuni - -Reque -); - -440 -AsyncClbackWebHdr -& - ` -(cڡ * -uri -, -WebRequeMhodCompose - -mhod -, -ArRequeHdrFuni - -Reque -); - -441 -AsyncClbackWebHdr -& - ` -(cڡ * -uri -, -WebRequeMhodCompose - -mhod -, -ArRequeHdrFuni - -Reque -, -ArUdHdrFuni - -Ud -); - -442 -AsyncClbackWebHdr -& - ` -(cڡ * -uri -, -WebRequeMhodCompose - -mhod -, -ArRequeHdrFuni - -Reque -, -ArUdHdrFuni - -Ud -, -ArBodyHdrFuni - -Body -); - -444 -AsyncSticWebHdr -& - `rveStic -(cڡ * -uri -, -fs -:: -FS -& fs, cڡ * -th -, cڡ * -che_cڌ - = -NULL -); - -446  - `NFound -( -ArRequeHdrFuni - - -); - -447  - `FeUd -( -ArUdHdrFuni - - -); - -448  - `RequeBody -( -ArBodyHdrFuni - - -); - -450  - `t -(); - -452  - `_hdDisc -( -AsyncWebSvReque - * -que -); - -453  - `_chHdr -( -AsyncWebSvReque - * -que -); - -454  - `_wreReque -( -AsyncWebSvReque - * -que -); - -457 as - cDeuHds - { - -458 -usg - -hds_t - = -LkedLi -< -AsyncWebHd - *>; - -459 -hds_t - -_hds -; - -461 - $DeuHds -() - -462 : - `_hds -( - `hds_t -([]( -AsyncWebHd - * -h -){ -de - h; })) - -463 { - } -} - -464 - gpublic -: - -465 -usg - -CڡIt - = -hds_t -::ConstIterator; - -467  - $addHd -(cڡ -Sg -& -me -, cڡ Sg& -vue -){ - -468 -_hds -. - `add -( -w - - `AsyncWebHd -( -me -, -vue -)); - -469 - } -} - -471 -CڡIt - - $beg -(cڡ {  -_hds -. - `beg -(); - } -} - -472 -CڡIt - - $d -(cڡ {  -_hds -. - `d -(); - } -} - -474 -DeuHds -(DeuHdcڡ & -de -; - -475 - gDeuHds - & - gݔ -=( -DeuHds - cڡ & -de -; - -476  - gDeuHds - & - $In -() { - -477  -DeuHds - - -; - -478  - -; - -479 - } -} - -482  - ~"WebReڣIm.h -" - -483  - ~"WebHdrIm.h -" - -484  - ~"AsyncWebSock.h -" - -485  - ~"AsyncEvtSour.h -" - - @lib/ESPAsyncWebServer/SPIFFSEditor.cpp - -1  - ~"SPIFFSEd.h -" - -2  - ~ - -5  - #ed_htm_gz_n - 4151 - - ) - -6 cڡ -ut8_t - - ged_htm_gz -[] - gPROGMEM - = { - -269  - #SPIFFS_MAXLENGTH_FILEPATH - 32 - - ) - -270 cڡ * - gexudeLiFe - = "/.exclude.files"; - -272  - sExudeLiS - { - -273 * - mem -; - -274 -ExudeLiS - * - mxt -; - -275 } - tExudeLi -; - -277  -ExudeLi - * - gexudes - = -NULL -; - -279  -bo - - $mchWd -(cڡ * -n -, cڡ * - -) { - -280 cڡ * -nxP - = -NULL -, * -nxT - = NULL; - -282 * - -) { - -283 i(* -n - ='?' ) || (*=* - -)){ - -284 -n -++; - -++; - -287 i(* -n -=='*'){ - -288 -nxP -= -n -++; -nxT -= - -; - -291 i( -nxP -){ - -292 -n - = -nxP -+1; - -=++ -nxT -; - -295  -l -; - -297 * -n -=='*'){pattern++;} - -298  (* -n - == 0); - -299 - } -} - -301  -bo - - $addExude -(cڡ * -em -){ - -302 -size_t - -n - = - ` -( -em -); - -303 if(! -n -){ - -304  -l -; - -306 -ExudeLi - * -e - = (ExudeLi *) - `mloc -((ExcludeList)); - -307 if(! -e -){ - -308  -l -; - -310 -e --> -em - = (*) - `mloc -( -n -+1); - -311 if(! -e --> -em -){ - -312 - ` -( -e -); - -313  -l -; - -315 - `memy -( -e --> -em -, im, -n -+1); - -316 -e --> -xt - = -exudes -; - -317 -exudes - = -e -; - -318  -ue -; - -319 - } -} - -321  - $ldExudeLi -( -fs -:: -FS - & -_fs -, cڡ * -fame -){ - -322  -lebuf -[ -SPIFFS_MAXLENGTH_FILEPATH -]; - -323 -fs -:: -Fe - -exudeFe -= -_fs -. - `ݒ -( -fame -, "r"); - -324 if(! -exudeFe -){ - -328 #ifde -ESP32 - - -329 if( -exudeFe -. - `isDey -()){ - -330 -exudeFe -. - `o -(); - -334 i( -exudeFe -. - `size -() > 0){ - -335 -ut8_t - -idx -; - -336 -bo - -isOvowed - = -l -; - -337  -exudeFe -. - `avaab -()){ - -338 -lebuf -[0] = '\0'; - -339 -idx - = 0; - -340  -ϡCh -; - -342 -ϡCh - = -exudeFe -. - `ad -(); - -343 if( -ϡCh - != '\r'){ - -344 -lebuf -[ -idx -++] = ( -ϡCh -; - -346 } ( -ϡCh - >0&& (ϡCh !'\n'&& ( -idx - < -SPIFFS_MAXLENGTH_FILEPATH -)); - -348 if( -isOvowed -){ - -349 -isOvowed - = ( -ϡCh - != '\n'); - -352 -isOvowed - = ( -idx - > -SPIFFS_MAXLENGTH_FILEPATH -); - -353 -lebuf -[ -idx --1] = '\0'; - -354 if(! - `addExude -( -lebuf -)){ - -355 -exudeFe -. - `o -(); - -360 -exudeFe -. - `o -(); - -361 - } -} - -363  -bo - - $isExuded -( -fs -:: -FS - & -_fs -, cڡ * -fame -) { - -364 if( -exudes - = -NULL -){ - -365 - `ldExudeLi -( -_fs -, -exudeLiFe -); - -367 -ExudeLi - * -e - = -exudes -; - -368  -e -){ - -369 i( - `mchWd -( -e --> -em -, -fame -)){ - -370  -ue -; - -372 -e - =-> -xt -; - -374  -l -; - -375 - } -} - -379 #ifde -ESP32 - - -380 - gSPIFFSEd -:: - $SPIFFSEd -(cڡ -fs -:: -FS -& fs, cڡ -Sg -& -uame -, cڡ Sg& -sswd -) - -382 -SPIFFSEd -:: - $SPIFFSEd -(cڡ -Sg -& -uame -, cڡ Sg& -sswd -, cڡ -fs -:: -FS -& fs) - -384 : - `_fs -( -fs -) - -385 , - `_uame -( -uame -) - -386 , - `_sswd -( -sswd -) - -387 , - `_authtid -( -l -) - -388 , - $_tTime -(0) - -389 { - } -} - -391 -bo - - gSPIFFSEd -:: - $nHd -( -AsyncWebSvReque - * -que -){ - -392 if( -que --> - `u -(). - `equsIgneCa -("/edit")){ - -393 if( -que --> - `mhod -(= -HTTP_GET -){ - -394 if( -que --> - `hasPam -("list")) - -395  -ue -; - -396 if( -que --> - `hasPam -("edit")){ - -397 -que --> -_mpFe - = -_fs -. - `ݒ -eque-> - `g -("edit"), "r"); - -398 if(! -que --> -_mpFe -){ - -399  -l -; - -401 #ifde -ESP32 - - -402 if( -que --> -_mpFe -. - `isDey -()){ - -403 -que --> -_mpFe -. - `o -(); - -404  -l -; - -408 if( -que --> - `hasPam -("download")){ - -409 -que --> -_mpFe - = -_fs -. - `ݒ -eque-> - `g -("download"), "r"); - -410 if(! -que --> -_mpFe -){ - -411  -l -; - -413 #ifde -ESP32 - - -414 if( -que --> -_mpFe -. - `isDey -()){ - -415 -que --> -_mpFe -. - `o -(); - -416  -l -; - -420 -que --> - `addIegHd -("If-Modified-Since"); - -421  -ue -; - -423 if( -que --> - `mhod -(= -HTTP_POST -) - -424  -ue -; - -425 if( -que --> - `mhod -(= -HTTP_DELETE -) - -426  -ue -; - -427 if( -que --> - `mhod -(= -HTTP_PUT -) - -428  -ue -; - -431  -l -; - -432 - } -} - -435  - gSPIFFSEd -:: - $hdReque -( -AsyncWebSvReque - * -que -){ - -436 if( -_uame -. - `ngth -(&& -_sswd -.ngth(&& ! -que --> - `authti -(_uame. - `c_r -(), _password.c_str())) - -437  -que --> - `queAuthtiti -(); - -439 if( -que --> - `mhod -(= -HTTP_GET -){ - -440 if( -que --> - `hasPam -("list")){ - -441 -Sg - -th - = -que --> - `gPam -("li")-> - `vue -(); - -442 #ifde -ESP32 - - -443 -Fe - -d - = -_fs -. - `ݒ -( -th -); - -445 -D - -d - = -_fs -. - `ݒD -( -th -); - -447 -th - = - `Sg -(); - -448 -Sg - -ouut - = "["; - -449 #ifde -ESP32 - - -450 -Fe - -y - = -d -. - `ݒNextFe -(); - -451  -y -){ - -453  -d -. - `xt -()){ - -454 -fs -:: -Fe - -y - = -d -. - `ݒFe -("r"); - -456 i( - `isExuded -( -_fs -, -y -. - `me -())) { - -457 #ifde -ESP32 - - -458 -y - = -d -. - `ݒNextFe -(); - -462 i( -ouut - != "[") output += ','; - -463 -ouut - += "{\"type\":\""; - -464 -ouut - += "file"; - -465 -ouut - += "\",\"name\":\""; - -466 -ouut - + - `Sg -( -y -. - `me -()); - -467 -ouut - += "\",\"size\":"; - -468 -ouut - + - `Sg -( -y -. - `size -()); - -469 -ouut - += "}"; - -470 #ifde -ESP32 - - -471 -y - = -d -. - `ݒNextFe -(); - -473 -y -. - `o -(); - -476 #ifde -ESP32 - - -477 -d -. - `o -(); - -479 -ouut - += "]"; - -480 -que --> - `nd -(200, "iti/js", -ouut -); - -481 -ouut - = - `Sg -(); - -483 if( -que --> - `hasPam -("edit") ||equest->hasParam("download")){ - -484 -que --> - `nd -eque-> -_mpFe -,eque->_mpFe. - `me -(), - `Sg -(),eque-> - `hasPam -("download")); - -487 cڡ * -budTime - = -__DATE__ - " " -__TIME__ - " GMT"; - -488 i( -que --> - `hd -("If-Modifd-S"). - `equs -( -budTime -)) { - -489 -que --> - `nd -(304); - -491 -AsyncWebSvReڣ - * -ڣ - = -que --> - `begReڣ_P -(200, "xt/html", -ed_htm_gz -, -ed_htm_gz_n -); - -492 -ڣ --> - `addHd -("Content-Encoding", "gzip"); - -493 -ڣ --> - `addHd -("La-Modifd", -budTime -); - -494 -que --> - `nd -( -ڣ -); - -497 } if( -que --> - `mhod -(= -HTTP_DELETE -){ - -498 if( -que --> - `hasPam -("th", -ue -)){ - -499 -_fs -. - `move -( -que --> - `gPam -("th", -ue -)-> - `vue -()); - -500 -que --> - `nd -(200, "", "DELETE: "+que-> - `gPam -("th", -ue -)-> - `vue -()); - -502 -que --> - `nd -(404); - -503 } if( -que --> - `mhod -(= -HTTP_POST -){ - -504 if( -que --> - `hasPam -("da", -ue -,rue&& -_fs -. - `exis -eque-> - `gPam -("da",rue,rue)-> - `vue -())) - -505 -que --> - `nd -(200, "", "UPLOADED: "+que-> - `gPam -("da", -ue -,rue)-> - `vue -()); - -507 -que --> - `nd -(500); - -508 } if( -que --> - `mhod -(= -HTTP_PUT -){ - -509 if( -que --> - `hasPam -("th", -ue -)){ - -510 -Sg - -fame - = -que --> - `gPam -("th", -ue -)-> - `vue -(); - -511 if( -_fs -. - `exis -( -fame -)){ - -512 -que --> - `nd -(200); - -514 -fs -:: -Fe - -f - = -_fs -. - `ݒ -( -fame -, "w"); - -515 if( -f -){ - -516 -f -. - `wre -(( -ut8_t -)0x00); - -517 -f -. - `o -(); - -518 -que --> - `nd -(200, "", "CREATE: "+ -fame -); - -520 -que --> - `nd -(500); - -524 -que --> - `nd -(400); - -526 - } -} - -528  - gSPIFFSEd -:: - $hdUd -( -AsyncWebSvReque - * -que -, cڡ -Sg -& -fame -, -size_t - -dex -, -ut8_t - * -da -, size_ -n -, -bo - -f -){ - -529 if(! -dex -){ - -530 if(! -_uame -. - `ngth -(|| -que --> - `authti -(_uame. - `c_r -(), -_sswd -.c_str())){ - -531 -_authtid - = -ue -; - -532 -que --> -_mpFe - = -_fs -. - `ݒ -( -fame -, "w"); - -533 -_tTime - = - `mlis -(); - -536 if( -_authtid - && -que --> -_mpFe -){ - -537 if( -n -){ - -538 -que --> -_mpFe -. - `wre -( -da -, -n -); - -540 if( -f -){ - -541 -que --> -_mpFe -. - `o -(); - -544 - } -} - - @lib/ESPAsyncWebServer/SPIFFSEditor.h - -1 #ide -SPIFFSEd_H_ - - -2  - #SPIFFSEd_H_ - - - ) - -3  - ~ - -5 as - cSPIFFSEd - : -public - -AsyncWebHdr - { - -6 -ive -: - -7 -fs -:: -FS - -_fs -; - -8 -Sg - - m_uame -; - -9 -Sg - - m_sswd -; - -10 -bo - - m_authtid -; - -11 -ut32_t - - m_tTime -; - -13 - mpublic -: - -14 #ifde -ESP32 - - -15 -SPIFFSEd -(cڡ -fs -:: -FS - & fs, cڡ -Sg - & -uame - = Sg(), cڡ Sg & -sswd - = String()); - -17 #agm -GCC - -dgnoic - -push - - -18 #agm -GCC - -dgnoic - -igned - "-Wdeprecated-declarations" - -19 -SPIFFSEd -(cڡ -Sg - & -uame - = Sg(), cڡ Sg & -sswd - = Sg(), cڡ -fs -:: -FS - & f -SPIFFS -); - -20 #agm -GCC - -dgnoic - -p - - -22 -vtu - -bo - - $nHd -( -AsyncWebSvReque - * -que - -ovride - -f -; - -23 -vtu -  - $hdReque -( -AsyncWebSvReque - * -que - -ovride - -f -; - -24 -vtu -  - $hdUd -( -AsyncWebSvReque - * -que -, cڡ -Sg - & -fame -, -size_t - -dex -, -ut8_t - * -da -, size_ -n -, -bo - -f - -ovride - final; - -25 -vtu - -bo - - $isRequeHdrTrivl -( -ovride - -f - { - -26  -l -; - -28 - } -}; - - @lib/ESPAsyncWebServer/StringArray.h - -21 #ide -STRINGARRAY_H_ - - -22  - #STRINGARRAY_H_ - - - ) - -24  - ~"ddef.h -" - -25  - ~"WSg.h -" - -27 - gme - < -tyme - - gT -> - -28 as - cLkedLiNode - { - -29 -T - - m_vue -; - -30 - mpublic -: - -31 -LkedLiNode -< -T ->* -xt -; - -32 - $LkedLiNode -(cڡ -T - -v -): - `_vue -(v), - $xt -( -nuαr -) {} - -33 ~ - $LkedLiNode -(){ - } -} - -34 cڡ - gT -& - $vue -(cڡ {  -_vue -; - } -}; - -35 - gT -& - $vue -(){  -_vue -; - } -} - -38 - gme - < -tyme - - gT -,eme< - gtyme -> -ass - - gIm - = -LkedLiNode -> - -39 as - cLkedLi - { - -40 -public -: - -41  -Im -< - tT -> - tImTy -; - -42  - md -:: - tfuni -<(cڡ - tT -&)> - tOnRemove -; - -43  - md -:: - tfuni -< - tbo -(cڡ - tT -&)> - tPdi -; - -44 - mive -: - -45 -ImTy -* -_ro -; - -46 -OnRemove - - m_Remove -; - -48 as - cIt - { - -49 -ImTy -* - m_node -; - -50 - mpublic -: - -51 -It -( -ImTy -* -cut - = -nuαr -: -_node -(current) {} - -52 -It -(cڡ It& -i -: -_node -(i._node) {} - -53 -It -& -ݔ - ++({ -_node - = _node-> -xt -;  * - mthis -; } - -54 -bo - - mݔ - !(cڡ -It -& -i -cڡ {  -_node - != i._node; } - -55 cڡ - mT -& - mݔ - * (cڡ {  - m_node --> -vue -(); } - -56 cڡ -T -* - mݔ - -> (cڡ {  & - m_node --> -vue -(); } - -59 - gpublic -: - -60 cڡ - tIt - - tCڡIt -; - -61 -CڡIt - - $beg -(cڡ {  - `CڡIt -( -_ro -); - } -} - -62 -CڡIt - - $d -(cڡ {  - `CڡIt -( -nuαr -); - } -} - -64 - $LkedLi -( -OnRemove - -Remove -: - `_ro -( -nuαr -), - $_Remove -( -Remove -{ - } -} - -65 ~ - $LkedLi -(){ - } -} - -66  - $add -(cڡ -T -& -t -){ - -67 aut - - = -w - - `ImTy -( -t -); - -68 if(! -_ro -){ - -69 -_ro - = - -; - -71 aut -i - = -_ro -; - -72  -i --> -xt -) i = i->next; - -73 -i --> -xt - = - -; - -75 - } -} - -76 - gT -& - $t -() const { - -77  -_ro --> - `vue -(); - -78 - } -} - -80 -bo - - $isEmy -() const { - -81  -_ro - = -nuαr -; - -82 - } -} - -83 -size_t - - $ngth -() const { - -84 -size_t - -i - = 0; - -85 aut - - = -_ro -; - -86  - -){ - -87 -i -++; - -88 - - = it-> -xt -; - -90  -i -; - -91 - } -} - -92 -size_t - - $cou_if -( -Pdi - -edi -) const { - -93 -size_t - -i - = 0; - -94 aut - - = -_ro -; - -95  - -){ - -96 i(! -edi -){ - -97 -i -++; - -99 i( - `edi -( - --> - `vue -())) { - -100 -i -++; - -102 - - = it-> -xt -; - -104  -i -; - -105 - } -} - -106 cڡ -T -* - $h -( -size_t - -N -) const { - -107 -size_t - -i - = 0; - -108 aut - - = -_ro -; - -109  - -){ - -110 if( -i -++ = -N -) - -111  &( - --> - `vue -()); - -112 - - = it-> -xt -; - -114  -nuαr -; - -115 - } -} - -116 -bo - - $move -(cڡ -T -& -t -){ - -117 aut - - = -_ro -; - -118 aut -p - = -_ro -; - -119  - -){ - -120 if( - --> - `vue -(= -t -){ - -121 if( - - = -_ro -){ - -122 -_ro - = _ro-> -xt -; - -124 -p --> -xt - = - -->next; - -127 i( -_Remove -) { - -128 - `_Remove -( - --> - `vue -()); - -131 -de - - -; - -132  -ue -; - -134 -p - = - -; - -135 - - = it-> -xt -; - -137  -l -; - -138 - } -} - -139 -bo - - $move_f -( -Pdi - -edi -){ - -140 aut - - = -_ro -; - -141 aut -p - = -_ro -; - -142  - -){ - -143 if( - `edi -( - --> - `vue -())){ - -144 if( - - = -_ro -){ - -145 -_ro - = _ro-> -xt -; - -147 -p --> -xt - = - -->next; - -149 i( -_Remove -) { - -150 - `_Remove -( - --> - `vue -()); - -152 -de - - -; - -153  -ue -; - -155 -p - = - -; - -156 - - = it-> -xt -; - -158  -l -; - -159 - } -} - -161  - $ -(){ - -162  -_ro - ! -nuαr -){ - -163 aut - - = -_ro -; - -164 -_ro - = _ro-> -xt -; - -165 i( -_Remove -) { - -166 - `_Remove -( - --> - `vue -()); - -168 -de - - -; - -170 -_ro - = -nuαr -; - -171 - } -} - -175 -ass - - gSgAay - : -public - -LkedLi -< -Sg -> { - -176 -public -: - -178 -SgAay -(: -LkedLi -( -nuαr -) {} - -180 -bo - -cڏsIgneCa -(cڡ -Sg -& -r -){ - -181 cڡuto& -s - : * -this -) { - -182 i( -r -. -equsIgneCa -( -s -)) { - -183  -ue -; - -186  - gl -; - - @lib/ESPAsyncWebServer/WebAuthentication.cpp - -21  - ~"WebAuthtiti.h -" - -22  - ~ - -23 #ifde -ESP32 - - -24  - ~"mbeds/md5.h -" - -26  - ~"md5.h -" - -32 -bo - - $checkBasicAuthtiti -(cڡ * -hash -, cڡ * -uame -, cڡ * -sswd -){ - -33 if( -uame - = -NULL - || -sswd - =NULL || -hash - == NULL) - -34  -l -; - -36 -size_t - -tncodeL - = - ` -( -uame -)+( -sswd -)+1; - -37 -size_t - -codedL - = - `ba64_code_exed_n -( -tncodeL -); - -38 if( - ` -( -hash -! -codedL -) - -39  -l -; - -41 * -tncode - = -w - [ -tncodeL -+1]; - -42 if( -tncode - = -NULL -){ - -43  -l -; - -45 * -coded - = -w - [ - `ba64_code_exed_n -( -tncodeL -)+1]; - -46 if( -coded - = -NULL -){ - -47 -de -[] -tncode -; - -48  -l -; - -50 - `rtf_P -( -tncode -, - `PSTR -("%s:%s"), -uame -, -sswd -); - -51 if( - `ba64_code_chs -( -tncode -, -tncodeL -, -coded -> 0 && - `memcmp -( -hash -,ncoded, -codedL -) == 0){ - -52 -de -[] -tncode -; - -53 -de -[] -coded -; - -54  -ue -; - -56 -de -[] -tncode -; - -57 -de -[] -coded -; - -58  -l -; - -59 - } -} - -61  -bo - - $gMD5 -( -ut8_t - * -da -, -ut16_t - -n -, * -ouut -){ - -62 #ifde -ESP32 - - -63 -mbeds_md5_cڋxt - -_x -; - -65 -md5_cڋxt_t - -_x -; - -67 -ut8_t - -i -; - -68 -ut8_t - * -_buf - = (ut8_t*) - `mloc -(16); - -69 if( -_buf - = -NULL -) - -70  -l -; - -71 - `memt -( -_buf -, 0x00, 16); - -72 #ifde -ESP32 - - -73 - `mbeds_md5_ -(& -_x -); - -74 - `mbeds_md5_ts -(& -_x -); - -75 - `mbeds_md5_upde -(& -_x -, -da -, -n -); - -76 - `mbeds_md5_fish -(& -_x -, -_buf -); - -78 - `MD5In -(& -_x -); - -79 - `MD5Upde -(& -_x -, -da -, -n -); - -80 - `MD5F -( -_buf -, & -_x -); - -82  -i - = 0; i < 16; i++) { - -83 - `rtf_P -( -ouut - + ( -i - * 2), - `PSTR -("%02x"), -_buf -[i]); - -85 - ` -( -_buf -); - -86  -ue -; - -87 - } -} - -89  -Sg - - $gRdomMD5 -(){ - -90 #ifde -ESP8266 - - -91 -ut32_t - -r - = -RANDOM_REG32 -; - -93 -ut32_t - -r - = - `nd -(); - -95 * -out - = (*) - `mloc -(33); - -96 if( -out - = -NULL - || ! - `gMD5 -(( -ut8_t -*)(& -r -), 4, out)) - -97  -emySg -; - -98 -Sg - -s - = - `Sg -( -out -); - -99 - ` -( -out -); - -100  -s -; - -101 - } -} - -103  -Sg - - $rgMD5 -(cڡ -Sg -& - -){ - -104 * -out - = (*) - `mloc -(33); - -105 if( -out - = -NULL - || ! - `gMD5 -(( -ut8_t -*)( - -. - `c_r -()), in. - `ngth -(), out)) - -106  -emySg -; - -107 -Sg - -s - = - `Sg -( -out -); - -108 - ` -( -out -); - -109  -s -; - -110 - } -} - -112 -Sg - - $geDigeHash -(cڡ * -uame -, cڡ * -sswd -, cڡ * -m -){ - -113 if( -uame - = -NULL - || -sswd - =NULL || -m - == NULL){ - -114  -emySg -; - -116 * -out - = (*) - `mloc -(33); - -117 -Sg - -s - = - `Sg -( -uame -); - -118 -s - += ':'; - -119 -s -. - `ct -( -m -); - -120 -s - += ':'; - -121 -Sg - - - = -s -; - -122 - -. - `ct -( -sswd -); - -123 if( -out - = -NULL - || ! - `gMD5 -(( -ut8_t -*)( - -. - `c_r -()), in. - `ngth -(), out)) - -124  -emySg -; - -125 -s -. - `ct -( -out -); - -126 - ` -( -out -); - -127  -s -; - -128 - } -} - -130 -Sg - - $queDigeAuthtiti -(cڡ * -m -){ - -131 -Sg - -hd - = - `F -("realm=\""); - -132 if( -m - = -NULL -) - -133 -hd -. - `ct -( - `F -("asyncesp")); - -135 -hd -. - `ct -( -m -); - -136 -hd -. - `ct -( - `F -("\", qop=\"auth\",once=\"")); - -137 -hd -. - `ct -( - `gRdomMD5 -()); - -138 -hd -. - `ct -( - `F -("\", opaque=\"")); - -139 -hd -. - `ct -( - `gRdomMD5 -()); - -140 -hd - += '"'; - -141  -hd -; - -142 - } -} - -144 -bo - - $checkDigeAuthtiti -(cڡ * -hd -, cڡ -__FshSgHr - * -mhod -, cڡ * -uame -, cڡ * -sswd -, cڡ * -m -, -bo - -sswdIsHash -, cڡ * -n -, cڡ * -aque -, cڡ * -uri -){ - -145 if( -uame - = -NULL - || -sswd - =NULL || -hd - =NULL || -mhod - == NULL){ - -147  -l -; - -150 -Sg - -myHd - = - `Sg -( -hd -); - -151  -xtBak - = -myHd -. - `dexOf -(','); - -152 if( -xtBak - < 0){ - -154  -l -; - -157 -Sg - -myUame - = - `Sg -(); - -158 -Sg - -myRlm - = - `Sg -(); - -159 -Sg - -myN - = - `Sg -(); - -160 -Sg - -myUri - = - `Sg -(); - -161 -Sg - -myReڣ - = - `Sg -(); - -162 -Sg - -myQ - = - `Sg -(); - -163 -Sg - -myNc - = - `Sg -(); - -164 -Sg - -myCn - = - `Sg -(); - -166 -myHd - + - `F -(", "); - -168 -Sg - -avLe - = -myHd -. - `subrg -(0, -xtBak -); - -169 -avLe -. - `im -(); - -170 -myHd - = myHd. - `subrg -( -xtBak -+1); - -171 -xtBak - = -myHd -. - `dexOf -(','); - -173  -eqSign - = -avLe -. - `dexOf -('='); - -174 if( -eqSign - < 0){ - -176  -l -; - -178 -Sg - -vName - = -avLe -. - `subrg -(0, -eqSign -); - -179 -avLe - =vLe. - `subrg -( -eqSign - + 1); - -180 if( -avLe -. - `tsWh -( - `Sg -('"'))){ - -181 -avLe - =vLe. - `subrg -(1,vLe. - `ngth -() - 1); - -184 if( -vName -. - `equs -( - `F -("username"))){ - -185 if(! -avLe -. - `equs -( -uame -)){ - -187  -l -; - -189 -myUame - = -avLe -; - -190 } if( -vName -. - `equs -( - `F -("realm"))){ - -191 if( -m - ! -NULL - && ! -avLe -. - `equs -(realm)){ - -193  -l -; - -195 -myRlm - = -avLe -; - -196 } if( -vName -. - `equs -( - `F -("nonce"))){ - -197 if( -n - ! -NULL - && ! -avLe -. - `equs -(nonce)){ - -199  -l -; - -201 -myN - = -avLe -; - -202 } if( -vName -. - `equs -( - `F -("opaque"))){ - -203 if( -aque - ! -NULL - && ! -avLe -. - `equs -(opaque)){ - -205  -l -; - -207 } if( -vName -. - `equs -( - `F -("uri"))){ - -208 if( -uri - ! -NULL - && ! -avLe -. - `equs -(uri)){ - -210  -l -; - -212 -myUri - = -avLe -; - -213 } if( -vName -. - `equs -( - `F -("response"))){ - -214 -myReڣ - = -avLe -; - -215 } if( -vName -. - `equs -( - `F -("qop"))){ - -216 -myQ - = -avLe -; - -217 } if( -vName -. - `equs -( - `F -("nc"))){ - -218 -myNc - = -avLe -; - -219 } if( -vName -. - `equs -( - `F -("cnonce"))){ - -220 -myCn - = -avLe -; - -222 }  -xtBak - > 0); - -224 -Sg - -ha1 - = ( -sswdIsHash -? - `Sg -( -sswd -: - `rgMD5 -( -myUame - + ':' + -myRlm - + ':' + String(password)); - -225 -Sg - -ha2 - = - `Sg -( -mhod -+ ':' + -myUri -; - -226 -Sg - -ڣ - = -ha1 - + ':' + -myN - + ':' + -myNc - + ':' + -myCn - + ':' + -myQ - + ':' + - `rgMD5 -( -ha2 -); - -228 if( -myReڣ -. - `equs -( - `rgMD5 -( -ڣ -))){ - -230  -ue -; - -234  -l -; - -235 - } -} - - @lib/ESPAsyncWebServer/WebAuthentication.h - -22 #ide -WEB_AUTHENTICATION_H_ - - -23  - #WEB_AUTHENTICATION_H_ - - - ) - -25  - ~"Arduo.h -" - -27 -bo - -checkBasicAuthtiti -(cڡ * -hd -, cڡ * -uame -, cڡ * -sswd -); - -28 -Sg - -queDigeAuthtiti -(cڡ * -m -); - -29 -bo - -checkDigeAuthtiti -(cڡ * -hd -, cڡ -__FshSgHr - * -mhod -, cڡ * -uame -, cڡ * -sswd -, cڡ * -m -, bo -sswdIsHash -, cڡ * -n -, cڡ * -aque -, cڡ * -uri -); - -32 -Sg - -geDigeHash -(cڡ * -uame -, cڡ * -sswd -, cڡ * -m -); - - @lib/ESPAsyncWebServer/WebHandlerImpl.h - -21 #ide -ASYNCWEBSERVERHANDLERIMPL_H_ - - -22  - #ASYNCWEBSERVERHANDLERIMPL_H_ - - - ) - -24  - ~ - -25 #ifde -ASYNCWEBSERVER_REGEX - - -26  - ~ - -29  - ~"ddef.h -" - -30  - ~ - -32 as - cAsyncSticWebHdr -: -public - -AsyncWebHdr - { - -33 -usg - -Fe - = -fs -::File; - -34 -usg - - mFS - = -fs -:: -FS -; - -35 - mive -: - -36 -bo - -_gFe -( -AsyncWebSvReque - * -que -); - -37 -bo - -_feExis -( -AsyncWebSvReque - * -que -, cڡ -Sg -& -th -); - -38 -ut8_t - - $_couBs -(cڡ -ut8_t - -vue -) const; - -39 -eed -: - -40 -FS - -_fs -; - -41 -Sg - -_uri -; - -42 -Sg - -_th -; - -43 -Sg - -_deu_fe -; - -44 -Sg - -_che_cڌ -; - -45 -Sg - -_ϡ_modifd -; - -46 -AwsTemePross - -_back -; - -47 -bo - -_isD -; - -48 -bo - -_gzF -; - -49 -ut8_t - -_gzSts -; - -50 -public -: - -51 - `AsyncSticWebHdr -(cڡ * -uri -, -FS -& -fs -, cڡ * -th -, cڡ * -che_cڌ -); - -52 -vtu - -bo - - $nHd -( -AsyncWebSvReque - * -que - -ovride - -f -; - -53 -vtu -  - $hdReque -( -AsyncWebSvReque - * -que - -ovride - -f -; - -54 -AsyncSticWebHdr -& - `tIsD -( -bo - -isD -); - -55 -AsyncSticWebHdr -& - `tDeuFe -(cڡ * -fame -); - -56 -AsyncSticWebHdr -& - `tCacheCڌ -(cڡ * -che_cڌ -); - -57 -AsyncSticWebHdr -& - `tLaModifd -(cڡ * -ϡ_modifd -); - -58 -AsyncSticWebHdr -& - `tLaModifd -( -tm -* -ϡ_modifd -); - -59 #ifde -ESP8266 - - -60 -AsyncSticWebHdr -& - `tLaModifd -( -time_t - -ϡ_modifd -); - -61 -AsyncSticWebHdr -& - `tLaModifd -(); - -63 -AsyncSticWebHdr -& - $tTemePross -( -AwsTemePross - -wClback -{ -_back - =ewClback;  * -this -;} - -64 - } -}; - -66 as - cAsyncClbackWebHdr -: -public - -AsyncWebHdr - { - -67 -ive -: - -68 -eed -: - -69 -Sg - -_uri -; - -70 -WebRequeMhodCompose - - m_mhod -; - -71 -ArRequeHdrFuni - - m_Reque -; - -72 -ArUdHdrFuni - - m_Ud -; - -73 -ArBodyHdrFuni - - m_Body -; - -74 -bo - - m_isRegex -; - -75 - mpublic -: - -76 - $AsyncClbackWebHdr -(: - `_uri -(), - `_mhod -( -HTTP_ANY -), - `_Reque -( -NULL -), - `_Ud -(NULL), - `_Body -(NULL), - $_isRegex -( -l -) {} - -77  - $tUri -(cڡ -Sg -& -uri -){ - -78 -_uri - = -uri -; - -79 -_isRegex - = -uri -. - `tsWh -("^"&& uri. - `dsWh -("$"); - -80 - } -} - -81  - $tMhod -( -WebRequeMhodCompose - -mhod -){ -_mhod - = mhod; - } -} - -82  - $Reque -( -ArRequeHdrFuni - - -){ -_Reque - = fn; - } -} - -83  - $Ud -( -ArUdHdrFuni - - -){ -_Ud - = fn; - } -} - -84  - $Body -( -ArBodyHdrFuni - - -){ -_Body - = fn; - } -} - -86 -vtu - -bo - - $nHd -( -AsyncWebSvReque - * -que - -ovride - -f -{ - -88 if(! -_Reque -) - -89  -l -; - -91 if(!( -_mhod - & -que --> - `mhod -())) - -92  -l -; - -94 #ifde -ASYNCWEBSERVER_REGEX - - -95 i( -_isRegex -) { - -96 -d -:: -gex - - `n -( -_uri -. - `c_r -()); - -97 -d -:: -smch - -mches -; - -98 -d -:: -rg - - `s -( -que --> - `u -(). - `c_r -()); - -99 if( -d -:: - `gex_ch -( -s -, -mches -, -n -)) { - -100  -size_t - -i - = 1; i < -mches -. - `size -(); ++i) { - -101 -que --> - `_addPhPam -( -mches -[ -i -]. - `r -(). - `c_r -()); - -104  -l -; - -108 i( -_uri -. - `ngth -(&& _uri. - `dsWh -("*")) { - -109 -Sg - -uriTeme - = - `Sg -( -_uri -); - -110 -uriTeme - = uriTeme. - `subrg -(0, uriTeme. - `ngth -() - 1); - -111 i(! -que --> - `u -(). - `tsWh -( -uriTeme -)) - -112  -l -; - -114 if( -_uri -. - `ngth -(&& (_ur! -que --> - `u -(&& !que->u(). - `tsWh -(_uri+"/"))) - -115  -l -; - -117 -que --> - `addIegHd -("ANY"); - -118  -ue -; - -119 - } -} - -121 -vtu -  - $hdReque -( -AsyncWebSvReque - * -que - -ovride - -f - { - -122 if( -_Reque -) - -123 - `_Reque -( -que -); - -125 -que --> - `nd -(500); - -126 - } -} - -127 -vtu -  - $hdUd -( -AsyncWebSvReque - * -que -, cڡ -Sg -& -fame -, -size_t - -dex -, -ut8_t - * -da -, size_ -n -, -bo - -f - -ovride - final { - -128 if( -_Ud -) - -129 - `_Ud -( -que -, -fame -, -dex -, -da -, -n -, -f -); - -130 - } -} - -131 -vtu -  - $hdBody -( -AsyncWebSvReque - * -que -, -ut8_t - * -da -, -size_t - -n -, size_ -dex -, size_ -tٮ - -ovride - -f - { - -132 if( -_Body -) - -133 - `_Body -( -que -, -da -, -n -, -dex -, -tٮ -); - -134 - } -} - -135 -vtu - -bo - - $isRequeHdrTrivl -( -ovride - -f - { -_Reque - ? -l - : -ue -; - } -} - - @lib/ESPAsyncWebServer/WebHandlers.cpp - -21  - ~"ESPAsyncWebSv.h -" - -22  - ~"WebHdrIm.h -" - -24 - gAsyncSticWebHdr -:: - $AsyncSticWebHdr -(cڡ * -uri -, -FS -& -fs -, cڡ * -th -, cڡ * -che_cڌ -) - -25 : - `_fs -( -fs -), - `_uri -( -uri -), - `_th -( -th -), - `_deu_fe -( - `F -("dex.htm")), - `_che_cڌ -( -che_cڌ -), - `_ϡ_modifd -(), - $_back -( -nuαr -) - -28 i( -_uri -. - `ngth -(=0 || _uri[0] !'/'_ur - `Sg -('/') + _uri; - -29 i( -_th -. - `ngth -(=0 || _th[0] !'/'_th = - `Sg -('/') + _path; - -33 -_isD - = -_th -[_th. - `ngth -()-1] == '/'; - -37 i( -_uri -[_uri. - `ngth -()-1] ='/'_ur_uri. - `subrg -(0, _uri.length()-1); - -38 i( -_th -[_th. - `ngth -()-1] ='/'_th = _th. - `subrg -(0, _path.length()-1); - -41 -_gzF - = -l -; - -42 -_gzSts - = 0xF8; - -43 - } -} - -45 - gAsyncSticWebHdr -& AsyncSticWebHdr:: - $tIsD -( -bo - -isD -){ - -46 -_isD - = -isD -; - -47  * -this -; - -48 - } -} - -50 - gAsyncSticWebHdr -& AsyncSticWebHdr:: - $tDeuFe -(cڡ * -fame -){ - -51 -_deu_fe - = - `Sg -( -fame -); - -52  * -this -; - -53 - } -} - -55 - gAsyncSticWebHdr -& AsyncSticWebHdr:: - $tCacheCڌ -(cڡ * -che_cڌ -){ - -56 -_che_cڌ - = - `Sg -( -che_cڌ -); - -57  * -this -; - -58 - } -} - -60 - gAsyncSticWebHdr -& AsyncSticWebHdr:: - $tLaModifd -(cڡ * -ϡ_modifd -){ - -61 -_ϡ_modifd - = - `Sg -( -ϡ_modifd -); - -62  * -this -; - -63 - } -} - -65 - gAsyncSticWebHdr -& AsyncSticWebHdr:: - $tLaModifd -( -tm -* -ϡ_modifd -){ - -66 aut -fmP - = - `PSTR -("%a, %d %b %Y %H:%M:%S %Z"); - -67  -fm -[ - `_P -( -fmP -) + 1]; - -68 - `ry_P -( -fm -, -fmP -); - -70  -su -[30]; - -71 - `rime -( -su -, esu), -fm -, -ϡ_modifd -); - -72  - `tLaModifd -((cڡ *) -su -); - -73 - } -} - -75 #ifde -ESP8266 - - -76 - gAsyncSticWebHdr -& AsyncSticWebHdr:: - $tLaModifd -( -time_t - -ϡ_modifd -){ - -77  - `tLaModifd -(( -tm - *) - `gmtime -(& -ϡ_modifd -)); - -78 - } -} - -80 - gAsyncSticWebHdr -& AsyncSticWebHdr:: - $tLaModifd -(){ - -81 -time_t - -ϡ_modifd -; - -82 if( - `time -(& -ϡ_modifd -) == 0) - -83  * -this -; - -84  - `tLaModifd -( -ϡ_modifd -); - -85 - } -} - -87 -bo - - gAsyncSticWebHdr -:: - $nHd -( -AsyncWebSvReque - * -que -){ - -88 if( -que --> - `mhod -(! -HTTP_GET - - -89 || ! -que --> - `u -(). - `tsWh -( -_uri -) - -90 || ! -que --> - `isExedRequeedCnTy -( -RCT_DEFAULT -, -RCT_HTTP -) - -92  -l -; - -94 i( - `_gFe -( -que -)) { - -96 i( -_ϡ_modifd -. - `ngth -()) - -97 -que --> - `addIegHd -( - `F -("If-Modified-Since")); - -99 if( -_che_cڌ -. - `ngth -()) - -100 -que --> - `addIegHd -( - `F -("If-None-Match")); - -102 - `DEBUGF -("[AsyncStaticWebHandler::canHandle] TRUE\n"); - -103  -ue -; - -106  -l -; - -107 - } -} - -109 -bo - - gAsyncSticWebHdr -:: - $_gFe -( -AsyncWebSvReque - * -que -) - -112 -Sg - -th - = -que --> - `u -(). - `subrg -( -_uri -. - `ngth -()); - -115 -bo - -nSkFeCheck - = ( -_isD - && -th -. - `ngth -() == 0) || (path.length() &&ath[path.length()-1] == '/'); - -117 -th - = -_th - +ath; - -120 i(! -nSkFeCheck - && - `_feExis -( -que -, -th -)) - -121  -ue -; - -124 i( -_deu_fe -. - `ngth -() == 0) - -125  -l -; - -128 i( -th -. - `ngth -() == 0 ||ath[path.length()-1] != '/') - -129 -th - + - `Sg -('/'); - -130 -th - + -_deu_fe -; - -132  - `_feExis -( -que -, -th -); - -133 - } -} - -135 #ifde -ESP32 - - -136  - #FILE_IS_REAL -( -f -(= -ue - && !f. - `isDey -()) - - ) - -138  - #FILE_IS_REAL -( -f -(= -ue -) - - ) - -141 -bo - - gAsyncSticWebHdr -:: - $_feExis -( -AsyncWebSvReque - * -que -, cڡ -Sg -& -th -) - -143 -bo - -feFound - = -l -; - -144 -bo - -gzFound - = -l -; - -146 -Sg - -gz - = -th - + - `F -(".gz"); - -148 i( -_gzF -) { - -149 -que --> -_mpFe - = -_fs -. - `ݒ -( -gz -, -fs -:: -FeOnMode -:: -ad -); - -150 -gzFound - = - `FILE_IS_REAL -( -que --> -_mpFe -); - -151 i(! -gzFound -){ - -152 -que --> -_mpFe - = -_fs -. - `ݒ -( -th -, -fs -:: -FeOnMode -:: -ad -); - -153 -feFound - = - `FILE_IS_REAL -( -que --> -_mpFe -); - -156 -que --> -_mpFe - = -_fs -. - `ݒ -( -th -, -fs -:: -FeOnMode -:: -ad -); - -157 -feFound - = - `FILE_IS_REAL -( -que --> -_mpFe -); - -158 i(! -feFound -){ - -159 -que --> -_mpFe - = -_fs -. - `ݒ -( -gz -, -fs -:: -FeOnMode -:: -ad -); - -160 -gzFound - = - `FILE_IS_REAL -( -que --> -_mpFe -); - -164 -bo - -found - = -feFound - || -gzFound -; - -166 i( -found -) { - -168 -size_t - -thL - = -th -. - `ngth -(); - -169 * -_mpPh - = (*) - `mloc -( -thL -+1); - -170 - `tf_P -( -_mpPh -, -thL -+1, - `PSTR -("%s"), -th -. - `c_r -()); - -171 -que --> -_mpObje - = (*) -_mpPh -; - -174 -_gzSts - = (_gzSt<< 1+ ( -gzFound - ? 1 : 0); - -175 i( -_gzSts - =0x00 -_gzF - = -l -; - -176 i( -_gzSts - =0xFF -_gzF - = -ue -; - -177 -_gzF - = - `_couBs -( -_gzSts -) > 4; - -180  -found -; - -181 - } -} - -183 -ut8_t - - gAsyncSticWebHdr -:: - $_couBs -(cڡ -ut8_t - -vue -) const - -185 -ut8_t - -w - = -vue -; - -186 -ut8_t - -n -; - -187  -n -=0; -w -!=0;++) w&=w-1; - -188  -n -; - -189 - } -} - -191  - gAsyncSticWebHdr -:: - $hdReque -( -AsyncWebSvReque - * -que -) - -194 -Sg - -fame - = - `Sg -((*) -que --> -_mpObje -); - -195 - ` -( -que --> -_mpObje -); - -196 -que --> -_mpObje - = -NULL -; - -197 if(( -_uame -. - `ngth -(&& -_sswd -.ngth()&& ! -que --> - `authti -(_uame. - `c_r -(), _password.c_str())) - -198  -que --> - `queAuthtiti -(); - -200 i( -que --> -_mpFe - = -ue -) { - -201 -Sg - -ag - = - `Sg -( -que --> -_mpFe -. - `size -()); - -202 i( -_ϡ_modifd -. - `ngth -(&& _ϡ_modifd = -que --> - `hd -( - `F -("If-Modified-Since"))) { - -203 -que --> -_mpFe -. - `o -(); - -204 -que --> - `nd -(304); - -205 } i( -_che_cڌ -. - `ngth -(&& -que --> - `hasHd -( - `F -("If-Ne-Mch")&&eque-> - `hd -(F("If-Ne-Mch")). - `equs -( -ag -)) { - -206 -que --> -_mpFe -. - `o -(); - -207 -AsyncWebSvReڣ - * -ڣ - = -w - - `AsyncBasicReڣ -(304); - -208 -ڣ --> - `addHd -( - `F -("Cache-Cڌ"), -_che_cڌ -); - -209 -ڣ --> - `addHd -( - `F -("ETag"), -ag -); - -210 -que --> - `nd -( -ڣ -); - -212 -AsyncWebSvReڣ - * -ڣ - = -w - - `AsyncFeReڣ -( -que --> -_mpFe -, -fame -, - `Sg -(), -l -, -_back -); - -213 i( -_ϡ_modifd -. - `ngth -()) - -214 -ڣ --> - `addHd -( - `F -("La-Modifd"), -_ϡ_modifd -); - -215 i( -_che_cڌ -. - `ngth -()){ - -216 -ڣ --> - `addHd -( - `F -("Cache-Cڌ"), -_che_cڌ -); - -217 -ڣ --> - `addHd -( - `F -("ETag"), -ag -); - -219 -que --> - `nd -( -ڣ -); - -222 -que --> - `nd -(404); - -224 - } -} - - @lib/ESPAsyncWebServer/WebRequest.cpp - -21  - ~"ESPAsyncWebSv.h -" - -22  - ~"WebReڣIm.h -" - -23  - ~"WebAuthtiti.h -" - -25 #ide -ESP8266 - - -26  - #os_ - - - - - ) - -29  - #__is_m_ch -( -c -((c&& ((c!'{'&& ((c!'['&& ((c!'&'&& ((c!'=')) - - ) - -31 um { - mPARSE_REQ_START -, - mPARSE_REQ_HEADERS -, - mPARSE_REQ_BODY -, - mPARSE_REQ_END -, - mPARSE_REQ_FAIL - }; - -33 - gAsyncWebSvReque -:: - $AsyncWebSvReque -( -AsyncWebSv -* -s -, -AsyncCl -* -c -) - -34 : - `_ -( -c -) - -35 , - `_rv -( -s -) - -36 , - `_hdr -( -NULL -) - -37 , - `_ڣ -( -NULL -) - -38 , - `_mp -() - -39 , - `_rS -(0) - -40 , - `_vsi -(0) - -41 , - `_mhod -( -HTTP_ANY -) - -42 , - `_u -() - -43 , - `_ho -() - -44 , - `_cڋTy -() - -45 , - `_boundy -() - -46 , - `_authizi -() - -47 , - `_qcy -( -RCT_HTTP -) - -48 , - `_isDige -( -l -) - -49 , - `_isMuɝt -( -l -) - -50 , - `_isPϚPo -( -l -) - -51 , - `_exgCtue -( -l -) - -52 , - `_cڋLgth -(0) - -53 , - `_rdLgth -(0) - -54 , - `_hds -( -LkedLi -< -AsyncWebHd - *>([](AsyncWebHd * -h -){ -de - h; - } -})) - -55 , -_ms -( -LkedLi -< -AsyncWebPam - *>([](AsyncWebPam * -p -){ -de -; })) - -56 , -_thPams -( -LkedLi -< -Sg - *>([](Sg * -p -){ -de -; })) - -57 , -_muiPS -(0) - -58 , -_boundyPosi -(0) - -59 , -_emSIndex -(0) - -60 , -_emSize -(0) - -61 , -_emName -() - -62 , -_emFame -() - -63 , -_emTy -() - -64 , -_emVue -() - -65 , -_emBufr -(0) - -66 , -_emBufrIndex -(0) - -67 , -_emIsFe -( -l -) - -68 , - $_mpObje -( -NULL -) - -70 -c --> - `E -([](* -r -, -AsyncCl -* c, -t8_t - -r -){ ()c; -AsyncWebSvReque - * -q - = (AsyncWebSvReque*;eq-> - `_E -Ӽ); }, -this -); - -71 -c --> - `Ack -([](* -r -, -AsyncCl -* c, -size_t - -n -, -ut32_t - -time -){ ()c; -AsyncWebSvReque - * -q - = (AsyncWebSvReque*;eq-> - `_Ack -֒,ime); }, -this -); - -72 -c --> - `Disc -([](* -r -, -AsyncCl -* c){ -AsyncWebSvReque - * -q - = (AsyncWebSvReque*;eq-> - `_Disc -(); -de - c; }, -this -); - -73 -c --> - `Timeout -([](* -r -, -AsyncCl -* c, -ut32_t - -time -){ ()c; -AsyncWebSvReque - * -q - = (AsyncWebSvReque*;eq-> - `_Timeout -ime); }, -this -); - -74 -c --> - `Da -([](* -r -, -AsyncCl -* c, * -buf -, -size_t - -n -){ ()c; -AsyncWebSvReque - * -q - = (AsyncWebSvReque*;eq-> - `_Da -(buf,); }, -this -); - -75 -c --> - `Pl -([](* -r -, -AsyncCl -* c){ ()c; -AsyncWebSvReque - * -q - = ( AsyncWebSvReque*;eq-> - `_Pl -(); }, -this -); - -76 - } -} - -78 - gAsyncWebSvReque -::~ - $AsyncWebSvReque -(){ - -79 -_hds -. - ` -(); - -81 -_ms -. - ` -(); - -82 -_thPams -. - ` -(); - -84 -_gHds -. - ` -(); - -86 if( -_ڣ - ! -NULL -){ - -87 -de - -_ڣ -; - -90 if( -_mpObje - ! -NULL -){ - -91 - ` -( -_mpObje -); - -94 if( -_mpFe -){ - -95 -_mpFe -. - `o -(); - -97 - } -} - -99  - gAsyncWebSvReque -:: - $_Da -(* -buf -, -size_t - -n -){ - -100 -size_t - -i - = 0; - -101  -ue -) { - -103 if( -_rS - < -PARSE_REQ_BODY -){ - -105 * -r - = (*) -buf -; - -106  -i - = 0; i < -n -; i++) { - -107 i( -r -[ -i -] == '\n') { - -111 i( -i - = -n -) { - -112  -ch - = -r -[ -n --1]; - -113 -r -[ -n --1] = 0; - -114 -_mp -. - `rve -(_mp. - `ngth -()+ -n -); - -115 -_mp -. - `ct -( -r -); - -116 -_mp -. - `ct -( -ch -); - -118 -r -[ -i -] = 0; - -119 -_mp -. - `ct -( -r -); - -120 -_mp -. - `im -(); - -121 - `_rLe -(); - -122 i(++ -i - < -n -) { - -124 -buf - = -r -+ -i -; - -125 -n -- -i -; - -129 } if( -_rS - = -PARSE_REQ_BODY -){ - -132 cڡ -bo - -edP - = -_hdr - && !_hdr-> - `isRequeHdrTrivl -(); - -133 if( -_isMuɝt -){ - -134 if( -edP -){ - -135 -size_t - -i -; - -136  -i -=0; i< -n -; i++){ - -137 - `_rMuɝtPoBy -((( -ut8_t -*) -buf -)[ -i -], i = -n - - 1); - -138 -_rdLgth -++; - -141 -_rdLgth - + -n -; - -143 if( -_rdLgth - == 0){ - -144 if( -_cڋTy -. - `tsWh -( - `F -("application/x-www-form-urlencoded"))){ - -145 -_isPϚPo - = -ue -; - -146 } if( -_cڋTy - = - `F -("xt/a"&& - `__is_m_ch -(((*) -buf -)[0])){ - -147 -size_t - -i - = 0; - -148  -i -< -n - && - `__is_m_ch -(((*) -buf -)[i++])); - -149 if( -i - < -n - && ((*) -buf -)[i-1] == '='){ - -150 -_isPϚPo - = -ue -; - -154 if(! -_isPϚPo -) { - -156 if( -_hdr -_hdr-> - `hdBody -( -this -, ( -ut8_t -*) -buf -, -n -, -_rdLgth -, -_cڋLgth -); - -157 -_rdLgth - + -n -; - -158 } if( -edP -) { - -159 -size_t - -i -; - -160  -i -=0; i< -n -; i++){ - -161 -_rdLgth -++; - -162 - `_rPϚPoCh -((( -ut8_t -*) -buf -)[ -i -]); - -165 -_rdLgth - + -n -; - -168 if( -_rdLgth - = -_cڋLgth -){ - -169 -_rS - = -PARSE_REQ_END -; - -171 if( -_hdr -_hdr-> - `hdReque -( -this -); - -172 - `nd -(501); - -177 - } -} - -179  - gAsyncWebSvReque -:: - $_moveNIegHds -(){ - -180 i( -_gHds -. - `cڏsIgneCa -( - `F -("ANY"))) ; - -181 cڡuto& -hd -: -_hds -){ - -182 if(! -_gHds -. - `cڏsIgneCa -( -hd --> - `me -(). - `c_r -())){ - -183 -_hds -. - `move -( -hd -); - -186 - } -} - -188  - gAsyncWebSvReque -:: - $_Pl -(){ - -190 if( -_ڣ - ! -NULL - && -_ - !NULL && _-> - `nSd -(&& !_ڣ-> - `_fished -()){ - -191 -_ڣ --> - `_ack -( -this -, 0, 0); - -193 - } -} - -195  - gAsyncWebSvReque -:: - $_Ack -( -size_t - -n -, -ut32_t - -time -){ - -197 if( -_ڣ - ! -NULL -){ - -198 if(! -_ڣ --> - `_fished -()){ - -199 -_ڣ --> - `_ack -( -this -, -n -, -time -); - -201 -AsyncWebSvReڣ -* -r - = -_ڣ -; - -202 -_ڣ - = -NULL -; - -203 -de - -r -; - -206 - } -} - -208  - gAsyncWebSvReque -:: - $_E -( -t8_t - -r -){ - -209 () -r -; - -210 - } -} - -212  - gAsyncWebSvReque -:: - $_Timeout -( -ut32_t - -time -){ - -213 () -time -; - -215 -_ --> - `o -(); - -216 - } -} - -218  - gAsyncWebSvReque -:: - $Disc - ( -ArDiscHdr - - -){ - -219 -_Disc -= - -; - -220 - } -} - -222  - gAsyncWebSvReque -:: - $_Disc -(){ - -224 if( -_Disc -) { - -225 - `_Disc -(); - -227 -_rv --> - `_hdDisc -( -this -); - -228 - } -} - -230  - gAsyncWebSvReque -:: - $_addPam -( -AsyncWebPam - * -p -){ - -231 -_ms -. - `add -( -p -); - -232 - } -} - -234  - gAsyncWebSvReque -:: - $_addPhPam -(cڡ * -p -){ - -235 -_thPams -. - `add -( -w - - `Sg -( -p -)); - -236 - } -} - -238  - gAsyncWebSvReque -:: - $_addGPams -(cڡ -Sg -& -ms -){ - -239 -size_t - -t - = 0; - -240  -t - < -ms -. - `ngth -()){ - -241  -d - = -ms -. - `dexOf -('&', -t -); - -242 i( -d - < 0d = -ms -. - `ngth -(); - -243  -equ - = -ms -. - `dexOf -('=', -t -); - -244 i( -equ - < 0 ||qu > -d -)qual =nd; - -245 -Sg - -me - = -ms -. - `subrg -( -t -, -equ -); - -246 -Sg - -vue - = -equ - + 1 < -d - ? -ms -. - `subrg -qu + 1,nd: - `Sg -(); - -247 - `_addPam -( -w - - `AsyncWebPam -( - `uDecode -( -me -), uDecode( -vue -))); - -248 -t - = -d - + 1; - -250 - } -} - -252 -bo - - gAsyncWebSvReque -:: - $_rReqHd -(){ - -254  -dex - = -_mp -. - `dexOf -(' '); - -255 -Sg - -m - = -_mp -. - `subrg -(0, -dex -); - -256 -dex - = -_mp -. - `dexOf -(' ', index+1); - -257 -Sg - -u - = -_mp -. - `subrg -( -m -. - `ngth -()+1, -dex -); - -258 -_mp - = _mp. - `subrg -( -dex -+1); - -260 if( -m - = - `F -("GET")){ - -261 -_mhod - = -HTTP_GET -; - -262 } if( -m - = - `F -("POST")){ - -263 -_mhod - = -HTTP_POST -; - -264 } if( -m - = - `F -("DELETE")){ - -265 -_mhod - = -HTTP_DELETE -; - -266 } if( -m - = - `F -("PUT")){ - -267 -_mhod - = -HTTP_PUT -; - -268 } if( -m - = - `F -("PATCH")){ - -269 -_mhod - = -HTTP_PATCH -; - -270 } if( -m - = - `F -("HEAD")){ - -271 -_mhod - = -HTTP_HEAD -; - -272 } if( -m - = - `F -("OPTIONS")){ - -273 -_mhod - = -HTTP_OPTIONS -; - -276 -Sg - -g -; - -277 -dex - = -u -. - `dexOf -('?'); - -278 if( -dex - > 0){ - -279 -g - = -u -. - `subrg -( -dex - +1); - -280 -u - = u. - `subrg -(0, -dex -); - -282 -_u - = - `uDecode -( -u -); - -283 - `_addGPams -( -g -); - -285 if(! -_mp -. - `tsWh -( - `F -("HTTP/1.0"))) - -286 -_vsi - = 1; - -288 -_mp - = - `Sg -(); - -289  -ue -; - -290 - } -} - -292 -bo - - $rCڏs -(cڡ -Sg - & -c -, cڡ Sg & -fd -, -bo - -md - = -ue -) { - -293  -pos -=0, -i -=0; - -294 cڡ  - - = -c -. - `ngth -(); - -295 cڡ  - - = -fd -. - `ngth -(); - -297 i( - - < - - -l -; - -298  -pos - <( - - - - -)) { - -299  -i -=0; i < - -; i++) { - -300 i( -md -) { - -301 i( -c -[ -pos -+ -i -] ! -fd -[i] - - + 1; - -303 i( - `tow -( -c -[ -pos -+ -i -]!tow( -fd -[i])) { - -304 -i - = - - + 1; - -307 i( -i - = - - -ue -; - -308 -pos -++; - -310  -l -; - -311 - } -} - -313 -bo - - gAsyncWebSvReque -:: - $_rReqHd -(){ - -314  -dex - = -_mp -. - `dexOf -(':'); - -315 if( -dex -){ - -316 -Sg - -me - = -_mp -. - `subrg -(0, -dex -); - -317 -Sg - -vue - = -_mp -. - `subrg -( -dex - + 2); - -318 if( -me -. - `equsIgneCa -("Host")){ - -319 -_ho - = -vue -; - -320 } if( -me -. - `equsIgneCa -( - `F -("Content-Type"))){ - -321 -_cڋTy - = -vue -. - `subrg -(0, vue. - `dexOf -(';')); - -322 i( -vue -. - `tsWh -( - `F -("multipart/"))){ - -323 -_boundy - = -vue -. - `subrg -(vue. - `dexOf -('=')+1); - -324 -_boundy -. - `a -( - `Sg -('"'), String()); - -325 -_isMuɝt - = -ue -; - -327 } if( -me -. - `equsIgneCa -( - `F -("Content-Length"))){ - -328 -_cڋLgth - = - `oi -( -vue -. - `c_r -()); - -329 } if( -me -. - `equsIgneCa -( - `F -("Ex")&& -vue - == F("100-continue")){ - -330 -_exgCtue - = -ue -; - -331 } if( -me -. - `equsIgneCa -( - `F -("Authorization"))){ - -332 if( -vue -. - `ngth -(> 5 && vue. - `subrg -(0,5). - `equsIgneCa -( - `F -("Basic"))){ - -333 -_authizi - = -vue -. - `subrg -(6); - -334 } if( -vue -. - `ngth -(> 6 && vue. - `subrg -(0,6). - `equsIgneCa -( - `F -("Digest"))){ - -335 -_isDige - = -ue -; - -336 -_authizi - = -vue -. - `subrg -(7); - -339 if( -me -. - `equsIgneCa -( - `F -("Upgde")&& -vue -.equalsIgnoreCase(F("websocket"))){ - -341 -_qcy - = -RCT_WS -; - -343 if( -me -. - `equsIgneCa -( - `F -("Ac")&& - `rCڏs -( -vue -, F("xt/evt-am"), -l -)){ - -345 -_qcy - = -RCT_EVENT -; - -349 -_hds -. - `add -( -w - - `AsyncWebHd -( -me -, -vue -)); - -351 -_mp - = - `Sg -(); - -352  -ue -; - -353 - } -} - -355  - gAsyncWebSvReque -:: - $_rPϚPoCh -( -ut8_t - -da -){ - -356 if( -da - && ()data != '&') - -357 -_mp - +() -da -; - -358 if(! -da - || ()d='&' || -_rdLgth - = -_cڋLgth -){ - -359 -Sg - -me - = - `F -("body"); - -360 -Sg - -vue - = -_mp -; - -361 if(! -_mp -. - `tsWh -( - `Sg -('{')&& !_mp.tsWh(Sg('[')&& _mp. - `dexOf -('=') > 0){ - -362 -me - = -_mp -. - `subrg -(0, _mp. - `dexOf -('=')); - -363 -vue - = -_mp -. - `subrg -(_mp. - `dexOf -('=') + 1); - -365 - `_addPam -( -w - - `AsyncWebPam -( - `uDecode -( -me -), uDecode( -vue -), -ue -)); - -366 -_mp - = - `Sg -(); - -368 - } -} - -370  - gAsyncWebSvReque -:: - $_hdUdBy -( -ut8_t - -da -, -bo - -ϡ -){ - -371 -_emBufr -[ -_emBufrIndex -++] = -da -; - -373 if( -ϡ - || -_emBufrIndex - == 1460){ - -375 if( -_hdr -) - -376 -_hdr --> - `hdUd -( -this -, -_emFame -, -_emSize - - -_emBufrIndex -, -_emBufr -, _emBufrIndex, -l -); - -377 -_emBufrIndex - = 0; - -379 - } -} - -382 - mEXPECT_BOUNDARY -, - -383 - mPARSE_HEADERS -, - -384 - mWAIT_FOR_RETURN1 -, - -385 - mEXPECT_FEED1 -, - -386 - mEXPECT_DASH1 -, - -387 - mEXPECT_DASH2 -, - -388 - mBOUNDARY_OR_DATA -, - -389 - mDASH3_OR_RETURN2 -, - -390 - mEXPECT_FEED2 -, - -391 - mPARSING_FINISHED -, - -392 - mPARSE_ERROR - - -395  - gAsyncWebSvReque -:: - $_rMuɝtPoBy -( -ut8_t - -da -, -bo - -ϡ -){ - -396  - #emWreBy -( -b -d{ -_emSize -++; if( -_emIsFe - - `_hdUdBy -(b, -ϡ -); -_emVue -+=()(b); } 0) - - ) - -398 if(! -_rdLgth -){ - -399 -_muiPS - = -EXPECT_BOUNDARY -; - -400 -_mp - = - `Sg -(); - -401 -_emName - = - `Sg -(); - -402 -_emFame - = - `Sg -(); - -403 -_emTy - = - `Sg -(); - -406 if( -_muiPS - = -WAIT_FOR_RETURN1 -){ - -407 if( -da - != '\r'){ - -408 - `emWreBy -( -da -); - -410 -_muiPS - = -EXPECT_FEED1 -; - -412 } if( -_muiPS - = -EXPECT_BOUNDARY -){ - -413 if( -_rdLgth - < 2 && -da - != '-'){ - -414 -_muiPS - = -PARSE_ERROR -; - -416 } if( -_rdLgth - - 2 < -_boundy -. - `ngth -(&& _boundy. - `c_r -()[_rdLgth - 2] ! -da -){ - -417 -_muiPS - = -PARSE_ERROR -; - -419 } if( -_rdLgth - - 2 = -_boundy -. - `ngth -(&& -da - != '\r'){ - -420 -_muiPS - = -PARSE_ERROR -; - -422 } if( -_rdLgth - - 3 = -_boundy -. - `ngth -()){ - -423 if( -da - != '\n'){ - -424 -_muiPS - = -PARSE_ERROR -; - -427 -_muiPS - = -PARSE_HEADERS -; - -428 -_emIsFe - = -l -; - -430 } if( -_muiPS - = -PARSE_HEADERS -){ - -431 if(() -da - != '\r' && ()data != '\n') - -432 -_mp - +() -da -; - -433 if(() -da - == '\n'){ - -434 if( -_mp -. - `ngth -()){ - -435 if( -_mp -. - `ngth -(> 12 && _mp. - `subrg -(0, 12). - `equsIgneCa -( - `F -("Content-Type"))){ - -436 -_emTy - = -_mp -. - `subrg -(14); - -437 -_emIsFe - = -ue -; - -438 } if( -_mp -. - `ngth -(> 19 && _mp. - `subrg -(0, 19). - `equsIgneCa -( - `F -("Content-Disposition"))){ - -439 -_mp - = _mp. - `subrg -(_mp. - `dexOf -(';') + 2); - -440  -_mp -. - `dexOf -(';') > 0){ - -441 -Sg - -me - = -_mp -. - `subrg -(0, _mp. - `dexOf -('=')); - -442 -Sg - -meV - = -_mp -. - `subrg -(_mp. - `dexOf -('=') + 2, _temp.indexOf(';') - 1); - -443 if( -me - = - `F -("name")){ - -444 -_emName - = -meV -; - -445 } if( -me - = - `F -("filename")){ - -446 -_emFame - = -meV -; - -447 -_emIsFe - = -ue -; - -449 -_mp - = _mp. - `subrg -(_mp. - `dexOf -(';') + 2); - -451 -Sg - -me - = -_mp -. - `subrg -(0, _mp. - `dexOf -('=')); - -452 -Sg - -meV - = -_mp -. - `subrg -(_mp. - `dexOf -('='+ 2, _mp. - `ngth -() - 1); - -453 if( -me - = - `F -("name")){ - -454 -_emName - = -meV -; - -455 } if( -me - = - `F -("filename")){ - -456 -_emFame - = -meV -; - -457 -_emIsFe - = -ue -; - -460 -_mp - = - `Sg -(); - -462 -_muiPS - = -WAIT_FOR_RETURN1 -; - -464 -_emSize - = 0; - -465 -_emSIndex - = -_rdLgth -; - -466 -_emVue - = - `Sg -(); - -467 if( -_emIsFe -){ - -468 if( -_emBufr -) - -469 - ` -( -_emBufr -); - -470 -_emBufr - = ( -ut8_t -*) - `mloc -(1460); - -471 if( -_emBufr - = -NULL -){ - -472 -_muiPS - = -PARSE_ERROR -; - -475 -_emBufrIndex - = 0; - -479 } if( -_muiPS - = -EXPECT_FEED1 -){ - -480 if( -da - != '\n'){ - -481 -_muiPS - = -WAIT_FOR_RETURN1 -; - -482 - `emWreBy -('\r'); - `_rMuɝtPoBy -( -da -, -ϡ -); - -484 -_muiPS - = -EXPECT_DASH1 -; - -486 } if( -_muiPS - = -EXPECT_DASH1 -){ - -487 if( -da - != '-'){ - -488 -_muiPS - = -WAIT_FOR_RETURN1 -; - -489 - `emWreBy -('\r'); imWreBy('\n'); - `_rMuɝtPoBy -( -da -, -ϡ -); - -491 -_muiPS - = -EXPECT_DASH2 -; - -493 } if( -_muiPS - = -EXPECT_DASH2 -){ - -494 if( -da - != '-'){ - -495 -_muiPS - = -WAIT_FOR_RETURN1 -; - -496 - `emWreBy -('\r'); imWreBy('\n'); imWreBy('-'); - `_rMuɝtPoBy -( -da -, -ϡ -); - -498 -_muiPS - = -BOUNDARY_OR_DATA -; - -499 -_boundyPosi - = 0; - -501 } if( -_muiPS - = -BOUNDARY_OR_DATA -){ - -502 if( -_boundyPosi - < -_boundy -. - `ngth -(&& _boundy. - `c_r -()[_boundyPosi] ! -da -){ - -503 -_muiPS - = -WAIT_FOR_RETURN1 -; - -504 - `emWreBy -('\r'); itemWriteByte('\n'); itemWriteByte('-'); itemWriteByte('-'); - -505 -ut8_t - -i -; - -506  -i -=0; i< -_boundyPosi -; i++) - -507 - `emWreBy -( -_boundy -. - `c_r -()[ -i -]); - -508 - `_rMuɝtPoBy -( -da -, -ϡ -); - -509 } if( -_boundyPosi - = -_boundy -. - `ngth -() - 1){ - -510 -_muiPS - = -DASH3_OR_RETURN2 -; - -511 if(! -_emIsFe -){ - -512 - `_addPam -( -w - - `AsyncWebPam -( -_emName -, -_emVue -, -ue -)); - -514 if( -_emSize -){ - -516 if( -_hdr -_hdr-> - `hdUd -( -this -, -_emFame -, -_emSize - - -_emBufrIndex -, -_emBufr -, _emBufrIndex, -ue -); - -517 -_emBufrIndex - = 0; - -518 - `_addPam -( -w - - `AsyncWebPam -( -_emName -, -_emFame -, -ue -,rue, -_emSize -)); - -520 - ` -( -_emBufr -); - -521 -_emBufr - = -NULL -; - -525 -_boundyPosi -++; - -527 } if( -_muiPS - = -DASH3_OR_RETURN2 -){ - -528 if( -da - ='-' && ( -_cڋLgth - - -_rdLgth - - 4) != 0){ - -530 -_cڋLgth - = -_rdLgth - + 4; - -532 if( -da - == '\r'){ - -533 -_muiPS - = -EXPECT_FEED2 -; - -534 } if( -da - ='-' && -_cڋLgth - =( -_rdLgth - + 4)){ - -535 -_muiPS - = -PARSING_FINISHED -; - -537 -_muiPS - = -WAIT_FOR_RETURN1 -; - -538 - `emWreBy -('\r'); itemWriteByte('\n'); itemWriteByte('-'); itemWriteByte('-'); - -539 -ut8_t - -i -; i=0; i< -_boundy -. - `ngth -(); i++ - `emWreBy -(_boundy. - `c_r -()[i]); - -540 - `_rMuɝtPoBy -( -da -, -ϡ -); - -542 } if( -_muiPS - = -EXPECT_FEED2 -){ - -543 if( -da - == '\n'){ - -544 -_muiPS - = -PARSE_HEADERS -; - -545 -_emIsFe - = -l -; - -547 -_muiPS - = -WAIT_FOR_RETURN1 -; - -548 - `emWreBy -('\r'); itemWriteByte('\n'); itemWriteByte('-'); itemWriteByte('-'); - -549 -ut8_t - -i -; i=0; i< -_boundy -. - `ngth -(); i++ - `emWreBy -(_boundy. - `c_r -()[i]); - -550 - `emWreBy -('\r'); - `_rMuɝtPoBy -( -da -, -ϡ -); - -553 - } -} - -555  - gAsyncWebSvReque -:: - $_rLe -(){ - -556 if( -_rS - = -PARSE_REQ_START -){ - -557 if(! -_mp -. - `ngth -()){ - -558 -_rS - = -PARSE_REQ_FAIL -; - -559 -_ --> - `o -(); - -561 - `_rReqHd -(); - -562 -_rS - = -PARSE_REQ_HEADERS -; - -567 if( -_rS - = -PARSE_REQ_HEADERS -){ - -568 if(! -_mp -. - `ngth -()){ - -570 -_rv --> - `_wreReque -( -this -); - -571 -_rv --> - `_chHdr -( -this -); - -572 - `_moveNIegHds -(); - -573 if( -_exgCtue -){ - -574 -Sg - -ڣ - = - `F -("HTTP/1.1 100 Continue\r\n\r\n"); - -575 -_ --> - `wre -( -ڣ -. - `c_r -(),eڣ. - `ngth -()); - -578 if( -_cڋLgth -){ - -579 -_rS - = -PARSE_REQ_BODY -; - -581 -_rS - = -PARSE_REQ_END -; - -582 if( -_hdr -_hdr-> - `hdReque -( -this -); - -583 - `nd -(501); - -585 } - `_rReqHd -(); - -587 - } -} - -589 -size_t - - gAsyncWebSvReque -:: - $hds -() const{ - -590  -_hds -. - `ngth -(); - -591 - } -} - -593 -bo - - gAsyncWebSvReque -:: - $hasHd -(cڡ -Sg -& -me -) const { - -594 cڡuto& -h -: -_hds -){ - -595 if( -h --> - `me -(). - `equsIgneCa -( -me -)){ - -596  -ue -; - -599  -l -; - -600 - } -} - -602 -bo - - gAsyncWebSvReque -:: - $hasHd -(cڡ -__FshSgHr - * -da -) const { - -603  - `hasHd -( - `Sg -( -da -)); - -604 - } -} - -606 -AsyncWebHd -* - gAsyncWebSvReque -:: - $gHd -(cڡ -Sg -& -me -) const { - -607 cڡuto& -h -: -_hds -){ - -608 if( -h --> - `me -(). - `equsIgneCa -( -me -)){ - -609  -h -; - -612  -nuαr -; - -613 - } -} - -615 -AsyncWebHd -* - gAsyncWebSvReque -:: - $gHd -(cڡ -__FshSgHr - * -da -) const { - -616  - `gHd -( - `Sg -( -da -)); - -617 - } -} - -619 -AsyncWebHd -* - gAsyncWebSvReque -:: - $gHd -( -size_t - -num -) const { - -620 aut -hd - = -_hds -. - `h -( -num -); - -621  -hd - ? *hd : -nuαr -; - -622 - } -} - -624 -size_t - - gAsyncWebSvReque -:: - $ms -() const { - -625  -_ms -. - `ngth -(); - -626 - } -} - -628 -bo - - gAsyncWebSvReque -:: - $hasPam -(cڡ -Sg -& -me -, -bo - -po -, bo -fe -) const { - -629 cڡuto& -p -: -_ms -){ - -630 if( -p --> - `me -(= -me - &&-> - `isPo -(= -po - &&-> - `isFe -(= -fe -){ - -631  -ue -; - -634  -l -; - -635 - } -} - -637 -bo - - gAsyncWebSvReque -:: - $hasPam -(cڡ -__FshSgHr - * -da -, -bo - -po -, bo -fe -) const { - -638  - `hasPam -( - `Sg -( -da -). - `c_r -(), -po -, -fe -); - -639 - } -} - -641 -AsyncWebPam -* - gAsyncWebSvReque -:: - $gPam -(cڡ -Sg -& -me -, -bo - -po -, bo -fe -) const { - -642 cڡuto& -p -: -_ms -){ - -643 if( -p --> - `me -(= -me - &&-> - `isPo -(= -po - &&-> - `isFe -(= -fe -){ - -644  -p -; - -647  -nuαr -; - -648 - } -} - -650 -AsyncWebPam -* - gAsyncWebSvReque -:: - $gPam -(cڡ -__FshSgHr - * -da -, -bo - -po -, bo -fe -) const { - -651  - `gPam -( - `Sg -( -da -). - `c_r -(), -po -, -fe -); - -652 - } -} - -654 -AsyncWebPam -* - gAsyncWebSvReque -:: - $gPam -( -size_t - -num -) const { - -655 aut -m - = -_ms -. - `h -( -num -); - -656  -m - ? *m : -nuαr -; - -657 - } -} - -659  - gAsyncWebSvReque -:: - $addIegHd -(cڡ -Sg -& -me -){ - -660 if(! -_gHds -. - `cڏsIgneCa -( -me -)) - -661 -_gHds -. - `add -( -me -); - -662 - } -} - -664  - gAsyncWebSvReque -:: - $nd -( -AsyncWebSvReڣ - * -ڣ -){ - -665 -_ڣ - = -ڣ -; - -666 if( -_ڣ - = -NULL -){ - -667 -_ --> - `o -( -ue -); - -668 - `_Disc -(); - -671 if(! -_ڣ --> - `_sourVid -()){ - -672 -de - -ڣ -; - -673 -_ڣ - = -NULL -; - -674 - `nd -(500); - -677 -_ --> - `tRxTimeout -(0); - -678 -_ڣ --> - `_d -( -this -); - -680 - } -} - -682 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begReڣ -( -code -, cڡ -Sg -& -cڋTy -, cڡ Sg& -cڋ -){ - -683  -w - - `AsyncBasicReڣ -( -code -, -cڋTy -, -cڋ -); - -684 - } -} - -686 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begReڣ -( -FS - & -fs -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -, -bo - -dowd -, -AwsTemePross - -back -){ - -687 if( -fs -. - `exis -( -th -|| (! -dowd - && fs.exisթh+ - `F -(".gz")))) - -688  -w - - `AsyncFeReڣ -( -fs -, -th -, -cڋTy -, -dowd -, -back -); - -689  -NULL -; - -690 - } -} - -692 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begReڣ -( -Fe - -cڋ -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -, -bo - -dowd -, -AwsTemePross - -back -){ - -693 if( -cڋ - = -ue -) - -694  -w - - `AsyncFeReڣ -( -cڋ -, -th -, -cڋTy -, -dowd -, -back -); - -695  -NULL -; - -696 - } -} - -698 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begReڣ -( -Sm - & -am -, cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsTemePross - -back -){ - -699  -w - - `AsyncSmReڣ -( -am -, -cڋTy -, -n -, -back -); - -700 - } -} - -702 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begReڣ -(cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -){ - -703  -w - - `AsyncClbackReڣ -( -cڋTy -, -n -, -back -, -meClback -); - -704 - } -} - -706 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begChunkedReڣ -(cڡ -Sg -& -cڋTy -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -){ - -707 if( -_vsi -) - -708  -w - - `AsyncChunkedReڣ -( -cڋTy -, -back -, -meClback -); - -709  -w - - `AsyncClbackReڣ -( -cڋTy -, 0, -back -, -meClback -); - -710 - } -} - -712 -AsyncReڣSm - * - gAsyncWebSvReque -:: - $begReڣSm -(cڡ -Sg -& -cڋTy -, -size_t - -bufrSize -){ - -713  -w - - `AsyncReڣSm -( -cڋTy -, -bufrSize -); - -714 - } -} - -716 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begReڣ_P -( -code -, cڡ -Sg -& -cڋTy -, cڡ -ut8_t - * -cڋ -, -size_t - -n -, -AwsTemePross - -back -){ - -717  -w - - `AsyncProgmemReڣ -( -code -, -cڋTy -, -cڋ -, -n -, -back -); - -718 - } -} - -720 -AsyncWebSvReڣ - * - gAsyncWebSvReque -:: - $begReڣ_P -( -code -, cڡ -Sg -& -cڋTy -, -PGM_P - -cڋ -, -AwsTemePross - -back -){ - -721  - `begReڣ_P -( -code -, -cڋTy -, (cڡ -ut8_t - *) -cڋ -, - `_P -(cڋ), -back -); - -722 - } -} - -724  - gAsyncWebSvReque -:: - $nd -( -code -, cڡ -Sg -& -cڋTy -, cڡ Sg& -cڋ -){ - -725 - `nd -( - `begReڣ -( -code -, -cڋTy -, -cڋ -)); - -726 - } -} - -728  - gAsyncWebSvReque -:: - $nd -( -FS - & -fs -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -, -bo - -dowd -, -AwsTemePross - -back -){ - -729 if( -fs -. - `exis -( -th -|| (! -dowd - && fs.exisթh+ - `F -(".gz")))){ - -730 - `nd -( - `begReڣ -( -fs -, -th -, -cڋTy -, -dowd -, -back -)); - -731 } - `nd -(404); - -732 - } -} - -734  - gAsyncWebSvReque -:: - $nd -( -Fe - -cڋ -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -, -bo - -dowd -, -AwsTemePross - -back -){ - -735 if( -cڋ - = -ue -){ - -736 - `nd -( - `begReڣ -( -cڋ -, -th -, -cڋTy -, -dowd -, -back -)); - -737 } - `nd -(404); - -738 - } -} - -740  - gAsyncWebSvReque -:: - $nd -( -Sm - & -am -, cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsTemePross - -back -){ - -741 - `nd -( - `begReڣ -( -am -, -cڋTy -, -n -, -back -)); - -742 - } -} - -744  - gAsyncWebSvReque -:: - $nd -(cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -){ - -745 - `nd -( - `begReڣ -( -cڋTy -, -n -, -back -, -meClback -)); - -746 - } -} - -748  - gAsyncWebSvReque -:: - $ndChunked -(cڡ -Sg -& -cڋTy -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -){ - -749 - `nd -( - `begChunkedReڣ -( -cڋTy -, -back -, -meClback -)); - -750 - } -} - -752  - gAsyncWebSvReque -:: - $nd_P -( -code -, cڡ -Sg -& -cڋTy -, cڡ -ut8_t - * -cڋ -, -size_t - -n -, -AwsTemePross - -back -){ - -753 - `nd -( - `begReڣ_P -( -code -, -cڋTy -, -cڋ -, -n -, -back -)); - -754 - } -} - -756  - gAsyncWebSvReque -:: - $nd_P -( -code -, cڡ -Sg -& -cڋTy -, -PGM_P - -cڋ -, -AwsTemePross - -back -){ - -757 - `nd -( - `begReڣ_P -( -code -, -cڋTy -, -cڋ -, -back -)); - -758 - } -} - -760  - gAsyncWebSvReque -:: - $de -(cڡ -Sg -& -u -){ - -761 -AsyncWebSvReڣ - * -ڣ - = - `begReڣ -(302); - -762 -ڣ --> - `addHd -( - `F -("Loti"), -u -); - -763 - `nd -( -ڣ -); - -764 - } -} - -766 -bo - - gAsyncWebSvReque -:: - $authti -(cڡ * -uame -, cڡ * -sswd -, cڡ * -m -, -bo - -sswdIsHash -){ - -767 if( -_authizi -. - `ngth -()){ - -768 if( -_isDige -) - -769  - `checkDigeAuthtiti -( -_authizi -. - `c_r -(), - `mhodToSg -(), -uame -, -sswd -, -m -, -sswdIsHash -, -NULL -, NULL, NULL); - -770 if(! -sswdIsHash -) - -771  - `checkBasicAuthtiti -( -_authizi -. - `c_r -(), -uame -, -sswd -); - -773  -_authizi -. - `equs -( -sswd -); - -775  -l -; - -776 - } -} - -778 -bo - - gAsyncWebSvReque -:: - $authti -(cڡ * -hash -){ - -779 if(! -_authizi -. - `ngth -(|| -hash - = -NULL -) - -780  -l -; - -782 if( -_isDige -){ - -783 -Sg - -hS - = - `Sg -( -hash -); - -784  -t - = -hS -. - `dexOf -(':'); - -785 if( -t - <= 0) - -786  -l -; - -787 -Sg - -uame - = -hS -. - `subrg -(0, -t -); - -788 -hS - = hS. - `subrg -( -t - + 1); - -789 -t - = -hS -. - `dexOf -(':'); - -790 if( -t - <= 0) - -791  -l -; - -792 -Sg - -m - = -hS -. - `subrg -(0, -t -); - -793 -hS - = hS. - `subrg -( -t - + 1); - -794  - `checkDigeAuthtiti -( -_authizi -. - `c_r -(), - `mhodToSg -(), -uame -.c_r(), -hS -.c_r(), -m -.c_r(), -ue -, -NULL -, NULL, NULL); - -797  ( -_authizi -. - `equs -( -hash -)); - -798 - } -} - -800  - gAsyncWebSvReque -:: - $queAuthtiti -(cڡ * -m -, -bo - -isDige -){ - -801 -AsyncWebSvReڣ - * -r - = - `begReڣ -(401); - -802 if(! -isDige - && -m - = -NULL -){ - -803 -r --> - `addHd -( - `F -("WWW-Authenticate"), F("Basicealm=\"Login Required\"")); - -804 } if(! -isDige -){ - -805 -Sg - -hd - = - `F -("Basicealm=\""); - -806 -hd -. - `ct -( -m -); - -807 -hd - += '"'; - -808 -r --> - `addHd -( - `F -("WWW-Authti"), -hd -); - -810 -Sg - -hd - = - `F -("Digest "); - -811 -hd -. - `ct -( - `queDigeAuthtiti -( -m -)); - -812 -r --> - `addHd -( - `F -("WWW-Authti"), -hd -); - -814 - `nd -( -r -); - -815 - } -} - -817 -bo - - gAsyncWebSvReque -:: - $hasArg -(cڡ * -me -) const { - -818 cڡuto& -g -: -_ms -){ - -819 if( -g --> - `me -(= -me -){ - -820  -ue -; - -823  -l -; - -824 - } -} - -826 -bo - - gAsyncWebSvReque -:: - $hasArg -(cڡ -__FshSgHr - * -da -) const { - -827  - `hasArg -( - `Sg -( -da -). - `c_r -()); - -828 - } -} - -831 cڡ - gSg -& - gAsyncWebSvReque -:: - $g -(cڡ -Sg -& -me -) const { - -832 cڡuto& -g -: -_ms -){ - -833 if( -g --> - `me -(= -me -){ - -834  -g --> - `vue -(); - -837  -emySg -; - -838 - } -} - -840 cڡ - gSg -& - gAsyncWebSvReque -:: - $g -(cڡ -__FshSgHr - * -da -) const { - -841  - `g -( - `Sg -( -da -). - `c_r -()); - -842 - } -} - -844 cڡ - gSg -& - gAsyncWebSvReque -:: - $g -( -size_t - -i -) const { - -845  - `gPam -( -i -)-> - `vue -(); - -846 - } -} - -848 cڡ - gSg -& - gAsyncWebSvReque -:: - $gName -( -size_t - -i -) const { - -849  - `gPam -( -i -)-> - `me -(); - -850 - } -} - -852 cڡ - gSg -& - gAsyncWebSvReque -:: - $thArg -( -size_t - -i -) const { - -853 aut -m - = -_thPams -. - `h -( -i -); - -854  -m - ? **m : -emySg -; - -855 - } -} - -857 cڡ - gSg -& - gAsyncWebSvReque -:: - $hd -(cڡ * -me -) const { - -858 -AsyncWebHd -* -h - = - `gHd -( - `Sg -( -me -)); - -859  -h - ? h-> - `vue -(: -emySg -; - -860 - } -} - -862 cڡ - gSg -& - gAsyncWebSvReque -:: - $hd -(cڡ -__FshSgHr - * -da -) const { - -863  - `hd -( - `Sg -( -da -). - `c_r -()); - -864 - } -}; - -867 cڡ - gSg -& - gAsyncWebSvReque -:: - $hd -( -size_t - -i -) const { - -868 -AsyncWebHd -* -h - = - `gHd -( -i -); - -869  -h - ? h-> - `vue -(: -emySg -; - -870 - } -} - -872 cڡ - gSg -& - gAsyncWebSvReque -:: - $hdName -( -size_t - -i -) const { - -873 -AsyncWebHd -* -h - = - `gHd -( -i -); - -874  -h - ? h-> - `me -(: -emySg -; - -875 - } -} - -877 -Sg - - gAsyncWebSvReque -:: - $uDecode -(cڡ -Sg -& -xt -) const { - -878  -mp -[] = "0x00"; - -879  -n - = -xt -. - `ngth -(); - -880  -i - = 0; - -881 -Sg - -decoded - = - `Sg -(); - -882 -decoded -. - `rve -( -n -); - -883  -i - < -n -){ - -884  -decodedCh -; - -885  -codedCh - = -xt -. - `chAt -( -i -++); - -886 i(( -codedCh - ='%'&& ( -i - + 1 < -n -)){ - -887 -mp -[2] = -xt -. - `chAt -( -i -++); - -888 -mp -[3] = -xt -. - `chAt -( -i -++); - -889 -decodedCh - = - ` -( -mp -, -NULL -, 16); - -890 } i( -codedCh - == '+') { - -891 -decodedCh - = ' '; - -893 -decodedCh - = -codedCh -; - -895 -decoded -. - `ct -( -decodedCh -); - -897  -decoded -; - -898 - } -} - -901 cڡ -__FshSgHr - * - gAsyncWebSvReque -:: - $mhodToSg -() const { - -902 if( -_mhod - = -HTTP_ANY - - `F -("ANY"); - -903 if( -_mhod - & -HTTP_GET - - `F -("GET"); - -904 if( -_mhod - & -HTTP_POST - - `F -("POST"); - -905 if( -_mhod - & -HTTP_DELETE - - `F -("DELETE"); - -906 if( -_mhod - & -HTTP_PUT - - `F -("PUT"); - -907 if( -_mhod - & -HTTP_PATCH - - `F -("PATCH"); - -908 if( -_mhod - & -HTTP_HEAD - - `F -("HEAD"); - -909 if( -_mhod - & -HTTP_OPTIONS - - `F -("OPTIONS"); - -910  - `F -("UNKNOWN"); - -911 - } -} - -913 cڡ -__FshSgHr - * - gAsyncWebSvReque -:: - $queedCnTyToSg -() const { - -914  -_qcy -) { - -915  -RCT_NOT_USED -:  - `F -("RCT_NOT_USED"); - -916  -RCT_DEFAULT -:  - `F -("RCT_DEFAULT"); - -917  -RCT_HTTP -:  - `F -("RCT_HTTP"); - -918  -RCT_WS -:  - `F -("RCT_WS"); - -919  -RCT_EVENT -:  - `F -("RCT_EVENT"); - -920 :  - `F -("ERROR"); - -922 - } -} - -924 -bo - - gAsyncWebSvReque -:: - $isExedRequeedCnTy -( -RequeedCiTy - -1 -, RequeedCiTy -2 -, RequeedCiTy -3 -) { - -925 -bo - -s - = -l -; - -926 i(( -1 - ! -RCT_NOT_USED -&& (1 = -_qcy -) -s - = -ue -; - -927 i(( -2 - ! -RCT_NOT_USED -&& (2 = -_qcy -) -s - = -ue -; - -928 i(( -3 - ! -RCT_NOT_USED -&& (3 = -_qcy -) -s - = -ue -; - -929  -s -; - -930 - } -} - - @lib/ESPAsyncWebServer/WebResponseImpl.h - -21 #ide -ASYNCWEBSERVERRESPONSEIMPL_H_ - - -22  - #ASYNCWEBSERVERRESPONSEIMPL_H_ - - - ) - -24 #ifde -Arduo_h - - -26 #unde -m - - -27 #unde -max - - -29  - ~ - -32 as - cAsyncBasicReڣ -: -public - -AsyncWebSvReڣ - { - -33 -ive -: - -34 -Sg - -_cڋ -; - -35 - mpublic -: - -36 -AsyncBasicReڣ -( -code -, cڡ -Sg -& -cڋTy -=Sg(), cڡ Sg& -cڋ -=String()); - -37  -_d -( -AsyncWebSvReque - * -que -); - -38 -size_t - -_ack -( -AsyncWebSvReque - * -que -, size_ -n -, -ut32_t - -time -); - -39 -bo - - $_sourVid -(cڡ {  -ue -; } - -40 - } -}; - -42 as - cAsyncAbReڣ -: -public - -AsyncWebSvReڣ - { - -43 -ive -: - -44 -Sg - -_hd -; - -49 - md -:: -ve -< -ut8_t -> -_che -; - -50 -size_t - -_adDaFromCacheOrCڋ -( -ut8_t -* -da -, cڡ size_ -n -); - -51 -size_t - -_flBufrAndProssTemes -( -ut8_t -* -buf -, size_ -maxL -); - -52 - meed -: - -53 -AwsTemePross - -_back -; - -54 - mpublic -: - -55 -AsyncAbReڣ -( -AwsTemePross - -back -= -nuαr -); - -56  -_d -( -AsyncWebSvReque - * -que -); - -57 -size_t - -_ack -( -AsyncWebSvReque - * -que -, size_ -n -, -ut32_t - -time -); - -58 -bo - - $_sourVid -(cڡ {  -l -; } - -59 -vtu - -size_t - - `_flBufr -( -ut8_t - * -buf - - `__ibu__ -(( -unud -)), size_ -maxL - __ibu__((unud)){  0; - } -} - -62 #ide -TEMPLATE_PLACEHOLDER - - -63  - #TEMPLATE_PLACEHOLDER - '%' - - ) - -66  - #TEMPLATE_PARAM_NAME_LENGTH - 32 - - ) - -67 as - cAsyncFeReڣ -: -public - -AsyncAbReڣ - { - -68 -usg - -Fe - = -fs -::File; - -69 -usg - - mFS - = -fs -:: -FS -; - -70 - mive -: - -71 -Fe - -_cڋ -; - -72 -Sg - - m_th -; - -73  -_tCڋTy -(cڡ -Sg -& -th -); - -74 - mpublic -: - -75 -AsyncFeReڣ -( -FS - & -fs -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -=Sg(), -bo - -dowd -= -l -, -AwsTemePross - -back -= -nuαr -); - -76 -AsyncFeReڣ -( -Fe - -cڋ -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -=Sg(), -bo - -dowd -= -l -, -AwsTemePross - -back -= -nuαr -); - -77 ~ -AsyncFeReڣ -(); - -78 -bo - - $_sourVid -(cڡ {  !!( -_cڋ -); } - -79 -vtu - -size_t - - $_flBufr -( -ut8_t - * -buf -, -size_t - -maxL - -ovride -; - -80 - } -}; - -82 as - cAsyncSmReڣ -: -public - -AsyncAbReڣ - { - -83 -ive -: - -84 -Sm - * -_cڋ -; - -85 - mpublic -: - -86 -AsyncSmReڣ -( -Sm - & -am -, cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsTemePross - -back -= -nuαr -); - -87 -bo - - $_sourVid -(cڡ {  !!( -_cڋ -); } - -88 -vtu - -size_t - - $_flBufr -( -ut8_t - * -buf -, -size_t - -maxL - -ovride -; - -89 - } -}; - -91 as - cAsyncClbackReڣ -: -public - -AsyncAbReڣ - { - -92 -ive -: - -93 -AwsReڣFr - -_cڋ -; - -94 -size_t - - m_fdLgth -; - -95 - mpublic -: - -96 -AsyncClbackReڣ -(cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -= -nuαr -); - -97 -bo - - $_sourVid -(cڡ {  !!( -_cڋ -); } - -98 -vtu - -size_t - - $_flBufr -( -ut8_t - * -buf -, -size_t - -maxL - -ovride -; - -99 - } -}; - -101 as - cAsyncChunkedReڣ -: -public - -AsyncAbReڣ - { - -102 -ive -: - -103 -AwsReڣFr - -_cڋ -; - -104 -size_t - - m_fdLgth -; - -105 - mpublic -: - -106 -AsyncChunkedReڣ -(cڡ -Sg -& -cڋTy -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -= -nuαr -); - -107 -bo - - $_sourVid -(cڡ {  !!( -_cڋ -); } - -108 -vtu - -size_t - - $_flBufr -( -ut8_t - * -buf -, -size_t - -maxL - -ovride -; - -109 - } -}; - -111 as - cAsyncProgmemReڣ -: -public - -AsyncAbReڣ - { - -112 -ive -: - -113 cڡ -ut8_t - * -_cڋ -; - -114 -size_t - - m_adLgth -; - -115 - mpublic -: - -116 -AsyncProgmemReڣ -( -code -, cڡ -Sg -& -cڋTy -, cڡ -ut8_t - * -cڋ -, -size_t - -n -, -AwsTemePross - -back -= -nuαr -); - -117 -bo - - $_sourVid -(cڡ {  -ue -; } - -118 -vtu - -size_t - - $_flBufr -( -ut8_t - * -buf -, -size_t - -maxL - -ovride -; - -119 - } -}; - -121 -ass - - gcbuf -; - -123 -ass - - gAsyncReڣSm -: -public - -AsyncAbReڣ -,ubli - gPrt - { - -124 - give -: - -125 -cbuf - * -_cڋ -; - -126 - gpublic -: - -127 -AsyncReڣSm -(cڡ -Sg -& -cڋTy -, -size_t - -bufrSize -); - -128 ~ -AsyncReڣSm -(); - -129 -bo - -_sourVid -(cڡ {  ( - g_e - < - gRESPONSE_END -); } - -130 -vtu - -size_t - -_flBufr -( -ut8_t - * -buf -, size_ -maxL - - govride -; - -131 -size_t - -wre -(cڡ -ut8_t - * -da -, size_ -n -); - -132 -size_t - -wre -( -ut8_t - -da -); - -133 -usg - - gPrt -:: -wre -; - - @lib/ESPAsyncWebServer/WebResponses.cpp - -21  - ~"ESPAsyncWebSv.h -" - -22  - ~"WebReڣIm.h -" - -23  - ~"cbuf.h -" - -26 * - $memchr -(* -r -,  -ch -, -size_t - -cou -) - -28 * -p - = -ic_ -<*>( -r -); - -29  -cou ---) - -30 if(* -p -++ = -ic_ -<>( -ch -)) - -31  -- -p -; - -32  -nuαr -; - -33 - } -} - -39 cڡ * - gAsyncWebSvReڣ -:: - $_ڣCodeToSg -( -code -) { - -40  -t_ -( - `ڣCodeToSg -( -code -)); - -41 - } -} - -43 cڡ -__FshSgHr - * - gAsyncWebSvReڣ -:: - $ڣCodeToSg -( -code -) { - -44  -code -) { - -45 100:  - `F -("Continue"); - -46 101:  - `F -("Switching Protocols"); - -47 200:  - `F -("OK"); - -48 201:  - `F -("Created"); - -49 202:  - `F -("Accepted"); - -50 203:  - `F -("Non-Authoritative Information"); - -51 204:  - `F -("No Content"); - -52 205:  - `F -("Reset Content"); - -53 206:  - `F -("Partial Content"); - -54 300:  - `F -("Multiple Choices"); - -55 301:  - `F -("Moved Permanently"); - -56 302:  - `F -("Found"); - -57 303:  - `F -("See Other"); - -58 304:  - `F -("Not Modified"); - -59 305:  - `F -("Use Proxy"); - -60 307:  - `F -("Temporary Redirect"); - -61 400:  - `F -("Bad Request"); - -62 401:  - `F -("Unauthorized"); - -63 402:  - `F -("Payment Required"); - -64 403:  - `F -("Forbidden"); - -65 404:  - `F -("Not Found"); - -66 405:  - `F -("Method Not Allowed"); - -67 406:  - `F -("Not Acceptable"); - -68 407:  - `F -("Proxy Authentication Required"); - -69 408:  - `F -("Request Time-out"); - -70 409:  - `F -("Conflict"); - -71 410:  - `F -("Gone"); - -72 411:  - `F -("Length Required"); - -73 412:  - `F -("Precondition Failed"); - -74 413:  - `F -("Request Entity Too Large"); - -75 414:  - `F -("Request-URI Too Large"); - -76 415:  - `F -("Unsupported Media Type"); - -77 416:  - `F -("Requestedangeot satisfiable"); - -78 417:  - `F -("Expectation Failed"); - -79 500:  - `F -("Internal Server Error"); - -80 501:  - `F -("Not Implemented"); - -81 502:  - `F -("Bad Gateway"); - -82 503:  - `F -("Service Unavailable"); - -83 504:  - `F -("Gateway Time-out"); - -84 505:  - `F -("HTTP Versionot supported"); - -85 :  - `F -(""); - -87 - } -} - -89 - gAsyncWebSvReڣ -:: - $AsyncWebSvReڣ -() - -90 : - `_code -(0) - -91 , - `_hds -( -LkedLi -< -AsyncWebHd - *>([](AsyncWebHd * -h -){ -de - h; - } -})) - -92 , -_cڋTy -() - -93 , -_cڋLgth -(0) - -94 , -_ndCڋLgth -( -ue -) - -95 , -_chunked -( -l -) - -96 , -_hdLgth -(0) - -97 , -_Lgth -(0) - -98 , -_ackedLgth -(0) - -99 , -_wrnLgth -(0) - -100 , - $_e -( -RESPONSE_SETUP -) - -102 aut -hd -: -DeuHds -:: - `In -()) { - -103 -_hds -. - `add -( -w - - `AsyncWebHd -( -hd --> - `me -(), hd-> - `vue -())); - -105 - } -} - -107 - gAsyncWebSvReڣ -::~ - $AsyncWebSvReڣ -(){ - -108 -_hds -. - ` -(); - -109 - } -} - -111  - gAsyncWebSvReڣ -:: - $tCode -( -code -){ - -112 if( -_e - = -RESPONSE_SETUP -) - -113 -_code - = -code -; - -114 - } -} - -116  - gAsyncWebSvReڣ -:: - $tCڋLgth -( -size_t - -n -){ - -117 if( -_e - = -RESPONSE_SETUP -) - -118 -_cڋLgth - = -n -; - -119 - } -} - -121  - gAsyncWebSvReڣ -:: - $tCڋTy -(cڡ -Sg -& -ty -){ - -122 if( -_e - = -RESPONSE_SETUP -) - -123 -_cڋTy - = -ty -; - -124 - } -} - -126  - gAsyncWebSvReڣ -:: - $addHd -(cڡ -Sg -& -me -, cڡ Sg& -vue -){ - -127 -_hds -. - `add -( -w - - `AsyncWebHd -( -me -, -vue -)); - -128 - } -} - -130 -Sg - - gAsyncWebSvReڣ -:: - $_asmbHd -( -ut8_t - -vsi -){ - -131 if( -vsi -){ - -132 - `addHd -( - `F -("Accept-Ranges"), F("none")); - -133 if( -_chunked -) - -134 - `addHd -( - `F -("Transfer-Encoding"), F("chunked")); - -136 -Sg - -out - = - `Sg -(); - -137  -bufSize - = 300; - -138  -buf -[ -bufSize -]; - -140 - `tf_P -( -buf -, -bufSize -, - `PSTR -("HTTP/1.%d %d %s\r\n"), -vsi -, -_code -, - `_ڣCodeToSg -(_code)); - -141 -out -. - `ct -( -buf -); - -143 if( -_ndCڋLgth -) { - -144 - `tf_P -( -buf -, -bufSize -, - `PSTR -("Cڋ-Lgth: %d\r\n"), -_cڋLgth -); - -145 -out -. - `ct -( -buf -); - -147 if( -_cڋTy -. - `ngth -()) { - -148 - `tf_P -( -buf -, -bufSize -, - `PSTR -("Cڋ-Ty: %s\r\n"), -_cڋTy -. - `c_r -()); - -149 -out -. - `ct -( -buf -); - -152 cڡuto& -hd -: -_hds -){ - -153 - `tf_P -( -buf -, -bufSize -, - `PSTR -("%s: %s\r\n"), -hd --> - `me -(). - `c_r -(), hd-> - `vue -().c_str()); - -154 -out -. - `ct -( -buf -); - -156 -_hds -. - ` -(); - -158 -out -. - `ct -( - `F -("\r\n")); - -159 -_hdLgth - = -out -. - `ngth -(); - -160  -out -; - -161 - } -} - -163 -bo - - gAsyncWebSvReڣ -:: - $_d -(cڡ {  -_e - > -RESPONSE_SETUP -; - } -} - -164 -bo - - gAsyncWebSvReڣ -:: - $_fished -(cڡ {  -_e - > -RESPONSE_WAIT_ACK -; - } -} - -165 -bo - - gAsyncWebSvReڣ -:: - $_ed -(cڡ {  -_e - = -RESPONSE_FAILED -; - } -} - -166 -bo - - gAsyncWebSvReڣ -:: - $_sourVid -(cڡ {  -l -; - } -} - -167  - gAsyncWebSvReڣ -:: - $_d -( -AsyncWebSvReque - * -que -){ -_e - = -RESPONSE_END -;eque-> - ` -()-> - `o -(); - } -} - -168 -size_t - - gAsyncWebSvReڣ -:: - $_ack -( -AsyncWebSvReque - * -que -, -size_t - -n -, -ut32_t - -time -){ (eque; (; (ime;  0; - } -} - -173 - gAsyncBasicReڣ -:: - $AsyncBasicReڣ -( -code -, cڡ -Sg -& -cڋTy -, cڡ Sg& -cڋ -){ - -174 -_code - = -code -; - -175 -_cڋ - = -cڋ -; - -176 -_cڋTy - = -cڋTy -; - -177 if( -_cڋ -. - `ngth -()){ - -178 -_cڋLgth - = -_cڋ -. - `ngth -(); - -179 if(! -_cڋTy -. - `ngth -()) - -180 -_cڋTy - = - `F -("text/plain"); - -182 - `addHd -( - `F -("Connection"), F("close")); - -183 - } -} - -185  - gAsyncBasicReڣ -:: - $_d -( -AsyncWebSvReque - * -que -){ - -186 -_e - = -RESPONSE_HEADERS -; - -187 -Sg - -out - = - `_asmbHd -( -que --> - `vsi -()); - -188 -size_t - -outL - = -out -. - `ngth -(); - -189 -size_t - -a - = -que --> - ` -()-> - `a -(); - -190 if(! -_cڋLgth - && -a - > -outL -){ - -191 -_wrnLgth - + -que --> - ` -()-> - `wre -( -out -. - `c_r -(), -outL -); - -192 -_e - = -RESPONSE_WAIT_ACK -; - -193 } if( -_cڋLgth - && -a - > -outL - + _contentLength){ - -194 -out - + -_cڋ -; - -195 -outL - + -_cڋLgth -; - -196 -_wrnLgth - + -que --> - ` -()-> - `wre -( -out -. - `c_r -(), -outL -); - -197 -_e - = -RESPONSE_WAIT_ACK -; - -198 } if( -a - && s < -outL -){ - -199 -Sg - -l - = -out -. - `subrg -(0, -a -); - -200 -_cڋ - = -out -. - `subrg -( -a -) + _content; - -201 -_cڋLgth - + -outL - - -a -; - -202 -_wrnLgth - + -que --> - ` -()-> - `wre -( -l -. - `c_r -(),tl. - `ngth -()); - -203 -_e - = -RESPONSE_CONTENT -; - -204 } if( -a - > -outL - && s < (outL + -_cڋLgth -)){ - -205 -size_t - -shi - = -a - - -outL -; - -206 -outL - + -shi -; - -207 -_Lgth - + -shi -; - -208 -out - + -_cڋ -. - `subrg -(0, -shi -); - -209 -_cڋ - = _cڋ. - `subrg -( -shi -); - -210 -_wrnLgth - + -que --> - ` -()-> - `wre -( -out -. - `c_r -(), -outL -); - -211 -_e - = -RESPONSE_CONTENT -; - -213 -_cڋ - = -out - + _content; - -214 -_cڋLgth - + -outL -; - -215 -_e - = -RESPONSE_CONTENT -; - -217 - } -} - -219 -size_t - - gAsyncBasicReڣ -:: - $_ack -( -AsyncWebSvReque - * -que -, -size_t - -n -, -ut32_t - -time -){ - -220 () -time -; - -221 -_ackedLgth - + -n -; - -222 if( -_e - = -RESPONSE_CONTENT -){ - -223 -size_t - -avaab - = -_cڋLgth - - -_Lgth -; - -224 -size_t - -a - = -que --> - ` -()-> - `a -(); - -226 if( -a - > -avaab -){ - -227 -_wrnLgth - + -que --> - ` -()-> - `wre -( -_cڋ -. - `c_r -(), -avaab -); - -228 -_cڋ - = - `Sg -(); - -229 -_e - = -RESPONSE_WAIT_ACK -; - -230  -avaab -; - -233 -Sg - -out - = -_cڋ -. - `subrg -(0, -a -); - -234 -_cڋ - = _cڋ. - `subrg -( -a -); - -235 -_Lgth - + -a -; - -236 -_wrnLgth - + -que --> - ` -()-> - `wre -( -out -. - `c_r -(), -a -); - -237  -a -; - -238 } if( -_e - = -RESPONSE_WAIT_ACK -){ - -239 if( -_ackedLgth - > -_wrnLgth -){ - -240 -_e - = -RESPONSE_END -; - -244 - } -} - -251 - gAsyncAbReڣ -:: - $AsyncAbReڣ -( -AwsTemePross - -back -): - $_back -( -back -) - -254 if( -back -) { - -255 -_cڋLgth - = 0; - -256 -_ndCڋLgth - = -l -; - -257 -_chunked - = -ue -; - -259 - } -} - -261  - gAsyncAbReڣ -:: - $_d -( -AsyncWebSvReque - * -que -){ - -262 - `addHd -( - `F -("Connection"), F("close")); - -263 -_hd - = - `_asmbHd -( -que --> - `vsi -()); - -264 -_e - = -RESPONSE_HEADERS -; - -265 - `_ack -( -que -, 0, 0); - -266 - } -} - -268 -size_t - - gAsyncAbReڣ -:: - $_ack -( -AsyncWebSvReque - * -que -, -size_t - -n -, -ut32_t - -time -){ - -269 () -time -; - -270 if(! - `_sourVid -()){ - -271 -_e - = -RESPONSE_FAILED -; - -272 -que --> - ` -()-> - `o -(); - -275 -_ackedLgth - + -n -; - -276 -size_t - -a - = -que --> - ` -()-> - `a -(); - -278 -size_t - -hdL - = -_hd -. - `ngth -(); - -279 if( -_e - = -RESPONSE_HEADERS -){ - -280 if( -a - > -hdL -){ - -281 -_e - = -RESPONSE_CONTENT -; - -282 -a - - -hdL -; - -284 -Sg - -out - = -_hd -. - `subrg -(0, -a -); - -285 -_hd - = _hd. - `subrg -( -a -); - -286 -_wrnLgth - + -que --> - ` -()-> - `wre -( -out -. - `c_r -(), out. - `ngth -()); - -287  -out -. - `ngth -(); - -291 if( -_e - = -RESPONSE_CONTENT -){ - -292 -size_t - -outL -; - -293 if( -_chunked -){ - -294 if( -a - <= 8){ - -297 -outL - = -a -; - -298 } if(! -_ndCڋLgth -){ - -299 -outL - = -a -; - -301 -outL - = (( -_cڋLgth - - -_Lgth -> -a -)?space:(_contentLength - _sentLength); - -304 -ut8_t - * -buf - = (ut8_*) - `mloc -( -outL -+ -hdL -); - -305 i(! -buf -) { - -310 if( -hdL -){ - -311 - `memy -( -buf -, -_hd -. - `c_r -(), _hd. - `ngth -()); - -314 -size_t - -adL - = 0; - -316 if( -_chunked -){ - -319 -adL - = - `_flBufrAndProssTemes -( -buf -+ -hdL -+6, -outL - - 8); - -320 if( -adL - = -RESPONSE_TRY_AGAIN -){ - -321 - ` -( -buf -); - -324 -outL - = - `rtf_P -((*) -buf -+ -hdL -, - `PSTR -("%x"), -adL -) + headLen; - -325  -outL - < -hdL - + 4 -buf -[outLen++] = ' '; - -326 -buf -[ -outL -++] = '\r'; - -327 -buf -[ -outL -++] = '\n'; - -328 -outL - + -adL -; - -329 -buf -[ -outL -++] = '\r'; - -330 -buf -[ -outL -++] = '\n'; - -332 -adL - = - `_flBufrAndProssTemes -( -buf -+ -hdL -, -outL -); - -333 if( -adL - = -RESPONSE_TRY_AGAIN -){ - -334 - ` -( -buf -); - -337 -outL - = -adL - + -hdL -; - -340 if( -hdL -){ - -341 -_hd - = - `Sg -(); - -344 if( -outL -){ - -345 -_wrnLgth - + -que --> - ` -()-> - `wre -((cڡ *) -buf -, -outL -); - -348 if( -_chunked -){ - -349 -_Lgth - + -adL -; - -351 -_Lgth - + -outL - - -hdL -; - -354 - ` -( -buf -); - -356 if(( -_chunked - && -adL - =0|| (! -_ndCڋLgth - && -outL - =0|| (!_chunked && -_Lgth - = -_cڋLgth -)){ - -357 -_e - = -RESPONSE_WAIT_ACK -; - -359  -outL -; - -361 } if( -_e - = -RESPONSE_WAIT_ACK -){ - -362 if(! -_ndCڋLgth - || -_ackedLgth - > -_wrnLgth -){ - -363 -_e - = -RESPONSE_END -; - -364 if(! -_chunked - && ! -_ndCڋLgth -) - -365 -que --> - ` -()-> - `o -( -ue -); - -369 - } -} - -371 -size_t - - gAsyncAbReڣ -:: - $_adDaFromCacheOrCڋ -( -ut8_t -* -da -, cڡ -size_t - -n -) - -374 cڡ -size_t - -adFromCache - = -d -:: - `m -( -n -, -_che -. - `size -()); - -375 if( -adFromCache -) { - -376 - `memy -( -da -, -_che -. - `da -(), -adFromCache -); - -377 -_che -. - `a -(_che. - `beg -(), _che.beg(+ -adFromCache -); - -380 cڡ -size_t - -edFromFe - = -n - - -adFromCache -; - -381 cڡ -size_t - -adFromCڋ - = - `_flBufr -( -da - + -adFromCache -, -edFromFe -); - -382  -adFromCache - + -adFromCڋ -; - -383 - } -} - -385 -size_t - - gAsyncAbReڣ -:: - $_flBufrAndProssTemes -( -ut8_t -* -da -, -size_t - -n -) - -387 if(! -_back -) - -388  - `_flBufr -( -da -, -n -); - -390 cڡ -size_t - -igL - = -n -; - -391 -n - = - `_adDaFromCacheOrCڋ -( -da -,en); - -394 -ut8_t -* -pTemeS - = -da -; - -395 ( -pTemeS - < & -da -[ -n -]&& (pTemeS = ( -ut8_t -*) - `memchr -TemeS, -TEMPLATE_PLACEHOLDER -, &data[len - 1] -TemplateStart + 1))) { - -396 -ut8_t -* -pTemeEnd - = ( -pTemeS - < & -da -[ -n - - 1]? (ut8_t*) - `memchr -TemeS + 1, -TEMPLATE_PLACEHOLDER -, &da[- 1] -TemeS: -nuαr -; - -398 -ut8_t - -buf -[ -TEMPLATE_PARAM_NAME_LENGTH - + 1]; - -399 -Sg - -mName -; - -401 if( -pTemeEnd -) { - -403 cڡ -size_t - -mNameLgth - = -d -:: - `m -((size_t)( -buf -- 1, (size_t)( -pTemeEnd - - -pTemeS - - 1)); - -404 if( -mNameLgth -) { - -405 - `memy -( -buf -, -pTemeS - + 1, -mNameLgth -); - -406 -buf -[ -mNameLgth -] = 0; - -407 -mName - = - `Sg -( -t_ -<*>( -buf -)); - -410 - `memmove -( -pTemeEnd -,TemeEnd + 1, & -da -[ -n -] -TemplateEnd - 1); - -411 -n - + - `_adDaFromCacheOrCڋ -(& -da -[len - 1], 1) - 1; - -412 ++ -pTemeS -; - -414 } if(& -da -[ -n - - 1] - -pTemeS - + 1 < -TEMPLATE_PARAM_NAME_LENGTH - + 2) { - -415 - `memy -( -buf -, -pTemeS - + 1, & -da -[ -n - - 1] -TemplateStart); - -416 cڡ -size_t - -adFromCacheOrCڋ - = - `_adDaFromCacheOrCڋ -( -buf - + (& -da -[ -n - - 1] - -pTemeS -), -TEMPLATE_PARAM_NAME_LENGTH - + 2 - (&data[len - 1] -TemplateStart + 1)); - -417 if( -adFromCacheOrCڋ -) { - -418 -pTemeEnd - = ( -ut8_t -*) - `memchr -( -buf - + (& -da -[ -n - - 1] - -pTemeS -), -TEMPLATE_PLACEHOLDER -, -adFromCacheOrCڋ -); - -419 if( -pTemeEnd -) { - -421 * -pTemeEnd - = 0; - -422 -mName - = - `Sg -( -t_ -<*>( -buf -)); - -424 -_che -. - ` -(_che. - `beg -(), -pTemeEnd - + 1, -buf - + (& -da -[ -n - - 1] - -pTemeS -+ -adFromCacheOrCڋ -); - -425 -pTemeEnd - = & -da -[ -n - - 1]; - -430 -_che -. - ` -(_che. - `beg -(), -buf - + (& -da -[ -n - - 1] - -pTemeS -), bu+ (&da[- 1] -TemeS+ -adFromCacheOrCڋ -); - -431 ++ -pTemeS -; - -435 ++ -pTemeS -; - -438 ++ -pTemeS -; - -439 if( -mName -. - `ngth -()) { - -445 cڡ -Sg - - `mVue -( - `_back -( -mName -)); - -446 cڡ * -pvr - = -mVue -. - `c_r -(); - -447 cڡ  -pvn - = -mVue -. - `ngth -(); - -448 cڡ -size_t - -numBysCݛd - = -d -:: - `m -( -pvn -, -ic_ -<>(& -da -[ -igL - - 1] - -pTemeS - + 1)); - -451 if(( -pTemeEnd - + 1 < -pTemeS - + -numBysCݛd -&& ( -igL - - (pTemeS +umBysCݛd -TemeEnd - 1< -n -)) { - -452 -_che -. - ` -(_che. - `beg -(), & -da -[ -igL - - ( -pTemeS - + -numBysCݛd - - -pTemeEnd - - 1)], &da[ -n -]); - -454 - `memmove -( -pTemeS - + -numBysCݛd -, -pTemeEnd - + 1, & -da -[ -igL -] -TemplateStart -umBytesCopied); - -455 -n - = -igL -; - -456 } if( -pTemeEnd - + 1 ! -pTemeS - + -numBysCݛd -) - -459 - `memmove -( -pTemeS - + -numBysCݛd -, -pTemeEnd - + 1, & -da -[ -n -] -TemplateEnd - 1); - -461 - `memy -( -pTemeS -, -pvr -, -numBysCݛd -); - -463 if( -numBysCݛd - < -pvn -) { - -464 -_che -. - ` -(_che. - `beg -(), -pvr - + -numBysCݛd -,v+ -pvn -); - -465 } if( -pTemeS - + -numBysCݛd - < -pTemeEnd - + 1) { - -467 cڡ -size_t - -roomFed - = -pTemeEnd - + 1 - -pTemeS - - -numBysCݛd -; - -468 cڡ -size_t - -tٮFeRoom - = -igL - - -n - + -roomFed -; - -469 -n - + - `_adDaFromCacheOrCڋ -(& -da -[- -roomFed -], -tٮFeRoom -) -oomFreed; - -471 cڡ -size_t - -roomTak - = -pTemeS - + -numBysCݛd - - -pTemeEnd - - 1; - -472 -n - = -d -:: - `m -֒ + -roomTak -, -igL -); - -476  -n -; - -477 - } -} - -484 - gAsyncFeReڣ -::~ - $AsyncFeReڣ -(){ - -485 if( -_cڋ -) - -486 -_cڋ -. - `o -(); - -487 - } -} - -489  - gAsyncFeReڣ -:: - $_tCڋTy -(cڡ -Sg -& -th -){ - -490 #i -HAVE_EXTERN_GET_CONTENT_TYPE_FUNCTION - - -491 cڡ -__FshSgHr - * - `gCڋTy -(cڡ -Sg - & -th -); - -492 -_cڋTy - = - `gCڋTy -( -th -); - -494 i( -th -. - `dsWh -( - `F -(".html")) -_cڋTy - = F("text/html"); - -495 i( -th -. - `dsWh -( - `F -(".htm")) -_cڋTy - = F("text/html"); - -496 i( -th -. - `dsWh -( - `F -(".css")) -_cڋTy - = F("text/css"); - -497 i( -th -. - `dsWh -( - `F -(".js")) -_cڋTy - = F("application/json"); - -498 i( -th -. - `dsWh -( - `F -(".js")) -_cڋTy - = F("application/javascript"); - -499 i( -th -. - `dsWh -( - `F -(".g")) -_cڋTy - = F("image/png"); - -500 i( -th -. - `dsWh -( - `F -(".gif")) -_cڋTy - = F("image/gif"); - -501 i( -th -. - `dsWh -( - `F -(".jpg")) -_cڋTy - = F("image/jpeg"); - -502 i( -th -. - `dsWh -( - `F -(".ico")) -_cڋTy - = F("image/x-icon"); - -503 i( -th -. - `dsWh -( - `F -(".svg")) -_cڋTy - = F("image/svg+xml"); - -504 i( -th -. - `dsWh -( - `F -(".e")) -_cڋTy - = F("font/eot"); - -505 i( -th -. - `dsWh -( - `F -(".woff")) -_cڋTy - = F("font/woff"); - -506 i( -th -. - `dsWh -( - `F -(".woff2")) -_cڋTy - = F("font/woff2"); - -507 i( -th -. - `dsWh -( - `F -(".f")) -_cڋTy - = F("font/ttf"); - -508 i( -th -. - `dsWh -( - `F -(".xml")) -_cڋTy - = F("text/xml"); - -509 i( -th -. - `dsWh -( - `F -(".pdf")) -_cڋTy - = F("application/pdf"); - -510 i( -th -. - `dsWh -( - `F -(".z")) -_cڋTy - = F("application/zip"); - -511 if( -th -. - `dsWh -( - `F -(".gz")) -_cڋTy - = F("application/x-gzip"); - -512 -_cڋTy - = - `F -("text/plain"); - -514 - } -} - -516 - gAsyncFeReڣ -:: - $AsyncFeReڣ -( -FS - & -fs -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -, -bo - -dowd -, -AwsTemePross - -back -): - $AsyncAbReڣ -( -back -){ - -517 -_code - = 200; - -518 -_th - = -th -; - -520 if(! -dowd - && ! -fs -. - `exis -( -_th -&& fs.exis(_th + - `F -(".gz"))){ - -521 -_th - = _th + - `F -(".gz"); - -522 - `addHd -( - `F -("Content-Encoding"), F("gzip")); - -523 -_back - = -nuαr -; - -524 -_ndCڋLgth - = -ue -; - -525 -_chunked - = -l -; - -528 -_cڋ - = -fs -. - `ݒ -( -_th -, fs:: -FeOnMode -:: -ad -); - -529 -_cڋLgth - = -_cڋ -. - `size -(); - -531 if( -cڋTy -. - `ngth -() == 0) - -532 - `_tCڋTy -( -th -); - -534 -_cڋTy - = -cڋTy -; - -536  -fameS - = -th -. - `ϡIndexOf -('/') + 1; - -537  -buf -[26+ -th -. - `ngth -()- -fameS -]; - -538 * -fame - = (*) -th -. - `c_r -(+ -fameS -; - -540 if( -dowd -) { - -542 - `tf_P -( -buf -,  (buf), - `PSTR -("chmt; fame=\"%s\""), -fame -); - -545 - `tf_P -( -buf -,  (buf), - `PSTR -("le; fame=\"%s\""), -fame -); - -547 - `addHd -( - `F -("Cڋ-Diosi"), -buf -); - -548 - } -} - -550 - gAsyncFeReڣ -:: - $AsyncFeReڣ -( -Fe - -cڋ -, cڡ -Sg -& -th -, cڡ Sg& -cڋTy -, -bo - -dowd -, -AwsTemePross - -back -): - $AsyncAbReڣ -( -back -){ - -551 -_code - = 200; - -552 -_th - = -th -; - -554 if(! -dowd - && - `Sg -( -cڋ -. - `me -()). - `dsWh -( - `F -(".gz")&& ! -th -.endsWith(F(".gz"))){ - -555 - `addHd -( - `F -("Content-Encoding"), F("gzip")); - -556 -_back - = -nuαr -; - -557 -_ndCڋLgth - = -ue -; - -558 -_chunked - = -l -; - -561 -_cڋ - = -cڋ -; - -562 -_cڋLgth - = -_cڋ -. - `size -(); - -564 if( -cڋTy -. - `ngth -() == 0) - -565 - `_tCڋTy -( -th -); - -567 -_cڋTy - = -cڋTy -; - -569  -fameS - = -th -. - `ϡIndexOf -('/') + 1; - -570  -buf -[26+ -th -. - `ngth -()- -fameS -]; - -571 * -fame - = (*) -th -. - `c_r -(+ -fameS -; - -573 if( -dowd -) { - -574 - `tf_P -( -buf -,  (buf), - `PSTR -("chmt; fame=\"%s\""), -fame -); - -576 - `tf_P -( -buf -,  (buf), - `PSTR -("le; fame=\"%s\""), -fame -); - -578 - `addHd -( - `F -("Cڋ-Diosi"), -buf -); - -579 - } -} - -581 -size_t - - gAsyncFeReڣ -:: - $_flBufr -( -ut8_t - * -da -, -size_t - -n -){ - -582  -_cڋ -. - `ad -( -da -, -n -); - -583 - } -} - -589 - gAsyncSmReڣ -:: - $AsyncSmReڣ -( -Sm - & -am -, cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsTemePross - -back -): - $AsyncAbReڣ -( -back -) { - -590 -_code - = 200; - -591 -_cڋ - = & -am -; - -592 -_cڋLgth - = -n -; - -593 -_cڋTy - = -cڋTy -; - -594 - } -} - -596 -size_t - - gAsyncSmReڣ -:: - $_flBufr -( -ut8_t - * -da -, -size_t - -n -){ - -597 -size_t - -avaab - = -_cڋ --> - `avaab -(); - -598 -size_t - -outL - = ( -avaab - > -n -)?len:available; - -599 -size_t - -i -; - -600  -i -=0;i< -outL -;i++) - -601 -da -[ -i -] = -_cڋ --> - `ad -(); - -602  -outL -; - -603 - } -} - -609 - gAsyncClbackReڣ -:: - $AsyncClbackReڣ -(cڡ -Sg -& -cڋTy -, -size_t - -n -, -AwsReڣFr - -back -, -AwsTemePross - -meClback -): - $AsyncAbReڣ -( -meClback -) { - -610 -_code - = 200; - -611 -_cڋ - = -back -; - -612 -_cڋLgth - = -n -; - -613 if(! -n -) - -614 -_ndCڋLgth - = -l -; - -615 -_cڋTy - = -cڋTy -; - -616 -_fdLgth - = 0; - -617 - } -} - -619 -size_t - - gAsyncClbackReڣ -:: - $_flBufr -( -ut8_t - * -da -, -size_t - -n -){ - -620 -size_t - -t - = - `_cڋ -( -da -, -n -, -_fdLgth -); - -621 if( -t - ! -RESPONSE_TRY_AGAIN -){ - -622 -_fdLgth - + -t -; - -624  -t -; - -625 - } -} - -631 - gAsyncChunkedReڣ -:: - $AsyncChunkedReڣ -(cڡ -Sg -& -cڋTy -, -AwsReڣFr - -back -, -AwsTemePross - -ossClback -): - $AsyncAbReڣ -( -ossClback -) { - -632 -_code - = 200; - -633 -_cڋ - = -back -; - -634 -_cڋLgth - = 0; - -635 -_cڋTy - = -cڋTy -; - -636 -_ndCڋLgth - = -l -; - -637 -_chunked - = -ue -; - -638 -_fdLgth - = 0; - -639 - } -} - -641 -size_t - - gAsyncChunkedReڣ -:: - $_flBufr -( -ut8_t - * -da -, -size_t - -n -){ - -642 -size_t - -t - = - `_cڋ -( -da -, -n -, -_fdLgth -); - -643 if( -t - ! -RESPONSE_TRY_AGAIN -){ - -644 -_fdLgth - + -t -; - -646  -t -; - -647 - } -} - -653 - gAsyncProgmemReڣ -:: - $AsyncProgmemReڣ -( -code -, cڡ -Sg -& -cڋTy -, cڡ -ut8_t - * -cڋ -, -size_t - -n -, -AwsTemePross - -back -): - $AsyncAbReڣ -( -back -) { - -654 -_code - = -code -; - -655 -_cڋ - = -cڋ -; - -656 -_cڋTy - = -cڋTy -; - -657 -_cڋLgth - = -n -; - -658 -_adLgth - = 0; - -659 - } -} - -661 -size_t - - gAsyncProgmemReڣ -:: - $_flBufr -( -ut8_t - * -da -, -size_t - -n -){ - -662 -size_t - - - = -_cڋLgth - - -_adLgth -; - -663 i( - - > -n -) { - -664 - `memy_P -( -da -, -_cڋ - + -_adLgth -, -n -); - -665 -_adLgth - + -n -; - -666  -n -; - -668 - `memy_P -( -da -, -_cڋ - + -_adLgth -, - -); - -669 -_adLgth - + - -; - -670  - -; - -671 - } -} - -678 - gAsyncReڣSm -:: - $AsyncReڣSm -(cڡ -Sg -& -cڋTy -, -size_t - -bufrSize -){ - -679 -_code - = 200; - -680 -_cڋLgth - = 0; - -681 -_cڋTy - = -cڋTy -; - -682 -_cڋ - = -w - - `cbuf -( -bufrSize -); - -683 - } -} - -685 - gAsyncReڣSm -::~ - $AsyncReڣSm -(){ - -686 -de - -_cڋ -; - -687 - } -} - -689 -size_t - - gAsyncReڣSm -:: - $_flBufr -( -ut8_t - * -buf -, -size_t - -maxL -){ - -690  -_cڋ --> - `ad -((*) -buf -, -maxL -); - -691 - } -} - -693 -size_t - - gAsyncReڣSm -:: - $wre -(cڡ -ut8_t - * -da -, -size_t - -n -){ - -694 if( - `_d -()) - -697 if( -n - > -_cڋ --> - `room -()){ - -698 -size_t - -eded - = -n - - -_cڋ --> - `room -(); - -699 -_cڋ --> - `sizeAdd -( -eded -); - -701 -size_t - -wrn - = -_cڋ --> - `wre -((cڡ *) -da -, -n -); - -702 -_cڋLgth - + -wrn -; - -703  -wrn -; - -704 - } -} - -706 -size_t - - gAsyncReڣSm -:: - $wre -( -ut8_t - -da -){ - -707  - `wre -(& -da -, 1); - -708 - } -} - - @lib/ESPAsyncWebServer/WebServer.cpp - -21  - ~"ESPAsyncWebSv.h -" - -22  - ~"WebHdrIm.h -" - -24 -bo - - $ON_STA_FILTER -( -AsyncWebSvReque - * -que -) { - -25  -WiFi -. - `lolIP -(= -que --> - ` -()->localIP(); - -26 - } -} - -28 -bo - - $ON_AP_FILTER -( -AsyncWebSvReque - * -que -) { - -29  -WiFi -. - `lolIP -(! -que --> - ` -()->localIP(); - -30 - } -} - -32 #ide -HAVE_FS_FILE_OPEN_MODE - - -33 cڡ * - gfs -:: -FeOnMode -:: -ad - = "r"; - -34 cڡ * - gfs -:: -FeOnMode -:: -wre - = "w"; - -35 cڡ * - gfs -:: -FeOnMode -:: -nd - = "a"; - -38 - gAsyncWebSv -:: - $AsyncWebSv -( -ut16_t - -pt -) - -39 : - `_rv -( -pt -) - -40 , - `_wres -( -LkedLi -< -AsyncWebRewre -*>([](AsyncWebRewre* -r -){ -de -; - } -})) - -41 , -_hdrs -( -LkedLi -< -AsyncWebHdr -*>([](AsyncWebHdr* -h -){ -de - h; })) - -43 - g_tchAHdr - = -w - -AsyncClbackWebHdr -(); - -44 if( - g_tchAHdr - = -NULL -) - -46 - g_rv -. -Cl -([](* -s -, -AsyncCl -* -c -){ - -47 if( -c - = -NULL -) - -49 -c --> -tRxTimeout -(3); - -50 -AsyncWebSvReque - * -r - = -w - AsyncWebSvReque(( -AsyncWebSv -*) -s -, -c -); - -51 if( -r - = -NULL -){ - -52 -c --> -o -( -ue -); - -53 -c --> - -(); - -54 -de - -c -; - -56 }, -this -); - -59 - gAsyncWebSv -::~ - $AsyncWebSv -(){ - -60 - `t -(); - -61 - `d -(); - -62 if( -_tchAHdr - -de - _catchAllHandler; - -63 - } -} - -65 - gAsyncWebRewre -& - gAsyncWebSv -:: - $addRewre -( -AsyncWebRewre -* -wre -){ - -66 -_wres -. - `add -( -wre -); - -67  * -wre -; - -68 - } -} - -70 -bo - - gAsyncWebSv -:: - $moveRewre -( -AsyncWebRewre - * -wre -){ - -71  -_wres -. - `move -( -wre -); - -72 - } -} - -74 - gAsyncWebRewre -& - gAsyncWebSv -:: - $wre -(cڡ * -om -, cڡ * -to -){ - -75  - `addRewre -( -w - - `AsyncWebRewre -( -om -, -to -)); - -76 - } -} - -78 - gAsyncWebHdr -& - gAsyncWebSv -:: - $addHdr -( -AsyncWebHdr -* -hdr -){ - -79 -_hdrs -. - `add -( -hdr -); - -80  * -hdr -; - -81 - } -} - -83 -bo - - gAsyncWebSv -:: - $moveHdr -( -AsyncWebHdr - * -hdr -){ - -84  -_hdrs -. - `move -( -hdr -); - -85 - } -} - -87  - gAsyncWebSv -:: - $beg -(){ - -88 -_rv -. - `tNoDay -( -ue -); - -89 -_rv -. - `beg -(); - -90 - } -} - -92  - gAsyncWebSv -:: - $d -(){ - -93 -_rv -. - `d -(); - -94 - } -} - -96 #i -ASYNC_TCP_SSL_ENABLED - - -97  - gAsyncWebSv -:: - $SFeReque -( -AcSSlFeHdr - -cb -, * -g -){ - -98 -_rv -. - `SFeReque -( -cb -, -g -); - -99 - } -} - -101  - gAsyncWebSv -:: - $begSecu -(cڡ * - -, cڡ * -key -, cڡ * -sswd -){ - -102 -_rv -. - `begSecu -( - -, -key -, -sswd -); - -103 - } -} - -106  - gAsyncWebSv -:: - $_hdDisc -( -AsyncWebSvReque - * -que -){ - -107 -de - -que -; - -108 - } -} - -110  - gAsyncWebSv -:: - $_wreReque -( -AsyncWebSvReque - * -que -){ - -111 cڡuto& -r -: -_wres -){ - -112 i( -r --> - `mch -( -que -)){ - -113 -que --> -_u - = -r --> - `toU -(); - -114 -que --> - `_addGPams -( -r --> - `ms -()); - -117 - } -} - -119  - gAsyncWebSv -:: - $_chHdr -( -AsyncWebSvReque - * -que -){ - -120 cڡuto& -h -: -_hdrs -){ - -121 i( -h --> - `fr -( -que -&& h-> - `nHd -(request)){ - -122 -que --> - `tHdr -( -h -); - -127 -que --> - `addIegHd -( - `F -("ANY")); - -128 -que --> - `tHdr -( -_tchAHdr -); - -129 - } -} - -132 - gAsyncClbackWebHdr -& - gAsyncWebSv -:: - $ -(cڡ * -uri -, -WebRequeMhodCompose - -mhod -, -ArRequeHdrFuni - -Reque -, -ArUdHdrFuni - -Ud -, -ArBodyHdrFuni - -Body -){ - -133 -AsyncClbackWebHdr -* -hdr - = -w - - `AsyncClbackWebHdr -(); - -134 -hdr --> - `tUri -( -uri -); - -135 -hdr --> - `tMhod -( -mhod -); - -136 -hdr --> - `Reque -( -Reque -); - -137 -hdr --> - `Ud -( -Ud -); - -138 -hdr --> - `Body -( -Body -); - -139 - `addHdr -( -hdr -); - -140  * -hdr -; - -141 - } -} - -143 - gAsyncClbackWebHdr -& - gAsyncWebSv -:: - $ -(cڡ * -uri -, -WebRequeMhodCompose - -mhod -, -ArRequeHdrFuni - -Reque -, -ArUdHdrFuni - -Ud -){ - -144 -AsyncClbackWebHdr -* -hdr - = -w - - `AsyncClbackWebHdr -(); - -145 -hdr --> - `tUri -( -uri -); - -146 -hdr --> - `tMhod -( -mhod -); - -147 -hdr --> - `Reque -( -Reque -); - -148 -hdr --> - `Ud -( -Ud -); - -149 - `addHdr -( -hdr -); - -150  * -hdr -; - -151 - } -} - -153 - gAsyncClbackWebHdr -& - gAsyncWebSv -:: - $ -(cڡ * -uri -, -WebRequeMhodCompose - -mhod -, -ArRequeHdrFuni - -Reque -){ - -154 -AsyncClbackWebHdr -* -hdr - = -w - - `AsyncClbackWebHdr -(); - -155 -hdr --> - `tUri -( -uri -); - -156 -hdr --> - `tMhod -( -mhod -); - -157 -hdr --> - `Reque -( -Reque -); - -158 - `addHdr -( -hdr -); - -159  * -hdr -; - -160 - } -} - -162 - gAsyncClbackWebHdr -& - gAsyncWebSv -:: - $ -(cڡ * -uri -, -ArRequeHdrFuni - -Reque -){ - -163 -AsyncClbackWebHdr -* -hdr - = -w - - `AsyncClbackWebHdr -(); - -164 -hdr --> - `tUri -( -uri -); - -165 -hdr --> - `Reque -( -Reque -); - -166 - `addHdr -( -hdr -); - -167  * -hdr -; - -168 - } -} - -170 - gAsyncSticWebHdr -& - gAsyncWebSv -:: - $rveStic -(cڡ * -uri -, -fs -:: -FS -& fs, cڡ * -th -, cڡ * -che_cڌ -){ - -171 -AsyncSticWebHdr -* -hdr - = -w - - `AsyncSticWebHdr -( -uri -, -fs -, -th -, -che_cڌ -); - -172 - `addHdr -( -hdr -); - -173  * -hdr -; - -174 - } -} - -176  - gAsyncWebSv -:: - $NFound -( -ArRequeHdrFuni - - -){ - -177 -_tchAHdr --> - `Reque -( - -); - -178 - } -} - -180  - gAsyncWebSv -:: - $FeUd -( -ArUdHdrFuni - - -){ - -181 -_tchAHdr --> - `Ud -( - -); - -182 - } -} - -184  - gAsyncWebSv -:: - $RequeBody -( -ArBodyHdrFuni - - -){ - -185 -_tchAHdr --> - `Body -( - -); - -186 - } -} - -188  - gAsyncWebSv -:: - $t -(){ - -189 -_wres -. - ` -(); - -190 -_hdrs -. - ` -(); - -192 i( -_tchAHdr - ! -NULL -){ - -193 -_tchAHdr --> - `Reque -( -NULL -); - -194 -_tchAHdr --> - `Ud -( -NULL -); - -195 -_tchAHdr --> - `Body -( -NULL -); - -197 - } -} - - @lib/OneWire/OneWire.cpp - -142  - ~ - -143  - ~"OWe.h -" - -144  - ~"OWe_de_gpio.h -" - -146 #agm -GCC - -dgnoic - -push - - -147 #agm -GCC - -dgnoic - -igned - "-Wunused-variable" - -149  - gOWe -:: - $beg -( -ut8_t - -p -) { - -150 - `pMode -( -p -, -INPUT -); - -151 -bmask - = - `PIN_TO_BITMASK -( -p -); - -152 -baReg - = - `PIN_TO_BASEREG -( -p -); - -153 #i -ONEWIRE_SEARCH - - -154 - `t_ch -(); - -156 - } -} - -164 #ifde -ARDUINO_ARCH_ESP32 - - -165 -ut8_t - -IRAM_ATTR - - gOWe -:: - $t -() { - -167 -ut8_t - -OWe -:: - $t -() { - -169 -IO_REG_TYPE - -mask - -IO_REG_MASK_ATTR - = -bmask -; - -170 vީ -IO_REG_TYPE - * -g - -IO_REG_BASE_ATTR - = -baReg -; - -171 -ut8_t - -r -; - -172 -ut8_t - -s - = 125; - -174 - `noIrus -(); - -175 - `DIRECT_MODE_INPUT -( -g -, -mask -); - -176 - `us -(); - -179 i(-- -s - == 0) - -181 - `dayMiocds -(2); - -182 } ! - `DIRECT_READ -( -g -, -mask -)); - -184 - `noIrus -(); - -185 - `DIRECT_WRITE_LOW -( -g -, -mask -); - -186 - `DIRECT_MODE_OUTPUT -( -g -, -mask -); - -187 - `us -(); - -188 - `dayMiocds -(480); - -189 - `noIrus -(); - -190 - `DIRECT_MODE_INPUT -( -g -, -mask -); - -191 - `dayMiocds -(70); - -192 -r - = ! - `DIRECT_READ -( -g -, -mask -); - -193 - `us -(); - -194 - `dayMiocds -(410); - -195  -r -; - -196 - } -} - -202 #ifde -ARDUINO_ARCH_ESP32 - - -203  -IRAM_ATTR - - gOWe -:: - $wre_b -( -ut8_t - -v -) { - -205  -OWe -:: - $wre_b -( -ut8_t - -v -) { - -207 -IO_REG_TYPE - -mask - -IO_REG_MASK_ATTR - = -bmask -; - -208 vީ -IO_REG_TYPE - * -g - -IO_REG_BASE_ATTR - = -baReg -; - -210 i( -v - & 1) { - -211 - `noIrus -(); - -212 - `DIRECT_WRITE_LOW -( -g -, -mask -); - -213 - `DIRECT_MODE_OUTPUT -( -g -, -mask -); - -214 - `dayMiocds -(10); - -215 - `DIRECT_WRITE_HIGH -( -g -, -mask -); - -216 - `us -(); - -217 - `dayMiocds -(55); - -219 - `noIrus -(); - -220 - `DIRECT_WRITE_LOW -( -g -, -mask -); - -221 - `DIRECT_MODE_OUTPUT -( -g -, -mask -); - -222 - `dayMiocds -(65); - -223 - `DIRECT_WRITE_HIGH -( -g -, -mask -); - -224 - `us -(); - -225 - `dayMiocds -(5); - -227 - } -} - -233 #ifde -ARDUINO_ARCH_ESP32 - - -234 -ut8_t - -IRAM_ATTR - - gOWe -:: - $ad_b -() { - -236 -ut8_t - -OWe -:: - $ad_b -() { - -238 -IO_REG_TYPE - -mask - -IO_REG_MASK_ATTR - = -bmask -; - -239 vީ -IO_REG_TYPE - * -g - -IO_REG_BASE_ATTR - = -baReg -; - -240 -ut8_t - -r -; - -242 - `noIrus -(); - -243 - `DIRECT_MODE_OUTPUT -( -g -, -mask -); - -244 - `DIRECT_WRITE_LOW -( -g -, -mask -); - -245 - `dayMiocds -(3); - -246 - `DIRECT_MODE_INPUT -( -g -, -mask -); - -247 - `dayMiocds -(10); - -248 -r - = - `DIRECT_READ -( -g -, -mask -); - -249 - `us -(); - -250 - `dayMiocds -(53); - -251  -r -; - -252 - } -} - -261  - gOWe -:: - $wre -( -ut8_t - -v -, ut8_ -pow - ) { - -262 -ut8_t - -bMask -; - -264  -bMask - = 0x01; bitMask; bitMask <<= 1) { - -265 -OWe -:: - `wre_b -(( -bMask - & -v -) ? 1 : 0); - -267 i(! -pow -) { - -268 - `noIrus -(); - -269 - `DIRECT_MODE_INPUT -( -baReg -, -bmask -); - -270 - `DIRECT_WRITE_LOW -( -baReg -, -bmask -); - -271 - `us -(); - -273 - } -} - -275  - gOWe -:: - $wre_bys -(cڡ -ut8_t - * -buf -, -ut16_t - -cou -, -bo - -pow - ) { - -276  -ut16_t - -i - = 0; i < -cou -; i++) - -277 - `wre -( -buf -[ -i -]); - -278 i(! -pow -) { - -279 - `noIrus -(); - -280 - `DIRECT_MODE_INPUT -( -baReg -, -bmask -); - -281 - `DIRECT_WRITE_LOW -( -baReg -, -bmask -); - -282 - `us -(); - -284 - } -} - -289 -ut8_t - - gOWe -:: - $ad -() { - -290 -ut8_t - -bMask -; - -291 -ut8_t - -r - = 0; - -293  -bMask - = 0x01; bitMask; bitMask <<= 1) { - -294 i( -OWe -:: - `ad_b -()) - -295 -r - | -bMask -; - -297  -r -; - -298 - } -} - -300  - gOWe -:: - $ad_bys -( -ut8_t - * -buf -, -ut16_t - -cou -) { - -301  -ut16_t - -i - = 0; i < -cou -; i++) - -302 -buf -[ -i -] = - `ad -(); - -303 - } -} - -308  - gOWe -:: - $ -(cڡ -ut8_t - -rom -[8]) { - -309 -ut8_t - -i -; - -311 - `wre -(0x55); - -313  -i - = 0; i < 8; i++) - -314 - `wre -( -rom -[ -i -]); - -315 - } -} - -320  - gOWe -:: - $sk -() { - -321 - `wre -(0xCC); - -322 - } -} - -324  - gOWe -:: - $dow -() { - -325 - `noIrus -(); - -326 - `DIRECT_MODE_INPUT -( -baReg -, -bmask -); - -327 - `us -(); - -328 - } -} - -330 #i -ONEWIRE_SEARCH - - -336  - gOWe -:: - $t_ch -() { - -338 -LaDiscy - = 0; - -339 -LaDeviFg - = -l -; - -340 -LaFamyDiscy - = 0; - -341  -i - = 7;; i--) { - -342 -ROM_NO -[ -i -] = 0; - -343 i( -i - == 0) - -346 - } -} - -351  - gOWe -:: - $rg_ch -( -ut8_t - -my_code -) { - -353 -ROM_NO -[0] = -my_code -; - -354  -ut8_t - -i - = 1; i < 8; i++) - -355 -ROM_NO -[ -i -] = 0; - -356 -LaDiscy - = 64; - -357 -LaFamyDiscy - = 0; - -358 -LaDeviFg - = -l -; - -359 - } -} - -377 -bo - - gOWe -:: - $ch -( -ut8_t - * -wAddr -, -bo - -ch_mode - ) { - -378 -ut8_t - -id_b_numb -; - -379 -ut8_t - -ϡ_zo -, -rom_by_numb -; - -380 -bo - -ch_su -; - -381 -ut8_t - -id_b -, -cmp_id_b -; - -383  -rom_by_mask -, -ch_dei -; - -386 -id_b_numb - = 1; - -387 -ϡ_zo - = 0; - -388 -rom_by_numb - = 0; - -389 -rom_by_mask - = 1; - -390 -ch_su - = -l -; - -393 i(! -LaDeviFg -) { - -395 i(! - `t -()) { - -397 -LaDiscy - = 0; - -398 -LaDeviFg - = -l -; - -399 -LaFamyDiscy - = 0; - -400  -l -; - -404 i( -ch_mode - = -ue -) { - -405 - `wre -(0xF0); - -407 - `wre -(0xEC); - -413 -id_b - = - `ad_b -(); - -414 -cmp_id_b - = - `ad_b -(); - -417 i(( -id_b - =1&& ( -cmp_id_b - == 1)) { - -421 i( -id_b - ! -cmp_id_b -) { - -422 -ch_dei - = -id_b -; - -426 i( -id_b_numb - < -LaDiscy -) { - -427 -ch_dei - = (( -ROM_NO -[ -rom_by_numb -] & -rom_by_mask -) > 0); - -430 -ch_dei - = ( -id_b_numb - = -LaDiscy -); - -433 i( -ch_dei - == 0) { - -434 -ϡ_zo - = -id_b_numb -; - -437 i( -ϡ_zo - < 9) - -438 -LaFamyDiscy - = -ϡ_zo -; - -444 i( -ch_dei - == 1) - -445 -ROM_NO -[ -rom_by_numb -] | -rom_by_mask -; - -447 -ROM_NO -[ -rom_by_numb -] &~ -rom_by_mask -; - -450 - `wre_b -( -ch_dei -); - -454 -id_b_numb -++; - -455 -rom_by_mask - <<= 1; - -458 i( -rom_by_mask - == 0) { - -459 -rom_by_numb -++; - -460 -rom_by_mask - = 1; - -463 }  -rom_by_numb - < 8); - -466 i(!( -id_b_numb - < 65)) { - -468 -LaDiscy - = -ϡ_zo -; - -471 i( -LaDiscy - == 0) { - -472 -LaDeviFg - = -ue -; - -474 -ch_su - = -ue -; - -479 i(! -ch_su - || ! -ROM_NO -[0]) { - -480 -LaDiscy - = 0; - -481 -LaDeviFg - = -l -; - -482 -LaFamyDiscy - = 0; - -483 -ch_su - = -l -; - -485  -i - = 0; i < 8; i++) - -486 -wAddr -[ -i -] = -ROM_NO -[i]; - -489  -ch_su -; - -490 - } -} - -494 #i -ONEWIRE_CRC - - -499 #i -ONEWIRE_CRC8_TABLE - - -503 cڡ -ut8_t - -PROGMEM - - gdsc2x16_b -[] = {0x00, 0x5E, 0xBC, 0xE2, 0x61, 0x3F, 0xDD, 0x83, 0xC2, 0x9C, 0x7E, 0x20, 0xA3, 0xFD, 0x1F, 0x41, - -508 -ut8_t - - gOWe -:: - $c8 -(cڡ -ut8_t - * -addr -, ut8_ -n -) { - -509 -ut8_t - -c - = 0; - -511  -n ---) { - -512 -c - = * -addr -++ ^ crc; - -513 -c - = - `pgm_ad_by -( -dsc2x16_b - + (crc & 0x0f)) ^gm_read_byte(dscrc2x16_table + 16 + ((crc >> 4) & 0x0f)); - -516  -c -; - -517 - } -} - -523 -ut8_t - - gOWe -:: - $c8 -(cڡ -ut8_t - * -addr -, ut8_ -n -) { - -524 -ut8_t - -c - = 0; - -526  -n ---) { - -527 #i - `defed -( -__AVR__ -) - -528 -c - = - `_c_ibu_upde -(c, * -addr -++); - -530 -ut8_t - -by - = * -addr -++; - -531  -ut8_t - -i - = 8; i; i--) { - -532 -ut8_t - -mix - = ( -c - ^ -by -) & 0x01; - -533 -c - >>= 1; - -534 i( -mix -) - -535 -c - ^= 0x8C; - -536 -by - >>= 1; - -540  -c -; - -541 - } -} - -544 #i -ONEWIRE_CRC16 - - -545 -bo - - gOWe -:: - $check_c16 -(cڡ -ut8_t - * -put -, -ut16_t - -n -, cڡ ut8_* -vd_c -, ut16_ -c -) { - -546 -c - = ~ - `c16 -( -put -, -n -, crc); - -547  ( -c - & 0xFF= -vd_c -[0] && (crc >> 8) == inverted_crc[1]; - -548 - } -} - -550 -ut16_t - - gOWe -:: - $c16 -(cڡ -ut8_t - * -put -, -ut16_t - -n -, ut16_ -c -) { - -551 #i - `defed -( -__AVR__ -) - -552  -ut16_t - -i - = 0; i < -n -; i++) { - -553 -c - = - `_c16_upde -(c, -put -[ -i -]); - -556 cڡ -ut8_t - -oddry -[16] = {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0}; - -558  -ut16_t - -i - = 0; i < -n -; i++) { - -561 -ut16_t - -cda - = -put -[ -i -]; - -562 -cda - = (cd^ -c -) & 0xff; - -563 -c - >>= 8; - -565 i( -oddry -[ -cda - & 0x0F] ^ oddparity[cdata >> 4]) - -566 -c - ^= 0xC001; - -568 -cda - <<= 6; - -569 -c - ^ -cda -; - -570 -cda - <<= 1; - -571 -c - ^ -cda -; - -574  -c -; - -575 - } -} - -581 #agm -GCC - -dgnoic -op - - @lib/OneWire/OneWire.h - -1 #ide -OWe_h - - -2  - #OWe_h - - - ) - -4 #ifde -__lulus - - -6  - ~ - -8 #i -defed -( -__AVR__ -) - -9  - ~ - -12 #i -ARDUINO - >= 100 - -13  - ~ - -15  - ~"WProgm.h -" - -16  - ~"ps_duo.h -" - -30 #ide -ONEWIRE_SEARCH - - -31  - #ONEWIRE_SEARCH - 1 - - ) - -35 #ide -ONEWIRE_CRC - - -36  - #ONEWIRE_CRC - 1 - - ) - -44 #ide -ONEWIRE_CRC8_TABLE - - -45  - #ONEWIRE_CRC8_TABLE - 1 - - ) - -50 #ide -ONEWIRE_CRC16 - - -51  - #ONEWIRE_CRC16 - 1 - - ) - -55  - ~"OWe_de_gty.h -" - -57 as - cOWe - { - -58 - mive -: - -59 -IO_REG_TYPE - -bmask -; - -60 vީ -IO_REG_TYPE - * - mbaReg -; - -62 #i -ONEWIRE_SEARCH - - -64  - mROM_NO -[8]; - -65 -ut8_t - - mLaDiscy -; - -66 -ut8_t - - mLaFamyDiscy -; - -67 -bo - - mLaDeviFg -; - -70 - mpublic -: - -71 - $OWe -() { - -73 - $OWe -( -ut8_t - -p -) { - -74 - `beg -( -p -); - -75 - } -} - -76  -beg -( -ut8_t - -p -); - -81 #ifde -ARDUINO_ARCH_ESP32 - - -82 -ut8_t - -IRAM_ATTR - -t -(); - -84 -ut8_t - -t -(); - -88  - -(cڡ -ut8_t - -rom -[8]); - -91  -sk -(); - -97  -wre -( -ut8_t - -v -, ut8_ -pow - = 0); - -99  -wre_bys -(cڡ -ut8_t - * -buf -, -ut16_t - -cou -, -bo - -pow - = 0); - -102 -ut8_t - -ad -(); - -104  -ad_bys -( -ut8_t - * -buf -, -ut16_t - -cou -); - -108 #ifde -ARDUINO_ARCH_ESP32 - - -109  -IRAM_ATTR - -wre_b -( -ut8_t - -v -); - -111  -wre_b -( -ut8_t - -v -); - -115 #ifde -ARDUINO_ARCH_ESP32 - - -116 -ut8_t - -IRAM_ATTR - -ad_b -(); - -118 -ut8_t - -ad_b -(); - -125  -dow -(); - -127 #i -ONEWIRE_SEARCH - - -129  -t_ch -(); - -133  -rg_ch -( -ut8_t - -my_code -); - -141 -bo - -ch -( -ut8_t - * -wAddr -, bo -ch_mode - = -ue -); - -144 #i -ONEWIRE_CRC - - -147  -ut8_t - -c8 -(cڡ ut8_* -addr -, ut8_ -n -); - -149 #i -ONEWIRE_CRC16 - - -170  -bo - -check_c16 -(cڡ -ut8_t - * -put -, -ut16_t - -n -, cڡ ut8_* -vd_c -, ut16_ -c - = 0); - -184  -ut16_t - -c16 -(cڡ -ut8_t - * -put -, ut16_ -n -, ut16_ -c - = 0); - -190 #ifde -IO_REG_TYPE - - -191 #unde -IO_REG_TYPE - - - @lib/OneWire/OneWire_direct_gpio.h - -1 #ide -OWe_De_GPIO_h - - -2  - #OWe_De_GPIO_h - - - ) - -8  - ~ - -12 #i -defed -( -__AVR__ -) - -13  - #PIN_TO_BASEREG -( -p -( - `ptIutRegi -( - `digPToPt -՚))) - - ) - -14  - #PIN_TO_BITMASK -( -p -( - `digPToBMask -՚)) - - ) - -15  - #IO_REG_TYPE - -ut8_t - - - ) - -16  - #IO_REG_BASE_ATTR - - `asm -("r30") - - ) - -17  - #IO_REG_MASK_ATTR - - - ) - -18 #i -defed -( -__AVR_ATmega4809__ -) - -19  - #DIRECT_READ -( -ba -, -mask -(((*(ba)& (mask)? 1 : 0) - - ) - -20  - #DIRECT_MODE_INPUT -( -ba -, -mask -((*((ba)-8)&~(mask)) - - ) - -21  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -((*((ba)-8)|(mask)) - - ) - -22  - #DIRECT_WRITE_LOW -( -ba -, -mask -((*((ba)-4)&~(mask)) - - ) - -23  - #DIRECT_WRITE_HIGH -( -ba -, -mask -((*((ba)-4)|(mask)) - - ) - -25  - #DIRECT_READ -( -ba -, -mask -(((*(ba)& (mask)? 1 : 0) - - ) - -26  - #DIRECT_MODE_INPUT -( -ba -, -mask -((*((ba+ 1)&~(mask)) - - ) - -27  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -((*((ba+ 1)|(mask)) - - ) - -28  - #DIRECT_WRITE_LOW -( -ba -, -mask -((*((ba+ 2)&~(mask)) - - ) - -29  - #DIRECT_WRITE_HIGH -( -ba -, -mask -((*((ba+ 2)|(mask)) - - ) - -32 #i -defed -( -__MK20DX128__ -|| defed( -__MK20DX256__ -|| defed( -__MK66FX1M0__ -|| defed( -__MK64FX512__ -) - -33  - #PIN_TO_BASEREG -( -p -( - `ptOuutRegi -՚)) - - ) - -34  - #PIN_TO_BITMASK -( -p -(1) - - ) - -35  - #IO_REG_TYPE - -ut8_t - - - ) - -36  - #IO_REG_BASE_ATTR - - - ) - -37  - #IO_REG_MASK_ATTR - - `__ibu__ -(( -unud -)) - - ) - -38  - #DIRECT_READ -( -ba -, -mask -(*((ba+ 512)) - - ) - -39  - #DIRECT_MODE_INPUT -( -ba -, -mask -(*((ba+ 6400) - - ) - -40  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -(*((ba+ 6401) - - ) - -41  - #DIRECT_WRITE_LOW -( -ba -, -mask -(*((ba+ 2561) - - ) - -42  - #DIRECT_WRITE_HIGH -( -ba -, -mask -(*((ba+ 1281) - - ) - -44 #i -defed -( -__MKL26Z64__ -) - -45  - #PIN_TO_BASEREG -( -p -( - `ptOuutRegi -՚)) - - ) - -46  - #PIN_TO_BITMASK -( -p -( - `digPToBMask -՚)) - - ) - -47  - #IO_REG_TYPE - -ut8_t - - - ) - -48  - #IO_REG_BASE_ATTR - - - ) - -49  - #IO_REG_MASK_ATTR - - - ) - -50  - #DIRECT_READ -( -ba -, -mask -((*((ba+ 16& (mask)? 1 : 0) - - ) - -51  - #DIRECT_MODE_INPUT -( -ba -, -mask -(*((ba+ 20&~(mask)) - - ) - -52  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -(*((ba+ 20|(mask)) - - ) - -53  - #DIRECT_WRITE_LOW -( -ba -, -mask -(*((ba+ 8(mask)) - - ) - -54  - #DIRECT_WRITE_HIGH -( -ba -, -mask -(*((ba+ 4(mask)) - - ) - -56 #i -defed -( -__IMXRT1052__ -|| defed( -__IMXRT1062__ -) - -57  - #PIN_TO_BASEREG -( -p -( - `ptOuutRegi -՚)) - - ) - -58  - #PIN_TO_BITMASK -( -p -( - `digPToBMask -՚)) - - ) - -59  - #IO_REG_TYPE - -ut32_t - - - ) - -60  - #IO_REG_BASE_ATTR - - - ) - -61  - #IO_REG_MASK_ATTR - - - ) - -62  - #DIRECT_READ -( -ba -, -mask -((*((ba+ 2& (mask)? 1 : 0) - - ) - -63  - #DIRECT_MODE_INPUT -( -ba -, -mask -(*((ba+ 1&~(mask)) - - ) - -64  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -(*((ba+ 1|(mask)) - - ) - -65  - #DIRECT_WRITE_LOW -( -ba -, -mask -(*((ba+ 34(mask)) - - ) - -66  - #DIRECT_WRITE_HIGH -( -ba -, -mask -(*((ba+ 33(mask)) - - ) - -68 #i -defed -( -__SAM3X8E__ -|| defed( -__SAM3A8C__ -|| defed( -__SAM3A4C__ -) - -73  - #PIN_TO_BASEREG -( -p -(&( - `digPToPt -՚)-> -PIO_PER -)) - - ) - -74  - #PIN_TO_BITMASK -( -p -( - `digPToBMask -՚)) - - ) - -75  - #IO_REG_TYPE - -ut32_t - - - ) - -76  - #IO_REG_BASE_ATTR - - - ) - -77  - #IO_REG_MASK_ATTR - - - ) - -78  - #DIRECT_READ -( -ba -, -mask -(((*((ba+ 15)& (mask)? 1 : 0) - - ) - -79  - #DIRECT_MODE_INPUT -( -ba -, -mask -((*((ba+ 5)(mask)) - - ) - -80  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -((*((ba+ 4)(mask)) - - ) - -81  - #DIRECT_WRITE_LOW -( -ba -, -mask -((*((ba+ 13)(mask)) - - ) - -82  - #DIRECT_WRITE_HIGH -( -ba -, -mask -((*((ba+ 12)(mask)) - - ) - -83 #ide -PROGMEM - - -84  - #PROGMEM - - - ) - -86 #ide -pgm_ad_by - - -87  - #pgm_ad_by -( -addr -(*(cڡ -ut8_t - *)ddr)) - - ) - -90 #i -defed -( -__PIC32MX__ -) - -91  - #PIN_TO_BASEREG -( -p -( - `ptModeRegi -( - `digPToPt -՚))) - - ) - -92  - #PIN_TO_BITMASK -( -p -( - `digPToBMask -՚)) - - ) - -93  - #IO_REG_TYPE - -ut32_t - - - ) - -94  - #IO_REG_BASE_ATTR - - - ) - -95  - #IO_REG_MASK_ATTR - - - ) - -96  - #DIRECT_READ -( -ba -, -mask -) (((*(base + 4)) & (mask)) ? 1 : 0) - -97  - #DIRECT_MODE_INPUT -( -ba -, -mask -) ((*(base + 2)) = (mask)) - -98  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -) ((*(base + 1)) = (mask)) - -99  - #DIRECT_WRITE_LOW -( -ba -, -mask -) ((*(base + 8 + 1)) = (mask)) - -100  - #DIRECT_WRITE_HIGH -( -ba -, -mask -) ((*(base + 8 + 2)) = (mask)) - -101 - - ) - -102 #i -defed -( -ARDUINO_ARCH_ESP8266 -) - -108  - #PIN_TO_BASEREG -( -p -((vީ -ut32_t - *) -GPO -) - - ) - -109  - #PIN_TO_BITMASK -( -p -(1 <<) - - ) - -110  - #IO_REG_TYPE - -ut32_t - - - ) - -111  - #IO_REG_BASE_ATTR - - - ) - -112  - #IO_REG_MASK_ATTR - - - ) - -113  - #DIRECT_READ -( -ba -, -mask -(( -GPI - & (mask)) ? 1 : 0) - -114  - #DIRECT_MODE_INPUT -( -ba -, -mask -( -GPE - &= ~(mask)) - -115  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -( -GPE - |= (mask)) - -116  - #DIRECT_WRITE_LOW -( -ba -, -mask -( -GPOC - = (mask)) - -117  - #DIRECT_WRITE_HIGH -( -ba -, -mask -( -GPOS - = (mask)) - -118 - - ) - -119 #i -defed -( -ARDUINO_ARCH_ESP32 -) - -120  - ~ - -121  - #PIN_TO_BASEREG -( -p -(0) - - ) - -122  - #PIN_TO_BITMASK -( -p -՚) - - ) - -123  - #IO_REG_TYPE - -ut32_t - - - ) - -124  - #IO_REG_BASE_ATTR - - - ) - -125  - #IO_REG_MASK_ATTR - - - ) - -127  -le - -__ibu__ -(( -ways_le -) -IO_REG_TYPE - - $deRd -( -IO_REG_TYPE - -p -) { - -128 i( -p - < 32) - -129  ( -GPIO -. - - >> -p -) & 0x1; - -130 i( -p - < 40) - -131  ( -GPIO -. -1 -. -v - >> ( -p - - 32)) & 0x1; - -134 - } -} - -136  -le - -__ibu__ -(( -ways_le -) - $deWreLow -( -IO_REG_TYPE - -p -) { - -137 i( -p - < 32) - -138 -GPIO -. -out_w1tc - = (( -ut32_t -)1 << -p -); - -139 i( -p - < 34) - -140 -GPIO -. -out1_w1tc -. -v - = (( -ut32_t -)1 << ( -p - - 32)); - -141 - } -} - -143  -le - -__ibu__ -(( -ways_le -) - $deWreHigh -( -IO_REG_TYPE - -p -) { - -144 i( -p - < 32) - -145 -GPIO -. -out_w1ts - = (( -ut32_t -)1 << -p -); - -146 i( -p - < 34) - -147 -GPIO -. -out1_w1ts -. -v - = (( -ut32_t -)1 << ( -p - - 32)); - -148 - } -} - -150  -le - -__ibu__ -(( -ways_le -) - $deModeIut -( -IO_REG_TYPE - -p -) { - -151 i( - `digPIsVid -( -p -)) { - -152 -ut32_t - - `c_g -( -c_gpio_desc -[ -p -]. -g -); - -154 i( -c_g -) - -156 - `ESP_REG -( -c_g -ESP_REGtc_g& ~( -c_gpio_desc -[ -p -]. -mux -); - -157 - `ESP_REG -( -c_g -ESP_REGtc_g& ~( -c_gpio_desc -[ -p -]. -puup - |tc_gpio_desc[p]. -pudown -); - -160 i( -p - < 32) - -161 -GPIO -. -ab_w1tc - = (( -ut32_t -)1 << -p -); - -163 -GPIO -. -ab1_w1tc -. -v - = (( -ut32_t -)1 << ( -p - - 32)); - -165 -ut32_t - - `pFuni -((ut32_t)2 << -FUN_DRV_S -); - -166 -pFuni - | -FUN_IE -; - -167 -pFuni - |(( -ut32_t -)2 << -MCU_SEL_S -); - -169 - `ESP_REG -( -DR_REG_IO_MUX_BASE - + -e32_gpioMux -[ -p -]. -g - -pFuni -; - -171 -GPIO -. -p -[p]. -v - = 0; - -173 - } -} - -175  -le - -__ibu__ -(( -ways_le -) - $deModeOuut -( -IO_REG_TYPE - -p -) { - -176 i( - `digPIsVid -( -p -) &&in <= 33) - -178 -ut32_t - - `c_g -( -c_gpio_desc -[ -p -]. -g -); - -180 i( -c_g -) - -182 - `ESP_REG -( -c_g -ESP_REGtc_g& ~( -c_gpio_desc -[ -p -]. -mux -); - -183 - `ESP_REG -( -c_g -ESP_REGtc_g& ~( -c_gpio_desc -[ -p -]. -puup - |tc_gpio_desc[p]. -pudown -); - -186 i( -p - < 32) - -187 -GPIO -. -ab_w1ts - = (( -ut32_t -)1 << -p -); - -189 -GPIO -. -ab1_w1ts -. -v - = (( -ut32_t -)1 << ( -p - - 32)); - -191 -ut32_t - - `pFuni -((ut32_t)2 << -FUN_DRV_S -); - -192 -pFuni - | -FUN_IE -; - -193 -pFuni - |(( -ut32_t -)2 << -MCU_SEL_S -); - -195 - `ESP_REG -( -DR_REG_IO_MUX_BASE - + -e32_gpioMux -[ -p -]. -g - -pFuni -; - -197 -GPIO -. -p -[p]. -v - = 0; - -199 - } -} - -201  - #DIRECT_READ -( -ba -, -p - - `deRd -՚) - - ) - -202  - #DIRECT_WRITE_LOW -( -ba -, -p - - `deWreLow -՚) - - ) - -203  - #DIRECT_WRITE_HIGH -( -ba -, -p - - `deWreHigh -՚) - - ) - -204  - #DIRECT_MODE_INPUT -( -ba -, -p - - `deModeIut -՚) - - ) - -205  - #DIRECT_MODE_OUTPUT -( -ba -, -p - - `deModeOuut -՚) - - ) - -208 #ifde -us - - -209 #unde -us - - -211 #ifde -noIrus - - -212 #unde -noIrus - - -214  - #noIrus -() \ - -216 -ptMUX_TYPE - -mux - = -ptMUX_INITIALIZER_UNLOCKED -; \ - -217 - `ptENTER_CRITICAL -(& -mux -) - - ) - -218  - #us -() \ - -219 - `ptEXIT_CRITICAL -(& -mux -); \ - -220 } - - ) - -223 #i -defed -( -ARDUINO_ARCH_STM32 -) - -224  - #PIN_TO_BASEREG -( -p -(0) - - ) - -225  - #PIN_TO_BITMASK -( -p -(( -ut32_t -) - `digPToPName -՚)) - - ) - -226  - #IO_REG_TYPE - -ut32_t - - - ) - -227  - #IO_REG_BASE_ATTR - - - ) - -228  - #IO_REG_MASK_ATTR - - - ) - -229  - #DIRECT_READ -( -ba -, -p - - `digRdFa -(( -PName -) - - ) - -230  - #DIRECT_WRITE_LOW -( -ba -, -p - - `digWreFa -(( -PName -, -LOW -) - - ) - -231  - #DIRECT_WRITE_HIGH -( -ba -, -p - - `digWreFa -(( -PName -, -HIGH -) - - ) - -232  - #DIRECT_MODE_INPUT -( -ba -, -p - - `p_funi -(( -PName -, - `STM_PIN_DATA -( -STM_MODE_INPUT -, -GPIO_NOPULL -, 0)) - - ) - -233  - #DIRECT_MODE_OUTPUT -( -ba -, -p - - `p_funi -(( -PName -, - `STM_PIN_DATA -( -STM_MODE_OUTPUT_PP -, -GPIO_NOPULL -, 0)) - - ) - -235 #i -defed -( -__SAMD21G18A__ -) - -236  - #PIN_TO_BASEREG -( -p - - `ptModeRegi -( - `digPToPt -՚)) - - ) - -237  - #PIN_TO_BITMASK -( -p -( - `digPToBMask -՚)) - - ) - -238  - #IO_REG_TYPE - -ut32_t - - - ) - -239  - #IO_REG_BASE_ATTR - - - ) - -240  - #IO_REG_MASK_ATTR - - - ) - -241  - #DIRECT_READ -( -ba -, -mask -(((*((ba+ 8)& (mask)? 1 : 0) - - ) - -242  - #DIRECT_MODE_INPUT -( -ba -, -mask -((*((ba+ 1)(mask)) - - ) - -243  - #DIRECT_MODE_OUTPUT -( -ba -, -mask -((*((ba+ 2)(mask)) - - ) - -244  - #DIRECT_WRITE_LOW -( -ba -, -mask -((*((ba+ 5)(mask)) - - ) - -245  - #DIRECT_WRITE_HIGH -( -ba -, -mask -((*((ba+ 6)(mask)) - - ) - -247 #i -defed -( -__ASR6501__ -) - -248  - #PIN_IN_PORT -( -p -՚ % -PIN_NUMBER_IN_PORT -) - - ) - -249  - #PORT_FROM_PIN -( -p -՚ / -PIN_NUMBER_IN_PORT -) - - ) - -250  - #PORT_OFFSET -( -pt -( -PORT_REG_SHFIT - *t) - - ) - -251  - #PORT_ADDRESS -( -p -( -CYDEV_GPIO_BASE - + - `PORT_OFFSET -( - `PORT_FROM_PIN -՚))) - - ) - -253  - #PIN_TO_BASEREG -( -p -(0) - - ) - -254  - #PIN_TO_BITMASK -( -p -՚) - - ) - -255  - #IO_REG_TYPE - -ut32_t - - - ) - -256  - #IO_REG_BASE_ATTR - - - ) - -257  - #IO_REG_MASK_ATTR - - - ) - -258  - #DIRECT_READ -( -ba -, -p - - `CY_SYS_PINS_READ_PIN -( - `PORT_ADDRESS -՚+ 4, - `PIN_IN_PORT -՚)) - - ) - -259  - #DIRECT_WRITE_LOW -( -ba -, -p - - `CY_SYS_PINS_CLEAR_PIN -( - `PORT_ADDRESS -՚), - `PIN_IN_PORT -՚)) - - ) - -260  - #DIRECT_WRITE_HIGH -( -ba -, -p - - `CY_SYS_PINS_SET_PIN -( - `PORT_ADDRESS -՚), - `PIN_IN_PORT -՚)) - - ) - -261  - #DIRECT_MODE_INPUT -( -ba -, -p - - `CY_SYS_PINS_SET_DRIVE_MODE -( - `PORT_ADDRESS -՚+ 8, - `PIN_IN_PORT -՚), -CY_SYS_PINS_DM_DIG_HIZ -) - - ) - -262  - #DIRECT_MODE_OUTPUT -( -ba -, -p - - `CY_SYS_PINS_SET_DRIVE_MODE -( - `PORT_ADDRESS -՚+ 8, - `PIN_IN_PORT -՚), -CY_SYS_PINS_DM_STRONG -) - - ) - -264 #i -defed -( -RBL_NRF51822 -) - -265  - #PIN_TO_BASEREG -( -p -(0) - - ) - -266  - #PIN_TO_BITMASK -( -p -՚) - - ) - -267  - #IO_REG_TYPE - -ut32_t - - - ) - -268  - #IO_REG_BASE_ATTR - - - ) - -269  - #IO_REG_MASK_ATTR - - - ) - -270  - #DIRECT_READ -( -ba -, -p - - `f_gpio_p_ad -՚) - - ) - -271  - #DIRECT_WRITE_LOW -( -ba -, -p - - `f_gpio_p_r -՚) - - ) - -272  - #DIRECT_WRITE_HIGH -( -ba -, -p - - `f_gpio_p_t -՚) - - ) - -273  - #DIRECT_MODE_INPUT -( -ba -, -p - - `f_gpio_cfg_put -՚, -NRF_GPIO_PIN_NOPULL -) - - ) - -274  - #DIRECT_MODE_OUTPUT -( -ba -, -p - - `f_gpio_cfg_ouut -՚) - - ) - -276 #i -defed -( -__c__ -) - -278  - ~"scss_gis.h -" - -279  - ~"p܏b.h -" - -280  - ~"avr/pgma.h -" - -282  - #GPIO_ID -( -p -( -g_APDesti -[p]. -ulGPIOId -) - - ) - -283  - #GPIO_TYPE -( -p -( -g_APDesti -[p]. -ulGPIOTy -) - - ) - -284  - #GPIO_BASE -( -p -( -g_APDesti -[p]. -ulGPIOBa -) - - ) - -285  - #DIR_OFFSET_SS - 0x01 - - ) - -286  - #DIR_OFFSET_SOC - 0x04 - - ) - -287  - #EXT_PORT_OFFSET_SS - 0x0A - - ) - -288  - #EXT_PORT_OFFSET_SOC - 0x50 - - ) - -291  - #PIN_TO_BASEREG -( -p -((vީ -ut32_t - *) -g_APDesti -[p]. -ulGPIOBa -) - - ) - -292  - #PIN_TO_BITMASK -( -p - - ) -pin - -293  - #IO_REG_TYPE - -ut32_t - - - ) - -294  - #IO_REG_BASE_ATTR - - - ) - -295  - #IO_REG_MASK_ATTR - - - ) - -297  -le - -__ibu__ -(( -ways_le -) -IO_REG_TYPE - - $deRd -(vީ -IO_REG_TYPE - * -ba -, IO_REG_TYPE -p -) { - -298 -IO_REG_TYPE - -t -; - -299 i( -SS_GPIO - = - `GPIO_TYPE -( -p -)) { - -300 -t - = - `READ_ARC_REG -((( -IO_REG_TYPE -) -ba - + -EXT_PORT_OFFSET_SS -)); - -302 -t - = - `MMIO_REG_VAL_FROM_BASE -(( -IO_REG_TYPE -) -ba -, -EXT_PORT_OFFSET_SOC -); - -304  (( -t - >> - `GPIO_ID -( -p -)) & 0x01); - -305 - } -} - -307  -le - -__ibu__ -(( -ways_le -) - $deModeIut -(vީ -IO_REG_TYPE - * -ba -, IO_REG_TYPE -p -) { - -308 i( -SS_GPIO - = - `GPIO_TYPE -( -p -)) { - -309 - `WRITE_ARC_REG -( - `READ_ARC_REG -(((( -IO_REG_TYPE -) -ba -+ -DIR_OFFSET_SS -)& ~(0x01 << - `GPIO_ID -( -p -)), ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); - -311 - `MMIO_REG_VAL_FROM_BASE -(( -IO_REG_TYPE -) -ba -, -DIR_OFFSET_SOC -&~(0x01 << - `GPIO_ID -( -p -)); - -313 - } -} - -315  -le - -__ibu__ -(( -ways_le -) - $deModeOuut -(vީ -IO_REG_TYPE - * -ba -, IO_REG_TYPE -p -) { - -316 i( -SS_GPIO - = - `GPIO_TYPE -( -p -)) { - -317 - `WRITE_ARC_REG -( - `READ_ARC_REG -((( -IO_REG_TYPE -)( -ba -+ -DIR_OFFSET_SS -)| (0x01 << - `GPIO_ID -( -p -)), ((IO_REG_TYPE)(base) + DIR_OFFSET_SS)); - -319 - `MMIO_REG_VAL_FROM_BASE -(( -IO_REG_TYPE -) -ba -, -DIR_OFFSET_SOC -|(0x01 << - `GPIO_ID -( -p -)); - -321 - } -} - -323  -le - -__ibu__ -(( -ways_le -) - $deWreLow -(vީ -IO_REG_TYPE - * -ba -, IO_REG_TYPE -p -) { - -324 i( -SS_GPIO - = - `GPIO_TYPE -( -p -)) { - -325 - `WRITE_ARC_REG -( - `READ_ARC_REG -( -ba -& ~(0x01 << - `GPIO_ID -( -p -)), base); - -327 - `MMIO_REG_VAL -( -ba -&~(0x01 << - `GPIO_ID -( -p -)); - -329 - } -} - -331  -le - -__ibu__ -(( -ways_le -) - $deWreHigh -(vީ -IO_REG_TYPE - * -ba -, IO_REG_TYPE -p -) { - -332 i( -SS_GPIO - = - `GPIO_TYPE -( -p -)) { - -333 - `WRITE_ARC_REG -( - `READ_ARC_REG -( -ba -| (0x01 << - `GPIO_ID -( -p -)), base); - -335 - `MMIO_REG_VAL -( -ba -|(0x01 << - `GPIO_ID -( -p -)); - -337 - } -} - -339  - #DIRECT_READ -( -ba -, -p - - `deRd -(ba,) - - ) - -340  - #DIRECT_MODE_INPUT -( -ba -, -p - - `deModeIut -(ba,) - - ) - -341  - #DIRECT_MODE_OUTPUT -( -ba -, -p - - `deModeOuut -(ba,) - - ) - -342  - #DIRECT_WRITE_LOW -( -ba -, -p - - `deWreLow -(ba,) - - ) - -343  - #DIRECT_WRITE_HIGH -( -ba -, -p - - `deWreHigh -(ba,) - - ) - -345 #i -defed -( -__riscv -) - -354  - #PIN_TO_BASEREG -( -p -(0) - - ) - -355  - #PIN_TO_BITMASK -( -p - - `digPToBMask -՚) - - ) - -356  - #IO_REG_TYPE - -ut32_t - - - ) - -357  - #IO_REG_BASE_ATTR - - - ) - -358  - #IO_REG_MASK_ATTR - - - ) - -360  -le - -__ibu__ -(( -ways_le -) -IO_REG_TYPE - - $deRd -( -IO_REG_TYPE - -mask -) { - -361  (( - `GPIO_REG -( -GPIO_INPUT_VAL -& -mask -) != 0) ? 1 : 0; - -362 - } -} - -364  -le - -__ibu__ -(( -ways_le -) - $deModeIut -( -IO_REG_TYPE - -mask -) { - -365 - `GPIO_REG -( -GPIO_OUTPUT_XOR -&~ -mask -; - -366 - `GPIO_REG -( -GPIO_IOF_EN -&~ -mask -; - -368 - `GPIO_REG -( -GPIO_INPUT_EN -| -mask -; - -369 - `GPIO_REG -( -GPIO_OUTPUT_EN -&~ -mask -; - -370 - } -} - -372  -le - -__ibu__ -(( -ways_le -) - $deModeOuut -( -IO_REG_TYPE - -mask -) { - -373 - `GPIO_REG -( -GPIO_OUTPUT_XOR -&~ -mask -; - -374 - `GPIO_REG -( -GPIO_IOF_EN -&~ -mask -; - -376 - `GPIO_REG -( -GPIO_INPUT_EN -&~ -mask -; - -377 - `GPIO_REG -( -GPIO_OUTPUT_EN -| -mask -; - -378 - } -} - -380  -le - -__ibu__ -(( -ways_le -) - $deWreLow -( -IO_REG_TYPE - -mask -) { - -381 - `GPIO_REG -( -GPIO_OUTPUT_VAL -&~ -mask -; - -382 - } -} - -384  -le - -__ibu__ -(( -ways_le -) - $deWreHigh -( -IO_REG_TYPE - -mask -) { - -385 - `GPIO_REG -( -GPIO_OUTPUT_VAL -| -mask -; - -386 - } -} - -388  - #DIRECT_READ -( -ba -, -mask - - `deRd -(mask) - - ) - -389  - #DIRECT_WRITE_LOW -( -ba -, -mask - - `deWreLow -(mask) - - ) - -390  - #DIRECT_WRITE_HIGH -( -ba -, -mask - - `deWreHigh -(mask) - - ) - -391  - #DIRECT_MODE_INPUT -( -ba -, -mask - - `deModeIut -(mask) - - ) - -392  - #DIRECT_MODE_OUTPUT -( -ba -, -mask - - `deModeOuut -(mask) - - ) - -395  - #PIN_TO_BASEREG -( -p -(0) - - ) - -396  - #PIN_TO_BITMASK -( -p -՚) - - ) - -397  - #IO_REG_TYPE -  - - ) - -398  - #IO_REG_BASE_ATTR - - - ) - -399  - #IO_REG_MASK_ATTR - - - ) - -400  - #DIRECT_READ -( -ba -, -p - - `digRd -՚) - - ) - -401  - #DIRECT_WRITE_LOW -( -ba -, -p - - `digWre -՚, -LOW -) - - ) - -402  - #DIRECT_WRITE_HIGH -( -ba -, -p - - `digWre -՚, -HIGH -) - - ) - -403  - #DIRECT_MODE_INPUT -( -ba -, -p - - `pMode -՚, -INPUT -) - - ) - -404  - #DIRECT_MODE_OUTPUT -( -ba -, -p - - `pMode -՚, -OUTPUT -) - - ) - - @lib/OneWire/OneWire_direct_regtype.h - -1 #ide -OWe_De_RegTy_h - - -2  - #OWe_De_RegTy_h - - - ) - -4  - ~ - -8 #i -defed -( -__AVR__ -) - -9  - #IO_REG_TYPE - -ut8_t - - - ) - -11 #i -defed -( -__MK20DX128__ -|| defed( -__MK20DX256__ -|| defed( -__MK66FX1M0__ -|| defed( -__MK64FX512__ -) - -12  - #IO_REG_TYPE - -ut8_t - - - ) - -14 #i -defed -( -__IMXRT1052__ -|| defed( -__IMXRT1062__ -) - -15  - #IO_REG_TYPE - -ut32_t - - - ) - -17 #i -defed -( -__MKL26Z64__ -) - -18  - #IO_REG_TYPE - -ut8_t - - - ) - -20 #i -defed -( -__SAM3X8E__ -|| defed( -__SAM3A8C__ -|| defed( -__SAM3A4C__ -) - -21  - #IO_REG_TYPE - -ut32_t - - - ) - -23 #i -defed -( -__PIC32MX__ -) - -24  - #IO_REG_TYPE - -ut32_t - - - ) - -26 #i -defed -( -ARDUINO_ARCH_ESP8266 -) - -27  - #IO_REG_TYPE - -ut32_t - - - ) - -29 #i -defed -( -ARDUINO_ARCH_ESP32 -) - -30  - #IO_REG_TYPE - -ut32_t - - - ) - -31  - #IO_REG_MASK_ATTR - - - ) - -33 #i -defed -( -ARDUINO_ARCH_STM32 -) - -34  - #IO_REG_TYPE - -ut32_t - - - ) - -36 #i -defed -( -__SAMD21G18A__ -) - -37  - #IO_REG_TYPE - -ut32_t - - - ) - -39 #i -defed -( -__ASR6501__ -) - -40  - #IO_REG_TYPE - -ut32_t - - - ) - -42 #i -defed -( -RBL_NRF51822 -) - -43  - #IO_REG_TYPE - -ut32_t - - - ) - -45 #i -defed -( -__c__ -) - -46  - #IO_REG_TYPE - -ut32_t - - - ) - -48 #i -defed -( -__riscv -) - -49  - #IO_REG_TYPE - -ut32_t - - - ) - -52  - #IO_REG_TYPE -  - - ) - - @lib/framework/APSettingsService.cpp - -1  - ~ - -3 - gAPStgsSvi -:: - $APStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -) : - -4 - `_hpEndpot -( -APStgs -:: -ad -, APStgs:: -upde -, -this -, -rv -, -AP_SETTINGS_SERVICE_PATH -, -curyMag -), - -5 - `_fsPsi -( -APStgs -:: -ad -, APStgs:: -upde -, -this -, -fs -, -AP_SETTINGS_FILE -), - -6 - `_dnsSv -( -nuαr -), - -7 - `_ϡMaged -(0), - -8 - $_cfiguAp -( -l -) { - -9 - `addUpdeHdr -([&](cڡ -Sg -& -igId -{ - `cfiguAP -(); }, -l -); - -10 - } -} - -12  - gAPStgsSvi -:: - $beg -() { - -13 -_fsPsi -. - `adFromFS -(); - -14 - `cfiguAP -(); - -15 - } -} - -17  - gAPStgsSvi -:: - $cfiguAP -() { - -18 -_ϡMaged - = -uuid -:: - `g_uime -(- -MANAGE_NETWORK_DELAY -; - -19 -_cfiguAp - = -ue -; - -20 - } -} - -22  - gAPStgsSvi -:: - $lo -() { - -23  -cutMlis - = -uuid -:: - `g_uime -(); - -24  -mageEpd - = ()( -cutMlis - - -_ϡMaged -); - -25 i( -mageEpd - > -MANAGE_NETWORK_DELAY -) { - -26 -_ϡMaged - = -cutMlis -; - -27 - `mageAP -(); - -29 - `hdDNS -(); - -30 - } -} - -32  - gAPStgsSvi -:: - $mageAP -() { - -33 -WiFiMode_t - -cutWiFiMode - = -WiFi -. - `gMode -(); - -34 i( -_e -. -ovisiMode - = -AP_MODE_ALWAYS - || - -35 ( -_e -. -ovisiMode - = -AP_MODE_DISCONNECTED - && -WiFi -. - `us -(! -WL_CONNECTED -)) { - -36 i( -_cfiguAp - || -cutWiFiMode - = -WIFI_OFF - || cutWiFiMod= -WIFI_STA -) { - -37 - `tAP -(); - -39 } i(( -cutWiFiMode - = -WIFI_AP - || cutWiFiMod= -WIFI_AP_STA -) && - -40 ( -_cfiguAp - || ! -WiFi -. - `soAPgStiNum -())) { - -41 - `AP -(); - -43 -_cfiguAp - = -l -; - -44 - } -} - -46  - gAPStgsSvi -:: - $tAP -() { - -48 -WiFi -. - `soAPCfig -( -_e -. -lolIP -, _e. -gewayIP -, _e. -subtMask -); - -49 -WiFi -. - `soAP -( -_e -. -ssid -. - `c_r -(), _e. -sswd -.c_str()); - -50 i(! -_dnsSv -) { - -51 -IPAddss - -Ip - = -WiFi -. - `soAPIP -(); - -54 -_dnsSv - = -w - -DNSSv -; - -55 -_dnsSv --> - `t -( -DNS_PORT -, "*", -Ip -); - -57 - } -} - -59  - gAPStgsSvi -:: - $AP -() { - -60 i( -_dnsSv -) { - -62 -_dnsSv --> - ` -(); - -63 -de - -_dnsSv -; - -64 -_dnsSv - = -nuαr -; - -67 -WiFi -. - `soAPdisc -( -ue -); - -68 - } -} - -70  - gAPStgsSvi -:: - $hdDNS -() { - -71 i( -_dnsSv -) { - -72 -_dnsSv --> - `ossNextReque -(); - -74 - } -} - -76 -APNwkStus - - gAPStgsSvi -:: - $gAPNwkStus -() { - -77 -WiFiMode_t - -cutWiFiMode - = -WiFi -. - `gMode -(); - -78 -bo - -Aive - = -cutWiFiMode - = -WIFI_AP - || cutWiFiMod= -WIFI_AP_STA -; - -79 i( -Aive - && -_e -. -ovisiMode - ! -AP_MODE_ALWAYS - && -WiFi -. - `us -(= -WL_CONNECTED -) { - -80  -APNwkStus -:: -LINGERING -; - -82  -Aive - ? -APNwkStus -:: -ACTIVE - : APNwkStus:: -INACTIVE -; - -83 - } -} - - @lib/framework/APSettingsService.h - -1 #ide -APStgsCfig_h - - -2  - #APStgsCfig_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -13  - #MANAGE_NETWORK_DELAY - 10000 - - ) - -15  - #AP_MODE_ALWAYS - 0 - - ) - -16  - #AP_MODE_DISCONNECTED - 1 - - ) - -17  - #AP_MODE_NEVER - 2 - - ) - -19  - #DNS_PORT - 53 - - ) - -21 #ide -FACTORY_AP_PROVISION_MODE - - -22  - #FACTORY_AP_PROVISION_MODE - -AP_MODE_DISCONNECTED - - - ) - -25 #ide -FACTORY_AP_SSID - - -26  - #FACTORY_AP_SSID - "ems-e" - - ) - -29 #ide -FACTORY_AP_PASSWORD - - -30  - #FACTORY_AP_PASSWORD - "e-a" - - ) - -33 #ide -FACTORY_AP_LOCAL_IP - - -34  - #FACTORY_AP_LOCAL_IP - "192.168.4.1" - - ) - -37 #ide -FACTORY_AP_GATEWAY_IP - - -38  - #FACTORY_AP_GATEWAY_IP - "192.168.4.1" - - ) - -41 #ide -FACTORY_AP_SUBNET_MASK - - -42  - #FACTORY_AP_SUBNET_MASK - "255.255.255.0" - - ) - -45  - #AP_SETTINGS_FILE - "/cfig/Stgs.js" - - ) - -46  - #AP_SETTINGS_SERVICE_PATH - "//Stgs" - - ) - -48 - eAPNwkStus - { - mACTIVE - = 0, - mINACTIVE -, - mLINGERING - }; - -50 as - cAPStgs - { - -51 - mpublic -: - -52 -ut8_t - -ovisiMode -; - -53 -Sg - - mssid -; - -54 -Sg - - msswd -; - -55 -IPAddss - - mlolIP -; - -56 -IPAddss - - mgewayIP -; - -57 -IPAddss - - msubtMask -; - -59 -bo - - mݔ -==(cڡ -APStgs -& -gs -) const { - -60  -ovisiMode - = -gs -.ovisiMod&& -ssid - =𣉚gs.ssid && -sswd - == settings.password && - -61 -lolIP - = -gs -.lolIP && -gewayIP - =𣉚gs.gewayIP && -subtMask - == settings.subnetMask; - -64  - $ad -( -APStgs -& -gs -, -JsObje -& -ro -) { - -65 -ro -["ovisi_mode"] = -gs -. -ovisiMode -; - -66 -ro -["ssid"] = -gs -. -ssid -; - -67 -ro -["sswd"] = -gs -. -sswd -; - -68 -ro -["lol_"] = -gs -. -lolIP -. - `toSg -(); - -69 -ro -["geway_"] = -gs -. -gewayIP -. - `toSg -(); - -70 -ro -["subt_mask"] = -gs -. -subtMask -. - `toSg -(); - -71 - } -} - -73  -SUpdeResu - - $upde -( -JsObje -& -ro -, -APStgs -& -gs -) { - -74 -APStgs - -wStgs - = {}; - -75 -wStgs -. -ovisiMode - = -ro -["ovisi_mode"] | -FACTORY_AP_PROVISION_MODE -; - -76  -gs -. -ovisiMode -) { - -77  -AP_MODE_ALWAYS -: - -78  -AP_MODE_DISCONNECTED -: - -79  -AP_MODE_NEVER -: - -82 -wStgs -. -ovisiMode - = -AP_MODE_ALWAYS -; - -84 -wStgs -. -ssid - = -ro -["ssid"] | -FACTORY_AP_SSID -; - -85 -wStgs -. -sswd - = -ro -["sswd"] | -FACTORY_AP_PASSWORD -; - -87 -JsUts -:: - `adIP -( -ro -, "lol_", -wStgs -. -lolIP -, -FACTORY_AP_LOCAL_IP -); - -88 -JsUts -:: - `adIP -( -ro -, "geway_", -wStgs -. -gewayIP -, -FACTORY_AP_GATEWAY_IP -); - -89 -JsUts -:: - `adIP -( -ro -, "subt_mask", -wStgs -. -subtMask -, -FACTORY_AP_SUBNET_MASK -); - -91 i( -wStgs - = -gs -) { - -92  -SUpdeResu -:: -UNCHANGED -; - -94 -gs - = -wStgs -; - -95  -SUpdeResu -:: -CHANGED -; - -96 - } -} - -99 -ass - - gAPStgsSvi - : -public - -SfulSvi -< -APStgs -> { - -100 -public -: - -101 -APStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -); - -103  -beg -(); - -104  -lo -(); - -105 -APNwkStus - -gAPNwkStus -(); - -107 - give -: - -108 -HpEndpot -< -APStgs -> -_hpEndpot -; - -109 - gFSPsi -< - gAPStgs -> - g_fsPsi -; - -112 -DNSSv -* - g_dnsSv -; - -115 vީ - g_ϡMaged -; - -116 vީ -boޗn - - g_cfiguAp -; - -118  -cfiguAP -(); - -119  -mageAP -(); - -120  -tAP -(); - -121  -AP -(); - -122  -hdDNS -(); - - @lib/framework/APStatus.cpp - -1  - ~ - -3 - gAPStus -:: - $APStus -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -, -APStgsSvi -* -StgsSvi -) : - -4 - $_StgsSvi -( -StgsSvi -) { - -5 -rv --> - ` -( -AP_STATUS_SERVICE_PATH -, - -6 -HTTP_GET -, - -7 -curyMag --> - `wpReque -( -d -:: - `bd -(& -APStus -:: -Stus -, -this -, std:: -ahds -:: -_1 -), - -8 -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -9 - } -} - -11  - gAPStus -:: - $Stus -( -AsyncWebSvReque -* -que -) { - -12 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_AP_STATUS_SIZE -); - -13 -JsObje - -ro - = -ڣ --> - `gRo -(); - -15 -ro -["us"] = -_StgsSvi --> - `gAPNwkStus -(); - -16 -ro -["_addss"] = -WiFi -. - `soAPIP -(). - `toSg -(); - -17 -ro -["mac_addss"] = -WiFi -. - `soAPmacAddss -(); - -18 -ro -["i_num"] = -WiFi -. - `soAPgStiNum -(); - -20 -ڣ --> - `tLgth -(); - -21 -que --> - `nd -( -ڣ -); - -22 - } -} - - @lib/framework/APStatus.h - -1 #ide -APStus_h - - -2  - #APStus_h - - - ) - -4 #ifde -ESP32 - - -5  - ~ - -6  - ~ - -7 #i -defed -( -ESP8266 -) - -8  - ~ - -9  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -17  - ~ - -19  - #MAX_AP_STATUS_SIZE - 1024 - - ) - -20  - #AP_STATUS_SERVICE_PATH - "//Stus" - - ) - -22 as - cAPStus - { - -23 - mpublic -: - -24 -APStus -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -, -APStgsSvi -* -StgsSvi -); - -26 - mive -: - -27 -APStgsSvi -* -_StgsSvi -; - -28  -Stus -( -AsyncWebSvReque -* -que -); - - @lib/framework/ArduinoJsonJWT.cpp - -1  - ~"ArduoJsJWT.h -" - -3 - gArduoJsJWT -:: - $ArduoJsJWT -( -Sg - - -: - $_ -( - -) { - -4 - } -} - -6  -ArduoJsJWT -:: - $tSe -( -Sg - - -) { - -7 -_ - = - -; - -8 - } -} - -10 -Sg - - gArduoJsJWT -:: - $gSe -() { - -11  -_ -; - -12 - } -} - -21 -Sg - - gArduoJsJWT -:: - $sign -( -Sg -& -yld -) { - -22  -hmacResu -[32]; - -24 #ifde -ESP32 - - -25 -mbeds_md_cڋxt_t - -x -; - -26 -mbeds_md_ty_t - -md_ty - = -MBEDTLS_MD_SHA256 -; - -27 - `mbeds_md_ -(& -x -); - -28 - `mbeds_md_tup -(& -x -, - `mbeds_md_fo_om_ty -( -md_ty -), 1); - -29 - `mbeds_md_hmac_ts -(& -x -, (*) -_ -. - `c_r -(), _. - `ngth -()); - -30 - `mbeds_md_hmac_upde -(& -x -, (*) -yld -. - `c_r -(),ayld. - `ngth -()); - -31 - `mbeds_md_hmac_fish -(& -x -, -hmacResu -); - -32 - `mbeds_md_ -(& -x -); - -33 #i - `defed -( -ESP8266 -) - -34 -br_hmac_key_cڋxt - -keyCtx -; - -35 - `br_hmac_key_ -(& -keyCtx -, & -br_sha256_vb -, -_ -. - `c_r -(), _. - `ngth -()); - -36 -br_hmac_cڋxt - -hmacCtx -; - -37 - `br_hmac_ -(& -hmacCtx -, & -keyCtx -, 0); - -38 - `br_hmac_upde -(& -hmacCtx -, -yld -. - `c_r -(),ayld. - `ngth -()); - -39 - `br_hmac_out -(& -hmacCtx -, -hmacResu -); - -42  - `code -((*) -hmacResu -, 32); - -43 - } -} - -45 -Sg - - gArduoJsJWT -:: - $budJWT -( -JsObje -& -yld -) { - -47 -Sg - -jwt -; - -48 - `rlizeJs -( -yld -, -jwt -); - -49 -jwt - = - `code -(jwt. - `c_r -(), jwt. - `ngth -()); - -52 -jwt - = -JWT_HEADER - + '.' + jwt; - -55 -jwt - +'.' + - `sign -(jwt); - -57  -jwt -; - -58 - } -} - -60  - gArduoJsJWT -:: - $rJWT -( -Sg - -jwt -, -JsDocumt -& -jsDocumt -) { - -62 -jsDocumt -. - `r -(); - -65 i(! -jwt -. - `tsWh -( -JWT_HEADER -|| jwt. - `dexOf -('.'! -JWT_HEADER_SIZE -) { - -70  -sigtuDimIndex - = -jwt -. - `ϡIndexOf -('.'); - -71 i( -sigtuDimIndex - = -JWT_HEADER_SIZE -) { - -76 -Sg - -sigtu - = -jwt -. - `subrg -( -sigtuDimIndex - + 1); - -77 -jwt - = jwt. - `subrg -(0, -sigtuDimIndex -); - -78 i( - `sign -( -jwt -! -sigtu -) { - -83 -jwt - = jwt. - `subrg -( -JWT_HEADER_SIZE - + 1); - -84 -jwt - = - `decode -(jwt); - -87 -DerliziE - -r - = - `derlizeJs -( -jsDocumt -, -jwt -); - -88 i( -r - ! -DerliziE -:: -Ok - || ! -jsDocumt -. -is -< -JsObje ->()) { - -89 -jsDocumt -. - `r -(); - -91 - } -} - -93 -Sg - - gArduoJsJWT -:: - $code -(cڡ * -cr -,  -putL -) { - -95 -ba64_codee - -_e -; - -96 #ifde -ESP32 - - -97 - `ba64__codee -(& -_e -); - -98 -size_t - -codedLgth - = - `ba64_code_exed_n -( -putL -) + 1; - -99 #i - `defed -( -ESP8266 -) - -100 - `ba64__codee_newles -(& -_e -); - -101 -size_t - -codedLgth - = - `ba64_code_exed_n_newles -( -putL -) + 1; - -104 * -bufr - = (*) - `mloc -( -codedLgth - * ()); - -105 i( -bufr - = -nuαr -) { - -110  -n - = - `ba64_code_block -( -cr -, -putL -, & -bufr -[0], & -_e -); - -111 -n - + - `ba64_code_blockd -(& -bufr -[n], & -_e -); - -112 -bufr -[ -n -] = 0; - -115 -Sg - -vue - = - `Sg -( -bufr -); - -116 - ` -( -bufr -); - -117 -bufr - = -nuαr -; - -120  -vue -. - `ngth -(> 0 && vue. - `chAt -(value.length() - 1) == '=') { - -121 -vue -. - `move -(vue. - `ngth -() - 1); - -123 -vue -. - `a -('+', '-'); - -124 -vue -. - `a -('/', '_'); - -127  -vue -; - -128 - } -} - -130 -Sg - - gArduoJsJWT -:: - $decode -( -Sg - -vue -) { - -132 -vue -. - `a -('-', '+'); - -133 -vue -. - `a -('_', '/'); - -136  -bufr -[ - `ba64_decode_exed_n -( -vue -. - `ngth -()) + 1]; - -139  -n - = - `ba64_decode_chs -( -vue -. - `c_r -(), vue. - `ngth -(), & -bufr -[0]); - -140 -bufr -[ -n -] = 0; - -143  - `Sg -( -bufr -); - -144 - } -} - - @lib/framework/ArduinoJsonJWT.h - -1 #ide -ArduoJsJWT_H - - -2  - #ArduoJsJWT_H - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -9 #ifde -ESP32 - - -10  - ~ - -11 #i -defed -( -ESP8266 -) - -12  - ~ - -15 as - cArduoJsJWT - { - -16 - mive -: - -17 -Sg - -_ -; - -19 cڡ -Sg - - mJWT_HEADER - = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"; - -20 cڡ  - mJWT_HEADER_SIZE - = -JWT_HEADER -. -ngth -(); - -22 -Sg - -sign -(Sg& -vue -); - -24  -Sg - -code -(cڡ * -cr -,  -n -); - -25  -Sg - -decode -(Sg -vue -); - -27 - mpublic -: - -28 -ArduoJsJWT -( -Sg - - -); - -30  -tSe -( -Sg - - -); - -31 -Sg - -gSe -(); - -33 -Sg - -budJWT -( -JsObje -& -yld -); - -34  -rJWT -( -Sg - -jwt -, -JsDocumt -& -jsDocumt -); - - @lib/framework/AuthenticationService.cpp - -1  - ~ - -3 #i -FT_ENABLED -( -FT_SECURITY -) - -5 - gAuthtitiSvi -:: - $AuthtitiSvi -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -) : - -6 - `_curyMag -( -curyMag -), - -7 - `_signInHdr -( -SIGN_IN_PATH -, - -8 -d -:: - $bd -(& -AuthtitiSvi -:: -signIn -, -this -, -d -:: -ahds -:: -_1 -, std::ahds:: -_2 -)) { - -9 -rv --> - ` -( -VERIFY_AUTHORIZATION_PATH -, - -10 -HTTP_GET -, - -11 -d -:: - `bd -(& -AuthtitiSvi -:: -vifyAuthizi -, -this -, std:: -ahds -:: -_1 -)); - -12 -_signInHdr -. - `tMhod -( -HTTP_POST -); - -13 -_signInHdr -. - `tMaxCڋLgth -( -MAX_AUTHENTICATION_SIZE -); - -14 -rv --> - `addHdr -(& -_signInHdr -); - -15 - } -} - -20  - gAuthtitiSvi -:: - $vifyAuthizi -( -AsyncWebSvReque -* -que -) { - -21 -Authtiti - -authtiti - = -_curyMag --> - `authtiReque -( -que -); - -22 -que --> - `nd -( -authtiti -. -authtid - ? 200 : 401); - -23 - } -} - -29  - gAuthtitiSvi -:: - $signIn -( -AsyncWebSvReque -* -que -, -JsV -& -js -) { - -30 i( -js -. -is -< -JsObje ->()) { - -31 -Sg - -uame - = -js -["username"]; - -32 -Sg - -sswd - = -js -["password"]; - -33 -Authtiti - -authtiti - = -_curyMag --> - `authti -( -uame -, -sswd -); - -34 i( -authtiti -. -authtid -) { - -35 -Ur -* -ur - = -authtiti -.user; - -36 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_AUTHENTICATION_SIZE -); - -37 -JsObje - -jsObje - = -ڣ --> - `gRo -(); - -38 -jsObje -["acss_tok"] = -_curyMag --> - `geJWT -( -ur -); - -39 -ڣ --> - `tLgth -(); - -40 -que --> - `nd -( -ڣ -); - -44 -AsyncWebSvReڣ -* -ڣ - = -que --> - `begReڣ -(401); - -45 -que --> - `nd -( -ڣ -); - -46 - } -} - - @lib/framework/AuthenticationService.h - -1 #ide -AuthtitiSvi_H_ - - -2  - #AuthtitiSvi_H_ - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -9  - #VERIFY_AUTHORIZATION_PATH - "//vifyAuthizi" - - ) - -10  - #SIGN_IN_PATH - "//signIn" - - ) - -12  - #MAX_AUTHENTICATION_SIZE - 256 - - ) - -14 #i -FT_ENABLED -( -FT_SECURITY -) - -16 as - cAuthtitiSvi - { - -17 - mpublic -: - -18 -AuthtitiSvi -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -); - -20 - mive -: - -21 -SecuryMag -* -_curyMag -; - -22 -AsyncClbackJsWebHdr - - m_signInHdr -; - -25  -signIn -( -AsyncWebSvReque -* -que -, -JsV -& -js -); - -26  -vifyAuthizi -( -AsyncWebSvReque -* -que -); - - @lib/framework/ESP8266React.cpp - -1  - ~ - -3 - gESP8266R -:: - $ESP8266R -( -AsyncWebSv - * -rv -, -FS - * -fs -) - -4 : - `_uSvi -( -rv -) - -5 , - `_curyStgsSvi -( -rv -, -fs -) - -6 , - `_wifiStgsSvi -( -rv -, -fs -, & -_curyStgsSvi -) - -7 , - `_wifiS” -( -rv -, & -_curyStgsSvi -) - -8 , - `_wifiStus -( -rv -, & -_curyStgsSvi -) - -9 , - `_StgsSvi -( -rv -, -fs -, & -_curyStgsSvi -) - -10 , - `_Stus -( -rv -, & -_curyStgsSvi -, & -_StgsSvi -) - -12 #i - `FT_ENABLED -( -FT_NTP -) - -13 - `_pStgsSvi -( -rv -, -fs -, & -_curyStgsSvi -) - -14 , - `_pStus -( -rv -, & -_curyStgsSvi -) - -17 #i - `FT_ENABLED -( -FT_OTA -) - -18 - `_aStgsSvi -( -rv -, -fs -, & -_curyStgsSvi -) - -21 #i - `FT_ENABLED -( -FT_UPLOAD_FIRMWARE -) - -22 - `_udFmweSvi -( -rv -, & -_curyStgsSvi -) - -25 #i - `FT_ENABLED -( -FT_MQTT -) - -26 - `_mqStgsSvi -( -rv -, -fs -, & -_curyStgsSvi -) - -27 , - `_mqStus -( -rv -, & -_mqStgsSvi -, & -_curyStgsSvi -) - -30 #i - `FT_ENABLED -( -FT_SECURITY -) - -31 - `_authtitiSvi -( -rv -, & -_curyStgsSvi -) - -34 - `_tSvi -( -rv -, & -_curyStgsSvi -) - -35 , - `_yRetSvi -( -rv -, -fs -, & -_curyStgsSvi -) - -36 , - $_syemStus -( -rv -, & -_curyStgsSvi -) { - -37 #ifde -PROGMEM_WWW - - -39 -WWWDa -:: - `giRous -([ -rv -, -this -](cڡ -Sg - & -uri -, cڡ Sg & -cڋTy -, cڡ -ut8_t - * -cڋ -, -size_t - -n -) { - -40 -ArRequeHdrFuni - -queHdr - = [ -cڋTy -, -cڋ -, -n -]( -AsyncWebSvReque - * -que -) { - -41 -AsyncWebSvReڣ - * -ڣ - = -que --> - `begReڣ_P -(200, -cڋTy -, -cڋ -, -n -); - -42 -ڣ --> - `addHd -("Content-Encoding", "gzip"); - -43 -que --> - `nd -( -ڣ -); - -45 -rv --> - ` -( -uri -. - `c_r -(), -HTTP_GET -, -queHdr -); - -48 i( -uri -. - `equs -("/index.html")) { - -49 -rv --> - `NFound -([ -queHdr -]( -AsyncWebSvReque - * -que -) { - -50 i( -que --> - `mhod -(= -HTTP_GET -) { - -51 - `queHdr -( -que -); - -52 } i( -que --> - `mhod -(= -HTTP_OPTIONS -) { - -53 -que --> - `nd -(200); - -55 -que --> - `nd -(404); - -62 -rv --> - `rveStic -("/js/", * -fs -, "/www/js/"); - -63 -rv --> - `rveStic -("/css/", * -fs -, "/www/css/"); - -64 -rv --> - `rveStic -("/fts/", * -fs -, "/www/fonts/"); - -65 -rv --> - `rveStic -("/p/", * -fs -, "/www/app/"); - -66 -rv --> - `rveStic -("/vic.ico", * -fs -, "/www/favicon.ico"); - -69 -rv --> - `NFound -([]( -AsyncWebSvReque - * -que -) { - -70 i( -que --> - `mhod -(= -HTTP_GET -) { - -71 #ifde -ESP32 - - -72 -que --> - `nd -( -SPIFFS -, "/www/index.html"); - -74 -que --> - `nd -( -LeFS -, "/www/index.html"); - -77 } i( -que --> - `mhod -(= -HTTP_OPTIONS -) { - -78 -que --> - `nd -(200); - -80 -que --> - `nd -(404); - -86 #i - `defed -( -ENABLE_CORS -) - -87 -DeuHds -:: - `In -(). - `addHd -("Acss-Cڌ-Aow-Orig", -CORS_ORIGIN -); - -88 -DeuHds -:: - `In -(). - `addHd -("Access-Control-Allow-Headers", "Accept, Content-Type, Authorization"); - -89 -DeuHds -:: - `In -(). - `addHd -("Access-Control-Allow-Credentials", "true"); - -91 - } -} - -93  - gESP8266R -:: - $beg -() { - -94 -_wifiStgsSvi -. - `beg -(); - -95 -_StgsSvi -. - `beg -(); - -96 #i - `FT_ENABLED -( -FT_NTP -) - -97 -_pStgsSvi -. - `beg -(); - -99 #i - `FT_ENABLED -( -FT_OTA -) - -100 -_aStgsSvi -. - `beg -(); - -102 #i - `FT_ENABLED -( -FT_MQTT -) - -103 -_mqStgsSvi -. - `beg -(); - -105 #i - `FT_ENABLED -( -FT_SECURITY -) - -106 -_curyStgsSvi -. - `beg -(); - -108 - } -} - -110  - gESP8266R -:: - $lo -() { - -111 -_wifiStgsSvi -. - `lo -(); - -112 -_StgsSvi -. - `lo -(); - -113 #i - `FT_ENABLED -( -FT_OTA -) - -114 -_aStgsSvi -. - `lo -(); - -116 #i - `FT_ENABLED -( -FT_MQTT -) - -117 -_mqStgsSvi -. - `lo -(); - -119 - } -} - - @lib/framework/ESP8266React.h - -1 #ide -ESP8266R_h - - -2  - #ESP8266R_h - - - ) - -4  - ~ - -6 #ifde -ESP32 - - -7  - ~ - -8  - ~ - -9 #i -defed -( -ESP8266 -) - -10  - ~ - -11  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -17  - ~ - -18  - ~ - -19  - ~ - -20  - ~ - -21  - ~ - -22  - ~ - -23  - ~ - -24  - ~ - -25  - ~ - -26  - ~ - -27  - ~ - -28  - ~ - -29  - ~ - -30  - ~ - -32 #ifde -PROGMEM_WWW - - -33  - ~ - -36 as - cESP8266R - { - -37 - mpublic -: - -38 -ESP8266R -( -AsyncWebSv -* -rv -, -FS -* -fs -); - -40  -beg -(); - -41  -lo -(); - -43 -SecuryMag -* - $gSecuryMag -() { - -44  & -_curyStgsSvi -; - -47 #i - $FT_ENABLED -( -FT_SECURITY -) - -48 -SfulSvi -< -SecuryStgs ->* - $gSecuryStgsSvi -() { - -49  & -_curyStgsSvi -; - -50 - } -} - -53 - gSfulSvi -< - gWiFiStgs ->* - $gWiFiStgsSvi -() { - -54  & -_wifiStgsSvi -; - -55 - } -} - -57 - gSfulSvi -< - gAPStgs ->* - $gAPStgsSvi -() { - -58  & -_StgsSvi -; - -59 - } -} - -61 #i - $FT_ENABLED -( -FT_NTP -) - -62 -SfulSvi -< -NTPStgs ->* - $gNTPStgsSvi -() { - -63  & -_pStgsSvi -; - -64 - } -} - -67 #i - $FT_ENABLED -( -FT_OTA -) - -68 -SfulSvi -< -OTAStgs ->* - $gOTAStgsSvi -() { - -69  & -_aStgsSvi -; - -70 - } -} - -73 #i - $FT_ENABLED -( -FT_MQTT -) - -74 -SfulSvi -< -MqStgs ->* - $gMqStgsSvi -() { - -75  & -_mqStgsSvi -; - -76 - } -} - -78 -AsyncMqCl -* - $gMqCl -() { - -79  -_mqStgsSvi -. - `gMqCl -(); - -80 - } -} - -83  - $yRet -() { - -84 -_yRetSvi -. - `yRet -(); - -85 - } -} - -87 - give -: - -88 -FtusSvi - -_uSvi -; - -89 -SecuryStgsSvi - - g_curyStgsSvi -; - -90 -WiFiStgsSvi - - g_wifiStgsSvi -; - -91 -WiFiS” - - g_wifiS” -; - -92 -WiFiStus - - g_wifiStus -; - -93 -APStgsSvi - - g_StgsSvi -; - -94 -APStus - - g_Stus -; - -95 #i - $FT_ENABLED -( -FT_NTP -) - -96 -NTPStgsSvi - -_pStgsSvi -; - -97 -NTPStus - -_pStus -; - -99 #i - $FT_ENABLED -( -FT_OTA -) - -100 -OTAStgsSvi - -_aStgsSvi -; - -102 #i - $FT_ENABLED -( -FT_UPLOAD_FIRMWARE -) - -103 -UdFmweSvi - -_udFmweSvi -; - -105 #i - $FT_ENABLED -( -FT_MQTT -) - -106 -MqStgsSvi - -_mqStgsSvi -; - -107 -MqStus - -_mqStus -; - -109 #i - $FT_ENABLED -( -FT_SECURITY -) - -110 -AuthtitiSvi - -_authtitiSvi -; - -112 -RetSvi - -_tSvi -; - -113 -FayRetSvi - -_yRetSvi -; - -114 -SyemStus - -_syemStus -; - -115 - } -}; - - @lib/framework/ESPUtils.h - -1 #ide -ESPUts_h - - -2  - #ESPUts_h - - - ) - -4  - ~ - -6 as - cESPUts - { - -7 - mpublic -: - -8  -Sg - -deuDeviVue -(Sg -efix - = "") { - -9 #ifde -ESP32 - - -10  -efix - + -Sg -(() -ESP -. -gEfuMac -(), -HEX -); - -11 #i -defed -( -ESP8266 -) - -12  - mefix - + -Sg -( -ESP -. -gChId -(), -HEX -); - - @lib/framework/FSPersistence.h - -1 #ide -FSPsi_h - - -2  - #FSPsi_h - - - ) - -4  - ~ - -5  - ~ - -7 - gme - < -ass - - gT -> - -8 as - cFSPsi - { - -9 - mpublic -: - -10 -FSPsi -( -JsSRd -< -T -> -eRd -, - -11 -JsSUpd -< -T -> -eUpd -, - -12 -SfulSvi -< -T -> * -efulSvi -, - -13 -FS - * -fs -, - -14 cڡ * -fePh -, - -15 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) - -16 : -_eRd -( -eRd -) - -17 , -_eUpd -( -eUpd -) - -18 , -_efulSvi -( -efulSvi -) - -19 , -_fs -( -fs -) - -20 , -_fePh -( -fePh -) - -21 , -_bufrSize -( -bufrSize -) - -22 , - $_updeHdrId -(0) { - -23 - `abUpdeHdr -(); - -26  - $adFromFS -() { - -27 -Fe - -gsFe - = -_fs --> - `ݒ -( -_fePh -, "r"); - -29 i( -gsFe -) { - -30 -DymicJsDocumt - -jsDocumt - = - `DymicJsDocumt -( -_bufrSize -); - -31 -DerliziE - -r - = - `derlizeJs -( -jsDocumt -, -gsFe -); - -32 i( -r - = -DerliziE -:: -Ok - && -jsDocumt -. -is -< -JsObje ->()) { - -33 -JsObje - -jsObje - = -jsDocumt -. -as -(); - -40 -_efulSvi --> - `updeWhoutPragi -( -jsObje -, -_eUpd -); - -41 -gsFe -. - `o -(); - -44 -gsFe -. - `o -(); - -49 - `yDeus -(); - -50 - } -} - -52 -bo - - $wreToFS -() { - -54 -DymicJsDocumt - -jsDocumt - = - `DymicJsDocumt -( -_bufrSize -); - -55 -JsObje - -jsObje - = -jsDocumt -. -to -(); - -56 -_efulSvi --> - `ad -( -jsObje -, -_eRd -); - -59 -Fe - -gsFe - = -_fs --> - `ݒ -( -_fePh -, "w"); - -62 i(! -gsFe -) { - -63  -l -; - -67 #i - `defed -( -EMSESP_DEBUG -) - -68 -Sl -. - `tf -("WrFe: %s: ", -_fePh -); - -69 - `rlizeJs -( -jsDocumt -, -Sl -); - -70 -Sl -. - `n -(); - -74 - `rlizeJs -( -jsDocumt -, -gsFe -); - -75 -gsFe -. - `o -(); - -76  -ue -; - -77 - } -} - -79  - $dibUpdeHdr -() { - -80 i( -_updeHdrId -) { - -81 -_efulSvi --> - `moveUpdeHdr -( -_updeHdrId -); - -82 -_updeHdrId - = 0; - -84 - } -} - -86  - $abUpdeHdr -() { - -87 i(! -_updeHdrId -) { - -88 -_updeHdrId - = -_efulSvi --> - `addUpdeHdr -([&](cڡ -Sg - & -igId -{ - `wreToFS -(); }); - -90 - } -} - -92 - give -: - -93 -JsSRd -< -T -> -_eRd -; - -94 - gJsSUpd -< - gT -> - g_eUpd -; - -95 - gSfulSvi -< - gT -> * - g_efulSvi -; - -96 -FS - * - g_fs -; - -97 cڡ * - g_fePh -; - -98 -size_t - - g_bufrSize -; - -99 -upde_hdr_id_t - - g_updeHdrId -; - -101 - geed -: - -104 -vtu -  - $yDeus -() { - -105 -DymicJsDocumt - -jsDocumt - = - `DymicJsDocumt -( -_bufrSize -); - -106 -JsObje - -jsObje - = -jsDocumt -. -as -(); - -107 -_efulSvi --> - `updeWhoutPragi -( -jsObje -, -_eUpd -); - -108 - } -} - - @lib/framework/FactoryResetService.cpp - -1  - ~ - -3 -usg - -mea - - gd -:: -ahds -; - -5 - gFayRetSvi -:: - $FayRetSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -: - $fs -( -fs -) { - -6 -rv --> - ` -( -FACTORY_RESET_SERVICE_PATH -, - -7 -HTTP_POST -, - -8 -curyMag --> - `wpReque -( -d -:: - `bd -(& -FayRetSvi -:: -hdReque -, -this -, -_1 -), - -9 -AuthtitiPdis -:: -IS_ADMIN -)); - -10 - } -} - -12  - gFayRetSvi -:: - $hdReque -( -AsyncWebSvReque -* -que -) { - -13 -que --> - `Disc -( -d -:: - `bd -(& -FayRetSvi -:: -yRet -, -this -)); - -14 -que --> - `nd -(200); - -15 - } -} - -20  - gFayRetSvi -:: - $yRet -() { - -21 #ifde -ESP32 - - -22 -Fe - -ro - = -fs --> - `ݒ -( -FS_CONFIG_DIRECTORY -); - -23 -Fe - -fe -; - -24  -fe - = -ro -. - `ݒNextFe -()) { - -25 -fs --> - `move -( -fe -. - `me -()); - -27 #i - `defed -( -ESP8266 -) - -28 -D - -cfigDey - = -fs --> - `ݒD -( -FS_CONFIG_DIRECTORY -); - -29  -cfigDey -. - `xt -()) { - -30 -Sg - -th - = -FS_CONFIG_DIRECTORY -; - -31 -th -. - `ct -("/"); - -32 -th -. - `ct -( -cfigDey -. - `feName -()); - -33 -fs --> - `move -( -th -); - -36 -RetSvi -:: - `tNow -(); - -37 - } -} - - @lib/framework/FactoryResetService.h - -1 #ide -FayRetSvi_h - - -2  - #FayRetSvi_h - - - ) - -4 #ifde -ESP32 - - -5  - ~ - -6  - ~ - -7 #i -defed -( -ESP8266 -) - -8  - ~ - -9  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -17  - #FS_CONFIG_DIRECTORY - "/cfig" - - ) - -18  - #FACTORY_RESET_SERVICE_PATH - "//yRet" - - ) - -20 as - cFayRetSvi - { - -21 -FS -* - mfs -; - -23 - mpublic -: - -24 -FayRetSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -); - -26  -yRet -(); - -28 - mive -: - -29  -hdReque -( -AsyncWebSvReque -* -que -); - - @lib/framework/Features.h - -1 #ide -Ftus_h - - -2  - #Ftus_h - - - ) - -4  - #FT_ENABLED -( -u - - ) -feature - -7 #ide -FT_PROJECT - - -8  - #FT_PROJECT - 0 - - ) - -12 #ide -FT_SECURITY - - -13  - #FT_SECURITY - 1 - - ) - -17 #ide -FT_MQTT - - -18  - #FT_MQTT - 1 - - ) - -22 #ide -FT_NTP - - -23  - #FT_NTP - 1 - - ) - -27 #ide -FT_OTA - - -28  - #FT_OTA - 1 - - ) - -32 #ide -FT_UPLOAD_FIRMWARE - - -33  - #FT_UPLOAD_FIRMWARE - 0 - - ) - - @lib/framework/FeaturesService.cpp - -1  - ~ - -3 - gFtusSvi -:: - $FtusSvi -( -AsyncWebSv -* -rv -) { - -4 -rv --> - ` -( -FEATURES_SERVICE_PATH -, -HTTP_GET -, -d -:: - `bd -(& -FtusSvi -:: -us -, -this -, std:: -ahds -:: -_1 -)); - -5 - } -} - -7  - gFtusSvi -:: - $us -( -AsyncWebSvReque -* -que -) { - -8 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_FEATURES_SIZE -); - -9 -JsObje - -ro - = -ڣ --> - `gRo -(); - -10 #i - `FT_ENABLED -( -FT_PROJECT -) - -11 -ro -["oje"] = -ue -; - -13 -ro -["oje"] = -l -; - -15 #i - `FT_ENABLED -( -FT_SECURITY -) - -16 -ro -["cury"] = -ue -; - -18 -ro -["cury"] = -l -; - -20 #i - `FT_ENABLED -( -FT_MQTT -) - -21 -ro -["mq"] = -ue -; - -23 -ro -["mq"] = -l -; - -25 #i - `FT_ENABLED -( -FT_NTP -) - -26 -ro -["p"] = -ue -; - -28 -ro -["p"] = -l -; - -30 #i - `FT_ENABLED -( -FT_OTA -) - -31 -ro -["a"] = -ue -; - -33 -ro -["a"] = -l -; - -35 #i - `FT_ENABLED -( -FT_UPLOAD_FIRMWARE -) - -36 -ro -["ud_fmwe"] = -ue -; - -38 -ro -["ud_fmwe"] = -l -; - -40 -ڣ --> - `tLgth -(); - -41 -que --> - `nd -( -ڣ -); - -42 - } -} - - @lib/framework/FeaturesService.h - -1 #ide -FtusSvi_h - - -2  - #FtusSvi_h - - - ) - -4  - ~ - -6 #ifde -ESP32 - - -7  - ~ - -8  - ~ - -9 #i -defed -( -ESP8266 -) - -10  - ~ - -11  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -18  - #MAX_FEATURES_SIZE - 256 - - ) - -19  - #FEATURES_SERVICE_PATH - "//us" - - ) - -21 as - cFtusSvi - { - -22 - mpublic -: - -23 -FtusSvi -( -AsyncWebSv -* -rv -); - -25 - mive -: - -26  -us -( -AsyncWebSvReque -* -que -); - - @lib/framework/HttpEndpoint.h - -1 #ide -HpEndpot_h - - -2  - #HpEndpot_h - - - ) - -4  - ~ - -6  - ~ - -7  - ~ - -9  - ~ - -10  - ~ - -12  - #HTTP_ENDPOINT_ORIGIN_ID - "hp" - - ) - -14 - gme - < -ass - - gT -> - -15 as - cHpGEndpot - { - -16 - mpublic -: - -17 -HpGEndpot -( -JsSRd -< -T -> -eRd -, - -18 -SfulSvi -< -T ->* -efulSvi -, - -19 -AsyncWebSv -* -rv -, - -20 cڡ -Sg -& -rviPh -, - -21 -SecuryMag -* -curyMag -, - -22 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -23 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -24 -_eRd -( -eRd -), -_efulSvi -( -efulSvi -), - $_bufrSize -( -bufrSize -) { - -25 -rv --> - ` -( -rviPh -. - `c_r -(), - -26 -HTTP_GET -, - -27 -curyMag --> - `wpReque -( -d -:: - `bd -(& -HpGEndpot -:: -tchStgs -, -this -, std:: -ahds -:: -_1 -), - -28 -authtitiPdi -)); - -31 - `HpGEndpot -( -JsSRd -< -T -> -eRd -, - -32 -SfulSvi -< -T ->* -efulSvi -, - -33 -AsyncWebSv -* -rv -, - -34 cڡ -Sg -& -rviPh -, - -35 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -36 - `_eRd -( -eRd -), - `_efulSvi -( -efulSvi -), - $_bufrSize -( -bufrSize -) { - -37 -rv --> - ` -( -rviPh -. - `c_r -(), -HTTP_GET -, -d -:: - `bd -(& -HpGEndpot -:: -tchStgs -, -this -, std:: -ahds -:: -_1 -)); - -38 - } -} - -40 - geed -: - -41 -JsSRd -< -T -> -_eRd -; - -42 - gSfulSvi -< - gT ->* - g_efulSvi -; - -43 -size_t - - g_bufrSize -; - -45  - $tchStgs -( -AsyncWebSvReque -* -que -) { - -46 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -_bufrSize -); - -47 -JsObje - -jsObje - = -ڣ --> - `gRo -(). -to -(); - -48 -_efulSvi --> - `ad -( -jsObje -, -_eRd -); - -50 -ڣ --> - `tLgth -(); - -51 -que --> - `nd -( -ڣ -); - -52 - } -} - -55 - gme - < -ass - - gT -> - -56 as - cHpPoEndpot - { - -57 - mpublic -: - -58 -HpPoEndpot -( -JsSRd -< -T -> -eRd -, - -59 -JsSUpd -< -T -> -eUpd -, - -60 -SfulSvi -< -T ->* -efulSvi -, - -61 -AsyncWebSv -* -rv -, - -62 cڡ -Sg -& -rviPh -, - -63 -SecuryMag -* -curyMag -, - -64 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -65 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -66 -_eRd -( -eRd -), - -67 -_eUpd -( -eUpd -), - -68 -_efulSvi -( -efulSvi -), - -69 -_updeHdr -( - -70 -rviPh -, - -71 -curyMag --> -wpClback -( - -72 -d -:: -bd -(& -HpPoEndpot -:: -updeStgs -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), - -73 -authtitiPdi -), - -74 -bufrSize -), - -75 - $_bufrSize -( -bufrSize -) { - -76 -_updeHdr -. - `tMhod -( -HTTP_POST -); - -77 -rv --> - `addHdr -(& -_updeHdr -); - -80 - `HpPoEndpot -( -JsSRd -< -T -> -eRd -, - -81 -JsSUpd -< -T -> -eUpd -, - -82 -SfulSvi -< -T ->* -efulSvi -, - -83 -AsyncWebSv -* -rv -, - -84 cڡ -Sg -& -rviPh -, - -85 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -86 - `_eRd -( -eRd -), - -87 - `_eUpd -( -eUpd -), - -88 - `_efulSvi -( -efulSvi -), - -89 - `_updeHdr -( -rviPh -, - -90 -d -:: - `bd -(& -HpPoEndpot -:: -updeStgs -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), - -91 -bufrSize -), - -92 - $_bufrSize -( -bufrSize -) { - -93 -_updeHdr -. - `tMhod -( -HTTP_POST -); - -94 -rv --> - `addHdr -(& -_updeHdr -); - -95 - } -} - -97 - geed -: - -98 -JsSRd -< -T -> -_eRd -; - -99 - gJsSUpd -< - gT -> - g_eUpd -; - -100 - gSfulSvi -< - gT ->* - g_efulSvi -; - -101 -AsyncClbackJsWebHdr - - g_updeHdr -; - -102 -size_t - - g_bufrSize -; - -104  - $updeStgs -( -AsyncWebSvReque -* -que -, -JsV -& -js -) { - -105 i(! -js -. -is -< -JsObje ->()) { - -106 -que --> - `nd -(400); - -109 -JsObje - -jsObje - = -js -. -as -(); - -110 -SUpdeResu - -outcome - = -_efulSvi --> - `updeWhoutPragi -( -jsObje -, -_eUpd -); - -111 i( -outcome - = -SUpdeResu -:: -ERROR -) { - -112 -que --> - `nd -(400); - -115 i( -outcome - = -SUpdeResu -:: -CHANGED -) { - -116 -que --> - `Disc -([ -this -]({ -_efulSvi --> - `UpdeHdrs -( -HTTP_ENDPOINT_ORIGIN_ID -); }); - -118 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -_bufrSize -); - -119 -jsObje - = -ڣ --> - `gRo -(). -to -< -JsObje ->(); - -120 -_efulSvi --> - `ad -( -jsObje -, -_eRd -); - -121 -ڣ --> - `tLgth -(); - -122 -que --> - `nd -( -ڣ -); - -123 - } -} - -126 - gme - < -ass - - gT -> - -127 -ass - - gHpEndpot - : -public - -HpGEndpot -< -T ->,ubli - gHpPoEndpot -< - gT -> { - -128 - gpublic -: - -129 -HpEndpot -( -JsSRd -< -T -> -eRd -, - -130 -JsSUpd -< -T -> -eUpd -, - -131 -SfulSvi -< -T ->* -efulSvi -, - -132 -AsyncWebSv -* -rv -, - -133 cڡ -Sg -& -rviPh -, - -134 -SecuryMag -* -curyMag -, - -135 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -136 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -137 -HpGEndpot -< -T ->( -eRd -, - -138 - gefulSvi -, - -139 - grv -, - -140 - grviPh -, - -141 - gcuryMag -, - -142 - gauthtitiPdi -, - -143 - gbufrSize -), - -144 - gHpPoEndpot -< - gT ->( - geRd -, - -145 - geUpd -, - -146 - gefulSvi -, - -147 - grv -, - -148 - grviPh -, - -149 - gcuryMag -, - -150 - gauthtitiPdi -, - -151 - gbufrSize -) { - -154 -HpEndpot -( -JsSRd -< -T -> -eRd -, - -155 -JsSUpd -< -T -> -eUpd -, - -156 -SfulSvi -< -T ->* -efulSvi -, - -157 -AsyncWebSv -* -rv -, - -158 cڡ -Sg -& -rviPh -, - -159 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -160 -HpGEndpot -< -T ->( -eRd -, - gefulSvi -, - grv -, - grviPh -, - gbufrSize -), - -161 - gHpPoEndpot -< - gT ->( - geRd -, - geUpd -, - gefulSvi -, - grv -, - grviPh -, - gbufrSize -) { - - @lib/framework/JsonUtils.h - -1 #ide -JsUts_h - - -2  - #JsUts_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -8 as - cJsUts - { - -9 - mpublic -: - -10  - $adIP -( -JsObje -& -ro -, cڡ -Sg -& -key -, -IPAddss -& - -, cڡ Sg& -def -) { - -11 -IPAddss - -deuIp - = {}; - -12 i(! -deuIp -. - `omSg -( -def -)) { - -13 -deuIp - = -INADDR_NONE -; - -15 - `adIP -( -ro -, -key -, - -, -deuIp -); - -17  - $adIP -( -JsObje -& -ro -, cڡ -Sg -& -key -, -IPAddss -& - -, cڡ IPAddss& -deuIp - = -INADDR_NONE -) { - -18 i(! -ro -[ -key -]. -is -< -Sg ->(|| ! - -. - `omSg -o[key]. -as -())) { - -19 - - = -deuIp -; - -21 - } -} - -22  - $wreIP -( -JsObje -& -ro -, cڡ -Sg -& -key -, cڡ -IPAddss -& - -) { - -23 i( - - ! -INADDR_NONE -) { - -24 -ro -[ -key -] = - -. - `toSg -(); - -26 - } -} - - @lib/framework/MqttPubSub.h - -1 #ide -MqPubSub_h - - -2  - #MqPubSub_h - - - ) - -4  - ~ - -5  - ~ - -7  - #MQTT_ORIGIN_ID - "mq" - - ) - -9 - gme - < -ass - - gT -> - -10 as - cMqC - { - -11 - meed -: - -12 -SfulSvi -< -T ->* -_efulSvi -; - -13 -AsyncMqCl -* - m_mqCl -; - -14 -size_t - - m_bufrSize -; - -16 -MqC -( -SfulSvi -< -T ->* -efulSvi -, -AsyncMqCl -* -mqCl -, -size_t - -bufrSize -) : - -17 -_efulSvi -( -efulSvi -), -_mqCl -( -mqCl -), - $_bufrSize -( -bufrSize -) { - -18 -_mqCl --> - `C -( -d -:: - `bd -(& -MqC -:: -C -, -this -)); - -21 -vtu -  - `C -() = 0; - -23 -public -: - -24 -le - -AsyncMqCl -* - $gMqCl -() const { - -25  -_mqCl -; - -26 - } -} - -29 - gme - < -ass - - gT -> - -30 -ass - - gMqPub - : -vtu - -public - -MqC -< -T -> { - -31 -public -: - -32 -MqPub -( -JsSRd -< -T -> -eRd -, - -33 -SfulSvi -< -T ->* -efulSvi -, - -34 -AsyncMqCl -* -mqCl -, - -35 cڡ -Sg -& -pubTic - = "", - -36 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -37 -MqC -< -T ->( -efulSvi -, - gmqCl -, - gbufrSize -), -_eRd -( -eRd -), -_pubTic -( -pubTic -) { - -38 - gMqC -< - gT ->:: -_efulSvi --> -addUpdeHdr -([&](cڡ -Sg -& -igId -{ -publish -(); }, -l -); - -41  -tPubTic -(cڡ -Sg -& -pubTic -) { - -42 - g_pubTic - = -pubTic -; - -43 -publish -(); - -46 - geed -: - -47 -vtu -  -C -() { - -48 -publish -(); - -51 - give -: - -52 -JsSRd -< -T -> -_eRd -; - -53 -Sg - - g_pubTic -; - -55  -publish -() { - -56 i( - g_pubTic -. -ngth -(> 0 && - gMqC -< - gT ->:: -_mqCl --> -ced -()) { - -58 -DymicJsDocumt - -js -( -MqC -< -T ->:: -_bufrSize -); - -59 -JsObje - - gjsObje - = -js -. -to -(); - -60 - gMqC -< - gT ->:: -_efulSvi --> -ad -( -jsObje -, -_eRd -); - -63 -Sg - - gyld -; - -64 -rlizeJs -( -js -, -yld -); - -67 - gMqC -< - gT ->:: -_mqCl --> -publish -( -_pubTic -. -c_r -(), 0, -l -, -yld -.c_str()); - -72 - gme - < -ass - - gT -> - -73 -ass - - gMqSub - : -vtu - -public - -MqC -< -T -> { - -74 -public -: - -75 -MqSub -( -JsSUpd -< -T -> -eUpd -, - -76 -SfulSvi -< -T ->* -efulSvi -, - -77 -AsyncMqCl -* -mqCl -, - -78 cڡ -Sg -& -subTic - = "", - -79 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -80 -MqC -< -T ->( -efulSvi -, - gmqCl -, - gbufrSize -), -_eUpd -( -eUpd -), -_subTic -( -subTic -) { - -81 - gMqC -< - gT ->:: -_mqCl --> -Mesge -( -d -:: -bd -(& -MqSub -:: -MqMesge -, - -82 -this -, - -83 -d -:: -ahds -:: -_1 -, - -84 -d -:: -ahds -:: -_2 -, - -85 -d -:: -ahds -:: -_3 -, - -86 -d -:: -ahds -:: -_4 -, - -87 -d -:: -ahds -:: -_5 -, - -88 -d -:: -ahds -:: -_6 -)); - -91  -tSubTic -(cڡ -Sg -& -subTic -) { - -92 i(! - g_subTic -. -equs -( -subTic -)) { - -94 i( - g_subTic -. -ngth -() > 0) { - -95 - gMqC -< - gT ->:: -_mqCl --> -unsubsibe -( -_subTic -. -c_r -()); - -98 - g_subTic - = -subTic -; - -99 -subsibe -(); - -103 - geed -: - -104 -vtu -  -C -() { - -105 -subsibe -(); - -108 - give -: - -109 -JsSUpd -< -T -> -_eUpd -; - -110 -Sg - - g_subTic -; - -112  -subsibe -() { - -113 i( - g_subTic -. -ngth -() > 0) { - -114 - gMqC -< - gT ->:: -_mqCl --> -subsibe -( -_subTic -. -c_r -(), 2); - -118  -MqMesge -(* -tic -, - -119 * -yld -, - -120 -AsyncMqClMesgePrݔts - -ݔts -, - -121 -size_t - -n -, - -122 -size_t - -dex -, - -123 -size_t - -tٮ -) { - -125 i( -rcmp -( -_subTic -. -c_r -(), -tic -)) { - -130 -DymicJsDocumt - -js -( -MqC -< -T ->:: -_bufrSize -); - -131 -DerliziE - - gr - = -derlizeJs -( -js -, -yld -, -n -); - -132 i(! - gr - && - gjs -. - gis -< - gJsObje ->()) { - -133 -JsObje - - gjsObje - = -js -. -as -(); - -134 - gMqC -< - gT ->:: -_efulSvi --> -upde -( -jsObje -, -_eUpd -, -MQTT_ORIGIN_ID -); - -139 - gme - < -ass - - gT -> - -140 -ass - - gMqPubSub - : -public - -MqPub -< -T ->,ubli - gMqSub -< - gT -> { - -141 - gpublic -: - -142 -MqPubSub -( -JsSRd -< -T -> -eRd -, - -143 -JsSUpd -< -T -> -eUpd -, - -144 -SfulSvi -< -T ->* -efulSvi -, - -145 -AsyncMqCl -* -mqCl -, - -146 cڡ -Sg -& -pubTic - = "", - -147 cڡ -Sg -& -subTic - = "", - -148 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -149 -MqC -< -T ->( -efulSvi -, - gmqCl -, - gbufrSize -), - -150 - gMqPub -< - gT ->( - geRd -, - gefulSvi -, - gmqCl -, - gpubTic -, - gbufrSize -), - -151 - gMqSub -< - gT ->( - geUpd -, - gefulSvi -, - gmqCl -, - gsubTic -, - gbufrSize -) { - -154 - gpublic -: - -155  -cfiguTics -(cڡ -Sg -& -pubTic -, cڡ Sg& -subTic -) { - -156 - gMqSub -< - gT ->:: -tSubTic -( -subTic -); - -157 - gMqPub -< - gT ->:: -tPubTic -( -pubTic -); - -160 - geed -: - -161  -C -() { - -162 -MqSub -< -T ->:: -C -(); - -163 - gMqPub -< - gT ->:: -C -(); - - @lib/framework/MqttSettingsService.cpp - -1  - ~ - -4 -mea - - gem - { - -5 as - cEMSESP - { - -6 - gpublic -: - -7  -Syem - -syem_ -; - -8  -Mq - - gmq_ -; - -9  -Sss - - gnss_ -; - -18 * - $Cr -(cڡ * -cr -, ** -r -) { - -20 - ` -(* -r -); - -21 * -r - = -nuαr -; - -24 i( -cr - ! -nuαr -) { - -25 * -r - = (*) - `mloc -( - ` -( -cr -) + 1); - -26 - `ry -(* -r -, -cr -); - -30  * -r -; - -31 - } -} - -33 - gMqStgsSvi -:: - $MqStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -) - -34 : - `_hpEndpot -( -MqStgs -:: -ad -, MqStgs:: -upde -, -this -, -rv -, -MQTT_SETTINGS_SERVICE_PATH -, -curyMag -) - -35 , - `_fsPsi -( -MqStgs -:: -ad -, MqStgs:: -upde -, -this -, -fs -, -MQTT_SETTINGS_FILE -) - -36 , - `_edHo -( -nuαr -) - -37 , - `_edClId -( -nuαr -) - -38 , - `_edUame -( -nuαr -) - -39 , - `_edPasswd -( -nuαr -) - -40 , - `_cfiguMq -( -l -) - -41 , - `_discedAt -(0) - -42 , - `_discRs -( -AsyncMqClDiscRs -:: -TCP_DISCONNECTED -) - -43 , - $_mqCl -() { - -44 #ifde -ESP32 - - -45 -WiFi -. - `Evt -( -d -:: - `bd -(& -MqStgsSvi -:: -StiModeDisced -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), - -46 -WiFiEvt_t -:: -SYSTEM_EVENT_STA_DISCONNECTED -); - -47 -WiFi -. - `Evt -( -d -:: - `bd -(& -MqStgsSvi -:: -StiModeGIP -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), -WiFiEvt_t -:: -SYSTEM_EVENT_STA_GOT_IP -); - -48 #i - `defed -( -ESP8266 -) - -49 -_StiModeDiscedHdr - = -WiFi -. - `StiModeDisced -( -d -:: - `bd -(& -MqStgsSvi -:: -StiModeDisced -, -this -, std:: -ahds -:: -_1 -)); - -50 -_StiModeGIPHdr - = -WiFi -. - `StiModeGIP -( -d -:: - `bd -(& -MqStgsSvi -:: -StiModeGIP -, -this -, std:: -ahds -:: -_1 -)); - -52 -_mqCl -. - `C -( -d -:: - `bd -(& -MqStgsSvi -:: -MqC -, -this -, std:: -ahds -:: -_1 -)); - -53 -_mqCl -. - `Disc -( -d -:: - `bd -(& -MqStgsSvi -:: -MqDisc -, -this -, std:: -ahds -:: -_1 -)); - -54 - `addUpdeHdr -([&](cڡ -Sg - & -igId -{ - `CfigUpded -(); }, -l -); - -55 - } -} - -57 - gMqStgsSvi -::~ - $MqStgsSvi -() { - -58 - } -} - -60  -MqStgsSvi -:: - $beg -() { - -61 -_fsPsi -. - `adFromFS -(); - -62 - } -} - -64  - gMqStgsSvi -:: - $lo -() { - -65 i( -_cfiguMq - || ( -_discedAt - && ()( -uuid -:: - `g_uime -(- _discedAt> -MQTT_RECONNECTION_DELAY -)) { - -67 - `cfiguMq -(); - -70 -_cfiguMq - = -l -; - -71 -_discedAt - = 0; - -73 - } -} - -75 -bo - - gMqStgsSvi -:: - $isEbd -() { - -76  -_e -. -abd -; - -77 - } -} - -79 -bo - - gMqStgsSvi -:: - $isCed -() { - -80  -_mqCl -. - `ced -(); - -81 - } -} - -83 cڡ * - gMqStgsSvi -:: - $gClId -() { - -84  -_mqCl -. - `gClId -(); - -85 - } -} - -87 -AsyncMqClDiscRs - - gMqStgsSvi -:: - $gDiscRs -() { - -88  -_discRs -; - -89 - } -} - -91 -AsyncMqCl - * - gMqStgsSvi -:: - $gMqCl -() { - -92  & -_mqCl -; - -93 - } -} - -95  - gMqStgsSvi -:: - $MqC -( -bo - -ssiP -) { - -104 - } -} - -106  -MqStgsSvi -:: - $MqDisc -( -AsyncMqClDiscRs - -as -) { - -109 -_discRs - = -as -; - -110 -_discedAt - = -uuid -:: - `g_uime -(); - -111 - } -} - -113  - gMqStgsSvi -:: - $CfigUpded -() { - -114 -_cfiguMq - = -ue -; - -115 -_discedAt - = 0; - -119 - } -} - -121 #ifde -ESP32 - - -122  - gMqStgsSvi -:: - $StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -123 i( -_e -. -abd -) { - -125 - `CfigUpded -(); - -127 - } -} - -129  - gMqStgsSvi -:: - $StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -130 i( -_e -. -abd -) { - -132 - `CfigUpded -(); - -134 - } -} - -135 #i -defed -( -ESP8266 -) - -136  - gMqStgsSvi -:: - $StiModeGIP -(cڡ -WiFiEvtStiModeGIP - & -evt -) { - -137 i( -_e -. -abd -) { - -139 - `CfigUpded -(); - -141 - } -} - -143  - gMqStgsSvi -:: - $StiModeDisced -(cڡ -WiFiEvtStiModeDisced - & -evt -) { - -144 i( -_e -. -abd -) { - -146 - `CfigUpded -(); - -148 - } -} - -151  - gMqStgsSvi -:: - $cfiguMq -() { - -153 -_mqCl -. - `disc -(); - -156 i( -_e -. -abd - && -WiFi -. - `isCed -()) { - -158 -_mqCl -. - `tSv -( - `Cr -( -_e -. -ho -. - `c_r -(), & -_edHo -), _e. -pt -); - -159 i( -_e -. -uame -. - `ngth -() > 0) { - -160 -_mqCl -. - `tCdtls -( - `Cr -( -_e -. -uame -. - `c_r -(), & -_edUame -), - -161 - `Cr -( -_e -. -sswd -. - `ngth -(> 0 ? _e.sswd. - `c_r -(: -nuαr -, & -_edPasswd -)); - -163 -_mqCl -. - `tCdtls -( - `Cr -( -nuαr -, & -_edUame -),aCruαr, & -_edPasswd -)); - -165 -_mqCl -. - `tClId -( - `Cr -( -_e -. -Id -. - `c_r -(), & -_edClId -)); - -166 -_mqCl -. - `tKpAlive -( -_e -. -kpAlive -); - -167 -_mqCl -. - `tC˪Sessi -( -_e -. -nSessi -); - -168 -_mqCl -. - `tMaxTicLgth -( -_e -. -maxTicLgth -); - -169 -_mqCl -. - `c -(); - -172 -em -:: -EMSESP -:: -nss_ -. - `ld -(); - -173 - } -} - -175  - gMqStgs -:: - $ad -( -MqStgs - & -gs -, -JsObje - & -ro -) { - -176 -ro -["abd"] = -gs -. -abd -; - -177 -ro -["ho"] = -gs -. -ho -; - -178 -ro -["pt"] = -gs -. -pt -; - -179 -ro -["uame"] = -gs -. -uame -; - -180 -ro -["sswd"] = -gs -. -sswd -; - -181 -ro -["_id"] = -gs -. -Id -; - -182 -ro -["kp_ive"] = -gs -. -kpAlive -; - -183 -ro -["n_ssi"] = -gs -. -nSessi -; - -184 -ro -["max_tic_ngth"] = -gs -. -maxTicLgth -; - -187 -ro -["syem_hbt"] = -gs -. -syem_hbt -; - -188 -ro -["publish_time_bo"] = -gs -. -publish_time_bo -; - -189 -ro -["publish_time_thmo"] = -gs -. -publish_time_thmo -; - -190 -ro -["publish_time_sެ"] = -gs -. -publish_time_sެ -; - -191 -ro -["publish_time_mixg"] = -gs -. -publish_time_mixg -; - -192 -ro -["publish_time_h"] = -gs -. -publish_time_h -; - -193 -ro -["publish_time_ns"] = -gs -. -publish_time_ns -; - -194 -ro -["mq_fm"] = -gs -. -mq_fm -; - -195 -ro -["mq_qos"] = -gs -. -mq_qos -; - -196 - } -} - -198 -SUpdeResu - - gMqStgs -:: - $upde -( -JsObje - & -ro -, -MqStgs - & -gs -) { - -199 -MqStgs - -wStgs - = {}; - -201 -wStgs -. -abd - = -ro -["abd"] | -FACTORY_MQTT_ENABLED -; - -202 -wStgs -. -ho - = -ro -["ho"] | -FACTORY_MQTT_HOST -; - -203 -wStgs -. -pt - = -ro -["pt"] | -FACTORY_MQTT_PORT -; - -204 -wStgs -. -uame - = -ro -["uame"] | -FACTORY_MQTT_USERNAME -; - -205 -wStgs -. -sswd - = -ro -["sswd"] | -FACTORY_MQTT_PASSWORD -; - -206 -wStgs -. -Id - = -ro -["_id"] | -FACTORY_MQTT_CLIENT_ID -; - -207 -wStgs -. -kpAlive - = -ro -["kp_ive"] | -FACTORY_MQTT_KEEP_ALIVE -; - -208 -wStgs -. -nSessi - = -ro -["n_ssi"] | -FACTORY_MQTT_CLEAN_SESSION -; - -209 -wStgs -. -maxTicLgth - = -ro -["max_tic_ngth"] | -FACTORY_MQTT_MAX_TOPIC_LENGTH -; - -211 -wStgs -. -syem_hbt - = -ro -["syem_hbt"] | -EMSESP_DEFAULT_SYSTEM_HEARTBEAT -; - -212 -wStgs -. -publish_time_bo - = -ro -["publish_time_bo"] | -EMSESP_DEFAULT_PUBLISH_TIME -; - -213 -wStgs -. -publish_time_thmo - = -ro -["publish_time_thmo"] | -EMSESP_DEFAULT_PUBLISH_TIME -; - -214 -wStgs -. -publish_time_sެ - = -ro -["publish_time_sެ"] | -EMSESP_DEFAULT_PUBLISH_TIME -; - -215 -wStgs -. -publish_time_mixg - = -ro -["publish_time_mixg"] | -EMSESP_DEFAULT_PUBLISH_TIME -; - -216 -wStgs -. -publish_time_h - = -ro -["publish_time_h"] | -EMSESP_DEFAULT_PUBLISH_TIME -; - -217 -wStgs -. -publish_time_ns - = -ro -["publish_time_ns"] | -EMSESP_DEFAULT_PUBLISH_TIME -; - -218 -wStgs -. -mq_fm - = -ro -["mq_fm"] | -EMSESP_DEFAULT_MQTT_FORMAT -; - -219 -wStgs -. -mq_qos - = -ro -["mq_qos"] | -EMSESP_DEFAULT_MQTT_QOS -; - -221 i( -wStgs -. -syem_hbt - ! -gs -.system_heartbeat) { - -222 -em -:: -EMSESP -:: -syem_ -. - `t_hbt -( -wStgs -. -syem_hbt -); - -225 i( -wStgs -. -mq_qos - ! -gs -.mqtt_qos) { - -226 -em -:: -EMSESP -:: -mq_ -. - `t_qos -( -wStgs -. -mq_qos -); - -229 i( -wStgs -. -publish_time_bo - ! -gs -.publish_time_boiler) { - -230 -em -:: -EMSESP -:: -mq_ -. - `t_publish_time_bo -( -wStgs -. -publish_time_bo -); - -232 i( -wStgs -. -publish_time_thmo - ! -gs -.publish_time_thermostat) { - -233 -em -:: -EMSESP -:: -mq_ -. - `t_publish_time_thmo -( -wStgs -. -publish_time_thmo -); - -235 i( -wStgs -. -publish_time_sެ - ! -gs -.publish_time_solar) { - -236 -em -:: -EMSESP -:: -mq_ -. - `t_publish_time_sެ -( -wStgs -. -publish_time_sެ -); - -238 i( -wStgs -. -publish_time_mixg - ! -gs -.publish_time_mixing) { - -239 -em -:: -EMSESP -:: -mq_ -. - `t_publish_time_mixg -( -wStgs -. -publish_time_mixg -); - -241 i( -wStgs -. -publish_time_h - ! -gs -.publish_time_other) { - -242 -em -:: -EMSESP -:: -mq_ -. - `t_publish_time_h -( -wStgs -. -publish_time_h -); - -244 i( -wStgs -. -publish_time_ns - ! -gs -.publish_time_sensor) { - -245 -em -:: -EMSESP -:: -mq_ -. - `t_publish_time_ns -( -wStgs -. -publish_time_ns -); - -248 -em -:: -EMSESP -:: -mq_ -. - `t_publish_s -(); - -250 -gs - = -wStgs -; - -252  -SUpdeResu -:: -CHANGED -; - -253 - } -} - - @lib/framework/MqttSettingsService.h - -1 #ide -MqStgsSvi_h - - -2  - #MqStgsSvi_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -8  - ~ - -9  - ~ - -11  - ~"../../c/syem.h -" - -12  - ~"../../c/mq.h -" - -13  - ~"../../c/nss.h -" - -15  - #MQTT_RECONNECTION_DELAY - 1000 - - ) - -17  - #MQTT_SETTINGS_FILE - "/cfig/mqStgs.js" - - ) - -18  - #MQTT_SETTINGS_SERVICE_PATH - "//mqStgs" - - ) - -20 #ide -FACTORY_MQTT_ENABLED - - -21  - #FACTORY_MQTT_ENABLED - -l - - - ) - -24 #ide -FACTORY_MQTT_HOST - - -25  - #FACTORY_MQTT_HOST - ".mosquto.g" - - ) - -28 #ide -FACTORY_MQTT_PORT - - -29  - #FACTORY_MQTT_PORT - 1883 - - ) - -32 #ide -FACTORY_MQTT_USERNAME - - -33  - #FACTORY_MQTT_USERNAME - "" - - ) - -36 #ide -FACTORY_MQTT_PASSWORD - - -37  - #FACTORY_MQTT_PASSWORD - "" - - ) - -40 #ide -FACTORY_MQTT_CLIENT_ID - - -41  - #FACTORY_MQTT_CLIENT_ID - - `geClId -() - - ) - -42  -Sg - - $geClId -() { - -43 #ifde -ESP32 - - -44  -ESPUts -:: - `deuDeviVue -("esp32-"); - -45 #i - `defed -( -ESP8266 -) - -46  -ESPUts -:: - `deuDeviVue -("esp8266-"); - -48 - } -} - -51 #ide -FACTORY_MQTT_KEEP_ALIVE - - -52  - #FACTORY_MQTT_KEEP_ALIVE - 16 - - ) - -55 #ide -FACTORY_MQTT_CLEAN_SESSION - - -56  - #FACTORY_MQTT_CLEAN_SESSION - -ue - - - ) - -59 #ide -FACTORY_MQTT_MAX_TOPIC_LENGTH - - -60  - #FACTORY_MQTT_MAX_TOPIC_LENGTH - 128 - - ) - -63  - #EMSESP_DEFAULT_SYSTEM_HEARTBEAT - -ue - - - ) - -64  - #EMSESP_DEFAULT_MQTT_FORMAT - 2 - -65  - #EMSESP_DEFAULT_MQTT_QOS - 0 - - ) - -66  - #EMSESP_DEFAULT_PUBLISH_TIME - 10 - - ) - -69 as - cMqStgs - { - -70 - mpublic -: - -72 -bo - -abd -; - -73 -Sg - - mho -; - -74 -ut16_t - - mpt -; - -77 -Sg - - muame -; - -78 -Sg - - msswd -; - -81 -Sg - - mId -; - -84 -ut16_t - - mkpAlive -; - -85 -bo - - mnSessi -; - -86 -ut16_t - - mmaxTicLgth -; - -89 -ut16_t - - mpublish_time_bo -; - -90 -ut16_t - - mpublish_time_thmo -; - -91 -ut16_t - - mpublish_time_sެ -; - -92 -ut16_t - - mpublish_time_mixg -; - -93 -ut16_t - - mpublish_time_h -; - -94 -ut16_t - - mpublish_time_ns -; - -95 -ut8_t - - mmq_fm -; - -96 -ut8_t - - mmq_qos -; - -97 -bo - - msyem_hbt -; - -99  -ad -( -MqStgs - & -gs -, -JsObje - & -ro -); - -100  -SUpdeResu - -upde -( -JsObje - & -ro -, -MqStgs - & -gs -); - -103 -ass - - gMqStgsSvi - : -public - -SfulSvi -< -MqStgs -> { - -104 -public -: - -105 -MqStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -); - -106 ~ -MqStgsSvi -(); - -108  -beg -(); - -109  -lo -(); - -110 -bo - -isEbd -(); - -111 -bo - -isCed -(); - -112 cڡ * -gClId -(); - -113 -AsyncMqClDiscRs - -gDiscRs -(); - -114 -AsyncMqCl - * -gMqCl -(); - -116 - geed -: - -117  -CfigUpded -(); - -119 - give -: - -120 -HpEndpot -< -MqStgs -> -_hpEndpot -; - -121 - gFSPsi -< - gMqStgs -> - g_fsPsi -; - -125 * - g_edHo -; - -126 * - g_edClId -; - -127 * - g_edUame -; - -128 * - g_edPasswd -; - -131 -bo - - g_cfiguMq -; - -132  - g_discedAt -; - -135 -AsyncMqClDiscRs - - g_discRs -; - -138 -AsyncMqCl - - g_mqCl -; - -140 #ifde -ESP32 - - -141  -StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -142  -StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -143 #i -defed -( -ESP8266 -) - -144 -WiFiEvtHdr - - g_StiModeDiscedHdr -; - -145 -WiFiEvtHdr - - g_StiModeGIPHdr -; - -146  -StiModeGIP -(cڡ -WiFiEvtStiModeGIP - & -evt -); - -147  -StiModeDisced -(cڡ -WiFiEvtStiModeDisced - & -evt -); - -150  -MqC -( -bo - -ssiP -); - -151  -MqDisc -( -AsyncMqClDiscRs - -as -); - -152  -cfiguMq -(); - - @lib/framework/MqttStatus.cpp - -1  - ~ - -3 - gMqStus -:: - $MqStus -( -AsyncWebSv - * -rv -, -MqStgsSvi - * -mqStgsSvi -, -SecuryMag - * -curyMag -) - -4 : - $_mqStgsSvi -( -mqStgsSvi -) { - -5 -rv --> - ` -( -MQTT_STATUS_SERVICE_PATH -, - -6 -HTTP_GET -, - -7 -curyMag --> - `wpReque -( -d -:: - `bd -(& -MqStus -:: -mqStus -, -this -, std:: -ahds -:: -_1 -), -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -8 - } -} - -10  - gMqStus -:: - $mqStus -( -AsyncWebSvReque - * -que -) { - -11 -AsyncJsReڣ - * -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_MQTT_STATUS_SIZE -); - -12 -JsObje - -ro - = -ڣ --> - `gRo -(); - -14 -ro -["abd"] = -_mqStgsSvi --> - `isEbd -(); - -15 -ro -["ced"] = -_mqStgsSvi --> - `isCed -(); - -16 -ro -["_id"] = -_mqStgsSvi --> - `gClId -(); - -17 -ro -["disc_as"] = ( -ut8_t -) -_mqStgsSvi --> - `gDiscRs -(); - -19 -ro -["mq_s"] = -em -:: -Mq -:: - `publish_s -(); - -21 -ڣ --> - `tLgth -(); - -22 -que --> - `nd -( -ڣ -); - -23 - } -} - - @lib/framework/MqttStatus.h - -1 #ide -MqStus_h - - -2  - #MqStus_h - - - ) - -4 #ifde -ESP32 - - -5  - ~ - -6  - ~ - -7 #i -defed -( -ESP8266 -) - -8  - ~ - -9  - ~ - -12  - ~"../../c/mq.h -" - -14  - ~ - -15  - ~ - -16  - ~ - -17  - ~ - -18  - ~ - -20  - #MAX_MQTT_STATUS_SIZE - 1024 - - ) - -21  - #MQTT_STATUS_SERVICE_PATH - "//mqStus" - - ) - -23 as - cMqStus - { - -24 - mpublic -: - -25 -MqStus -( -AsyncWebSv - * -rv -, -MqStgsSvi - * -mqStgsSvi -, -SecuryMag - * -curyMag -); - -27 - mive -: - -28 -MqStgsSvi - * -_mqStgsSvi -; - -30  -mqStus -( -AsyncWebSvReque - * -que -); - - @lib/framework/NTPSettingsService.cpp - -1  - ~ - -3 - gNTPStgsSvi -:: - $NTPStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -) : - -4 - `_hpEndpot -( -NTPStgs -:: -ad -, NTPStgs:: -upde -, -this -, -rv -, -NTP_SETTINGS_SERVICE_PATH -, -curyMag -), - -5 - `_fsPsi -( -NTPStgs -:: -ad -, NTPStgs:: -upde -, -this -, -fs -, -NTP_SETTINGS_FILE -), - -6 - `_timeHdr -( -TIME_PATH -, - -7 -curyMag --> - `wpClback -( - -8 -d -:: - `bd -(& -NTPStgsSvi -:: -cfiguTime -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), - -9 -AuthtitiPdis -:: -IS_ADMIN -)) { - -10 -_timeHdr -. - `tMhod -( -HTTP_POST -); - -11 -_timeHdr -. - `tMaxCڋLgth -( -MAX_TIME_SIZE -); - -12 -rv --> - `addHdr -(& -_timeHdr -); - -13 #ifde -ESP32 - - -14 -WiFi -. - `Evt -( - -15 -d -:: - `bd -(& -NTPStgsSvi -:: -StiModeDisced -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), - -16 -WiFiEvt_t -:: -SYSTEM_EVENT_STA_DISCONNECTED -); - -17 -WiFi -. - `Evt -( -d -:: - `bd -(& -NTPStgsSvi -:: -StiModeGIP -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), - -18 -WiFiEvt_t -:: -SYSTEM_EVENT_STA_GOT_IP -); - -19 #i - `defed -( -ESP8266 -) - -20 -_StiModeDiscedHdr - = -WiFi -. - `StiModeDisced -( - -21 -d -:: - `bd -(& -NTPStgsSvi -:: -StiModeDisced -, -this -, std:: -ahds -:: -_1 -)); - -22 -_StiModeGIPHdr - = - -23 -WiFi -. - `StiModeGIP -( -d -:: - `bd -(& -NTPStgsSvi -:: -StiModeGIP -, -this -, std:: -ahds -:: -_1 -)); - -25 - `addUpdeHdr -([&](cڡ -Sg -& -igId -{ - `cfiguNTP -(); }, -l -); - -26 - } -} - -28  - gNTPStgsSvi -:: - $beg -() { - -29 -_fsPsi -. - `adFromFS -(); - -30 - `cfiguNTP -(); - -31 - } -} - -33 #ifde -ESP32 - - -34  - gNTPStgsSvi -:: - $StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -36 - `cfiguNTP -(); - -37 - } -} - -39  - gNTPStgsSvi -:: - $StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -41 - `cfiguNTP -(); - -42 - } -} - -43 #i -defed -( -ESP8266 -) - -44  - gNTPStgsSvi -:: - $StiModeGIP -(cڡ -WiFiEvtStiModeGIP -& -evt -) { - -46 - `cfiguNTP -(); - -47 - } -} - -49  - gNTPStgsSvi -:: - $StiModeDisced -(cڡ -WiFiEvtStiModeDisced -& -evt -) { - -51 - `cfiguNTP -(); - -52 - } -} - -55  - gNTPStgsSvi -:: - $cfiguNTP -() { - -56 i( -WiFi -. - `isCed -(&& -_e -. -abd -) { - -58 #ifde -ESP32 - - -59 - `cfigTzTime -( -_e -. -tzFm -. - `c_r -(), _e. -rv -.c_str()); - -60 #i - `defed -( -ESP8266 -) - -61 - `cfigTime -( -_e -. -tzFm -. - `c_r -(), _e. -rv -.c_str()); - -64 #ifde -ESP32 - - -65 - `nv -("TZ", -_e -. -tzFm -. - `c_r -(), 1); - -66 - `tzt -(); - -67 #i - `defed -( -ESP8266 -) - -68 - `tTZ -( -_e -. -tzFm -. - `c_r -()); - -70 - `_ -(); - -72 - } -} - -74  - gNTPStgsSvi -:: - $cfiguTime -( -AsyncWebSvReque -* -que -, -JsV -& -js -) { - -75 i(! - `_abd -(&& -js -. -is -< -JsObje ->()) { - -76 -Sg - -timeUtc - = -js -["time_utc"]; - -77  -tm -m = {0}; - -78 * -s - = - `time -( -timeUtc -. - `c_r -(), "%Y-%m-%dT%H:%M:%SZ", & -tm -); - -79 i( -s - ! -nuαr -) { - -80 -time_t - -time - = - `mktime -(& -tm -); - -81  -timev - -now - = {. -tv_c - = -time -}; - -82 - `imeofday -(& -now -, -nuαr -); - -83 -AsyncWebSvReڣ -* -ڣ - = -que --> - `begReڣ -(200); - -84 -que --> - `nd -( -ڣ -); - -88 -AsyncWebSvReڣ -* -ڣ - = -que --> - `begReڣ -(400); - -89 -que --> - `nd -( -ڣ -); - -90 - } -} - - @lib/framework/NTPSettingsService.h - -1 #ide -NTPStgsSvi_h - - -2  - #NTPStgsSvi_h - - - ) - -4  - ~ - -5  - ~ - -7  - ~ - -8 #ifde -ESP32 - - -9  - ~ - -10 #i -defed -( -ESP8266 -) - -11  - ~<.h -> - -14 #ide -FACTORY_NTP_ENABLED - - -15  - #FACTORY_NTP_ENABLED - -ue - - - ) - -18 #ide -FACTORY_NTP_TIME_ZONE_LABEL - - -19  - #FACTORY_NTP_TIME_ZONE_LABEL - "Eure/Ld" - - ) - -22 #ide -FACTORY_NTP_TIME_ZONE_FORMAT - - -23  - #FACTORY_NTP_TIME_ZONE_FORMAT - "GMT0BST,M3.5.0/1,M10.5.0" - - ) - -26 #ide -FACTORY_NTP_SERVER - - -27  - #FACTORY_NTP_SERVER - "time.goog.com" - - ) - -30  - #NTP_SETTINGS_FILE - "/cfig/pStgs.js" - - ) - -31  - #NTP_SETTINGS_SERVICE_PATH - "//pStgs" - - ) - -33  - #MAX_TIME_SIZE - 256 - - ) - -34  - #TIME_PATH - "//time" - - ) - -36 as - cNTPStgs - { - -37 - mpublic -: - -38 -bo - -abd -; - -39 -Sg - - mtzLab -; - -40 -Sg - - mtzFm -; - -41 -Sg - - mrv -; - -43  - $ad -( -NTPStgs -& -gs -, -JsObje -& -ro -) { - -44 -ro -["abd"] = -gs -. -abd -; - -45 -ro -["rv"] = -gs -. -rv -; - -46 -ro -["tz_b"] = -gs -. -tzLab -; - -47 -ro -["tz_fm"] = -gs -. -tzFm -; - -50  -SUpdeResu - - $upde -( -JsObje -& -ro -, -NTPStgs -& -gs -) { - -51 -gs -. -abd - = -ro -["abd"] | -FACTORY_NTP_ENABLED -; - -52 -gs -. -rv - = -ro -["rv"] | -FACTORY_NTP_SERVER -; - -53 -gs -. -tzLab - = -ro -["tz_b"] | -FACTORY_NTP_TIME_ZONE_LABEL -; - -54 -gs -. -tzFm - = -ro -["tz_fm"] | -FACTORY_NTP_TIME_ZONE_FORMAT -; - -55  -SUpdeResu -:: -CHANGED -; - -56 - } -} - -59 -ass - - gNTPStgsSvi - : -public - -SfulSvi -< -NTPStgs -> { - -60 -public -: - -61 -NTPStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -); - -63  -beg -(); - -65 - give -: - -66 -HpEndpot -< -NTPStgs -> -_hpEndpot -; - -67 - gFSPsi -< - gNTPStgs -> - g_fsPsi -; - -68 -AsyncClbackJsWebHdr - - g_timeHdr -; - -70 #ifde -ESP32 - - -71  -StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -72  -StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -73 #i -defed -( -ESP8266 -) - -74 -WiFiEvtHdr - - g_StiModeDiscedHdr -; - -75 -WiFiEvtHdr - - g_StiModeGIPHdr -; - -77  -StiModeGIP -(cڡ -WiFiEvtStiModeGIP -& -evt -); - -78  -StiModeDisced -(cڡ -WiFiEvtStiModeDisced -& -evt -); - -80  -cfiguNTP -(); - -81  -cfiguTime -( -AsyncWebSvReque -* -que -, -JsV -& -js -); - - @lib/framework/NTPStatus.cpp - -1  - ~ - -3 - gNTPStus -:: - $NTPStus -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -) { - -4 -rv --> - ` -( -NTP_STATUS_SERVICE_PATH -, - -5 -HTTP_GET -, - -6 -curyMag --> - `wpReque -( -d -:: - `bd -(& -NTPStus -:: -pStus -, -this -, std:: -ahds -:: -_1 -), - -7 -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -8 - } -} - -10 -Sg - - $toISOSg -( -tm -* -time -, -bo - -cOfft -) { - -11  -time_rg -[25]; - -12 - `rime -( -time_rg -, 25, -cOfft - ? "%FT%T%z" : "%FT%TZ", -time -); - -13  - `Sg -( -time_rg -); - -14 - } -} - -16  - gNTPStus -:: - $pStus -( -AsyncWebSvReque -* -que -) { - -17 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_NTP_STATUS_SIZE -); - -18 -JsObje - -ro - = -ڣ --> - `gRo -(); - -21 -time_t - -now - = - `time -( -nuαr -); - -24 -ro -["us"] = - `_abd -() ? 1 : 0; - -27 -ro -["time_utc"] = - `toISOSg -( - `gmtime -(& -now -), -l -); - -30 -ro -["time_lol"] = - `toISOSg -( - `loime -(& -now -), -ue -); - -33 -ro -["rv"] = - `_grvme -(0); - -36 -ro -["uime"] = -uuid -:: - `g_uime -() / 1000; - -38 -ڣ --> - `tLgth -(); - -39 -que --> - `nd -( -ڣ -); - -40 - } -} - - @lib/framework/NTPStatus.h - -1 #ide -NTPStus_h - - -2  - #NTPStus_h - - - ) - -4  - ~ - -5 #ifde -ESP32 - - -6  - ~ - -7  - ~ - -8  - ~ - -9 #i -defed -( -ESP8266 -) - -10  - ~ - -11  - ~ - -12  - ~<.h -> - -15  - ~ - -16  - ~ - -17  - ~ - -18  - ~ - -19  - ~ - -22  - #MAX_NTP_STATUS_SIZE - 1024 - - ) - -23  - #NTP_STATUS_SERVICE_PATH - "//pStus" - - ) - -25 as - cNTPStus - { - -26 - mpublic -: - -27 -NTPStus -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -); - -29 - mive -: - -30  -pStus -( -AsyncWebSvReque -* -que -); - - @lib/framework/OTASettingsService.cpp - -1  - ~ - -3 - gOTAStgsSvi -:: - $OTAStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -) - -4 : - `_hpEndpot -( -OTAStgs -:: -ad -, OTAStgs:: -upde -, -this -, -rv -, -OTA_SETTINGS_SERVICE_PATH -, -curyMag -) - -5 , - `_fsPsi -( -OTAStgs -:: -ad -, OTAStgs:: -upde -, -this -, -fs -, -OTA_SETTINGS_FILE -) - -6 , - $_duoOTA -( -nuαr -) { - -7 #ifde -ESP32 - - -8 -WiFi -. - `Evt -( -d -:: - `bd -(& -OTAStgsSvi -:: -StiModeGIP -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), -WiFiEvt_t -:: -SYSTEM_EVENT_STA_GOT_IP -); - -9 #i - `defed -( -ESP8266 -) - -10 -_StiModeGIPHdr - = -WiFi -. - `StiModeGIP -( -d -:: - `bd -(& -OTAStgsSvi -:: -StiModeGIP -, -this -, std:: -ahds -:: -_1 -)); - -12 - `addUpdeHdr -([&](cڡ -Sg - & -igId -{ - `cfiguArduoOTA -(); }, -l -); - -13 - } -} - -15  - gOTAStgsSvi -:: - $beg -() { - -16 -_fsPsi -. - `adFromFS -(); - -17 - `cfiguArduoOTA -(); - -18 - } -} - -20  - gOTAStgsSvi -:: - $lo -() { - -21 i( -_e -. -abd - && -_duoOTA -) { - -22 -_duoOTA --> - `hd -(); - -24 - } -} - -26  - gOTAStgsSvi -:: - $cfiguArduoOTA -() { - -27 i( -_duoOTA -) { - -28 #ifde -ESP32 - - -29 -_duoOTA --> - `d -(); - -31 -de - -_duoOTA -; - -32 -_duoOTA - = -nuαr -; - -34 i( -_e -. -abd -) { - -36 -_duoOTA - = -w - -ArduoOTACss -; - -37 -_duoOTA --> - `tPt -( -_e -. -pt -); - -38 -_duoOTA --> - `tPasswd -( -_e -. -sswd -. - `c_r -()); - -40 -_duoOTA --> - `S -([]() { - -42 -em -:: -Syem -:: - `ud_us -( -ue -); - -44 -_duoOTA --> - `End -([]() { - -46 -em -:: -Syem -:: - `ud_us -( -l -); - -67 -_duoOTA --> - `beg -(); - -69 - } -} - -71 #ifde -ESP32 - - -72  - gOTAStgsSvi -:: - $StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -73 - `cfiguArduoOTA -(); - -74 - } -} - -75 #i -defed -( -ESP8266 -) - -76  - gOTAStgsSvi -:: - $StiModeGIP -(cڡ -WiFiEvtStiModeGIP - & -evt -) { - -77 - `cfiguArduoOTA -(); - -78 - } -} - - @lib/framework/OTASettingsService.h - -1 #ide -OTAStgsSvi_h - - -2  - #OTAStgsSvi_h - - - ) - -4  - ~ - -5  - ~ - -7 #ifde -ESP32 - - -8  - ~ - -9 #i -defed -( -ESP8266 -) - -10  - ~ - -13  - ~ - -14  - ~ - -16  - ~"../../c/syem.h -" - -18 #ide -FACTORY_OTA_PORT - - -19  - #FACTORY_OTA_PORT - 8266 - - ) - -22 #ide -FACTORY_OTA_PASSWORD - - -23  - #FACTORY_OTA_PASSWORD - "e-a" - - ) - -26 #ide -FACTORY_OTA_ENABLED - - -27  - #FACTORY_OTA_ENABLED - -ue - - - ) - -30  - #OTA_SETTINGS_FILE - "/cfig/aStgs.js" - - ) - -31  - #OTA_SETTINGS_SERVICE_PATH - "//aStgs" - - ) - -33 as - cOTAStgs - { - -34 - mpublic -: - -35 -bo - -abd -; - -36  - mpt -; - -37 -Sg - - msswd -; - -39  - $ad -( -OTAStgs -& -gs -, -JsObje -& -ro -) { - -40 -ro -["abd"] = -gs -. -abd -; - -41 -ro -["pt"] = -gs -. -pt -; - -42 -ro -["sswd"] = -gs -. -sswd -; - -45  -SUpdeResu - - $upde -( -JsObje -& -ro -, -OTAStgs -& -gs -) { - -46 -gs -. -abd - = -ro -["abd"] | -FACTORY_OTA_ENABLED -; - -47 -gs -. -pt - = -ro -["pt"] | -FACTORY_OTA_PORT -; - -48 -gs -. -sswd - = -ro -["sswd"] | -FACTORY_OTA_PASSWORD -; - -49  -SUpdeResu -:: -CHANGED -; - -50 - } -} - -53 -ass - - gOTAStgsSvi - : -public - -SfulSvi -< -OTAStgs -> { - -54 -public -: - -55 -OTAStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -); - -57  -beg -(); - -58  -lo -(); - -60 - give -: - -61 -HpEndpot -< -OTAStgs -> -_hpEndpot -; - -62 - gFSPsi -< - gOTAStgs -> - g_fsPsi -; - -63 -ArduoOTACss -* - g_duoOTA -; - -65  -cfiguArduoOTA -(); - -66 #ifde -ESP32 - - -67  -StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -68 #i -defed -( -ESP8266 -) - -69 -WiFiEvtHdr - - g_StiModeGIPHdr -; - -70  -StiModeGIP -(cڡ -WiFiEvtStiModeGIP -& -evt -); - - @lib/framework/RestartService.cpp - -1  - ~ - -3 - gRetSvi -:: - $RetSvi -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -) { - -4 -rv --> - ` -( -RESTART_SERVICE_PATH -, - -5 -HTTP_POST -, - -6 -curyMag --> - `wpReque -( -d -:: - `bd -(& -RetSvi -:: -t -, -this -, std:: -ahds -:: -_1 -), - -7 -AuthtitiPdis -:: -IS_ADMIN -)); - -8 - } -} - -10  - gRetSvi -:: - $t -( -AsyncWebSvReque -* -que -) { - -11 -que --> - `Disc -( -RetSvi -:: -tNow -); - -12 -que --> - `nd -(200); - -13 - } -} - - @lib/framework/RestartService.h - -1 #ide -RetSvi_h - - -2  - #RetSvi_h - - - ) - -4 #ifde -ESP32 - - -5  - ~ - -6  - ~ - -7 #i -defed -( -ESP8266 -) - -8  - ~ - -9  - ~ - -12  - ~ - -13  - ~ - -15  - #RESTART_SERVICE_PATH - "//t" - - ) - -17 as - cRetSvi - { - -18 - mpublic -: - -19 -RetSvi -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -); - -21  - $tNow -() { - -22 -WiFi -. - `disc -( -ue -); - -23 - `day -(500); - -24 -ESP -. - `t -(); - -27 -ive -: - -28  - `t -( -AsyncWebSvReque -* -que -); - -29 - } -}; - - @lib/framework/SecurityManager.h - -1 #ide -SecuryMag_h - - -2  - #SecuryMag_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -8  - ~ - -9  - ~
  • - -11 #ide -FACTORY_JWT_SECRET - - -12  - #FACTORY_JWT_SECRET - -ESPUts -:: - `deuDeviVue -() - - ) - -15  - #ACCESS_TOKEN_PARAMATER - "acss_tok" - - ) - -17  - #AUTHORIZATION_HEADER - "Authizi" - - ) - -18  - #AUTHORIZATION_HEADER_PREFIX - "B" - - ) - -19  - #AUTHORIZATION_HEADER_PREFIX_LEN - 7 - - ) - -21  - #MAX_JWT_SIZE - 128 - - ) - -23 as - cUr - { - -24 - mpublic -: - -25 -Sg - -uame -; - -26 -Sg - - msswd -; - -27 -bo - - madm -; - -29 - mpublic -: - -30 - $Ur -( -Sg - -uame -, Sg -sswd -, -bo - -adm -: - `uame -(uame), - `sswd -asswd), - $adm -( -adm -) { - -32 - } -}; - -34 as - cAuthtiti - { - -35 - mpublic -: - -36 -Ur -* -ur -; - -37 -boޗn - - mauthtid -; - -39 - mpublic -: - -40 - $Authtiti -( -Ur -& -ur -: - `ur -( -w - - `Ur -(ur)), - $authtid -( -ue -) { - -42 - $Authtiti -(: - `ur -( -nuαr -), - $authtid -( -l -) { - -43 - } -} - -44 ~ - $Authtiti -() { - -45 - `de - ( -ur -); - -46 - } -} - -49  - gd -:: - tfuni -< - tboޗn -( - tAuthtiti -& - tauthtiti -)> - tAuthtitiPdi -; - -51 as - cAuthtitiPdis - { - -52 - mpublic -: - -53  -bo - - $NONE_REQUIRED -( -Authtiti -& -authtiti -) { - -54  -ue -; - -56  -bo - - $IS_AUTHENTICATED -( -Authtiti -& -authtiti -) { - -57  -authtiti -. -authtid -; - -58 - } -}; - -59  -bo - - $IS_ADMIN -( -Authtiti -& -authtiti -) { - -60  -authtiti -. -authtid - &&uthtiti. -ur --> -adm -; - -61 - } -}; - -64 as - cSecuryMag - { - -65 - mpublic -: - -66 #i - $FT_ENABLED -( -FT_SECURITY -) - -70 -vtu - -Authtiti - - `authti -(cڡ -Sg -& -uame -, cڡ Sg& -sswd -) = 0; - -75 -vtu - -Sg - - `geJWT -( -Ur -* -ur -) = 0; - -82 -vtu - -Authtiti - - `authtiReque -( -AsyncWebSvReque -* -que -) = 0; - -87 -vtu - -ArRequeFrFuni - - `frReque -( -AuthtitiPdi - -edi -) = 0; - -92 -vtu - -ArRequeHdrFuni - - `wpReque -(ArRequeHdrFuni -Reque -, - -93 -AuthtitiPdi - -edi -) = 0; - -98 -vtu - -ArJsRequeHdrFuni - - `wpClback -(ArJsRequeHdrFuni -Reque -, - -99 -AuthtitiPdi - -edi -) = 0; - - @lib/framework/SecuritySettingsService.cpp - -1  - ~ - -3 #i -FT_ENABLED -( -FT_SECURITY -) - -5 - gSecuryStgsSvi -:: - $SecuryStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -) : - -6 - `_hpEndpot -( -SecuryStgs -:: -ad -, SecuryStgs:: -upde -, -this -, -rv -, -SECURITY_SETTINGS_PATH -,his), - -7 - `_fsPsi -( -SecuryStgs -:: -ad -, SecuryStgs:: -upde -, -this -, -fs -, -SECURITY_SETTINGS_FILE -), - -8 - $_jwtHdr -( -FACTORY_JWT_SECRET -) { - -9 - `addUpdeHdr -([&](cڡ -Sg -& -igId -{ - `cfiguJWTHdr -(); }, -l -); - -10 - } -} - -12  - gSecuryStgsSvi -:: - $beg -() { - -13 -_fsPsi -. - `adFromFS -(); - -14 - `cfiguJWTHdr -(); - -15 - } -} - -17 -Authtiti - - gSecuryStgsSvi -:: - $authtiReque -( -AsyncWebSvReque -* -que -) { - -18 -AsyncWebHd -* -authiziHd - = -que --> - `gHd -( -AUTHORIZATION_HEADER -); - -19 i( -authiziHd -) { - -20 -Sg - -vue - = -authiziHd --> - `vue -(); - -21 i( -vue -. - `tsWh -( -AUTHORIZATION_HEADER_PREFIX -)) { - -22 -vue - = vue. - `subrg -( -AUTHORIZATION_HEADER_PREFIX_LEN -); - -23  - `authtiJWT -( -vue -); - -25 } i( -que --> - `hasPam -( -ACCESS_TOKEN_PARAMATER -)) { - -26 -AsyncWebPam -* -tokPam - = -que --> - `gPam -( -ACCESS_TOKEN_PARAMATER -); - -27 -Sg - -vue - = -tokPam --> - `vue -(); - -28  - `authtiJWT -( -vue -); - -30  - `Authtiti -(); - -31 - } -} - -33  - gSecuryStgsSvi -:: - $cfiguJWTHdr -() { - -34 -_jwtHdr -. - `tSe -( -_e -. -jwtSe -); - -35 - } -} - -37 -Authtiti - - gSecuryStgsSvi -:: - $authtiJWT -( -Sg -& -jwt -) { - -38 -DymicJsDocumt - - `yldDocumt -( -MAX_JWT_SIZE -); - -39 -_jwtHdr -. - `rJWT -( -jwt -, -yldDocumt -); - -40 i( -yldDocumt -. -is -< -JsObje ->()) { - -41 -JsObje - -rdPayld - = -yldDocumt -. -as -(); - -42 -Sg - -uame - = -rdPayld -["username"]; - -43  -Ur - -_ur - : -_e -. -urs -) { - -44 i( -_ur -. -uame - =uam&& - `videPayld -( -rdPayld -, &_user)) { - -45  - `Authtiti -( -_ur -); - -49  - `Authtiti -(); - -50 - } -} - -52 -Authtiti - - gSecuryStgsSvi -:: - $authti -(cڡ -Sg -& -uame -, cڡ Sg& -sswd -) { - -53  -Ur - -_ur - : -_e -. -urs -) { - -54 i( -_ur -. -uame - =uam&& _ur. -sswd - ==assword) { - -55  - `Authtiti -( -_ur -); - -58  - `Authtiti -(); - -59 - } -} - -61 -le -  - $puϋJWTPayld -( -JsObje -& -yld -, -Ur -* -ur -) { - -62 -yld -["uame"] = -ur --> -uame -; - -63 -yld -["adm"] = -ur --> -adm -; - -64 -yld -["vsi"] = -EMSESP_APP_VERSION -; - -65 - } -} - -67 -boޗn - - gSecuryStgsSvi -:: - $videPayld -( -JsObje -& -rdPayld -, -Ur -* -ur -) { - -68 -DymicJsDocumt - - `jsDocumt -( -MAX_JWT_SIZE -); - -69 -JsObje - -yld - = -jsDocumt -. -to -(); - -70 - `puϋJWTPayld -( -yld -, -ur -); - -71  -yld - = -rdPayld -; - -72 - } -} - -74 -Sg - - gSecuryStgsSvi -:: - $geJWT -( -Ur -* -ur -) { - -75 -DymicJsDocumt - - `jsDocumt -( -MAX_JWT_SIZE -); - -76 -JsObje - -yld - = -jsDocumt -. -to -(); - -77 - `puϋJWTPayld -( -yld -, -ur -); - -78  -_jwtHdr -. - `budJWT -( -yld -); - -79 - } -} - -81 -ArRequeFrFuni - - gSecuryStgsSvi -:: - $frReque -( -AuthtitiPdi - -edi -) { - -82  [ -this -, -edi -]( -AsyncWebSvReque -* -que -) { - -83 -Authtiti - -authtiti - = - `authtiReque -( -que -); - -84  - `edi -( -authtiti -); - -86 - } -} - -88 -ArRequeHdrFuni - - gSecuryStgsSvi -:: - $wpReque -( -ArRequeHdrFuni - -Reque -, - -89 -AuthtitiPdi - -edi -) { - -90  [ -this -, -Reque -, -edi -]( -AsyncWebSvReque -* -que -) { - -91 -Authtiti - -authtiti - = - `authtiReque -( -que -); - -92 i(! - `edi -( -authtiti -)) { - -93 -que --> - `nd -(401); - -96 - `Reque -( -que -); - -98 - } -} - -100 -ArJsRequeHdrFuni - - gSecuryStgsSvi -:: - $wpClback -( -ArJsRequeHdrFuni - -Reque -, - -101 -AuthtitiPdi - -edi -) { - -102  [ -this -, -Reque -, -edi -]( -AsyncWebSvReque -* -que -, -JsV -& -js -) { - -103 -Authtiti - -authtiti - = - `authtiReque -( -que -); - -104 i(! - `edi -( -authtiti -)) { - -105 -que --> - `nd -(401); - -108 - `Reque -( -que -, -js -); - -110 - } -} - -114 -Ur - - gADMIN_USER - = Ur( -FACTORY_ADMIN_USERNAME -, -FACTORY_ADMIN_PASSWORD -, -ue -); - -116 - gSecuryStgsSvi -:: - $SecuryStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -: - $SecuryMag -() { - -117 - } -} - -118 -SecuryStgsSvi -::~ - $SecuryStgsSvi -() { - -119 - } -} - -121 -ArRequeFrFuni - -SecuryStgsSvi -:: - $frReque -( -AuthtitiPdi - -edi -) { - -122  [ -this -, -edi -]( -AsyncWebSvReque -* -que -{  -ue -; }; - -123 - } -} - -126 -Authtiti - - gSecuryStgsSvi -:: - $authtiReque -( -AsyncWebSvReque -* -que -) { - -127  - `Authtiti -( -ADMIN_USER -); - -128 - } -} - -131 -ArRequeHdrFuni - - gSecuryStgsSvi -:: - $wpReque -( -ArRequeHdrFuni - -Reque -, - -132 -AuthtitiPdi - -edi -) { - -133  -Reque -; - -134 - } -} - -136 -ArJsRequeHdrFuni - - gSecuryStgsSvi -:: - $wpClback -( -ArJsRequeHdrFuni - -Reque -, - -137 -AuthtitiPdi - -edi -) { - -138  -Reque -; - -139 - } -} - - @lib/framework/SecuritySettingsService.h - -1 #ide -SecuryStgsSvi_h - - -2  - #SecuryStgsSvi_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -9  - ~"../../c/vsi.h -" - -11 #ide -FACTORY_ADMIN_USERNAME - - -12  - #FACTORY_ADMIN_USERNAME - "adm" - - ) - -15 #ide -FACTORY_ADMIN_PASSWORD - - -16  - #FACTORY_ADMIN_PASSWORD - "adm" - - ) - -19 #ide -FACTORY_GUEST_USERNAME - - -20  - #FACTORY_GUEST_USERNAME - "gue" - - ) - -23 #ide -FACTORY_GUEST_PASSWORD - - -24  - #FACTORY_GUEST_PASSWORD - "gue" - - ) - -27  - #SECURITY_SETTINGS_FILE - "/cfig/curyStgs.js" - - ) - -28  - #SECURITY_SETTINGS_PATH - "//curyStgs" - - ) - -30 #i -FT_ENABLED -( -FT_SECURITY -) - -32 as - cSecuryStgs - { - -33 - mpublic -: - -34 -Sg - -jwtSe -; - -35 - md -:: -li -< -Ur -> -urs -; - -37  - $ad -( -SecuryStgs -& -gs -, -JsObje -& -ro -) { - -39 -ro -["jwt_"] = -gs -. -jwtSe -; - -42 -JsAay - -urs - = -ro -. - `NeedAay -("users"); - -43  -Ur - -ur - : -gs -. -urs -) { - -44 -JsObje - -urRo - = -urs -. - `NeedObje -(); - -45 -urRo -["uame"] = -ur -. -uame -; - -46 -urRo -["sswd"] = -ur -. -sswd -; - -47 -urRo -["adm"] = -ur -. -adm -; - -51  -SUpdeResu - - $upde -( -JsObje -& -ro -, -SecuryStgs -& -gs -) { - -53 -gs -. -jwtSe - = -ro -["jwt_"] | -FACTORY_JWT_SECRET -; - -56 -gs -. -urs -. - `r -(); - -57 i( -ro -["urs"]. -is -< -JsAay ->()) { - -58  -JsV - -ur - : -ro -["urs"]. -as -< -JsAay ->()) { - -59 -gs -. -urs -. - `push_back -( - `Ur -( -ur -["username"], user["password"], user["admin"])); - -62 -gs -. -urs -. - `push_back -( - `Ur -( -FACTORY_ADMIN_USERNAME -, -FACTORY_ADMIN_PASSWORD -, -ue -)); - -63 -gs -. -urs -. - `push_back -( - `Ur -( -FACTORY_GUEST_USERNAME -, -FACTORY_GUEST_PASSWORD -, -l -)); - -65  -SUpdeResu -:: -CHANGED -; - -66 - } -} - -69 -ass - - gSecuryStgsSvi - : -public - -SfulSvi -< -SecuryStgs ->,ubli - gSecuryMag - { - -70 - gpublic -: - -71 -SecuryStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -); - -73  -beg -(); - -76 -Authtiti - -authti -(cڡ -Sg -& -uame -, cڡ Sg& -sswd -); - -77 -Authtiti - -authtiReque -( -AsyncWebSvReque -* -que -); - -78 -Sg - -geJWT -( -Ur -* -ur -); - -79 -ArRequeFrFuni - -frReque -( -AuthtitiPdi - -edi -); - -80 -ArRequeHdrFuni - -wpReque -(ArRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -); - -81 -ArJsRequeHdrFuni - -wpClback -(ArJsRequeHdrFuni -back -, -AuthtitiPdi - -edi -); - -83 - give -: - -84 -HpEndpot -< -SecuryStgs -> -_hpEndpot -; - -85 - gFSPsi -< - gSecuryStgs -> - g_fsPsi -; - -86 -ArduoJsJWT - - g_jwtHdr -; - -88  -cfiguJWTHdr -(); - -93 -Authtiti - -authtiJWT -( -Sg -& -jwt -); - -98 -boޗn - -videPayld -( -JsObje -& -rdPayld -, -Ur -* -ur -); - -103 as - cSecuryStgsSvi - : -public - -SecuryMag - { - -104 -public -: - -105 -SecuryStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -); - -106 ~ -SecuryStgsSvi -(); - -109 -Authtiti - -authtiReque -( -AsyncWebSvReque -* -que -); - -110 -ArRequeFrFuni - -frReque -( -AuthtitiPdi - -edi -); - -111 -ArRequeHdrFuni - -wpReque -(ArRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -); - -112 -ArJsRequeHdrFuni - -wpClback -(ArJsRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -); - - @lib/framework/StatefulService.cpp - -1  - ~ - -3 -upde_hdr_id_t - - gSUpdeHdrInfo -:: -cutUpdedHdrId - = 0; - - @lib/framework/StatefulService.h - -1 #ide -SfulSvi_h - - -2  - #SfulSvi_h - - - ) - -4  - ~ - -5  - ~ - -7  - ~
  • - -8  - ~ - -9 #ifde -ESP32 - - -10  - ~<䓹os/FeRTOS.h -> - -11  - ~<䓹os/mphr.h -> - -14 #ide -DEFAULT_BUFFER_SIZE - - -15  - #DEFAULT_BUFFER_SIZE - 1024 - - ) - -18 as - cSUpdeResu - { - -19 - mCHANGED - = 0, - -20 - mUNCHANGED -, - -21 - mERROR - - -24 - gme - < -tyme - - gT -> - -25 -usg - - gJsSUpd - = -d -:: -funi -< -SUpdeResu -( -JsObje -& -ro -, -T -& -gs -)>; - -27 - gme - < -tyme - - gT -> - -28 -usg - - gJsSRd - = -d -:: -funi -<( -T -& -gs -, - gJsObje -& - gro -)>; - -30  -size_t - - tupde_hdr_id_t -; - -31  - gd -:: - tfuni -<(cڡ - tSg -& - tigId -)> - tSUpdeClback -; - -33  - sSUpdeHdrInfo - { - -34  -upde_hdr_id_t - - mcutUpdedHdrId -; - -35 -upde_hdr_id_t - - m_id -; - -36 -SUpdeClback - - m_cb -; - -37 -bo - - m_lowRemove -; - -38 -SUpdeHdrInfo -( -SUpdeClback - -cb -, -bo - -lowRemove -) : - -39 -_id -(++ -cutUpdedHdrId -), -_cb -( -cb -), -_lowRemove -( -lowRemove -){}; - -40 } - tSUpdeHdrInfo_t -; - -42 - gme - < -ass - - gT -> - -43 as - cSfulSvi - { - -44 - mpublic -: - -45 -me - < -tyme -... -Args -> - -46 #ifde -ESP32 - - -47 - $SfulSvi -( -Args -&&... -gs -) : - -48 - `_e -( -d -:: -fwd -< -Args ->( -gs -)...), - `_acssMux -( - $xSemheCeRecursiveMux -()) { - -51 - $SfulSvi -( -Args -&&... -gs -: - `_e -( -d -:: -fwd -(args)...) { - -52 - } -} - -55 -upde_hdr_id_t - - $addUpdeHdr -( -SUpdeClback - -cb -, -bo - -lowRemove - = -ue -) { - -56 i(! -cb -) { - -59 -SUpdeHdrInfo_t - - `updeHdr -( -cb -, -lowRemove -); - -60 -_updeHdrs -. - `push_back -( -updeHdr -); - -61  -updeHdr -. -_id -; - -62 - } -} - -64  - $moveUpdeHdr -( -upde_hdr_id_t - -id -) { - -65 aut -i - = -_updeHdrs -. - `beg -(); i !_updeHdrs. - `d -();) { - -66 i((* -i -). -_lowRemove - && (*i). -_id - = -id -) { - -67 -i - = -_updeHdrs -. - `a -(i); - -69 ++ -i -; - -72 - } -} - -74 -SUpdeResu - -upde -( -d -:: -funi - -eUpd -, cڡ -Sg -& -igId -) { - -75 -begTni -(); - -76 -SUpdeResu - - gsu - = -eUpd -( -_e -); - -77 -dTni -(); - -78 i( - gsu - = -SUpdeResu -:: -CHANGED -) { - -79 -UpdeHdrs -( -igId -); - -81  - gsu -; - -84 -SUpdeResu - -updeWhoutPragi -( -d -:: -funi - -eUpd -) { - -85 -begTni -(); - -86 -SUpdeResu - - gsu - = -eUpd -( -_e -); - -87 -dTni -(); - -88  - gsu -; - -91 -SUpdeResu - -upde -( -JsObje -& -jsObje -, -JsSUpd -< -T -> -eUpd -, cڡ -Sg -& -igId -) { - -92 -begTni -(); - -93 -SUpdeResu - - gsu - = -eUpd -( -jsObje -, -_e -); - -94 -dTni -(); - -95 i( - gsu - = -SUpdeResu -:: -CHANGED -) { - -96 -UpdeHdrs -( -igId -); - -98  - gsu -; - -101 -SUpdeResu - -updeWhoutPragi -( -JsObje -& -jsObje -, -JsSUpd -< -T -> -eUpd -) { - -102 -begTni -(); - -103 -SUpdeResu - - gsu - = -eUpd -( -jsObje -, -_e -); - -104 -dTni -(); - -105  - gsu -; - -108  -ad -( -d -:: -funi -<( -T -&)> -eRd -) { - -109 -begTni -(); - -110 -eRd -( -_e -); - -111 -dTni -(); - -114  -ad -( -JsObje -& -jsObje -, -JsSRd -< -T -> -eRd -) { - -115 -begTni -(); - -116 -eRd -( -_e -, -jsObje -); - -117 -dTni -(); - -120  - $UpdeHdrs -(cڡ -Sg -& -igId -) { - -121 cڡ -SUpdeHdrInfo_t -& -updeHdr - : -_updeHdrs -) { - -122 -updeHdr -. - `_cb -( -igId -); - -124 - } -} - -126 - geed -: - -127 -T - -_e -; - -129 -le -  - $begTni -() { - -130 #ifde -ESP32 - - -131 - `xSemheTakeRecursive -( -_acssMux -, -ptMAX_DELAY -); - -133 - } -} - -135 -le -  - $dTni -() { - -136 #ifde -ESP32 - - -137 - `xSemheGiveRecursive -( -_acssMux -); - -139 - } -} - -141 - give -: - -142 #ifde -ESP32 - - -143 -SemheHd_t - -_acssMux -; - -145 - gd -:: -li -< -SUpdeHdrInfo_t -> -_updeHdrs -; - - @lib/framework/SystemStatus.cpp - -1  - ~ - -3 - gSyemStus -:: - $SyemStus -( -AsyncWebSv - * -rv -, -SecuryMag - * -curyMag -) { - -4 -rv --> - ` -( -SYSTEM_STATUS_SERVICE_PATH -, - -5 -HTTP_GET -, - -6 -curyMag --> - `wpReque -( -d -:: - `bd -(& -SyemStus -:: -syemStus -, -this -, std:: -ahds -:: -_1 -), -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -7 - } -} - -9  - gSyemStus -:: - $syemStus -( -AsyncWebSvReque - * -que -) { - -10 -ut8_t - -_mem_r - = -em -:: -Syem -:: - `_mem -(); - -12 -AsyncJsReڣ - * -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_ESP_STATUS_SIZE -); - -13 -JsObje - -ro - = -ڣ --> - `gRo -(); - -14 #ifde -ESP32 - - -15 -ro -["esp_platform"] = "esp32"; - -16 -ro -["max_loc_hp"] = -ESP -. - `gMaxAocHp -(); - -17 -ro -["pam_size"] = -ESP -. - `gPamSize -(); - -18 -ro -["_pam"] = -ESP -. - `gFePam -(); - -19 #i - `defed -( -ESP8266 -) - -20 -ro -["esp_platform"] = "esp8266"; - -21 -ro -["max_loc_hp"] = -ESP -. - `gMaxFeBlockSize -(); - -22 -ro -["hp_agmti"] = -ESP -. - `gHpFgmti -(); - -24 -ro -["u_eq_mhz"] = -ESP -. - `gCpuFqMHz -(); - -25 -ro -["_hp"] = -ESP -. - `gFeHp -(); - -26 -ro -["skch_size"] = -ESP -. - `gSkchSize -(); - -27 -ro -["_skch_a"] = -ESP -. - `gFeSkchS -(); - -28 -ro -["sdk_vsi"] = -ESP -. - `gSdkVsi -(); - -29 -ro -["ash_ch_size"] = -ESP -. - `gFshChSize -(); - -30 -ro -["ash_ch_d"] = -ESP -. - `gFshChSed -(); - -33 #ifde -ESP32 - - -34 -ro -["fs_tٮ"] = -SPIFFS -. - `tٮBys -(); - -35 -ro -["fs_ud"] = -SPIFFS -. - `udBys -(); - -36 #i - `defed -( -ESP8266 -) - -37 -FSInfo - -fs_fo -; - -38 -LeFS -. - `fo -( -fs_fo -); - -39 -ro -["fs_tٮ"] = -fs_fo -. -tٮBys -; - -40 -ro -["fs_ud"] = -fs_fo -. -udBys -; - -43 -ro -["uime"] = -uuid -:: -log -:: - `fm_timeamp_ms -(uuid:: - `g_uime_ms -(), 3); - -44 -ro -["_mem"] = -_mem_r -; - -46 -ڣ --> - `tLgth -(); - -47 -que --> - `nd -( -ڣ -); - -48 - } -} - - @lib/framework/SystemStatus.h - -1 #ide -SyemStus_h - - -2  - #SyemStus_h - - - ) - -4 #ifde -ESP32 - - -5  - ~ - -6  - ~ - -7  - ~ - -8 #i -defed -( -ESP8266 -) - -9  - ~ - -10  - ~ - -12  - ~ - -15  - ~ - -16  - ~ - -17  - ~ - -18  - ~ - -20  - ~ - -21  - ~"../../c/syem.h -" - -23  - #MAX_ESP_STATUS_SIZE - 1024 - - ) - -24  - #SYSTEM_STATUS_SERVICE_PATH - "//syemStus" - - ) - -26 as - cSyemStus - { - -27 - mpublic -: - -28 -SyemStus -( -AsyncWebSv - * -rv -, -SecuryMag - * -curyMag -); - -30 - mive -: - -31  -syemStus -( -AsyncWebSvReque - * -que -); - - @lib/framework/UploadFirmwareService.cpp - -1  - ~ - -3 - gUdFmweSvi -:: - $UdFmweSvi -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -) : - -4 - $_curyMag -( -curyMag -) { - -5 -rv --> - ` -( -UPLOAD_FIRMWARE_PATH -, - -6 -HTTP_POST -, - -7 -d -:: - `bd -(& -UdFmweSvi -:: -udCome -, -this -, std:: -ahds -:: -_1 -), - -8 -d -:: - `bd -(& -UdFmweSvi -:: -hdUd -, - -9 -this -, - -10 -d -:: -ahds -:: -_1 -, - -11 -d -:: -ahds -:: -_2 -, - -12 -d -:: -ahds -:: -_3 -, - -13 -d -:: -ahds -:: -_4 -, - -14 -d -:: -ahds -:: -_5 -, - -15 -d -:: -ahds -:: -_6 -)); - -16 #ifde -ESP8266 - - -17 -Upde -. - `runAsync -( -ue -); - -19 - } -} - -21  - gUdFmweSvi -:: - $hdUd -( -AsyncWebSvReque -* -que -, - -22 cڡ -Sg -& -fame -, - -23 -size_t - -dex -, - -24 -ut8_t -* -da -, - -25 -size_t - -n -, - -26 -bo - -f -) { - -27 i(! -dex -) { - -28 -Authtiti - -authtiti - = -_curyMag --> - `authtiReque -( -que -); - -29 i( -AuthtitiPdis -:: - `IS_ADMIN -( -authtiti -)) { - -30 i( -Upde -. - `beg -( -que --> - `cڋLgth -())) { - -32 -que --> - `Disc -( -UdFmweSvi -:: -hdElyDisc -); - -35 -Upde -. - `tE -( -Sl -); - -36 - `hdE -( -que -, 500); - -40 - `hdE -( -que -, 403); - -45 i(! -que --> -_mpObje -) { - -46 i( -Upde -. - `wre -( -da -, -n -) !=en) { - -47 -Upde -. - `tE -( -Sl -); - -48 - `hdE -( -que -, 500); - -50 i( -f -) { - -51 i(! -Upde -. - `d -( -ue -)) { - -52 -Upde -. - `tE -( -Sl -); - -53 - `hdE -( -que -, 500); - -57 - } -} - -59  - gUdFmweSvi -:: - $udCome -( -AsyncWebSvReque -* -que -) { - -61 i(! -que --> -_mpObje -) { - -62 -que --> - `Disc -( -RetSvi -:: -tNow -); - -63 -AsyncWebSvReڣ -* -ڣ - = -que --> - `begReڣ -(200); - -64 -que --> - `nd -( -ڣ -); - -66 - } -} - -68  - gUdFmweSvi -:: - $hdE -( -AsyncWebSvReque -* -que -,  -code -) { - -70 i( -que --> -_mpObje -) { - -74 -que --> -_mpObje - = -w - ( -code -); - -75 -AsyncWebSvReڣ -* -ڣ - = -que --> - `begReڣ -( -code -); - -76 -que --> - `nd -( -ڣ -); - -77 - } -} - -79  - gUdFmweSvi -:: - $hdElyDisc -() { - -80 #ifde -ESP32 - - -81 -Upde -. - `abt -(); - -82 #i - `defed -( -ESP8266 -) - -83 -Upde -. - `d -(); - -85 - } -} - - @lib/framework/UploadFirmwareService.h - -1 #ide -UdFmweSvi_h - - -2  - #UdFmweSvi_h - - - ) - -4  - ~ - -6 #ifde -ESP32 - - -7  - ~ - -8  - ~ - -9  - ~ - -10 #i -defed -( -ESP8266 -) - -11  - ~ - -12  - ~ - -15  - ~ - -16  - ~ - -17  - ~ - -19  - #UPLOAD_FIRMWARE_PATH - "//udFmwe" - - ) - -21 as - cUdFmweSvi - { - -22 - mpublic -: - -23 -UdFmweSvi -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -); - -25 - mive -: - -26 -SecuryMag -* -_curyMag -; - -27  -hdUd -( -AsyncWebSvReque -* -que -, - -28 cڡ -Sg -& -fame -, - -29 -size_t - -dex -, - -30 -ut8_t -* -da -, - -31 -size_t - -n -, - -32 -bo - -f -); - -33  -udCome -( -AsyncWebSvReque -* -que -); - -34  -hdE -( -AsyncWebSvReque -* -que -,  -code -); - -35  -hdElyDisc -(); - - @lib/framework/WWWData.h - -1  - ~ - -3 cڡ -ut8_t - - gESP_REACT_DATA_0 -[] - gPROGMEM - = { - -414 cڡ -ut8_t - - gESP_REACT_DATA_1 -[] - gPROGMEM - = { - -426 cڡ -ut8_t - - gESP_REACT_DATA_2 -[] - gPROGMEM - = { - -445 cڡ -ut8_t - - gESP_REACT_DATA_3 -[] - gPROGMEM - = { - -480 cڡ -ut8_t - - gESP_REACT_DATA_4 -[] - gPROGMEM - = { - -1257 cڡ -ut8_t - - gESP_REACT_DATA_5 -[] - gPROGMEM - = { - -2039 cڡ -ut8_t - - gESP_REACT_DATA_6 -[] - gPROGMEM - = { - -2811 cڡ -ut8_t - - gESP_REACT_DATA_7 -[] - gPROGMEM - = { - -4044 cڡ -ut8_t - - gESP_REACT_DATA_8 -[] - gPROGMEM - = { - -4084 cڡ -ut8_t - - gESP_REACT_DATA_9 -[] - gPROGMEM - = { - -12266 cڡ -ut8_t - - gESP_REACT_DATA_10 -[] - gPROGMEM - = { - -12321 cڡ -ut8_t - - gESP_REACT_DATA_11 -[] - gPROGMEM - = { - -12340  - gd -:: - tfuni -<(cڡ - tSg -& - turi -, cڡ Sg& - tcڋTy -, cڡ - tut8_t - * - tcڋ -, - tsize_t - - tn -)> - tRouRegitiHdr -; - -12342 as - cWWWDa - { - -12343 - mpublic -: - -12344  - $giRous -( -RouRegitiHdr - -hdr -) { - -12345 - `hdr -("/p/ic.g", "image/g", -ESP_REACT_DATA_0 -, 8148); - -12346 - `hdr -("/p/mi.js", "iti/js", -ESP_REACT_DATA_1 -, 168); - -12347 - `hdr -("/css/robo.css", "xt/css", -ESP_REACT_DATA_2 -, 306); - -12348 - `hdr -("/vic.ico", "image/vnd.mioso.ic", -ESP_REACT_DATA_3 -, 628); - -12349 - `hdr -("/fts/li.woff2", "ft/woff2", -ESP_REACT_DATA_4 -, 15463); - -12350 - `hdr -("/fts/me.woff2", "ft/woff2", -ESP_REACT_DATA_5 -, 15575); - -12351 - `hdr -("/fts/.woff2", "ft/woff2", -ESP_REACT_DATA_6 -, 15367); - -12352 - `hdr -("/js/0.a9.js", "iti/javast", -ESP_REACT_DATA_7 -, 24581); - -12353 - `hdr -("/js/1.b30b.js", "iti/javast", -ESP_REACT_DATA_8 -, 735); - -12354 - `hdr -("/js/2.8e22.js", "iti/javast", -ESP_REACT_DATA_9 -, 163600); - -12355 - `hdr -("/js/2.8e22.js.LICENSE.txt", "xt/a", -ESP_REACT_DATA_10 -, 1023); - -12356 - `hdr -("/dex.html", "xt/html", -ESP_REACT_DATA_11 -, 301); - -12358 - } -}; - - @lib/framework/WebSocketTxRx.h - -1 #ide -WebSockTxRx_h - - -2  - #WebSockTxRx_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -8  - #WEB_SOCKET_CLIENT_ID_MSG_SIZE - 128 - - ) - -10  - #WEB_SOCKET_ORIGIN - "websock" - - ) - -11  - #WEB_SOCKET_ORIGIN_CLIENT_ID_PREFIX - "websock:" - - ) - -13 - gme - < -ass - - gT -> - -14 as - cWebSockC - { - -15 - meed -: - -16 -SfulSvi -< -T ->* -_efulSvi -; - -17 -AsyncWebSv -* - m_rv -; - -18 -AsyncWebSock - - m_webSock -; - -19 -size_t - - m_bufrSize -; - -21 -WebSockC -( -SfulSvi -< -T ->* -efulSvi -, - -22 -AsyncWebSv -* -rv -, - -23 cڡ* -webSockPh -, - -24 -SecuryMag -* -curyMag -, - -25 -AuthtitiPdi - -authtitiPdi -, - -26 -size_t - -bufrSize -) : - -27 -_efulSvi -( -efulSvi -), -_rv -( -rv -), -_webSock -( -webSockPh -), - $_bufrSize -( -bufrSize -) { - -28 -_webSock -. - `tFr -( -curyMag --> - `frReque -( -authtitiPdi -)); - -29 -_webSock -. - `Evt -( -d -:: - `bd -(& -WebSockC -:: -WSEvt -, - -30 -this -, - -31 -d -:: -ahds -:: -_1 -, - -32 -d -:: -ahds -:: -_2 -, - -33 -d -:: -ahds -:: -_3 -, - -34 -d -:: -ahds -:: -_4 -, - -35 -d -:: -ahds -:: -_5 -, - -36 -d -:: -ahds -:: -_6 -)); - -37 -_rv --> - `addHdr -(& -_webSock -); - -38 -_rv --> - ` -( -webSockPh -, -HTTP_GET -, -d -:: - `bd -(& -WebSockC -:: -fbidd -, -this -, std:: -ahds -:: -_1 -)); - -41 - `WebSockC -( -SfulSvi -< -T ->* -efulSvi -, - -42 -AsyncWebSv -* -rv -, - -43 cڡ* -webSockPh -, - -44 -size_t - -bufrSize -) : - -45 - `_efulSvi -( -efulSvi -), - `_rv -( -rv -), - `_webSock -( -webSockPh -), - $_bufrSize -( -bufrSize -) { - -46 -_webSock -. - `Evt -( -d -:: - `bd -(& -WebSockC -:: -WSEvt -, - -47 -this -, - -48 -d -:: -ahds -:: -_1 -, - -49 -d -:: -ahds -:: -_2 -, - -50 -d -:: -ahds -:: -_3 -, - -51 -d -:: -ahds -:: -_4 -, - -52 -d -:: -ahds -:: -_5 -, - -53 -d -:: -ahds -:: -_6 -)); - -54 -_rv --> - `addHdr -(& -_webSock -); - -55 - } -} - -57 -vtu -  -WSEvt -( -AsyncWebSock -* -rv -, - -58 -AsyncWebSockCl -* - -, - -59 -AwsEvtTy - -ty -, - -60 * -g -, - -61 -ut8_t -* -da -, - -62 -size_t - -n -) = 0; - -64 -Sg - - $Id -( -AsyncWebSockCl -* - -) { - -65  -WEB_SOCKET_ORIGIN_CLIENT_ID_PREFIX - + - `Sg -( - --> - `id -()); - -66 - } -} - -68 - give -: - -69  - $fbidd -( -AsyncWebSvReque -* -que -) { - -70 -que --> - `nd -(403); - -71 - } -} - -74 - gme - < -ass - - gT -> - -75 -ass - - gWebSockTx - : -vtu - -public - -WebSockC -< -T -> { - -76 -public -: - -77 -WebSockTx -( -JsSRd -< -T -> -eRd -, - -78 -SfulSvi -< -T ->* -efulSvi -, - -79 -AsyncWebSv -* -rv -, - -80 cڡ* -webSockPh -, - -81 -SecuryMag -* -curyMag -, - -82 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -83 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -84 -WebSockC -< -T ->( -efulSvi -, - -85 - grv -, - -86 - gwebSockPh -, - -87 - gcuryMag -, - -88 - gauthtitiPdi -, - -89 - gbufrSize -), - -90 -_eRd -( -eRd -) { - -91 - gWebSockC -< - gT ->:: -_efulSvi --> -addUpdeHdr -( - -92 [&](cڡ -Sg -& -igId -{ -smDa -( -nuαr -, origId); }, -l -); - -95 -WebSockTx -( -JsSRd -< -T -> -eRd -, - -96 -SfulSvi -< -T ->* -efulSvi -, - -97 -AsyncWebSv -* -rv -, - -98 cڡ* -webSockPh -, - -99 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -100 -WebSockC -< -T ->( -efulSvi -, - grv -, - gwebSockPh -, - gbufrSize -), -_eRd -( -eRd -) { - -101 - gWebSockC -< - gT ->:: -_efulSvi --> -addUpdeHdr -( - -102 [&](cڡ -Sg -& -igId -{ -smDa -( -nuαr -, origId); }, -l -); - -105 - geed -: - -106 -vtu -  -WSEvt -( -AsyncWebSock -* -rv -, - -107 -AsyncWebSockCl -* - -, - -108 -AwsEvtTy - -ty -, - -109 * -g -, - -110 -ut8_t -* -da -, - -111 -size_t - -n -) { - -112 i( - gty - = -WS_EVT_CONNECT -) { - -114 -smId -( - -); - -115 -smDa -( - -, -WEB_SOCKET_ORIGIN -); - -119 - give -: - -120 -JsSRd -< -T -> -_eRd -; - -122  -smId -( -AsyncWebSockCl -* - -) { - -123 -DymicJsDocumt - - gjsDocumt - = DymicJsDocumt( -WEB_SOCKET_CLIENT_ID_MSG_SIZE -); - -124 -JsObje - - gro - = -jsDocumt -. -to -(); - -125 - gro -["type"] = "id"; - -126 - gro -["id"] = -WebSockC -< -T ->:: -Id -( - -); - -127 -size_t - - gn - = -msuJs -( -jsDocumt -); - -128 -AsyncWebSockMesgeBufr -* - gbufr - = -WebSockC -< -T ->:: -_webSock -. -makeBufr -( -n -); - -129 i( - gbufr -) { - -130 -rlizeJs -( -jsDocumt -, (*) -bufr --> -g -(), -n - + 1); - -131 - g --> -xt -( -bufr -); - -142  -smDa -( -AsyncWebSockCl -* - -, cڡ -Sg -& -igId -) { - -143 -DymicJsDocumt - - gjsDocumt - = DymicJsDocumt( -WebSockC -< -T ->:: -_bufrSize -); - -144 -JsObje - - gro - = -jsDocumt -. -to -(); - -145 - gro -["type"] = "payload"; - -146 - gro -["ig_id"] = -igId -; - -147 -JsObje - - gyld - = -ro -. -NeedObje -("payload"); - -148 - gWebSockC -< - gT ->:: -_efulSvi --> -ad -( -yld -, -_eRd -); - -150 -size_t - - gn - = -msuJs -( -jsDocumt -); - -151 -AsyncWebSockMesgeBufr -* - gbufr - = -WebSockC -< -T ->:: -_webSock -. -makeBufr -( -n -); - -152 i( - gbufr -) { - -153 -rlizeJs -( -jsDocumt -, (*) -bufr --> -g -(), -n - + 1); - -154 i( - g -) { - -155 - g --> -xt -( -bufr -); - -157 - gWebSockC -< - gT ->:: -_webSock -. -xtA -( -bufr -); - -163 - gme - < -ass - - gT -> - -164 -ass - - gWebSockRx - : -vtu - -public - -WebSockC -< -T -> { - -165 -public -: - -166 -WebSockRx -( -JsSUpd -< -T -> -eUpd -, - -167 -SfulSvi -< -T ->* -efulSvi -, - -168 -AsyncWebSv -* -rv -, - -169 cڡ* -webSockPh -, - -170 -SecuryMag -* -curyMag -, - -171 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -172 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -173 -WebSockC -< -T ->( -efulSvi -, - -174 - grv -, - -175 - gwebSockPh -, - -176 - gcuryMag -, - -177 - gauthtitiPdi -, - -178 - gbufrSize -), - -179 -_eUpd -( -eUpd -) { - -182 -WebSockRx -( -JsSUpd -< -T -> -eUpd -, - -183 -SfulSvi -< -T ->* -efulSvi -, - -184 -AsyncWebSv -* -rv -, - -185 cڡ* -webSockPh -, - -186 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -187 -WebSockC -< -T ->( -efulSvi -, - grv -, - gwebSockPh -, - gbufrSize -), -_eUpd -( -eUpd -) { - -190 - geed -: - -191 -vtu -  -WSEvt -( -AsyncWebSock -* -rv -, - -192 -AsyncWebSockCl -* - -, - -193 -AwsEvtTy - -ty -, - -194 * -g -, - -195 -ut8_t -* -da -, - -196 -size_t - -n -) { - -197 i( - gty - = -WS_EVT_DATA -) { - -198 -AwsFmeInfo -* -fo - = (AwsFmeInfo*) -g -; - -199 i( - gfo --> - gf - && info-> - gdex - =0 && -fo --> -n - ==en) { - -200 i( -fo --> -code - = -WS_TEXT -) { - -201 -DymicJsDocumt - -jsDocumt - = DymicJsDocumt( -WebSockC -< -T ->:: -_bufrSize -); - -202 -DerliziE - - gr - = -derlizeJs -( -jsDocumt -, (*) -da -); - -203 i(! - gr - && - gjsDocumt -. - gis -< - gJsObje ->()) { - -204 -JsObje - - gjsObje - = -jsDocumt -. -as -(); - -205 - gWebSockC -< - gT ->:: -_efulSvi --> -upde -( - -206 -jsObje -, -_eUpd -, -WebSockC -< -T ->:: -Id -( - -)); - -213 - give -: - -214 -JsSUpd -< -T -> -_eUpd -; - -217 - gme - < -ass - - gT -> - -218 -ass - - gWebSockTxRx - : -public - -WebSockTx -< -T ->,ubli - gWebSockRx -< - gT -> { - -219 - gpublic -: - -220 -WebSockTxRx -( -JsSRd -< -T -> -eRd -, - -221 -JsSUpd -< -T -> -eUpd -, - -222 -SfulSvi -< -T ->* -efulSvi -, - -223 -AsyncWebSv -* -rv -, - -224 cڡ* -webSockPh -, - -225 -SecuryMag -* -curyMag -, - -226 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -227 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -228 -WebSockC -< -T ->( -efulSvi -, - -229 - grv -, - -230 - gwebSockPh -, - -231 - gcuryMag -, - -232 - gauthtitiPdi -, - -233 - gbufrSize -), - -234 - gWebSockTx -< - gT ->( - geRd -, - -235 - gefulSvi -, - -236 - grv -, - -237 - gwebSockPh -, - -238 - gcuryMag -, - -239 - gauthtitiPdi -, - -240 - gbufrSize -), - -241 - gWebSockRx -< - gT ->( - geUpd -, - -242 - gefulSvi -, - -243 - grv -, - -244 - gwebSockPh -, - -245 - gcuryMag -, - -246 - gauthtitiPdi -, - -247 - gbufrSize -) { - -250 -WebSockTxRx -( -JsSRd -< -T -> -eRd -, - -251 -JsSUpd -< -T -> -eUpd -, - -252 -SfulSvi -< -T ->* -efulSvi -, - -253 -AsyncWebSv -* -rv -, - -254 cڡ* -webSockPh -, - -255 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -256 -WebSockC -< -T ->( -efulSvi -, - grv -, - gwebSockPh -, - gbufrSize -), - -257 - gWebSockTx -< - gT ->( - geRd -, - gefulSvi -, - grv -, - gwebSockPh -, - gbufrSize -), - -258 - gWebSockRx -< - gT ->( - geUpd -, - gefulSvi -, - grv -, - gwebSockPh -, - gbufrSize -) { - -261 - geed -: - -262  -WSEvt -( -AsyncWebSock -* -rv -, - -263 -AsyncWebSockCl -* - -, - -264 -AwsEvtTy - -ty -, - -265 * -g -, - -266 -ut8_t -* -da -, - -267 -size_t - -n -) { - -268 - gWebSockRx -< - gT ->:: -WSEvt -( -rv -, - -, -ty -, -g -, -da -, -n -); - -269 - gWebSockTx -< - gT ->:: -WSEvt -( -rv -, - -, -ty -, -g -, -da -, -n -); - - @lib/framework/WiFiScanner.cpp - -1  - ~ - -3 - gWiFiS” -:: - $WiFiS” -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -) { - -4 -rv --> - ` -( -SCAN_NETWORKS_SERVICE_PATH -, - -5 -HTTP_GET -, - -6 -curyMag --> - `wpReque -( -d -:: - `bd -(& -WiFiS” -:: -snNwks -, -this -, std:: -ahds -:: -_1 -), - -7 -AuthtitiPdis -:: -IS_ADMIN -)); - -8 -rv --> - ` -( -LIST_NETWORKS_SERVICE_PATH -, - -9 -HTTP_GET -, - -10 -curyMag --> - `wpReque -( -d -:: - `bd -(& -WiFiS” -:: -liNwks -, -this -, std:: -ahds -:: -_1 -), - -11 -AuthtitiPdis -:: -IS_ADMIN -)); - -12 - } -}; - -14  - gWiFiS” -:: - $snNwks -( -AsyncWebSvReque -* -que -) { - -15 i( -WiFi -. - `snCome -() != -1) { - -16 -WiFi -. - `snDe -(); - -17 -WiFi -. - `snNwks -( -ue -); - -19 -que --> - `nd -(202); - -20 - } -} - -22  - gWiFiS” -:: - $liNwks -( -AsyncWebSvReque -* -que -) { - -23  -numNwks - = -WiFi -. - `snCome -(); - -24 i( -numNwks - > -1) { - -25 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_WIFI_SCANNER_SIZE -); - -26 -JsObje - -ro - = -ڣ --> - `gRo -(); - -27 -JsAay - -twks - = -ro -. - `NeedAay -("networks"); - -28  -i - = 0; i < -numNwks -; i++) { - -29 -JsObje - -twk - = -twks -. - `NeedObje -(); - -30 -twk -["rssi"] = -WiFi -. - `RSSI -( -i -); - -31 -twk -["ssid"] = -WiFi -. - `SSID -( -i -); - -32 -twk -["bssid"] = -WiFi -. - `BSSIDr -( -i -); - -33 -twk -["chl"] = -WiFi -. - `chl -( -i -); - -34 #ifde -ESP32 - - -35 -twk -["yi_ty"] = ( -ut8_t -) -WiFi -. - `yiTy -( -i -); - -36 #i - `defed -( -ESP8266 -) - -37 -twk -["yi_ty"] = - `cvtEnyiTy -( -WiFi -. - `yiTy -( -i -)); - -40 -ڣ --> - `tLgth -(); - -41 -que --> - `nd -( -ڣ -); - -42 } i( -numNwks - == -1) { - -43 -que --> - `nd -(202); - -45 - `snNwks -( -que -); - -47 - } -} - -49 #ifde -ESP8266 - - -55 -ut8_t - - gWiFiS” -:: - $cvtEnyiTy -( -ut8_t - -yiTy -) { - -56  -yiTy -) { - -57  -ENC_TYPE_NONE -: - -58  -AUTH_OPEN -; - -59  -ENC_TYPE_WEP -: - -60  -AUTH_WEP -; - -61  -ENC_TYPE_TKIP -: - -62  -AUTH_WPA_PSK -; - -63  -ENC_TYPE_CCMP -: - -64  -AUTH_WPA2_PSK -; - -65  -ENC_TYPE_AUTO -: - -66  -AUTH_WPA_WPA2_PSK -; - -69 - } -} - - @lib/framework/WiFiScanner.h - -1 #ide -WiFiS”_h - - -2  - #WiFiS”_h - - - ) - -4 #ifde -ESP32 - - -5  - ~ - -6  - ~ - -7 #i -defed -( -ESP8266 -) - -8  - ~ - -9  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -17  - #SCAN_NETWORKS_SERVICE_PATH - "//snNwks" - - ) - -18  - #LIST_NETWORKS_SERVICE_PATH - "//liNwks" - - ) - -20  - #MAX_WIFI_SCANNER_SIZE - 1024 - - ) - -22 as - cWiFiS” - { - -23 - mpublic -: - -24 -WiFiS” -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -); - -26 - mive -: - -27  -snNwks -( -AsyncWebSvReque -* -que -); - -28  -liNwks -( -AsyncWebSvReque -* -que -); - -30 #ifde -ESP8266 - - -31 -ut8_t - -cvtEnyiTy -(ut8_ -yiTy -); - - @lib/framework/WiFiSettingsService.cpp - -1  - ~ - -3 - gWiFiStgsSvi -:: - $WiFiStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -) - -4 : - `_hpEndpot -( -WiFiStgs -:: -ad -, WiFiStgs:: -upde -, -this -, -rv -, -WIFI_SETTINGS_SERVICE_PATH -, -curyMag -) - -5 , - `_fsPsi -( -WiFiStgs -:: -ad -, WiFiStgs:: -upde -, -this -, -fs -, -WIFI_SETTINGS_FILE -) - -6 , - $_ϡCiAem -(0) { - -9 i( -WiFi -. - `gMode -(! -WIFI_OFF -) { - -10 -WiFi -. - `mode -( -WIFI_OFF -); - -14 -WiFi -. - `rsit -( -l -); - -15 -WiFi -. - `tAutoRec -( -l -); - -16 #ifde -ESP32 - - -18 -WiFi -. - `mode -( -WIFI_MODE_MAX -); - -19 -WiFi -. - `mode -( -WIFI_MODE_NULL -); - -20 -WiFi -. - `Evt -( -d -:: - `bd -(& -WiFiStgsSvi -:: -StiModeDisced -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), - -21 -WiFiEvt_t -:: -SYSTEM_EVENT_STA_DISCONNECTED -); - -22 -WiFi -. - `Evt -( -d -:: - `bd -(& -WiFiStgsSvi -:: -StiModeSt -, -this -, std:: -ahds -:: -_1 -, std::ahds:: -_2 -), -WiFiEvt_t -:: -SYSTEM_EVENT_STA_STOP -); - -23 #i - `defed -( -ESP8266 -) - -32 -_StiModeDiscedHdr - = -WiFi -. - `StiModeDisced -( -d -:: - `bd -(& -WiFiStgsSvi -:: -StiModeDisced -, -this -, std:: -ahds -:: -_1 -)); - -35 - `addUpdeHdr -([&](cڡ -Sg - & -igId -{ - `cfiguWiFiCi -(); }, -l -); - -36 - } -} - -38  - gWiFiStgsSvi -:: - $beg -() { - -39 -_fsPsi -. - `adFromFS -(); - -40 - `cfiguWiFiCi -(); - -41 - } -} - -43  - gWiFiStgsSvi -:: - $cfiguWiFiCi -() { - -45 -_ϡCiAem - = 0; - -48 #ifde -ESP32 - - -49 i( -WiFi -. - `disc -( -ue -)) { - -50 -_pg - = -ue -; - -52 #i - `defed -( -ESP8266 -) - -53 -WiFi -. - `disc -( -ue -); - -55 - } -} - -57  - gWiFiStgsSvi -:: - $lo -() { - -58  -cutMlis - = - `mlis -(); - -59 i(! -_ϡCiAem - || ()( -cutMlis - - _ϡCiAem> -WIFI_RECONNECTION_DELAY -) { - -60 -_ϡCiAem - = -cutMlis -; - -61 - `mageSTA -(); - -63 - } -} - -65  - gWiFiStgsSvi -:: - $mageSTA -() { - -67 i( -WiFi -. - `isCed -(|| -_e -. -ssid -. - `ngth -() == 0) { - -71 i(( -WiFi -. - `gMode -(& -WIFI_STA -) == 0) { - -73 i( -_e -. -icIPCfig -) { - -75 -WiFi -. - `cfig -( -_e -. -lolIP -, _e. -gewayIP -, _e. -subtMask -, _e. -dnsIP1 -, _e. -dnsIP2 -); - -78 #ifde -ESP32 - - -79 -WiFi -. - `cfig -( -INADDR_NONE -, INADDR_NONE, INADDR_NONE); - -80 #i - `defed -( -ESP8266 -) - -81 -WiFi -. - `cfig -( -INADDR_ANY -, INADDR_ANY, INADDR_ANY); - -85 #ifde -ESP32 - - -86 -WiFi -. - `tHome -( -_e -. -home -. - `c_r -()); - -87 #i - `defed -( -ESP8266 -) - -88 -WiFi -. - `home -( -_e -. -home -); - -91 -WiFi -. - `beg -( -_e -. -ssid -. - `c_r -(), _e. -sswd -.c_str()); - -93 - } -} - -95 #ifde -ESP32 - - -96  - gWiFiStgsSvi -:: - $StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -97 -WiFi -. - `disc -( -ue -); - -98 - } -} - -99  - gWiFiStgsSvi -:: - $StiModeSt -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -100 i( -_pg -) { - -101 -_ϡCiAem - = 0; - -102 -_pg - = -l -; - -104 - } -} - -105 #i -defed -( -ESP8266 -) - -106  - gWiFiStgsSvi -:: - $StiModeDisced -(cڡ -WiFiEvtStiModeDisced - & -evt -) { - -107 -WiFi -. - `disc -( -ue -); - -108 - } -} - - @lib/framework/WiFiSettingsService.h - -1 #ide -WiFiStgsSvi_h - - -2  - #WiFiStgsSvi_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -9  - #WIFI_SETTINGS_FILE - "/cfig/wifiStgs.js" - - ) - -10  - #WIFI_SETTINGS_SERVICE_PATH - "//wifiStgs" - - ) - -11  - #WIFI_RECONNECTION_DELAY - 1000 * 30 - - ) - -13 #ide -FACTORY_WIFI_SSID - - -14  - #FACTORY_WIFI_SSID - "" - - ) - -17 #ide -FACTORY_WIFI_PASSWORD - - -18  - #FACTORY_WIFI_PASSWORD - "" - - ) - -21 #ide -FACTORY_WIFI_HOSTNAME - - -22  - #FACTORY_WIFI_HOSTNAME - "" - - ) - -25 as - cWiFiStgs - { - -26 - mpublic -: - -28 -Sg - -ssid -; - -29 -Sg - - msswd -; - -30 -Sg - - mhome -; - -31 -bo - - micIPCfig -; - -34 -IPAddss - - mlolIP -; - -35 -IPAddss - - mgewayIP -; - -36 -IPAddss - - msubtMask -; - -37 -IPAddss - - mdnsIP1 -; - -38 -IPAddss - - mdnsIP2 -; - -40  - $ad -( -WiFiStgs -& -gs -, -JsObje -& -ro -) { - -42 -ro -["ssid"] = -gs -. -ssid -; - -43 -ro -["sswd"] = -gs -. -sswd -; - -44 -ro -["home"] = -gs -. -home -; - -45 -ro -["ic__cfig"] = -gs -. -icIPCfig -; - -48 -JsUts -:: - `wreIP -( -ro -, "lol_", -gs -. -lolIP -); - -49 -JsUts -:: - `wreIP -( -ro -, "geway_", -gs -. -gewayIP -); - -50 -JsUts -:: - `wreIP -( -ro -, "subt_mask", -gs -. -subtMask -); - -51 -JsUts -:: - `wreIP -( -ro -, "dns__1", -gs -. -dnsIP1 -); - -52 -JsUts -:: - `wreIP -( -ro -, "dns__2", -gs -. -dnsIP2 -); - -55  -SUpdeResu - - $upde -( -JsObje -& -ro -, -WiFiStgs -& -gs -) { - -57 -gs -. -ssid - = -ro -["ssid"] | -FACTORY_WIFI_SSID -; - -58 -gs -. -sswd - = -ro -["sswd"] | -FACTORY_WIFI_PASSWORD -; - -59 -gs -. -home - = -ro -["home"] | -FACTORY_WIFI_HOSTNAME -; - -60 -gs -. -icIPCfig - = -ro -["ic__cfig"] | -l -; - -63 -JsUts -:: - `adIP -( -ro -, "lol_", -gs -. -lolIP -); - -64 -JsUts -:: - `adIP -( -ro -, "geway_", -gs -. -gewayIP -); - -65 -JsUts -:: - `adIP -( -ro -, "subt_mask", -gs -. -subtMask -); - -66 -JsUts -:: - `adIP -( -ro -, "dns__1", -gs -. -dnsIP1 -); - -67 -JsUts -:: - `adIP -( -ro -, "dns__2", -gs -. -dnsIP2 -); - -70 i( -gs -. -dnsIP1 - = -INADDR_NONE - && stgs. -dnsIP2 - != INADDR_NONE) { - -71 -gs -. -dnsIP1 - = stgs. -dnsIP2 -; - -72 -gs -. -dnsIP2 - = -INADDR_NONE -; - -78 i( -gs -. -icIPCfig - && - -79 ( -gs -. -lolIP - = -INADDR_NONE - || stgs. -gewayIP - =INADDR_NONE || stgs. -subtMask - == INADDR_NONE)) { - -80 -gs -. -icIPCfig - = -l -; - -82  -SUpdeResu -:: -CHANGED -; - -83 - } -} - -86 -ass - - gWiFiStgsSvi - : -public - -SfulSvi -< -WiFiStgs -> { - -87 -public -: - -88 -WiFiStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -, -SecuryMag -* -curyMag -); - -90  -beg -(); - -91  -lo -(); - -93 - give -: - -94 -HpEndpot -< -WiFiStgs -> -_hpEndpot -; - -95 - gFSPsi -< - gWiFiStgs -> - g_fsPsi -; - -96  - g_ϡCiAem -; - -98 #ifde -ESP32 - - -99 -bo - - g_pg -; - -100  -StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -101  -StiModeSt -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -102 #i -defed -( -ESP8266 -) - -103 -WiFiEvtHdr - - g_StiModeDiscedHdr -; - -104  -StiModeDisced -(cڡ -WiFiEvtStiModeDisced -& -evt -); - -107  -cfiguWiFiCi -(); - -108  -mageSTA -(); - - @lib/framework/WiFiStatus.cpp - -1  - ~ - -3 - gWiFiStus -:: - $WiFiStus -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -) { - -4 -rv --> - ` -( -WIFI_STATUS_SERVICE_PATH -, - -5 -HTTP_GET -, - -6 -curyMag --> - `wpReque -( -d -:: - `bd -(& -WiFiStus -:: -wifiStus -, -this -, std:: -ahds -:: -_1 -), - -7 -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -8 #ifde -ESP32 - - -9 -WiFi -. - `Evt -( -StiModeCed -, -WiFiEvt_t -:: -SYSTEM_EVENT_STA_CONNECTED -); - -10 -WiFi -. - `Evt -( -StiModeDisced -, -WiFiEvt_t -:: -SYSTEM_EVENT_STA_DISCONNECTED -); - -11 -WiFi -. - `Evt -( -StiModeGIP -, -WiFiEvt_t -:: -SYSTEM_EVENT_STA_GOT_IP -); - -12 #i - `defed -( -ESP8266 -) - -13 -_StiModeCedHdr - = -WiFi -. - `StiModeCed -( -StiModeCed -); - -14 -_StiModeDiscedHdr - = -WiFi -. - `StiModeDisced -( -StiModeDisced -); - -15 -_StiModeGIPHdr - = -WiFi -. - `StiModeGIP -( -StiModeGIP -); - -17 - } -} - -19 #ifde -ESP32 - - -20  - gWiFiStus -:: - $StiModeCed -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -22 - } -} - -24  - gWiFiStus -:: - $StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -27 - } -} - -29  - gWiFiStus -:: - $StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -31 - } -} - -32 #i -defed -( -ESP8266 -) - -33  - gWiFiStus -:: - $StiModeCed -(cڡ -WiFiEvtStiModeCed -& -evt -) { - -36 - } -} - -38  -WiFiStus -:: - $StiModeDisced -(cڡ -WiFiEvtStiModeDisced -& -evt -) { - -41 - } -} - -43  -WiFiStus -:: - $StiModeGIP -(cڡ -WiFiEvtStiModeGIP -& -evt -) { - -45 - } -} - -48  -WiFiStus -:: - $wifiStus -( -AsyncWebSvReque -* -que -) { - -49 -AsyncJsReڣ -* -ڣ - = -w - - `AsyncJsReڣ -( -l -, -MAX_WIFI_STATUS_SIZE -); - -50 -JsObje - -ro - = -ڣ --> - `gRo -(); - -51 -wl_us_t - -us - = -WiFi -. - `us -(); - -52 -ro -["us"] = ( -ut8_t -) -us -; - -53 i( -us - = -WL_CONNECTED -) { - -54 -ro -["lol_"] = -WiFi -. - `lolIP -(). - `toSg -(); - -55 -ro -["mac_addss"] = -WiFi -. - `macAddss -(); - -56 -ro -["rssi"] = -WiFi -. - `RSSI -(); - -57 -ro -["ssid"] = -WiFi -. - `SSID -(); - -58 -ro -["bssid"] = -WiFi -. - `BSSIDr -(); - -59 -ro -["chl"] = -WiFi -. - `chl -(); - -60 -ro -["subt_mask"] = -WiFi -. - `subtMask -(). - `toSg -(); - -61 -ro -["geway_"] = -WiFi -. - `gewayIP -(). - `toSg -(); - -62 -IPAddss - -dnsIP1 - = -WiFi -. - `dnsIP -(0); - -63 -IPAddss - -dnsIP2 - = -WiFi -. - `dnsIP -(1); - -64 i( -dnsIP1 - ! -INADDR_NONE -) { - -65 -ro -["dns__1"] = -dnsIP1 -. - `toSg -(); - -67 i( -dnsIP2 - ! -INADDR_NONE -) { - -68 -ro -["dns__2"] = -dnsIP2 -. - `toSg -(); - -71 -ڣ --> - `tLgth -(); - -72 -que --> - `nd -( -ڣ -); - -73 - } -} - - @lib/framework/WiFiStatus.h - -1 #ide -WiFiStus_h - - -2  - #WiFiStus_h - - - ) - -4 #ifde -ESP32 - - -5  - ~ - -6  - ~ - -7 #i -defed -( -ESP8266 -) - -8  - ~ - -9  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -18  - #MAX_WIFI_STATUS_SIZE - 1024 - - ) - -19  - #WIFI_STATUS_SERVICE_PATH - "//wifiStus" - - ) - -21 as - cWiFiStus - { - -22 - mpublic -: - -23 -WiFiStus -( -AsyncWebSv -* -rv -, -SecuryMag -* -curyMag -); - -25 - mive -: - -26 #ifde -ESP32 - - -28  -StiModeCed -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -29  -StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -30  -StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -31 #i - $defed -( -ESP8266 -) - -33 -WiFiEvtHdr - -_StiModeCedHdr -; - -34 -WiFiEvtHdr - -_StiModeDiscedHdr -; - -35 -WiFiEvtHdr - -_StiModeGIPHdr -; - -37  - `StiModeCed -(cڡ -WiFiEvtStiModeCed -& -evt -); - -38  - `StiModeDisced -(cڡ -WiFiEvtStiModeDisced -& -evt -); - -39  - `StiModeGIP -(cڡ -WiFiEvtStiModeGIP -& -evt -); - -42  - `wifiStus -( -AsyncWebSvReque -* -que -); - - @lib/uuid-common/src/common.cpp - -19  - ~ - - @lib/uuid-common/src/get_uptime_ms.cpp - -19  - ~ - -21  - ~ - -23 -mea - - guuid - { - -25  - #UPTIME_OVERFLOW - 4294967295 - -26 - - ) - -28 -ut32_t - -g_uime_c -() { - -29  -ut32_t - - gϡ_uime - = 0; - -30  -ut8_t - - guime_ovows - = 0; - -32 i( -mlis -(< - gϡ_uime -) { - -33 ++ - guime_ovows -; - -35 - gϡ_uime - = -mlis -(); - -36 -ut32_t - - guime_cds - = -uime_ovows - * ( -UPTIME_OVERFLOW - / 1000+ ( -ϡ_uime - / 1000); - -38  - guime_cds -; - -41 -ut64_t - -g_uime_ms -() { - -42  -ut32_t - - ghigh_mlis - = 0; - -43  -ut32_t - - glow_mlis - = 0; - -45 i( -g_uime -(< - glow_mlis -) { - -46 - ghigh_mlis -++; - -49 - glow_mlis - = -g_uime -(); - -51  (( - gut64_t -) - ghigh_mlis - << 32| - glow_mlis -; - -55  -ut32_t - - gnow_mlis -; - -57  -t_uime -() { - -58 - gnow_mlis - = :: -mlis -(); - -61 -ut32_t - -g_uime -() { - -62  - gnow_mlis -; - - @lib/uuid-common/src/loop.cpp - -19  - ~ - -21 -mea - - guuid - { - -23  -lo -() { - -24 -t_uime -(); - -25 -g_uime_ms -(); - - @lib/uuid-common/src/printable_to_string.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 as - cPrbSg - : -public - :: -Prt - { - -28 -public -: - -29 -exic - -PrbSg -( -d -:: -rg - & -ouut -) - -30 : -ouut_ -( -ouut -) { - -32 ~ -PrbSg -() = ; - -34 -size_t - -wre -( -ut8_t - -da - -f - - govride - { - -35 - gouut_ -. -nd -(1, -t_ -<>( -da -)); - -39 -size_t - -wre -(cڡ -ut8_t - * -bufr -, size_ -size - -f - - govride - { - -40 - gouut_ -. -nd -( -t_ -( -bufr -), -size -); - -41  - gsize -; - -44 - give -: - -45 -d -:: -rg - & -ouut_ -; - -48 -size_t - - $t_to_rg -(cڡ -Prb - & -b -, -d -:: -rg - & -ouut -) { - -49 -PrbSg - -pr -{ -ouut -}; - -51  -b -. - `tTo -( -pr -); - -52 - } -} - -54 - gd -:: -rg - - $b_to_rg -(cڡ -Prb - & -b -) { - -55 -d -:: -rg - -r -; - -57 - `t_to_rg -( -b -, -r -); - -59  -r -; - -60 - } -} - - @lib/uuid-common/src/read_flash_string.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 - gd -:: -rg - -ad_ash_rg -(cڡ -__FshSgHr - * -ash_r -) { - -28 -d -:: -rg - -r -(:: -_P -( -t_ -< -PGM_P ->( -ash_r -)), '\0'); - -30 :: -y_P -(& -r -[0], -t_ -< -PGM_P ->( -ash_r -), s. -cy -() + 1); - -32  - gr -; - - @lib/uuid-common/src/uuid/common.h - -19 #ide -UUID_COMMON_H_ - - -20  - #UUID_COMMON_H_ - - - ) - -22  - ~ - -24  - ~ - -25  - ~ - -33 -mea - - guuid - { - -45 - gd -:: -rg - -ad_ash_rg -(cڡ -__FshSgHr - * -ash_r -); - -55 -size_t - -t_to_rg -(cڡ -Prb - & -b -, -d -:: -rg - & -ouut -); - -64 - gd -:: -rg - -b_to_rg -(cڡ -Prb - & -b -); - -71 -usg - - gash_rg_ve - = -d -:: -ve -; - -79  -lo -(); - -87 -ut64_t - -g_uime_ms -(); - -89 -ut32_t - -g_uime -(); - -90 -ut32_t - -g_uime_c -(); - -92  -t_uime -(); - - @lib/uuid-console/src/command_line.cpp - -19  - ~ - -21  - ~ - -22  - ~ - -24 -mea - - guuid - { - -26 -mea - - gcse - { - -28 - gCommdLe -:: -CommdLe -(cڡ -d -:: -rg - & -le -) { - -29 -bo - -rg_es_doub - = -l -; - -30 -bo - - grg_es_sg - = -l -; - -31 -bo - - gch_es - = -l -; - -32 -bo - - gqued_gumt - = -l -; - -34 i(! - gle -. -emy -()) { - -35 - gms_ -. -ema_back -( -d -:: -rg -{}); - -38  - gc - : -le -) { - -39  -c -) { - -41 i( -rg_es_doub - || -rg_es_sg -) { - -42 i( -ch_es -) { - -43 -ms_ -. -back -(). -push_back -('\\'); - -44 - gch_es - = -l -; - -46 - gms_ -. -back -(). -push_back -(' '); - -47 } i( - gch_es -) { - -48 - gms_ -. -back -(). -push_back -(' '); - -49 - gch_es - = -l -; - -53 i( - gqued_gumt - || ! - gms_ -. -back -(). -emy -()) { - -54 - gms_ -. -ema_back -( -d -:: -rg -{}); - -56 - gqued_gumt - = -l -; - -61 i( -ch_es - || -rg_es_sg -) { - -62 -ms_ -. -back -(). -push_back -('"'); - -63 - gch_es - = -l -; - -65 - grg_es_doub - = ! -rg_es_doub -; - -66 - gqued_gumt - = -ue -; - -71 i( -ch_es - || -rg_es_doub -) { - -72 -ms_ -. -back -(). -push_back -('\''); - -73 - gch_es - = -l -; - -75 - grg_es_sg - = ! -rg_es_sg -; - -76 - gqued_gumt - = -ue -; - -81 i( -ch_es -) { - -82 -ms_ -. -back -(). -push_back -('\\'); - -83 - gch_es - = -l -; - -85 - gch_es - = -ue -; - -90 i( -ch_es -) { - -91 -ms_ -. -back -(). -push_back -('\\'); - -92 - gch_es - = -l -; - -94 - gms_ -. -back -(). -push_back -( -c -); - -99 i(! - gms_ -. -emy -(&&ams_. -back -().emy(&& ! - gqued_gumt -) { - -100 - gms_ -. -p_back -(); - -101 i(! - gms_ -. -emy -()) { - -102 - gag_a - = -ue -; - -107 - gCommdLe -:: -CommdLe -( -d -:: -liz_li -> -gumts -) { - -108 aut& -gumt - : -gumts -) { - -109 -ms_ -. - -լams_. -d -(), -gumt -. -beg -(),rgument.end()); - -113 - gd -:: -rg - -CommdLe -:: -to_rg -( -size_t - -rve -) const { - -114 -d -:: -rg - -le -; - -115 -size_t - - ges - = -es_ms_ -; - -117 - gle -. -rve -(reserve); - -119 aut& - gem - : -ms_ -) { - -120 i(! -le -. -emy -()) { - -121 -le - += ' '; - -124 i( - gem -. -emy -()) { - -125 - gle - += '\"'; - -126 - gle - += '\"'; - -127  - gxt -; - -130  - gc - : -em -) { - -131  -c -) { - -136 i( -es - > 0) { - -137 -le - += '\\'; - -142 - gle - + -c -; - -145 - gxt -: - -146 i( -es - > 0) { - -147 -es ---; - -151 i( - gag_a - && ! - gle -. -emy -()) { - -152 - gle - += ' '; - -155  - gle -; - -158  - gCommdLe -:: -t -() { - -159 -ms_ -. -r -(); - -160 -es_l_ms -(); - -161 - gag_a - = -l -; - - @lib/uuid-console/src/commands.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -24  - ~ - -25  - ~ - -26  - ~ - -27  - ~ - -28  - ~ - -30 #ide -__p_lib_make_unique - - -31 -mea - - gd - { - -33 - gme - < -tyme - - g_Tp -, - gtyme -... - g_Args -> - -34 -le - - gunique_r -< - g_Tp -> -make_unique -( -_Args - &&... -__gs -) { - -35  - gunique_r -< - g_Tp ->( -w - -_Tp -( -d -:: -fwd -< -_Args ->( -__gs -)...)); - -41 -mea - - guuid - { - -43 -mea - - gcse - { - -45  - gCommds -:: -add_commd -(cڡ -ash_rg_ve - & -me -, -commd_funi - -funi -) { - -46 -add_commd -(0, 0, -me -, -ash_rg_ve -{}, -funi -, -nuαr -); - -49  - gCommds -:: -add_commd -(cڡ -ash_rg_ve - & -me -, cڡ fsh_rg_ve & -gumts -, -commd_funi - -funi -) { - -50 -add_commd -(0, 0, -me -, -gumts -, -funi -, -nuαr -); - -53  - gCommds -:: -add_commd -(cڡ -ash_rg_ve - & -me -, - -54 cڡ -ash_rg_ve - & -gumts -, - -55 -commd_funi - -funi -, - -56 -gumt_comi_funi - -g_funi -) { - -57 -add_commd -(0, 0, -me -, -gumts -, -funi -, -g_funi -); - -60  - gCommds -:: -add_commd -( -cڋxt -,  -ags -, cڡ -ash_rg_ve - & -me -, -commd_funi - -funi -) { - -61 -add_commd -( -cڋxt -, -ags -, -me -, -ash_rg_ve -{}, -funi -, -nuαr -); - -64  - gCommds -:: -add_commd -( -cڋxt -, - -65  -ags -, - -66 cڡ -ash_rg_ve - & -me -, - -67 cڡ -ash_rg_ve - & -gumts -, - -68 -commd_funi - -funi -) { - -69 -add_commd -( -cڋxt -, -ags -, -me -, -gumts -, -funi -, -nuαr -); - -72  - gCommds -:: -add_commd -( -cڋxt -, - -73  -ags -, - -74 cڡ -ash_rg_ve - & -me -, - -75 cڡ -ash_rg_ve - & -gumts -, - -76 -commd_funi - -funi -, - -77 -gumt_comi_funi - -g_funi -) { - -78 - gcommds_ -. -ema -( -d -:: -pwi_cڡru -, std:: -fwd_as_tue -( -cڋxt -), std::fwd_as_tue( -ags -, -me -, -gumts -, -funi -, -g_funi -)); - -83  - gCommds -:: -move_l_commds -() { - -84 -commds_ -. -r -(); - -89  - gCommds -:: -move_cڋxt_commds -( -cڋxt -) { - -90 -commds_ -. -a -( -cڋxt -); - -107 - gCommds -:: -Executi - -Commds -:: -execu_commd -( -Shl - & -shl -, -CommdLe - && -commd_le -) { - -108 aut - gcommds - = -fd_commd -( -shl -, -commd_le -); - -109 aut - glge - = -commds -. -exa -. -beg -(); - -110 -Executi - - gsu -; - -112 - gsu -. - gr - = -nuαr -; - -114 i( - gcommds -. - gexa -. -emy -()) { - -115 - gsu -. - gr - = -F -("Commandot found"); - -116 } i( - gcommds -. - gexa -. -cou -( -lge --> -f -) == 1) { - -117 aut& -commd - = -lge --> -cd -; - -118 - gd -:: -ve -< -d -:: -rg -> -gumts -; - -120 aut - g - = -d -:: -xt -( -commd_le --> -cbeg -(), -commd --> -me_ -. -size -()); i!commd_le-> -nd -(); it++) { - -121 - ggumts -. -push_back -( -d -:: -move -(* - -)); - -123 - gcommd_le -. -t -(); - -125 i( - gcommds -. - gl -. -u_bound -( -lge --> -f -! -commds -. -l -. -d -(&& ! -gumts -. -emy -()) { - -126 -su -. -r - = -F -("Commandot found"); - -127 } i( - ggumts -. -size -(< - gcommd --> -mimum_gumts -()) { - -128 - gsu -. - gr - = -F -("Notnoughrguments for command"); - -129 } i( - ggumts -. -size -(> - gcommd --> -maximum_gumts -()) { - -130 - gsu -. - gr - = -F -("Too manyrguments for command"); - -132 - gcommd --> -funi_ -( -shl -, -gumts -); - -135 - gsu -. - gr - = -F -("Fatalrror (multiple commands found)"); - -138  - gsu -; - -141 -bo - - gCommds -:: -fd_lge_comm_efix -(cڡ -d -:: -muim -< -size_t -, cڡ -Commd - *> & -commds -, std:: -ve - & -lge_me -) { - -142 -size_t - -compڒt_efix - = 0; - -143 -size_t - - gsh܋_mch - = -commds -. -beg -()-> -f -; - -145 - glge_me -. -rve -( -sh܋_mch -); - -149 aut& - gf - = -commds -. -beg -()-> -cd --> -me_ -; - -150 -bo - - gl_mch - = -ue -; - -152  -size_t - - gngth - = 0; - gl_mch - &>h < - gsh܋_mch -;ength++) { - -153 aut - gcommd_ - = -d -:: -xt -( -commds -. -beg -()); commd_ !commds. -d -(); command_it++) { - -154 i( -ad_ash_rg -(* -d -:: -xt -( -f -. -beg -(), -ngth -)!ad_ash_rg(*d::xt( -commd_ --> -cd --> -me_ -.begin(),ength))) { - -155 - gl_mch - = -l -; - -160 i( - gl_mch -) { - -161 - gcompڒt_efix - = -ngth - + 1; - -165 aut - gme_ - = -f -. -beg -(); - -166  -size_t - - gi - = 0; i < - gcompڒt_efix -; i++) { - -167 - glge_me -. -push_back -( -d -:: -move -( -ad_ash_rg -(* -me_ -))); - -168 - gme_ -++; - -172 i( - gcompڒt_efix - < - gsh܋_mch -) { - -174 aut - gf - = * -d -:: -xt -( -commds -. -beg -()-> -cd --> -me_ -.beg(), -compڒt_efix -); - -175 -bo - - gl_mch - = -ue -; - -176 -size_t - - gchs_efix - = 0; - -178  -size_t - - gngth - = 0; - gl_mch -;ength++) { - -179 aut - gcommd_ - = -d -:: -xt -( -commds -. -beg -()); commd_ !commds. -d -(); command_it++) { - -182 i( -pgm_ad_by -( -t_ -< -PGM_P ->( -f -+ -ngth -) - -183 ! -pgm_ad_by -( -t_ -< -PGM_P ->(* -d -:: -xt -( -commd_ --> -cd --> -me_ -. -beg -(), -compڒt_efix -)+ -ngth -)) { - -184 - gl_mch - = -l -; - -189 i( - gl_mch -) { - -190 - gchs_efix - = -ngth - + 1; - -194 i( - gchs_efix - > 0) { - -195 - glge_me -. -push_back -( -d -:: -move -( -ad_ash_rg -( -f -). -subr -(0, -chs_efix -))); - -196  - gl -; - -200  - gue -; - -203 - gd -:: -rg - -Commds -:: -fd_lge_comm_efix -(cڡ -d -:: -ve - & -gumts -) { - -204 aut& -f - = * -gumts -. -beg -(); - -205 -bo - - gl_mch - = -ue -; - -206 -size_t - - gchs_efix - = 0; - -208  -size_t - - gngth - = 0; - gl_mch -;ength++) { - -209 aut - ggumt_ - = -d -:: -xt -( -gumts -. -beg -());rgumt_ !gumts. -d -();rgument_it++) { - -212 i( - gf -[ -ngth -] !(* -gumt_ -)[length]) { - -213 -l_mch - = -l -; - -218 i( - gl_mch -) { - -219 - gchs_efix - = -ngth - + 1; - -223  - ggumts -. -beg -()-> -subr -(0, -chs_efix -); - -226 - gCommds -:: -Comi - -Commds -:: -come_commd -( -Shl - & -shl -, cڡ -CommdLe - & -commd_le -) { - -227 aut - gcommds - = -fd_commd -( -shl -, -commd_le -); - -228 -Comi - - gsu -; - -230 aut - gmch - = -commds -. -l -. -beg -(); - -231 -size_t - - gcou -; - -232 i( - gmch - ! -commds -. -l -. -d -()) { - -233 -cou - = -commds -. -l -.cou( -mch --> -f -); - -234 } i(! - gcommds -. - gexa -. -emy -()) { - -236 - gmch - = -d -:: -ev -( -commds -. -exa -. -d -()); - -237 - gcou - = -commds -. -exa -. -cou -( -mch --> -f -); - -239  - gsu -; - -242 - gd -:: -unique_r -< -Commd -> -mp_commd -; - -243 - gd -:: -ve -< -d -:: -rg -> -mp_commd_me -; - -244 - gd -:: -muim -< -size_t -, cڡ - gCommd - *>:: - - -mp_commd_ -; - -246 i( - gcommds -. - gl -. -size -(> 1 && (commds. - gexa -. -emy -(|| - gcommd_le -. -tٮ_size -(> commds.exa. -beg -()-> - gcd --> - gme_ -.size())) { - -248 -bo - - gwhe_compڒts - = -fd_lge_comm_efix -( -commds -. -l -, -mp_commd_me -); - -250 i( - gcou - =1 && -whe_compڒts - && -mp_commd_me -. -size -(= -mch --> -f -) { - -254 -mp_commd_me -. -r -(); - -255 - gsu -. - gamt -. - gag_a - = -ue -; - -258 i(! - gmp_commd_me -. -emy -(&& - gcommd_le -. -tٮ_size -(< -mp_commd_me -. -size -()) { - -259 -mp_commd - = -d -:: -make_unique -< -Commd ->(0, - gash_rg_ve -{}, fsh_rg_ve{}, - gnuαr -,ullptr); - -260 - gcou - = 1; - -261 - gmch - = -commds -. -l -. -d -(); - -262 - gsu -. - gamt -. - gag_a - = -whe_compڒts -; - -264 aut& - gme - : -mp_commd_me -) { - -265 -su -. -amt --> -ema_back -( -me -); - -270 i( - gcou - =1 && ! -mp_commd -) { - -272 aut& -mchg_commd - = -mch --> -cd -; - -274 aut& - gme - : -mchg_commd --> -me_ -) { - -275 -su -. -amt --> -push_back -( -d -:: -move -( -ad_ash_rg -( -me -))); - -278 i( - gcommd_le -. -tٮ_size -(> - gsu -. - gamt --> -size -() - -279 && - gcommd_le -. -tٮ_size -(< -mchg_commd --> -me_ -. -size -(+ mchg_commd-> -maximum_gumts -()) { - -281 -d -:: -ve - -gumts -{d:: -xt -( -commd_le --> -cbeg -(), -su -. -amt --> -size -()), commd_le-> -nd -()}; - -283 - gsu -. - gamt --> - -( -su -. -amt --> -d -(), -gumts -. -cbeg -(),rgumts. -nd -()); - -284 - gsu -. - gamt -. - gag_a - = -commd_le -. -ag_a -; - -286 aut - gcut_gs_cou - = -gumts -. -size -(); - -287 - gd -:: -rg - -ϡ_gumt -; - -289 i(! - gcommd_le -. - gag_a -) { - -291 - gϡ_gumt - = -d -:: -move -( -su -. -amt --> -back -()); - -292 - gsu -. - gamt --> -p_back -(); - -293 i(! - ggumts -. -emy -()) { - -294 - ggumts -. -p_back -(); - -295 - gcut_gs_cou ---; - -299 aut - gpْtl_gumts - = -mchg_commd --> -g_funi_ - ? mchg_commd->g_funi_( -shl -, -gumts -: -d -:: -ve -{}; - -302 i(! - gcommd_le -. - gag_a -) { - -303 aut - g - = -pْtl_gumts -. -beg -(); i!pْtl_gumts. -d -();) { - -304 i( - g --> -rfd -( -ϡ_gumt -, 0= -d -:: -rg -:: -os -) { - -305 - - = -pْtl_gumts -. -a -(it); - -307 - g -++; - -314 i(! - gcommd_le -. - gag_a -) { - -315 i( - gpْtl_gumts -. -size -() == 1) { - -316 i( -ϡ_gumt - =* -pْtl_gumts -. -beg -()) { - -317 i( -su -. -amt --> -size -(+ 1 < -mchg_commd --> -me_ -.size(+ mchg_commd-> -maximum_gumts -()) { - -319 -su -. -amt -. -ag_a - = -ue -; - -323 - gϡ_gumt - = * -pْtl_gumts -. -beg -(); - -324 - gpْtl_gumts -. -r -(); - -327 - gcut_gs_cou -++; - -328 } i( - gpْtl_gumts -. -size -() > 1) { - -329 - gϡ_gumt - = -fd_lge_comm_efix -( -pْtl_gumts -); - -334 i(! - gcommd_le -. - gag_a -) { - -335 - gsu -. - gamt --> -push_back -( -d -:: -move -( -ϡ_gumt -)); - -338 -CommdLe - - gmag_hp -; - -340 i(! - gpْtl_gumts -. -emy -()) { - -342 - gcut_gs_cou -++; - -345 i( - gcut_gs_cou - < - gmchg_commd --> -maximum_gumts -()) { - -346 - gmag_hp -. -es_l_ms -(); - -348 aut - g - = -d -:: -xt -( -mchg_commd --> -gumts_ -. -cbeg -(), -cut_gs_cou -); i!mchg_commd->gumts_. -nd -(); it++) { - -349 - gmag_hp --> -push_back -( -d -:: -move -( -ad_ash_rg -(* - -))); - -353 i( - gpْtl_gumts -. -emy -()) { - -354 i(! - gmag_hp --> -emy -()) { - -355 - gsu -. - ghp -. -push_back -( -d -:: -move -( -mag_hp -)); - -358 aut - gpْtl_gumt - : -pْtl_gumts -) { - -359 -CommdLe - -hp -; - -361 - ghp --> -ema_back -( -pْtl_gumt -); - -363 i(! - gmag_hp --> -emy -()) { - -364 - ghp -. -es_l_ms -(); - -365 - ghp --> - -( -hp --> -d -(), -mag_hp --> -beg -(),emaining_help->end()); - -368 - gsu -. - ghp -. -push_back -( -d -:: -move -( -hp -)); - -371 } i( - gsu -. - gamt --> -size -(< - gmchg_commd --> - gme_ -.size(+ mchg_commd-> -maximum_gumts -()) { - -373 - gsu -. - gamt -. - gag_a - = -ue -; - -375 } i( - gcou - > 1 || - gmp_commd -) { - -377 aut - gcommd_ - = -commds -. -l -. -beg -(); commd_ !commds.l. -d -(); command_it++) { - -378 -CommdLe - - ghp -; - -380 aut - gle_ - = -commd_le --> -cbeg -(); - -381 aut - gash_me_ - = -commd_ --> -cd --> -me_ -. -cbeg -(); - -383 i( - gmp_commd -) { - -385 -size_t - - gsk - = -mp_commd_me -. -size -(); - -386 i(! - gsu -. - gamt -. - gag_a -) { - -387 - gsk ---; - -390 - gash_me_ - + -sk -; - -391  - gle_ - ! -commd_le --> -nd -()) { - -392 -le_ -++; - -396 ; - gash_me_ - ! -commd_ --> -cd --> -me_ -. -nd -(); flash_name_it++) { - -397 - gd -:: -rg - -me - = -ad_ash_rg -(* -ash_me_ -); - -400 i( - gle_ - ! -commd_le --> -nd -()) { - -401 i( -me - =* -le_ -++) { - -404 - gle_ - = -commd_le --> -nd -(); - -408 - ghp --> -ema_back -( -me -); - -411 - ghp -. -es_l_ms -(); - -413 aut - ggumt - : -commd_ --> -cd --> -gumts_ -) { - -415 i( -le_ - ! -commd_le --> -nd -()) { - -416 -le_ -++; - -420 - ghp --> -push_back -( -d -:: -move -( -ad_ash_rg -( -gumt -))); - -423 - gsu -. - ghp -. -push_back -( -d -:: -move -( -hp -)); - -427 i( - gcou - > 1 && ! - gcommds -. - gexa -. -emy -()) { - -429 aut - glge - = -commds -. -exa -. -beg -(); - -431 i( - gcommds -. - gexa -. -cou -( -lge --> -f -) == 1) { - -432 aut& -me - : -lge --> -cd --> -me_ -) { - -433 -su -. -amt --> -push_back -( -d -:: -move -( -ad_ash_rg -( -me -))); - -437 - gsu -. - gamt -. - gag_a - = -ue -; - -442 i( - gcommd_le -. -tٮ_size -(> - gsu -. - gamt -.tٮ_size(||esu.am= -commd_le -) { - -443 -su -. -amt -. -t -(); - -446  - gsu -; - -449 - gCommds -:: -Mch - -Commds -:: -fd_commd -( -Shl - & -shl -, cڡ -CommdLe - & -commd_le -) { - -450 -Mch - - gcommds -; - -451 aut - gcڋxt_commds - = -commds_ -. -equ_nge -( -shl -. -cڋxt -()); - -453 aut - g - = -cڋxt_commds -. -f -; i!cڋxt_commds. -cd -; it++) { - -454 aut& - gcommd - = - --> -cd -; - -455 -bo - - gmch - = -ue -; - -456 -bo - - gexa - = -ue -; - -458 i(! - gshl -. -has_ags -( -commd -. -ags_ -)) { - -462 aut - gme_ - = -commd -. -me_ -. -cbeg -(); - -463 aut - gle_ - = -commd_le --> -cbeg -(); - -465 ; - gme_ - ! -commd -. -me_ -. -nd -(&& -le_ - ! -commd_le -->nd();ame_++, - gle_ -++) { - -466 - gd -:: -rg - -me - = -ad_ash_rg -(* -me_ -); - -467 -size_t - - gfound - = -me -. -rfd -(* -le_ -, 0); - -469 i( - gfound - = -d -:: -rg -:: -os -) { - -470 -mch - = -l -; - -472 } i( - gle_ --> -ngth -(! -me -.length()) { - -473 aut -le_check_ - = -d -:: -xt -( -le_ -); - gle_check_ - ! -commd_le --> -nd -();ine_check_it++) { - -474 i(! - gle_check_ --> -emy -()) { - -476 - gmch - = -l -; - -480 i( - gcommd_le -. - gag_a -) { - -482 - gmch - = -l -; - -490 i( - gme_ - ! -commd -. -me_ -. -nd -()) { - -491 -exa - = -l -; - -494 i( - gmch -) { - -495 i( - gexa -) { - -496 - gcommds -. - gexa -. -ema -( -commd -. -me_ -. -size -(), &command); - -498 - gcommds -. - gl -. -ema -( -commd -. -me_ -. -size -(), &command); - -503  - gcommds -; - -506  - gCommds -:: -f_ch_avaab_commd -( -Shl - & -shl -, -y_funi - -f -) const { - -507 aut - gcommds - = -commds_ -. -equ_nge -( -shl -. -cڋxt -()); - -509 aut - gcommd_ - = -commds -. -f -; commd_ !commds. -cd -; command_it++) { - -510 i( - gshl -. -has_ags -( -commd_ --> -cd -. -ags_ -)) { - -511 - gd -:: -ve -< -d -:: -rg -> -me -; - -512 - gd -:: -ve -< -d -:: -rg -> -gumts -; - -514 - gme -. -rve -( -commd_ --> -cd -. -me_ -. -size -()); - -515 aut - gash_me - : -commd_ --> -cd -. -me_ -) { - -516 -me -. -push_back -( -d -:: -move -( -ad_ash_rg -( -ash_me -))); - -519 - ggumts -. -rve -( -commd_ --> -cd -. -gumts_ -. -size -()); - -520 aut - gash_gumt - : -commd_ --> -cd -. -gumts_ -) { - -521 -gumts -. -push_back -( -d -:: -move -( -ad_ash_rg -( -ash_gumt -))); - -524 -f -( -me -, -gumts -); - -529 - gCommds -:: -Commd -::Commd( -ags -, - -530 cڡ -ash_rg_ve - -me -, - -531 cڡ -ash_rg_ve - -gumts -, - -532 -commd_funi - -funi -, - -533 -gumt_comi_funi - -g_funi -) - -534 : -ags_ -( -ags -) - -535 , -me_ -( -me -) - -536 , -gumts_ -( -gumts -) - -537 , -funi_ -( -funi -) - -538 , -g_funi_ -( -g_funi -) { - -541 - gCommds -:: -Commd -::~Command() { - -544 -size_t - -Commds -:: -Commd -:: -mimum_gumts -() const { - -545  -d -:: -cou_if -( -gumts_ -. -cbeg -(),rgumts_. -nd -(), [](cڡ -__FshSgHr - * -gumt -{  -pgm_ad_by -(argument) == '<'; }); - - @lib/uuid-console/src/console.cpp - -19  - ~ - - @lib/uuid-console/src/shell.cpp - -19  - ~ - -21  - ~ - -22  - ~ - -24  - ~ - -25  - ~ - -26  - ~ - -27  - ~ - -28  - ~ - -30  - ~ - -31  - ~ - -33 #ide -__p_lib_make_unique - - -34 -mea - - gd - { - -36 - gme - < -tyme - - g_Tp -, - gtyme -... - g_Args -> - -37 -le - - gunique_r -< - g_Tp -> -make_unique -( -_Args - &&... -__gs -) { - -38  - gunique_r -< - g_Tp ->( -w - -_Tp -( -d -:: -fwd -< -_Args ->( -__gs -)...)); - -44 -mea - - guuid - { - -46 -mea - - gcse - { - -49 - gShl -:: -Shl -( -d -:: -shed_r -< -Commds -> -commds -,  -cڋxt -,  -ags -) - -50 : -commds_ -( -d -:: -move -( -commds -)) - -51 , -ags_ -( -ags -) { - -52 -r_cڋxt -( -cڋxt -); - -55 - gShl -::~ -Shl -() { - -56 -uuid -:: -log -:: -Logg -:: -uegi_hdr -( -this -); - -59  - gShl -:: -t -() { - -60 #ifde -EMSESP_DEBUG - - -61 -uuid -:: -log -:: -Logg -:: -gi_hdr -( -this -, uuid::log:: -Lev -:: -DEBUG -); - -64 - guuid -:: -log -:: -Logg -:: -gi_hdr -( -this -, -uuid -::log:: -Lev -:: -NOTICE -); - -67 - gle_bufr_ -. -rve -( -maximum_commd_le_ngth_ -); - -68 -diy_br -(); - -69 -diy_om -(); - -70 - gshls_ -. - -( -shed_om_this -()); - -71 - gid_time_ - = -uuid -:: -g_uime_ms -(); - -72 -d -(); - -75  - gShl -:: -d -() { - -78 -bo - -Shl -:: -rušg -() const { - -79  ! -ݳd_ -; - -82  - gShl -:: - -() { - -83 i( -mode_ - = -Mode -:: -BLOCKING -) { - -84 aut* -blockg_da - = -t_ -< -Shl -:: -BlockgDa - *>( -mode_da_ -. -g -()); - -86 - gblockg_da --> - g_ - = -ue -; - -88 i( -rušg -()) { - -89 - gݳd_ - = -ue -; - -90 -ݳd -(); - -95  - gShl -:: -ݳd -() { - -98 -bo - -Shl -:: -ex_cڋxt -() { - -99 i( -cڋxt_ -. -size -() > 1) { - -100 -cڋxt_ -. -p_back -(); - -101  - gue -; - -103  - gl -; - -107  - gShl -:: -lo_e -() { - -108 i(! -rušg -()) { - -112  - gmode_ -) { - -113  - gMode -:: -NORMAL -: - -114 -ouut_logs -(); - -115 -lo_nm -(); - -118  - gMode -:: -PASSWORD -: - -119 -ouut_logs -(); - -120 -lo_sswd -(); - -123  - gMode -:: -DELAY -: - -124 -ouut_logs -(); - -125 -lo_day -(); - -128  - gMode -:: -BLOCKING -: - -129 -lo_blockg -(); - -134  - gShl -:: -lo_nm -() { - -135 cڡ  -put - = -ad_e_ch -(); - -137 i( - gput - < 0) { - -138 -check_id_timeout -(); - -142 cڡ  - gc - = -put -; - -144  - gc -) { - -147 -le_bufr_ -. -r -(); - -148 -n -(); - -149 - gom_diyed_ - = -l -; - -150 -diy_om -(); - -155 i( -le_bufr_ -. -emy -()) { - -156 -d_of_smissi -(); - -164 i(! -le_bufr_ -. -emy -()) { - -165 -a_chas -(1); - -166 - gle_bufr_ -. -p_back -(); - -172 -oss_comi -(); - -177 i( -evious_ - != '\x0D') { - -178 -oss_commd -(); - -184 -a_cut_le -(); - -185 - gom_diyed_ - = -l -; - -186 -diy_om -(); - -191 -oss_commd -(); - -196 -a_cut_le -(); - -197 - gom_diyed_ - = -l -; - -198 - gle_bufr_ -. -r -(); - -199 -diy_om -(); - -204 -de_bufr_wd -( -ue -); - -208 i( -c - >= '\x20' && c <= '\x7E') { - -210 i( -le_bufr_ -. -ngth -(< -maximum_commd_le_ngth_ -) { - -211 -le_bufr_ -. -push_back -( -c -); - -212 -wre -(( -ut8_t -) -c -); - -218 - gevious_ - = -c -; - -222 -avaab_ch -(); - -224 - gid_time_ - = -uuid -:: -g_uime_ms -(); - -227 - gShl -:: -PasswdDa -::PasswdDa(cڡ -__FshSgHr - * -sswd_om -, -sswd_funi - &&assword_function) - -228 : -sswd_om_ -( -sswd_om -) - -229 , -sswd_funi_ -( -d -:: -move -( -sswd_funi -)) { - -232  -Shl -:: -lo_sswd -() { - -233 cڡ  -put - = -ad_e_ch -(); - -235 i( - gput - < 0) { - -236 -check_id_timeout -(); - -240 cڡ  - gc - = -put -; - -242  - gc -) { - -245 -oss_sswd -( -l -); - -252 i(! -le_bufr_ -. -emy -()) { - -253 -le_bufr_ -. -p_back -(); - -259 i( -evious_ - != '\x0D') { - -260 -oss_sswd -( -ue -); - -266 -a_cut_le -(); - -267 - gom_diyed_ - = -l -; - -268 -diy_om -(); - -273 -oss_sswd -( -ue -); - -278 -le_bufr_ -. -r -(); - -283 -de_bufr_wd -( -l -); - -287 i( -c - >= '\x20' && c <= '\x7E') { - -289 i( -le_bufr_ -. -ngth -(< -maximum_commd_le_ngth_ -) { - -290 -le_bufr_ -. -push_back -( -c -); - -296 - gevious_ - = -c -; - -300 -avaab_ch -(); - -302 - gid_time_ - = -uuid -:: -g_uime_ms -(); - -305 - gShl -:: -DayDa -::DayDa( -ut64_t - -day_time -, -day_funi - && delay_function) - -306 : -day_time_ -( -day_time -) - -307 , -day_funi_ -( -d -:: -move -( -day_funi -)) { - -310  -Shl -:: -lo_day -() { - -311 aut* -day_da - = -t_ -< -Shl -:: -DayDa - *>( -mode_da_ -. -g -()); - -313 i( - guuid -:: -g_uime_ms -(> -day_da --> -day_time_ -) { - -314 aut -funi_cy - = -day_da --> -day_funi_ -; - -316 - gmode_ - = -Mode -:: -NORMAL -; - -317 - gmode_da_ -. -t -(); - -319 -funi_cy -(* -this -); - -321 i( -rušg -()) { - -322 -diy_om -(); - -325 - gid_time_ - = -uuid -:: -g_uime_ms -(); - -329 - gShl -:: -BlockgDa -::BlockgDa( -blockg_funi - && blocking_function) - -330 : -blockg_funi_ -( -d -:: -move -( -blockg_funi -)) { - -333  -Shl -:: -lo_blockg -() { - -334 aut* -blockg_da - = -t_ -< -Shl -:: -BlockgDa - *>( -mode_da_ -. -g -()); - -341 i( - gblockg_da --> -blockg_funi_ -(* -this -, -blockg_da --> -_ -)) { - -342 -bo - - g_ndg - = -blockg_da --> -_ -; - -344 - gmode_ - = -Mode -:: -NORMAL -; - -345 - gmode_da_ -. -t -(); - -347 i( - g_ndg -) { - -348 - -(); - -351 i( -rušg -()) { - -352 -diy_om -(); - -355 - gid_time_ - = -uuid -:: -g_uime_ms -(); - -359  - gShl -:: -r_sswd -(cڡ -__FshSgHr - * -om -, -sswd_funi - -funi -) { - -360 i( - gmode_ - = -Mode -:: -NORMAL -) { - -361 -mode_ - = -Mode -:: -PASSWORD -; - -362 - gmode_da_ - = -d -:: -make_unique -< -Shl -:: -PasswdDa ->( -om -, - gd -:: -move -( -funi -)); - -366  - gShl -:: -day_f -( -ms -, -day_funi - -funi -) { - -367 -day_u -( -uuid -:: -g_uime_ms -(+ -ms -, -d -:: -move -( -funi -)); - -370  - gShl -:: -day_u -( -ut64_t - -ms -, -day_funi - -funi -) { - -371 i( - gmode_ - = -Mode -:: -NORMAL -) { - -372 -mode_ - = -Mode -:: -DELAY -; - -373 - gmode_da_ - = -d -:: -make_unique -< -Shl -:: -DayDa ->( -ms -, - gd -:: -move -( -funi -)); - -377  - gShl -:: -block_wh -( -blockg_funi - -funi -) { - -378 i( -mode_ - = -Mode -:: -NORMAL -) { - -379 -mode_ - = -Mode -:: -BLOCKING -; - -380 - gmode_da_ - = -d -:: -make_unique -< -Shl -:: -BlockgDa ->(d:: -move -( -funi -)); - -384  - gShl -:: -de_bufr_wd -( -bo - -diy -) { - -385 -size_t - -pos - = -le_bufr_ -. -fd_ϡ_of -(' '); - -387 i( - gpos - = -d -:: -rg -:: -os -) { - -388 -le_bufr_ -. -r -(); - -389 i( - gdiy -) { - -390 -a_cut_le -(); - -391 - gom_diyed_ - = -l -; - -392 -diy_om -(); - -395 i( - gdiy -) { - -396 -a_chas -( -le_bufr_ -. -ngth -(- -pos -); - -398 - gle_bufr_ -. -size -( -pos -); - -402 -size_t - - gShl -:: -maximum_commd_le_ngth -() const { - -403  -maximum_commd_le_ngth_ -; - -406  - gShl -:: -maximum_commd_le_ngth -( -size_t - -ngth -) { - -407 -maximum_commd_le_ngth_ - = -d -:: -max -(( -size_t -)1, -ngth -); - -408 - gle_bufr_ -. -rve -( -maximum_commd_le_ngth_ -); - -411  - gShl -:: -oss_commd -() { - -412 -CommdLe - -commd_le -{ -le_bufr_ -}; - -414 - gle_bufr_ -. -r -(); - -415 -n -(); - -416 - gom_diyed_ - = -l -; - -418 i(! - gcommd_le --> -emy -()) { - -419 i( - gcommds_ -) { - -420 aut - gexecuti - = -commds_ --> -execu_commd -(* -this -, -d -:: -move -( -commd_le -)); - -422 i( - gexecuti -. - gr - ! -nuαr -) { - -423 -n -( -executi -. -r -); - -426 -n -( -F -("No commands configured")); - -430 i( -rušg -()) { - -431 -diy_om -(); - -433 :: -yld -(); - -436  - gShl -:: -oss_comi -() { - -437 -CommdLe - -commd_le -{ -le_bufr_ -}; - -439 i(! - gcommd_le --> -emy -(&& - gcommds_ -) { - -440 aut - gcomi - = -commds_ --> -come_commd -(* -this -, -commd_le -); - -441 -bo - - gdiy - = -l -; - -443 i(! - gcomi -. - ghp -. -emy -()) { - -444 -n -(); - -445 - gdiy - = -ue -; - -447 aut& - ghp - : -comi -. -hp -) { - -448 -d -:: -rg - -hp_le - = -hp -. -to_rg -( -maximum_commd_le_ngth_ -); - -450 -n -( -hp_le -); - -454 i(! - gcomi -. - gamt --> -emy -()) { - -455 i(! - gdiy -) { - -456 -a_cut_le -(); - -457 - gom_diyed_ - = -l -; - -458 - gdiy - = -ue -; - -461 - gle_bufr_ - = -comi -. -amt -. -to_rg -( -maximum_commd_le_ngth_ -); - -464 i( - gdiy -) { - -465 -diy_om -(); - -469 :: -yld -(); - -472  - gShl -:: -oss_sswd -( -bo - -comed -) { - -473 -n -(); - -475 aut* - gsswd_da - = -t_ -< -Shl -:: -PasswdDa - *>( -mode_da_ -. -g -()); - -476 aut - gfuni_cy - = -sswd_da --> -sswd_funi_ -; - -478 - gmode_ - = -Mode -:: -NORMAL -; - -479 - gmode_da_ -. -t -(); - -481 -funi_cy -(* -this -, -comed -, -le_bufr_ -); - -482 - gle_bufr_ -. -r -(); - -484 i( -rušg -()) { - -485 -diy_om -(); - -489  - gShl -:: -voke_commd -(cڡ -d -:: -rg - & -le -) { - -490 i(! -le_bufr_ -. -emy -()) { - -491 -n -(); - -492 - gom_diyed_ - = -l -; - -494 i(! - gom_diyed_ -) { - -495 -diy_om -(); - -497 - gle_bufr_ - = -le -; - -498 -t -( -le_bufr_ -); - -499 -oss_commd -(); - -502  - gShl -:: -id_timeout -() const { - -503  -id_timeout_ - / 1000; - -506  - gShl -:: -id_timeout -( -timeout -) { - -507 -id_timeout_ - = ( -ut64_t -) -timeout - * 1000; - -510  - gShl -:: -check_id_timeout -() { - -511 i( -id_timeout_ - > 0 && -uuid -:: -g_uime_ms -(- -id_time_ - >= idle_timeout_) { - -512 -n -(); - -513 - -(); - - @lib/uuid-console/src/shell_log.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -24  - ~ - -25  - ~ - -27  - ~ - -29 -mea - - guuid - { - -31 -mea - - gcse - { - -33 cڡ  - g__pr__logg_me -[] -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "shell"; - -34 cڡ - guuid -:: -log -:: -Logg - -Shl -:: -logg_ -{ -t_ -( -__pr__logg_me -), uuid::log:: -Facy -:: -LPR -}; - -36 - gShl -:: -QueuedLogMesge -::QueuedLogMesge( -id -, -d -:: -shed_r -< -uuid -:: -log -:: -Mesge -> && -cڋ -) - -37 : -id_ -( -id -) - -38 , -cڋ_ -( -d -:: -move -( -cڋ -)) { - -41  -Shl -:: -ݔ -<<( -d -:: -shed_r -< -uuid -:: -log -:: -Mesge -> -mesge -) { - -42 i( -log_mesges_ -. -size -(> -maximum_log_mesges_ -) { - -43 -log_mesges_ -. -p_t -(); - -46 - glog_mesges_ -. -ema_back -( -log_mesge_id_ -++, -d -:: -move -( -mesge -)); - -49 - guuid -:: -log -:: -Lev - -Shl -:: -log_v -() const { - -50  -uuid -:: -log -:: -Logg -:: -g_log_v -( -this -); - -53  - gShl -:: -log_v -( -uuid -:: -log -:: -Lev - -v -) { - -54 -uuid -:: -log -:: -Logg -:: -gi_hdr -( -this -, -v -); - -57 -size_t - - gShl -:: -maximum_log_mesges -() const { - -58  -maximum_log_mesges_ -; - -61  - gShl -:: -maximum_log_mesges -( -size_t - -cou -) { - -62 -maximum_log_mesges_ - = -d -:: -max -(( -size_t -)1, -cou -); - -63  - glog_mesges_ -. -size -(> - gmaximum_log_mesges_ -) { - -64 - glog_mesges_ -. -p_t -(); - -68  - gShl -:: -ouut_logs -() { - -69 i(! -log_mesges_ -. -emy -()) { - -70 i( -mode_ - ! -Mode -:: -DELAY -) { - -71 -a_cut_le -(); - -72 - gom_diyed_ - = -l -; - -75 ! - glog_mesges_ -. -emy -()) { - -76 aut - gmesge - = -d -:: -move -( -log_mesges_ -. -t -()); - -77 - glog_mesges_ -. -p_t -(); - -79 -t -( -uuid -:: -log -:: -fm_timeamp_ms -( -mesge -. -cڋ_ --> -uime_ms -, 3)); - -80 -tf -( -F -(" %%lu: [%S] "), -uuid -:: -log -:: -fm_v_ch -( -mesge -. -cڋ_ --> -v -), mesge. -id_ -, mesge.cڋ_-> -me -); - -82 i(( - gmesge -. - gcڋ_ --> - gv - = -uuid -:: -log -:: -Lev -:: -ERR -|| ( -mesge -. -cڋ_ --> -v - =uuid::log::Lev:: -WARNING -)) { - -83 -t -( -COLOR_RED -); - -84 -n -( -mesge -. -cڋ_ --> -xt -); - -85 -t -( -COLOR_RESET -); - -86 } i( - gmesge -. - gcڋ_ --> - gv - = -uuid -:: -log -:: -Lev -:: -INFO -) { - -87 -t -( -COLOR_YELLOW -); - -88 -n -( -mesge -. -cڋ_ --> -xt -); - -89 -t -( -COLOR_RESET -); - -90 } i( - gmesge -. - gcڋ_ --> - gv - = -uuid -:: -log -:: -Lev -:: -DEBUG -) { - -91 -t -( -COLOR_CYAN -); - -92 -n -( -mesge -. -cڋ_ --> -xt -); - -93 -t -( -COLOR_RESET -); - -95 -n -( -mesge -. -cڋ_ --> -xt -); - -98 :: -yld -(); - -101 -diy_om -(); - - @lib/uuid-console/src/shell_loop_all.cpp - -19  - ~ - -21  - ~ - -22  - ~ - -24 -mea - - guuid - { - -26 -mea - - gcse - { - -28 - gd -:: -t -< -d -:: -shed_r -< -Shl ->> Shl:: -shls_ -; - -30  - gShl -:: -lo_l -() { - -31 aut -shl - = -shls_ -. -beg -(); - gshl - !shls_. -d -();) { - -32 - gshl --> -g -()-> -lo_e -(); - -35 i(! - gshl --> -g -()-> -rušg -()) { - -36 - gshl - = -shls_ -. -a -( -shl -); - -38 - gshl -++; - - @lib/uuid-console/src/shell_print.cpp - -19  - ~ - -21  - ~ - -22  - ~ - -24  - ~ - -26 -mea - - guuid - { - -28 -mea - - gcse - { - -30 -size_t - - gShl -:: -t -(cڡ -d -:: -rg - & -da -) { - -31 i( -da -. -emy -()) { - -34  -wre -( -t_ -( -da -. -c_r -()), da. -ngth -()); - -38 -size_t - - gShl -:: -n -(cڡ -d -:: -rg - & -da -) { - -39 -size_t - -n - = -t -( -da -); - -40 - gn - + -n -(); - -41  - gn -; - -44 -size_t - - gShl -:: -tf -(cڡ * -fm -, ...) { - -45 -va_li - - g -; - -47 -va_t -( - -, -fm -); - -48 -size_t - - gn - = -vtf -( -fm -, - -); - -49 -va_d -( - -); - -51  - gn -; - -54 -size_t - - gShl -:: -tf -(cڡ -__FshSgHr - * -fm -, ...) { - -55 -va_li - - g -; - -57 -va_t -( - -, -fm -); - -58 -size_t - - gn - = -vtf -( -fm -, - -); - -59 -va_d -( - -); - -61  - gn -; - -64 -size_t - - gShl -:: -tn -(cڡ * -fm -, ...) { - -65 -va_li - - g -; - -67 -va_t -( - -, -fm -); - -68 -size_t - - gn - = -vtf -( -fm -, - -); - -69 -va_d -( - -); - -71 - gn - + -n -(); - -72  - gn -; - -75 -size_t - - gShl -:: -tn -(cڡ -__FshSgHr - * -fm -, ...) { - -76 -va_li - - g -; - -78 -va_t -( - -, -fm -); - -79 -size_t - - gn - = -vtf -( -fm -, - -); - -80 -va_d -( - -); - -82 - gn - + -n -(); - -83  - gn -; - -86 -size_t - - gShl -:: -vtf -(cڡ * -fm -, -va_li - - -) { - -87 -size_t - - gt_n - = 0; - -88 -va_li - - gcy_ -; - -90 -va_cy -( -cy_ -, - -); - -92  - gfm_n - = :: -vtf -( -nuαr -, 0, -fm -, - -); - -93 i( - gfm_n - > 0) { - -94 - gd -:: -rg - -xt -( -ic_ -< -d -::rg:: -size_ty ->( -fm_n -), '\0'); - -96 :: -vtf -(& -xt -[0],ext. -cy -(+ 1, -fm -, -cy_ -); - -97 - gt_n - = -t -( -xt -); - -100 -va_d -( -cy_ -); - -101  - gt_n -; - -104 -size_t - - gShl -:: -vtf -(cڡ -__FshSgHr - * -fm -, -va_li - - -) { - -105 -size_t - - gt_n - = 0; - -106 -va_li - - gcy_ -; - -108 -va_cy -( -cy_ -, - -); - -110  - gfm_n - = :: -vtf_P -( -nuαr -, 0, -t_ -< -PGM_P ->( -fm -), - -); - -111 i( - gfm_n - > 0) { - -112 - gd -:: -rg - -xt -( -ic_ -< -d -::rg:: -size_ty ->( -fm_n -), '\0'); - -114 :: -vtf_P -(& -xt -[0],ext. -cy -(+ 1, -t_ -< -PGM_P ->( -fm -), -cy_ -); - -115 - gt_n - = -t -( -xt -); - -118 -va_d -( -cy_ -); - -119  - gt_n -; - -123  - gShl -:: -t_l_avaab_commds -() { - -136 -d -:: -li - -s܋d_cmds -; - -138 - gcommds_ --> -f_ch_avaab_commd -(* -this -, [&]( -d -:: -ve - & -me -, std::ve & -gumts -) { - -139 -CommdLe - -commd_le -{ -me -, -gumts -}; - -140 -commd_le -. -es_l_ms -( -me -. -size -()); - -141 -me -. -r -(); - -142 -gumts -. -r -(); - -143 -s܋d_cmds -. -push_back -( -commd_le -. -to_rg -( -maximum_commd_le_ngth -())); - -146 - gs܋d_cmds -. -st -(); - -147 aut& - g - : -s܋d_cmds -) { - -149 -n -( - -); - -153  - gShl -:: -a_cut_le -() { - -154 -t -( -F -("\033[0G\033[K")); - -157  - gShl -:: -a_chas -( -size_t - -cou -) { - -158 -t -( -d -:: -rg -( -cou -, '\x08')); - -159 -t -( -F -("\033[K")); - - @lib/uuid-console/src/shell_prompt.cpp - -19  - ~ - -21  - ~ - -23 -mea - - guuid - { - -25 -mea - - gcse - { - -27  - gShl -:: -diy_br -() { - -30 -d -:: -rg - -Shl -:: -home_xt -() { - -31  -d -:: -rg -{}; - -34 - gd -:: -rg - -Shl -:: -cڋxt_xt -() { - -35  -d -:: -rg -{}; - -38 - gd -:: -rg - -Shl -:: -om_efix -() { - -39  -d -:: -rg -{}; - -42 - gd -:: -rg - -Shl -:: -om_suffix -() { - -43  -d -:: -rg -{'$'}; - -46  - gShl -:: -d_of_smissi -() { - -47 i( -id_timeout_ - > 0) { - -48 -n -(); - -49 - -(); - -53  - gShl -:: -diy_om -() { - -54  -mode_ -) { - -55  -Mode -:: -DELAY -: - -56  -Mode -:: -BLOCKING -: - -59  - gMode -:: -PASSWORD -: - -60 -t -( -t_ -< -Shl -:: -PasswdDa - *>( -mode_da_ -. -g -())-> -sswd_om_ -); - -63  - gMode -:: -NORMAL -: - -64 -d -:: -rg - -home - = -home_xt -(); - -65 - gd -:: -rg - -cڋxt - = -cڋxt_xt -(); - -67 -t -( -om_efix -()); - -69 i(! - ghome -. -emy -()) { - -70 -t -( -COLOR_BRIGHT_GREEN -); - -71 -t -( -COLOR_BOLD_ON -); - -72 -t -( -home -); - -73 -t -( -COLOR_RESET -); - -74 -t -(':'); - -76 i(! - gcڋxt -. -emy -()) { - -77 -t -( -COLOR_BRIGHT_BLUE -); - -78 -t -( -COLOR_BOLD_ON -); - -79 -t -( -cڋxt -); - -80 -t -( -COLOR_RESET -); - -83 -t -( -om_suffix -()); - -84 -t -(' '); - -85 -t -( -le_bufr_ -); - -86 - gom_diyed_ - = -ue -; - - @lib/uuid-console/src/shell_stream.cpp - -19  - ~ - -21  - ~ - -23 -mea - - guuid - { - -25 -mea - - gcse - { - -27  - gShl -:: -avaab -() { - -28 i( -mode_ - = -Mode -:: -BLOCKING -) { - -29 aut* -blockg_da - = -t_ -< -Shl -:: -BlockgDa - *>( -mode_da_ -. -g -()); - -31 i(! -avaab_ch -()) { - -35 i( - gblockg_da --> - gcsume_le_ed_ -) { - -36 cڡ  - gput - = -ek_e_ch -(); - -38 i( - gput - >= 0) { - -39 cڡ  -c - = -put -; - -41 - gblockg_da --> - gcsume_le_ed_ - = -l -; - -43 i( - gevious_ - ='\x0D' && -c - == '\x0A') { - -45 -ad_e_ch -(); - -46 - gevious_ - = -c -; - -47  -avaab -(); - -62  - gShl -:: -ad -() { - -63 i( -mode_ - = -Mode -:: -BLOCKING -) { - -64 aut* -blockg_da - = -t_ -< -Shl -:: -BlockgDa - *>( -mode_da_ -. -g -()); - -65 cڡ  - gput - = -ad_e_ch -(); - -67 i( - gput - >= 0) { - -68 cڡ  -c - = -put -; - -70 i( - gblockg_da --> - gcsume_le_ed_ -) { - -71 - gblockg_da --> - gcsume_le_ed_ - = -l -; - -73 i( - gevious_ - ='\x0D' && -c - == '\x0A') { - -75 -evious_ - = -c -; - -76  -ad -(); - -81 - gevious_ - = -c -; - -84  - gput -; - -90  - gShl -:: -ek -() { - -91 i( -mode_ - = -Mode -:: -BLOCKING -) { - -92 aut* -blockg_da - = -t_ -< -Shl -:: -BlockgDa - *>( -mode_da_ -. -g -()); - -93 cڡ  - gput - = -ek_e_ch -(); - -95 i( - gblockg_da --> - gcsume_le_ed_ -) { - -96 i( - gput - >= 0) { - -97 cڡ  -c - = -put -; - -99 - gblockg_da --> - gcsume_le_ed_ - = -l -; - -101 i( - gevious_ - ='\x0D' && -c - == '\x0A') { - -103 -ad_e_ch -(); - -104 - gevious_ - = -c -; - -105  -ek -(); - -110  - gput -; - -116  - gShl -:: -ush -() { - - @lib/uuid-console/src/stream_console.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -24  - ~ - -26 -mea - - guuid - { - -28 -mea - - gcse - { - -30 - gSmCse -:: -SmCse -( -Sm - & -am -) - -31 : -Shl -() - -32 , -am_ -( -am -) { - -36 - gSmCse -:: -SmCse -( -d -:: -shed_r -< -Commds -> -commds -, -Sm - & -am -,  -cڋxt -,  -ags -) - -37 : -Shl -( -d -:: -move -( -commds -), -cڋxt -, -ags -) - -38 , -am_ -( -am -) { - -41 -size_t - - gSmCse -:: -wre -( -ut8_t - -da -) { - -42  -am_ -. -wre -( -da -); - -45 -size_t - - gSmCse -:: -wre -(cڡ -ut8_t - * -bufr -, size_ -size -) { - -46  - gam_ -. -wre -( -bufr -, -size -); - -49 -bo - - gSmCse -:: -avaab_ch -() { - -50  -am_ -. -avaab -() > 0; - -53  - gSmCse -:: -ad_e_ch -() { - -54  -am_ -. -ad -(); - -57  - gSmCse -:: -ek_e_ch -() { - -58  -am_ -. -ek -(); - - @lib/uuid-console/src/uuid/console.h - -19 #ide -UUID_CONSOLE_H_ - - -20  - #UUID_CONSOLE_H_ - - - ) - -22  - ~ - -24  - ~ - -25  - ~ - -26  - ~ - -27  - ~ - -28  - ~ - -29  - ~
  • - -30  - ~ - -31  - ~ - -32  - ~ - -33  - ~ - -34  - ~ - -36  - ~ - -37  - ~ - -39 -mea - - guuid - { - -47 -mea - - gcse - { - -49 -ass - - gCommds -; - -62 -ass - - gShl - : -public - -d -:: -ab_shed_om_this -< -Shl ->,ubli - guuid -:: -log -:: -Hdr -, - gpublic - :: -Sm - { - -63 -public -: - -64  -cڡex - -size_t - -MAX_COMMAND_LINE_LENGTH - = 80; - -65  -cڡex - -size_t - - gMAX_LOG_MESSAGES - = 20; - -78 -usg - - gsswd_funi - = -d -:: -funi -<( -Shl - & -shl -, -bo - - gcomed -, cڡ - gd -:: -rg - & -sswd -)>; - -85 -usg - - gday_funi - = -d -:: -funi -<( -Shl - & -shl -)>; - -96 -usg - - gblockg_funi - = -d -:: -funi -< -bo -( -Shl - & -shl -, bo - -)>; - -98 ~ -Shl -( - govride -; - -108  -lo_l -(); - -124  -t -(); - -133  -lo_e -(); - -141 -bo - -rušg -() const; - -153  - -(); - -161  -le - cڡ - guuid -:: -log -:: -Logg - & -logg -() { - -162  -logg_ -; - -174 -vtu -  - gݔ -<<( - gd -:: -shed_r -< -uuid -:: -log -:: -Mesge -> -mesge - -ovride -; - -184 - guuid -:: -log -:: -Lev - -log_v -() const; - -195  -log_v -( -uuid -:: -log -:: -Lev - -v -); - -203 -size_t - -maximum_commd_le_ngth -() const; - -212  -maximum_commd_le_ngth -( -size_t - -ngth -); - -219 -size_t - -maximum_log_mesges -() const; - -228  -maximum_log_mesges -( -size_t - -cou -); - -235  -id_timeout -() const; - -244  -id_timeout -( -timeout -); - -254 -le -  -cڋxt -() const { - -255 i(! - gcڋxt_ -. -emy -()) { - -256  - gcڋxt_ -. -back -(); - -269 -le -  -r_cڋxt -( -cڋxt -) { - -270 - gcڋxt_ -. -ema_back -( -cڋxt -); - -281 -vtu - -bo - -ex_cڋxt -(); - -292 -le -  -add_ags -( -ags -) { - -293 - gags_ - | -ags -; - -306 -le - -bo - -has_ags -( -ags -) const { - -307  ( - gags_ - & - gags -= -ags -; - -318 -le -  -move_ags -( -ags -) { - -319 - gags_ - &~ -ags -; - -337  -r_sswd -(cڡ -__FshSgHr - * -om -, -sswd_funi - -funi -); - -352  -day_f -( -ms -, -day_funi - -funi -); - -371  -day_u -( -ut64_t - -ms -, -day_funi - -funi -); - -385  -block_wh -( -blockg_funi - -funi -); - -396  -avaab -( -f - - govride -; - -406  -ad -( -f - - govride -; - -417  -ek -( -f - - govride -; - -426 -size_t - -wre -( -ut8_t - -da - - govride - = 0; - -435 -size_t - -wre -(cڡ -ut8_t - * -bufr -, size_ -size - - govride - = 0; - -446  -ush -( - govride -; - -448 - gusg - :: -Prt -:: -t -; - -456 -size_t - -t -(cڡ -d -:: -rg - & -da -); - -457 - gusg - :: -Prt -:: -n -; - -465 -size_t - -n -(cڡ -d -:: -rg - & -da -); - -474 -size_t - -tf -(cڡ * -fm -, ...) ; - -483 -size_t - -tf -(cڡ -__FshSgHr - * -fm -, ...) ; - -492 -size_t - -tn -(cڡ * -fm -, ...) ; - -501 -size_t - -tn -(cڡ -__FshSgHr - * -fm -, ...) ; - -508  -t_l_avaab_commds -(); - -522  -voke_commd -(cڡ -d -:: -rg - & -le -); - -524 - geed -: - -535 -Shl -() = ; - -547 -Shl -( -d -:: -shed_r -< -Commds -> -commds -,  -cڋxt - = 0,  -ags - = 0); - -554 -vtu -  -a_cut_le -(); - -561 -vtu -  -a_chas -( -size_t - -cou -); - -569 -vtu -  -d -(); - -576 -vtu -  -diy_br -(); - -586 -vtu - - gd -:: -rg - -home_xt -(); - -597 -vtu - - gd -:: -rg - -cڋxt_xt -(); - -608 -vtu - - gd -:: -rg - -om_efix -(); - -618 -vtu - - gd -:: -rg - -om_suffix -(); - -631 -vtu -  -d_of_smissi -(); - -638 -vtu -  -ݳd -(); - -640 - give -: - -646 as - cMode - : -ut8_t - { - -647 -NORMAL -, - -648 - gPASSWORD -, - -649 - gDELAY -, - -650 - gBLOCKING -, - -658 as - cModeDa - { - -659 - gpublic -: - -660 -vtu - ~ -ModeDa -() = ; - -662 - geed -: - -663 -ModeDa -() = ; - -671 as - cPasswdDa - : -public - -ModeDa - { - -672 -public -: - -684 -PasswdDa -(cڡ -__FshSgHr - * -sswd_om -, -sswd_funi - &&assword_function); - -685 ~ -PasswdDa -( - govride - = ; - -687 cڡ -__FshSgHr - * - gsswd_om_ -; - -688 -sswd_funi - - gsswd_funi_ -; - -696 as - cDayDa - : -public - -ModeDa - { - -697 -public -: - -708 -DayDa -( -ut64_t - -day_time -, -day_funi - && delay_function); - -709 ~ -DayDa -( - govride - = ; - -711 -ut64_t - - gday_time_ -; - -712 -day_funi - - gday_funi_ -; - -720 as - cBlockgDa - : -public - -ModeDa - { - -721 -public -: - -730 -exic - -BlockgDa -( -blockg_funi - && blocking_function); - -731 ~ -BlockgDa -( - govride - = ; - -733 -blockg_funi - - gblockg_funi_ -; - -734 -bo - - gcsume_le_ed_ - = -ue -; - -735 -bo - - g_ - = -l -; - -747 as - cQueuedLogMesge - { - -748 - gpublic -: - -756 -QueuedLogMesge -( -id -, -d -:: -shed_r -< -uuid -:: -log -:: -Mesge -> && -cڋ -); - -757 ~ -QueuedLogMesge -() = ; - -759 cڡ  - gid_ -; - -760 cڡ - gd -:: -shed_r - -cڋ_ -; - -763 -Shl -(cڡ Sh& -de -; - -764 - gShl - & - gݔ -=(cڡ -Shl - & -de -; - -773  -lo_nm -(); - -781  -lo_sswd -(); - -789  -lo_day -(); - -797  -lo_blockg -(); - -805 -vtu - -bo - -avaab_ch -() = 0; - -812 -vtu -  -ad_e_ch -() = 0; - -820 -vtu -  -ek_e_ch -() = 0; - -831  -diy_om -(); - -837  -ouut_logs -(); - -843  -oss_commd -(); - -849  -oss_comi -(); - -859  -oss_sswd -( -bo - -comed -); - -866  -check_id_timeout -(); - -875  -de_bufr_wd -( -bo - -diy -); - -885 -size_t - -vtf -(cڡ * -fm -, -va_li - - -); - -894 -size_t - -vtf -(cڡ -__FshSgHr - * -fm -, -va_li - - -); - -896 cڡ - guuid -:: -log -:: -Logg - -logg_ -; - -897  - gd -:: -t -< -d -:: -shed_r -< -Shl ->> -shls_ -; - -899 - gd -:: -shed_r -< -Commds -> -commds_ -; - -900 - gd -:: -deque -<> -cڋxt_ -; - -901  - gags_ - = 0; - -902  - glog_mesge_id_ - = 0; - -903 - gd -:: -li -< -QueuedLogMesge -> -log_mesges_ -; - -904 -size_t - - gmaximum_log_mesges_ - = -MAX_LOG_MESSAGES -; - -905 - gd -:: -rg - -le_bufr_ -; - -906 -size_t - - gmaximum_commd_le_ngth_ - = -MAX_COMMAND_LINE_LENGTH -; - -907  - gevious_ - = 0; - -908 -Mode - - gmode_ - = Mode:: -NORMAL -; - -909 - gd -:: -unique_r -< -ModeDa -> -mode_da_ - = -nuαr -; - -910 -bo - - gݳd_ - = -l -; - -911 -bo - - gom_diyed_ - = -l -; - -912 -ut64_t - - gid_time_ - = 0; - -913 -ut64_t - - gid_timeout_ - = 0; - -922 as - cCommdLe - { - -923 - gpublic -: - -929 -CommdLe -() = ; - -938 -exic - -CommdLe -(cڡ -d -:: -rg - & -le -); - -947 -exic - -CommdLe -( -d -:: -liz_li -> -gumts -); - -949 ~ -CommdLe -() = ; - -951 #ifde -UNIT_TEST - - -952 -CommdLe -(CommandLine &&) = ; - -953 - gCommdLe - & - gݔ -=( -CommdLe - &&) = ; - -954 -CommdLe -(cڡ CommdL& -__ibu__ -(( -dd -)) = ; - -955 - gCommdLe - & - gݔ -=(cڡ -CommdLe - & -__ibu__ -(( -dd -)) = ; - -968 - gd -:: -rg - -to_rg -( -size_t - -rve - = -Shl -:: -MAX_COMMAND_LINE_LENGTH -) const; - -978 -le - -size_t - -tٮ_size -() const { - -979  - gms_ -. -size -(+ ( - gag_a - ? 1 : 0); - -988  -t -(); - -998 -le -  -es_l_ms -() { - -999 - ges_ms_ - = -d -:: -numic_lims -< -size_t ->:: -max -(); - -1012 -le -  -es_l_ms -() { - -1013 - ges_ms_ - = -ms_ -. -size -(); - -1026 -le -  -es_l_ms -( -size_t - -cou -) { - -1027 - ges_ms_ - = -cou -; - -1036 -le - - gd -:: -ve -< -d -:: -rg -> & -ݔ -*() { - -1037  -ms_ -; - -1045 -le - cڡ - gd -:: -ve -< -d -:: -rg -> & -ݔ -*() const { - -1046  -ms_ -; - -1054 -le - - gd -:: -ve -< -d -:: -rg -> * -ݔ -->() { - -1055  & -ms_ -; - -1063 -le - cڡ - gd -:: -ve -< -d -:: -rg -> * -ݔ -->() const { - -1064  & -ms_ -; - -1075 -nd - -le - -bo - - gݔ -==(cڡ -CommdLe - & -lhs -, cڡ - gCommdLe - & - grhs -) { - -1076  ( - glhs -. - gag_a - = -rhs -. -ag_a -&& ( -lhs -. -ms_ - ==hs.parameters_); - -1086 -nd - -le - -bo - - gݔ -!=(cڡ -CommdLe - & -lhs -, cڡ - gCommdLe - & - grhs -) { - -1087  !( - glhs - = -rhs -); - -1090 -bo - - gag_a - = -l -; - -1092 - give -: - -1093 -d -:: -ve - -ms_ -; - -1094 -size_t - - ges_ms_ - = -d -:: -numic_lims -:: -max -(); - -1104 as - cCommds - { - -1105 - gpublic -: - -1113  - sComi - { - -1114 -d -:: -li -< -CommdLe -> -hp -; - -1115 -CommdLe - - gamt -; - -1123  - sExecuti - { - -1124 cڡ -__FshSgHr - * - gr -; - -1134 -usg - - gcommd_funi - = -d -:: -funi -<( -Shl - & -shl -, - gd -:: -ve - & -gumts -)>; - -1150 -usg - - ggumt_comi_funi - = -d -:: -funi -( -Shl - & -shl -, cڡ - gd -::ve & -gumts -)>; - -1160 -usg - - gy_funi - = -d -:: -funi -<(d:: -ve - & -me -, - gd -::ve & -gumts -)>; - -1169 -Commds -() = ; - -1170 ~ -Commds -() = ; - -1185  -add_commd -(cڡ -ash_rg_ve - & -me -, -commd_funi - -funi -); - -1202  -add_commd -(cڡ -ash_rg_ve - & -me -, cڡ fsh_rg_ve & -gumts -, -commd_funi - -funi -); - -1221  -add_commd -(cڡ -ash_rg_ve - & -me -, cڡ fsh_rg_ve & -gumts -, -commd_funi - -funi -, -gumt_comi_funi - -g_funi -); - -1236  -add_commd -( -cڋxt -,  -ags -, cڡ -ash_rg_ve - & -me -, -commd_funi - -funi -); - -1254  -add_commd -( -cڋxt -,  -ags -, cڡ -ash_rg_ve - & -me -, cڡ fsh_rg_ve & -gumts -, -commd_funi - -funi -); - -1274  -add_commd -( -cڋxt -, - -1275  -ags -, - -1276 cڡ -ash_rg_ve - & -me -, - -1277 cڡ -ash_rg_ve - & -gumts -, - -1278 -commd_funi - -funi -, - -1279 -gumt_comi_funi - -g_funi -); - -1291 -Executi - -execu_commd -( -Shl - & -shl -, -CommdLe - && -commd_le -); - -1303 -Comi - -come_commd -( -Shl - & -shl -, cڡ -CommdLe - & -commd_le -); - -1313  -f_ch_avaab_commd -( -Shl - & -shl -, -y_funi - -f -) const; - -1315  -move_cڋxt_commds -( -cڋxt -); - -1316  -move_l_commds -(); - -1318 - give -: - -1323 as - cCommd - { - -1324 -public -: - -1341 -Commd -( -ags -, - -1342 cڡ -ash_rg_ve - -me -, - -1343 cڡ -ash_rg_ve - -gumts -, - -1344 -commd_funi - -funi -, - -1345 -gumt_comi_funi - -g_funi -); - -1346 ~ -Commd -(); - -1356 -size_t - -mimum_gumts -() const; - -1364 -le - -size_t - -maximum_gumts -() const { - -1365  - ggumts_ -. -size -(); - -1368  - gags_ -; - -1369 cڡ -ash_rg_ve - - gme_ -; - -1370 cڡ -ash_rg_ve - - ggumts_ -; - -1371 -commd_funi - - gfuni_ -; - -1372 -gumt_comi_funi - - gg_funi_ -; - -1374 - give -: - -1375 -Commd -(cڡ Commd & -de -; - -1376 - gCommd - & - gݔ -=(cڡ -Commd - & -de -; - -1385  - sMch - { - -1386 - gd -:: -muim -< -size_t -, cڡ - gCommd - *> - gexa -; - -1387 - gd -:: -muim -< -size_t -, cڡ - gCommd - *> - gl -; - -1399 -Mch - -fd_commd -( -Shl - & -shl -, cڡ -CommdLe - & -commd_le -); - -1412  -bo - -fd_lge_comm_efix -(cڡ -d -:: -muim -< -size_t -, cڡ -Commd - *> & -commds -, std:: -ve - & -lge_me -); - -1421  - gd -:: -rg - -fd_lge_comm_efix -(cڡ -d -:: -ve - & -gumts -); - -1423 - gd -:: -muim -<, - gCommd -> - gcommds_ -; - -1435 as - cSmCse - : -vtu - -public - -Shl - { - -1436 -public -: - -1449 -SmCse -( -d -:: -shed_r -< -Commds -> -commds -, -Sm - & -am -,  -cڋxt - = 0,  -ags - = 0); - -1450 ~ -SmCse -( - govride - = ; - -1459 -size_t - -wre -( -ut8_t - -da - - govride -; - -1468 -size_t - -wre -(cڡ -ut8_t - * -bufr -, size_ -size - - govride -; - -1470 - geed -: - -1481 -exic - -SmCse -( -Sm - & -am -); - -1483 - give -: - -1484 -SmCse -(cڡ SmCsސ& -de -; - -1485 - gSmCse - & - gݔ -=(cڡ -SmCse - & -de -; - -1493 -bo - -avaab_ch -( - govride -; - -1500  -ad_e_ch -( - govride -; - -1508  -ek_e_ch -( - govride -; - -1510 - gSm - & - gam_ -; - - @lib/uuid-log/src/format_level_char.cpp - -19  - ~ - -21 -mea - - guuid - { - -23 -mea - - glog - { - -25  -fm_v_ch -( -Lev - -v -) { - -26 -cڡex -  - glog_v_chs -[() -Lev -:: -ALL - - ()Lev:: -OFF - + 1] = {' ', 'P', 'A', 'C', 'E', 'W', 'N', 'I', 'D', 'T', ' '}; - -27  - glog_v_chs -[() -v - + 1]; - - @lib/uuid-log/src/format_level_lowercase.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 -mea - - glog - { - -29  -cڡex - cڡ * -pr_v_low_off - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "off"; - -30  -cڡex - cڡ * -pr_v_low_emg - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "emerg"; - -31  -cڡex - cڡ * -pr_v_low_ - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "crit"; - -32  -cڡex - cڡ * -pr_v_low_t - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "alert"; - -33  -cڡex - cڡ * -pr_v_low_r - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "err"; - -34  -cڡex - cڡ * -pr_v_low_wng - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "warning"; - -35  -cڡex - cڡ * -pr_v_low_ni - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "notice"; - -36  -cڡex - cڡ * -pr_v_low_fo - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "info"; - -37  -cڡex - cڡ * -pr_v_low_debug - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "debug"; - -38  -cڡex - cڡ * -pr_v_low_a - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "trace"; - -39  -cڡex - cڡ * -pr_v_low_l - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "all"; - -41 cڡ -__FshSgHr - * - glog_v_low -[() -Lev -:: -ALL - - ()Lev:: -OFF - + 1] -__ibu__ -(( -__igd__ -(()))) - -42 -PROGMEM - = { -t_ -( -pr_v_low_off -), - -43 -t_ -( -pr_v_low_emg -), - -44 -t_ -( -pr_v_low_ -), - -45 -t_ -( -pr_v_low_t -), - -46 -t_ -( -pr_v_low_r -), - -47 -t_ -( -pr_v_low_wng -), - -48 -t_ -( -pr_v_low_ni -), - -49 -t_ -( -pr_v_low_fo -), - -50 -t_ -( -pr_v_low_debug -), - -51 -t_ -( -pr_v_low_a -), - -52 -t_ -( -pr_v_low_l -)}; - -54 cڡ -__FshSgHr - * -fm_v_low -( -Lev - -v -) { - -55  - glog_v_low -[() -v - + 1]; - - @lib/uuid-log/src/format_level_uppercase.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 -mea - - glog - { - -29  -cڡex - cڡ * -pr_v_u_off - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "OFF"; - -30  -cڡex - cڡ * -pr_v_u_emg - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "EMERG"; - -31  -cڡex - cڡ * -pr_v_u_ - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "CRIT"; - -32  -cڡex - cڡ * -pr_v_u_t - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "ALERT"; - -33  -cڡex - cڡ * -pr_v_u_r - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "ERR"; - -34  -cڡex - cڡ * -pr_v_u_wng - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "WARNING"; - -35  -cڡex - cڡ * -pr_v_u_ni - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "NOTICE"; - -36  -cڡex - cڡ * -pr_v_u_fo - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "INFO"; - -37  -cڡex - cڡ * -pr_v_u_debug - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "DEBUG"; - -38  -cڡex - cڡ * -pr_v_u_a - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "TRACE"; - -39  -cڡex - cڡ * -pr_v_u_l - -__ibu__ -(( -__igd__ -(())) - gPROGMEM - = "ALL"; - -41 cڡ -__FshSgHr - * - glog_v_u -[() -Lev -:: -ALL - - ()Lev:: -OFF - + 1] -__ibu__ -(( -__igd__ -(()))) - -42 -PROGMEM - = { -t_ -( -pr_v_u_off -), - -43 -t_ -( -pr_v_u_emg -), - -44 -t_ -( -pr_v_u_ -), - -45 -t_ -( -pr_v_u_t -), - -46 -t_ -( -pr_v_u_r -), - -47 -t_ -( -pr_v_u_wng -), - -48 -t_ -( -pr_v_u_ni -), - -49 -t_ -( -pr_v_u_fo -), - -50 -t_ -( -pr_v_u_debug -), - -51 -t_ -( -pr_v_u_a -), - -52 -t_ -( -pr_v_u_l -)}; - -54 cڡ -__FshSgHr - * -fm_v_u -( -Lev - -v -) { - -55  - glog_v_u -[() -v - + 1]; - - @lib/uuid-log/src/format_timestamp_ms.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -24  - ~ - -26 -mea - - guuid - { - -28 -mea - - glog - { - -30 - gd -:: -rg - -fm_timeamp_ms -( -ut64_t - -timeamp_ms -,  -days_width -) { - -31  - gdays -; - -32  - ghours -, - gmus -, - gcds -, - gmlicds -; - -34 - gdays - = -timeamp_ms - / 86400000UL; - -35 - gtimeamp_ms - %= 86400000UL; - -37 - ghours - = -timeamp_ms - / 3600000UL; - -38 - gtimeamp_ms - %= 3600000UL; - -40 - gmus - = -timeamp_ms - / 60000UL; - -41 - gtimeamp_ms - %= 60000UL; - -43 - gcds - = -timeamp_ms - / 1000UL; - -44 - gtimeamp_ms - %= 1000UL; - -46 - gmlicds - = -timeamp_ms -; - -48 - gd -:: -ve -<> -xt -(10 + 1 + 2 + 1 + 2 + 1 + 2 + 1 + 3 + 1); - -50 -tf_P -( -xt -. -da -(),ext. -size -(), -PSTR -("%0*lu+%02u:%02u:%02u.%03u"), -d -:: -m -( -days_width -, 10U), -days -, -hours -, -mus -, -cds -, -mlicds -); - -52  - gxt -. -da -(); - - @lib/uuid-log/src/levels.cpp - -19  - ~ - -21  - ~ - -23 -mea - - guuid - { - -25 -mea - - glog - { - -27 - gd -:: -ve -< -Lev -> -vs -() { - -28  { -Lev -:: -OFF -, - -29 - gLev -:: -EMERG -, - -30 - gLev -:: -ALERT -, - -31 - gLev -:: -CRIT -, - -32 - gLev -:: -ERR -, - -33 - gLev -:: -WARNING -, - -34 - gLev -:: -NOTICE -, - -35 - gLev -:: -INFO -, - -36 - gLev -:: -DEBUG -, - -37 - gLev -:: -TRACE -, - -38 - gLev -:: -ALL -}; - - @lib/uuid-log/src/levels_lowercase.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 -mea - - glog - { - -29 - gd -:: -ve -< -d -:: -rg -> -vs_low -() { - -30  { -uuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -OFF -)), - -31 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -EMERG -)), - -32 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -ALERT -)), - -33 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -CRIT -)), - -34 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -ERR -)), - -35 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -WARNING -)), - -36 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -NOTICE -)), - -37 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -INFO -)), - -38 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -DEBUG -)), - -39 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -TRACE -)), - -40 - guuid -:: -ad_ash_rg -( -fm_v_low -( -Lev -:: -ALL -))}; - - @lib/uuid-log/src/levels_uppercase.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 -mea - - glog - { - -29 - gd -:: -ve -< -d -:: -rg -> -vs_u -() { - -30  { -uuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -OFF -)), - -31 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -EMERG -)), - -32 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -ALERT -)), - -33 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -CRIT -)), - -34 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -ERR -)), - -35 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -WARNING -)), - -36 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -NOTICE -)), - -37 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -INFO -)), - -38 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -DEBUG -)), - -39 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -TRACE -)), - -40 - guuid -:: -ad_ash_rg -( -fm_v_u -( -Lev -:: -ALL -))}; - - @lib/uuid-log/src/log.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -24  - ~ - -25  - ~
  • - -26  - ~ - -27  - ~ - -28  - ~ - -29  - ~ - -30  - ~ - -32 -mea - - guuid - { - -34 -mea - - glog - { - -36 - gd -:: -m -< -Hdr - *, - gLev -> - gLogg -:: -hdrs_ -; - -37 -Lev - - gLogg -:: -v_ - = Lev:: -OFF -; - -39 - gMesge -:: -Mesge -( -ut64_t - -uime_ms -, -Lev - -v -, -Facy - -cy -, cڡ -__FshSgHr - * -me -, cڡ -d -:: -rg - && -xt -) - -40 : -uime_ms -(uptime_ms) - -41 , -v -(level) - -42 , -cy -(facility) - -43 , -me -(name) - -44 , -xt -( -d -:: -move -(text)) { - -47 -Logg -::Logg(cڡ -__FshSgHr - * -me -, -Facy - -cy -) - -48 : -me_ -( -me -) - -49 , -cy_ -( -cy -){ - -53  - gLogg -:: -gi_hdr -( -Hdr - * -hdr -, -Lev - -v -) { - -54 - ghdrs_ -[ -hdr -] = -v -; - -55 -esh_log_v -(); - -58  - gLogg -:: -uegi_hdr -( -Hdr - * -hdr -) { - -59 -hdrs_ -. -a -( -hdr -); - -60 -esh_log_v -(); - -63 -Lev - - gLogg -:: -g_log_v -(cڡ -Hdr - * -hdr -) { - -64 cڡut -v - = -hdrs_ -. -fd -( -cڡ_ -< -Hdr - *>( -hdr -)); - -66 i( - gv - ! -hdrs_ -. -d -()) { - -67  -v --> -cd -; - -70  - gLev -:: -OFF -; - -73  - gLogg -:: -emg -(cڡ * -fm -, ...) const { - -74 i( -abd -( -Lev -:: -EMERG -)) { - -75 -va_li - - -; - -77 -va_t -( - -, -fm -); - -78 -vlog -( -Lev -:: -EMERG -, -fm -, - -); - -79 -va_d -( - -); - -83  - gLogg -:: -emg -(cڡ -__FshSgHr - * -fm -, ...) const { - -84 i( -abd -( -Lev -:: -EMERG -)) { - -85 -va_li - - -; - -87 -va_t -( - -, -fm -); - -88 -vlog -( -Lev -:: -EMERG -, -fm -, - -); - -89 -va_d -( - -); - -93  - gLogg -:: - -(cڡ * -fm -, ...) const { - -94 i( -abd -( -Lev -:: -CRIT -)) { - -95 -va_li - - -; - -97 -va_t -( - -, -fm -); - -98 -vlog -( -Lev -:: -CRIT -, -fm -, - -); - -99 -va_d -( - -); - -103  - gLogg -:: - -(cڡ -__FshSgHr - * -fm -, ...) const { - -104 i( -abd -( -Lev -:: -CRIT -)) { - -105 -va_li - - -; - -107 -va_t -( - -, -fm -); - -108 -vlog -( -Lev -:: -CRIT -, -fm -, - -); - -109 -va_d -( - -); - -113  - gLogg -:: -t -(cڡ * -fm -, ...) const { - -114 i( -abd -( -Lev -:: -ALERT -)) { - -115 -va_li - - -; - -117 -va_t -( - -, -fm -); - -118 -vlog -( -Lev -:: -ALERT -, -fm -, - -); - -119 -va_d -( - -); - -123  - gLogg -:: -t -(cڡ -__FshSgHr - * -fm -, ...) const { - -124 i( -abd -( -Lev -:: -ALERT -)) { - -125 -va_li - - -; - -127 -va_t -( - -, -fm -); - -128 -vlog -( -Lev -:: -ALERT -, -fm -, - -); - -129 -va_d -( - -); - -132  - gLogg -:: -r -(cڡ * -fm -, ...) const { - -133 i( -abd -( -Lev -:: -ERR -)) { - -134 -va_li - - -; - -136 -va_t -( - -, -fm -); - -137 -vlog -( -Lev -:: -ERR -, -fm -, - -); - -138 -va_d -( - -); - -142  - gLogg -:: -r -(cڡ -__FshSgHr - * -fm -, ...) const { - -143 i( -abd -( -Lev -:: -ERR -)) { - -144 -va_li - - -; - -146 -va_t -( - -, -fm -); - -147 -vlog -( -Lev -:: -ERR -, -fm -, - -); - -148 -va_d -( - -); - -152  - gLogg -:: -wng -(cڡ * -fm -, ...) const { - -153 i( -abd -( -Lev -:: -WARNING -)) { - -154 -va_li - - -; - -156 -va_t -( - -, -fm -); - -157 -vlog -( -Lev -:: -WARNING -, -fm -, - -); - -158 -va_d -( - -); - -162  - gLogg -:: -wng -(cڡ -__FshSgHr - * -fm -, ...) const { - -163 i( -abd -( -Lev -:: -WARNING -)) { - -164 -va_li - - -; - -166 -va_t -( - -, -fm -); - -167 -vlog -( -Lev -:: -WARNING -, -fm -, - -); - -168 -va_d -( - -); - -172  - gLogg -:: -ni -(cڡ * -fm -, ...) const { - -173 i( -abd -( -Lev -:: -NOTICE -)) { - -174 -va_li - - -; - -176 -va_t -( - -, -fm -); - -177 -vlog -( -Lev -:: -NOTICE -, -fm -, - -); - -178 -va_d -( - -); - -182  - gLogg -:: -ni -(cڡ -__FshSgHr - * -fm -, ...) const { - -183 i( -abd -( -Lev -:: -NOTICE -)) { - -184 -va_li - - -; - -186 -va_t -( - -, -fm -); - -187 -vlog -( -Lev -:: -NOTICE -, -fm -, - -); - -188 -va_d -( - -); - -192  - gLogg -:: -fo -(cڡ * -fm -, ...) const { - -193 i( -abd -( -Lev -:: -INFO -)) { - -194 -va_li - - -; - -196 -va_t -( - -, -fm -); - -197 -vlog -( -Lev -:: -INFO -, -fm -, - -); - -198 -va_d -( - -); - -202  - gLogg -:: -fo -(cڡ -__FshSgHr - * -fm -, ...) const { - -203 i( -abd -( -Lev -:: -INFO -)) { - -204 -va_li - - -; - -206 -va_t -( - -, -fm -); - -207 -vlog -( -Lev -:: -INFO -, -fm -, - -); - -208 -va_d -( - -); - -212  - gLogg -:: -debug -(cڡ * -fm -, ...) const { - -213 i( -abd -( -Lev -:: -DEBUG -)) { - -214 -va_li - - -; - -216 -va_t -( - -, -fm -); - -217 -vlog -( -Lev -:: -DEBUG -, -fm -, - -); - -218 -va_d -( - -); - -222  - gLogg -:: -debug -(cڡ -__FshSgHr - * -fm -, ...) const { - -223 i( -abd -( -Lev -:: -DEBUG -)) { - -224 -va_li - - -; - -226 -va_t -( - -, -fm -); - -227 -vlog -( -Lev -:: -DEBUG -, -fm -, - -); - -228 -va_d -( - -); - -232  - gLogg -:: -a -(cڡ * -fm -, ...) const { - -233 i( -abd -( -Lev -:: -TRACE -)) { - -234 -va_li - - -; - -236 -va_t -( - -, -fm -); - -237 -vlog -( -Lev -:: -TRACE -, -fm -, - -); - -238 -va_d -( - -); - -242  - gLogg -:: -a -(cڡ -__FshSgHr - * -fm -, ...) const { - -243 i( -abd -( -Lev -:: -TRACE -)) { - -244 -va_li - - -; - -246 -va_t -( - -, -fm -); - -247 -vlog -( -Lev -:: -TRACE -, -fm -, - -); - -248 -va_d -( - -); - -252  - gLogg -:: -log -( -Lev - -v -, -Facy - -cy -, cڡ * -fm -, ...) const { - -253 i( - gv - < - gLev -:: -EMERG -) { - -254 -v - = -Lev -:: -EMERG -; - -255 } i( - gv - > - gLev -:: -TRACE -) { - -256 -v - = -Lev -:: -TRACE -; - -259 i( -abd -( -v -)) { - -260 -va_li - - g -; - -262 -va_t -( - -, -fm -); - -263 -vlog -( -v -, -cy -, -fm -, - -); - -264 -va_d -( - -); - -268  - gLogg -:: -log -( -Lev - -v -, -Facy - -cy -, cڡ -__FshSgHr - * -fm -, ...) const { - -269 i( - gv - < - gLev -:: -EMERG -) { - -270 -v - = -Lev -:: -EMERG -; - -271 } i( - gv - > - gLev -:: -TRACE -) { - -272 -v - = -Lev -:: -TRACE -; - -275 i( -abd -( -v -)) { - -276 -va_li - - g -; - -278 -va_t -( - -, -fm -); - -279 -vlog -( -v -, -cy -, -fm -, - -); - -280 -va_d -( - -); - -284  - gLogg -:: -vlog -( -Lev - -v -, cڡ * -fm -, -va_li - - -) const { - -285 -vlog -( -v -, -cy_ -, -fm -, - -); - -288  - gLogg -:: -vlog -( -Lev - -v -, -Facy - -cy -, cڡ * -fm -, -va_li - - -) const { - -289 - gd -:: -ve -<> -xt -( -MAX_LOG_LENGTH - + 1); - -291 i( -vtf -( -xt -. -da -(),ext. -size -(), -fm -, - -) <= 0) { - -295 -dich -( -v -, -cy -, -xt -); - -298  - gLogg -:: -vlog -( -Lev - -v -, cڡ -__FshSgHr - * -fm -, -va_li - - -) const { - -299 -vlog -( -v -, -cy_ -, -fm -, - -); - -302  - gLogg -:: -vlog -( -Lev - -v -, -Facy - -cy -, cڡ -__FshSgHr - * -fm -, -va_li - - -) const { - -303 - gd -:: -ve -<> -xt -( -MAX_LOG_LENGTH - + 1); - -305 i( -vtf_P -( -xt -. -da -(),ext. -size -(), -t_ -< -PGM_P ->( -fm -), - -) <= 0) { - -309 -dich -( -v -, -cy -, -xt -); - -312  - gLogg -:: -dich -( -Lev - -v -, -Facy - -cy -, -d -:: -ve -<> & -xt -) const { - -313 -d -:: -shed_r -< -Mesge -> -mesge - = std:: -make_shed -( -g_uime_ms -(), - gv -, - gcy -, - gme_ -, - gxt -. -da -()); - -314 - gxt -. -size -(0); - -316 aut& - ghdr - : -hdrs_ -) { - -317 i( -v - < -hdr -. -cd -) { - -318 * -hdr -. -f - << -mesge -; - -323  - gLogg -:: -esh_log_v -() { - -324 -v_ - = -Lev -:: -OFF -; - -326 aut& - ghdr - : -hdrs_ -) { - -327 i( -v_ - < -hdr -. -cd -) { - -328 -v_ - = -hdr -. -cd -; - - @lib/uuid-log/src/parse_level_lowercase.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 -mea - - glog - { - -29 -bo - -r_v_low -(cڡ -d -:: -rg - & -me -, -Lev - & -v -) { - -30 aut - gvue - : -vs -()) { - -31 i(! -rcmp_P -( -me -. -c_r -(), -t_ -< -PGM_P ->( -fm_v_low -( -vue -)))) { - -32 - gv - = -vue -; - -33  - gue -; - -36  - gl -; - - @lib/uuid-log/src/parse_level_uppercase.cpp - -19  - ~ - -21  - ~ - -23  - ~ - -25 -mea - - guuid - { - -27 -mea - - glog - { - -29 -bo - -r_v_u -(cڡ -d -:: -rg - & -me -, -Lev - & -v -) { - -30 aut - gvue - : -vs -()) { - -31 i(! -rcmp_P -( -me -. -c_r -(), -t_ -< -PGM_P ->( -fm_v_u -( -vue -)))) { - -32 - gv - = -vue -; - -33  - gue -; - -36  - gl -; - - @lib/uuid-log/src/uuid/log.h - -19 #ide -UUID_LOG_H_ - - -20  - #UUID_LOG_H_ - - - ) - -22  - ~ - -24  - ~ - -25  - ~ - -26  - ~
  • - -27  - ~ - -28  - ~ - -29  - ~ - -30  - ~ - -32  - ~ - -34 -mea - - guuid - { - -49  - #COLOR_RESET - "\x1B[0m" - - ) - -50  - #COLOR_BLACK - "\x1B[0;30m" - - ) - -51  - #COLOR_RED - "\x1B[0;31m" - - ) - -52  - #COLOR_GREEN - "\x1B[0;32m" - - ) - -53  - #COLOR_YELLOW - "\x1B[0;33m" - - ) - -54  - #COLOR_BLUE - "\x1B[0;34m" - - ) - -55  - #COLOR_MAGENTA - "\x1B[0;35m" - - ) - -56  - #COLOR_CYAN - "\x1B[0;36m" - - ) - -57  - #COLOR_WHITE - "\x1B[0;37m" - - ) - -58  - #COLOR_BOLD_ON - "\x1B[1m" - - ) - -59  - #COLOR_BOLD_OFF - "\x1B[22m" - - ) - -60  - #COLOR_BRIGHT_BLACK - "\x1B[0;90m" - - ) - -61  - #COLOR_BRIGHT_RED - "\x1B[0;91m" - - ) - -62  - #COLOR_BRIGHT_GREEN - "\x1B[0;92m" - - ) - -63  - #COLOR_BRIGHT_YELLOW - "\x1B[0;99m" - - ) - -64  - #COLOR_BRIGHT_BLUE - "\x1B[0;94m" - - ) - -65  - #COLOR_BRIGHT_MAGENTA - "\x1B[0;95m" - - ) - -66  - #COLOR_BRIGHT_CYAN - "\x1B[0;96m" - - ) - -67  - #COLOR_BRIGHT_WHITE - "\x1B[0;97m" - - ) - -68  - #COLOR_UNDERLINE - "\x1B[4m" - - ) - -69  - #COLOR_BRIGHT_RED_BACKGROUND - "\x1B[41;1m" - - ) - -71 -mea - - glog - { - -78 - gLev - : -t8_t - { - -79 -OFF - = -1, - -80 - gEMERG - = 0, - -81 - gALERT -, - -82 - gCRIT -, - -83 - gERR -, - -84 - gWARNING -, - -85 - gNOTICE -, - -86 - gINFO -, - -87 - gDEBUG -, - -88 - gTRACE -, - -89 - gALL -, - -97 - gFacy - : -ut8_t - { - -98 -KERN - = 0, - -99 - gUSER -, - -100 - gMAIL -, - -101 - gDAEMON -, - -102 - gAUTH -, - -103 - gSYSLOG -, - -104 - gLPR -, - -105 - gNEWS -, - -106 - gUUCP -, - -107 - gCRON -, - -108 - gAUTHPRIV -, - -109 - gFTP -, - -110 - gNTP -, - -111 - gSECURITY -, - -112 - gCONSOLE -, - -113 - gCRON2 -, - -114 - gLOCAL0 -, - -115 - gLOCAL1 -, - -116 - gLOCAL2 -, - -117 - gLOCAL3 -, - -118 - gLOCAL4 -, - -119 - gLOCAL5 -, - -120 - gLOCAL6 -, - -121 - gLOCAL7 -, - -134 - gd -:: -rg - -fm_timeamp_ms -( -ut64_t - -timeamp_ms -,  -days_width - = 1); - -143 - gd -:: -ve -< -Lev -> -vs -(); - -155  -fm_v_ch -( -Lev - -v -); - -164 cڡ -__FshSgHr - * -fm_v_u -( -Lev - -v -); - -174 - gd -:: -ve -< -d -:: -rg -> -vs_u -(); - -184 -bo - -r_v_u -(cڡ -d -:: -rg - & -me -, -Lev - & -v -); - -193 cڡ -__FshSgHr - * -fm_v_low -( -Lev - -v -); - -203 - gd -:: -ve -< -d -:: -rg -> -vs_low -(); - -213 -bo - -r_v_low -(cڡ -d -:: -rg - & -me -, -Lev - & -v -); - -223  - sMesge - { - -234 -Mesge -( -ut64_t - -uime_ms -, -Lev - -v -, -Facy - -cy -, cڡ -__FshSgHr - * -me -, cڡ -d -:: -rg - && -xt -); - -235 ~ -Mesge -() = ; - -243 cڡ -ut64_t - - guime_ms -; - -250 cڡ -Lev - - gv -; - -257 cڡ -Facy - - gcy -; - -264 cڡ -__FshSgHr - * - gme -; - -274 cڡ - gd -:: -rg - -xt -; - -282 as - cHdr - { - -283 - gpublic -: - -284 -vtu - ~ -Hdr -() = ; - -299 -vtu -  - gݔ -<<( - gd -:: -shed_r -< -Mesge -> -mesge -) = 0; - -301 - geed -: - -302 -Hdr -() = ; - -310 as - cLogg - { - -311 - gpublic -: - -320  -cڡex - -size_t - -MAX_LOG_LENGTH - = 255; - -330 -Logg -(cڡ -__FshSgHr - * -me -, -Facy - -cy - = Facy:: -LOCAL0 -); - -331 ~ -Logg -() = ; - -346  -gi_hdr -( -Hdr - * -hdr -, -Lev - -v -); - -359  -uegi_hdr -( -Hdr - * -hdr -); - -373  -Lev - -g_log_v -(cڡ -Hdr - * -hdr -); - -383  -le - -bo - -abd -( -Lev - -v -) { - -384  - gv - < -v_ -; - -394  -emg -(cڡ * -fm -, ...) const ; - -402  -emg -(cڡ -__FshSgHr - * -fm -, ...) const ; - -411  -t -(cڡ * -fm -, ...) const ; - -419  -t -(cڡ -__FshSgHr - * -fm -, ...) const ; - -428  - -(cڡ * -fm -, ...) const ; - -436  - -(cڡ -__FshSgHr - * -fm -, ...) const ; - -445  -r -(cڡ * -fm -, ...) const ; - -453  -r -(cڡ -__FshSgHr - * -fm -, ...) const ; - -462  -wng -(cڡ * -fm -, ...) const ; - -470  -wng -(cڡ -__FshSgHr - * -fm -, ...) const ; - -479  -ni -(cڡ * -fm -, ...) const ; - -487  -ni -(cڡ -__FshSgHr - * -fm -, ...) const ; - -496  -fo -(cڡ * -fm -, ...) const ; - -503  -fo -(cڡ -__FshSgHr - * -fm -, ...) const ; - -512  -debug -(cڡ * -fm -, ...) const ; - -520  -debug -(cڡ -__FshSgHr - * -fm -, ...) const ; - -529  -a -(cڡ * -fm -, ...) const ; - -537  -a -(cڡ -__FshSgHr - * -fm -, ...) const ; - -548  -log -( -Lev - -v -, -Facy - -cy -, cڡ * -fm -, ...) const ; - -558  -log -( -Lev - -v -, -Facy - -cy -, cڡ -__FshSgHr - * -fm -, ...) const ; - -560 - give -: - -566  -esh_log_v -(); - -576  -vlog -( -Lev - -v -, cڡ * -fm -, -va_li - - -) const; - -585  -vlog -( -Lev - -v -, cڡ -__FshSgHr - * -fm -, -va_li - - -) const; - -596  -vlog -( -Lev - -v -, -Facy - -cy -, cڡ * -fm -, -va_li - - -) const; - -606  -vlog -( -Lev - -v -, -Facy - -cy -, cڡ -__FshSgHr - * -fm -, -va_li - - -) const; - -620  -dich -( -Lev - -v -, -Facy - -cy -, -d -:: -ve -<> & -xt -) const; - -622  - gd -:: -m -< -Hdr - *, - gLev -> - ghdrs_ -; - -623  -Lev - - gv_ -; - -625 cڡ -__FshSgHr - * - gme_ -; - -626 cڡ -Facy - - gcy_ -; - - @lib/uuid-syslog/src/syslog.cpp - -19  - ~"uuid/syog.h -" - -21  - ~ - -22 #ifde -ARDUINO_ARCH_ESP8266 - - -23  - ~ - -25  - ~ - -27  - ~ - -29 #ide -UUID_SYSLOG_HAVE_GETTIMEOFDAY - - -30 #i -defed -( -ARDUINO_ARCH_ESP8266 -|| defed( -ARDUINO_ARCH_ESP32 -) - -32  - #UUID_SYSLOG_HAVE_GETTIMEOFDAY - 1 - - ) - -36 #ide -UUID_SYSLOG_HAVE_GETTIMEOFDAY - - -37  - #UUID_SYSLOG_HAVE_GETTIMEOFDAY - 0 - - ) - -40 #ide -UUID_SYSLOG_HAVE_IPADDRESS_TYPE - - -41 #i -defed -( -ARDUINO_ARCH_ESP8266 -) - -42  - #UUID_SYSLOG_HAVE_IPADDRESS_TYPE - 1 - - ) - -46 #ide -UUID_SYSLOG_HAVE_IPADDRESS_TYPE - - -47  - #UUID_SYSLOG_HAVE_IPADDRESS_TYPE - 0 - - ) - -50 #ide -UUID_SYSLOG_ARP_CHECK - - -51 #i -defed -( -LWIP_VERSION_MAJOR -&& defed( -LWIP_IPV4 -) && LWIP_VERSION_MAJOR >= 2 && LWIP_IPV4 - -52  - #UUID_SYSLOG_ARP_CHECK - 1 - - ) - -56 #ide -UUID_SYSLOG_ARP_CHECK - - -57  - #UUID_SYSLOG_ARP_CHECK - 0 - - ) - -60 #ide -UUID_SYSLOG_NDP_CHECK - - -61 #i -defed -( -LWIP_VERSION_MAJOR -&& defed( -LWIP_IPV6 -) && LWIP_VERSION_MAJOR >= 2 && LWIP_IPV6 - -62  - #UUID_SYSLOG_NDP_CHECK - 1 - - ) - -66 #ide -UUID_SYSLOG_NDP_CHECK - - -67  - #UUID_SYSLOG_NDP_CHECK - 0 - - ) - -70 #i -UUID_SYSLOG_ARP_CHECK - - - -UUID_SYSLOG_NDP_CHECK - - -71  - ~ - -73 #i -UUID_SYSLOG_ARP_CHECK - - -74  - ~ - -75  - ~ - -77 #i -UUID_SYSLOG_NDP_CHECK - - -78  - ~ - -79  - ~ - -82  - ~ - -83  - ~
  • - -84  - ~ - -85  - ~ - -87  - ~ - -88  - ~ - -90 cڡ  - g__pr__logg_me -[] -__ibu__ -(( -__igd__ -(())) -PROGMEM - = "syslog"; - -92 -mea - -uuid - { - -94 -mea - -syog - { - -96 -uuid -:: -log -:: -Logg - -SyogSvi -:: -logg_ -{ - `FPSTR -( -__pr__logg_me -), uuid::log:: -Facy -:: -SYSLOG -}; - -97 -bo - -SyogSvi -:: -QueuedLogMesge -:: -time_good_ - = -l -; - -99 -SyogSvi -::~ - `SyogSvi -() { - -100 -uuid -:: -log -:: -Logg -:: - `uegi_hdr -( -this -); - -103  -SyogSvi -:: - `t -() { - -104 -uuid -:: -log -:: -Logg -:: - `gi_hdr -( -this -, uuid::log:: -Lev -:: -ALL -); - -107 -uuid -:: -log -:: -Lev - -SyogSvi -:: - `log_v -() const { - -108  -uuid -:: -log -:: -Logg -:: - `g_log_v -( -this -); - -111  -SyogSvi -:: - `move_queued_mesges -( -uuid -:: -log -:: -Lev - -v -) { - -112  -offt - = 0; - -114 aut - - = -log_mesges_ -. - `beg -(); i!log_mesges_. - `d -();) { - -115 i( - --> -cڋ_ --> -v - >evel) { - -116 -offt -++; - -117 - - = -log_mesges_ -. - `a -(it); - -119 - --> -id_ - - -offt -; - -120 - -++; - -124 -log_mesge_id_ - - -offt -; - -127  -SyogSvi -:: - `log_v -( -uuid -:: -log -:: -Lev - -v -) { - -128 i(! -d_ -) { - -129 - `move_queued_mesges -( -v -); - -132  -bo - -v_t - = -l -; - -133 -bo - -v_chged - = ! -v_t - || ( -v - ! - `log_v -()); - -134 -v_t - = -ue -; - -136 i( -v_chged - && -v - < -uuid -:: -log -:: -Lev -:: -NOTICE -) { - -137 -logg_ -. - `fo -( - `F -("Logev s%S"), -uuid -:: -log -:: - `fm_v_u -( -v -)); - -139 -uuid -:: -log -:: -Logg -:: - `gi_hdr -( -this -, -v -); - -140 i( -v_chged - && -v - > -uuid -:: -log -:: -Lev -:: -NOTICE -) { - -141 -logg_ -. - `fo -( - `F -("Logev s%S"), -uuid -:: -log -:: - `fm_v_u -( -v -)); - -145 -size_t - -SyogSvi -:: - `maximum_log_mesges -() const { - -146  -maximum_log_mesges_ -; - -149  -SyogSvi -:: - `maximum_log_mesges -( -size_t - -cou -) { - -150 -maximum_log_mesges_ - = -d -:: - `max -(( -size_t -)1, -cou -); - -152  -log_mesges_ -. - `size -(> -maximum_log_mesges_ -) { - -153 -log_mesges_ -. - `p_t -(); - -157 -d -:: - -< -IPAddss -, -ut16_t -> -SyogSvi -:: - `dei -() const { - -158  -d -:: - `make_ -( -ho_ -, -pt_ -); - -161  -SyogSvi -:: - `dei -( -IPAddss - -ho -, -ut16_t - -pt -) { - -162 -ho_ - = -ho -; - -163 -pt_ - = -pt -; - -165 i(( -ut32_t -) -ho_ - == (uint32_t)0) { - -166 -d_ - = -l -; - -167 - `move_queued_mesges -( - `log_v -()); - -171 -d -:: -rg - -SyogSvi -:: - `home -() const { - -172  -home_ -; - -175  -SyogSvi -:: - `home -( -d -:: -rg - -home -) { - -176 i( -home -. - `emy -(|| home. - `fd -(' '! -d -:: -rg -:: -os -) { - -177 -home_ - = '-'; - -179 -home_ - = -d -:: - `move -( -home -); - -183  -SyogSvi -:: - `mk_rv -() const { - -184  -mk_rv_ - / 1000; - -187  -SyogSvi -:: - `mk_rv -( -rv -) { - -188 -mk_rv_ - = ( -ut64_t -) -rv - * 1000; - -191 -SyogSvi -:: -QueuedLogMesge -:: - `QueuedLogMesge -( -id -, -d -:: -shed_r -< -uuid -:: -log -:: -Mesge -> && -cڋ -) - -192 : - `id_ -( -id -) - -193 , - `cڋ_ -( -d -:: - `move -( -cڋ -)) { - -194 i( -time_good_ - || -WiFi -. - `us -(= -WL_CONNECTED -) { - -195 #i -UUID_SYSLOG_HAVE_GETTIMEOFDAY - - -196 i( - `gtimeofday -(& -time_ -, -nuαr -) != 0) { - -197 -time_ -. -tv_c - = ( -time_t -)-1; - -200 -time_ -. -tv_c - = - `time -( -nuαr -); - -201 -time_ -. -tv_uc - = 0; - -204 i( -time_ -. -tv_c - >= 0 &&ime_.tv_sec < 18140 * 86400) { - -205 -time_ -. -tv_c - = ( -time_t -)-1; - -208 i( -time_ -. -tv_c - !( -time_t -)-1) { - -209 -time_good_ - = -ue -; - -212 -time_ -. -tv_c - = ( -time_t -)-1; - -216  -SyogSvi -:: -ݔ -<<( -d -:: -shed_r -< -uuid -:: -log -:: -Mesge -> -mesge -) { - -217 i( -log_mesges_ -. - `size -(> -maximum_log_mesges_ -) { - -218 -log_mesges_ovow_ - = -ue -; - -219 -log_mesges_ -. - `p_t -(); - -222 -log_mesges_ -. - `ema_back -( -log_mesge_id_ -++, -d -:: - `move -( -mesge -)); - -225  -SyogSvi -:: - `lo -() { - -226 ! -log_mesges_ -. - `emy -(&& - `n_sm -()) { - -227 aut -mesge - = -log_mesges_ -. - `t -(); - -229 -d_ - = -ue -; - -230 -log_mesges_ovow_ - = -l -; - -231 aut -ok - = - `sm -( -mesge -); - -232 i( -ok -) { - -235 i(! -log_mesges_ovow_ -) { - -236 -log_mesges_ -. - `p_t -(); - -238 -ϡ_mesge_ - = -uuid -:: - `g_uime_ms -(); - -241 :: - `yld -(); - -243 i(! -ok -) { - -248 i( -d_ - && -mk_rv_ - !0 && -log_mesges_ -. - `emy -()) { - -249 i( -uuid -:: - `g_uime_ms -(- -ϡ_mesge_ - > -mk_rv_ -) { - -252 -ݔ -<<( -d -:: -make_shed -< -uuid -:: -log -:: -Mesge ->(uuid:: - `g_uime_ms -(), - -253 -uuid -:: -log -:: -Lev -:: -INFO -, - -254 -uuid -:: -log -:: -Facy -:: -SYSLOG -, - -255 -t_ -( -__pr__logg_me -), - -256 -uuid -:: - `ad_ash_rg -( - `F -("-- MARK --")))); - -261 -bo - -SyogSvi -:: - `n_sm -() { - -262 #i -UUID_SYSLOG_HAVE_IPADDRESS_TYPE - - -263 i( -ho_ -. - `isV4 -(&& ( -ut32_t -)host_ == (uint32_t)0) { - -264  -l -; - -267 i(( -ut32_t -) -ho_ - == (uint32_t)0) { - -268  -l -; - -272 i( -WiFi -. - `us -(! -WL_CONNECTED -) { - -273  -l -; - -276 cڡ -ut64_t - -now - = -uuid -:: - `g_uime_ms -(); - -277 -ut64_t - -mesge_day - = 100; - -279 #i -UUID_SYSLOG_ARP_CHECK - - -280 #i -UUID_SYSLOG_HAVE_IPADDRESS_TYPE - - -281 i( -ho_ -. - `isV4 -()) - -284 -mesge_day - = 10; - -287 #i -UUID_SYSLOG_NDP_CHECK - && -UUID_SYSLOG_HAVE_IPADDRESS_TYPE - - -288 i( -ho_ -. - `isV6 -()) { - -289 -mesge_day - = 10; - -293 i( -now - < -ϡ_sm_ - ||ow -a_sm_ < -mesge_day -) { - -294  -l -; - -297 #i -UUID_SYSLOG_ARP_CHECK - - -298 #i -UUID_SYSLOG_HAVE_IPADDRESS_TYPE - - -299 i( -ho_ -. - `isV4 -()) - -302 -4_addr_t - -addr -; - -304 - `4_addr_t_u32 -(& -addr -, ( -ut32_t -) -ho_ -); - -306 i(! - `4_addr_ioback -(& -addr -&& ! - `4_addr_ismui -(&addr&& ! - `4_addr_isbrd -(&addr, -tif_deu -)) { - -307  -h_addr - * -h_t - = -nuαr -; - -308 cڡ -4_addr_t - * -_t - = -nuαr -; - -310 i(! - `4_addr_tcmp -(& -addr -, - `tif_4_addr -( -tif_deu -), - `tif_4_tmask -(netif_default))) { - -312 cڡ -4_addr_t - * -gw_addr - = - `tif_4_gw -( -tif_deu -); - -314 i( -gw_addr - ! -nuαr -) { - -315 -addr - = * -gw_addr -; - -319 i( - `hp_fd_addr -( -tif_deu -, & -addr -, & -h_t -, & -_t -) == -1) { - -320 - `hp_quy -( -tif_deu -, & -addr -, -NULL -); - -322 -ϡ_sm_ - = -uuid -:: - `g_uime_ms -(+ ( -ut64_t -)1000 - -mesge_day -; - -324  -l -; - -330 #i -UUID_SYSLOG_NDP_CHECK - && -UUID_SYSLOG_HAVE_IPADDRESS_TYPE - - -331 i( -ho_ -. - `isV6 -()) { - -332 -6_addr_t - -6addr -; - -334 - `IP6_ADDR -(& -6addr -, -ho_ -. - `w6 -()[0], host_.raw6()[1], host_.raw6()[2], host_.raw6()[3]); - -335 - `6_addr_assign_ze -(& -6addr -, -IP6_UNICAST -, -tif_deu -); - -337 i(! - `6_addr_ioback -(& -6addr -&& ! - `6_addr_ismui -(&ip6addr)) { - -339 -bo - -have_addss - = -l -; - -340 cڡ -u8_t - * -hwaddr - = -nuαr -; - -342  -size_t - -i - = 0; i < -LWIP_IPV6_NUM_ADDRESSES -; i++) { - -343 i( - `6_addr_isvid -( - `tif_6_addr_e -( -tif_deu -, -i -))) { - -344 i( - `6_addr_isglob -(& -6addr -)) { - -345 i( - `6_addr_isglob -( - `tif_6_addr -( -tif_deu -, -i -))) { - -346 -have_addss - = -ue -; - -349 } i( - `6_addr_issol -(& -6addr -)) { - -350 i( - `6_addr_issol -( - `tif_6_addr -( -tif_deu -, -i -))) { - -351 -have_addss - = -ue -; - -354 } i( - `6_addr_isuniquol -(& -6addr -)) { - -355 i( - `6_addr_isuniquol -( - `tif_6_addr -( -tif_deu -, -i -))) { - -356 -have_addss - = -ue -; - -359 } i( - `6_addr_iklol -(& -6addr -)) { - -360 i( - `6_addr_iklol -( - `tif_6_addr -( -tif_deu -, -i -))) { - -361 -have_addss - = -ue -; - -365 -have_addss - = -ue -; - -371 i(! -have_addss -) { - -373 -ϡ_sm_ - = -uuid -:: - `g_uime_ms -(+ ( -ut64_t -)1000 - -mesge_day -; - -375  -l -; - -376 } i( - `nd6_g_xt_h_addr__queue -( -tif_deu -, -NULL -, & -6addr -, & -hwaddr -! -ERR_OK -) { - -378 -ϡ_sm_ - = -uuid -:: - `g_uime_ms -(+ ( -ut64_t -)1000 - -mesge_day -; - -380  -l -; - -386  -ue -; - -389 -bo - -SyogSvi -:: - `sm -(cڡ -QueuedLogMesge - & -mesge -) { - -400 i( -udp_ -. - `begPack -( -ho_ -, -pt_ -) != 1) { - -401 -ϡ_sm_ - = -uuid -:: - `g_uime_ms -(); - -402  -l -; - -405 -udp_ -. - `tf_P -( - `PSTR -("<%u>1 "), (() -mesge -. -cڋ_ --> -cy - * 8+ -d -:: - `m -(7U, ()mesge.cڋ_-> -v -)); - -422 -udp_ -. - `t -('-'); - -423 -udp_ -. - `tf_P -( - `PSTR -(" %- - - - \xEF\xBB\xBF"), -home_ -. - `c_r -()); - -424 -udp_ -. - `t -( -uuid -:: -log -:: - `fm_timeamp_ms -( -mesge -. -cڋ_ --> -uime_ms -, 3). - `c_r -()); - -426 #agm -GCC - -dgnoic - -push - - -427 #agm -GCC - -dgnoic - -igned - "-Wformat" - -428 -udp_ -. - `tf_P -( - `PSTR -(" %%lu: [%S] "), -uuid -:: -log -:: - `fm_v_ch -( -mesge -. -cڋ_ --> -v -), mesge. -id_ -, mesge.cڋ_-> -me -); - -429 #agm -GCC - -dgnoic - -p - - -430 -udp_ -. - `t -( -mesge -. -cڋ_ --> -xt -. - `c_r -()); - -431 -bo - -ok - = ( -udp_ -. - `dPack -() == 1); - -433 -ϡ_sm_ - = -uuid -:: - `g_uime_ms -(); - -434  -ok -; - -439 - } -} - - @lib/uuid-syslog/src/uuid/syslog.h - -19 #ide -UUID_SYSLOG_H_ - - -20  - #UUID_SYSLOG_H_ - - - ) - -22  - ~ - -23 #ifde -ARDUINO_ARCH_ESP8266 - - -24  - ~ - -26  - ~ - -28  - ~ - -29  - ~ - -31  - ~ - -32  - ~
  • - -33  - ~ - -34  - ~ - -36  - ~ - -38 -mea - - guuid - { - -46 -mea - - gsyog - { - -53 as - cSyogSvi - : -public - -uuid -:: -log -:: -Hdr - { - -54 -public -: - -55  -cڡex - -size_t - -MAX_LOG_MESSAGES - = 50; - -56  -cڡex - -ut16_t - - gDEFAULT_PORT - = 514; - -63 -SyogSvi -() = ; - -65 ~ -SyogSvi -(); - -72  -t -(); - -83 - guuid -:: -log -:: -Lev - -log_v -() const; - -95  -log_v -( -uuid -:: -log -:: -Lev - -v -); - -103 -size_t - -maximum_log_mesges -() const; - -111  -maximum_log_mesges -( -size_t - -cou -); - -119 - gd -:: - -< -IPAddss -, - gut16_t -> -dei -() const; - -131  -dei -( -IPAddss - -ho -, -ut16_t - -pt - = -DEFAULT_PORT -); - -139 - gd -:: -rg - -home -() const; - -146  -home -( -d -:: -rg - hostname); - -154  -mk_rv -() const; - -164  -mk_rv -( -rv -); - -171  -lo -(); - -184 -vtu -  - gݔ -<<( - gd -:: -shed_r -< -uuid -:: -log -:: -Mesge -> -mesge -); - -186 - give -: - -196 as - cQueuedLogMesge - { - -197 -public -: - -205 -QueuedLogMesge -( -id -, -d -:: -shed_r -< -uuid -:: -log -:: -Mesge -> && -cڋ -); - -206 ~ -QueuedLogMesge -() = ; - -208  - gid_ -; - -209  -timev - - gtime_ -; - -210 cڡ - gd -:: -shed_r - -cڋ_ -; - -212 - give -: - -213  -bo - -time_good_ -; - -222  -move_queued_mesges -( -uuid -:: -log -:: -Lev - -v -); - -231 -bo - -n_sm -(); - -241 -bo - -sm -(cڡ -QueuedLogMesge - & -mesge -); - -243  - guuid -:: -log -:: -Logg - -logg_ -; - -245 -bo - - gd_ - = -l -; - -246 -WiFiUDP - - gudp_ -; - -247 -IPAddss - - gho_ -; - -248 -ut16_t - - gpt_ - = -DEFAULT_PORT -; - -249 -ut64_t - - gϡ_sm_ - = 0; - -250 - gd -:: -rg - -home_ -{'-'}; - -251 -size_t - - gmaximum_log_mesges_ - = -MAX_LOG_MESSAGES -; - -252  - glog_mesge_id_ - = 0; - -253 - gd -:: -li -< -QueuedLogMesge -> -log_mesges_ -; - -254 - gd -:: -omic -< -bo -> -log_mesges_ovow_ -{ -l -}; - -255 -ut64_t - - gmk_rv_ - = 0; - -256 -ut64_t - - gϡ_mesge_ - = 0; - - @lib/uuid-telnet/src/stream.cpp - -19  - ~"uuid/ʑ.h -" - -21  - ~ - -23  - ~ - -24  - ~ - -25  - ~ - -27 -mea - - guuid - { - -29 -mea - - gʑ - { - -31 - gTtSm -:: -TtSm -( -WiFiCl - & - -) - -32 : -_ -( - -) { - -33 -ouut_bufr_ -. -rve -( -BUFFER_SIZE -); - -36  - gTtSm -:: -t -() { - -37 -w_wre -({ - -38 -IAC -, -WILL -, -OPT_ECHO -, - -39 -IAC -, -WILL -, -OPT_BINARY -, - -40 -IAC -, -WILL -, -OPT_SGA -, - -41 -IAC -, -DONT -, -OPT_ECHO -, - -42 -IAC -, -DO -, -OPT_BINARY -, - -43 -IAC -, -DO -, -OPT_SGA - - -47  - gTtSm -:: -avaab -() { - -48 i( -ek -() == -1) { - -55  - gTtSm -:: -ad -() { - -56 i( -ek_ - != -1) { - -57  -da - = -ek_ -; - -58 - gek_ - = -1; - -59  - gda -; - -62 -bufr_ush -(); - -64 - gt -: - -65  -da - = -w_ad -(); - -67 i( - gda - == -1) { - -71  - gc - = -da -; - -73 i( - gsub_gٟti_ -) { - -74 i( - gevious_w__ - = -IAC -) { - -75  -c -) { - -76  -SE -: - -77 -sub_gٟti_ - = -l -; - -78 - gevious_w__ - = 0; - -79  - gt -; - -81  - gIAC -: - -82 -evious_w__ - = 0; - -83  - gt -; - -86  - gc -) { - -87  - gIAC -: - -88 -evious_w__ - = -c -; - -89  - gt -; - -92 -evious_w__ - = 0; - -93  - gt -; - -97 i( - gevious_w__ - = -IAC -) { - -98  -c -) { - -99  -IP -: - -101 -evious_w__ - = 0; - -102 - gc - = '\x03'; - -105  - gEC -: - -107 -evious_w__ - = 0; - -108 - gc - = '\x08'; - -111  - gEL -: - -113 -evious_w__ - = 0; - -114 - gc - = '\x15'; - -117  - gIAC -: - -118 -evious_w__ - = 0; - -121  - gSB -: - -122  -WILL -: - -123  -WONT -: - -124  -DO -: - -125  -DONT -: - -126 -evious_w__ - = -c -; - -127  - gt -; - -129  - gSE -: - -130  -DM -: - -131  -BRK -: - -132  -AO -: - -133  -AYT -: - -134  -GA -: - -135  -NOP -: - -137 -evious_w__ - = 0; - -138  - gt -; - -140 } i( - gevious_w__ - = -SB -) { - -141 -sub_gٟti_ - = -ue -; - -142 - gevious_w__ - = 0; - -143  - gt -; - -144 } i( - gevious_w__ - = -WILL - || -evious_w__ - = -WONT -) { - -145  -c -) { - -146  -OPT_ECHO -: - -148 -w_wre -({ -IAC -, -DONT -, -c -}); - -151  - gOPT_BINARY -: - -152  -OPT_SGA -: - -154 -w_wre -({ -IAC -, -DO -, -c -}); - -159 -w_wre -({ -IAC -, -DONT -, -c -}); - -163 - gevious_w__ - = 0; - -164  - gt -; - -165 } i( - gevious_w__ - = -DO -) { - -166  -c -) { - -167  -OPT_ECHO -: - -168  -OPT_BINARY -: - -169  -OPT_SGA -: - -175 -w_wre -({ -IAC -, -WONT -, -c -}); - -179 - gevious_w__ - = 0; - -180  - gt -; - -181 } i( - gevious_w__ - = -DONT -) { - -182  -c -) { - -183  -OPT_ECHO -: - -184  -OPT_BINARY -: - -185  -OPT_SGA -: - -187 -w_wre -({ -IAC -, -WILL -, -c -}); - -195 - gevious_w__ - = 0; - -196  - gt -; - -198  - gc -) { - -199  - gIAC -: - -200 -evious_w__ - = -c -; - -201  - gt -; - -204 -evious_w__ - = 0; - -210 i( - gevious__ - = -CR -) { - -211 i( -c - = -NUL -) { - -212 -evious__ - = 0; - -213  - gt -; - -217 - gevious__ - = -c -; - -218  - gc -; - -221  - gTtSm -:: -ek -() { - -222 -bufr_ush -(); - -227 i( - gek_ - == -1) { - -228 -ek_ - = -ad -(); - -231  - gek_ -; - -234 -size_t - - gTtSm -:: -wre -( -ut8_t - -da -) { - -235 i( -evious_out_ - = -CR - && -da - ! -LF -) { - -236 -evious_out_ - = -da -; - -238 i( -w_wre -({ -NUL -, -da -}) != 2) { - -242 - gevious_out_ - = -da -; - -245 i( - gda - = -IAC -) { - -246 i( -w_wre -({ -IAC -, IAC}) != 2) { - -250 i( -w_wre -( -da -) != 1) { - -258 -size_t - - gTtSm -:: -wre -(cڡ -ut8_t - * -bufr -, size_ -size -) { - -259 - gd -:: -ve -<> -da -; - -260 - gda -. -rve -( -size -); - -262  - gsize --- > 0) { - -263  - gc - = * -bufr -++; - -265 i( - gevious_out_ - = -CR - && -c - ! -LF -) { - -266 -da -. -push_back -(() -NUL -); - -269 i( - gc - = -IAC -) { - -270 -da -. -push_back -(() -IAC -); - -273 - gevious_out_ - = -c -; - -274 - gda -. -push_back -( -c -); - -277 -size_t - - gn - = -w_wre -( -da -); - -278 i( - gn - < - gsize -) { - -279 - gn - = 0; - -281  - gn -; - -284  - gTtSm -:: -ush -() { - -291  -TtSm -:: -w_avaab -() { - -292  -_ -. -avaab -(); - -295  - gTtSm -:: -w_ad -() { - -296  -_ -. -ad -(); - -299  - gTtSm -:: -bufr_ush -() { - -300 i(! -ouut_bufr_ -. -emy -()) { - -301 -size_t - -n - = -_ -. -wre -( -t_ -( -ouut_bufr_ -. -da -()), ouut_bufr_. -size -()); - -302 i( - gn - ! -ouut_bufr_ -. -size -()) { - -303 -_ -. - -(); - -305 - gouut_bufr_ -. -r -(); - -306 - gouut_bufr_ -. -shrk_to_f -(); - -310 -size_t - - gTtSm -:: -w_wre -( -da -) { - -311 -ouut_bufr_ -. -push_back -( -da -); - -313 i( - gouut_bufr_ -. -size -(> -BUFFER_SIZE -) { - -314 -bufr_ush -(); - -320 -size_t - - gTtSm -:: -w_wre -(cڡ -d -:: -ve -<> & -da -) { - -321  -w_wre -( -t_ -( -da -.da()), da. -size -()); - -324 -size_t - - gTtSm -:: -w_wre -(cڡ -ut8_t - * -bufr -, size_ -size -) { - -325 -size_t - - gofft - = 0; - -326 -size_t - - gmag - = -size -; - -328 i(! - gouut_bufr_ -. -emy -()) { - -330 -size_t - - gblock - = -d -:: -m -( -mag -, -BUFFER_SIZE - - -ouut_bufr_ -. -size -()); - -332 - gouut_bufr_ -. - -( -ouut_bufr_ -. -d -(), -bufr -, buf+ -block -); - -333 - gofft - + -block -; - -334 - gmag - - -block -; - -336 i( - gouut_bufr_ -. -size -(> -BUFFER_SIZE -) { - -337 -bufr_ush -(); - -341 i( - gmag - > -BUFFER_SIZE -) { - -343 -size_t - -n - = -_ -. -wre -( -bufr - + -offt -, -mag -); - -344 i( - gn - ! -mag -) { - -345 -_ -. - -(); - -346  - gofft - + - gn -; - -348 } i( - gmag - > 0) { - -350 - gouut_bufr_ -. - -( -ouut_bufr_ -. -d -(), -bufr - + -offt -, buf+ off+ -mag -); - -353  - gsize -; - - @lib/uuid-telnet/src/telnet.cpp - -19  - ~"uuid/ʑ.h -" - -21  - ~ - -22 #i -defed -( -ESP8266 -) - -23  - ~ - -24 #i -defed -( -ESP32 -) - -25  - ~ - -28  - ~ - -30  - ~ - -31  - ~
  • - -32  - ~ - -33  - ~ - -35  - ~ - -36  - ~ - -38 #ide -UUID_TELNET_HAVE_WIFICLIENT_REMOTE - - -39 #i -defed -( -ARDUINO_ARCH_ESP8266 -|| defed( -ARDUINO_ARCH_ESP32 -) - -40  - #UUID_TELNET_HAVE_WIFICLIENT_REMOTE - 1 - - ) - -42  - #UUID_TELNET_HAVE_WIFICLIENT_REMOTE - 0 - - ) - -46 #ide -UUID_TELNET_HAVE_WIFICLIENT_NODELAY - - -47 #i -defed -( -ARDUINO_ARCH_ESP8266 -|| defed( -ARDUINO_ARCH_ESP32 -) - -48  - #UUID_TELNET_HAVE_WIFICLIENT_NODELAY - 1 - - ) - -50  - #UUID_TELNET_HAVE_WIFICLIENT_NODELAY - 0 - - ) - -54 #ide -UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE - - -55 #i -defed -( -ARDUINO_ARCH_ESP8266 -) - -56  - #UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE - 1 - - ) - -58  - #UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE - 0 - - ) - -62 cڡ  - g__pr__logg_me -[] -__ibu__ -(( -__igd__ -(())) -PROGMEM - = "telnet"; - -64 -mea - -uuid - { - -66 -mea - -ʑ - { - -68 -uuid -:: -log -:: -Logg - -TtSvi -:: -logg_ -{ - `FPSTR -( -__pr__logg_me -), uuid::log:: -Facy -:: -DAEMON -}; - -70 -TtSvi -:: - `TtSvi -( -d -:: -shed_r -< -uuid -:: -cse -:: -Commds -> -commds -,  -cڋxt -,  -ags -) - -71 : - `TtSvi -( -DEFAULT_PORT -, -commds -, -cڋxt -, -ags -) { - -74 -TtSvi -:: - `TtSvi -( -ut16_t - -pt -, -d -:: -shed_r -< -uuid -:: -cse -:: -Commds -> -commds -,  -cڋxt -,  -ags -) - -75 : - `TtSvi -( -pt -, - -76 [ -commds -, -cڋxt -, -ags -]( -Sm - & -am -, cڡ -IPAddss - & -addr - - `__ibu__ -(( -unud -)), -ut16_t - -pt - __attribute__((unused))) - -77 -> -d -:: -shed_r -< -uuid -:: -cse -:: -Shl -> {  std:: -make_shed -( -commds -, -am -, -cڋxt -, -ags -); }) { - -80 -TtSvi -:: - `TtSvi -( -shl_y_funi - -shl_y -) - -81 : - `TtSvi -( -DEFAULT_PORT -, -shl_y -) { - -84 -TtSvi -:: - `TtSvi -( -ut16_t - -pt -, -shl_y_funi - -shl_y -) - -85 : - `rv_ -( -pt -) - -86 , - `shl_y_ -( -shl_y -) { - -89  -TtSvi -:: - `t -() { - -90 -rv_ -. - `beg -(); - -93  -TtSvi -:: - `o_l -() { - -94 ! -cis_ -. - `emy -()) { - -95 -cis_ -. - `t -(). - ` -(); - -96 -cis_ -. - `p_t -(); - -100  -TtSvi -:: - ` -() { - -101 -rv_ -. - ` -(); - -104 -size_t - -TtSvi -:: - `maximum_cis -() const { - -105  -maximum_cis_ -; - -108  -TtSvi -:: - `maximum_cis -( -size_t - -cou -) { - -109 -maximum_cis_ - = -d -:: - `max -(( -size_t -)1, -cou -); - -111  -cis_ -. - `size -(> -maximum_cis_ -) { - -112 aut - - = -cis_ -. - `beg -(); i!cis_. - `d -();) { - -113 i( - --> - `aive -()) { - -114 - --> - ` -(); - -115 - - = -cis_ -. - `a -(it); - -118 - - = -cis_ -. - `a -(it); - -124  -TtSvi -:: - `l_id_timeout -() const { - -125  -l_id_timeout_ -; - -128  -TtSvi -:: - `l_id_timeout -( -timeout -) { - -129 -l_id_timeout_ - = -timeout -; - -132  -TtSvi -:: - `deu_wre_timeout -() const { - -133  -wre_timeout_ -; - -136  -TtSvi -:: - `deu_wre_timeout -( -timeout -) { - -137 -wre_timeout_ - = -timeout -; - -140  -TtSvi -:: - `lo -() { - -141 aut - - = -cis_ -. - `beg -(); i!cis_. - `d -();) { - -142 i(! - --> - `lo -()) { - -143 - - = -cis_ -. - `a -(it); - -145 - -++; - -149 -WiFiCl - - - = -rv_ -. - `avaab -(); - -150 i( - -) { - -151 i( -cis_ -. - `size -(> -maximum_cis_ -) { - -152 #i -UUID_TELNET_HAVE_WIFICLIENT_REMOTE - - -153 -logg_ -. - `fo -( - `F -("New connection from [%s]:%uejected (connectionimiteached)"), - -154 -uuid -:: - `b_to_rg -( - -. - `meIP -()). - `c_r -(), - -155 - -. - `mePt -()); - -157 -logg_ -. - `fo -( - `F -("New connectionejected (connectionimiteached)")); - -159 - -. - `n -( - `F -("Maximum connectionimiteached")); - -160 - -. - ` -(); - -162 #i -UUID_TELNET_HAVE_WIFICLIENT_REMOTE - - -163 -logg_ -. - `fo -( - `F -("New ci from [%s]:%uced"), -uuid -:: - `b_to_rg -( - -. - `meIP -()). - `c_r -(), cl. - `mePt -()); - -165 -cis_ -. - `ema_back -( -shl_y_ -, -d -:: - `move -( - -), -l_id_timeout_ -, -wre_timeout_ -); - -166 #i!( -UUID_TELNET_HAVE_WIFICLIENT_REMOTE -) - -167 -logg_ -. - `fo -( - `F -("New ci %aced"), & -cis_ -. - `back -()); - -173 -TtSvi -:: -Ci -:: - `Ci -( -shl_y_funi - & -shl_y -, -WiFiCl - && - -,  -id_timeout -,  -wre_timeout -) - -174 : - `_ -( -d -:: - `move -( - -)) - -175 , - `am_ -( -_ -) { - -176 #i -UUID_TELNET_HAVE_WIFICLIENT_REMOTE - - -178 -addr_ - = -_ -. - `meIP -(); - -179 -pt_ - = -_ -. - `mePt -(); - -181 -pt_ - = 0; - -184 #i -UUID_TELNET_HAVE_WIFICLIENT_NODELAY - - -185 -_ -. - `tNoDay -( -ue -); - -188 #i -UUID_TELNET_HAVE_WIFICLIENT_KEEPALIVE - - -190 -_ -. - `kpAlive -(5, 5, 5); - -193 i( -wre_timeout - > 0) { - -194 -_ -. - `tTimeout -( -wre_timeout -); - -197 -am_ -. - `t -(); - -199 i( -_ -. - `ced -()) { - -200 -d -:: -shed_r -< -uuid -:: -cse -:: -Shl -> -shl - = - `shl_y -( -am_ -, -addr_ -, -pt_ -); - -201 -shl --> - `id_timeout -( -id_timeout -); - -202 -shl --> - `t -(); - -203 -shl_ - = -shl -; - -205 -shl_ - = -nuαr -; - -209 -bo - -TtSvi -:: -Ci -:: - `aive -() { - -210  -shl_ -. - `u_cou -() > 1; - -213 -bo - -TtSvi -:: -Ci -:: - `lo -() { - -214 i( - `aive -()) { - -215 i(! -_ -. - `ced -()) { - -216 -shl_ --> - ` -(); - -218  -ue -; - -220 #i -UUID_TELNET_HAVE_WIFICLIENT_REMOTE - - -221 -logg_ -. - `fo -( - `F -("Ci from [%s]:%u clod"), -uuid -:: - `b_to_rg -( -addr_ -). - `c_r -(), -pt_ -); - -223 -logg_ -. - `fo -( - `F -("Ci %od"), -this -); - -225  -l -; - -229  -TtSvi -:: -Ci -:: - ` -() { - -230 i( -shl_ -) { - -231 -shl_ --> - ` -(); - -237 - } -} - - @lib/uuid-telnet/src/uuid/telnet.h - -19 #ide -UUID_TELNET_H_ - - -20  - #UUID_TELNET_H_ - - - ) - -22  - ~ - -23 #ifde -ARDUINO_ARCH_ESP8266 - - -24  - ~ - -26  - ~ - -28  - ~ - -30  - ~ - -31  - ~
  • - -32  - ~ - -33  - ~ - -34  - ~ - -36  - ~ - -38 -mea - - guuid - { - -46 -mea - - gʑ - { - -54 as - cTtSm -: -public - :: -Sm - { - -55 -public -: - -62 -exic - -TtSm -( -WiFiCl - & - -); - -63 - gvtu - ~ -TtSm -() = ; - -70  -t -(); - -78  -avaab -( - govride -; - -85  -ad -( - govride -; - -93  -ek -( - govride -; - -103 -size_t - -wre -( -ut8_t - -da - - govride -; - -114 -size_t - -wre -(cڡ -ut8_t - * -bufr -, size_ -size - - govride -; - -125  -ush -( - govride -; - -127 - give -: - -128  -cڡex - cڡ  -NUL - = 0; - -129  -cڡex - cڡ  - gBEL - = 7; - -130  -cڡex - cڡ  - gBS - = 8; - -131  -cڡex - cڡ  - gHT - = 9; - -132  -cڡex - cڡ  - gLF - = 10; - -133  -cڡex - cڡ  - gVT - = 11; - -134  -cڡex - cڡ  - gFF - = 12; - -135  -cڡex - cڡ  - gCR - = 13; - -136  -cڡex - cڡ  - gSE - = 240; - -137  -cڡex - cڡ  - gNOP - = 241; - -138  -cڡex - cڡ  - gDM - = 242; - -139  -cڡex - cڡ  - gBRK - = 243; - -140  -cڡex - cڡ  - gIP - = 244; - -141  -cڡex - cڡ  - gAO - = 245; - -142  -cڡex - cڡ  - gAYT - = 246; - -143  -cڡex - cڡ  - gEC - = 247; - -144  -cڡex - cڡ  - gEL - = 248; - -145  -cڡex - cڡ  - gGA - = 249; - -146  -cڡex - cڡ  - gSB - = 250; - -147  -cڡex - cڡ  - gWILL - = 251; - -148  -cڡex - cڡ  - gWONT - = 252; - -149  -cڡex - cڡ  - gDO - = 253; - -150  -cڡex - cڡ  - gDONT - = 254; - -151  -cڡex - cڡ  - gIAC - = 255; - -153  -cڡex - cڡ  - gOPT_BINARY - = 0; - -154  -cڡex - cڡ  - gOPT_ECHO - = 1; - -155  -cڡex - cڡ  - gOPT_SGA - = 3; - -157  -cڡex - cڡ -size_t - - gBUFFER_SIZE - = 536; - -159 -TtSm -(cڡ TtSm& -de -; - -160 - gTtSm -& - gݔ -=(cڡ -TtSm -& -de -; - -168  -w_avaab -(); - -175  -w_ad -(); - -183  -bufr_ush -(); - -193 -size_t - -w_wre -( -da -); - -203 -size_t - -w_wre -(cڡ -d -:: -ve -<> & -da -); - -214 -size_t - -w_wre -(cڡ -ut8_t - * -bufr -, size_ -size -); - -216 - gWiFiCl - & - g_ -; - -217  - gevious_w__ - = 0; - -218 -bo - - gsub_gٟti_ - = -l -; - -219  - gevious__ - = 0; - -220  - gevious_out_ - = 0; - -221  - gek_ - = -1; - -222 - gd -:: -ve -<> -ouut_bufr_ -; - -230 as - cTtSvi - { - -231 - gpublic -: - -232  -cڡex - -size_t - -MAX_CONNECTIONS - = 3; - -233  -cڡex - -ut16_t - - gDEFAULT_PORT - = 23; - -234  -cڡex -  - gDEFAULT_IDLE_TIMEOUT - = 600; - -235  -cڡex -  - gDEFAULT_WRITE_TIMEOUT - = 0; - -245 -usg - - gshl_y_funi - = -d -:: -funi -( -Sm - & -am -, cڡ - gIPAddss - & - gaddr -, -ut16_t - - gpt -)>; - -255 -TtSvi -( -d -:: -shed_r -< -uuid -:: -cse -:: -Commds -> -commds -,  -cڋxt - = 0,  -ags - = 0); - -266 -TtSvi -( -ut16_t - -pt -, -d -:: -shed_r -< -uuid -:: -cse -:: -Commds -> -commds -,  -cڋxt - = 0,  -ags - = 0); - -274 -exic - -TtSvi -( -shl_y_funi - -shl_y -); - -283 -TtSvi -( -ut16_t - -pt -, -shl_y_funi - -shl_y -); - -285 ~ -TtSvi -() = ; - -292  -t -(); - -300  -o_l -(); - -308  - -(); - -316 -size_t - -maximum_cis -() const; - -324  -maximum_cis -( -size_t - -cou -); - -332  -l_id_timeout -() const; - -341  -l_id_timeout -( -timeout -); - -350  -deu_wre_timeout -() const; - -361  -deu_wre_timeout -( -timeout -); - -368  -lo -(); - -370 - give -: - -378 as - cCi - { - -379 -public -: - -389 -Ci -( -shl_y_funi - & -shl_y -, -WiFiCl - && - -,  -id_timeout -,  -wre_timeout -); - -390 ~ -Ci -() = ; - -398 -bo - -aive -(); - -405 -bo - -lo -(); - -411  - -(); - -413 - give -: - -414 -Ci -(cڡ Ci& -de -; - -415 - gCi -& - gݔ -=(cڡ -Ci -& -de -; - -417 -WiFiCl - - g_ -; - -418 -TtSm - - gam_ -; - -419 - gd -:: -shed_r -< -uuid -:: -cse -:: -Shl -> -shl_ -; - -420 -IPAddss - - gaddr_ -; - -421 -ut16_t - - gpt_ -; - -424 -TtSvi -(cڡ TtSvi& -de -; - -425 - gTtSvi -& - gݔ -=(cڡ -TtSvi -& -de -; - -427  - guuid -:: -log -:: -Logg - -logg_ -; - -429 -WiFiSv - - grv_ -; - -430 -size_t - - gmaximum_cis_ - = -MAX_CONNECTIONS -; - -431 - gd -:: -li -< -Ci -> -cis_ -; - -432 -shl_y_funi - - gshl_y_ -; - -433  - gl_id_timeout_ - = -DEFAULT_IDLE_TIMEOUT -; - -434  - gwre_timeout_ - = -DEFAULT_WRITE_TIMEOUT -; - - @lib_standalone/Arduino.cpp - -18  - ~ - -19  - ~ - -20  - ~ - -22  - ~ - -24 -NiveCse - - gSl -; - -35  - g__mlis - = 0; - -36  -bo - - g__ouut_ps -[256]; - -37  - g__ouut_v -[256]; - -39  -ma -( -gc - -__ibu__ -(( -unud -)), * -gv -[] __attribute__((unused))) { - -40 -memt -( -__ouut_ps -, 0, (__output_pins)); - -41 -memt -( -__ouut_v -, 0, (__output_level)); - -43 -tup -(); - -46  - g__cyes - = 0; - -48  -mlis -(<10 * 1000 && -__cyes -++ <= 10 * 1000) { - -49 -lo -(); - -55  - $mlis -() { - -56  -__mlis -; - -57 - } -} - -59  - $day -( -mlis -) { - -60 -__mlis - + -mlis -; - -61 - } -} - -63  - $yld -() { - -64 - } -} - -66  - $tf_P -(* -r -, -size_t - -size -, cڡ * -fm -, ...) { - -67 -va_li - - -; - -69 - `va_t -( - -, -fm -); - -70  -t - = - `vtf_P -( -r -, -size -, -fm -, - -); - -71 - `va_d -( - -); - -73  -t -; - -74 - } -} - -76  - $vtf_P -(* -r -, -size_t - -size -, cڡ * -fm -, -va_li - - -) { - -77 -d -:: -rg - -tive_fm -; - -79  -evious - = 0; - -80  -size_t - -i - = 0; i < - ` -( -fm -); i++) { - -81  -c - = -fm -[ -i -]; - -86 i( -evious - ='%' && -c - == 'S') { - -87 -c - = 's'; - -90 -tive_fm - + -c -; - -91 -evious - = -c -; - -94  - `vtf -( -r -, -size -, -tive_fm -. - `c_r -(), - -); - -95 - } -} - -97  - $pMode -( -ut8_t - -p -, ut8_ -mode -) { - -98 -__ouut_ps -[ -p -] = ( -mode - = -OUTPUT -); - -99 - } -} - -101  - $digWre -( -ut8_t - -p -, ut8_ -vue -) { - -102 -__ouut_v -[ -p -] = ( -vue - = -HIGH -? HIGH : -LOW -; - -103 - } -} - -105  - $digRd -( -ut8_t - -p -) { - -106 i( -__ouut_ps -[ -p -]) { - -107  -__ouut_v -[ -p -]; - -108 } i( -p - & 1) { - -109  -HIGH -; - -111  -LOW -; - -113 - } -} - - @lib_standalone/Arduino.h - -18 #ide -ARDUINO_H_ - - -19  - #ARDUINO_H_ - - - ) - -21  - ~ - -23  - ~ - -24  - ~ - -25  - ~ - -26  - ~ - -27  - ~ - -29  - ~ - -31  - #IPAddss - -d -:: -rg - - - ) - -32  - #ICACHE_FLASH_ATTR - - - ) - -33  - #ICACHE_RAM_ATTR - - - ) - -34  - #os_evt_t -  - - ) - -35  - #by - -ut8_t - - - ) - -36  - # - - - - - ) - -37  - #boޗn - -bo - - - ) - -39  - #LOW - 0 - - ) - -40  - #HIGH - 1 - - ) - -42  - #NAN - 0 - - ) - -44  - #INPUT - 0 - - ) - -45  - #OUTPUT - 1 - - ) - -46  - #INPUT_PULLUP - 2 - - ) - -48  -pMode -( -ut8_t - -p -, ut8_ -mode -); - -49  -digWre -( -ut8_t - -p -, ut8_ -vue -); - -50  -digRd -( -ut8_t - -p -); - -52  - #PROGMEM - - - ) - -53  - #PGM_P - cڡ * - - ) - -54  - #PSTR -( -s -) \ - -55 ( - `__exnsi__ -({ \ - -56 cڡ  -__c -[] = ( -s -); \ - -57 & -__c -[0]; \ - -58 })) - - ) - -61 -ass - - g__FshSgHr -; - -62  - #FPSTR -( -rg_l -( -t_ -(rg_l)) - - ) - -63  - #F -( -rg_l -( - `FPSTR -( - `PSTR -(rg_l))) - - ) - -65  -tf_P -(* -r -, -size_t - -size -, cڡ * -fm -, ...); - -66  -vtf_P -(* -r -, -size_t - -size -, cڡ * -fm -, -va_li - - -); - -68  - #pgm_ad_by -( -addr -(* -t_ -ddr)) - - ) - -70 -ass - - gPrt -; - -72 as - cPrb - { - -73 - mpublic -: - -74 -vtu - -size_t - - $tTo -( -Prt - & -t -) const = 0; - -77 as - cPrt - { - -78 -public -: - -79 -vtu - -size_t - - `wre -( -ut8_t - -c -) = 0; - -80 -vtu - -size_t - - `wre -(cڡ -ut8_t - * -bufr -, size_ -size -) = 0; - -81 -size_t - - $t -( -c -) { - -82  - `wre -(( -ut8_t -) -c -); - -84 -size_t - - $t -(cڡ * -da -) { - -85  - `wre -( -t_ -( -da -), - ` -(data)); - -86 - } -} - -87 -size_t - - $t -(cڡ -__FshSgHr - * -da -) { - -88  - `t -( -t_ -( -da -)); - -89 - } -} - -90 -size_t - - $t -(cڡ -Prb - & -b -) { - -91  -b -. - `tTo -(* -this -); - -92 - } -} - -93 -size_t - - $t -( -vue -) { - -94  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()); - -95 - } -} - -96 -size_t - - $t -( -vue -) { - -97  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()); - -98 - } -} - -99 -size_t - - $t -( -vue -) { - -100  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()); - -101 - } -} - -102 -size_t - - $t -( -vue -) { - -103  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()); - -104 - } -} - -105 -size_t - - $n -() { - -106  - `t -("\r\n"); - -107 - } -} - -108 -size_t - - $n -(cڡ * -da -) { - -109  - `t -( -da -+ - `n -(); - -110 - } -} - -111 -size_t - - $n -(cڡ -__FshSgHr - * -da -) { - -112  - `t -( -t_ -( -da -)+ - `n -(); - -113 - } -} - -114 -size_t - - $n -(cڡ -Prb - & -b -) { - -115  -b -. - `tTo -(* -this -+ - `n -(); - -116 - } -} - -117 -size_t - - $n -( -vue -) { - -118  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()+ - `n -(); - -119 - } -} - -120 -size_t - - $n -( -vue -) { - -121  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()+ - `n -(); - -122 - } -} - -123 -size_t - - $n -( -vue -) { - -124  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()+ - `n -(); - -125 - } -} - -126 -size_t - - $n -( -vue -) { - -127  - `t -( -d -:: - `to_rg -( -vue -). - `c_r -()+ - `n -(); - -128 - } -} - -129 -vtu -  - $ush -(){ - } -}; - -132 as - cSm - : -public - -Prt - { - -133 -public -: - -134 -vtu -  -avaab -() = 0; - -135 -vtu -  -ad -() = 0; - -136 -vtu -  -ek -() = 0; - -139 as - cNiveCse - : -public - -Sm - { - -140 -public -: - -141  -beg -( -baud - -__ibu__ -(( -unud -))) { - -144  - $avaab -( -ovride - { - -145 i( - `ek -() >= 0) { - -150 - } -} - -152  - $ad -( -ovride - { - -153 - `ek -(); - -155 i( -ek_ -) { - -156 -ek_ - = -l -; - -157  -ek_da_ -; - -161 - } -} - -163  - $ek -( -ovride - { - -164 i(! -ek_ -) { - -165  -t - = :: - `ad -( -STDIN_FILENO -, & -ek_da_ -, 1); - -166 -ek_ - = -t - > 0; - -169 i( -ek_ -) { - -170  -ek_da_ -; - -174 - } -} - -176 -size_t - - $wre -( -ut8_t - -c - -ovride - { - -177  :: - `wre -( -STDOUT_FILENO -, & -c -, 1); - -178 - } -} - -180 -size_t - - $wre -(cڡ -ut8_t - * -bufr -, -size_t - -size - -ovride - { - -181  :: - `wre -( -STDOUT_FILENO -, -bufr -, -size -); - -182 - } -} - -184 - give -: - -185 -bo - -ek_ - = -l -; - -186  - gek_da_ -; - -189 -NiveCse - -Sl -; - -191  -mlis -(); - -193  -day -( -mlis -); - -195  -yld -(); - -197  -tup -(); - -198  -lo -(); - -200  - ~"WSg.h -" - - @lib_standalone/ArduinoJson/ArduinoJson.h - -5  - ~"c/ArduoJs.h -" - - @lib_standalone/ArduinoJson/extras/fuzzing/fuzzer_main.cpp - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 "C"  -LLVMFuzzTeOIut -(cڡ -ut8_t -* -da -, -size_t - -size -); - -16 - gd -:: -ve -< -ut8_t -> - $ad -(cڡ * -th -) { - -17 -FILE -* -f - = - `fݒ -( -th -, "rb"); - -18 i(! -f -) { - -19 -d -:: - - << "Faedݒ " << -th - << std:: -dl -; - -20 - `ex -(1); - -23 - `fek -( -f -, 0, -SEEK_END -); - -24 -size_t - -size - = - `l -( -f -); - -25 - `fek -( -f -, 0, -SEEK_SET -); - -27 -d -:: -ve -< -ut8_t -> - `bufr -( -size -); - -28 i( - `d -( -bufr -. - `da -(), 1, -size -, -f -) != size) { - -29 - `fo -( -f -); - -30 -d -:: - - << "Faedػad " << -th - << std:: -dl -; - -31 - `ex -(1); - -34 - `fo -( -f -); - -35  -bufr -; - -36 - } -} - -38  - $ma -( -gc -, cڡ * -gv -[]) { - -39 i( -gc - < 2) { - -40 -d -:: - - << "Uge: msgck_fuzz fes" << std:: -dl -; - -44  -i - = 1; i < -gc -; i++) { - -45 -d -:: -cout - << "Ldg " << -gv -[ -i -] << std:: -dl -; - -46 -d -:: -ve -< -ut8_t -> -bufr - = - `ad -( -gv -[ -i -]); - -47 - `LLVMFuzzTeOIut -( -bufr -. - `da -(), bufr. - `size -()); - -50 - } -} - - @lib_standalone/ArduinoJson/extras/fuzzing/json_fuzzer.cpp - -1  - ~ - -3 "C"  - $LLVMFuzzTeOIut -(cڡ -ut8_t - * -da -, -size_t - -size -) { - -4 -DymicJsDocumt - - `doc -(4096); - -5 -DerliziE - -r - = - `derlizeJs -( -doc -, -da -, -size -); - -6 i(! -r -) { - -7 -d -:: -rg - -js -; - -8 - `rlizeJs -( -doc -, -js -); - -11 - } -} - - @lib_standalone/ArduinoJson/extras/fuzzing/msgpack_fuzzer.cpp - -1  - ~ - -3 "C"  - $LLVMFuzzTeOIut -(cڡ -ut8_t - * -da -, -size_t - -size -) { - -4 -DymicJsDocumt - - `doc -(4096); - -5 -DerliziE - -r - = - `derlizeMsgPack -( -doc -, -da -, -size -); - -6 i(! -r -) { - -7 -d -:: -rg - -js -; - -8 - `rlizeMsgPack -( -doc -, -js -); - -11 - } -} - - @lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp - -7  - ~ - -8  - ~"ArduoJs.h -" - -10  - $ma -() { - -16 -SticJsDocumt -<200> -doc -; - -30 -doc -["sensor"] = "gps"; - -31 -doc -["time"] = 1351824120; - -35 -JsAay - -da - = -doc -. - `NeedAay -("data"); - -36 -da -. - `add -(48.756080); - -37 -da -. - `add -(2.302038); - -41 - `rlizeJs -( -doc -, -d -:: -cout -); - -46 -d -:: -cout - << std:: -dl -; - -50 - `rlizeJsPy -( -doc -, -d -:: -cout -); - -60 - } -} - - @lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp - -7  - ~ - -8  - ~"ArduoJs.h -" - -10  - $ma -() { - -16 -SticJsDocumt -<300> -doc -; - -31  -js -[] = - -35 -DerliziE - -r - = - `derlizeJs -( -doc -, -js -); - -38 i( -r -) { - -39 -d -:: - - << "derlizeJs(ed: " << -r -. - `c_r -(<< std:: -dl -; - -47 cڡ * -ns - = -doc -["sensor"]; - -48  -time - = -doc -["time"]; - -49  -tude - = -doc -["data"][0]; - -50  -lgude - = -doc -["data"][1]; - -53 -d -:: -cout - << -ns - << std:: -dl -; - -54 -d -:: -cout - << -time - << std:: -dl -; - -55 -d -:: -cout - << -tude - << std:: -dl -; - -56 -d -:: -cout - << -lgude - << std:: -dl -; - -59 - } -} - - @lib_standalone/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp - -7  - ~ - -8  - ~"ArduoJs.h -" - -10  - $ma -() { - -16 -SticJsDocumt -<300> -doc -; - -28 -ut8_t - -put -[] = {131, 166, 115, 101, 110, 115, 111, 114, 163, 103, 112, 115, - -44 -DerliziE - -r - = - `derlizeMsgPack -( -doc -, -put -); - -47 i( -r -) { - -48 -d -:: - - << "derlizeMsgPack(ed: " << -r -. - `c_r -(<< std:: -dl -; - -56 cڡ * -ns - = -doc -["sensor"]; - -57  -time - = -doc -["time"]; - -58  -tude - = -doc -["data"][0]; - -59  -lgude - = -doc -["data"][1]; - -62 -d -:: -cout - << -ns - << std:: -dl -; - -63 -d -:: -cout - << -time - << std:: -dl -; - -64 -d -:: -cout - << -tude - << std:: -dl -; - -65 -d -:: -cout - << -lgude - << std:: -dl -; - -68 - } -} - - @lib_standalone/ArduinoJson/extras/tests/ElementProxy/add.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("ElementProxy::add()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gdoc -. -addEmt -(); - -13 - gEmtProxy -< - gJsDocumt -&> - g - = -doc -[0]; - -15 -SECTION -("add(int)") { - -16 - g -. -add -(42); - -18 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[[42]]"); - -21 -SECTION -("add(const char*)") { - -22 - g -. -add -("world"); - -24 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[[\"world\"]]"); - -27 -SECTION -("set(char[])") { - -28  - gs -[] = "world"; - -29 - g -. -add -( -s -); - -30 -ry -( -s -, "!!!!!"); - -32 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[[\"world\"]]"); - - @lib_standalone/ArduinoJson/extras/tests/ElementProxy/clear.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("ElementProxy::clear()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gdoc -. -addEmt -(); - -13 - gEmtProxy -< - gJsDocumt -&> - g - = -doc -[0]; - -15 -SECTION -("size goes backo zero") { - -16 - g -. -add -(42); - -17 - g -. -r -(); - -19 -REQUIRE -( - -. -size -() == 0); - -22 -SECTION -("isNull()eturnrue") { - -23 - g -. -add -("hello"); - -24 - g -. -r -(); - -26 -REQUIRE -( - -. -isNu -(= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/ElementProxy/compare.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("ElementProxy::operator==()") { - -11 -DymicJsDocumt - -doc -(4096); - -13 -SECTION -("same value") { - -14 - gdoc -. -add -(1); - -15 - gdoc -. -add -(1); - -17 -REQUIRE -( -doc -[0] == doc[1]); - -18 -REQUIRE_FALSE -( -doc -[0] != doc[1]); - -21 -SECTION -("different values") { - -22 - gdoc -. -add -(1); - -23 - gdoc -. -add -(2); - -25 -REQUIRE_FALSE -( -doc -[0] == doc[1]); - -26 -REQUIRE -( -doc -[0] != doc[1]); - - @lib_standalone/ArduinoJson/extras/tests/ElementProxy/remove.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("ElementProxy::remove()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gdoc -. -addEmt -(); - -13 - gEmtProxy -< - gJsDocumt -&> - g - = -doc -[0]; - -15 -SECTION -("remove(int)") { - -16 - g -. -add -(1); - -17 - g -. -add -(2); - -18 - g -. -add -(3); - -20 - g -. -move -(1); - -22 -REQUIRE -( - -. -as -< -d -:: -rg ->() == "[1,3]"); - -25 -SECTION -("remove(const char *)") { - -26 - g -["a"] = 1; - -27 - g -["b"] = 2; - -29 - g -. -move -("a"); - -31 -REQUIRE -( - -. -as -< -d -:: -rg ->() == "{\"b\":2}"); - -34 -SECTION -("remove(std::string)") { - -35 - g -["a"] = 1; - -36 - g -["b"] = 2; - -38 - g -. -move -( -d -:: -rg -("b")); - -40 -REQUIRE -( - -. -as -< -d -:: -rg ->() == "{\"a\":1}"); - -43 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -44 -SECTION -("remove(vla)") { - -45 - g -["a"] = 1; - -46 - g -["b"] = 2; - -48  - gi - = 4; - -49  - gv -[ -i -]; - -50 -ry -( -v -, "b"); - -51 - g -. -move -( -v -); - -53 -REQUIRE -( - -. -as -< -d -:: -rg ->() == "{\"a\":1}"); - - @lib_standalone/ArduinoJson/extras/tests/ElementProxy/set.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("ElementProxy::set()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gEmtProxy -< - gJsDocumt -&> - g - = -doc -[0]; - -14 -SECTION -("set(int)") { - -15 - g -. -t -(42); - -17 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[42]"); - -20 -SECTION -("set(const char*)") { - -21 - g -. -t -("world"); - -23 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[\"world\"]"); - -26 -SECTION -("set(char[])") { - -27  - gs -[] = "world"; - -28 - g -. -t -( -s -); - -29 -ry -( -s -, "!!!!!"); - -31 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[\"world\"]"); - - @lib_standalone/ArduinoJson/extras/tests/ElementProxy/size.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("ElementProxy::size()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gdoc -. -addEmt -(); - -13 - gEmtProxy -< - gJsDocumt -&> - g - = -doc -[0]; - -15 -SECTION -("returns 0") { - -16 -REQUIRE -( - -. -size -() == 0); - -19 -SECTION -("asnrray,eturns 2") { - -20 - g -. -add -(1); - -21 - g -. -add -(2); - -22 -REQUIRE -( - -. -size -() == 2); - -25 -SECTION -("asn object,eturns 2") { - -26 - g -["a"] = 1; - -27 - g -["b"] = 2; - -28 -REQUIRE -( - -. -size -() == 2); - - @lib_standalone/ArduinoJson/extras/tests/ElementProxy/subscript.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::operator[]") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gEmtProxy -< - gJsDocumt -&> - g - = -doc -[1]; - -14 -SECTION -("set member") { - -15 - g -["world"] = 42; - -17 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[null,{\"world\":42}]"); - -20 -SECTION -("setlement") { - -21 - g -[2] = 42; - -23 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[null,[null,null,42]]"); - - @lib_standalone/ArduinoJson/extras/tests/Helpers/CustomReader.hpp - -5 #agm - - - -7  - ~ - -9 as - cCuomRd - { - -10 - md -:: -rgam - -_am -; - -12 - mpublic -: - -13 - $CuomRd -(cڡ * -put -: - $_am -( -put -) {} - -15  - $ad -() { - -16  -_am -. - `g -(); - -17 - } -} - -19 -size_t - - $adBys -(* -bufr -, -size_t - -ngth -) { - -20 -_am -. - `ad -( -bufr -, -ic_ -< -d -:: -amsize ->( -ngth -)); - -21  -ic_ -< -size_t ->( -_am -. - `gcou -()); - -22 - } -} - -24 - give -: - -25 -CuomRd -(const CustomReader&); - - @lib_standalone/ArduinoJson/extras/tests/Helpers/Stream.h - -5 #agm - - - -8 as - cSm - - -10 - mpublic -: - -11 -vtu - ~ - $Sm -() {} - -12 -vtu -  - `ad -() = 0; - -13 -vtu - -size_t - - `adBys -(* -bufr -, size_ -ngth -) = 0; - -14 - } -}; - - @lib_standalone/ArduinoJson/extras/tests/Helpers/WString.h - -5 #agm - - - -7  - ~ - -10 as - cSg - { - -11 - mpublic -: - -12 -Sg -& -ݔ -+=(cڡ * -rhs -) { - -13 -_r - + -rhs -; - -14  * - mthis -; - -17 -size_t - - $ngth -() const { - -18  -_r -. - `size -(); - -19 - } -} - -21 cڡ * - $c_r -() const { - -22  -_r -. - `c_r -(); - -23 - } -} - -25 -bo - - gݔ -==(cڡ * -s -) const { - -26  -_r - = -s -; - -29 -nd - - gd -:: -oam -& -ݔ -<<( -d -::oam& -lhs -, cڡ :: -Sg -& -rhs -) { - -30 -lhs - << -rhs -. -_r -; - -31  - glhs -; - -34 - give -: - -35 -d -:: -rg - -_r -; - -38 -ass - - gSgSumHr -; - -40 -le - -bo - - gݔ -==(cڡ -d -:: -rg -& -lhs -, cڡ :: -Sg -& -rhs -) { - -41  -lhs - = -rhs -. -c_r -(); - - @lib_standalone/ArduinoJson/extras/tests/Helpers/progmem_emulation.hpp - -5  - ~ - -6  - ~ - -8 -ass - - g__FshSgHr -; - -10 -le - cڡ * - $cvtPToFsh -(cڡ * -s -) { - -11  -t_ -( -s -) + 42; - -12 - } -} - -14 -le - cڡ * - $cvtFshToP -(cڡ * -s -) { - -15  -t_ -( -s -) - 42; - -16 - } -} - -18  - #F -( -X - -t_ -( - `cvtPToFsh -(X)) - - ) - -19  - #FC -( -X - -t_ -( - `cvtPToFsh -(X)) - - ) - -21 -le - -ut8_t - - $pgm_ad_by -(cڡ * -p -) { - -22  * -t_ -( - `cvtFshToP -( -p -)); - -23 - } -} - - @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("Gbathree") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -DerliziE - - gr - = -derlizeJs -( - -12 -doc -, - -23 -JsObje - - gro - = -doc -. -as -(); - -25 -SECTION -("Success") { - -26 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -29 -SECTION -("ProtocolName") { - -30 -REQUIRE -("uesn" = -ro -["protocol_name"]); - -33 -SECTION -("Repeats") { - -34 -REQUIRE -(1 = -ro -["repeats"]); - -37 -SECTION -("Wait") { - -38 -REQUIRE -(0 = -ro -["wait"]); - -41 -SECTION -("Measurements") { - -42 -REQUIRE -(3 = -ro -["measurements"]); - -45 -SECTION -("Meas2_Light") { - -46 -REQUIRE -(15 = -ro -["meas2_light"]); - -49 -SECTION -("Meas1_Baseline") { - -50 -REQUIRE -(0 = -ro -["meas1_baseline"]); - -53 -SECTION -("Act_Light") { - -54 -REQUIRE -(20 = -ro -["act_light"]); - -57 -SECTION -("Pulsesize") { - -58 -REQUIRE -(25 = -ro -["pulsesize"]); - -61 -SECTION -("Pulsedistance") { - -62 -REQUIRE -(10000 = -ro -["pulsedistance"]); - -65 -SECTION -("Actintensity1") { - -66 -REQUIRE -(50 = -ro -["actintensity1"]); - -69 -SECTION -("Actintensity2") { - -70 -REQUIRE -(255 = -ro -["actintensity2"]); - -73 -SECTION -("Measintensity") { - -74 -REQUIRE -(255 = -ro -["measintensity"]); - -77 -SECTION -("Calintensity") { - -78 -REQUIRE -(255 = -ro -["calintensity"]); - -81 -SECTION -("Pulses") { - -84 -JsAay - - gy - = -ro -["pulses"]; - -85 -REQUIRE -( -y -. -isNu -(= -l -); - -87 -REQUIRE -(3 = -y -. -size -()); - -89  -size_t - - gi - = 0; i < 3; i++) { - -90 -REQUIRE -(50 = -y -[ -i -]); - -94 -SECTION -("Act") { - -97 -JsAay - - gy - = -ro -["act"]; - -98 -REQUIRE -( -y -. -isNu -(= -l -); - -100 -REQUIRE -(4 = -y -. -size -()); - -101 -REQUIRE -(2 = -y -[0]); - -102 -REQUIRE -(1 = -y -[1]); - -103 -REQUIRE -(2 = -y -[2]); - -104 -REQUIRE -(2 = -y -[3]); - -107 -SECTION -("Detectors") { - -110 -JsAay - - gy - = -ro -["detectors"]; - -111 -REQUIRE -( -y -. -isNu -(= -l -); - -112 -REQUIRE -(4 = -y -. -size -()); - -114  -size_t - - gi - = 0; i < 4; i++) { - -115 -JsAay - - gáedAay - = -y -[ -i -]; - -116 -REQUIRE -(4 = -áedAay -. -size -()); - -118  -size_t - - gj - = 0; j < 4; j++) { - -119 -REQUIRE -(34 = -áedAay -[ -j -]); - -124 -SECTION -("Alta") { - -127 -JsAay - - gy - = -ro -["alta"]; - -128 -REQUIRE -( -y -. -isNu -(= -l -); - -130 -REQUIRE -(4 = -y -. -size -()); - -132  -size_t - - gi - = 0; i < 4; i++) { - -133 -REQUIRE -(2 = -y -[ -i -]); - -137 -SECTION -("Altb") { - -140 -JsAay - - gy - = -ro -["altb"]; - -141 -REQUIRE -( -y -. -isNu -(= -l -); - -143 -REQUIRE -(4 = -y -. -size -()); - -145  -size_t - - gi - = 0; i < 4; i++) { - -146 -REQUIRE -(2 = -y -[ -i -]); - -150 -SECTION -("Measlights") { - -153 -JsAay - - gy - = -ro -["measlights"]; - -154 -REQUIRE -( -y -. -isNu -(= -l -); - -155 -REQUIRE -(4 = -y -. -size -()); - -157  -size_t - - gi - = 0; i < 4; i++) { - -158 -JsAay - - gáedAay - = -y -[ -i -]; - -160 -REQUIRE -(4 = -áedAay -. -size -()); - -162  -size_t - - gj - = 0; j < 4; j++) { - -163 -REQUIRE -(15 = -áedAay -[ -j -]); - -168 -SECTION -("Measlights2") { - -171 -JsAay - - gy - = -ro -["measlights2"]; - -172 -REQUIRE -( -y -. -isNu -(= -l -); - -173 -REQUIRE -(4 = -y -. -size -()); - -175  -size_t - - gi - = 0; i < 4; i++) { - -176 -JsAay - - gáedAay - = -y -[ -i -]; - -177 -REQUIRE -(4 = -áedAay -. -size -()); - -179  -size_t - - gj - = 0; j < 4; j++) { - -180 -REQUIRE -(15 = -áedAay -[ -j -]); - -185 -SECTION -("Altc") { - -188 -JsAay - - gy - = -ro -["altc"]; - -189 -REQUIRE -( -y -. -isNu -(= -l -); - -191 -REQUIRE -(4 = -y -. -size -()); - -193  -size_t - - gi - = 0; i < 4; i++) { - -194 -REQUIRE -(2 = -y -[ -i -]); - -198 -SECTION -("Altd") { - -201 -JsAay - - gy - = -ro -["altd"]; - -202 -REQUIRE -( -y -. -isNu -(= -l -); - -204 -REQUIRE -(4 = -y -. -size -()); - -206  -size_t - - gi - = 0; i < 4; i++) { - -207 -REQUIRE -(2 = -y -[ -i -]); - - @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp - -5  - ~ - -6  - ~ - -10 -TEST_CASE -("Issue772") { - -11 -DymicJsDocumt - -doc1 -(4096); - -12 -DymicJsDocumt - -doc2 -(4096); - -13 -DerliziE - - gr -; - -14 - gd -:: -rg - -da - = - -20 - gr - = -derlizeJs -( -doc1 -, -da -); - -21 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -23 - gda - = ""; - -24 -rlizeMsgPack -( -doc1 -, -da -); - -25 - gr - = -derlizeMsgPack -( -doc2 -, -da -); - -27 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - - @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("OpenWeatherMap") { - -10 cڡ * - gput_js - = "{\"cod\":\"200\",\"message\":0,\"cnt\":40,\"list\":[{\"dt\":1581498000,\"main\":{\"temp\":3.23,\"feels_like\":-3.63,\"temp_min\":3.23,\"temp_max\":4.62,\"pressure\":1014,\"sea_level\":1014,\"grnd_level\":1010,\"humidity\":58,\"temp_kf\":-1.39},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01d\"}],\"clouds\":{\"all\":0},\"wind\":{\"speed\":6.19,\"deg\":266},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 09:00:00\"},{\"dt\":1581508800,\"main\":{\"temp\":6.09,\"feels_like\":-1.07,\"temp_min\":6.09,\"temp_max\":7.13,\"pressure\":1015,\"sea_level\":1015,\"grnd_level\":1011,\"humidity\":48,\"temp_kf\":-1.04},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01d\"}],\"clouds\":{\"all\":9},\"wind\":{\"speed\":6.64,\"deg\":268},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 12:00:00\"},{\"dt\":1581519600,\"main\":{\"temp\":6.82,\"feels_like\":0.47,\"temp_min\":6.82,\"temp_max\":7.52,\"pressure\":1015,\"sea_level\":1015,\"grnd_level\":1011,\"humidity\":47,\"temp_kf\":-0.7},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":97},\"wind\":{\"speed\":5.55,\"deg\":267},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 15:00:00\"},{\"dt\":1581530400,\"main\":{\"temp\":5.76,\"feels_like\":1.84,\"temp_min\":5.76,\"temp_max\":6.11,\"pressure\":1015,\"sea_level\":1015,\"grnd_level\":1010,\"humidity\":57,\"temp_kf\":-0.35},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":99},\"wind\":{\"speed\":2.35,\"deg\":232},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-12 18:00:00\"},{\"dt\":1581541200,\"main\":{\"temp\":5.7,\"feels_like\":1.34,\"temp_min\":5.7,\"temp_max\":5.7,\"pressure\":1012,\"sea_level\":1012,\"grnd_level\":1008,\"humidity\":71,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":3.57,\"deg\":198},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-12 21:00:00\"},{\"dt\":1581552000,\"main\":{\"temp\":5.82,\"feels_like\":1.39,\"temp_min\":5.82,\"temp_max\":5.82,\"pressure\":1009,\"sea_level\":1009,\"grnd_level\":1004,\"humidity\":86,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":4.35,\"deg\":169},\"rain\":{\"3h\":0.5},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 00:00:00\"},{\"dt\":1581562800,\"main\":{\"temp\":5.9,\"feels_like\":-0.85,\"temp_min\":5.9,\"temp_max\":5.9,\"pressure\":1000,\"sea_level\":1000,\"grnd_level\":997,\"humidity\":86,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":7.69,\"deg\":178},\"rain\":{\"3h\":1.75},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 03:00:00\"},{\"dt\":1581573600,\"main\":{\"temp\":7.52,\"feels_like\":1.74,\"temp_min\":7.52,\"temp_max\":7.52,\"pressure\":993,\"sea_level\":993,\"grnd_level\":988,\"humidity\":88,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":6.84,\"deg\":184},\"rain\":{\"3h\":7.06},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 06:00:00\"},{\"dt\":1581584400,\"main\":{\"temp\":7.23,\"feels_like\":0.81,\"temp_min\":7.23,\"temp_max\":7.23,\"pressure\":992,\"sea_level\":992,\"grnd_level\":988,\"humidity\":69,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":49},\"wind\":{\"speed\":6.77,\"deg\":239},\"rain\":{\"3h\":0.25},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-13 09:00:00\"},{\"dt\":1581595200,\"main\":{\"temp\":7.67,\"feels_like\":2.81,\"temp_min\":7.67,\"temp_max\":7.67,\"pressure\":991,\"sea_level\":991,\"grnd_level\":987,\"humidity\":75,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":73},\"wind\":{\"speed\":4.93,\"deg\":235},\"rain\":{\"3h\":0.75},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-13 12:00:00\"},{\"dt\":1581606000,\"main\":{\"temp\":8.83,\"feels_like\":3.23,\"temp_min\":8.83,\"temp_max\":8.83,\"pressure\":993,\"sea_level\":993,\"grnd_level\":990,\"humidity\":64,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":83},\"wind\":{\"speed\":5.7,\"deg\":293},\"rain\":{\"3h\":0.38},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-13 15:00:00\"},{\"dt\":1581616800,\"main\":{\"temp\":7.42,\"feels_like\":1.77,\"temp_min\":7.42,\"temp_max\":7.42,\"pressure\":1000,\"sea_level\":1000,\"grnd_level\":996,\"humidity\":71,\"temp_kf\":0},\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"broken clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":54},\"wind\":{\"speed\":5.81,\"deg\":307},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 18:00:00\"},{\"dt\":1581627600,\"main\":{\"temp\":5.82,\"feels_like\":0.89,\"temp_min\":5.82,\"temp_max\":5.82,\"pressure\":1007,\"sea_level\":1007,\"grnd_level\":1003,\"humidity\":79,\"temp_kf\":0},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01n\"}],\"clouds\":{\"all\":6},\"wind\":{\"speed\":4.76,\"deg\":300},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-13 21:00:00\"},{\"dt\":1581638400,\"main\":{\"temp\":5.58,\"feels_like\":2.09,\"temp_min\":5.58,\"temp_max\":5.58,\"pressure\":1011,\"sea_level\":1011,\"grnd_level\":1007,\"humidity\":81,\"temp_kf\":0},\"weather\":[{\"id\":802,\"main\":\"Clouds\",\"description\":\"scattered clouds\",\"icon\":\"03n\"}],\"clouds\":{\"all\":47},\"wind\":{\"speed\":2.73,\"deg\":326},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 00:00:00\"},{\"dt\":1581649200,\"main\":{\"temp\":4.27,\"feels_like\":1.72,\"temp_min\":4.27,\"temp_max\":4.27,\"pressure\":1014,\"sea_level\":1014,\"grnd_level\":1010,\"humidity\":85,\"temp_kf\":0},\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"broken clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":69},\"wind\":{\"speed\":1.24,\"deg\":295},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 03:00:00\"},{\"dt\":1581660000,\"main\":{\"temp\":3.91,\"feels_like\":1.54,\"temp_min\":3.91,\"temp_max\":3.91,\"pressure\":1016,\"sea_level\":1016,\"grnd_level\":1012,\"humidity\":87,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":85},\"wind\":{\"speed\":0.98,\"deg\":211},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 06:00:00\"},{\"dt\":1581670800,\"main\":{\"temp\":4.77,\"feels_like\":0.74,\"temp_min\":4.77,\"temp_max\":4.77,\"pressure\":1017,\"sea_level\":1017,\"grnd_level\":1013,\"humidity\":78,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":3.19,\"deg\":184},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-14 09:00:00\"},{\"dt\":1581681600,\"main\":{\"temp\":9.03,\"feels_like\":4,\"temp_min\":9.03,\"temp_max\":9.03,\"pressure\":1016,\"sea_level\":1016,\"grnd_level\":1012,\"humidity\":73,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":5.43,\"deg\":206},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-14 12:00:00\"},{\"dt\":1581692400,\"main\":{\"temp\":9.86,\"feels_like\":4.22,\"temp_min\":9.86,\"temp_max\":9.86,\"pressure\":1014,\"sea_level\":1014,\"grnd_level\":1010,\"humidity\":74,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":6.58,\"deg\":209},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-14 15:00:00\"},{\"dt\":1581703200,\"main\":{\"temp\":9.48,\"feels_like\":4.8,\"temp_min\":9.48,\"temp_max\":9.48,\"pressure\":1013,\"sea_level\":1013,\"grnd_level\":1009,\"humidity\":83,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":5.6,\"deg\":206},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 18:00:00\"},{\"dt\":1581714000,\"main\":{\"temp\":10.03,\"feels_like\":6.48,\"temp_min\":10.03,\"temp_max\":10.03,\"pressure\":1013,\"sea_level\":1013,\"grnd_level\":1009,\"humidity\":93,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":4.75,\"deg\":226},\"rain\":{\"3h\":3.13},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-14 21:00:00\"},{\"dt\":1581724800,\"main\":{\"temp\":9.48,\"feels_like\":6.25,\"temp_min\":9.48,\"temp_max\":9.48,\"pressure\":1013,\"sea_level\":1013,\"grnd_level\":1009,\"humidity\":89,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":3.87,\"deg\":214},\"rain\":{\"3h\":2.38},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 00:00:00\"},{\"dt\":1581735600,\"main\":{\"temp\":9.12,\"feels_like\":7.08,\"temp_min\":9.12,\"temp_max\":9.12,\"pressure\":1011,\"sea_level\":1011,\"grnd_level\":1007,\"humidity\":96,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":2.43,\"deg\":194},\"rain\":{\"3h\":1},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 03:00:00\"},{\"dt\":1581746400,\"main\":{\"temp\":10.32,\"feels_like\":6.71,\"temp_min\":10.32,\"temp_max\":10.32,\"pressure\":1009,\"sea_level\":1009,\"grnd_level\":1004,\"humidity\":95,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":5.05,\"deg\":196},\"rain\":{\"3h\":1.75},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 06:00:00\"},{\"dt\":1581757200,\"main\":{\"temp\":11.57,\"feels_like\":5.85,\"temp_min\":11.57,\"temp_max\":11.57,\"pressure\":1006,\"sea_level\":1006,\"grnd_level\":1002,\"humidity\":85,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":7.91,\"deg\":205},\"rain\":{\"3h\":1.44},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-15 09:00:00\"},{\"dt\":1581768000,\"main\":{\"temp\":12.25,\"feels_like\":4.46,\"temp_min\":12.25,\"temp_max\":12.25,\"pressure\":1003,\"sea_level\":1003,\"grnd_level\":998,\"humidity\":78,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":10.65,\"deg\":201},\"rain\":{\"3h\":1.81},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-15 12:00:00\"},{\"dt\":1581778800,\"main\":{\"temp\":12.19,\"feels_like\":3.17,\"temp_min\":12.19,\"temp_max\":12.19,\"pressure\":998,\"sea_level\":998,\"grnd_level\":994,\"humidity\":80,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":12.52,\"deg\":204},\"rain\":{\"3h\":3.5},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-15 15:00:00\"},{\"dt\":1581789600,\"main\":{\"temp\":12.25,\"feels_like\":4.15,\"temp_min\":12.25,\"temp_max\":12.25,\"pressure\":996,\"sea_level\":996,\"grnd_level\":992,\"humidity\":83,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":11.42,\"deg\":215},\"rain\":{\"3h\":4.88},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 18:00:00\"},{\"dt\":1581800400,\"main\":{\"temp\":12.64,\"feels_like\":5.85,\"temp_min\":12.64,\"temp_max\":12.64,\"pressure\":994,\"sea_level\":994,\"grnd_level\":990,\"humidity\":76,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":9.22,\"deg\":217},\"rain\":{\"3h\":6.88},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-15 21:00:00\"},{\"dt\":1581811200,\"main\":{\"temp\":12.96,\"feels_like\":4.03,\"temp_min\":12.96,\"temp_max\":12.96,\"pressure\":988,\"sea_level\":988,\"grnd_level\":984,\"humidity\":83,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":12.88,\"deg\":211},\"rain\":{\"3h\":5.63},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 00:00:00\"},{\"dt\":1581822000,\"main\":{\"temp\":13.13,\"feels_like\":5.17,\"temp_min\":13.13,\"temp_max\":13.13,\"pressure\":987,\"sea_level\":987,\"grnd_level\":982,\"humidity\":82,\"temp_kf\":0},\"weather\":[{\"id\":501,\"main\":\"Rain\",\"description\":\"moderateain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":11.49,\"deg\":246},\"rain\":{\"3h\":7.25},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 03:00:00\"},{\"dt\":1581832800,\"main\":{\"temp\":9.07,\"feels_like\":0.79,\"temp_min\":9.07,\"temp_max\":9.07,\"pressure\":990,\"sea_level\":990,\"grnd_level\":986,\"humidity\":75,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10n\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":10.18,\"deg\":255},\"rain\":{\"3h\":2},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 06:00:00\"},{\"dt\":1581843600,\"main\":{\"temp\":8.05,\"feels_like\":-0.9,\"temp_min\":8.05,\"temp_max\":8.05,\"pressure\":994,\"sea_level\":994,\"grnd_level\":990,\"humidity\":51,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":100},\"wind\":{\"speed\":9.65,\"deg\":245},\"rain\":{\"3h\":1.19},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-16 09:00:00\"},{\"dt\":1581854400,\"main\":{\"temp\":9.54,\"feels_like\":0.13,\"temp_min\":9.54,\"temp_max\":9.54,\"pressure\":996,\"sea_level\":996,\"grnd_level\":991,\"humidity\":41,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04d\"}],\"clouds\":{\"all\":94},\"wind\":{\"speed\":10.03,\"deg\":243},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-16 12:00:00\"},{\"dt\":1581865200,\"main\":{\"temp\":9.08,\"feels_like\":-0.35,\"temp_min\":9.08,\"temp_max\":9.08,\"pressure\":996,\"sea_level\":996,\"grnd_level\":991,\"humidity\":44,\"temp_kf\":0},\"weather\":[{\"id\":500,\"main\":\"Rain\",\"description\":\"lightain\",\"icon\":\"10d\"}],\"clouds\":{\"all\":89},\"wind\":{\"speed\":10.15,\"deg\":246},\"rain\":{\"3h\":0.25},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-16 15:00:00\"},{\"dt\":1581876000,\"main\":{\"temp\":7.41,\"feels_like\":-1.34,\"temp_min\":7.41,\"temp_max\":7.41,\"pressure\":996,\"sea_level\":996,\"grnd_level\":992,\"humidity\":50,\"temp_kf\":0},\"weather\":[{\"id\":804,\"main\":\"Clouds\",\"description\":\"overcast clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":94},\"wind\":{\"speed\":9.21,\"deg\":240},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 18:00:00\"},{\"dt\":1581886800,\"main\":{\"temp\":6.42,\"feels_like\":-1.7,\"temp_min\":6.42,\"temp_max\":6.42,\"pressure\":997,\"sea_level\":997,\"grnd_level\":993,\"humidity\":58,\"temp_kf\":0},\"weather\":[{\"id\":803,\"main\":\"Clouds\",\"description\":\"broken clouds\",\"icon\":\"04n\"}],\"clouds\":{\"all\":67},\"wind\":{\"speed\":8.52,\"deg\":236},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-16 21:00:00\"},{\"dt\":1581897600,\"main\":{\"temp\":6.03,\"feels_like\":-2.65,\"temp_min\":6.03,\"temp_max\":6.03,\"pressure\":996,\"sea_level\":996,\"grnd_level\":993,\"humidity\":51,\"temp_kf\":0},\"weather\":[{\"id\":802,\"main\":\"Clouds\",\"description\":\"scattered clouds\",\"icon\":\"03n\"}],\"clouds\":{\"all\":38},\"wind\":{\"speed\":8.94,\"deg\":240},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-17 00:00:00\"},{\"dt\":1581908400,\"main\":{\"temp\":5.62,\"feels_like\":-2.86,\"temp_min\":5.62,\"temp_max\":5.62,\"pressure\":995,\"sea_level\":995,\"grnd_level\":991,\"humidity\":53,\"temp_kf\":0},\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear sky\",\"icon\":\"01n\"}],\"clouds\":{\"all\":0},\"wind\":{\"speed\":8.67,\"deg\":241},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-17 03:00:00\"},{\"dt\":1581919200,\"main\":{\"temp\":5.51,\"feels_like\":-2.41,\"temp_min\":5.51,\"temp_max\":5.51,\"pressure\":995,\"sea_level\":995,\"grnd_level\":991,\"humidity\":61,\"temp_kf\":0},\"weather\":[{\"id\":802,\"main\":\"Clouds\",\"description\":\"scattered clouds\",\"icon\":\"03n\"}],\"clouds\":{\"all\":35},\"wind\":{\"speed\":8.2,\"deg\":244},\"sys\":{\"pod\":\"n\"},\"dt_txt\":\"2020-02-17 06:00:00\"}],\"city\":{\"id\":2643743,\"name\":\"London\",\"coord\":{\"lat\":51.5085,\"lon\":-0.1257},\"country\":\"GB\",\"population\":1000000,\"timezone\":0,\"sunrise\":1581492085,\"sunset\":1581527294}}"; - -12 cڡ * - gexed_js - = "{\"list\":[" - -56 - gSticJsDocumt -<512> - gfr -; - -57 - gfr -["li"][0]["dt"] = -ue -; - -58 - gfr -["li"][0]["ma"]["mp"] = -ue -; - -59 - gfr -["li"][0]["wth"][0]["desti"] = -ue -; - -61 -DymicJsDocumt - -doc -(16384); - -63 -REQUIRE -( - -64 -derlizeJs -( -doc -, -put_js -, -DerliziOi -:: -Fr -( -fr -)) == - -65 -DerliziE -:: -Ok -); - -67 -REQUIRE -( -doc -. -as -< -d -:: -rg ->(= -exed_js -); - - @lib_standalone/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp - -5  - ~ - -6  - ~ - -8  - $check -( -d -:: -rg - -igJs -) { - -9 -DymicJsDocumt - - `doc -(16384); - -11 -d -:: -rg - -tyJs -; - -12 - `derlizeJs -( -doc -, -igJs -); - -13 - `rlizeJsPy -( -doc -, -tyJs -); - -15 -d -:: -rg - -fJs -; - -16 - `derlizeJs -( -doc -, -igJs -); - -17 - `rlizeJs -( -doc -, -fJs -); - -19 - `REQUIRE -( -igJs - = -fJs -); - -20 - } -} - -22 -TEST_CASE -("Round Trip:arse ->rettyPrint ->arse ->rint") { - -23 -SECTION -("OpenWeatherMap") { - -24 -check -( - -35 -SECTION -("YahooQueryLanguage") { - -36 -check -( - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/add.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::add()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsAay - - gy - = -doc -. -to -(); - -12 -SECTION -("int") { - -13 - gy -. -add -(123); - -14 -REQUIRE -(123 = -y -[0]. -as -<>()); - -15 -REQUIRE -( -y -[0]. -is -<>()); - -16 -REQUIRE -( -y -[0]. -is -<>()); - -19 -SECTION -("double") { - -20 - gy -. -add -(123.45); - -21 -REQUIRE -(123.45 = -y -[0]. -as -<>()); - -22 -REQUIRE -( -y -[0]. -is -<>()); - -23 -REQUIRE_FALSE -( -y -[0]. -is -< -bo ->()); - -26 -SECTION -("bool") { - -27 - gy -. -add -( -ue -); - -28 -REQUIRE -( -ue - = -y -[0]. -as -< -bo ->()); - -29 -REQUIRE -( -y -[0]. -is -< -bo ->()); - -30 -REQUIRE_FALSE -( -y -[0]. -is -<>()); - -33 -SECTION -("const char*") { - -34 cڡ * - gr - = "hello"; - -35 - gy -. -add -( -r -); - -36 -REQUIRE -( -r - = -y -[0]. -as -< -d -:: -rg ->()); - -37 -REQUIRE -( -y -[0]. -is -()); - -38 -REQUIRE_FALSE -( -y -[0]. -is -<>()); - -41 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -42 -SECTION -("vla") { - -43  - gi - = 16; - -44  - gv -[ -i -]; - -45 -ry -( -v -, "world"); - -47 - gy -. -add -( -v -); - -49 -REQUIRE -( -d -:: -rg -("wld"= -y -[0]); - -53 -SECTION -("nestedrray") { - -54 -DymicJsDocumt - -doc2 -(4096); - -55 -JsAay - - gr - = -doc2 -. -to -(); - -57 - gy -. -add -( -r -); - -59 -REQUIRE -( -r - = -y -[0]. -as -< -JsAay ->()); - -60 -REQUIRE -( -y -[0]. -is -< -JsAay ->()); - -61 -REQUIRE_FALSE -( -y -[0]. -is -<>()); - -64 -SECTION -("nested object") { - -65 -DymicJsDocumt - -doc2 -(4096); - -66 -JsObje - - gobj - = -doc2 -. -to -(); - -68 - gy -. -add -( -obj -); - -70 -REQUIRE -( -obj - = -y -[0]. -as -< -JsObje ->()); - -71 -REQUIRE -( -y -[0]. -is -< -JsObje ->()); - -72 -REQUIRE_FALSE -( -y -[0]. -is -<>()); - -75 -SECTION -("array subscript") { - -76 cڡ * - gr - = "hello"; - -77 -DymicJsDocumt - -doc2 -(4096); - -78 -JsAay - - gr - = -doc2 -. -to -(); - -79 - gr -. -add -( -r -); - -81 - gy -. -add -( -r -[0]); - -83 -REQUIRE -( -r - = -y -[0]); - -86 -SECTION -("object subscript") { - -87 cڡ * - gr - = "hello"; - -88 -DymicJsDocumt - -doc2 -(4096); - -89 -JsObje - - gobj - = -doc2 -. -to -(); - -90 - gobj -["x"] = -r -; - -92 - gy -. -add -( -obj -["x"]); - -94 -REQUIRE -( -r - = -y -[0]); - -97 -SECTION -("shouldot duplicate const char*") { - -98 - gy -. -add -("world"); - -99 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1); - -100 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -103 -SECTION -("should duplicate char*") { - -104 - gy -. -add -( -cڡ_ -<*>("world")); - -105 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(6); - -106 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -109 -SECTION -("should duplicate std::string") { - -110 - gy -. -add -( -d -:: -rg -("world")); - -111 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(6); - -112 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -115 -SECTION -("shouldot duplicate serialized(const char*)") { - -116 - gy -. -add -( -rlized -("{}")); - -117 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1); - -118 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -121 -SECTION -("should duplicate serialized(char*)") { - -122 - gy -. -add -( -rlized -( -cڡ_ -<*>("{}"))); - -123 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(2); - -124 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -127 -SECTION -("should duplicate serialized(std::string)") { - -128 - gy -. -add -( -rlized -( -d -:: -rg -("{}"))); - -129 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(2); - -130 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -133 -SECTION -("should duplicate serialized(std::string)") { - -134 - gy -. -add -( -rlized -( -d -:: -rg -("\0XX", 3))); - -135 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(3); - -136 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/copyArray.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("copyArray()") { - -9 -SECTION -("1D -> JsonArray") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsAay - - gy - = -doc -. -to -(); - -12  - gjs -[32]; - -13  - gsour -[] = {1, 2, 3}; - -15 -bo - - gok - = -cyAay -( -sour -, -y -); - -16 -REQUIRE -( -ok -); - -18 -rlizeJs -( -y -, -js -, (json)); - -19 -REQUIRE -( -d -:: -rg -("[1,2,3]"= -js -); - -22 -SECTION -("1D -> JsonArray, butotnough memory") { - -23 cڡ -size_t - - gSIZE - = -JSON_ARRAY_SIZE -(2); - -24 - gSticJsDocumt -< - gSIZE -> - gdoc -; - -25 -JsAay - - gy - = -doc -. -to -(); - -26  - gjs -[32]; - -27  - gsour -[] = {1, 2, 3}; - -29 -bo - - gok - = -cyAay -( -sour -, -y -); - -30 -REQUIRE_FALSE -( -ok -); - -32 -rlizeJs -( -y -, -js -, (json)); - -33 -REQUIRE -( -d -:: -rg -("[1,2]"= -js -); - -36 -SECTION -("2D -> JsonArray") { - -37 -DymicJsDocumt - -doc -(4096); - -38 -JsAay - - gy - = -doc -. -to -(); - -39  - gjs -[32]; - -40  - gsour -[][3] = {{1, 2, 3}, {4, 5, 6}}; - -42 -bo - - gok - = -cyAay -( -sour -, -y -); - -43 -REQUIRE -( -ok -); - -45 -rlizeJs -( -y -, -js -, (json)); - -46 -REQUIRE -( -d -:: -rg -("[[1,2,3],[4,5,6]]"= -js -); - -49 -SECTION -("2D -> JsonArray, butotnough memory") { - -50 cڡ -size_t - - gSIZE - = - -51 -JSON_ARRAY_SIZE -(2) + JSON_ARRAY_SIZE(3) + JSON_ARRAY_SIZE(2); - -52 - gSticJsDocumt -< - gSIZE -> - gdoc -; - -53 -JsAay - - gy - = -doc -. -to -(); - -54  - gjs -[32] = ""; - -55  - gsour -[][3] = {{1, 2, 3}, {4, 5, 6}}; - -57 -CAPTURE -( -SIZE -) - -59 -bo - - gok - = -cyAay -( -sour -, -y -); - -60 -CAPTURE -( -doc -. -memyUge -()); - -61 -CHECK_FALSE -( -ok -); - -63 -rlizeJs -( -y -, -js -, (json)); - -64 -REQUIRE -( -d -:: -rg -("[[1,2,3],[4,5]]"= -js -); - -67 -SECTION -("JsonArray -> 1D, with more spacehaneeded") { - -68 -DymicJsDocumt - -doc -(4096); - -69  - gjs -[] = "[1,2,3]"; - -70 -DerliziE - - gr - = -derlizeJs -( -doc -, -js -); - -71 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -72 -JsAay - - gy - = -doc -. -as -(); - -74  - gdei -[4] = {0}; - -75 -size_t - - gsu - = -cyAay -( -y -, -dei -); - -77 -REQUIRE -(3 = -su -); - -78 -REQUIRE -(1 = -dei -[0]); - -79 -REQUIRE -(2 = -dei -[1]); - -80 -REQUIRE -(3 = -dei -[2]); - -81 -REQUIRE -(0 = -dei -[3]); - -84 -SECTION -("JsonArray -> 1D, withoutnough space") { - -85 -DymicJsDocumt - -doc -(4096); - -86  - gjs -[] = "[1,2,3]"; - -87 -DerliziE - - gr - = -derlizeJs -( -doc -, -js -); - -88 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -89 -JsAay - - gy - = -doc -. -as -(); - -91  - gdei -[2] = {0}; - -92 -size_t - - gsu - = -cyAay -( -y -, -dei -); - -94 -REQUIRE -(2 = -su -); - -95 -REQUIRE -(1 = -dei -[0]); - -96 -REQUIRE -(2 = -dei -[1]); - -99 -SECTION -("JsonArray -> 2D") { - -100 -DymicJsDocumt - -doc -(4096); - -101  - gjs -[] = "[[1,2],[3],[4]]"; - -103 -DerliziE - - gr - = -derlizeJs -( -doc -, -js -); - -104 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -105 -JsAay - - gy - = -doc -. -as -(); - -107  - gdei -[3][2] = {{0}}; - -108 -cyAay -( -y -, -dei -); - -110 -REQUIRE -(1 = -dei -[0][0]); - -111 -REQUIRE -(2 = -dei -[0][1]); - -112 -REQUIRE -(3 = -dei -[1][0]); - -113 -REQUIRE -(0 = -dei -[1][1]); - -114 -REQUIRE -(4 = -dei -[2][0]); - -115 -REQUIRE -(0 = -dei -[2][1]); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/createNested.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray basics") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsAay - - gy - = -doc -. -to -(); - -12 -SECTION -("CreateNestedArray") { - -13 -JsAay - - gr - = -y -. -NeedAay -(); - -14 -REQUIRE -( -r - = -y -[0]. -as -< -JsAay ->()); - -17 -SECTION -("CreateNestedObject") { - -18 -JsObje - - gobj - = -y -. -NeedObje -(); - -19 -REQUIRE -( -obj - = -y -[0]. -as -< -JsObje ->()); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/equals.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::operator==()") { - -9 -DymicJsDocumt - -doc1 -(4096); - -10 -JsAay - - gy1 - = -doc1 -. -to -(); - -11 -JsAayCڡ - - gy1c - = -y1 -; - -13 -DymicJsDocumt - -doc2 -(4096); - -14 -JsAay - - gy2 - = -doc2 -. -to -(); - -15 -JsAayCڡ - - gy2c - = -y2 -; - -17 -SECTION -("shouldeturn false whenrrays differ") { - -18 - gy1 -. -add -("coucou"); - -19 - gy2 -. -add -(1); - -21 -REQUIRE_FALSE -( -y1 - = -y2 -); - -22 -REQUIRE_FALSE -( -y1c - = -y2c -); - -25 -SECTION -("shouldeturn false when LHS has morelements") { - -26 - gy1 -. -add -(1); - -27 - gy1 -. -add -(2); - -28 - gy2 -. -add -(1); - -30 -REQUIRE_FALSE -( -y1 - = -y2 -); - -31 -REQUIRE_FALSE -( -y1c - = -y2c -); - -34 -SECTION -("shouldeturn false when RHS has morelements") { - -35 - gy1 -. -add -(1); - -36 - gy2 -. -add -(1); - -37 - gy2 -. -add -(2); - -39 -REQUIRE_FALSE -( -y1 - = -y2 -); - -40 -REQUIRE_FALSE -( -y1c - = -y2c -); - -43 -SECTION -("shouldeturnrue whenrraysqual") { - -44 - gy1 -. -add -("coucou"); - -45 - gy2 -. -add -("coucou"); - -47 -REQUIRE -( -y1 - = -y2 -); - -48 -REQUIRE -( -y1c - = -y2c -); - -51 -SECTION -("shouldeturn false when RHS isull") { - -52 -JsAay - - gnu -; - -54 -REQUIRE_FALSE -( -y1 - = -nu -); - -57 -SECTION -("shouldeturn false when LHS isull") { - -58 -JsAay - - gnu -; - -60 -REQUIRE_FALSE -( -nu - = -y1 -); - -63 -SECTION -("shouldeturnrue when bothreull") { - -64 -JsAay - - gnu1 -; - -65 -JsAay - - gnu2 -; - -67 -REQUIRE -( -nu1 - = -nu2 -); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/get.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::get()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -derlizeJs -( -doc -, "[1,2,3]"); - -11 -JsAay - - gy - = -doc -. -as -(); - -13 -SECTION -("Overflow") { - -14 -REQUIRE -( -y -. -gEmt -(3). -isNu -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/isNull.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::isNull()") { - -9 -SECTION -("returnsrue") { - -10 -JsAay - - gr -; - -11 -REQUIRE -( -r -. -isNu -(= -ue -); - -14 -SECTION -("returns false") { - -15 -DymicJsDocumt - -doc -(4096); - -16 -JsAay - - gr - = -doc -. -to -(); - -17 -REQUIRE -( -r -. -isNu -(= -l -); - -21 -TEST_CASE -("JsonArrayConst::isNull()") { - -22 -SECTION -("returnsrue") { - -23 -JsAayCڡ - - gr -; - -24 -REQUIRE -( -r -. -isNu -(= -ue -); - -27 -SECTION -("returns false") { - -28 -DymicJsDocumt - -doc -(4096); - -29 -JsAayCڡ - - gr - = -doc -. -to -< -JsAay ->(); - -30 -REQUIRE -( -r -. -isNu -(= -l -); - -34 -TEST_CASE -("JsonArray::operator bool()") { - -35 -SECTION -("returns false") { - -36 -JsAay - - gr -; - -37 -REQUIRE -( -ic_ -< -bo ->( -r -= -l -); - -40 -SECTION -("returnsrue") { - -41 -DymicJsDocumt - -doc -(4096); - -42 -JsAay - - gr - = -doc -. -to -(); - -43 -REQUIRE -( -ic_ -< -bo ->( -r -= -ue -); - -47 -TEST_CASE -("JsonArrayConst::operator bool()") { - -48 -SECTION -("returns false") { - -49 -JsAayCڡ - - gr -; - -50 -REQUIRE -( -ic_ -< -bo ->( -r -= -l -); - -53 -SECTION -("returnsrue") { - -54 -DymicJsDocumt - -doc -(4096); - -55 -JsAayCڡ - - gr - = -doc -. -to -< -JsAay ->(); - -56 -REQUIRE -( -ic_ -< -bo ->( -r -= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/iterator.cpp - -5  - ~ - -6  - ~ - -8 - gme - < -tyme - - gTAay -> - -9  - $run__ -() { - -10 -SticJsDocumt -< - `JSON_ARRAY_SIZE -(2)> -doc -; - -11 -JsAay - -tmp - = -doc -. -to -(); - -12 -tmp -. - `add -(12); - -13 -tmp -. - `add -(34); - -15 -TAay - -y - = -tmp -; - -16 -tyme - -TAay -:: - - - - = -y -. - `beg -(); - -17 -tyme - -TAay -:: - - -d - = -y -. - `d -(); - -19 - `REQUIRE -( -d - ! - -); - -20 - `REQUIRE -(12 = - --> -me - -as -<>()); - -21 - `REQUIRE -(12 = -ic_ -<>(* - -)); - -22 ++ - -; - -23 - `REQUIRE -( -d - ! - -); - -24 - `REQUIRE -(34 = - --> -me - -as -<>()); - -25 - `REQUIRE -(34 = -ic_ -<>(* - -)); - -26 ++ - -; - -27 - `REQUIRE -( -d - = - -); - -28 - } -} - -30 -TEST_CASE -("JsonArray::begin()/end()") { - -31 -SECTION -("Nonull JsonArray") { - -32 - grun__ -< - gJsAay ->(); - -35 -SECTION -("Null JsonArray") { - -36 -JsAay - - gy -; - -38 -REQUIRE -( -y -. -beg -(=y. -d -()); - -42 -TEST_CASE -("JsonArrayConst::begin()/end()") { - -43 -SECTION -("Nonull JsonArrayConst") { - -44 - grun__ -< - gJsAayCڡ ->(); - -47 -SECTION -("Null JsonArrayConst") { - -48 -JsAayCڡ - - gy -; - -50 -REQUIRE -( -y -. -beg -(=y. -d -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/memoryUsage.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::memoryUsage()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsAay - - gr - = -doc -. -to -(); - -12 -SECTION -("return 0 if uninitialized") { - -13 -JsAay - - gunlized -; - -14 -REQUIRE -( -unlized -. -memyUge -() == 0); - -17 -SECTION -("JSON_ARRAY_SIZE(0) ifmpty") { - -18 -REQUIRE -( -r -. -memyUge -(= -JSON_ARRAY_SIZE -(0)); - -21 -SECTION -("JSON_ARRAY_SIZE(1)fterdd") { - -22 - gr -. -add -("hello"); - -23 -REQUIRE -( -r -. -memyUge -(= -JSON_ARRAY_SIZE -(1)); - -26 -SECTION -("includeshe size ofhe string") { - -27 - gr -. -add -( -d -:: -rg -("hello")); - -28 -REQUIRE -( -r -. -memyUge -(= -JSON_ARRAY_SIZE -(1) + 6); - -31 -SECTION -("includeshe size ofheestedrray") { - -32 -JsAay - - gáed - = -r -. -NeedAay -(); - -33 - gáed -. -add -(42); - -34 -REQUIRE -( -r -. -memyUge -(=2 * -JSON_ARRAY_SIZE -(1)); - -37 -SECTION -("includeshe size ofheestedrrect") { - -38 -JsObje - - gáed - = -r -. -NeedObje -(); - -39 - gáed -["hello"] = "world"; - -40 -REQUIRE -( -r -. -memyUge -(= -JSON_OBJECT_SIZE -(1+ -JSON_ARRAY_SIZE -(1)); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/nesting.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::nesting()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsAay - - gr - = -doc -. -to -(); - -12 -SECTION -("return 0 if uninitialized") { - -13 -JsAay - - gunlized -; - -14 -REQUIRE -( -unlized -. -ág -() == 0); - -17 -SECTION -("returns 1 formptyrray") { - -18 -REQUIRE -( -r -. -ág -() == 1); - -21 -SECTION -("returns 1 for flatrray") { - -22 - gr -. -add -("hello"); - -23 -REQUIRE -( -r -. -ág -() == 1); - -26 -SECTION -("returns 2 withestedrray") { - -27 - gr -. -NeedAay -(); - -28 -REQUIRE -( -r -. -ág -() == 2); - -31 -SECTION -("returns 2 withested object") { - -32 - gr -. -NeedObje -(); - -33 -REQUIRE -( -r -. -ág -() == 2); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/remove.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::remove()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsAay - - g_y - = -doc -. -to -(); - -11 - g_y -. -add -(1); - -12 - g_y -. -add -(2); - -13 - g_y -. -add -(3); - -15 -SECTION -("RemoveFirstByIndex") { - -16 - g_y -. -move -(0); - -18 -REQUIRE -(2 = -_y -. -size -()); - -19 -REQUIRE -( -_y -[0] == 2); - -20 -REQUIRE -( -_y -[1] == 3); - -23 -SECTION -("RemoveMiddleByIndex") { - -24 - g_y -. -move -(1); - -26 -REQUIRE -(2 = -_y -. -size -()); - -27 -REQUIRE -( -_y -[0] == 1); - -28 -REQUIRE -( -_y -[1] == 3); - -31 -SECTION -("RemoveLastByIndex") { - -32 - g_y -. -move -(2); - -34 -REQUIRE -(2 = -_y -. -size -()); - -35 -REQUIRE -( -_y -[0] == 1); - -36 -REQUIRE -( -_y -[1] == 2); - -39 -SECTION -("RemoveFirstByIterator") { - -40 - gJsAay -:: - - - - = -_y -. -beg -(); - -41 - g_y -. -move -( - -); - -43 -REQUIRE -(2 = -_y -. -size -()); - -44 -REQUIRE -( -_y -[0] == 2); - -45 -REQUIRE -( -_y -[1] == 3); - -48 -SECTION -("RemoveMiddleByIterator") { - -49 - gJsAay -:: - - - - = -_y -. -beg -(); - -50 ++ - g -; - -51 - g_y -. -move -( - -); - -53 -REQUIRE -(2 = -_y -. -size -()); - -54 -REQUIRE -( -_y -[0] == 1); - -55 -REQUIRE -( -_y -[1] == 3); - -58 -SECTION -("RemoveLastByIterator") { - -59 - gJsAay -:: - - - - = -_y -. -beg -(); - -60 ++ - g -; - -61 ++ - g -; - -62 - g_y -. -move -( - -); - -64 -REQUIRE -(2 = -_y -. -size -()); - -65 -REQUIRE -( -_y -[0] == 1); - -66 -REQUIRE -( -_y -[1] == 2); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/size.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonArray::size()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsAay - - gy - = -doc -. -to -(); - -12 -SECTION -("returns 0 ismpty") { - -13 -REQUIRE -(0U = -y -. -size -()); - -16 -SECTION -("increasesfterdd()") { - -17 - gy -. -add -("hello"); - -18 -REQUIRE -(1U = -y -. -size -()); - -20 - gy -. -add -("world"); - -21 -REQUIRE -(2U = -y -. -size -()); - -24 -SECTION -("remainshe sameftereplacingnlement") { - -25 - gy -. -add -("hello"); - -26 -REQUIRE -(1U = -y -. -size -()); - -28 - gy -[0] = "hello"; - -29 -REQUIRE -(1U = -y -. -size -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/std_string.cpp - -5  - ~ - -6  - ~ - -8  - $aSg -( -d -:: -rg - & -r -) { - -9 * -p - = -cڡ_ -<*>( -r -. - `c_r -()); - -10 * -p -) *p++ = '*'; - -11 - } -} - -13 -TEST_CASE -("std::string") { - -14 -DymicJsDocumt - -doc -(4096); - -15 -JsAay - - gy - = -doc -. -to -(); - -17 -SECTION -("add()") { - -18 - gd -:: -rg - -vue -("hello"); - -19 - gy -. -add -( -vue -); - -20 -aSg -( -vue -); - -21 -REQUIRE -( -d -:: -rg -("hlo"= -y -[0]); - -24 -SECTION -("operator[]") { - -25 - gd -:: -rg - -vue -("world"); - -26 - gy -. -add -("hello"); - -27 - gy -[0] = -vue -; - -28 -aSg -( -vue -); - -29 -REQUIRE -( -d -:: -rg -("wld"= -y -[0]); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/subscript.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonArray::operator[]") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsAay - - gy - = -doc -. -to -(); - -13 -SECTION -("Pad withull") { - -14 - gy -[2] = 2; - -15 - gy -[5] = 5; - -16 -REQUIRE -( -y -. -size -() == 6); - -17 -REQUIRE -( -y -[0]. -isNu -(= -ue -); - -18 -REQUIRE -( -y -[1]. -isNu -(= -ue -); - -19 -REQUIRE -( -y -[2]. -isNu -(= -l -); - -20 -REQUIRE -( -y -[3]. -isNu -(= -ue -); - -21 -REQUIRE -( -y -[4]. -isNu -(= -ue -); - -22 -REQUIRE -( -y -[5]. -isNu -(= -l -); - -23 -REQUIRE -( -y -[2] == 2); - -24 -REQUIRE -( -y -[5] == 5); - -27 -SECTION -("int") { - -28 - gy -[0] = 123; - -29 -REQUIRE -(123 = -y -[0]. -as -<>()); - -30 -REQUIRE -( -ue - = -y -[0]. -is -<>()); - -31 -REQUIRE -( -l - = -y -[0]. -is -< -bo ->()); - -34 #i -ARDUINOJSON_USE_LONG_LONG - - -35 -SECTION -("longong") { - -36 - gy -[0] = 9223372036854775807; - -37 -REQUIRE -(9223372036854775807 = -y -[0]. -as -< -t64_t ->()); - -38 -REQUIRE -( -ue - = -y -[0]. -is -< -t64_t ->()); - -39 -REQUIRE -( -l - = -y -[0]. -is -< -t32_t ->()); - -40 -REQUIRE -( -l - = -y -[0]. -is -< -bo ->()); - -44 -SECTION -("double") { - -45 - gy -[0] = 123.45; - -46 -REQUIRE -(123.45 = -y -[0]. -as -<>()); - -47 -REQUIRE -( -ue - = -y -[0]. -is -<>()); - -48 -REQUIRE -( -l - = -y -[0]. -is -<>()); - -51 -SECTION -("bool") { - -52 - gy -[0] = -ue -; - -53 -REQUIRE -( -ue - = -y -[0]. -as -< -bo ->()); - -54 -REQUIRE -( -ue - = -y -[0]. -is -< -bo ->()); - -55 -REQUIRE -( -l - = -y -[0]. -is -<>()); - -58 -SECTION -("const char*") { - -59 cڡ * - gr - = "hello"; - -61 - gy -[0] = -r -; - -62 -REQUIRE -( -r - = -y -[0]. -as -()); - -63 -REQUIRE -( -r - = -y -[0]. -as -<*>()); - -64 -REQUIRE -( -ue - = -y -[0]. -is -()); - -65 -REQUIRE -( -l - = -y -[0]. -is -<>()); - -68 -SECTION -("nestedrray") { - -69 -DymicJsDocumt - -doc2 -(4096); - -70 -JsAay - - gr2 - = -doc2 -. -to -(); - -72 - gy -[0] = -r2 -; - -74 -REQUIRE -( -r2 - = -y -[0]. -as -< -JsAay ->()); - -75 -REQUIRE -( -ue - = -y -[0]. -is -< -JsAay ->()); - -76 -REQUIRE -( -l - = -y -[0]. -is -<>()); - -79 -SECTION -("nested object") { - -80 -DymicJsDocumt - -doc2 -(4096); - -81 -JsObje - - gobj - = -doc2 -. -to -(); - -83 - gy -[0] = -obj -; - -85 -REQUIRE -( -obj - = -y -[0]. -as -< -JsObje ->()); - -86 -REQUIRE -( -ue - = -y -[0]. -is -< -JsObje ->()); - -87 -REQUIRE -( -l - = -y -[0]. -is -<>()); - -90 -SECTION -("array subscript") { - -91 -DymicJsDocumt - -doc2 -(4096); - -92 -JsAay - - gr2 - = -doc2 -. -to -(); - -93 cڡ * - gr - = "hello"; - -95 - gr2 -. -add -( -r -); - -97 - gy -[0] = -r2 -[0]; - -99 -REQUIRE -( -r - = -y -[0]); - -102 -SECTION -("object subscript") { - -103 cڡ * - gr - = "hello"; - -104 -DymicJsDocumt - -doc2 -(4096); - -105 -JsObje - - gobj - = -doc2 -. -to -(); - -107 - gobj -["x"] = -r -; - -109 - gy -[0] = -obj -["x"]; - -111 -REQUIRE -( -r - = -y -[0]); - -114 -SECTION -("shouldot duplicate const char*") { - -115 - gy -[0] = "world"; - -116 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1); - -117 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -120 -SECTION -("should duplicate char*") { - -121 - gy -[0] = -cڡ_ -<*>("world"); - -122 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(6); - -123 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -126 -SECTION -("should duplicate std::string") { - -127 - gy -[0] = -d -:: -rg -("world"); - -128 cڡ -size_t - - gexedSize - = -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(6); - -129 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -132 -SECTION -("array[0].to()") { - -133 -JsObje - - gobj - = -y -[0]. -to -(); - -134 -REQUIRE -( -obj -. -isNu -(= -l -); - -137 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -138 -SECTION -("set(VLA)") { - -139  - gi - = 16; - -140  - gv -[ -i -]; - -141 -ry -( -v -, "world"); - -143 - gy -. -add -("hello"); - -144 - gy -[0]. -t -( -v -); - -146 -REQUIRE -( -d -:: -rg -("wld"= -y -[0]); - -149 -SECTION -("operator=(VLA)") { - -150  - gi - = 16; - -151  - gv -[ -i -]; - -152 -ry -( -v -, "world"); - -154 - gy -. -add -("hello"); - -155 - gy -[0] = -v -; - -157 -REQUIRE -( -d -:: -rg -("wld"= -y -[0]); - -162 -TEST_CASE -("JsonArrayConst::operator[]") { - -163 -DymicJsDocumt - -doc -(4096); - -164 -JsAay - - gy - = -doc -. -to -(); - -165 - gy -. -add -(0); - -167 -SECTION -("int") { - -168 - gy -[0] = 123; - -169 -JsAayCڡ - - g - = -y -; - -171 -REQUIRE -(123 = - -[0]. -as -<>()); - -172 -REQUIRE -( -ue - = - -[0]. -is -<>()); - -173 -REQUIRE -( -l - = - -[0]. -is -< -bo ->()); - - @lib_standalone/ArduinoJson/extras/tests/JsonArray/undefined.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gCch -:: -Mchs -; - -10 -TEST_CASE -("Undefined JsonArray") { - -11 -JsAay - - gy -; - -13 -SECTION -("SubscriptFails") { - -14 -REQUIRE -( -y -[0]. -isNu -()); - -17 -SECTION -("AddFails") { - -18 - gy -. -add -(1); - -19 -REQUIRE -(0 = -y -. -size -()); - -22 -SECTION -("CreateNestedArrayFails") { - -23 -REQUIRE -( -y -. -NeedAay -(). -isNu -()); - -26 -SECTION -("CreateNestedObjectFails") { - -27 -REQUIRE -( -y -. -NeedObje -(). -isNu -()); - -30 -SECTION -("PrintToWritesBrackets") { - -31  - gbufr -[32]; - -32 -rlizeJs -( -y -, -bufr -, (buffer)); - -33 -REQUIRE_THAT -( -bufr -, -Equs -("null")); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp - -5  - ~ - -6  - ~ - -8  - $Sgifiti -( -DerliziE - -r -, -d -:: -rg - -exed -) { - -9 - `REQUIRE -( -r -. - `c_r -(= -exed -); - -10 - } -} - -12  - $Boifiti -( -DerliziE - -r -, -bo - -exed -) { - -14 - `CHECK -( -r - = -exed -); - -15 - `CHECK -( -r - !! -exed -); - -16 - `CHECK -(! -r - =! -exed -); - -19 - `CHECK -( -exed - = -r -); - -20 - `CHECK -(! -exed - ! -r -); - -21 - `CHECK -(! -exed - =! -r -); - -22 - } -} - -24  - #TEST_STRINGIFICATION -( -symb -) \ - -25 - `Sgifiti -( -DerliziE -:: -symb -, #symb) - - ) - -27  - #TEST_BOOLIFICATION -( -symb -, -exed -) \ - -28 - `Boifiti -( -DerliziE -:: -symb -, -exed -) - - ) - -30 -TEST_CASE -("DeserializationError") { - -31 -SECTION -("c_str()") { - -32 -TEST_STRINGIFICATION -( -Ok -); - -33 -TEST_STRINGIFICATION -( -TooDp -); - -34 -TEST_STRINGIFICATION -( -NoMemy -); - -35 -TEST_STRINGIFICATION -( -InvidIut -); - -36 -TEST_STRINGIFICATION -( -IncomeIut -); - -37 -TEST_STRINGIFICATION -( -NSu܋d -); - -40 -SECTION -("as boolean") { - -41 -TEST_BOOLIFICATION -( -Ok -, -l -); - -42 -TEST_BOOLIFICATION -( -TooDp -, -ue -); - -43 -TEST_BOOLIFICATION -( -NoMemy -, -ue -); - -44 -TEST_BOOLIFICATION -( -InvidIut -, -ue -); - -45 -TEST_BOOLIFICATION -( -IncomeIut -, -ue -); - -46 -TEST_BOOLIFICATION -( -NSu܋d -, -ue -); - -49 -SECTION -("ostream DeserializationError") { - -50 - gd -:: -rgam - -s -; - -51 - gs - << -DerliziE -(DerliziE:: -InvidIut -); - -52 -REQUIRE -( -s -. -r -() == "InvalidInput"); - -55 -SECTION -("ostream DeserializationError::Code") { - -56 - gd -:: -rgam - -s -; - -57 - gs - << - gDerliziE -:: -InvidIut -; - -58 -REQUIRE -( -s -. -r -() == "InvalidInput"); - -61 -SECTION -("out ofange") { - -62  - gcode - = 666; - -63 -DerliziE - -r -( - -64 * -t_ -< -DerliziE -:: -Code -*>(& -code -)); - -65 -REQUIRE -( -r -. -c_r -(= -d -:: -rg -("???")); - -68 -SECTION -("switch") { - -69 -DerliziE - - gr - = DerliziE:: -InvidIut -; - -70  - gr -. -code -()) { - -71  - gDerliziE -:: -InvidIut -: - -72 -SUCCEED -(); - -75 -FAIL -(); - -80 -SECTION -("Comparisons") { - -81 -DerliziE - -vidIut -(DerliziE:: -InvidIut -); - -82 -DerliziE - -ok -(DerliziE:: -Ok -); - -84 -SECTION -("DeserializationError == bool") { - -85 -REQUIRE -( -vidIut - = -ue -); - -86 -REQUIRE -( -ok - = -l -); - -89 -SECTION -("bool == DeserializationError") { - -90 -REQUIRE -( -ue - = -vidIut -); - -91 -REQUIRE -( -l - = -ok -); - -94 -SECTION -("DeserializationError != bool") { - -95 -REQUIRE -( -vidIut - ! -l -); - -96 -REQUIRE -( -ok - ! -ue -); - -99 -SECTION -("bool != DeserializationError") { - -100 -REQUIRE -( -l - ! -vidIut -); - -101 -REQUIRE -( -ue - ! -ok -); - -104 -SECTION -("Negations") { - -105 -REQUIRE -(! -vidIut - = -l -); - -106 -REQUIRE -(! -ok - = -ue -); - -109 -SECTION -("DeserializationError == Code") { - -110 -REQUIRE -( -vidIut - = -DerliziE -:: -InvidIut -); - -111 -REQUIRE -( -ok - = -DerliziE -:: -Ok -); - -114 -SECTION -("Code == DeserializationError") { - -115 -REQUIRE -( -DerliziE -:: -InvidIut - = -vidIut -); - -116 -REQUIRE -( -DerliziE -:: -Ok - = -ok -); - -119 -SECTION -("DeserializationError != Code") { - -120 -REQUIRE -( -vidIut - ! -DerliziE -:: -Ok -); - -121 -REQUIRE -( -ok - ! -DerliziE -:: -InvidIut -); - -124 -SECTION -("Code != DeserializationError") { - -125 -REQUIRE -( -DerliziE -:: -Ok - ! -vidIut -); - -126 -REQUIRE -( -DerliziE -:: -InvidIut - ! -ok -); - -129 -SECTION -("DeserializationError == DeserializationError") { - -130 -REQUIRE_FALSE -( -vidIut - = -ok -); - -133 -SECTION -("DeserializationError != DeserializationError") { - -134 -REQUIRE -( -vidIut - ! -ok -); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("deserialize JSONrray") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("Anmptyrray") { - -12 -DerliziE - - gr - = -derlizeJs -( -doc -, "[]"); - -13 -JsAay - - gr - = -doc -. -as -(); - -15 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -16 -REQUIRE -(0 = -r -. -size -()); - -19 -SECTION -("Spaces") { - -20 -SECTION -("Beforehe opening bracket") { - -21 -DerliziE - - gr - = -derlizeJs -( -doc -, " []"); - -22 -JsAay - - gr - = -doc -. -as -(); - -24 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -25 -REQUIRE -(0 = -r -. -size -()); - -28 -SECTION -("Before first value") { - -29 -DerliziE - - gr - = -derlizeJs -( -doc -, "[ \t\r\n42]"); - -30 -JsAay - - gr - = -doc -. -as -(); - -32 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -33 -REQUIRE -(1 = -r -. -size -()); - -34 -REQUIRE -( -r -[0] == 42); - -37 -SECTION -("After first value") { - -38 -DerliziE - - gr - = -derlizeJs -( -doc -, "[42 \t\r\n]"); - -39 -JsAay - - gr - = -doc -. -as -(); - -41 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -42 -REQUIRE -(1 = -r -. -size -()); - -43 -REQUIRE -( -r -[0] == 42); - -47 -SECTION -("Valuesypes") { - -48 -SECTION -("On integer") { - -49 -DerliziE - - gr - = -derlizeJs -( -doc -, "[42]"); - -50 -JsAay - - gr - = -doc -. -as -(); - -52 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -53 -REQUIRE -(1 = -r -. -size -()); - -54 -REQUIRE -( -r -[0] == 42); - -57 -SECTION -("Two integers") { - -58 -DerliziE - - gr - = -derlizeJs -( -doc -, "[42,84]"); - -59 -JsAay - - gr - = -doc -. -as -(); - -61 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -62 -REQUIRE -(2 = -r -. -size -()); - -63 -REQUIRE -( -r -[0] == 42); - -64 -REQUIRE -( -r -[1] == 84); - -67 -SECTION -("Double") { - -68 -DerliziE - - gr - = -derlizeJs -( -doc -, "[4.2,1e2]"); - -69 -JsAay - - gr - = -doc -. -as -(); - -71 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -72 -REQUIRE -(2 = -r -. -size -()); - -73 -REQUIRE -( -r -[0] == 4.2); - -74 -REQUIRE -( -r -[1] == 1e2); - -77 -SECTION -("Unsignedong") { - -78 -DerliziE - - gr - = -derlizeJs -( -doc -, "[4294967295]"); - -79 -JsAay - - gr - = -doc -. -as -(); - -81 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -82 -REQUIRE -(1 = -r -. -size -()); - -83 -REQUIRE -( -r -[0] == 4294967295UL); - -86 -SECTION -("Boolean") { - -87 -DerliziE - - gr - = -derlizeJs -( -doc -, "[true,false]"); - -88 -JsAay - - gr - = -doc -. -as -(); - -90 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -91 -REQUIRE -(2 = -r -. -size -()); - -92 -REQUIRE -( -r -[0] = -ue -); - -93 -REQUIRE -( -r -[1] = -l -); - -96 -SECTION -("Null") { - -97 -DerliziE - - gr - = -derlizeJs -( -doc -, "[null,null]"); - -98 -JsAay - - gr - = -doc -. -as -(); - -100 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -101 -REQUIRE -(2 = -r -. -size -()); - -102 -REQUIRE -( -r -[0]. -as -<*>() == 0); - -103 -REQUIRE -( -r -[1]. -as -<*>() == 0); - -107 -SECTION -("Quotes") { - -108 -SECTION -("Double quotes") { - -109 -DerliziE - - gr - = - -110 -derlizeJs -( -doc -, "[ \"hello\" , \"world\" ]"); - -111 -JsAay - - gr - = -doc -. -as -(); - -113 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -114 -REQUIRE -(2 = -r -. -size -()); - -115 -REQUIRE -( -r -[0] == "hello"); - -116 -REQUIRE -( -r -[1] == "world"); - -119 -SECTION -("Single quotes") { - -120 -DerliziE - - gr - = -derlizeJs -( -doc -, "[ 'hello' , 'world' ]"); - -121 -JsAay - - gr - = -doc -. -as -(); - -123 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -124 -REQUIRE -(2 = -r -. -size -()); - -125 -REQUIRE -( -r -[0] == "hello"); - -126 -REQUIRE -( -r -[1] == "world"); - -129 -SECTION -("No quotes") { - -130 -DerliziE - - gr - = -derlizeJs -( -doc -, "[ hello , world ]"); - -131 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -134 -SECTION -("Double quotes (empty strings)") { - -135 -DerliziE - - gr - = -derlizeJs -( -doc -, "[\"\",\"\"]"); - -136 -JsAay - - gr - = -doc -. -as -(); - -138 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -139 -REQUIRE -(2 = -r -. -size -()); - -140 -REQUIRE -( -r -[0] == ""); - -141 -REQUIRE -( -r -[1] == ""); - -144 -SECTION -("Single quotes (empty strings)") { - -145 -DerliziE - - gr - = -derlizeJs -( -doc -, "[\'\',\'\']"); - -146 -JsAay - - gr - = -doc -. -as -(); - -148 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -149 -REQUIRE -(2 = -r -. -size -()); - -150 -REQUIRE -( -r -[0] == ""); - -151 -REQUIRE -( -r -[1] == ""); - -154 -SECTION -("No quotes (empty strings)") { - -155 -DerliziE - - gr - = -derlizeJs -( -doc -, "[,]"); - -157 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -160 -SECTION -("Closing single quotes missing") { - -161 -DerliziE - - gr - = -derlizeJs -( -doc -, "[\"]"); - -163 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -166 -SECTION -("Closing double quotes missing") { - -167 -DerliziE - - gr - = -derlizeJs -( -doc -, "[\']"); - -169 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -173 -SECTION -("Prematureull-terminator") { - -174 -SECTION -("After opening bracket") { - -175 -DerliziE - - gr - = -derlizeJs -( -doc -, "["); - -177 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -180 -SECTION -("After value") { - -181 -DerliziE - - gr - = -derlizeJs -( -doc -, "[1"); - -183 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -186 -SECTION -("After comma") { - -187 -DerliziE - - gr - = -derlizeJs -( -doc -, "[1,"); - -189 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -193 -SECTION -("Prematurend of input") { - -194 cڡ * - gput - = "[1,2]"; - -196 -SECTION -("After opening bracket") { - -197 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -, 1); - -199 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -202 -SECTION -("After value") { - -203 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -, 2); - -205 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -208 -SECTION -("After comma") { - -209 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -, 3); - -211 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -215 -SECTION -("Misc") { - -216 -SECTION -("Nested objects") { - -217  - gjsSg -[] = - -220 -DerliziE - - gr - = -derlizeJs -( -doc -, -jsSg -); - -221 -JsAay - - gr - = -doc -. -as -(); - -223 -JsObje - - gobje1 - = -r -[0]; - -224 cڡ -JsObje - - gobje2 - = -r -[1]; - -225 -JsObje - - gobje3 - = -r -[2]; - -227 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -229 -REQUIRE -( -obje1 -. -isNu -(= -l -); - -230 -REQUIRE -( -obje2 -. -isNu -(= -l -); - -231 -REQUIRE -( -obje3 -. -isNu -(= -ue -); - -233 -REQUIRE -(2 = -obje1 -. -size -()); - -234 -REQUIRE -(2 = -obje2 -. -size -()); - -235 -REQUIRE -(0 = -obje3 -. -size -()); - -237 -REQUIRE -(1 = -obje1 -["a"]. -as -<>()); - -238 -REQUIRE -(2 = -obje1 -["b"]. -as -<>()); - -239 -REQUIRE -(3 = -obje2 -["c"]. -as -<>()); - -240 -REQUIRE -(4 = -obje2 -["d"]. -as -<>()); - -241 -REQUIRE -(0 = -obje3 -["e"]. -as -<>()); - -245 -SECTION -("Should clearhe JsonArray") { - -246 -derlizeJs -( -doc -, "[1,2,3,4]"); - -247 -derlizeJs -( -doc -, "[]"); - -248 -JsAay - - gr - = -doc -. -as -(); - -250 -REQUIRE -( -r -. -size -() == 0); - -251 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(0)); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array_static.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("deserialize JSONrray with StaticJsonDocument") { - -9 -SECTION -("BufferOfTheRightSizeForEmptyArray") { - -10 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(0)> - gdoc -; - -11  - gput -[] = "[]"; - -13 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -15 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -18 -SECTION -("TooSmallBufferForArrayWithOneValue") { - -19 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(0)> - gdoc -; - -20  - gput -[] = "[1]"; - -22 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -24 -REQUIRE -( -r - = -DerliziE -:: -NoMemy -); - -27 -SECTION -("BufferOfTheRightSizeForArrayWithOneValue") { - -28 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(1)> - gdoc -; - -29  - gput -[] = "[1]"; - -31 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -33 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -36 -SECTION -("TooSmallBufferForArrayWithNestedObject") { - -37 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(0+ -JSON_OBJECT_SIZE -(0)> - gdoc -; - -38  - gput -[] = "[{}]"; - -40 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -42 -REQUIRE -( -r - = -DerliziE -:: -NoMemy -); - -45 -SECTION -("BufferOfTheRightSizeForArrayWithNestedObject") { - -46 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(1+ -JSON_OBJECT_SIZE -(0)> - gdoc -; - -47  - gput -[] = "[{}]"; - -49 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -51 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -54 -SECTION -("CopyStringNotSpaces") { - -55 - gSticJsDocumt -<100> - gdoc -; - -57 -derlizeJs -( -doc -, " [ \"1234567\" ] "); - -59 -REQUIRE -( -JSON_ARRAY_SIZE -(1+ -JSON_STRING_SIZE -(8= -doc -. -memyUge -()); - -64 -SECTION -("Should clearhe JsonArray") { - -65 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(4)> - gdoc -; - -66  - gput -[] = "[1,2,3,4]"; - -68 -derlizeJs -( -doc -, -put -); - -69 -derlizeJs -( -doc -, "[]"); - -71 -JsAay - - gr - = -doc -. -as -(); - -72 -REQUIRE -( -r -. -size -() == 0); - -73 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(0)); - -76 -SECTION -("Array") { - -77 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(2)> - gdoc -; - -78  - gput -[] = "[1,2]"; - -80 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -81 -JsAay - - gr - = -doc -. -as -(); - -83 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -84 -REQUIRE -( -doc -. -is -< -JsAay ->()); - -85 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(2)); - -86 -REQUIRE -( -r -[0] == 1); - -87 -REQUIRE -( -r -[1] == 2); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp - -5  - #ARDUINOJSON_ENABLE_COMMENTS - 1 - - ) - -6  - ~ - -7  - ~ - -9  - ~ - -10  - ~ - -12 -TEST_CASE -("Filtering") { - -13  - sTeCa - { - -14 cڡ * - gput -; - -15 cڡ * - gfr -; - -16 -ut8_t - - gágLim -; - -17 -DerliziE - - gr -; - -18 cڡ * - gouut -; - -19 -size_t - - gmemyUge -; - -23 -TeCa - - gCas -[] = { - -28 -DerliziE -:: -Ok -, - -36 -DerliziE -:: -Ok -, - -44 -DerliziE -:: -Ok -, - -46 -JSON_OBJECT_SIZE -(1) + 16 - -52 -DerliziE -:: -Ok -, - -54 -JSON_OBJECT_SIZE -(0) - -61 -DerliziE -:: -Ok -, - -70 -DerliziE -:: -Ok -, - -79 -DerliziE -:: -Ok -, - -88 -DerliziE -:: -Ok -, - -97 -DerliziE -:: -Ok -, - -99 -JSON_OBJECT_SIZE -(1) + 8 - -106 -DerliziE -:: -Ok -, - -108 -JSON_OBJECT_SIZE -(1) + 8 - -115 -DerliziE -:: -Ok -, - -117 -JSON_OBJECT_SIZE -(1) + 8 - -124 -DerliziE -:: -Ok -, - -126 -JSON_OBJECT_SIZE -(1) + 8 - -133 -DerliziE -:: -Ok -, - -135 -JSON_OBJECT_SIZE -(1) + 8 - -142 -DerliziE -:: -Ok -, - -144 -JSON_OBJECT_SIZE -(1) + 8 - -151 -DerliziE -:: -Ok -, - -153 -JSON_OBJECT_SIZE -(1) + 8 - -160 -DerliziE -:: -Ok -, - -162 -JSON_OBJECT_SIZE -(1) + 8 - -169 -DerliziE -:: -Ok -, - -171 -JSON_OBJECT_SIZE -(1) + 8 - -178 -DerliziE -:: -Ok -, - -180 -JSON_OBJECT_SIZE -(1) + 8 - -187 -DerliziE -:: -Ok -, - -189 -JSON_OBJECT_SIZE -(1) + 8 - -196 -DerliziE -:: -Ok -, - -198 -JSON_OBJECT_SIZE -(1) + 8 - -205 -DerliziE -:: -Ok -, - -207 -JSON_OBJECT_SIZE -(1) + 8 - -213 -DerliziE -:: -Ok -, - -215 2 * -JSON_OBJECT_SIZE -(1) + 16 - -222 -DerliziE -:: -Ok -, - -224 -JSON_ARRAY_SIZE -(3) - -231 -DerliziE -:: -Ok -, - -233 -JSON_ARRAY_SIZE -(0) - -240 -DerliziE -:: -Ok -, - -242 -JSON_ARRAY_SIZE -(2+ 2 * -JSON_OBJECT_SIZE -(1) + 16 - -248 -DerliziE -:: -IncomeIut -, - -250 -JSON_ARRAY_SIZE -(0) - -256 -DerliziE -:: -IncomeIut -, - -258 -JSON_ARRAY_SIZE -(0) - -265 -DerliziE -:: -InvidIut -, - -267 -JSON_ARRAY_SIZE -(0) - -274 -DerliziE -:: -IncomeIut -, - -283 -DerliziE -:: -IncomeIut -, - -292 -DerliziE -:: -Ok -, - -301 -DerliziE -:: -Ok -, - -310 -DerliziE -:: -IncomeIut -, - -319 -DerliziE -:: -IncomeIut -, - -328 -DerliziE -:: -Ok -, - -337 -DerliziE -:: -Ok -, - -346 -DerliziE -:: -IncomeIut -, - -355 -DerliziE -:: -IncomeIut -, - -364 -DerliziE -:: -InvidIut -, - -373 -DerliziE -:: -IncomeIut -, - -382 -DerliziE -:: -InvidIut -, - -391 -DerliziE -:: -InvidIut -, - -400 -DerliziE -:: -TooDp -, - -409 -DerliziE -:: -TooDp -, - -418 -DerliziE -:: -TooDp -, - -420 -JSON_OBJECT_SIZE -(0) - -427 -DerliziE -:: -TooDp -, - -436 -DerliziE -:: -TooDp -, - -445 -DerliziE -:: -TooDp -, - -447 -JSON_ARRAY_SIZE -(0) - -454 -DerliziE -:: -IncomeIut -, - -463 -DerliziE -:: -InvidIut -, - -472 -DerliziE -:: -IncomeIut -, - -481 -DerliziE -:: -InvidIut -, - -490 -DerliziE -:: -InvidIut -, - -492 -JSON_ARRAY_SIZE -(0) - -499 -DerliziE -:: -IncomeIut -, - -501 -JSON_ARRAY_SIZE -(0) - -508 -DerliziE -:: -InvidIut -, - -510 -JSON_OBJECT_SIZE -(0) - -517 -DerliziE -:: -IncomeIut -, - -519 -JSON_OBJECT_SIZE -(0) - -526 -DerliziE -:: -InvidIut -, - -528 -JSON_OBJECT_SIZE -(0) + 8 - -535 -DerliziE -:: -IncomeIut -, - -537 -JSON_OBJECT_SIZE -(0) + 8 - -544 -DerliziE -:: -InvidIut -, - -546 -JSON_OBJECT_SIZE -(0) - -553 -DerliziE -:: -IncomeIut -, - -555 -JSON_OBJECT_SIZE -(0) - -562 -DerliziE -:: -Ok -, - -564 -JSON_OBJECT_SIZE -(0) - -571 -DerliziE -:: -InvidIut -, - -580 -DerliziE -:: -IncomeIut -, - -589 -DerliziE -:: -InvidIut -, - -598 -DerliziE -:: -IncomeIut -, - -607 -DerliziE -:: -InvidIut -, - -616 -DerliziE -:: -IncomeIut -, - -622  -size_t - - gi - = 0; i < ( - gCas -) / (testCases[0]); i++) { - -623 -CAPTURE -( -i -); - -625 -DymicJsDocumt - -fr -(256); - -626 -DymicJsDocumt - -doc -(256); - -627 - gTeCa -& - gtc - = -Cas -[ -i -]; - -629 -CAPTURE -( -tc -. -fr -); - -630 -REQUIRE -( -derlizeJs -( -fr -, -tc -.fr= -DerliziE -:: -Ok -); - -632 -CAPTURE -( -tc -. -put -); - -633 -CAPTURE -( -tc -. -ágLim -); - -634 -CHECK -( -derlizeJs -( -doc -, -tc -. -put -, -DerliziOi -:: -Fr -( -fr -), - -635 -DerliziOi -:: -NegLim -( - -636 -tc -. -ágLim -)=tc. -r -); - -638 -CHECK -( -doc -. -as -< -d -:: -rg ->(= -tc -. -ouut -); - -639 -CHECK -( -doc -. -memyUge -(= -tc -.memoryUsage); - -643 -TEST_CASE -("Overloads") { - -644 - gSticJsDocumt -<256> - gdoc -; - -645 - gSticJsDocumt -<256> - gfr -; - -647 -usg - -mea - - gDerliziOi -; - -651 -SECTION -("const char*, Filter") { - -652 -derlizeJs -( -doc -, "{}", -Fr -( -fr -)); - -655 -SECTION -("const char*, size_t, Filter") { - -656 -derlizeJs -( -doc -, "{}", 2, -Fr -( -fr -)); - -659 -SECTION -("const std::string&, Filter") { - -660 -derlizeJs -( -doc -, -d -:: -rg -("{}"), -Fr -( -fr -)); - -663 -SECTION -("std::istream&, Filter") { - -664 - gd -:: -rgam - -s -("{}"); - -665 -derlizeJs -( -doc -, -s -, -Fr -( -fr -)); - -668 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -669 -SECTION -("char[n], Filter") { - -670  - gi - = 4; - -671  - gv -[ -i -]; - -672 -ry -( -v -, "{}"); - -673 -derlizeJs -( -doc -, -v -, -Fr -( -fr -)); - -679 -SECTION -("const char*, Filter, NestingLimit") { - -680 -derlizeJs -( -doc -, "{}", -Fr -( -fr -), -NegLim -(5)); - -683 -SECTION -("const char*, size_t, Filter, NestingLimit") { - -684 -derlizeJs -( -doc -, "{}", 2, -Fr -( -fr -), -NegLim -(5)); - -687 -SECTION -("const std::string&, Filter, NestingLimit") { - -688 -derlizeJs -( -doc -, -d -:: -rg -("{}"), -Fr -( -fr -), -NegLim -(5)); - -691 -SECTION -("std::istream&, Filter, NestingLimit") { - -692 - gd -:: -rgam - -s -("{}"); - -693 -derlizeJs -( -doc -, -s -, -Fr -( -fr -), -NegLim -(5)); - -696 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -697 -SECTION -("char[n], Filter, NestingLimit") { - -698  - gi - = 4; - -699  - gv -[ -i -]; - -700 -ry -( -v -, "{}"); - -701 -derlizeJs -( -doc -, -v -, -Fr -( -fr -), -NegLim -(5)); - -707 -SECTION -("const char*, NestingLimit, Filter") { - -708 -derlizeJs -( -doc -, "{}", -NegLim -(5), -Fr -( -fr -)); - -711 -SECTION -("const char*, size_t, NestingLimit, Filter") { - -712 -derlizeJs -( -doc -, "{}", 2, -NegLim -(5), -Fr -( -fr -)); - -715 -SECTION -("const std::string&, NestingLimit, Filter") { - -716 -derlizeJs -( -doc -, -d -:: -rg -("{}"), -NegLim -(5), -Fr -( -fr -)); - -719 -SECTION -("std::istream&, NestingLimit, Filter") { - -720 - gd -:: -rgam - -s -("{}"); - -721 -derlizeJs -( -doc -, -s -, -NegLim -(5), -Fr -( -fr -)); - -724 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -725 -SECTION -("char[n], NestingLimit, Filter") { - -726  - gi - = 4; - -727  - gv -[ -i -]; - -728 -ry -( -v -, "{}"); - -729 -derlizeJs -( -doc -, -v -, -NegLim -(5), -Fr -( -fr -)); - -734 -TEST_CASE -("StringMover::reclaim()") { - -735 - gSticJsDocumt -<200> - gfr -; - -736 - gfr -["a"] = -ue -; - -737 - gfr -["c"] = -ue -; - -738  - gput -[] = "{\"a\":1,\"b\":2,\"c\":1}"; - -740 - gSticJsDocumt -<200> - gdoc -; - -741 -derlizeJs -( -doc -, -put -, -DerliziOi -:: -Fr -( -fr -)); - -743 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"a\":1,\"c\":1}"); - -745 -CHECK -( -put -[0] == 'a'); - -746 -CHECK -( -put -[1] == 0); - -747 -CHECK -( -put -[2] == 'c'); - -748 -CHECK -( -put -[3] == 0); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/incomplete_input.cpp - -5  - #ARDUINOJSON_DECODE_UNICODE - 1 - - ) - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("Truncated JSON input") { - -10 cڡ * - gCas -[] = {"\"hello", "\'hello", "'\\u", "'\\u00", "'\\u000", - -19 cڡ -size_t - - gCou - = ( -Cas -) / (testCases[0]); - -21 -DymicJsDocumt - -doc -(4096); - -23  -size_t - - gi - = 0; i < - gCou -; i++) { - -24 cڡ * - gput - = -Cas -[ -i -]; - -25 -CAPTURE -( -put -); - -26 -REQUIRE -( -derlizeJs -( -doc -, -put -) == - -27 -DerliziE -:: -IncomeIut -); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9  - ~"CuomRd.h -" - -11 -TEST_CASE -("deserializeJson(const std::string&)") { - -12 -DymicJsDocumt - -doc -(4096); - -14 -SECTION -("shouldccept const string") { - -15 cڡ - gd -:: -rg - -put -("[42]"); - -17 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -19 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -22 -SECTION -("shouldcceptemporary string") { - -23 -DerliziE - - gr - = -derlizeJs -( -doc -, -d -:: -rg -("[42]")); - -25 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -28 -SECTION -("should duplicate content") { - -29 - gd -:: -rg - -put -("[\"hello\"]"); - -31 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -32 - gput -[2] = 'X'; - -34 -JsAay - - gy - = -doc -. -as -(); - -35 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -36 -REQUIRE -( -d -:: -rg -("hlo"= -y -[0]); - -40 -TEST_CASE -("deserializeJson(std::istream&)") { - -41 -DymicJsDocumt - -doc -(4096); - -43 -SECTION -("array") { - -44 - gd -:: -irgam - -js -(" [ 42 ] "); - -46 -DerliziE - - gr - = -derlizeJs -( -doc -, -js -); - -47 -JsAay - - gr - = -doc -. -as -(); - -49 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -50 -REQUIRE -(1 = -r -. -size -()); - -51 -REQUIRE -(42 = -r -[0]); - -54 -SECTION -("object") { - -55 - gd -:: -irgam - -js -(" { hello : 'world' }"); - -57 -DerliziE - - gr - = -derlizeJs -( -doc -, -js -); - -58 -JsObje - - gobj - = -doc -. -as -(); - -60 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -61 -REQUIRE -(1 = -obj -. -size -()); - -62 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -65 -SECTION -("Shouldoteadfterhe closing brace ofnmpty object") { - -66 - gd -:: -irgam - -js -("{}123"); - -68 -derlizeJs -( -doc -, -js -); - -70 -REQUIRE -('1' =( -js -. -g -())); - -73 -SECTION -("Shouldoteadfterhe closing brace") { - -74 - gd -:: -irgam - -js -("{\"hello\":\"world\"}123"); - -76 -derlizeJs -( -doc -, -js -); - -78 -REQUIRE -('1' =( -js -. -g -())); - -81 -SECTION -("Shouldoteadfterhe closing bracket ofnmptyrray") { - -82 - gd -:: -irgam - -js -("[]123"); - -84 -derlizeJs -( -doc -, -js -); - -86 -REQUIRE -('1' =( -js -. -g -())); - -89 -SECTION -("Shouldoteadfterhe closing bracket") { - -90 - gd -:: -irgam - -js -("[\"hello\",\"world\"]123"); - -92 -derlizeJs -( -doc -, -js -); - -94 -REQUIRE -('1' =( -js -. -g -())); - -97 -SECTION -("Shouldoteadfterhe closing quote") { - -98 - gd -:: -irgam - -js -("\"hello\"123"); - -100 -derlizeJs -( -doc -, -js -); - -102 -REQUIRE -('1' =( -js -. -g -())); - -106 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -107 -TEST_CASE -("deserializeJson(VLA)") { - -108  - gi - = 9; - -109  - gv -[ -i -]; - -110 -ry -( -v -, "{\"a\":42}"); - -112 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1)> - gdoc -; - -113 -DerliziE - - gr - = -derlizeJs -( -doc -, -v -); - -115 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -119 -TEST_CASE -("deserializeJson(CustomReader)") { - -120 -DymicJsDocumt - -doc -(4096); - -121 -CuomRd - -ad -("[4,2]"); - -122 -DerliziE - - gr - = -derlizeJs -( -doc -, -ad -); - -124 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -125 -REQUIRE -( -doc -. -size -() == 2); - -126 -REQUIRE -( -doc -[0] == 4); - -127 -REQUIRE -( -doc -[1] == 2); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/invalid_input.cpp - -5  - #ARDUINOJSON_DECODE_UNICODE - 1 - - ) - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("Invalid JSON input") { - -10 cڡ * - gCas -[] = {"'\\u'", "'\\u000g'", "'\\u000'", "'\\u000G'", - -13 cڡ -size_t - - gCou - = ( -Cas -) / (testCases[0]); - -15 -DymicJsDocumt - -doc -(4096); - -17  -size_t - - gi - = 0; i < - gCou -; i++) { - -18 cڡ * - gput - = -Cas -[ -i -]; - -19 -CAPTURE -( -put -); - -20 -REQUIRE -( -derlizeJs -( -doc -, -put -= -DerliziE -:: -InvidIut -); - -24 -TEST_CASE -("Invalid JSON inputhat shouldass") { - -25 cڡ * - gCas -[] = { - -33 cڡ -size_t - - gCou - = ( -Cas -) / (testCases[0]); - -35 -DymicJsDocumt - -doc -(4096); - -37  -size_t - - gi - = 0; i < - gCou -; i++) { - -38 cڡ * - gput - = -Cas -[ -i -]; - -39 -CAPTURE -( -put -); - -40 -REQUIRE -( -derlizeJs -( -doc -, -put -= -DerliziE -:: -Ok -); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gCch -:: -Mchs -; - -10 -TEST_CASE -("deserializeJson(DynamicJsonDocument&)") { - -11 -DymicJsDocumt - -doc -(4096); - -13 -SECTION -("Edge cases") { - -14 -SECTION -("null char*") { - -15 -DerliziE - - gr - = -derlizeJs -( -doc -, -ic_ -<*>(0)); - -17 -REQUIRE -( -r - ! -DerliziE -:: -Ok -); - -20 -SECTION -("null const char*") { - -21 -DerliziE - - gr - = - -22 -derlizeJs -( -doc -, -ic_ -(0)); - -24 -REQUIRE -( -r - ! -DerliziE -:: -Ok -); - -27 -SECTION -("Empty input") { - -28 -DerliziE - - gr - = -derlizeJs -( -doc -, ""); - -30 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -33 -SECTION -("issue #628") { - -34 -DerliziE - - gr - = -derlizeJs -( -doc -, "null"); - -35 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -36 -REQUIRE -( -doc -. -is -<>(= -l -); - -39 -SECTION -("Garbage") { - -40 -DerliziE - - gr - = -derlizeJs -( -doc -, "%*$£¤"); - -42 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -46 -SECTION -("Booleans") { - -47 -SECTION -("True") { - -48 -DerliziE - - gr - = -derlizeJs -( -doc -, "true"); - -50 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -51 -REQUIRE -( -doc -. -is -< -bo ->()); - -52 -REQUIRE -( -doc -. -as -< -bo ->(= -ue -); - -55 -SECTION -("False") { - -56 -DerliziE - - gr - = -derlizeJs -( -doc -, "false"); - -58 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -59 -REQUIRE -( -doc -. -is -< -bo ->()); - -60 -REQUIRE -( -doc -. -as -< -bo ->(= -l -); - -64 -SECTION -("Prematureull-terminator") { - -65 -SECTION -("Inscape sequence") { - -66 -DerliziE - - gr - = -derlizeJs -( -doc -, "\"\\"); - -68 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -71 -SECTION -("In double quoted string") { - -72 -DerliziE - - gr - = -derlizeJs -( -doc -, "\"hello"); - -74 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -77 -SECTION -("In single quoted string") { - -78 -DerliziE - - gr - = -derlizeJs -( -doc -, "'hello"); - -80 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -84 -SECTION -("Prematurend of input") { - -85 -SECTION -("Inscape sequence") { - -86 -DerliziE - - gr - = -derlizeJs -( -doc -, "\"\\n\"", 2); - -88 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -91 -SECTION -("In double quoted string") { - -92 -DerliziE - - gr - = -derlizeJs -( -doc -, "\"hello\"", 6); - -94 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -97 -SECTION -("In single quoted string") { - -98 -DerliziE - - gr - = -derlizeJs -( -doc -, "'hello'", 6); - -100 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -104 -SECTION -("Should clearhe JsonVariant") { - -105 -derlizeJs -( -doc -, "[1,2,3]"); - -106 -derlizeJs -( -doc -, "{}"); - -108 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -109 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(0)); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp - -5  - ~ - -6  - ~ - -8  - #SHOULD_WORK -( -exessi - - `REQUIRE -( -DerliziE -:: -Ok - =exessi); - - ) - -9  - #SHOULD_FAIL -( -exessi -) \ - -10 - `REQUIRE -( -DerliziE -:: -TooDp - = -exessi -); - - ) - -12 -TEST_CASE -("JsonDeserializeresting") { - -13 -DymicJsDocumt - -doc -(4096); - -15 -SECTION -("Input = const char*") { - -16 -SECTION -("limit = 0") { - -17 - gDerliziOi -:: -NegLim - -ág -(0); - -18 -SHOULD_WORK -( -derlizeJs -( -doc -, "\"to\"", -ág -)); - -19 -SHOULD_WORK -( -derlizeJs -( -doc -, "123", -ág -)); - -20 -SHOULD_WORK -( -derlizeJs -( -doc -, "ue", -ág -)); - -21 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[]", -ág -)); - -22 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{}", -ág -)); - -23 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[\"to\"]", -ág -)); - -24 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{\"to\":1}", -ág -)); - -27 -SECTION -("limit = 1") { - -28 - gDerliziOi -:: -NegLim - -ág -(1); - -29 -SHOULD_WORK -( -derlizeJs -( -doc -, "[\"to\"]", -ág -)); - -30 -SHOULD_WORK -( -derlizeJs -( -doc -, "{\"to\":1}", -ág -)); - -31 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{\"to\":{}}", -ág -)); - -32 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{\"to\":[]}", -ág -)); - -33 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[[\"to\"]]", -ág -)); - -34 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[{\"to\":1}]", -ág -)); - -38 -SECTION -("char*nd size_t") { - -39 -SECTION -("limit = 0") { - -40 - gDerliziOi -:: -NegLim - -ág -(0); - -41 -SHOULD_WORK -( -derlizeJs -( -doc -, "\"to\"", 6, -ág -)); - -42 -SHOULD_WORK -( -derlizeJs -( -doc -, "123", 3, -ág -)); - -43 -SHOULD_WORK -( -derlizeJs -( -doc -, "ue", 4, -ág -)); - -44 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[]", 2, -ág -)); - -45 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{}", 2, -ág -)); - -46 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[\"to\"]", 8, -ág -)); - -47 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{\"to\":1}", 10, -ág -)); - -50 -SECTION -("limit = 1") { - -51 - gDerliziOi -:: -NegLim - -ág -(1); - -52 -SHOULD_WORK -( -derlizeJs -( -doc -, "[\"to\"]", 8, -ág -)); - -53 -SHOULD_WORK -( -derlizeJs -( -doc -, "{\"to\":1}", 10, -ág -)); - -54 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{\"to\":{}}", 11, -ág -)); - -55 -SHOULD_FAIL -( -derlizeJs -( -doc -, "{\"to\":[]}", 11, -ág -)); - -56 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[[\"to\"]]", 10, -ág -)); - -57 -SHOULD_FAIL -( -derlizeJs -( -doc -, "[{\"to\":1}]", 12, -ág -)); - -61 -SECTION -("Input = std::string") { - -62 -SECTION -("limit = 0") { - -63 - gDerliziOi -:: -NegLim - -ág -(0); - -64 -SHOULD_WORK -( -derlizeJs -( -doc -, -d -:: -rg -("\"to\""), -ág -)); - -65 -SHOULD_WORK -( -derlizeJs -( -doc -, -d -:: -rg -("123"), -ág -)); - -66 -SHOULD_WORK -( -derlizeJs -( -doc -, -d -:: -rg -("ue"), -ág -)); - -67 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("[]"), -ág -)); - -68 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("{}"), -ág -)); - -69 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("[\"to\"]"), -ág -)); - -70 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("{\"to\":1}"), -ág -)); - -73 -SECTION -("limit = 1") { - -74 - gDerliziOi -:: -NegLim - -ág -(1); - -75 -SHOULD_WORK -( -derlizeJs -( -doc -, -d -:: -rg -("[\"to\"]"), -ág -)); - -76 -SHOULD_WORK -( -derlizeJs -( -doc -, -d -:: -rg -("{\"to\":1}"), -ág -)); - -77 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("{\"to\":{}}"), -ág -)); - -78 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("{\"to\":[]}"), -ág -)); - -79 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("[[\"to\"]]"), -ág -)); - -80 -SHOULD_FAIL -( -derlizeJs -( -doc -, -d -:: -rg -("[{\"to\":1}]"), -ág -)); - -84 -SECTION -("Input = std::istream") { - -85 -SECTION -("limit = 0") { - -86 - gDerliziOi -:: -NegLim - -ág -(0); - -87 - gd -:: -irgam - -good -("true"); - -88 - gd -:: -irgam - -bad -("[]"); - -89 -SHOULD_WORK -( -derlizeJs -( -doc -, -good -, -ág -)); - -90 -SHOULD_FAIL -( -derlizeJs -( -doc -, -bad -, -ág -)); - -93 -SECTION -("limit = 1") { - -94 - gDerliziOi -:: -NegLim - -ág -(1); - -95 - gd -:: -irgam - -good -("[\"toto\"]"); - -96 - gd -:: -irgam - -bad -("{\"toto\":{}}"); - -97 -SHOULD_WORK -( -derlizeJs -( -doc -, -good -, -ág -)); - -98 -SHOULD_FAIL -( -derlizeJs -( -doc -, -bad -, -ág -)); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/number.cpp - -5  - #ARDUINOJSON_USE_LONG_LONG - 0 - - ) - -6  - #ARDUINOJSON_ENABLE_NAN - 1 - - ) - -7  - #ARDUINOJSON_ENABLE_INFINITY - 1 - - ) - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gmy - { - -14 -usg - - gARDUINOJSON_NAMESPACE -:: -isf -; - -15 -usg - - gARDUINOJSON_NAMESPACE -:: -i -; - -18 -TEST_CASE -("deserializen integer") { - -19 -DymicJsDocumt - -doc -(4096); - -21 -SECTION -("Integer") { - -22 -SECTION -("0") { - -23 -DerliziE - - gr - = -derlizeJs -( -doc -, "0"); - -24 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -25 -REQUIRE -( -doc -. -is -<>(= -ue -); - -26 -REQUIRE -( -doc -. -as -<>() == 0); - -27 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "0"); - -30 -SECTION -("Negative") { - -31 -DerliziE - - gr - = -derlizeJs -( -doc -, "-42"); - -33 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -34 -REQUIRE -( -doc -. -is -<>()); - -35 -REQUIRE_FALSE -( -doc -. -is -< -bo ->()); - -36 -REQUIRE -( -doc -. -as -<>() == -42); - -39 #i -LONG_MAX - == 2147483647 - -40 -SECTION -("LONG_MAX") { - -41 -DerliziE - - gr - = -derlizeJs -( -doc -, "2147483647"); - -43 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -44 -REQUIRE -( -doc -. -is -<>(= -ue -); - -45 -REQUIRE -( -doc -. -as -<>(= -LONG_MAX -); - -48 -SECTION -("LONG_MAX + 1") { - -49 -DerliziE - - gr - = -derlizeJs -( -doc -, "2147483648"); - -51 -CAPTURE -( -LONG_MIN -); - -52 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -53 -REQUIRE -( -doc -. -is -<>(= -l -); - -54 -REQUIRE -( -doc -. -is -<>(= -ue -); - -58 #i -LONG_MIN - == -2147483648 - -59 -SECTION -("LONG_MIN") { - -60 -DerliziE - - gr - = -derlizeJs -( -doc -, "-2147483648"); - -61 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -62 -REQUIRE -( -doc -. -is -<>(= -ue -); - -63 -REQUIRE -( -doc -. -as -<>(= -LONG_MIN -); - -66 -SECTION -("LONG_MIN - 1") { - -67 -DerliziE - - gr - = -derlizeJs -( -doc -, "-2147483649"); - -69 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -70 -REQUIRE -( -doc -. -is -<>(= -l -); - -71 -REQUIRE -( -doc -. -is -<>(= -ue -); - -75 #i -ULONG_MAX - == 4294967295 - -76 -SECTION -("ULONG_MAX") { - -77 -DerliziE - - gr - = -derlizeJs -( -doc -, "4294967295"); - -79 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -80 -REQUIRE -( -doc -. -is -<>(= -ue -); - -81 -REQUIRE -( -doc -. -as -<>(= -ULONG_MAX -); - -82 -REQUIRE -( -doc -. -is -<>(= -l -); - -85 -SECTION -("ULONG_MAX + 1") { - -86 -DerliziE - - gr - = -derlizeJs -( -doc -, "4294967296"); - -88 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -89 -REQUIRE -( -doc -. -is -<>(= -l -); - -90 -REQUIRE -( -doc -. -is -<>(= -ue -); - -95 -SECTION -("Floats") { - -96 -SECTION -("Double") { - -97 -DerliziE - - gr - = -derlizeJs -( -doc -, "-1.23e+4"); - -99 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -100 -REQUIRE_FALSE -( -doc -. -is -<>()); - -101 -REQUIRE -( -doc -. -is -<>()); - -102 -REQUIRE -( -doc -. -as -<>(= -Arox -(-1.23e+4)); - -105 -SECTION -("NaN") { - -106 -DerliziE - - gr - = -derlizeJs -( -doc -, "NaN"); - -107 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -108 -REQUIRE -( -doc -. -is -<>(= -ue -); - -109 -REQUIRE -( -my -:: -i -( -doc -. -as -<>())); - -112 -SECTION -("Infinity") { - -113 -DerliziE - - gr - = -derlizeJs -( -doc -, "Infinity"); - -114 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -115 -REQUIRE -( -doc -. -is -<>(= -ue -); - -116 -REQUIRE -( -my -:: -isf -( -doc -. -as -<>())); - -119 -SECTION -("+Infinity") { - -120 -DerliziE - - gr - = -derlizeJs -( -doc -, "+Infinity"); - -121 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -122 -REQUIRE -( -doc -. -is -<>(= -ue -); - -123 -REQUIRE -( -my -:: -isf -( -doc -. -as -<>())); - -126 -SECTION -("-Infinity") { - -127 -DerliziE - - gr - = -derlizeJs -( -doc -, "-Infinity"); - -128 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -129 -REQUIRE -( -doc -. -is -<>(= -ue -); - -130 -REQUIRE -( -my -:: -isf -( -doc -. -as -<>())); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("deserialize JSON object") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("Anmpty object") { - -12 -DerliziE - - gr - = -derlizeJs -( -doc -, "{}"); - -13 -JsObje - - gobj - = -doc -. -as -(); - -15 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -16 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -17 -REQUIRE -( -obj -. -size -() == 0); - -20 -SECTION -("Quotes") { - -21 -SECTION -("Double quotes") { - -22 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"key\":\"value\"}"); - -23 -JsObje - - gobj - = -doc -. -as -(); - -25 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -26 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -27 -REQUIRE -( -obj -. -size -() == 1); - -28 -REQUIRE -( -obj -["key"] == "value"); - -31 -SECTION -("Single quotes") { - -32 -DerliziE - - gr - = -derlizeJs -( -doc -, "{'key':'value'}"); - -33 -JsObje - - gobj - = -doc -. -as -(); - -35 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -36 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -37 -REQUIRE -( -obj -. -size -() == 1); - -38 -REQUIRE -( -obj -["key"] == "value"); - -41 -SECTION -("No quotes") { - -42 -DerliziE - - gr - = -derlizeJs -( -doc -, "{key:'value'}"); - -43 -JsObje - - gobj - = -doc -. -as -(); - -45 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -46 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -47 -REQUIRE -( -obj -. -size -() == 1); - -48 -REQUIRE -( -obj -["key"] == "value"); - -51 -SECTION -("No quotes,llow underscore in key") { - -52 -DerliziE - - gr - = -derlizeJs -( -doc -, "{_k_e_y_:42}"); - -53 -JsObje - - gobj - = -doc -. -as -(); - -55 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -56 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -57 -REQUIRE -( -obj -. -size -() == 1); - -58 -REQUIRE -( -obj -["_k_e_y_"] == 42); - -62 -SECTION -("Spaces") { - -63 -SECTION -("Beforehe key") { - -64 -DerliziE - - gr - = -derlizeJs -( -doc -, "{ \"key\":\"value\"}"); - -65 -JsObje - - gobj - = -doc -. -as -(); - -67 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -68 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -69 -REQUIRE -( -obj -. -size -() == 1); - -70 -REQUIRE -( -obj -["key"] == "value"); - -73 -SECTION -("Afterhe key") { - -74 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"key\" :\"value\"}"); - -75 -JsObje - - gobj - = -doc -. -as -(); - -77 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -78 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -79 -REQUIRE -( -obj -. -size -() == 1); - -80 -REQUIRE -( -obj -["key"] == "value"); - -83 -SECTION -("Beforehe value") { - -84 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"key\": \"value\"}"); - -85 -JsObje - - gobj - = -doc -. -as -(); - -87 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -88 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -89 -REQUIRE -( -obj -. -size -() == 1); - -90 -REQUIRE -( -obj -["key"] == "value"); - -93 -SECTION -("Afterhe value") { - -94 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"key\":\"value\" }"); - -95 -JsObje - - gobj - = -doc -. -as -(); - -97 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -98 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -99 -REQUIRE -( -obj -. -size -() == 1); - -100 -REQUIRE -( -obj -["key"] == "value"); - -103 -SECTION -("Beforehe colon") { - -104 -DerliziE - - gr - = - -105 -derlizeJs -( -doc -, "{\"key1\":\"value1\" ,\"key2\":\"value2\"}"); - -106 -JsObje - - gobj - = -doc -. -as -(); - -108 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -109 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -110 -REQUIRE -( -obj -. -size -() == 2); - -111 -REQUIRE -( -obj -["key1"] == "value1"); - -112 -REQUIRE -( -obj -["key2"] == "value2"); - -115 -SECTION -("Afterhe colon") { - -116 -DerliziE - - gr - = - -117 -derlizeJs -( -doc -, "{\"key1\":\"value1\" ,\"key2\":\"value2\"}"); - -118 -JsObje - - gobj - = -doc -. -as -(); - -120 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -121 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -122 -REQUIRE -( -obj -. -size -() == 2); - -123 -REQUIRE -( -obj -["key1"] == "value1"); - -124 -REQUIRE -( -obj -["key2"] == "value2"); - -128 -SECTION -("Valuesypes") { - -129 -SECTION -("String") { - -130 -DerliziE - - gr - = - -131 -derlizeJs -( -doc -, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); - -132 -JsObje - - gobj - = -doc -. -as -(); - -134 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -135 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -136 -REQUIRE -( -obj -. -size -() == 2); - -137 -REQUIRE -( -obj -["key1"] == "value1"); - -138 -REQUIRE -( -obj -["key2"] == "value2"); - -141 -SECTION -("Integer") { - -142 -DerliziE - - gr - = - -143 -derlizeJs -( -doc -, "{\"key1\":42,\"key2\":-42}"); - -144 -JsObje - - gobj - = -doc -. -as -(); - -146 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -147 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -148 -REQUIRE -( -obj -. -size -() == 2); - -149 -REQUIRE -( -obj -["key1"] == 42); - -150 -REQUIRE -( -obj -["key2"] == -42); - -153 -SECTION -("Double") { - -154 -DerliziE - - gr - = - -155 -derlizeJs -( -doc -, "{\"key1\":12.345,\"key2\":-7E89}"); - -156 -JsObje - - gobj - = -doc -. -as -(); - -158 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -159 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -160 -REQUIRE -( -obj -. -size -() == 2); - -161 -REQUIRE -( -obj -["key1"] == 12.345); - -162 -REQUIRE -( -obj -["key2"] == -7E89); - -165 -SECTION -("Booleans") { - -166 -DerliziE - - gr - = - -167 -derlizeJs -( -doc -, "{\"key1\":true,\"key2\":false}"); - -168 -JsObje - - gobj - = -doc -. -as -(); - -170 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -171 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -172 -REQUIRE -( -obj -. -size -() == 2); - -173 -REQUIRE -( -obj -["key1"] = -ue -); - -174 -REQUIRE -( -obj -["key2"] = -l -); - -177 -SECTION -("Null") { - -178 -DerliziE - - gr - = - -179 -derlizeJs -( -doc -, "{\"key1\":null,\"key2\":null}"); - -180 -JsObje - - gobj - = -doc -. -as -(); - -182 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -183 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -184 -REQUIRE -( -obj -. -size -() == 2); - -185 -REQUIRE -( -obj -["key1"]. -as -<*>() == 0); - -186 -REQUIRE -( -obj -["key2"]. -as -<*>() == 0); - -189 -SECTION -("Array") { - -190  - gjsSg -[] = " { \"ab\" : [ 1 , 2 ] , \"cd\" : [ 3 , 4 ] } "; - -192 -DerliziE - - gr - = -derlizeJs -( -doc -, -jsSg -); - -193 -JsObje - - gobj - = -doc -. -as -(); - -195 -JsAay - - gy1 - = -obj -["ab"]; - -196 cڡ -JsAay - - gy2 - = -obj -["cd"]; - -197 -JsAay - - gy3 - = -obj -["ef"]; - -199 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -201 -REQUIRE -( -y1 -. -isNu -(= -l -); - -202 -REQUIRE -( -y2 -. -isNu -(= -l -); - -203 -REQUIRE -( -y3 -. -isNu -(= -ue -); - -205 -REQUIRE -(2 = -y1 -. -size -()); - -206 -REQUIRE -(2 = -y2 -. -size -()); - -207 -REQUIRE -(0 = -y3 -. -size -()); - -209 -REQUIRE -(1 = -y1 -[0]. -as -<>()); - -210 -REQUIRE -(2 = -y1 -[1]. -as -<>()); - -212 -REQUIRE -(3 = -y2 -[0]. -as -<>()); - -213 -REQUIRE -(4 = -y2 -[1]. -as -<>()); - -215 -REQUIRE -(0 = -y3 -[0]. -as -<>()); - -219 -SECTION -("Prematureullerminator") { - -220 -SECTION -("After opening brace") { - -221 -DerliziE - - gr - = -derlizeJs -( -doc -, "{"); - -223 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -226 -SECTION -("After key") { - -227 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\""); - -229 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -232 -SECTION -("After colon") { - -233 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\":"); - -235 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -238 -SECTION -("After value") { - -239 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\":\"world\""); - -241 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -244 -SECTION -("After comma") { - -245 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\":\"world\","); - -247 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -251 -SECTION -("Misc") { - -252 -SECTION -("A quoted key without value") { - -253 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"key\"}"); - -255 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -258 -SECTION -("Aon-quoted key without value") { - -259 -DerliziE - - gr - = -derlizeJs -( -doc -, "{key}"); - -261 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -264 -SECTION -("A dangling comma") { - -265 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"key1\":\"value1\",}"); - -267 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -270 -SECTION -("nulls key") { - -271 -DerliziE - - gr - = -derlizeJs -( -doc -, "{null:\"value\"}"); - -273 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -276 -SECTION -("Repeated key") { - -277 -DerliziE - - gr - = -derlizeJs -( -doc -, "{a:{b:{c:1}},a:2}"); - -279 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -280 -REQUIRE -( -doc -["a"] == 2); - -284 -SECTION -("Should clearhe JsonObject") { - -285 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -286 -derlizeJs -( -doc -, "{}"); - -287 -JsObje - - gobj - = -doc -. -as -(); - -289 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -290 -REQUIRE -( -obj -. -size -() == 0); - -291 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(0)); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object_static.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("deserialize JSON object with StaticJsonDocument") { - -9 -SECTION -("BufferOfTheRightSizeForEmptyObject") { - -10 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(0)> - gdoc -; - -11  - gput -[] = "{}"; - -13 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -15 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -18 -SECTION -("TooSmallBufferForObjectWithOneValue") { - -19 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(0)> - gdoc -; - -20  - gput -[] = "{\"a\":1}"; - -22 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -24 -REQUIRE -( -r - = -DerliziE -:: -NoMemy -); - -27 -SECTION -("BufferOfTheRightSizeForObjectWithOneValue") { - -28 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1)> - gdoc -; - -29  - gput -[] = "{\"a\":1}"; - -31 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -33 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -36 -SECTION -("TooSmallBufferForObjectWithNestedObject") { - -37 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(0+ -JSON_ARRAY_SIZE -(0)> - gdoc -; - -38  - gput -[] = "{\"a\":[]}"; - -40 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -42 -REQUIRE -( -r - = -DerliziE -:: -NoMemy -); - -45 -SECTION -("BufferOfTheRightSizeForObjectWithNestedObject") { - -46 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1+ -JSON_ARRAY_SIZE -(0)> - gdoc -; - -47  - gput -[] = "{\"a\":[]}"; - -49 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -51 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -54 -SECTION -("Should clearhe JsonObject") { - -55 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1)> - gdoc -; - -56  - gput -[] = "{\"hello\":\"world\"}"; - -58 -derlizeJs -( -doc -, -put -); - -59 -derlizeJs -( -doc -, "{}"); - -61 -REQUIRE -( -doc -. -as -< -JsObje ->(). -size -() == 0); - -62 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(0)); - - @lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/string.cpp - -5  - #ARDUINOJSON_DECODE_UNICODE - 1 - - ) - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("Valid JSON strings value") { - -10  - sTeCa - { - -11 cڡ * - gput -; - -12 cڡ * - gexedOuut -; - -15 -TeCa - - gCas -[] = { - -36 cڡ -size_t - - gCou - = ( -Cas -) / (testCases[0]); - -38 -DymicJsDocumt - -doc -(4096); - -40  -size_t - - gi - = 0; i < - gCou -; i++) { - -41 cڡ - gTeCa -& - gCa - = -Cas -[ -i -]; - -42 -CAPTURE -( -Ca -. -put -); - -43 -DerliziE - - gr - = -derlizeJs -( -doc -, -Ca -. -put -); - -44 -CHECK -( -r - = -DerliziE -:: -Ok -); - -45 -CHECK -( -doc -. -as -< -d -:: -rg ->(= -Ca -. -exedOuut -); - -49 -TEST_CASE -("Truncated JSON string") { - -50 cڡ * - gCas -[] = {"\"hello", "\'hello", "'\\u", "'\\u00", "'\\u000"}; - -51 cڡ -size_t - - gCou - = ( -Cas -) / (testCases[0]); - -53 -DymicJsDocumt - -doc -(4096); - -55  -size_t - - gi - = 0; i < - gCou -; i++) { - -56 cڡ * - gput - = -Cas -[ -i -]; - -57 -CAPTURE -( -put -); - -58 -REQUIRE -( -derlizeJs -( -doc -, -put -) == - -59 -DerliziE -:: -IncomeIut -); - -63 -TEST_CASE -("Invalid JSON string") { - -64 cڡ * - gCas -[] = {"'\\u'", "'\\u000g'", "'\\u000'", - -66 cڡ -size_t - - gCou - = ( -Cas -) / (testCases[0]); - -68 -DymicJsDocumt - -doc -(4096); - -70  -size_t - - gi - = 0; i < - gCou -; i++) { - -71 cڡ * - gput - = -Cas -[ -i -]; - -72 -CAPTURE -( -put -); - -73 -REQUIRE -( -derlizeJs -( -doc -, -put -= -DerliziE -:: -InvidIut -); - -77 -TEST_CASE -("Notnoughoomo duplicatehe string") { - -78 -DymicJsDocumt - -doc -( -JSON_OBJECT_SIZE -(0)); - -80 -SECTION -("Quoted string") { - -81 -REQUIRE -( -derlizeJs -( -doc -, "{\"example\":1}") == - -82 -DerliziE -:: -NoMemy -); - -85 -SECTION -("Non-quoted string") { - -86 -REQUIRE -( -derlizeJs -( -doc -, "{example:1}") == - -87 -DerliziE -:: -NoMemy -); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/BasicJsonDocument.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -8  - ~ - -10 -usg - - gARDUINOJSON_NAMESPACE -:: -addPaddg -; - -11 -usg - - gARDUINOJSON_NAMESPACE -:: -move -; - -13 as - cSpygAot - { - -14 - mpublic -: - -15 - $SpygAot -(cڡ -SpygAot -& -c -: - $_log -( -c -. -_log -) {} - -16 - $SpygAot -( -d -:: -oam -& -log -: - $_log -( -log -{ - } -} - -18 * - $lo -( -size_t - -n -) { - -19 -_log - << "A" << -n -; - -20  - `mloc -( -n -); - -21 - } -} - -22  - $do -(* -p -) { - -23 -_log - << "F"; - -24 - ` -( -p -); - -25 - } -} - -27 - give -: - -28 -SpygAot -& -ݔ -=(cڡ SpygAot& -c -); - -30 - gd -:: -oam -& -_log -; - -33 as - cCڌbAot - { - -34 - mpublic -: - -35 - $CڌbAot -(: - $_abd -( -ue -) {} - -37 * - $lo -( -size_t - -n -) { - -38  -_abd - ? - `mloc -( -n -) : 0; - -39 - } -} - -41  - $do -(* -p -) { - -42 - ` -( -p -); - -43 - } -} - -45  - $dib -() { - -46 -_abd - = -l -; - -47 - } -} - -49 - give -: - -50 -bo - -_abd -; - -53 -TEST_CASE -("BasicJsonDocument") { - -54 - gd -:: -rgam - -log -; - -56 -SECTION -("Construct/Destruct") { - -57 { - gBasicJsDocumt -< - gSpygAot -> -doc -(4096, -log -); } - -58 -REQUIRE -( -log -. -r -() == "A4096F"); - -61 -SECTION -("Copy construct") { - -63 - gBasicJsDocumt -< - gSpygAot -> -doc1 -(4096, -log -); - -64 - gdoc1 -. -t -( -d -:: -rg -("The size ofhis string is 32!!")); - -66 - gBasicJsDocumt -< - gSpygAot -> -doc2 -( -doc1 -); - -68 -REQUIRE -( -doc1 -. -as -< -d -:: -rg ->() == "The size ofhis string is 32!!"); - -69 -REQUIRE -( -doc2 -. -as -< -d -:: -rg ->() == "The size ofhis string is 32!!"); - -70 -REQUIRE -( -doc2 -. -cy -() == 4096); - -72 -REQUIRE -( -log -. -r -() == "A4096A4096FF"); - -75 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -76 -SECTION -("Move construct") { - -78 - gBasicJsDocumt -< - gSpygAot -> -doc1 -(4096, -log -); - -79 - gdoc1 -. -t -( -d -:: -rg -("The size ofhis string is 32!!")); - -81 - gBasicJsDocumt -< - gSpygAot -> -doc2 -( -move -( -doc1 -)); - -83 -REQUIRE -( -doc2 -. -as -< -d -:: -rg ->() == "The size ofhis string is 32!!"); - -84 -REQUIRE -( -doc1 -. -as -< -d -:: -rg ->() == "null"); - -85 -REQUIRE -( -doc1 -. -cy -() == 0); - -86 -REQUIRE -( -doc2 -. -cy -() == 4096); - -88 -REQUIRE -( -log -. -r -() == "A4096F"); - -92 -SECTION -("Copyssign") { - -94 - gBasicJsDocumt -< - gSpygAot -> -doc1 -(4096, -log -); - -95 - gdoc1 -. -t -( -d -:: -rg -("The size ofhis string is 32!!")); - -96 - gBasicJsDocumt -< - gSpygAot -> -doc2 -(8, -log -); - -98 - gdoc2 - = -doc1 -; - -100 -REQUIRE -( -doc1 -. -as -< -d -:: -rg ->() == "The size ofhis string is 32!!"); - -101 -REQUIRE -( -doc2 -. -as -< -d -:: -rg ->() == "The size ofhis string is 32!!"); - -102 -REQUIRE -( -doc2 -. -cy -() == 4096); - -104 -REQUIRE -( -log -. -r -() == "A4096A8FA4096FF"); - -107 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -108 -SECTION -("Movessign") { - -110 - gBasicJsDocumt -< - gSpygAot -> -doc1 -(4096, -log -); - -111 - gdoc1 -. -t -( -d -:: -rg -("The size ofhis string is 32!!")); - -112 - gBasicJsDocumt -< - gSpygAot -> -doc2 -(8, -log -); - -114 - gdoc2 - = -move -( -doc1 -); - -116 -REQUIRE -( -doc2 -. -as -< -d -:: -rg ->() == "The size ofhis string is 32!!"); - -117 -REQUIRE -( -doc1 -. -as -< -d -:: -rg ->() == "null"); - -118 -REQUIRE -( -doc1 -. -cy -() == 0); - -119 -REQUIRE -( -doc2 -. -cy -() == 4096); - -121 -REQUIRE -( -log -. -r -() == "A4096A8FF"); - -125 -SECTION -("garbageCollect()") { - -126 - gBasicJsDocumt -< - gCڌbAot -> -doc -(4096); - -128 -SECTION -("whenllocation succeeds") { - -129 -derlizeJs -( -doc -, "{\"blanket\":1,\"dancing\":2}"); - -130 -REQUIRE -( -doc -. -cy -() == 4096); - -131 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(2) + 16); - -132 - gdoc -. -move -("blanket"); - -134 -bo - - gsu - = -doc -. -gbageC -(); - -136 -REQUIRE -( -su - = -ue -); - -137 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(1) + 8); - -138 -REQUIRE -( -doc -. -cy -() == 4096); - -139 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"dancing\":2}"); - -142 -SECTION -("whenllocation fails") { - -143 -derlizeJs -( -doc -, "{\"blanket\":1,\"dancing\":2}"); - -144 -REQUIRE -( -doc -. -cy -() == 4096); - -145 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(2) + 16); - -146 - gdoc -. -move -("blanket"); - -147 - gdoc -. -lot -(). -dib -(); - -149 -bo - - gsu - = -doc -. -gbageC -(); - -151 -REQUIRE -( -su - = -l -); - -152 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(2) + 16); - -153 -REQUIRE -( -doc -. -cy -() == 4096); - -154 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"dancing\":2}"); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/DynamicJsonDocument.cpp - -5  - ~ - -6  - ~ - -8 -usg - - gARDUINOJSON_NAMESPACE -:: -addPaddg -; - -10  - $REQUIRE_JSON -( -JsDocumt -& -doc -, cڡ -d -:: -rg -& -exed -) { - -11 -d -:: -rg - -js -; - -12 - `rlizeJs -( -doc -, -js -); - -13 - `REQUIRE -( -js - = -exed -); - -14 - } -} - -16 -TEST_CASE -("DynamicJsonDocument") { - -17 -DymicJsDocumt - -doc -(4096); - -19 -SECTION -("serializeJson()") { - -20 -JsObje - - gobj - = -doc -. -to -(); - -21 - gobj -["hello"] = "world"; - -23 - gd -:: -rg - -js -; - -24 -rlizeJs -( -doc -, -js -); - -26 -REQUIRE -( -js - == "{\"hello\":\"world\"}"); - -29 -SECTION -("memoryUsage()") { - -30 -SECTION -("startst zero") { - -31 -REQUIRE -( -doc -. -memyUge -() == 0); - -34 -SECTION -("JSON_ARRAY_SIZE(0)") { - -35 - gdoc -. - gto -< - gJsAay ->(); - -36 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(0)); - -39 -SECTION -("JSON_ARRAY_SIZE(1)") { - -40 - gdoc -. - gto -< - gJsAay ->(). -add -(42); - -41 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(1)); - -44 -SECTION -("JSON_ARRAY_SIZE(1) + JSON_ARRAY_SIZE(0)") { - -45 - gdoc -. - gto -< - gJsAay ->(). -NeedAay -(); - -46 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(1) + JSON_ARRAY_SIZE(0)); - -50 -SECTION -("capacity()") { - -51 -SECTION -("matches constructorrgument") { - -52 -DymicJsDocumt - -doc2 -(256); - -53 -REQUIRE -( -doc2 -. -cy -() == 256); - -56 -SECTION -("rounds up constructorrgument") { - -57 -DymicJsDocumt - -doc2 -(253); - -58 -REQUIRE -( -doc2 -. -cy -() == 256); - -62 -SECTION -("memoryUsage()") { - -63 -SECTION -("Increasesfterdding valueorray") { - -64 -JsAay - - gr - = -doc -. -to -(); - -66 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(0)); - -67 - gr -. -add -(42); - -68 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(1)); - -69 - gr -. -add -(43); - -70 -REQUIRE -( -doc -. -memyUge -(= -JSON_ARRAY_SIZE -(2)); - -73 -SECTION -("Increasesfterdding valueo object") { - -74 -JsObje - - gobj - = -doc -. -to -(); - -76 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(0)); - -77 - gobj -["a"] = 1; - -78 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(1)); - -79 - gobj -["b"] = 2; - -80 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(2)); - -85 -TEST_CASE -("DynamicJsonDocument constructor") { - -86 -SECTION -("Copy constructor") { - -87 -DymicJsDocumt - -doc1 -(1234); - -88 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -90 -DymicJsDocumt - - gdoc2 - = -doc1 -; - -92 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -94 -REQUIRE -( -doc2 -. -cy -(= -doc1 -.capacity()); - -97 -SECTION -("Construct from StaticJsonDocument") { - -98 - gSticJsDocumt -<200> - gdoc1 -; - -99 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -101 -DymicJsDocumt - - gdoc2 - = -doc1 -; - -103 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -104 -REQUIRE -( -doc2 -. -cy -(= -doc1 -.capacity()); - -107 -SECTION -("Construct from JsonObject") { - -108 - gSticJsDocumt -<200> - gdoc1 -; - -109 -JsObje - - gobj - = -doc1 -. -to -(); - -110 - gobj -["hello"] = "world"; - -112 -DymicJsDocumt - - gdoc2 - = -obj -; - -114 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -115 -REQUIRE -( -doc2 -. -cy -(= -addPaddg -( -doc1 -. -memyUge -())); - -118 -SECTION -("Construct from JsonArray") { - -119 - gSticJsDocumt -<200> - gdoc1 -; - -120 -JsAay - - gr - = -doc1 -. -to -(); - -121 - gr -. -add -("hello"); - -123 -DymicJsDocumt - - gdoc2 - = -r -; - -125 -REQUIRE_JSON -( -doc2 -, "[\"hello\"]"); - -126 -REQUIRE -( -doc2 -. -cy -(= -addPaddg -( -doc1 -. -memyUge -())); - -129 -SECTION -("Construct from JsonVariant") { - -130 - gSticJsDocumt -<200> - gdoc1 -; - -131 -derlizeJs -( -doc1 -, "42"); - -133 -DymicJsDocumt - - gdoc2 - = -doc1 -. -as -< -JsV ->(); - -135 -REQUIRE_JSON -( -doc2 -, "42"); - -136 -REQUIRE -( -doc2 -. -cy -(= -addPaddg -( -doc1 -. -memyUge -())); - -140 -TEST_CASE -("DynamicJsonDocumentssignment") { - -141 -SECTION -("Copyssignmentreserveshe buffer when capacity is sufficient") { - -142 -DymicJsDocumt - -doc1 -(1234); - -143 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -145 -DymicJsDocumt - -doc2 -( -doc1 -. -cy -()); - -146 - gdoc2 - = -doc1 -; - -148 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -149 -REQUIRE -( -doc2 -. -cy -(= -doc1 -.capacity()); - -152 -SECTION -("Copyssignmentealloche buffer when capacity is insufficient") { - -153 -DymicJsDocumt - -doc1 -(1234); - -154 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -155 -DymicJsDocumt - -doc2 -(8); - -157 -REQUIRE -( -doc2 -. -cy -(< -doc1 -. -memyUge -()); - -158 - gdoc2 - = -doc1 -; - -159 -REQUIRE -( -doc2 -. -cy -(> -doc1 -. -memyUge -()); - -161 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -164 -SECTION -("Assign from StaticJsonDocument") { - -165 - gSticJsDocumt -<200> - gdoc1 -; - -166 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -167 -DymicJsDocumt - -doc2 -(4096); - -168 - gdoc2 -. - gto -< - gJsV ->(). -t -(666); - -170 - gdoc2 - = -doc1 -; - -172 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -175 -SECTION -("Assign from JsonObject") { - -176 - gSticJsDocumt -<200> - gdoc1 -; - -177 -JsObje - - gobj - = -doc1 -. -to -(); - -178 - gobj -["hello"] = "world"; - -180 -DymicJsDocumt - -doc2 -(4096); - -181 - gdoc2 - = -obj -; - -183 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -184 -REQUIRE -( -doc2 -. -cy -() == 4096); - -187 -SECTION -("Assign from JsonArray") { - -188 - gSticJsDocumt -<200> - gdoc1 -; - -189 -JsAay - - gr - = -doc1 -. -to -(); - -190 - gr -. -add -("hello"); - -192 -DymicJsDocumt - -doc2 -(4096); - -193 - gdoc2 - = -r -; - -195 -REQUIRE_JSON -( -doc2 -, "[\"hello\"]"); - -196 -REQUIRE -( -doc2 -. -cy -() == 4096); - -199 -SECTION -("Assign from JsonVariant") { - -200 - gSticJsDocumt -<200> - gdoc1 -; - -201 -derlizeJs -( -doc1 -, "42"); - -203 -DymicJsDocumt - -doc2 -(4096); - -204 - gdoc2 - = -doc1 -. -as -< -JsV ->(); - -206 -REQUIRE_JSON -( -doc2 -, "42"); - -207 -REQUIRE -( -doc2 -. -cy -() == 4096); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/StaticJsonDocument.cpp - -5  - ~ - -6  - ~ - -8  - $REQUIRE_JSON -( -JsDocumt -& -doc -, cڡ -d -:: -rg -& -exed -) { - -9 -d -:: -rg - -js -; - -10 - `rlizeJs -( -doc -, -js -); - -11 - `REQUIRE -( -js - = -exed -); - -12 - } -} - -14 -TEST_CASE -("StaticJsonDocument") { - -15 -SECTION -("capacity()") { - -16 -SECTION -("matchesemplatergument") { - -17 - gSticJsDocumt -<256> - gdoc -; - -18 -REQUIRE -( -doc -. -cy -() == 256); - -21 -SECTION -("rounds upemplatergument") { - -22 - gSticJsDocumt -<253> - gdoc -; - -23 -REQUIRE -( -doc -. -cy -() == 256); - -27 -SECTION -("serializeJson()") { - -28 - gSticJsDocumt -<200> - gdoc -; - -29 -JsObje - - gobj - = -doc -. -to -(); - -30 - gobj -["hello"] = "world"; - -32 - gd -:: -rg - -js -; - -33 -rlizeJs -( -doc -, -js -); - -35 -REQUIRE -( -js - == "{\"hello\":\"world\"}"); - -38 -SECTION -("Copyssignment") { - -39 - gSticJsDocumt -<200> - gdoc1 -, - gdoc2 -; - -40 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -41 -derlizeJs -( -doc2 -, "{\"hello\":\"world\"}"); - -43 - gdoc1 - = -doc2 -; - -45 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -48 -SECTION -("Contructor") { - -49 -SECTION -("Copy constructor") { - -50 - gSticJsDocumt -<200> - gdoc1 -; - -51 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -53 - gSticJsDocumt -<200> - gdoc2 - = -doc1 -; - -55 -derlizeJs -( -doc1 -, "{\"HELLO\":\"WORLD\"}"); - -56 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -59 -SECTION -("Construct from StaticJsonDocument of different size") { - -60 - gSticJsDocumt -<300> - gdoc1 -; - -61 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -63 - gSticJsDocumt -<200> - gdoc2 - = -doc1 -; - -65 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -68 -SECTION -("Construct from DynamicJsonDocument") { - -69 -DymicJsDocumt - -doc1 -(4096); - -70 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -72 - gSticJsDocumt -<200> - gdoc2 - = -doc1 -; - -74 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -77 -SECTION -("Construct from JsonObject") { - -78 -DymicJsDocumt - -doc1 -(4096); - -79 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -81 - gSticJsDocumt -<200> - gdoc2 - = -doc1 -. -as -< -JsObje ->(); - -83 -derlizeJs -( -doc1 -, "{\"HELLO\":\"WORLD\"}"); - -84 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -87 -SECTION -("Construct from JsonArray") { - -88 -DymicJsDocumt - -doc1 -(4096); - -89 -derlizeJs -( -doc1 -, "[\"hello\",\"world\"]"); - -91 - gSticJsDocumt -<200> - gdoc2 - = -doc1 -. -as -< -JsAay ->(); - -93 -derlizeJs -( -doc1 -, "[\"HELLO\",\"WORLD\"]"); - -94 -REQUIRE_JSON -( -doc2 -, "[\"hello\",\"world\"]"); - -97 -SECTION -("Construct from JsonVariant") { - -98 -DymicJsDocumt - -doc1 -(4096); - -99 -derlizeJs -( -doc1 -, "42"); - -101 - gSticJsDocumt -<200> - gdoc2 - = -doc1 -. -as -< -JsV ->(); - -103 -REQUIRE_JSON -( -doc2 -, "42"); - -107 -SECTION -("Assignment") { - -108 -SECTION -("Copyssignment") { - -109 - gSticJsDocumt -<200> - gdoc1 -, - gdoc2 -; - -110 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -111 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -113 - gdoc2 - = -doc1 -; - -115 -derlizeJs -( -doc1 -, "{\"HELLO\":\"WORLD\"}"); - -116 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -119 -SECTION -("Assign from StaticJsonDocument of different capacity") { - -120 - gSticJsDocumt -<200> - gdoc1 -; - -121 - gSticJsDocumt -<300> - gdoc2 -; - -122 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -123 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -125 - gdoc2 - = -doc1 -; - -127 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -130 -SECTION -("Assign from DynamicJsonDocument") { - -131 - gSticJsDocumt -<200> - gdoc1 -; - -132 -DymicJsDocumt - -doc2 -(4096); - -133 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -134 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -136 - gdoc2 - = -doc1 -; - -138 -derlizeJs -( -doc1 -, "{\"HELLO\":\"WORLD\"}"); - -139 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -142 -SECTION -("Assign from JsonArray") { - -143 - gSticJsDocumt -<200> - gdoc1 -; - -144 -DymicJsDocumt - -doc2 -(4096); - -145 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -146 -derlizeJs -( -doc1 -, "[\"hello\",\"world\"]"); - -148 - gdoc2 - = -doc1 -. -as -< -JsAay ->(); - -150 -derlizeJs -( -doc1 -, "[\"HELLO\",\"WORLD\"]"); - -151 -REQUIRE_JSON -( -doc2 -, "[\"hello\",\"world\"]"); - -154 -SECTION -("Assign from JsonArrayConst") { - -155 - gSticJsDocumt -<200> - gdoc1 -; - -156 -DymicJsDocumt - -doc2 -(4096); - -157 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -158 -derlizeJs -( -doc1 -, "[\"hello\",\"world\"]"); - -160 - gdoc2 - = -doc1 -. -as -< -JsAayCڡ ->(); - -162 -derlizeJs -( -doc1 -, "[\"HELLO\",\"WORLD\"]"); - -163 -REQUIRE_JSON -( -doc2 -, "[\"hello\",\"world\"]"); - -166 -SECTION -("Assign from JsonObject") { - -167 - gSticJsDocumt -<200> - gdoc1 -; - -168 -DymicJsDocumt - -doc2 -(4096); - -169 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -170 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -172 - gdoc2 - = -doc1 -. -as -< -JsObje ->(); - -174 -derlizeJs -( -doc1 -, "{\"HELLO\":\"WORLD\"}"); - -175 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -178 -SECTION -("Assign from JsonObjectConst") { - -179 - gSticJsDocumt -<200> - gdoc1 -; - -180 -DymicJsDocumt - -doc2 -(4096); - -181 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -182 -derlizeJs -( -doc1 -, "{\"hello\":\"world\"}"); - -184 - gdoc2 - = -doc1 -. -as -< -JsObjeCڡ ->(); - -186 -derlizeJs -( -doc1 -, "{\"HELLO\":\"WORLD\"}"); - -187 -REQUIRE_JSON -( -doc2 -, "{\"hello\":\"world\"}"); - -190 -SECTION -("Assign from JsonVariant") { - -191 -DymicJsDocumt - -doc1 -(4096); - -192 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -193 -derlizeJs -( -doc1 -, "42"); - -195 - gSticJsDocumt -<200> - gdoc2 -; - -196 - gdoc2 - = -doc1 -. -as -< -JsV ->(); - -198 -REQUIRE_JSON -( -doc2 -, "42"); - -201 -SECTION -("Assign from JsonVariantConst") { - -202 -DymicJsDocumt - -doc1 -(4096); - -203 - gdoc1 -. - gto -< - gJsV ->(). -t -(666); - -204 -derlizeJs -( -doc1 -, "42"); - -206 - gSticJsDocumt -<200> - gdoc2 -; - -207 - gdoc2 - = -doc1 -. -as -< -JsVCڡ ->(); - -209 -REQUIRE_JSON -( -doc2 -, "42"); - -213 -SECTION -("garbageCollect()") { - -214 - gSticJsDocumt -<256> - gdoc -; - -215 - gdoc -[ -d -:: -rg -("example")] = std::string("example"); - -216 - gdoc -. -move -("example"); - -217 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(1) + 16); - -219 - gdoc -. -gbageC -(); - -221 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(0)); - -222 -REQUIRE_JSON -( -doc -, "{}"); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/add.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::add()") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("integer") { - -12 - gdoc -. -add -(42); - -14 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[42]"); - -17 -SECTION -("const char*") { - -18 - gdoc -. -add -("hello"); - -20 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[\"hello\"]"); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/compare.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("DynamicJsonDocument::operator==(const DynamicJsonDocument&)") { - -9 -DymicJsDocumt - -doc1 -(4096); - -10 -DymicJsDocumt - -doc2 -(4096); - -12 -SECTION -("Empty") { - -13 -REQUIRE -( -doc1 - = -doc2 -); - -14 -REQUIRE_FALSE -( -doc1 - ! -doc2 -); - -17 -SECTION -("With same object") { - -18 - gdoc1 -["hello"] = "world"; - -19 - gdoc2 -["hello"] = "world"; - -20 -REQUIRE -( -doc1 - = -doc2 -); - -21 -REQUIRE_FALSE -( -doc1 - ! -doc2 -); - -23 -SECTION -("With different object") { - -24 - gdoc1 -["hello"] = "world"; - -25 - gdoc2 -["world"] = "hello"; - -26 -REQUIRE_FALSE -( -doc1 - = -doc2 -); - -27 -REQUIRE -( -doc1 - ! -doc2 -); - -31 -TEST_CASE -("DynamicJsonDocument::operator==(const StaticJsonDocument&)") { - -32 -DymicJsDocumt - -doc1 -(4096); - -33 - gSticJsDocumt -<256> - gdoc2 -; - -35 -SECTION -("Empty") { - -36 -REQUIRE -( -doc1 - = -doc2 -); - -37 -REQUIRE_FALSE -( -doc1 - ! -doc2 -); - -40 -SECTION -("With same object") { - -41 - gdoc1 -["hello"] = "world"; - -42 - gdoc2 -["hello"] = "world"; - -43 -REQUIRE -( -doc1 - = -doc2 -); - -44 -REQUIRE_FALSE -( -doc1 - ! -doc2 -); - -47 -SECTION -("With different object") { - -48 - gdoc1 -["hello"] = "world"; - -49 - gdoc2 -["world"] = "hello"; - -50 -REQUIRE_FALSE -( -doc1 - = -doc2 -); - -51 -REQUIRE -( -doc1 - ! -doc2 -); - -55 -TEST_CASE -("StaticJsonDocument::operator==(const DynamicJsonDocument&)") { - -56 - gSticJsDocumt -<256> - gdoc1 -; - -57 -DymicJsDocumt - -doc2 -(4096); - -59 -SECTION -("Empty") { - -60 -REQUIRE -( -doc1 - = -doc2 -); - -61 -REQUIRE_FALSE -( -doc1 - ! -doc2 -); - -64 -SECTION -("With same object") { - -65 - gdoc1 -["hello"] = "world"; - -66 - gdoc2 -["hello"] = "world"; - -67 -REQUIRE -( -doc1 - = -doc2 -); - -68 -REQUIRE_FALSE -( -doc1 - ! -doc2 -); - -71 -SECTION -("With different object") { - -72 - gdoc1 -["hello"] = "world"; - -73 - gdoc2 -["world"] = "hello"; - -74 -REQUIRE_FALSE -( -doc1 - = -doc2 -); - -75 -REQUIRE -( -doc1 - ! -doc2 -); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/containsKey.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::containsKey()") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("returnsrue on object") { - -12 - gdoc -["hello"] = "world"; - -14 -REQUIRE -( -doc -. -cڏsKey -("hlo"= -ue -); - -17 -SECTION -("returnsrue when value isull") { - -18 - gdoc -["hlo"] = -ic_ -(0); - -20 -REQUIRE -( -doc -. -cڏsKey -("hlo"= -ue -); - -23 -SECTION -("returnsrue when key is std::string") { - -24 - gdoc -["hello"] = "world"; - -26 -REQUIRE -( -doc -. -cڏsKey -( -d -:: -rg -("hlo")= -ue -); - -29 -SECTION -("returns false on object") { - -30 - gdoc -["world"] = "hello"; - -32 -REQUIRE -( -doc -. -cڏsKey -("hlo"= -l -); - -35 -SECTION -("returns false onrray") { - -36 - gdoc -. -add -("hello"); - -38 -REQUIRE -( -doc -. -cڏsKey -("hlo"= -l -); - -41 -SECTION -("returns false onull") { - -42 -REQUIRE -( -doc -. -cڏsKey -("hlo"= -l -); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/createNested.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::createNestedArray()") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("promotesorray") { - -12 - gdoc -. -NeedAay -(); - -14 -REQUIRE -( -doc -. -is -< -JsAay ->()); - -18 -TEST_CASE -("JsonDocument::createNestedArray(key)") { - -19 -DymicJsDocumt - -doc -(4096); - -21 -SECTION -("key is const char*") { - -22 -SECTION -("promoteso object") { - -23 - gdoc -. -NeedAay -("hello"); - -25 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -29 -SECTION -("key is std::string") { - -30 -SECTION -("promoteso object") { - -31 - gdoc -. -NeedAay -( -d -:: -rg -("hello")); - -33 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -38 -TEST_CASE -("JsonDocument::createNestedObject()") { - -39 -DymicJsDocumt - -doc -(4096); - -41 -SECTION -("promotesorray") { - -42 - gdoc -. -NeedObje -(); - -44 -REQUIRE -( -doc -. -is -< -JsAay ->()); - -48 -TEST_CASE -("JsonDocument::createNestedObject(key)") { - -49 -DymicJsDocumt - -doc -(4096); - -51 -SECTION -("key is const char*") { - -52 -SECTION -("promoteso object") { - -53 - gdoc -. -NeedObje -("hello"); - -55 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -59 -SECTION -("key is std::string") { - -60 -SECTION -("promoteso object") { - -61 - gdoc -. -NeedObje -( -d -:: -rg -("hello")); - -63 -REQUIRE -( -doc -. -is -< -JsObje ->()); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/isNull.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::isNull()") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("returnsrue if uninitialized") { - -12 -REQUIRE -( -doc -. -isNu -(= -ue -); - -15 -SECTION -("returns falseftero()") { - -16 - gdoc -. - gto -< - gJsObje ->(); - -17 -REQUIRE -( -doc -. -isNu -(= -l -); - -20 -SECTION -("returns falseftero()") { - -21 - gdoc -. - gto -< - gJsAay ->(); - -22 -REQUIRE -( -doc -. -isNu -(= -l -); - -25 -SECTION -("returnsrueftero()") { - -26 -REQUIRE -( -doc -. -isNu -(= -ue -); - -29 -SECTION -("returns falsefter set()") { - -30 - gdoc -. - gto -< - gJsV ->(). -t -(42); - -31 -REQUIRE -( -doc -. -isNu -(= -l -); - -34 -SECTION -("returnsruefter clear()") { - -35 - gdoc -. - gto -< - gJsObje ->(); - -36 - gdoc -. -r -(); - -37 -REQUIRE -( -doc -. -isNu -(= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/nesting.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::nesting()") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("return 0 if uninitialized") { - -12 -REQUIRE -( -doc -. -ág -() == 0); - -15 -SECTION -("returns 0 for string") { - -16 -JsV - - gv - = -doc -. -to -(); - -17 - gv -. -t -("hello"); - -18 -REQUIRE -( -doc -. -ág -() == 0); - -21 -SECTION -("returns 1 formpty object") { - -22 - gdoc -. - gto -< - gJsObje ->(); - -23 -REQUIRE -( -doc -. -ág -() == 1); - -26 -SECTION -("returns 1 formptyrray") { - -27 - gdoc -. - gto -< - gJsAay ->(); - -28 -REQUIRE -( -doc -. -ág -() == 1); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/remove.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::remove()") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("remove(int)") { - -12 - gdoc -. -add -(1); - -13 - gdoc -. -add -(2); - -14 - gdoc -. -add -(3); - -16 - gdoc -. -move -(1); - -18 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[1,3]"); - -21 -SECTION -("remove(const char *)") { - -22 - gdoc -["a"] = 1; - -23 - gdoc -["b"] = 2; - -25 - gdoc -. -move -("a"); - -27 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"b\":2}"); - -30 -SECTION -("remove(std::string)") { - -31 - gdoc -["a"] = 1; - -32 - gdoc -["b"] = 2; - -34 - gdoc -. -move -( -d -:: -rg -("b")); - -36 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"a\":1}"); - -39 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -40 -SECTION -("remove(vla)") { - -41 - gdoc -["a"] = 1; - -42 - gdoc -["b"] = 2; - -44  - gi - = 4; - -45  - gv -[ -i -]; - -46 -ry -( -v -, "b"); - -47 - gdoc -. -move -( -v -); - -49 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"a\":1}"); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp - -5  - ~ - -6  - ~ - -8  - ~ - -9  - ~ - -11 -usg - - gARDUINOJSON_NAMESPACE -:: -addPaddg -; - -13 as - cArmedAot - { - -14 - mpublic -: - -15 - $ArmedAot -(: - `_r -(0), - $_size -(0) {} - -17 * - $lo -( -size_t - -size -) { - -18 -_r - = - `mloc -( -size -); - -19 -_size - = -size -; - -20  -_r -; - -21 - } -} - -23  - $do -(* -r -) { - -24 - `REQUIRE -( -r - = -_r -); - -25 - ` -( -r -); - -26 -_r - = 0; - -27 -_size - = 0; - -28 - } -} - -30 * - $lo -(* -r -, -size_t - -w_size -) { - -31 - `REQUIRE -( -r - = -_r -); - -34 * -w_r - = - `mloc -( -w_size -); - -35 - `memy -( -w_r -, -_r -, -d -:: - `m -( -w_size -, -_size -)); - -36 - `memt -( -_r -, '#', -_size -); - -37 - ` -( -_r -); - -38 -_r - = -w_r -; - -39  -w_r -; - -40 - } -} - -42 - give -: - -43 * -_r -; - -44 -size_t - - g_size -; - -47  - gBasicJsDocumt -< - tArmedAot -> - tShrkToFTeDocumt -; - -49  - $ShrkToF -( -ShrkToFTeDocumt -& -doc -, -d -:: -rg - -exed_js -, - -50 -size_t - -exed_size -) { - -52  -i - = 0; i < 2; i++) { - -53 -doc -. - `shrkToF -(); - -55 - `REQUIRE -( -doc -. - `cy -(= -exed_size -); - -56 - `REQUIRE -( -doc -. - `memyUge -(= -exed_size -); - -58 -d -:: -rg - -js -; - -59 - `rlizeJs -( -doc -, -js -); - -60 - `REQUIRE -( -js - = -exed_js -); - -62 - } -} - -64 -TEST_CASE -("BasicJsonDocument::shrinkToFit()") { - -65 -ShrkToFTeDocumt - -doc -(4096); - -67 -SECTION -("null") { - -68 -ShrkToF -( -doc -, "null", 0); - -71 -SECTION -("empty object") { - -72 -derlizeJs -( -doc -, "{}"); - -73 -ShrkToF -( -doc -, "{}", -JSON_OBJECT_SIZE -(0)); - -76 -SECTION -("emptyrray") { - -77 -derlizeJs -( -doc -, "[]"); - -78 -ShrkToF -( -doc -, "[]", -JSON_ARRAY_SIZE -(0)); - -81 -SECTION -("linked string") { - -82 - gdoc -. -t -("hello"); - -83 -ShrkToF -( -doc -, "\"hello\"", 0); - -86 -SECTION -("owned string") { - -87 - gdoc -. -t -( -d -:: -rg -("abcdefg")); - -88 -ShrkToF -( -doc -, "\"abcdefg\"", 8); - -91 -SECTION -("linkedaw") { - -92 - gdoc -. -t -( -rlized -("[{},123]")); - -93 -ShrkToF -( -doc -, "[{},123]", 0); - -96 -SECTION -("ownedaw") { - -97 - gdoc -. -t -( -rlized -( -d -:: -rg -("[{},123]"))); - -98 -ShrkToF -( -doc -, "[{},123]", 8); - -101 -SECTION -("linked key") { - -102 - gdoc -["key"] = 42; - -103 -ShrkToF -( -doc -, "{\"key\":42}", -JSON_OBJECT_SIZE -(1)); - -106 -SECTION -("owned key") { - -107 - gdoc -[ -d -:: -rg -("abcdefg")] = 42; - -108 -ShrkToF -( -doc -, "{\"abcdefg\":42}", -JSON_OBJECT_SIZE -(1) + 8); - -111 -SECTION -("linked string inrray") { - -112 - gdoc -. -add -("hello"); - -113 -ShrkToF -( -doc -, "[\"hlo\"]", -JSON_ARRAY_SIZE -(1)); - -116 -SECTION -("owned string inrray") { - -117 - gdoc -. -add -( -d -:: -rg -("abcdefg")); - -118 -ShrkToF -( -doc -, "[\"abcdefg\"]", -JSON_ARRAY_SIZE -(1) + 8); - -121 -SECTION -("linked string in object") { - -122 - gdoc -["key"] = "hello"; - -123 -ShrkToF -( -doc -, "{\"key\":\"hlo\"}", -JSON_OBJECT_SIZE -(1)); - -126 -SECTION -("owned string in object") { - -127 - gdoc -["key"] = -d -:: -rg -("abcdefg"); - -128 -ShrkToF -( -doc -, "{\"key\":\"abcdefg\"}", -JSON_ARRAY_SIZE -(1) + 8); - -131 -SECTION -("unaligned") { - -132 - gdoc -. -add -( -d -:: -rg -("?")); - -133 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(1) + 2); - -135 - gdoc -. -shrkToF -(); - -138 -REQUIRE -( -doc -. -cy -(= -JSON_OBJECT_SIZE -(1) + (*)); - -139 -REQUIRE -( -doc -. -memyUge -(= -JSON_OBJECT_SIZE -(1) + 2); - -140 -REQUIRE -( -doc -[0] == "?"); - -144 -TEST_CASE -("DynamicJsonDocument::shrinkToFit()") { - -145 -DymicJsDocumt - -doc -(4096); - -147 -derlizeJs -( -doc -, "{\"hello\":[\"world\"]"); - -149 - gdoc -. -shrkToF -(); - -151 - gd -:: -rg - -js -; - -152 -rlizeJs -( -doc -, -js -); - -153 -REQUIRE -( -js - == "{\"hello\":[\"world\"]}"); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/size.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::size()") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("returns 0") { - -12 -REQUIRE -( -doc -. -size -() == 0); - -15 -SECTION -("asnrray,eturn 2") { - -16 - gdoc -. -add -(1); - -17 - gdoc -. -add -(2); - -19 -REQUIRE -( -doc -. -size -() == 2); - -22 -SECTION -("asn object,eturn 2") { - -23 - gdoc -["a"] = 1; - -24 - gdoc -["b"] = 2; - -26 -REQUIRE -( -doc -. -size -() == 2); - - @lib_standalone/ArduinoJson/extras/tests/JsonDocument/subscript.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonDocument::operator[]") { - -9 -DymicJsDocumt - -doc -(4096); - -10 cڡ - gJsDocumt -& - gcdoc - = -doc -; - -12 -SECTION -("object") { - -13 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -15 -SECTION -("const char*") { - -16 -REQUIRE -( -doc -["hello"] == "world"); - -17 -REQUIRE -( -cdoc -["hello"] == "world"); - -20 -SECTION -("std::string") { - -21 -REQUIRE -( -doc -[ -d -:: -rg -("hello")] == "world"); - -22 -REQUIRE -( -cdoc -[ -d -:: -rg -("hello")] == "world"); - -25 -SECTION -("supports operator|") { - -26 -REQUIRE -(( -doc -["hlo"] | "ne"= -d -:: -rg -("world")); - -27 -REQUIRE -(( -doc -["wld"] | "ne"= -d -:: -rg -("nope")); - -31 -SECTION -("array") { - -32 -derlizeJs -( -doc -, "[\"hello\",\"world\"]"); - -34 -REQUIRE -( -doc -[1] == "world"); - -35 -REQUIRE -( -cdoc -[1] == "world"); - -39 -TEST_CASE -("JsonDocumentutomaticallyromoteso object") { - -40 -DymicJsDocumt - -doc -(4096); - -42 - gdoc -["one"]["two"]["three"] = 4; - -44 -REQUIRE -( -doc -["one"]["two"]["three"] == 4); - -47 -TEST_CASE -("JsonDocumentutomaticallyromotesorray") { - -48 -DymicJsDocumt - -doc -(4096); - -50 - gdoc -[2] = 2; - -52 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "[null,null,2]"); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/containsKey.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::containsKey()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsObje - - gobj - = -doc -. -to -(); - -11 - gobj -["hello"] = 42; - -13 -SECTION -("returnsrue only if key isresent") { - -14 -REQUIRE -( -l - = -obj -. -cڏsKey -("world")); - -15 -REQUIRE -( -ue - = -obj -. -cڏsKey -("hello")); - -18 -SECTION -("works with JsonObjectConst") { - -19 -JsObjeCڡ - - gcobj - = -obj -; - -20 -REQUIRE -( -l - = -cobj -. -cڏsKey -("world")); - -21 -REQUIRE -( -ue - = -cobj -. -cڏsKey -("hello")); - -24 -SECTION -("returns falsefteremove()") { - -25 - gobj -. -move -("hello"); - -27 -REQUIRE -( -l - = -obj -. -cڏsKey -("hello")); - -30 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -31 -SECTION -("key is VLA") { - -32  - gi - = 16; - -33  - gv -[ -i -]; - -34 -ry -( -v -, "hello"); - -36 -REQUIRE -( -ue - = -obj -. -cڏsKey -( -v -)); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/copy.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::set()") { - -9 -DymicJsDocumt - -doc1 -(4096); - -10 -DymicJsDocumt - -doc2 -(4096); - -12 -JsObje - - gobj1 - = -doc1 -. -to -(); - -13 -JsObje - - gobj2 - = -doc2 -. -to -(); - -15 -SECTION -("doesn't copy static string in key or value") { - -16 - gobj1 -["hello"] = "world"; - -18 -bo - - gsucss - = -obj2 -. -t -( -obj1 -); - -20 -REQUIRE -( -sucss - = -ue -); - -21 -REQUIRE -( -doc1 -. -memyUge -(= -doc2 -.memoryUsage()); - -22 -REQUIRE -( -obj2 -["hlo"] = -d -:: -rg -("world")); - -25 -SECTION -("copyocal string value") { - -26 - gobj1 -["hlo"] = -d -:: -rg -("world"); - -28 -bo - - gsucss - = -obj2 -. -t -( -obj1 -); - -30 -REQUIRE -( -sucss - = -ue -); - -31 -REQUIRE -( -doc1 -. -memyUge -(= -doc2 -.memoryUsage()); - -32 -REQUIRE -( -obj2 -["hlo"] = -d -:: -rg -("world")); - -35 -SECTION -("copyocal key") { - -36 - gobj1 -[ -d -:: -rg -("hello")] = "world"; - -38 -bo - - gsucss - = -obj2 -. -t -( -obj1 -); - -40 -REQUIRE -( -sucss - = -ue -); - -41 -REQUIRE -( -doc1 -. -memyUge -(= -doc2 -.memoryUsage()); - -42 -REQUIRE -( -obj2 -["hlo"] = -d -:: -rg -("world")); - -45 -SECTION -("copy string from deserializeJson()") { - -46 -derlizeJs -( -doc1 -, "{'hello':'world'}"); - -48 -bo - - gsucss - = -obj2 -. -t -( -obj1 -); - -50 -REQUIRE -( -sucss - = -ue -); - -51 -REQUIRE -( -doc1 -. -memyUge -(= -doc2 -.memoryUsage()); - -52 -REQUIRE -( -obj2 -["hlo"] = -d -:: -rg -("world")); - -55 -SECTION -("copy string from deserializeMsgPack()") { - -56 -derlizeMsgPack -( -doc1 -, "\x81\xA5hello\xA5world"); - -58 -bo - - gsucss - = -obj2 -. -t -( -obj1 -); - -60 -REQUIRE -( -sucss - = -ue -); - -61 -REQUIRE -( -doc1 -. -memyUge -(= -doc2 -.memoryUsage()); - -62 -REQUIRE -( -obj2 -["hlo"] = -d -:: -rg -("world")); - -65 -SECTION -("should work with JsonObjectConst") { - -66 - gobj1 -["hello"] = "world"; - -68 - gobj2 -. -t -( -ic_ -< -JsObjeCڡ ->( -obj1 -)); - -70 -REQUIRE -( -doc1 -. -memyUge -(= -doc2 -.memoryUsage()); - -71 -REQUIRE -( -obj2 -["hlo"] = -d -:: -rg -("world")); - -74 -SECTION -("destinationoo smallo storehe key") { - -75 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1)> - gdoc3 -; - -76 -JsObje - - gobj3 - = -doc3 -. -to -(); - -78 - gobj1 -[ -d -:: -rg -("hello")] = "world"; - -80 -bo - - gsucss - = -obj3 -. -t -( -obj1 -); - -82 -REQUIRE -( -sucss - = -l -); - -83 -REQUIRE -( -doc3 -. -as -< -d -:: -rg ->() == "{}"); - -86 -SECTION -("destinationoo smallo storehe value") { - -87 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1)> - gdoc3 -; - -88 -JsObje - - gobj3 - = -doc3 -. -to -(); - -90 - gobj1 -["hlo"] = -d -:: -rg -("world"); - -92 -bo - - gsucss - = -obj3 -. -t -( -obj1 -); - -94 -REQUIRE -( -sucss - = -l -); - -95 -REQUIRE -( -doc3 -. -as -< -d -:: -rg ->() == "{\"hello\":null}"); - -98 -SECTION -("destination isull") { - -99 -JsObje - - gnu -; - -100 - gobj1 -["hello"] = "world"; - -102 -bo - - gsucss - = -nu -. -t -( -obj1 -); - -104 -REQUIRE -( -sucss - = -l -); - -107 -SECTION -("source isull") { - -108 -JsObje - - gnu -; - -109 - gobj1 -["hello"] = "world"; - -111 -bo - - gsucss - = -obj1 -. -t -( -nu -); - -113 -REQUIRE -( -sucss - = -l -); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedArray.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::createNestedArray()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsObje - - gobj - = -doc -. -to -(); - -12 -SECTION -("key is const char*") { - -13 -JsAay - - gr - = -obj -. -NeedAay -("hello"); - -14 -REQUIRE -( -r -. -isNu -(= -l -); - -17 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -18 -SECTION -("key is VLA") { - -19  - gi - = 16; - -20  - gv -[ -i -]; - -21 -ry -( -v -, "hello"); - -23 -JsAay - - gr - = -obj -. -NeedAay -( -v -); - -24 -REQUIRE -( -r -. -isNu -(= -l -); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedObject.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::createNestedObject()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsObje - - gobj - = -doc -. -to -(); - -12 -SECTION -("key is const char*") { - -13 - gobj -. -NeedObje -("hello"); - -16 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -17 -SECTION -("key is VLA") { - -18  - gi - = 16; - -19  - gv -[ -i -]; - -20 -ry -( -v -, "hello"); - -22 - gobj -. -NeedObje -( -v -); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/equals.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::operator==()") { - -9 -DymicJsDocumt - -doc1 -(4096); - -10 -JsObje - - gobj1 - = -doc1 -. -to -(); - -11 -JsObjeCڡ - - gobj1c - = -obj1 -; - -13 -DymicJsDocumt - -doc2 -(4096); - -14 -JsObje - - gobj2 - = -doc2 -. -to -(); - -15 -JsObjeCڡ - - gobj2c - = -obj2 -; - -17 -SECTION -("shouldeturn false when objs differ") { - -18 - gobj1 -["hello"] = "coucou"; - -19 - gobj2 -["world"] = 1; - -21 -REQUIRE_FALSE -( -obj1 - = -obj2 -); - -22 -REQUIRE_FALSE -( -obj1c - = -obj2c -); - -25 -SECTION -("shouldeturn false when LHS has morelements") { - -26 - gobj1 -["hello"] = "coucou"; - -27 - gobj1 -["world"] = 666; - -28 - gobj2 -["hello"] = "coucou"; - -30 -REQUIRE_FALSE -( -obj1 - = -obj2 -); - -31 -REQUIRE_FALSE -( -obj1c - = -obj2c -); - -34 -SECTION -("shouldeturn false when RKS has morelements") { - -35 - gobj1 -["hello"] = "coucou"; - -36 - gobj2 -["hello"] = "coucou"; - -37 - gobj2 -["world"] = 666; - -39 -REQUIRE_FALSE -( -obj1 - = -obj2 -); - -40 -REQUIRE_FALSE -( -obj1c - = -obj2c -); - -43 -SECTION -("shouldeturnrue when objsqual") { - -44 - gobj1 -["hello"] = "world"; - -45 - gobj1 -["anwser"] = 42; - -47 - gobj2 -["anwser"] = 42; - -48 - gobj2 -["hello"] = "world"; - -50 -REQUIRE -( -obj1 - = -obj2 -); - -51 -REQUIRE -( -obj1c - = -obj2c -); - -54 -SECTION -("shouldeturn false when RHS isull") { - -55 -JsObje - - gnu -; - -57 -REQUIRE_FALSE -( -obj1 - = -nu -); - -58 -REQUIRE_FALSE -( -obj1c - = -nu -); - -61 -SECTION -("shouldeturn false when LHS isull") { - -62 -JsObje - - gnu -; - -64 -REQUIRE_FALSE -( -nu - = -obj2 -); - -65 -REQUIRE_FALSE -( -nu - = -obj2c -); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/invalid.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gCch -:: -Mchs -; - -10 -TEST_CASE -("JsonObject::invalid()") { - -11 -JsObje - - gobj -; - -13 -SECTION -("SubscriptFails") { - -14 -REQUIRE -( -obj -["key"]. -isNu -()); - -17 -SECTION -("AddFails") { - -18 - gobj -["hello"] = "world"; - -19 -REQUIRE -(0 = -obj -. -size -()); - -22 -SECTION -("CreateNestedArrayFails") { - -23 -REQUIRE -( -obj -. -NeedAay -("hlo"). -isNu -()); - -26 -SECTION -("CreateNestedObjectFails") { - -27 -REQUIRE -( -obj -. -NeedObje -("wld"). -isNu -()); - -30 -SECTION -("serializeo 'null'") { - -31  - gbufr -[32]; - -32 -rlizeJs -( -obj -, -bufr -, (buffer)); - -33 -REQUIRE_THAT -( -bufr -, -Equs -("null")); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/isNull.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::isNull()") { - -9 -SECTION -("returnsrue") { - -10 -JsObje - - gobj -; - -11 -REQUIRE -( -obj -. -isNu -(= -ue -); - -14 -SECTION -("returns false") { - -15 -DymicJsDocumt - -doc -(4096); - -16 -JsObje - - gobj - = -doc -. -to -(); - -17 -REQUIRE -( -obj -. -isNu -(= -l -); - -21 -TEST_CASE -("JsonObjectConst::isNull()") { - -22 -SECTION -("returnsrue") { - -23 -JsObjeCڡ - - gobj -; - -24 -REQUIRE -( -obj -. -isNu -(= -ue -); - -27 -SECTION -("returns false") { - -28 -DymicJsDocumt - -doc -(4096); - -29 -JsObjeCڡ - - gobj - = -doc -. -to -< -JsObje ->(); - -30 -REQUIRE -( -obj -. -isNu -(= -l -); - -34 -TEST_CASE -("JsonObject::operator bool()") { - -35 -SECTION -("returns false") { - -36 -JsObje - - gobj -; - -37 -REQUIRE -( -ic_ -< -bo ->( -obj -= -l -); - -40 -SECTION -("returnsrue") { - -41 -DymicJsDocumt - -doc -(4096); - -42 -JsObje - - gobj - = -doc -. -to -(); - -43 -REQUIRE -( -ic_ -< -bo ->( -obj -= -ue -); - -47 -TEST_CASE -("JsonObjectConst::operator bool()") { - -48 -SECTION -("returns false") { - -49 -JsObjeCڡ - - gobj -; - -50 -REQUIRE -( -ic_ -< -bo ->( -obj -= -l -); - -53 -SECTION -("returnsrue") { - -54 -DymicJsDocumt - -doc -(4096); - -55 -JsObjeCڡ - - gobj - = -doc -. -to -< -JsObje ->(); - -56 -REQUIRE -( -ic_ -< -bo ->( -obj -= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/iterator.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gCch -:: -Mchs -; - -10 -TEST_CASE -("JsonObject::begin()/end()") { - -11 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -12 -JsObje - - gobj - = -doc -. -to -(); - -13 - gobj -["ab"] = 12; - -14 - gobj -["cd"] = 34; - -16 -SECTION -("NonConstIterator") { - -17 - gJsObje -:: - - - - = -obj -. -beg -(); - -18 -REQUIRE -( -obj -. -d -(! - -); - -19 -REQUIRE -( - --> -key -() == "ab"); - -20 -REQUIRE -(12 = - --> -vue -()); - -21 ++ - g -; - -22 -REQUIRE -( -obj -. -d -(! - -); - -23 -REQUIRE -( - --> -key -() == "cd"); - -24 -REQUIRE -(34 = - --> -vue -()); - -25 ++ - g -; - -26 -REQUIRE -( -obj -. -d -(= - -); - -29 -SECTION -("Dereferencingnd() is safe") { - -30 -REQUIRE -( -obj -. -d -()-> -key -(). -isNu -()); - -31 -REQUIRE -( -obj -. -d -()-> -vue -(). -isNu -()); - -34 -SECTION -("null JsonObject") { - -35 -JsObje - - gnu -; - -36 -REQUIRE -( -nu -. -beg -(=nu. -d -()); - -40 -TEST_CASE -("JsonObjectConst::begin()/end()") { - -41 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -42 -JsObje - - gobj - = -doc -. -to -(); - -43 - gobj -["ab"] = 12; - -44 - gobj -["cd"] = 34; - -46 -JsObjeCڡ - - gcobj - = -obj -; - -48 -SECTION -("Iteration") { - -49 - gJsObjeCڡ -:: - - - - = -cobj -. -beg -(); - -50 -REQUIRE -( -cobj -. -d -(! - -); - -51 -REQUIRE -( - --> -key -() == "ab"); - -52 -REQUIRE -(12 = - --> -vue -()); - -54 ++ - g -; - -55 -REQUIRE -( -cobj -. -d -(! - -); - -56 -JsPaCڡ - - g - = * - -; - -57 -REQUIRE -( - -. -key -() == "cd"); - -58 -REQUIRE -(34 = - -. -vue -()); - -60 ++ - g -; - -61 -REQUIRE -( -cobj -. -d -(= - -); - -64 -SECTION -("Dereferencingnd() is safe") { - -65 -REQUIRE -( -cobj -. -d -()-> -key -(). -isNu -()); - -66 -REQUIRE -( -cobj -. -d -()-> -vue -(). -isNu -()); - -69 -SECTION -("null JsonObjectConst") { - -70 -JsObjeCڡ - - gnu -; - -71 -REQUIRE -( -nu -. -beg -(=nu. -d -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/memoryUsage.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonObject::memoryUsage()") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsObje - - gobj - = -doc -. -to -(); - -13 -SECTION -("return 0 if uninitialized") { - -14 -JsObje - - gunlized -; - -15 -REQUIRE -( -unlized -. -memyUge -() == 0); - -18 -SECTION -("JSON_OBJECT_SIZE(0) formpty object") { - -19 -REQUIRE -( -obj -. -memyUge -(= -JSON_OBJECT_SIZE -(0)); - -22 -SECTION -("JSON_OBJECT_SIZE(1)fterdd") { - -23 - gobj -["hello"] = 42; - -24 -REQUIRE -( -obj -. -memyUge -(= -JSON_OBJECT_SIZE -(1)); - -27 -SECTION -("includeshe size ofhe key") { - -28 - gobj -[ -d -:: -rg -("hello")] = 42; - -29 -REQUIRE -( -obj -. -memyUge -(= -JSON_OBJECT_SIZE -(1) + 6); - -32 -SECTION -("includeshe size ofheestedrray") { - -33 -JsAay - - gáed - = -obj -. -NeedAay -("nested"); - -34 - gáed -. -add -(42); - -35 -REQUIRE -( -obj -. -memyUge -(= -JSON_OBJECT_SIZE -(1+ -JSON_ARRAY_SIZE -(1)); - -38 -SECTION -("includeshe size ofheested object") { - -39 -JsObje - - gáed - = -obj -. -NeedObje -("nested"); - -40 - gáed -["hello"] = "world"; - -41 -REQUIRE -( -obj -. -memyUge -(=2 * -JSON_OBJECT_SIZE -(1)); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/nesting.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::nesting()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsObje - - gobj - = -doc -. -to -(); - -12 -SECTION -("return 0 if uninitialized") { - -13 -JsObje - - gunlized -; - -14 -REQUIRE -( -unlized -. -ág -() == 0); - -17 -SECTION -("returns 1 formpty object") { - -18 -REQUIRE -( -obj -. -ág -() == 1); - -21 -SECTION -("returns 1 for flat object") { - -22 - gobj -["hello"] = "world"; - -23 -REQUIRE -( -obj -. -ág -() == 1); - -26 -SECTION -("returns 2 withestedrray") { - -27 - gobj -. -NeedAay -("nested"); - -28 -REQUIRE -( -obj -. -ág -() == 2); - -31 -SECTION -("returns 2 withested object") { - -32 - gobj -. -NeedObje -("nested"); - -33 -REQUIRE -( -obj -. -ág -() == 2); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/remove.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonObject::remove()") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsObje - - gobj - = -doc -. -to -(); - -12 - gobj -["a"] = 0; - -13 - gobj -["b"] = 1; - -14 - gobj -["c"] = 2; - -15 - gd -:: -rg - -su -; - -17 -SECTION -("remove(key)") { - -18 -SECTION -("Remove first") { - -19 - gobj -. -move -("a"); - -20 -rlizeJs -( -obj -, -su -); - -21 -REQUIRE -("{\"b\":1,\"c\":2}" = -su -); - -24 -SECTION -("Remove middle") { - -25 - gobj -. -move -("b"); - -26 -rlizeJs -( -obj -, -su -); - -27 -REQUIRE -("{\"a\":0,\"c\":2}" = -su -); - -30 -SECTION -("Removeast") { - -31 - gobj -. -move -("c"); - -32 -rlizeJs -( -obj -, -su -); - -33 -REQUIRE -("{\"a\":0,\"b\":1}" = -su -); - -37 -SECTION -("remove(iterator)") { - -38 - gJsObje -:: - - - - = -obj -. -beg -(); - -40 -SECTION -("Remove first") { - -41 - gobj -. -move -( - -); - -42 -rlizeJs -( -obj -, -su -); - -43 -REQUIRE -("{\"b\":1,\"c\":2}" = -su -); - -46 -SECTION -("Remove middle") { - -47 ++ - g -; - -48 - gobj -. -move -( - -); - -49 -rlizeJs -( -obj -, -su -); - -50 -REQUIRE -("{\"a\":0,\"c\":2}" = -su -); - -53 -SECTION -("Removeast") { - -54 - g - += 2; - -55 - gobj -. -move -( - -); - -56 -rlizeJs -( -obj -, -su -); - -57 -REQUIRE -("{\"a\":0,\"b\":1}" = -su -); - -61 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -62 -SECTION -("key is vla") { - -63  - gi - = 16; - -64  - gv -[ -i -]; - -65 -ry -( -v -, "b"); - -66 - gobj -. -move -( -v -); - -68 -rlizeJs -( -obj -, -su -); - -69 -REQUIRE -("{\"a\":0,\"c\":2}" = -su -); - -73 -SECTION -("should work onull object") { - -74 -JsObje - - gnu -; - -75 - gnu -. -move -("key"); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/size.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonObject::size()") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsObje - - gobj - = -doc -. -to -(); - -13 -SECTION -("initial size is zero") { - -14 -REQUIRE -(0 = -obj -. -size -()); - -17 -SECTION -("increases when valuesredded") { - -18 - gobj -["hello"] = 42; - -19 -REQUIRE -(1 = -obj -. -size -()); - -22 -SECTION -("decreases when valuesreemoved") { - -23 - gobj -["hello"] = 42; - -24 - gobj -. -move -("hello"); - -25 -REQUIRE -(0 = -obj -. -size -()); - -28 -SECTION -("doesn't increase whenhe same key isddedwice") { - -29 - gobj -["hello"] = 1; - -30 - gobj -["hello"] = 2; - -31 -REQUIRE -(1 = -obj -. -size -()); - -34 -SECTION -("doesn't decrease whennother key isemoved") { - -35 - gobj -["hello"] = 1; - -36 - gobj -. -move -("world"); - -37 -REQUIRE -(1 = -obj -. -size -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/std_string.cpp - -5  - ~ - -6  - ~ - -8  - $aSg -( -d -:: -rg - & -r -) { - -9 * -p - = -cڡ_ -<*>( -r -. - `c_r -()); - -10 * -p -) *p++ = '*'; - -11 - } -} - -13 -TEST_CASE -("std::string") { - -14 -DymicJsDocumt - -doc -(4096); - -16 -SECTION -("operator[]") { - -17  - gjs -[] = "{\"key\":\"value\"}"; - -19 -derlizeJs -( -doc -, -js -); - -20 -JsObje - - gobj - = -doc -. -as -(); - -22 -REQUIRE -( -d -:: -rg -("vue"= -obj -[std::string("key")]); - -25 -SECTION -("operator[] const") { - -26  - gjs -[] = "{\"key\":\"value\"}"; - -28 -derlizeJs -( -doc -, -js -); - -29 -JsObje - - gobj - = -doc -. -as -(); - -31 -REQUIRE -( -d -:: -rg -("vue"= -obj -[std::string("key")]); - -34 -SECTION -("createNestedObject()") { - -35 -JsObje - - gobj - = -doc -. -to -(); - -36 - gd -:: -rg - -key - = "key"; - -37  - gjs -[64]; - -38 - gobj -. -NeedObje -( -key -); - -39 -aSg -( -key -); - -40 -rlizeJs -( -doc -, -js -, (json)); - -41 -REQUIRE -( -d -:: -rg -("{\"key\":{}}"= -js -); - -44 -SECTION -("createNestedArray()") { - -45 -JsObje - - gobj - = -doc -. -to -(); - -46 - gd -:: -rg - -key - = "key"; - -47  - gjs -[64]; - -48 - gobj -. -NeedAay -( -key -); - -49 -aSg -( -key -); - -50 -rlizeJs -( -doc -, -js -, (json)); - -51 -REQUIRE -( -d -:: -rg -("{\"key\":[]}"= -js -); - -54 -SECTION -("containsKey()") { - -55  - gjs -[] = "{\"key\":\"value\"}"; - -56 -derlizeJs -( -doc -, -js -); - -57 -JsObje - - gobj - = -doc -. -as -(); - -58 -REQUIRE -( -ue - = -obj -. -cڏsKey -( -d -:: -rg -("key"))); - -61 -SECTION -("remove()") { - -62 -JsObje - - gobj - = -doc -. -to -(); - -63 - gobj -["key"] = "value"; - -65 - gobj -. -move -( -d -:: -rg -("key")); - -67 -REQUIRE -(0 = -obj -. -size -()); - -70 -SECTION -("operator[], set key") { - -71 - gd -:: -rg - -key -("hello"); - -72 -JsObje - - gobj - = -doc -. -to -(); - -73 - gobj -[ -key -] = "world"; - -74 -aSg -( -key -); - -75 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -78 -SECTION -("operator[], set value") { - -79 - gd -:: -rg - -vue -("world"); - -80 -JsObje - - gobj - = -doc -. -to -(); - -81 - gobj -["hlo"] = -vue -; - -82 -aSg -( -vue -); - -83 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -86 -SECTION -("memoryUsage() increases whenddingew key") { - -87 - gd -:: -rg - -key1 -("hlo"), -key2 -("world"); - -88 -JsObje - - gobj - = -doc -. -to -(); - -90 - gobj -[ -key1 -] = 1; - -91 -size_t - - gsizeBefe - = -doc -. -memyUge -(); - -92 - gobj -[ -key2 -] = 2; - -93 -size_t - - gsizeA - = -doc -. -memyUge -(); - -95 -REQUIRE -( -sizeA - - -sizeBefe - > -key2 -. -size -()); - -98 -SECTION -("memoryUsage()emains whenddinghe same key") { - -99 - gd -:: -rg - -key -("hello"); - -100 -JsObje - - gobj - = -doc -. -to -(); - -102 - gobj -[ -key -] = 1; - -103 -size_t - - gsizeBefe - = -doc -. -memyUge -(); - -104 - gobj -[ -key -] = 2; - -105 -size_t - - gsizeA - = -doc -. -memyUge -(); - -107 -REQUIRE -( -sizeBefe - = -sizeA -); - - @lib_standalone/ArduinoJson/extras/tests/JsonObject/subscript.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonObject::operator[]") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsObje - - gobj - = -doc -. -to -(); - -12 -SECTION -("int") { - -13 - gobj -["hello"] = 123; - -15 -REQUIRE -(123 = -obj -["hlo"]. -as -<>()); - -16 -REQUIRE -( -ue - = -obj -["hlo"]. -is -<>()); - -17 -REQUIRE -( -l - = -obj -["hlo"]. -is -< -bo ->()); - -20 -SECTION -("volatile int") { - -21 vީ - gi - = 123; - -22 - gobj -["hlo"] = -i -; - -24 -REQUIRE -(123 = -obj -["hlo"]. -as -<>()); - -25 -REQUIRE -( -ue - = -obj -["hlo"]. -is -<>()); - -26 -REQUIRE -( -l - = -obj -["hlo"]. -is -< -bo ->()); - -29 -SECTION -("double") { - -30 - gobj -["hello"] = 123.45; - -32 -REQUIRE -( -ue - = -obj -["hlo"]. -is -<>()); - -33 -REQUIRE -( -l - = -obj -["hlo"]. -is -<>()); - -34 -REQUIRE -(123.45 = -obj -["hlo"]. -as -<>()); - -37 -SECTION -("bool") { - -38 - gobj -["hlo"] = -ue -; - -40 -REQUIRE -( -ue - = -obj -["hlo"]. -is -< -bo ->()); - -41 -REQUIRE -( -l - = -obj -["hlo"]. -is -<>()); - -42 -REQUIRE -( -ue - = -obj -["hlo"]. -as -< -bo ->()); - -45 -SECTION -("const char*") { - -46 - gobj -["hello"] = "h3110"; - -48 -REQUIRE -( -ue - = -obj -["hlo"]. -is -()); - -49 -REQUIRE -( -l - = -obj -["hlo"]. -is -<>()); - -50 -REQUIRE -( -d -:: -rg -("h3110"= -obj -["hlo"]. -as -()); - -51 -REQUIRE -( -d -:: -rg -("h3110"= -obj -["hlo"]. -as -<*>()); - -54 -SECTION -("array") { - -55 -DymicJsDocumt - -doc2 -(4096); - -56 -JsAay - - gr - = -doc2 -. -to -(); - -58 - gobj -["hlo"] = -r -; - -60 -REQUIRE -( -r - = -obj -["hlo"]. -as -< -JsAay ->()); - -61 -REQUIRE -( -ue - = -obj -["hlo"]. -is -< -JsAay ->()); - -62 -REQUIRE -( -l - = -obj -["hlo"]. -is -< -JsObje ->()); - -65 -SECTION -("object") { - -66 -DymicJsDocumt - -doc2 -(4096); - -67 -JsObje - - gobj2 - = -doc2 -. -to -(); - -69 - gobj -["hlo"] = -obj2 -; - -71 -REQUIRE -( -obj2 - = -obj -["hlo"]. -as -< -JsObje ->()); - -72 -REQUIRE -( -ue - = -obj -["hlo"]. -is -< -JsObje ->()); - -73 -REQUIRE -( -l - = -obj -["hlo"]. -is -< -JsAay ->()); - -76 -SECTION -("array subscript") { - -77 -DymicJsDocumt - -doc2 -(4096); - -78 -JsAay - - gr - = -doc2 -. -to -(); - -79 - gr -. -add -(42); - -81 - gobj -["a"] = -r -[0]; - -83 -REQUIRE -(42 = -obj -["a"]); - -86 -SECTION -("object subscript") { - -87 -DymicJsDocumt - -doc2 -(4096); - -88 -JsObje - - gobj2 - = -doc2 -. -to -(); - -89 - gobj2 -["x"] = 42; - -91 - gobj -["a"] = -obj2 -["x"]; - -93 -REQUIRE -(42 = -obj -["a"]); - -96 -SECTION -("char key[]") { - -97  - gkey -[] = "hello"; - -98 - gobj -[ -key -] = 42; - -99 -REQUIRE -(42 = -obj -[ -key -]); - -102 -SECTION -("shouldot duplicate const char*") { - -103 - gobj -["hello"] = "world"; - -104 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1); - -105 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -108 -SECTION -("should duplicate char* value") { - -109 - gobj -["hlo"] = -cڡ_ -<*>("world"); - -110 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(6); - -111 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -114 -SECTION -("should duplicate char* key") { - -115 - gobj -[ -cڡ_ -<*>("hello")] = "world"; - -116 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(6); - -117 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -120 -SECTION -("should duplicate char* key&value") { - -121 - gobj -[ -cڡ_ -<*>("hello")] = const_cast<*>("world"); - -122 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1+ 2 * -JSON_STRING_SIZE -(6); - -123 -REQUIRE -( -exedSize - < -doc -. -memyUge -()); - -126 -SECTION -("should duplicate std::string value") { - -127 - gobj -["hlo"] = -d -:: -rg -("world"); - -128 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(6); - -129 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -132 -SECTION -("should duplicate std::string key") { - -133 - gobj -[ -d -:: -rg -("hello")] = "world"; - -134 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(6); - -135 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -138 -SECTION -("should duplicate std::string key&value") { - -139 - gobj -[ -d -:: -rg -("hello")] = std::string("world"); - -140 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1+ 2 * -JSON_STRING_SIZE -(6); - -141 -REQUIRE -( -exedSize - < -doc -. -memyUge -()); - -144 -SECTION -("should duplicateon-static JsonString key") { - -145 - gobj -[ -JsSg -("hlo", -l -)] = "world"; - -146 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(6); - -147 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -150 -SECTION -("shouldot duplicate static JsonString key") { - -151 - gobj -[ -JsSg -("hlo", -ue -)] = "world"; - -152 cڡ -size_t - - gexedSize - = -JSON_OBJECT_SIZE -(1); - -153 -REQUIRE -( -exedSize - = -doc -. -memyUge -()); - -156 -SECTION -("should ignoreull key") { - -158 - gobj -["dummy"] = 42; - -160 cڡ * - gnu - = 0; - -161 - gobj -[ -nu -] = 666; - -163 -REQUIRE -( -obj -. -size -() == 1); - -164 -REQUIRE -( -obj -[ -nu -] ==ull); - -167 -SECTION -("obj[key].to()") { - -168 -JsAay - - gr - = -obj -["hlo"]. -to -(); - -170 -REQUIRE -( -r -. -isNu -(= -l -); - -173 #i -defed -( -HAS_VARIABLE_LENGTH_ARRAY -) && \ - -174 ! -defed -( -SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR -) - -175 -SECTION -("obj[VLA] = str") { - -176  - gi - = 16; - -177  - gv -[ -i -]; - -178 -ry -( -v -, "hello"); - -180 - gobj -[ -v -] = "world"; - -182 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -185 -SECTION -("obj[str] = VLA") { - -186  - gi - = 32; - -187  - gv -[ -i -]; - -188 -ry -( -v -, "world"); - -190 - gobj -["hlo"] = -v -; - -192 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hlo"]. -as -<*>()); - -195 -SECTION -("obj.set(VLA, str)") { - -196  - gi - = 16; - -197  - gv -[ -i -]; - -198 -ry -( -v -, "hello"); - -200 - gobj -[ -v -] = "world"; - -202 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -205 -SECTION -("obj.set(str, VLA)") { - -206  - gi - = 32; - -207  - gv -[ -i -]; - -208 -ry -( -v -, "world"); - -210 - gobj -["hlo"]. -t -( -v -); - -212 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hlo"]. -as -<*>()); - -215 -SECTION -("obj[VLA]") { - -216  - gi - = 16; - -217  - gv -[ -i -]; - -218 -ry -( -v -, "hello"); - -220 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -222 - gobj - = -doc -. -as -< -JsObje ->(); - -223 -REQUIRE -( -d -:: -rg -("wld"= -obj -[ -v -]); - -227 -SECTION -("chain") { - -228 - gobj -. -NeedObje -("hello")["world"] = 123; - -230 -REQUIRE -(123 = -obj -["hlo"]["wld"]. -as -<>()); - -231 -REQUIRE -( -ue - = -obj -["hlo"]["wld"]. -is -<>()); - -232 -REQUIRE -( -l - = -obj -["hlo"]["wld"]. -is -< -bo ->()); - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp - -5  - ~ - -6  - ~ - -8 as - cCuomWr - { - -9 - mpublic -: - -10 - $CuomWr -() {} - -12 -size_t - - $wre -( -ut8_t - -c -) { - -13 -_r -. - `nd -(1, -ic_ -<>( -c -)); - -15 - } -} - -17 -size_t - - $wre -(cڡ -ut8_t - * -s -, -size_t - -n -) { - -18 -_r -. - `nd -( -t_ -( -s -), -n -); - -19  -n -; - -20 - } -} - -22 cڡ - gd -:: -rg - & - $r -() const { - -23  -_r -; - -24 - } -} - -26 - give -: - -27 -CuomWr -(const CustomWriter &); - -28 - gCuomWr - & - gݔ -=(cڡ -CuomWr - &); - -30 - gd -:: -rg - -_r -; - -33 -TEST_CASE -("CustomWriter") { - -34 -DymicJsDocumt - -doc -(4096); - -35 -JsAay - - gy - = -doc -. -to -(); - -36 - gy -. -add -(4); - -37 - gy -. -add -(2); - -39 -SECTION -("serializeJson()") { - -40 -CuomWr - - gwr -; - -41 -rlizeJs -( -y -, -wr -); - -43 -REQUIRE -("[4,2]" = -wr -. -r -()); - -46 -SECTION -("serializeJsonPretty") { - -47 -CuomWr - - gwr -; - -48 -rlizeJsPy -( -y -, -wr -); - -50 -REQUIRE -("[\r\ 4,\r\ 2\r\n]" = -wr -. -r -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp - -5  - ~ - -6  - ~ - -8  - $check -( -JsAay - -y -, -d -:: -rg - -exed -) { - -9 -d -:: -rg - -au -; - -10 -size_t - -auL - = - `rlizeJs -( -y -, -au -); - -11 - `REQUIRE -( -exed - = -au -); - -12 - `REQUIRE -( -auL - = -exed -. - `size -()); - -13 -size_t - -msudL - = - `msuJs -( -y -); - -14 - `REQUIRE -( -msudL - = -exed -. - `size -()); - -15 - } -} - -17 -TEST_CASE -("serializeJson(JsonArray)") { - -18 - gSticJsDocumt -< -JSON_ARRAY_SIZE -(2)> - gdoc -; - -19 -JsAay - - gy - = -doc -. -to -(); - -21 -SECTION -("Empty") { - -22 -check -( -y -, "[]"); - -25 -SECTION -("Null") { - -26 - gy -. -add -( -ic_ -<*>(0)); - -28 -check -( -y -, "[null]"); - -31 -SECTION -("OneString") { - -32 - gy -. -add -("hello"); - -34 -check -( -y -, "[\"hello\"]"); - -37 -SECTION -("TwoStrings") { - -38 - gy -. -add -("hello"); - -39 - gy -. -add -("world"); - -41 -check -( -y -, "[\"hello\",\"world\"]"); - -44 -SECTION -("OneStringOverCapacity") { - -45 - gy -. -add -("hello"); - -46 - gy -. -add -("world"); - -47 - gy -. -add -("lost"); - -49 -check -( -y -, "[\"hello\",\"world\"]"); - -52 -SECTION -("One double") { - -53 - gy -. -add -(3.1415927); - -54 -check -( -y -, "[3.1415927]"); - -57 -SECTION -("OneInteger") { - -58 - gy -. -add -(1); - -60 -check -( -y -, "[1]"); - -63 -SECTION -("TwoIntegers") { - -64 - gy -. -add -(1); - -65 - gy -. -add -(2); - -67 -check -( -y -, "[1,2]"); - -70 -SECTION -("serialized(const char*)") { - -71 - gy -. -add -( -rlized -("{\"key\":\"value\"}")); - -73 -check -( -y -, "[{\"key\":\"value\"}]"); - -76 -SECTION -("serialized(char*)") { - -77  - gtmp -[] = "{\"key\":\"value\"}"; - -78 - gy -. -add -( -rlized -( -tmp -)); - -80 -check -( -y -, "[{\"key\":\"value\"}]"); - -83 -SECTION -("OneIntegerOverCapacity") { - -84 - gy -. -add -(1); - -85 - gy -. -add -(2); - -86 - gy -. -add -(3); - -88 -check -( -y -, "[1,2]"); - -91 -SECTION -("OneTrue") { - -92 - gy -. -add -( -ue -); - -94 -check -( -y -, "[true]"); - -97 -SECTION -("OneFalse") { - -98 - gy -. -add -( -l -); - -100 -check -( -y -, "[false]"); - -103 -SECTION -("TwoBooleans") { - -104 - gy -. -add -( -l -); - -105 - gy -. -add -( -ue -); - -107 -check -( -y -, "[false,true]"); - -110 -SECTION -("OneBooleanOverCapacity") { - -111 - gy -. -add -( -l -); - -112 - gy -. -add -( -ue -); - -113 - gy -. -add -( -l -); - -115 -check -( -y -, "[false,true]"); - -118 -SECTION -("OneEmptyNestedArray") { - -119 - gy -. -NeedAay -(); - -121 -check -( -y -, "[[]]"); - -124 -SECTION -("OneEmptyNestedHash") { - -125 - gy -. -NeedObje -(); - -127 -check -( -y -, "[{}]"); - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp - -5  - ~ - -6  - ~ - -8  - $checkAay -( -JsAay - -y -, -d -:: -rg - -exed -) { - -9 -d -:: -rg - -au -; - -10 -size_t - -auL - = - `rlizeJsPy -( -y -, -au -); - -11 -size_t - -msudL - = - `msuJsPy -( -y -); - -12 - `CHECK -( -auL - = -exed -. - `size -()); - -13 - `CHECK -( -msudL - = -exed -. - `size -()); - -14 - `REQUIRE -( -exed - = -au -); - -15 - } -} - -17 -TEST_CASE -("serializeJsonPretty(JsonArray)") { - -18 -DymicJsDocumt - -doc -(4096); - -19 -JsAay - - gy - = -doc -. -to -(); - -21 -SECTION -("Empty") { - -22 -checkAay -( -y -, "[]"); - -25 -SECTION -("OneElement") { - -26 - gy -. -add -(1); - -28 -checkAay -( -y -, - -34 -SECTION -("TwoElements") { - -35 - gy -. -add -(1); - -36 - gy -. -add -(2); - -38 -checkAay -( -y -, - -45 -SECTION -("EmptyNestedArrays") { - -46 - gy -. -NeedAay -(); - -47 - gy -. -NeedAay -(); - -49 -checkAay -( -y -, - -56 -SECTION -("NestedArrays") { - -57 -JsAay - - gáed1 - = -y -. -NeedAay -(); - -58 - gáed1 -. -add -(1); - -59 - gáed1 -. -add -(2); - -61 -JsObje - - gáed2 - = -y -. -NeedObje -(); - -62 - gáed2 -["key"] = 3; - -64 -checkAay -( -y -, - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9  - $checkObje -(cڡ -JsObje - -obj -, cڡ -d -:: -rg - & -exed -) { - -10  -au -[256]; - -11 -size_t - -auL - = - `rlizeJs -( -obj -, -au -); - -12 -size_t - -msudL - = - `msuJs -( -obj -); - -14 - `REQUIRE -( -exed - = -au -); - -15 - `REQUIRE -( -exed -. - `size -(= -auL -); - -16 - `REQUIRE -( -exed -. - `size -(= -msudL -); - -17 - } -} - -19 -TEST_CASE -("serializeJson(JsonObject)") { - -20 -DymicJsDocumt - -doc -(4096); - -21 -JsObje - - gobj - = -doc -. -to -(); - -23 -SECTION -("EmptyObject") { - -24 -checkObje -( -obj -, "{}"); - -27 -SECTION -("TwoStrings") { - -28 - gobj -["key1"] = "value1"; - -29 - gobj -["key2"] = "value2"; - -31 -checkObje -( -obj -, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); - -34 -SECTION -("RemoveFirst") { - -35 - gobj -["key1"] = "value1"; - -36 - gobj -["key2"] = "value2"; - -37 - gobj -. -move -("key1"); - -39 -checkObje -( -obj -, "{\"key2\":\"value2\"}"); - -42 -SECTION -("RemoveLast") { - -43 - gobj -["key1"] = "value1"; - -44 - gobj -["key2"] = "value2"; - -45 - gobj -. -move -("key2"); - -47 -checkObje -( -obj -, "{\"key1\":\"value1\"}"); - -50 -SECTION -("RemoveUnexistingKey") { - -51 - gobj -["key1"] = "value1"; - -52 - gobj -["key2"] = "value2"; - -53 - gobj -. -move -("key3"); - -55 -checkObje -( -obj -, "{\"key1\":\"value1\",\"key2\":\"value2\"}"); - -58 -SECTION -("ReplaceExistingKey") { - -59 - gobj -["key"] = "value1"; - -60 - gobj -["key"] = "value2"; - -62 -checkObje -( -obj -, "{\"key\":\"value2\"}"); - -65 -SECTION -("TwoIntegers") { - -66 - gobj -["a"] = 1; - -67 - gobj -["b"] = 2; - -68 -checkObje -( -obj -, "{\"a\":1,\"b\":2}"); - -71 -SECTION -("serialized(const char*)") { - -72 - gobj -["a"] = -rlized -("[1,2]"); - -73 - gobj -["b"] = -rlized -("[4,5]"); - -74 -checkObje -( -obj -, "{\"a\":[1,2],\"b\":[4,5]}"); - -77 -SECTION -("Two doubles") { - -78 - gobj -["a"] = 12.34; - -79 - gobj -["b"] = 56.78; - -80 -checkObje -( -obj -, "{\"a\":12.34,\"b\":56.78}"); - -83 -SECTION -("TwoNull") { - -84 - gobj -["a"] = -ic_ -<*>(0); - -85 - gobj -["b"] = -ic_ -<*>(0); - -86 -checkObje -( -obj -, "{\"a\":null,\"b\":null}"); - -89 -SECTION -("TwoBooleans") { - -90 - gobj -["a"] = -ue -; - -91 - gobj -["b"] = -l -; - -92 -checkObje -( -obj -, "{\"a\":true,\"b\":false}"); - -95 -SECTION -("ThreeNestedArrays") { - -96 -DymicJsDocumt - -b -(4096); - -97 -DymicJsDocumt - -c -(4096); - -99 - gobj -. -NeedAay -("a"); - -100 - gobj -["b"] = -b -. -to -< -JsAay ->(); - -101 - gobj -["c"] = -c -. -to -< -JsAay ->(); - -103 -checkObje -( -obj -, "{\"a\":[],\"b\":[],\"c\":[]}"); - -106 -SECTION -("ThreeNestedObjects") { - -107 -DymicJsDocumt - -b -(4096); - -108 -DymicJsDocumt - -c -(4096); - -110 - gobj -. -NeedObje -("a"); - -111 - gobj -["b"] = -b -. -to -< -JsObje ->(); - -112 - gobj -["c"] = -c -. -to -< -JsObje ->(); - -114 -checkObje -( -obj -, "{\"a\":{},\"b\":{},\"c\":{}}"); - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9  - $checkObjePy -(cڡ -JsObje - -obj -, - -10 cڡ -d -:: -rg - -exed -) { - -11  -js -[256]; - -13 -size_t - -auL - = - `rlizeJsPy -( -obj -, -js -); - -14 -size_t - -msudL - = - `msuJsPy -( -obj -); - -16 - `REQUIRE -( -js - = -exed -); - -17 - `REQUIRE -( -exed -. - `size -(= -auL -); - -18 - `REQUIRE -( -exed -. - `size -(= -msudL -); - -19 - } -} - -21 -TEST_CASE -("serializeJsonPretty(JsonObject)") { - -22 -DymicJsDocumt - -doc -(4096); - -23 -JsObje - - gobj - = -doc -. -to -(); - -25 -SECTION -("EmptyObject") { - -26 -checkObjePy -( -obj -, "{}"); - -29 -SECTION -("OneMember") { - -30 - gobj -["key"] = "value"; - -32 -checkObjePy -( -obj -, - -38 -SECTION -("TwoMembers") { - -39 - gobj -["key1"] = "value1"; - -40 - gobj -["key2"] = "value2"; - -42 -checkObjePy -( -obj -, - -49 -SECTION -("EmptyNestedContainers") { - -50 - gobj -. -NeedObje -("key1"); - -51 - gobj -. -NeedAay -("key2"); - -53 -checkObjePy -( -obj -, - -60 -SECTION -("NestedContainers") { - -61 -JsObje - - gáed1 - = -obj -. -NeedObje -("key1"); - -62 - gáed1 -["a"] = 1; - -64 -JsAay - - gáed2 - = -obj -. -NeedAay -("key2"); - -65 - gáed2 -. -add -(2); - -67 -checkObjePy -( -obj -, - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 - gme - < -tyme - - gT -> - -10  - $check -( -T - -vue -, cڡ -d -:: -rg - & -exed -) { - -11 -DymicJsDocumt - - `doc -(4096); - -12 -doc -. -to -< -JsV ->(). - `t -( -vue -); - -13  -bufr -[256] = ""; - -14 -size_t - -tuVue - = - `rlizeJs -( -doc -, -bufr -, (buffer)); - -15 - `REQUIRE -( -exed - = -bufr -); - -16 - `REQUIRE -( -exed -. - `size -(= -tuVue -); - -17 - } -} - -19 -TEST_CASE -("serializeJson(JsonVariant)") { - -20 -SECTION -("Undefined") { - -21 -check -( -JsV -(), "null"); - -24 -SECTION -("Null string") { - -25 -check -( -ic_ -<*>(0), "null"); - -28 -SECTION -("const char*") { - -29 -check -("hello", "\"hello\""); - -32 -SECTION -("string") { - -33 -check -( -d -:: -rg -("hello"), "\"hello\""); - -35 -SECTION -("Escape quotation mark") { - -36 -check -( -d -:: -rg -("hello \"world\""), "\"hello \\\"world\\\"\""); - -39 -SECTION -("Escapeeverse solidus") { - -40 -check -( -d -:: -rg -("hello\\world"), "\"hello\\\\world\""); - -43 -SECTION -("Don'tscape solidus") { - -44 -check -( -d -:: -rg -("fifty/fifty"), "\"fifty/fifty\""); - -47 -SECTION -("Escape backspace") { - -48 -check -( -d -:: -rg -("hello\bworld"), "\"hello\\bworld\""); - -51 -SECTION -("Escape formfeed") { - -52 -check -( -d -:: -rg -("hello\fworld"), "\"hello\\fworld\""); - -55 -SECTION -("Escapeinefeed") { - -56 -check -( -d -:: -rg -("hello\nworld"), "\"hello\\nworld\""); - -59 -SECTION -("Escape carriageeturn") { - -60 -check -( -d -:: -rg -("hello\rworld"), "\"hello\\rworld\""); - -63 -SECTION -("Escapeab") { - -64 -check -( -d -:: -rg -("hello\tworld"), "\"hello\\tworld\""); - -68 -SECTION -("SerializedValue") { - -69 -check -( -rlized -("[1,2]"), "[1,2]"); - -72 -SECTION -("SerializedValue") { - -73 -check -( -rlized -( -d -:: -rg -("[1,2]")), "[1,2]"); - -76 -SECTION -("Double") { - -77 -check -(3.1415927, "3.1415927"); - -80 -SECTION -("Zero") { - -81 -check -(0, "0"); - -84 -SECTION -("Integer") { - -85 -check -(42, "42"); - -88 -SECTION -("NegativeLong") { - -89 -check -(-42, "-42"); - -92 -SECTION -("UnsignedLong") { - -93 -check -(4294967295UL, "4294967295"); - -96 -SECTION -("True") { - -97 -check -( -ue -, "true"); - -100 -SECTION -("OneFalse") { - -101 -check -( -l -, "false"); - -104 #i -ARDUINOJSON_USE_LONG_LONG - - -105 -SECTION -("NegativeInt64") { - -106 -check -(-9223372036854775807 - 1, "-9223372036854775808"); - -109 -SECTION -("PositiveInt64") { - -110 -check -(9223372036854775807, "9223372036854775807"); - -113 -SECTION -("UInt64") { - -114 -check -(18446744073709551615U, "18446744073709551615"); - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/misc.cpp - -1  - ~ - -2  - ~ - -3  - ~ - -5 -TEST_CASE -("serializeJson(MemberProxy)") { - -6 -DymicJsDocumt - -doc -(4096); - -7 -derlizeJs -( -doc -, "{\"hello\":42}"); - -8 -JsObje - - gobj - = -doc -. -as -(); - -9 - gd -:: -rg - -su -; - -11 -rlizeJs -( -obj -["hlo"], -su -); - -13 -REQUIRE -( -su - == "42"); - -16 -TEST_CASE -("serializeJson(ElementProxy)") { - -17 -DymicJsDocumt - -doc -(4096); - -18 -derlizeJs -( -doc -, "[42]"); - -19 -JsAay - - gr - = -doc -. -as -(); - -20 - gd -:: -rg - -su -; - -22 -rlizeJs -( -r -[0], -su -); - -24 -REQUIRE -( -su - == "42"); - -27 -TEST_CASE -("serializeJson(JsonVariantSubscript)") { - -28 -DymicJsDocumt - -doc -(4096); - -29 -derlizeJs -( -doc -, "[42]"); - -30 -JsV - - gv - = -doc -. -as -(); - -31 - gd -:: -rg - -su -; - -33 -rlizeJs -( -v -[0], -su -); - -35 -REQUIRE -( -su - == "42"); - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("operator<<(std::ostream)") { - -10 -DymicJsDocumt - -doc -(4096); - -11 - gd -:: -orgam - -os -; - -13 -SECTION -("JsonVariant containing false") { - -14 -JsV - - gv - = -doc -. -to -(); - -16 - gv -. -t -( -l -); - -17 - gos - << - gv -; - -19 -REQUIRE -("l" = -os -. -r -()); - -22 -SECTION -("JsonVariant containing string") { - -23 -JsV - - gv - = -doc -. -to -(); - -25 - gv -. -t -("coucou"); - -26 - gos - << - gv -; - -28 -REQUIRE -("\"coucou\"" = -os -. -r -()); - -31 -SECTION -("JsonObject") { - -32 -JsObje - - gobje - = -doc -. -to -(); - -33 - gobje -["key"] = "value"; - -35 - gos - << - gobje -; - -37 -REQUIRE -("{\"key\":\"vue\"}" = -os -. -r -()); - -40 -SECTION -("MemberProxy") { - -41 -JsObje - - gobje - = -doc -. -to -(); - -42 - gobje -["key"] = "value"; - -44 - gos - << - gobje -["key"]; - -46 -REQUIRE -("\"vue\"" = -os -. -r -()); - -49 -SECTION -("JsonArray") { - -50 -JsAay - - gy - = -doc -. -to -(); - -51 - gy -. -add -("value"); - -53 - gos - << - gy -; - -55 -REQUIRE -("[\"vue\"]" = -os -. -r -()); - -58 -SECTION -("ElementProxy") { - -59 -JsAay - - gy - = -doc -. -to -(); - -60 - gy -. -add -("value"); - -62 - gos - << - gy -[0]; - -64 -REQUIRE -("\"vue\"" = -os -. -r -()); - - @lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("serialize JsonArrayo std::string") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsAay - - gy - = -doc -. -to -(); - -11 - gy -. -add -(4); - -12 - gy -. -add -(2); - -14 -SECTION -("serializeJson()") { - -15 - gd -:: -rg - -js -; - -16 -rlizeJs -( -y -, -js -); - -18 -REQUIRE -("[4,2]" = -js -); - -21 -SECTION -("serializeJsonPretty") { - -22 - gd -:: -rg - -js -; - -23 -rlizeJsPy -( -y -, -js -); - -25 -REQUIRE -("[\r\ 4,\r\ 2\r\n]" = -js -); - -29 -TEST_CASE -("serialize JsonObjecto std::string") { - -30 -DymicJsDocumt - -doc -(4096); - -31 -JsObje - - gobj - = -doc -. -to -(); - -32 - gobj -["key"] = "value"; - -34 -SECTION -("object") { - -35 - gd -:: -rg - -js -; - -36 -rlizeJs -( -doc -, -js -); - -38 -REQUIRE -("{\"key\":\"vue\"}" = -js -); - -41 -SECTION -("serializeJsonPretty") { - -42 - gd -:: -rg - -js -; - -43 -rlizeJsPy -( -doc -, -js -); - -45 -REQUIRE -("{\r\ \"key\": \"vue\"\r\n}" = -js -); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/add.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonVariant::add()") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsV - - gv - = -doc -. -to -(); - -13 -SECTION -("integer") { - -14 - gv -. -add -(42); - -16 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "[42]"); - -19 -SECTION -("const char*") { - -20 - gv -. -add -("hello"); - -22 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "[\"hello\"]"); - -25 -SECTION -("std::string") { - -26 - gv -. -add -( -d -:: -rg -("hello")); - -28 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "[\"hello\"]"); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/as.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -mea - - gmy - { - -10 -usg - - gARDUINOJSON_NAMESPACE -:: -isf -; - -13 -TEST_CASE -("JsonVariant::as()") { - -14 cڡ * - gnu - = 0; - -16 -DymicJsDocumt - -doc -(4096); - -17 -JsV - - gv - = -doc -. -to -(); - -19 -SECTION -("not set") { - -20 -REQUIRE -( -l - = -v -. -as -< -bo ->()); - -21 -REQUIRE -(0 = -v -. -as -<>()); - -22 -REQUIRE -(0.0= -v -. -as -<>()); - -23 -REQUIRE -(0 = -v -. -as -<*>()); - -24 -REQUIRE -("nu" = -v -. -as -< -d -:: -rg ->()); - -27 -SECTION -("set(4.2)") { - -28 - gv -. -t -(4.2); - -30 -REQUIRE -( -v -. -as -< -bo ->()); - -31 -REQUIRE -(0 = -v -. -as -()); - -32 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "4.2"); - -33 -REQUIRE -( -v -. -as -<>() == 4L); - -34 -REQUIRE -( -v -. -as -<>() == 4U); - -37 -SECTION -("set(0.0)") { - -38 - gv -. -t -(0.0); - -40 -REQUIRE -( -v -. -as -< -bo ->(= -l -); - -41 -REQUIRE -( -v -. -as -<>() == 0L); - -44 -SECTION -("set(false)") { - -45 - gv -. -t -( -l -); - -47 -REQUIRE -( -l - = -v -. -as -< -bo ->()); - -48 -REQUIRE -( -v -. -as -<>() == 0.0); - -49 -REQUIRE -( -v -. -as -<>() == 0L); - -50 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "false"); - -53 -SECTION -("set(true)") { - -54 - gv -. -t -( -ue -); - -56 -REQUIRE -( -v -. -as -< -bo ->()); - -57 -REQUIRE -( -v -. -as -<>() == 1.0); - -58 -REQUIRE -( -v -. -as -<>() == 1L); - -59 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "true"); - -62 -SECTION -("set(42L)") { - -63 - gv -. -t -(42L); - -65 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -66 -REQUIRE -( -v -. -as -<>() == 42.0); - -67 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "42"); - -70 -SECTION -("set(-42L)") { - -71 - gv -. -t -(-42L); - -73 -REQUIRE -( -v -. -as -<>() == -42.0); - -74 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "-42"); - -77 -SECTION -("set(0L)") { - -78 - gv -. -t -(0L); - -80 -REQUIRE -( -v -. -as -< -bo ->(= -l -); - -81 -REQUIRE -( -v -. -as -<>() == 0.0); - -84 -SECTION -("set(null)") { - -85 - gv -. -t -( -nu -); - -87 -REQUIRE -( -v -. -as -< -bo ->(= -l -); - -88 -REQUIRE -( -v -. -as -<>() == 0.0); - -89 -REQUIRE -( -v -. -as -<>() == 0L); - -90 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "null"); - -93 -SECTION -("set(\"42\")") { - -94 - gv -. -t -("42"); - -96 -REQUIRE -( -v -. -as -<>() == 42L); - -99 -SECTION -("set(\"hello\")") { - -100 - gv -. -t -("hello"); - -102 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -103 -REQUIRE -( -v -. -as -<>() == 0L); - -104 -REQUIRE -( -v -. -as -(= -d -:: -rg -("hello")); - -105 -REQUIRE -( -v -. -as -<*>(= -d -:: -rg -("hello")); - -106 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == std::string("hello")); - -109 -SECTION -("set(std::string(\"4.2\"))") { - -110 - gv -. -t -( -d -:: -rg -("4.2")); - -112 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -113 -REQUIRE -( -v -. -as -<>() == 4L); - -114 -REQUIRE -( -v -. -as -<>() == 4.2); - -115 -REQUIRE -( -v -. -as -<*>(= -d -:: -rg -("4.2")); - -116 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == std::string("4.2")); - -119 -SECTION -("set(\"true\")") { - -120 - gv -. -t -("true"); - -122 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -123 -REQUIRE -( -v -. -as -<>() == 0); - -126 -SECTION -("set(-1e300)") { - -127 - gv -. -t -(-1e300); - -129 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -130 -REQUIRE -( -v -. -as -<>() == -1e300); - -131 -REQUIRE -( -v -. -as -<>() < 0); - -132 -REQUIRE -( -my -:: -isf -( -v -. -as -<>())); - -135 -SECTION -("set(1e300)") { - -136 - gv -. -t -(1e300); - -138 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -139 -REQUIRE -( -v -. -as -<>() == 1e300); - -140 -REQUIRE -( -v -. -as -<>() > 0); - -141 -REQUIRE -( -my -:: -isf -( -v -. -as -<>())); - -144 -SECTION -("set(1e-300)") { - -145 - gv -. -t -(1e-300); - -147 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -148 -REQUIRE -( -v -. -as -<>() == 1e-300); - -149 -REQUIRE -( -v -. -as -<>() == 0); - -152 -SECTION -("to()") { - -153 -JsObje - - gobj - = -v -. -to -(); - -154 - gobj -["key"] = "value"; - -156 -SECTION -("as()") { - -157 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -160 -SECTION -("as()") { - -161 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == std::string("{\"key\":\"value\"}")); - -164 -SECTION -("ObjectAsJsonObject") { - -165 -JsObje - - go - = -v -. -as -(); - -166 -REQUIRE -( -o -. -size -() == 1); - -167 -REQUIRE -( -o -["key"] = -d -:: -rg -("value")); - -171 -SECTION -("to()") { - -172 -JsAay - - gr - = -v -. -to -(); - -173 - gr -. -add -(4); - -174 - gr -. -add -(2); - -176 -SECTION -("as()") { - -177 -REQUIRE -( -v -. -as -< -bo ->(= -ue -); - -180 -SECTION -("as()") { - -181 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == std::string("[4,2]")); - -184 -SECTION -("as()") { - -185 -JsAay - - ga - = -v -. -as -(); - -186 -REQUIRE -( -a -. -size -() == 2); - -187 -REQUIRE -( -a -[0] == 4); - -188 -REQUIRE -( -a -[1] == 2); - -192 #i -ARDUINOJSON_USE_LONG_LONG - - -193 -SECTION -("Smallest int64egative") { - -194 - gv -. -t -("-9223372036854775808"); - -195 -REQUIRE -( -v -. -as -<>() == -9223372036854775807 - 1); - -198 -SECTION -("Biggerst int64ositive") { - -199 - gv -. -t -("9223372036854775807"); - -200 -REQUIRE -( -v -. -as -<>() == 9223372036854775807); - -204 -SECTION -("should work on JsonVariantConst") { - -205 - gv -. -t -("hello"); - -207 -JsVCڡ - - gcv - = -v -; - -209 -REQUIRE -( -cv -. -as -< -bo ->(= -ue -); - -210 -REQUIRE -( -cv -. -as -<>() == 0L); - -211 -REQUIRE -( -cv -. -as -(= -d -:: -rg -("hello")); - -212 -REQUIRE -( -cv -. -as -<*>(= -d -:: -rg -("hello")); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/clear.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonVariant::clear()") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsV - - gv - = -doc -. -to -(); - -13 -SECTION -("size goes backo zero") { - -14 - gv -. -add -(42); - -15 - gv -. -r -(); - -17 -REQUIRE -( -v -. -size -() == 0); - -20 -SECTION -("isNull()eturnrue") { - -21 - gv -. -add -("hello"); - -22 - gv -. -r -(); - -24 -REQUIRE -( -v -. -isNu -(= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/compare.cpp - -5  - ~ - -6  - ~ - -8 - gme - < -tyme - - gT -> - -9  - $checkEqus -( -T - -a -, T -b -) { - -10 -DymicJsDocumt - - `doc -(4096); - -11 -JsV - -v - = -doc -. -to -(); - -12 -v -. - `t -( -a -); - -14 - `REQUIRE -( -b - = -v -); - -15 - `REQUIRE -( -v - = -b -); - -16 - `REQUIRE -( -b - < -v -); - -17 - `REQUIRE -( -v - < -b -); - -18 - `REQUIRE -( -b - > -v -); - -19 - `REQUIRE -( -v - > -b -); - -21 - `REQUIRE_FALSE -( -b - ! -v -); - -22 - `REQUIRE_FALSE -( -v - ! -b -); - -23 - `REQUIRE_FALSE -( -b - > -v -); - -24 - `REQUIRE_FALSE -( -v - > -b -); - -25 - `REQUIRE_FALSE -( -b - < -v -); - -26 - `REQUIRE_FALSE -( -v - < -b -); - -27 - } -} - -29 - gme - < -tyme - - gT -> - -30  - $checkG -( -T - -a -, T -b -) { - -31 -DymicJsDocumt - - `doc -(4096); - -32 -JsV - -v - = -doc -. -to -(); - -33 -v -. - `t -( -a -); - -35 - `REQUIRE -( -v - > -b -); - -36 - `REQUIRE -( -b - < -v -); - -37 - `REQUIRE -( -v - ! -b -); - -38 - `REQUIRE -( -b - ! -v -); - -40 - `REQUIRE_FALSE -( -v - < -b -); - -41 - `REQUIRE_FALSE -( -b - > -v -); - -42 - `REQUIRE_FALSE -( -v - = -b -); - -43 - `REQUIRE_FALSE -( -b - = -v -); - -44 - } -} - -46 - gme - < -tyme - - gT -> - -47  - $checkLow -( -T - -a -, T -b -) { - -48 -DymicJsDocumt - - `doc -(4096); - -49 -JsV - -v - = -doc -. -to -(); - -50 -v -. - `t -( -a -); - -52 - `REQUIRE -( -v - < -b -); - -53 - `REQUIRE -( -b - > -v -); - -54 - `REQUIRE -( -v - ! -b -); - -55 - `REQUIRE -( -b - ! -v -); - -57 - `REQUIRE_FALSE -( -v - > -b -); - -58 - `REQUIRE_FALSE -( -b - < -v -); - -59 - `REQUIRE_FALSE -( -v - = -b -); - -60 - `REQUIRE_FALSE -( -b - = -v -); - -61 - } -} - -63 - gme - < -tyme - - gT -> - -64  - $checkComriss -( -T - -low -, T -mid -, T -high -) { - -65 - `checkEqus -( -mid -, mid); - -66 - `checkG -( -mid -, -low -); - -67 - `checkLow -( -mid -, -high -); - -68 - } -} - -70 -TEST_CASE -("JsonVariant comparisons") { - -71 cڡ * - gnu - = 0; - -73 -SECTION -("Double") { - -74 - gcheckComriss -<>(123.44, 123.45, 123.46); - -77 -SECTION -("Float") { - -78 - gcheckComriss -<>(123.44f, 123.45f, 123.46f); - -81 -SECTION -("SChar") { - -82 - gcheckComriss -(122, 123, 124); - -85 -SECTION -("SInt") { - -86 - gcheckComriss -(122, 123, 124); - -89 -SECTION -("SLong") { - -90 - gcheckComriss -(122L, 123L, 124L); - -93 -SECTION -("SShort") { - -94 - gcheckComriss -(122, 123, 124); - -97 -SECTION -("UChar") { - -98 - gcheckComriss -<>(122, 123, 124); - -101 -SECTION -("UInt") { - -102 - gcheckComriss -<>(122, 123, 124); - -105 -SECTION -("ULong") { - -106 - gcheckComriss -<>(122L, 123L, 124L); - -109 -SECTION -("UShort") { - -110 - gcheckComriss -<>(122, 123, 124); - -113 -SECTION -("null") { - -114 -DymicJsDocumt - -doc -(4096); - -115 -JsV - - gv - = -doc -. -to -(); - -116 - gv -. -t -( -nu -); - -118 -REQUIRE -( -v - == variant); - -119 -REQUIRE_FALSE -( -v - != variant); - -121 -REQUIRE -( -v - = -nu -); - -122 -REQUIRE_FALSE -( -v - ! -nu -); - -124 -REQUIRE -( -v - != "null"); - -125 -REQUIRE_FALSE -( -v - == "null"); - -128 -SECTION -("StringLiteral") { - -129 -DymicJsDocumt - -doc -(4096); - -130 -derlizeJs -( -doc -, "\"hello\""); - -131 -JsV - - gv - = -doc -. -as -(); - -133 -REQUIRE -( -v - == variant); - -134 -REQUIRE_FALSE -( -v - != variant); - -136 -REQUIRE -( -v - == "hello"); - -137 -REQUIRE_FALSE -( -v - != "hello"); - -139 -REQUIRE -( -v - != "world"); - -140 -REQUIRE_FALSE -( -v - == "world"); - -142 -REQUIRE -( -v - ! -nu -); - -143 -REQUIRE_FALSE -( -v - = -nu -); - -145 -REQUIRE -("hlo" = -v -); - -146 -REQUIRE_FALSE -("hlo" ! -v -); - -148 -REQUIRE -("wld" ! -v -); - -149 -REQUIRE_FALSE -("wld" = -v -); - -151 -REQUIRE -( -nu - ! -v -); - -152 -REQUIRE_FALSE -( -nu - = -v -); - -155 -SECTION -("String") { - -156 -DymicJsDocumt - -doc -(4096); - -157 -JsV - - gv - = -doc -. -to -(); - -158 - gv -. -t -("hello"); - -160 -REQUIRE -( -v - == variant); - -161 -REQUIRE_FALSE -( -v - != variant); - -163 -REQUIRE -( -v - = -d -:: -rg -("hello")); - -164 -REQUIRE_FALSE -( -v - ! -d -:: -rg -("hello")); - -166 -REQUIRE -( -v - ! -d -:: -rg -("world")); - -167 -REQUIRE_FALSE -( -v - = -d -:: -rg -("world")); - -169 -REQUIRE -( -v - ! -nu -); - -170 -REQUIRE_FALSE -( -v - = -nu -); - -172 -REQUIRE -( -d -:: -rg -("hlo"= -v -); - -173 -REQUIRE_FALSE -( -d -:: -rg -("hlo"! -v -); - -175 -REQUIRE -( -d -:: -rg -("wld"! -v -); - -176 -REQUIRE_FALSE -( -d -:: -rg -("wld"= -v -); - -178 -REQUIRE -( -nu - ! -v -); - -179 -REQUIRE_FALSE -( -nu - = -v -); - -182 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -183 -SECTION -("VLAquals") { - -184  - gi - = 16; - -185  - gv -[ -i -]; - -186 -ry -( -v -, "hello"); - -188 -DymicJsDocumt - -doc -(4096); - -189 -JsV - - gv - = -doc -. -to -(); - -190 - gv -. -t -("hello"); - -192 -REQUIRE -(( -v - = -v -)); - -193 -REQUIRE -(( -v - = -v -)); - -194 -REQUIRE_FALSE -(( -v - ! -v -)); - -195 -REQUIRE_FALSE -(( -v - ! -v -)); - -198 -SECTION -("VLA differs") { - -199  - gi - = 16; - -200  - gv -[ -i -]; - -201 -ry -( -v -, "hello"); - -203 -DymicJsDocumt - -doc -(4096); - -204 -JsV - - gv - = -doc -. -to -(); - -205 - gv -. -t -("world"); - -207 -REQUIRE -(( -v - ! -v -)); - -208 -REQUIRE -(( -v - ! -v -)); - -209 -REQUIRE_FALSE -(( -v - = -v -)); - -210 -REQUIRE_FALSE -(( -v - = -v -)); - -214 -DymicJsDocumt - -doc1 -(4096), -doc2 -(4096), -doc3 -(4096); - -215 -JsV - - gv1 - = -doc1 -. -to -(); - -216 -JsV - - gv2 - = -doc2 -. -to -(); - -217 -JsV - - gv3 - = -doc3 -. -to -(); - -219 -SECTION -("Variants containing integers") { - -220 - gv1 -. -t -(42); - -221 - gv2 -. -t -(42); - -222 - gv3 -. -t -(666); - -224 -REQUIRE -( -v1 - = -v2 -); - -225 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -227 -REQUIRE -( -v1 - ! -v3 -); - -228 -REQUIRE_FALSE -( -v1 - = -v3 -); - -231 -SECTION -("Variants containinginked strings") { - -233  - ghlo1 -[] = "hello"; - -234  - ghlo2 -[] = "hello"; - -235 -REQUIRE -( -hlo1 - ! -hlo2 -); - -237 - gv1 -. -t -( -hlo1 -); - -238 - gv2 -. -t -( -hlo2 -); - -239 - gv3 -. -t -("world"); - -241 -REQUIRE -( -v1 - = -v2 -); - -242 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -244 -REQUIRE -( -v1 - ! -v3 -); - -245 -REQUIRE_FALSE -( -v1 - = -v3 -); - -248 -SECTION -("Variants containing owned strings") { - -249 - gv1 -. -t -( -d -:: -rg -("hello")); - -250 - gv2 -. -t -( -d -:: -rg -("hello")); - -251 - gv3 -. -t -( -d -:: -rg -("world")); - -253 -REQUIRE -( -v1 - = -v2 -); - -254 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -256 -REQUIRE -( -v1 - ! -v3 -); - -257 -REQUIRE_FALSE -( -v1 - = -v3 -); - -260 -SECTION -("Variants containinginkedaws") { - -262  - ghlo1 -[] = "hello"; - -263  - ghlo2 -[] = "hello"; - -264 -REQUIRE -( -hlo1 - ! -hlo2 -); - -266 - gv1 -. -t -( -rlized -( -hlo1 -)); - -267 - gv2 -. -t -( -rlized -( -hlo2 -)); - -268 - gv3 -. -t -( -rlized -("world")); - -270 -REQUIRE -( -v1 - = -v2 -); - -271 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -273 -REQUIRE -( -v1 - ! -v3 -); - -274 -REQUIRE_FALSE -( -v1 - = -v3 -); - -277 -SECTION -("Variants containing ownedaws") { - -278 - gv1 -. -t -( -rlized -( -d -:: -rg -("hello"))); - -279 - gv2 -. -t -( -rlized -( -d -:: -rg -("hello"))); - -280 - gv3 -. -t -( -rlized -( -d -:: -rg -("world"))); - -282 -REQUIRE -( -v1 - = -v2 -); - -283 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -285 -REQUIRE -( -v1 - ! -v3 -); - -286 -REQUIRE_FALSE -( -v1 - = -v3 -); - -289 -SECTION -("Variants containing mixed strings (issue #1051)") { - -290 - gv1 -. -t -("hello"); - -291 - gv2 -. -t -( -d -:: -rg -("hello")); - -293 -REQUIRE -( -v1 - = -v2 -); - -294 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -296 -REQUIRE -( -v2 - = -v1 -); - -297 -REQUIRE_FALSE -( -v2 - ! -v1 -); - -300 -SECTION -("Variants containing double") { - -301 - gv1 -. -t -(42.0); - -302 - gv2 -. -t -(42.0); - -303 - gv3 -. -t -(666.0); - -305 -REQUIRE -( -v1 - = -v2 -); - -306 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -308 -REQUIRE -( -v1 - ! -v3 -); - -309 -REQUIRE_FALSE -( -v1 - = -v3 -); - -312 -SECTION -("BoolInVariant") { - -313 - gv1 -. -t -( -ue -); - -314 - gv2 -. -t -( -ue -); - -315 - gv3 -. -t -( -l -); - -317 -REQUIRE -( -v1 - = -v2 -); - -318 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -320 -REQUIRE -( -v1 - ! -v3 -); - -321 -REQUIRE_FALSE -( -v1 - = -v3 -); - -324 -SECTION -("ArrayInVariant") { - -325 -JsAay - - gy1 - = -v1 -. -to -(); - -326 -JsAay - - gy2 - = -v2 -. -to -(); - -328 - gy1 -. -add -(42); - -329 - gy2 -. -add -(42); - -331 -REQUIRE -( -v1 - = -v2 -); - -332 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -334 -REQUIRE -( -v1 - ! -v3 -); - -335 -REQUIRE_FALSE -( -v1 - = -v3 -); - -338 -SECTION -("ObjectInVariant") { - -339 -JsObje - - gobj1 - = -v1 -. -to -(); - -340 -JsObje - - gobj2 - = -v2 -. -to -(); - -342 - gobj1 -["hello"] = "world"; - -343 - gobj2 -["hello"] = "world"; - -345 -REQUIRE -( -v1 - = -v2 -); - -346 -REQUIRE_FALSE -( -v1 - ! -v2 -); - -348 -REQUIRE -( -v1 - ! -v3 -); - -349 -REQUIRE_FALSE -( -v1 - = -v3 -); - -353 as - cVComrisiFixtu - { - -354 - mive -: - -355 -SticJsDocumt -<256> -doc -; - -356 -JsV - - mv -; - -358 - mpublic -: - -359 - $VComrisiFixtu -(: - `v -( -doc -. -to -< -JsV ->()) {} - -361 -eed -: - -362 -me - < -tyme - -T -> - -363  - $tVue -(cڡ -T -& -vue -) { - -364 -v -. - `t -( -vue -); - -365 - } -} - -367 - gme - < -tyme - - gT -> - -368  - $asEqusTo -(cڡ -T -& -vue -) { - -369 - `REQUIRE -( -v - = -vue -); - -370 - `REQUIRE -( -vue - = -v -); - -372 - `REQUIRE_FALSE -( -v - ! -vue -); - -373 - `REQUIRE_FALSE -( -vue - ! -v -); - -374 - } -} - -376 - gme - < -tyme - - gT -> - -377  - $asDifrsFrom -(cڡ -T -& -vue -) { - -378 - `REQUIRE -( -v - ! -vue -); - -379 - `REQUIRE -( -vue - ! -v -); - -381 - `REQUIRE_FALSE -( -v - = -vue -); - -382 - `REQUIRE_FALSE -( -vue - = -v -); - -383 - } -} - -385 - gme - < -tyme - - gT -> - -386  - $asGTh -(cڡ -T -& -vue -) { - -387 - `REQUIRE -(( -v - > -vue -)); - -388 - `REQUIRE -(( -v - > -vue -)); - -389 - `REQUIRE -( -vue - < -v -); - -390 - `REQUIRE -( -vue - < -v -); - -392 - `REQUIRE_FALSE -(( -v - < -vue -)); - -393 - `REQUIRE_FALSE -(( -v - < -vue -)); - -394 - `REQUIRE_FALSE -( -vue - > -v -); - -395 - `REQUIRE_FALSE -( -vue - > -v -); - -396 - } -} - -398 - gme - < -tyme - - gT -> - -399  - $asLowTh -(cڡ -T -& -vue -) { - -400 - `REQUIRE -( -v - < -vue -); - -401 - `REQUIRE -( -v - < -vue -); - -402 - `REQUIRE -( -vue - > -v -); - -403 - `REQUIRE -( -vue - > -v -); - -405 - `REQUIRE_FALSE -( -v - > -vue -); - -406 - `REQUIRE_FALSE -( -v - > -vue -); - -407 - `REQUIRE_FALSE -( -vue - < -v -); - -408 - `REQUIRE_FALSE -( -vue - < -v -); - -409 - } -} - -412 -TEST_CASE_METHOD -( -VComrisiFixtu -, - -414 -SECTION -("null") { - -415 -asDifrsFrom -(3); - -416 -asDifrsFrom -("world"); - -419 -SECTION -("string") { - -420 -tVue -("hello"); - -421 -asEqusTo -("hello"); - -422 -asDifrsFrom -(3); - -423 -asDifrsFrom -("world"); - -424 -asGTh -("helln"); - -425 -asLowTh -("hellp"); - -428 -SECTION -("positive integer") { - -429 -tVue -(42); - -430 -asEqusTo -(42); - -431 -asDifrsFrom -(43); - -432 -asGTh -(41); - -433 -asLowTh -(43); - -434 -asDifrsFrom -("world"); - -437 -SECTION -("negative integer") { - -438 -tVue -(-42); - -439 -asEqusTo -(-42); - -440 -asDifrsFrom -(42); - -441 -asGTh -(-43); - -442 -asLowTh -(-41); - -443 -asDifrsFrom -("world"); - -446 -SECTION -("double") { - -447 -tVue -(42.0); - -448 -asEqusTo -(42.0); - -449 -asDifrsFrom -(42.1); - -450 -asGTh -(41.0); - -451 -asLowTh -(43.0); - -452 -asDifrsFrom -("42.0"); - -455 -SECTION -("true") { - -456 -tVue -( -ue -); - -457 -asEqusTo -( -ue -); - -458 -asDifrsFrom -( -l -); - -459 -asDifrsFrom -(1); - -460 -asDifrsFrom -("true"); - -461 -asDifrsFrom -(1.0); - -462 -asGTh -( -l -); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/containsKey.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 cڡ * - gnu - = 0; - -11 -TEST_CASE -("JsonVariant::containsKey()") { - -12 -DymicJsDocumt - -doc -(4096); - -13 -JsV - - gv - = -doc -. -to -(); - -15 -SECTION -("containsKey(const char*)eturnsrue") { - -16 - gv -["hello"] = "world"; - -18 -REQUIRE -( -v -. -cڏsKey -("hlo"= -ue -); - -19 -REQUIRE -( -v -. -cڏsKey -("wld"= -l -); - -22 -SECTION -("containsKey(std::string)eturnsrue") { - -23 - gv -["hello"] = "world"; - -25 -REQUIRE -( -v -. -cڏsKey -( -d -:: -rg -("hlo")= -ue -); - -26 -REQUIRE -( -v -. -cڏsKey -( -d -:: -rg -("wld")= -l -); - -30 -TEST_CASE -("JsonVariantConst::containsKey()") { - -31 -DymicJsDocumt - -doc -(4096); - -32 - gdoc -["hello"] = "world"; - -33 -JsVCڡ - - gcv - = -doc -. -as -< -JsV ->(); - -35 -SECTION -("containsKey(const char*)eturnsrue") { - -36 -REQUIRE -( -cv -. -cڏsKey -("hlo"= -ue -); - -37 -REQUIRE -( -cv -. -cڏsKey -("wld"= -l -); - -40 -SECTION -("containsKey(std::string)eturnsrue") { - -41 -REQUIRE -( -cv -. -cڏsKey -( -d -:: -rg -("hlo")= -ue -); - -42 -REQUIRE -( -cv -. -cڏsKey -( -d -:: -rg -("wld")= -l -); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/copy.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonVariant::set(JsonVariant)") { - -9 -DymicJsDocumt - -doc1 -(4096); - -10 -DymicJsDocumt - -doc2 -(4096); - -11 -JsV - - gv1 - = -doc1 -. -to -(); - -12 -JsV - - gv2 - = -doc2 -. -to -(); - -14 -SECTION -("stores JsonArray by copy") { - -15 -JsAay - - gr - = -doc2 -. -to -(); - -16 -JsObje - - gobj - = -r -. -NeedObje -(); - -17 - gobj -["hello"] = "world"; - -19 - gv1 -. -t -( -r -); - -21 - gr -[0] = 666; - -22 -REQUIRE -( -v1 -. -as -< -d -:: -rg ->() == "[{\"hello\":\"world\"}]"); - -25 -SECTION -("stores JsonObject by copy") { - -26 -JsObje - - gobj - = -doc2 -. -to -(); - -27 -JsAay - - gr - = -obj -. -NeedAay -("value"); - -28 - gr -. -add -(42); - -30 - gv1 -. -t -( -obj -); - -32 - gobj -["value"] = 666; - -33 -REQUIRE -( -v1 -. -as -< -d -:: -rg ->() == "{\"value\":[42]}"); - -36 -SECTION -("stores const char* byeference") { - -37 - gv1 -. -t -("hello!!"); - -38 - gv2 -. -t -( -v1 -); - -40 -REQUIRE -( -doc1 -. -memyUge -() == 0); - -41 -REQUIRE -( -doc2 -. -memyUge -() == 0); - -44 -SECTION -("stores char* by copy") { - -45  - gr -[] = "hello!!"; - -47 - gv1 -. -t -( -r -); - -48 - gv2 -. -t -( -v1 -); - -50 -REQUIRE -( -doc1 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - -51 -REQUIRE -( -doc2 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - -54 -SECTION -("stores std::string by copy") { - -55 - gv1 -. -t -( -d -:: -rg -("hello!!")); - -56 - gv2 -. -t -( -v1 -); - -58 -REQUIRE -( -doc1 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - -59 -REQUIRE -( -doc2 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - -62 -SECTION -("stores Serialized byeference") { - -63 - gv1 -. -t -( -rlized -("hlo!!", -JSON_STRING_SIZE -(8))); - -64 - gv2 -. -t -( -v1 -); - -66 -REQUIRE -( -doc1 -. -memyUge -() == 0); - -67 -REQUIRE -( -doc2 -. -memyUge -() == 0); - -70 -SECTION -("stores Serialized by copy") { - -71  - gr -[] = "hello!!"; - -72 - gv1 -. -t -( -rlized -( -r -, 8)); - -73 - gv2 -. -t -( -v1 -); - -75 -REQUIRE -( -doc1 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - -76 -REQUIRE -( -doc2 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - -79 -SECTION -("stores Serialized by copy") { - -80 - gv1 -. -t -( -rlized -( -d -:: -rg -("hello!!!"))); - -81 - gv2 -. -t -( -v1 -); - -83 -REQUIRE -( -doc1 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - -84 -REQUIRE -( -doc2 -. -memyUge -(= -JSON_STRING_SIZE -(8)); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/createNested.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonVariant::createNestedObject()") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsV - - gv - = -doc -. -to -(); - -13 -SECTION -("promotesorray") { - -14 -JsObje - - gobj - = -v -. -NeedObje -(); - -15 - gobj -["value"] = 42; - -17 -REQUIRE -( -v -. -is -< -JsAay ->(= -ue -); - -18 -REQUIRE -( -v -[0]["value"] == 42); - -19 -REQUIRE -( -obj -. -isNu -(= -l -); - -22 -SECTION -("works on MemberProxy") { - -23 -JsObje - - gobj - = -v -["ems"]. -NeedObje -(); - -24 - gobj -["value"] = 42; - -26 -REQUIRE -( -v -["items"][0]["value"] == 42); - -30 -TEST_CASE -("JsonVariant::createNestedArray()") { - -31 -DymicJsDocumt - -doc -(4096); - -32 -JsV - - gv - = -doc -. -to -(); - -34 -SECTION -("promotesorray") { - -35 -JsAay - - gr - = -v -. -NeedAay -(); - -37 -REQUIRE -( -v -. -is -< -JsAay ->(= -ue -); - -38 -REQUIRE -( -r -. -isNu -(= -l -); - -41 -SECTION -("works on MemberProxy") { - -42 -JsAay - - gr - = -v -["ems"]. -NeedAay -(); - -43 - gr -. -add -(42); - -45 -REQUIRE -( -v -["items"][0][0] == 42); - -49 -TEST_CASE -("JsonVariant::createNestedObject(key)") { - -50 -DymicJsDocumt - -doc -(4096); - -51 -JsV - - gv - = -doc -. -to -(); - -53 -SECTION -("promoteso object") { - -54 -JsObje - - gobj - = -v -. -NeedObje -("weather"); - -55 - gobj -["temp"] = 42; - -57 -REQUIRE -( -v -. -is -< -JsObje ->(= -ue -); - -58 -REQUIRE -( -v -["weather"]["temp"] == 42); - -61 -SECTION -("works on MemberProxy") { - -62 -JsObje - - gobj - = -v -["us"]. -NeedObje -("weather"); - -63 - gobj -["temp"] = 42; - -65 -REQUIRE -( -v -["status"]["weather"]["temp"] == 42); - -69 -TEST_CASE -("JsonVariant::createNestedArray(key)") { - -70 -DymicJsDocumt - -doc -(4096); - -71 -JsV - - gv - = -doc -. -to -(); - -73 -SECTION -("promoteso object") { - -74 -JsAay - - gr - = -v -. -NeedAay -("items"); - -76 -REQUIRE -( -v -. -is -< -JsObje ->(= -ue -); - -77 -REQUIRE -( -r -. -isNu -(= -l -); - -80 -SECTION -("works on MemberProxy") { - -81 -JsAay - - gr - = -v -["wth"]. -NeedAay -("temp"); - -82 - gr -. -add -(42); - -84 -REQUIRE -( -v -["weather"]["temp"][0] == 42); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/is.cpp - -5  - ~ - -6  - ~ - -8 - gme - < -tyme - - gTV -> - -9  - $checkIsAay -( -TV - -v -) { - -10 - `REQUIRE -( -v -. -me - -is -< -JsAay ->()); - -12 - `REQUIRE_FALSE -( -v -. -me - -is -< -bo ->()); - -13 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -14 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -15 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -16 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -17 - `REQUIRE_FALSE -( -v -. -me - -is -()); - -18 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsObje ->()); - -19 - } -} - -21  - $Aay -( -JsAay - -vue -) { - -22 -DymicJsDocumt - - `doc -(4096); - -24 -JsV - -v - = -doc -. -to -(); - -25 -v -. - `t -( -vue -); - -27 - `checkIsAay -( -v -); - -29 -JsVCڡ - -cv - = -v -; - -30 - `checkIsAay -( -cv -); - -31 - } -} - -33 - gme - < -tyme - - gTV -> - -34  - $checkIsBo -( -TV - -v -) { - -35 - `REQUIRE -( -v -. -me - -is -< -bo ->()); - -37 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -38 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -39 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -40 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -41 - `REQUIRE_FALSE -( -v -. -me - -is -()); - -42 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsAay ->()); - -43 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsObje ->()); - -44 - } -} - -46  - $Bo -( -bo - -vue -) { - -47 -DymicJsDocumt - - `doc -(4096); - -48 -JsV - -v - = -doc -. -to -(); - -49 -v -. - `t -( -vue -); - -51 - `checkIsBo -( -v -); - -52 - `checkIsBo -( - `JsVCڡ -( -v -)); - -53 - } -} - -55 - gme - < -tyme - - gTV -> - -56  - $checkIsFlt -( -TV - -v -) { - -57 - `REQUIRE -( -v -. -me - -is -<>()); - -58 - `REQUIRE -( -v -. -me - -is -<>()); - -60 - `REQUIRE_FALSE -( -v -. -me - -is -< -bo ->()); - -61 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -62 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -63 - `REQUIRE_FALSE -( -v -. -me - -is -()); - -64 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsAay ->()); - -65 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsObje ->()); - -66 - } -} - -68  - $Flt -( -vue -) { - -69 -DymicJsDocumt - - `doc -(4096); - -70 -JsV - -v - = -doc -. -to -(); - -71 -v -. - `t -( -vue -); - -73 - `checkIsFlt -( -v -); - -74 - `checkIsFlt -( - `JsVCڡ -( -v -)); - -75 - } -} - -77 - gme - < -tyme - - gTV -> - -78  - $checkIsIeg -( -TV - -v -) { - -79 - `REQUIRE -( -v -. -me - -is -<>()); - -80 - `REQUIRE -( -v -. -me - -is -<>()); - -81 - `REQUIRE -( -v -. -me - -is -<>()); - -82 - `REQUIRE -( -v -. -me - -is -<>()); - -84 - `REQUIRE_FALSE -( -v -. -me - -is -< -bo ->()); - -85 - `REQUIRE_FALSE -( -v -. -me - -is -()); - -86 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsAay ->()); - -87 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsObje ->()); - -88 - } -} - -90 - gme - < -tyme - - gT -> - -91  - $Ieg -( -T - -vue -) { - -92 -DymicJsDocumt - - `doc -(4096); - -93 -JsV - -v - = -doc -. -to -(); - -94 -v -. - `t -( -vue -); - -96 - `checkIsIeg -( -v -); - -97 - `checkIsIeg -( - `JsVCڡ -( -v -)); - -98 - } -} - -100 - gme - < -tyme - - gTV -> - -101  - $checkIsSg -( -TV - -v -) { - -102 - `REQUIRE -( -v -. -me - -is -()); - -103 - `REQUIRE -( -v -. -me - -is -< -d -:: -rg ->()); - -105 - `REQUIRE_FALSE -( -v -. -me - -is -< -bo ->()); - -106 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -107 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -108 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -109 - `REQUIRE_FALSE -( -v -. -me - -is -<>()); - -110 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsAay ->()); - -111 - `REQUIRE_FALSE -( -v -. -me - -is -< -JsObje ->()); - -112 - } -} - -114  - $Sg -(cڡ * -vue -) { - -115 -DymicJsDocumt - - `doc -(4096); - -116 -JsV - -v - = -doc -. -to -(); - -117 -v -. - `t -( -vue -); - -119 - `checkIsSg -( -v -); - -120 - `checkIsSg -( - `JsVCڡ -( -v -)); - -121 - } -} - -123 -TEST_CASE -("JsonVariant::is()") { - -124 -SECTION -("JsonArray") { - -125 -DymicJsDocumt - -doc -(4096); - -126 -JsAay - - gy - = -doc -. -to -(); - -127 -Aay -( -y -); - -130 -SECTION -("bool") { - -131 -Bo -( -ue -); - -132 -Bo -( -l -); - -135 -SECTION -("double") { - -136 -Flt -(4.2); - -139 -SECTION -("int") { - -140 -Ieg -(42); - -143 -SECTION -("long") { - -144 -Ieg -(42L); - -147 -SECTION -("string") { - -148 -Sg -("42"); - -151 -SECTION -("null") { - -152 -DymicJsDocumt - -doc -(4096); - -153 -derlizeJs -( -doc -, "[null]"); - -154 -JsV - - gv - = -doc -[0]; - -156 -REQUIRE -( -v -. -is -< -bo ->(= -l -); - -157 -REQUIRE -( -v -. -is -<*>(= -l -); - -158 -REQUIRE -( -v -. -is -<>(= -l -); - -159 -REQUIRE -( -v -. -is -< -d -:: -rg ->(= -l -); - -160 -REQUIRE -( -v -. -is -<>(= -l -); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/isnull.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonVariant::isNull()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsV - - gv - = -doc -. -to -(); - -12 -SECTION -("returnrue when Undefined") { - -13 -REQUIRE -( -v -. -isNu -(= -ue -); - -16 -SECTION -("return false when Integer") { - -17 - gv -. -t -(42); - -19 -REQUIRE -( -v -. -isNu -(= -l -); - -22 -SECTION -("return false when EmptyArray") { - -23 -DymicJsDocumt - -doc2 -(4096); - -24 -JsAay - - gy - = -doc2 -. -to -(); - -26 - gv -. -t -( -y -); - -27 -REQUIRE -( -v -. -isNu -(= -l -); - -30 -SECTION -("return false when EmptyObject") { - -31 -DymicJsDocumt - -doc2 -(4096); - -32 -JsObje - - gobj - = -doc2 -. -to -(); - -34 - gv -. -t -( -obj -); - -35 -REQUIRE -( -v -. -isNu -(= -l -); - -38 -SECTION -("returnruefter set(JsonArray())") { - -39 - gv -. -t -( -JsAay -()); - -40 -REQUIRE -( -v -. -isNu -(= -ue -); - -43 -SECTION -("returnruefter set(JsonObject())") { - -44 - gv -. -t -( -JsObje -()); - -45 -REQUIRE -( -v -. -isNu -(= -ue -); - -48 -SECTION -("return falsefter set('hello')") { - -49 - gv -. -t -("hello"); - -50 -REQUIRE -( -v -. -isNu -(= -l -); - -53 -SECTION -("returnruefter set((char*)0)") { - -54 - gv -. -t -( -ic_ -<*>(0)); - -55 -REQUIRE -( -v -. -isNu -(= -ue -); - -58 -SECTION -("returnruefter set((const char*)0)") { - -59 - gv -. -t -( -ic_ -(0)); - -60 -REQUIRE -( -v -. -isNu -(= -ue -); - -63 -SECTION -("returnruefter set(serialized((char*)0))") { - -64 - gv -. -t -( -rlized -( -ic_ -<*>(0))); - -65 -REQUIRE -( -v -. -isNu -(= -ue -); - -68 -SECTION -("returnruefter set(serialized((const char*)0))") { - -69 - gv -. -t -( -rlized -( -ic_ -(0))); - -70 -REQUIRE -( -v -. -isNu -(= -ue -); - -73 -SECTION -("works with JsonVariantConst") { - -74 - gv -. -t -(42); - -76 -JsVCڡ - - gcv - = -v -; - -78 -REQUIRE -( -cv -. -isNu -(= -l -); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/memoryUsage.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -TEST_CASE -("JsonVariant::memoryUsage()") { - -10 -DymicJsDocumt - -doc -(4096); - -11 -JsV - - gv - = -doc -. -to -(); - -13 -SECTION -("returns 0 if uninitialized") { - -14 -JsV - - gunlized -; - -15 -REQUIRE -( -unlized -. -memyUge -() == 0); - -18 -SECTION -("returns size of object") { - -19 -JsObje - - gobj - = -v -. -to -(); - -20 - gobj -["hello"] = 42; - -21 -REQUIRE -( -v -. -memyUge -(= -JSON_OBJECT_SIZE -(1)); - -24 -SECTION -("returns size ofrray") { - -25 -JsAay - - gr - = -v -. -to -(); - -26 - gr -. -add -(42); - -27 -REQUIRE -( -v -. -memyUge -(= -JSON_ARRAY_SIZE -(1)); - -30 -SECTION -("returns size of owned string") { - -31 - gv -. -t -( -d -:: -rg -("hello")); - -32 -REQUIRE -( -v -. -memyUge -() == 6); - -35 -SECTION -("returns size of ownedaw") { - -36 - gv -. -t -( -rlized -( -d -:: -rg -("hello"))); - -37 -REQUIRE -( -v -. -memyUge -() == 5); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/misc.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonVariant from JsonArray") { - -9 -SECTION -("JsonArray isull") { - -10 -JsAay - - gr -; - -11 -JsV - - gv - = -r -; - -12 -REQUIRE -( -v -. -isNu -(= -ue -); - -15 -SECTION -("JsonArray isotull") { - -16 -DymicJsDocumt - -doc -(4096); - -17 -JsAay - - gr - = -doc -. -to -(); - -18 - gr -. -add -(12); - -19 - gr -. -add -(34); - -21 -JsV - - gv - = -r -; - -23 -REQUIRE -( -v -. -is -< -JsAay ->(= -ue -); - -24 -REQUIRE -( -v -. -size -() == 2); - -25 -REQUIRE -( -v -[0] == 12); - -26 -REQUIRE -( -v -[1] == 34); - -30 -TEST_CASE -("JsonVariant from JsonObject") { - -31 -SECTION -("JsonObject isull") { - -32 -JsObje - - gobj -; - -33 -JsV - - gv - = -obj -; - -34 -REQUIRE -( -v -. -isNu -(= -ue -); - -37 -SECTION -("JsonObject isotull") { - -38 -DymicJsDocumt - -doc -(4096); - -39 -JsObje - - gobj - = -doc -. -to -(); - -40 - gobj -["a"] = 12; - -41 - gobj -["b"] = 34; - -43 -JsV - - gv - = -obj -; - -45 -REQUIRE -( -v -. -is -< -JsObje ->(= -ue -); - -46 -REQUIRE -( -v -. -size -() == 2); - -47 -REQUIRE -( -v -["a"] == 12); - -48 -REQUIRE -( -v -["b"] == 34); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/nesting.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonVariant::nesting()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsV - - gv - = -doc -. -to -(); - -12 -SECTION -("return 0 if uninitialized") { - -13 -JsV - - gunlized -; - -14 -REQUIRE -( -unlized -. -ág -() == 0); - -17 -SECTION -("returns 0 for string") { - -18 - gv -. -t -("hello"); - -19 -REQUIRE -( -v -. -ág -() == 0); - -22 -SECTION -("returns 1 formpty object") { - -23 - gv -. - gto -< - gJsObje ->(); - -24 -REQUIRE -( -v -. -ág -() == 1); - -27 -SECTION -("returns 1 formptyrray") { - -28 - gv -. - gto -< - gJsAay ->(); - -29 -REQUIRE -( -v -. -ág -() == 1); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/or.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonVariant::operator|()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsV - - gv - = -doc -. -to -(); - -12 -SECTION -("undefined") { - -13 -SECTION -("undefined | const char*") { - -14 - gd -:: -rg - -su - = -v - | "default"; - -15 -REQUIRE -( -su - == "default"); - -18 -SECTION -("undefined | int") { - -19  - gsu - = -v - | 42; - -20 -REQUIRE -( -su - == 42); - -23 -SECTION -("undefined | bool") { - -24 -bo - - gsu - = -v - | -ue -; - -25 -REQUIRE -( -su - = -ue -); - -29 -SECTION -("null") { - -30 - gv -. -t -( -ic_ -(0)); - -32 -SECTION -("null | const char*") { - -33 - gd -:: -rg - -su - = -v - | "default"; - -34 -REQUIRE -( -su - == "default"); - -37 -SECTION -("null | int") { - -38  - gsu - = -v - | 42; - -39 -REQUIRE -( -su - == 42); - -42 -SECTION -("null | bool") { - -43 -bo - - gsu - = -v - | -ue -; - -44 -REQUIRE -( -su - = -ue -); - -48 -SECTION -("int | const char*") { - -49 - gv -. -t -(42); - -50 - gd -:: -rg - -su - = -v - | "default"; - -51 -REQUIRE -( -su - == "default"); - -54 -SECTION -("int | uint8_t (out ofange)") { - -55 - gv -. -t -(666); - -56 -ut8_t - - gsu - = -v - | -ic_ -(42); - -57 -REQUIRE -( -su - == 42); - -60 -SECTION -("int | int") { - -61 - gv -. -t -(0); - -62  - gsu - = -v - | 666; - -63 -REQUIRE -( -su - == 0); - -66 -SECTION -("double | int") { - -68 - gv -. -t -(666.0); - -69  - gsu - = -v - | 42; - -70 -REQUIRE -( -su - == 42); - -73 -SECTION -("bool | bool") { - -74 - gv -. -t -( -l -); - -75 -bo - - gsu - = -v - | -ue -; - -76 -REQUIRE -( -su - = -l -); - -79 -SECTION -("int | bool") { - -80 - gv -. -t -(0); - -81 -bo - - gsu - = -v - | -ue -; - -82 -REQUIRE -( -su - = -ue -); - -85 -SECTION -("const char* | const char*") { - -86 - gv -. -t -("not default"); - -87 - gd -:: -rg - -su - = -v - | "default"; - -88 -REQUIRE -( -su - == "not default"); - -91 -SECTION -("const char* | int") { - -92 - gv -. -t -("not default"); - -93  - gsu - = -v - | 42; - -94 -REQUIRE -( -su - == 42); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/overflow.cpp - -5  - ~ - -6  - ~ - -8 - gme - < -tyme - - gTOut -,ym - gTIn -> - -9  - $shouldBeOk -( -TIn - -vue -) { - -10 -SticJsDocumt -<1> -doc -; - -11 -JsV - -v - = -doc -. -to -(); - -12 -v -. - `t -( -vue -); - -13 - `REQUIRE -( -v -. -as -< -TOut ->(= - `TOut -( -vue -)); - -14 - } -} - -16 - gme - < -tyme - - gTOut -,ym - gTIn -> - -17  - $shouldOvow -( -TIn - -vue -) { - -18 -SticJsDocumt -<1> -doc -; - -19 -JsV - -v - = -doc -. -to -(); - -20 -v -. - `t -( -vue -); - -21 - `REQUIRE -( -v -. -as -< -TOut ->() == 0); - -22 - `REQUIRE -( -v -. -is -< -TOut ->(= -l -); - -23 - } -} - -25 -TEST_CASE -("Handle integer overflow in stored integer") { - -26 -SECTION -("int8_t") { - -28 - gshouldBeOk -< - gt8_t ->(-128); - -29 - gshouldBeOk -< - gt8_t ->(42.0); - -30 - gshouldBeOk -< - gt8_t ->(127); - -33 - gshouldOvow -< - gt8_t ->(-128.1); - -34 - gshouldOvow -< - gt8_t ->(-129); - -37 - gshouldOvow -< - gt8_t ->(128); - -38 - gshouldOvow -< - gt8_t ->(127.1); - -41 -SECTION -("int16_t") { - -43 - gshouldBeOk -< - gt16_t ->(-32768); - -44 - gshouldBeOk -< - gt16_t ->(-32767.9); - -45 - gshouldBeOk -< - gt16_t ->(32766.9); - -46 - gshouldBeOk -< - gt16_t ->(32767); - -49 - gshouldOvow -< - gt16_t ->(-32768.1); - -50 - gshouldOvow -< - gt16_t ->(-32769); - -53 - gshouldOvow -< - gt16_t ->(32767.1); - -54 - gshouldOvow -< - gt16_t ->(32768); - -57 -SECTION -("uint8_t") { - -59 - gshouldBeOk -< - gut8_t ->(1); - -60 - gshouldBeOk -< - gut8_t ->(42.0); - -61 - gshouldBeOk -< - gut8_t ->(255); - -64 - gshouldOvow -< - gut8_t ->(-1); - -65 - gshouldOvow -< - gut8_t ->(-0.1); - -68 - gshouldOvow -< - gut8_t ->(255.1); - -69 - gshouldOvow -< - gut8_t ->(256); - -70 - gshouldOvow -< - gut8_t ->(257); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/remove.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 cڡ * - gnu - = 0; - -11 -TEST_CASE -("JsonVariant::remove()") { - -12 -DymicJsDocumt - -doc -(4096); - -13 -JsV - - gv - = -doc -. -to -(); - -15 -SECTION -("remove(int)") { - -16 - gv -. -add -(1); - -17 - gv -. -add -(2); - -18 - gv -. -add -(3); - -20 - gv -. -move -(1); - -22 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "[1,3]"); - -25 -SECTION -("remove(const char *)") { - -26 - gv -["a"] = 1; - -27 - gv -["b"] = 2; - -29 - gv -. -move -("a"); - -31 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "{\"b\":2}"); - -34 -SECTION -("remove(std::string)") { - -35 - gv -["a"] = 1; - -36 - gv -["b"] = 2; - -38 - gv -. -move -( -d -:: -rg -("b")); - -40 -REQUIRE -( -v -. -as -< -d -:: -rg ->() == "{\"a\":1}"); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/set.cpp - -5  - ~ - -6  - ~ - -8 - eECode - { - mERROR_01 - = 1, - mERROR_10 - = 10 }; - -10 -TEST_CASE -("JsonVariantnd strings") { - -11 -DymicJsDocumt - -doc -(4096); - -12 -JsV - - gv - = -doc -. -to -(); - -14 -SECTION -("stores const char* byeference") { - -15  - gr -[16]; - -17 -ry -( -r -, "hello"); - -18 - gv -. -t -( -ic_ -( -r -)); - -19 -ry -( -r -, "world"); - -21 -REQUIRE -( -v - == "world"); - -24 -SECTION -("stores char* by copy") { - -25  - gr -[16]; - -27 -ry -( -r -, "hello"); - -28 - gv -. -t -( -r -); - -29 -ry -( -r -, "world"); - -31 -REQUIRE -( -v - == "hello"); - -34 -SECTION -("stores unsigned char* by copy") { - -35  - gr -[16]; - -37 -ry -( -r -, "hello"); - -38 - gv -. -t -( -t_ -<*>( -r -)); - -39 -ry -( -r -, "world"); - -41 -REQUIRE -( -v - == "hello"); - -44 -SECTION -("stores signed char* by copy") { - -45  - gr -[16]; - -47 -ry -( -r -, "hello"); - -48 - gv -. -t -( -t_ -( -r -)); - -49 -ry -( -r -, "world"); - -51 -REQUIRE -( -v - == "hello"); - -54 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -55 -SECTION -("stores VLA by copy") { - -56  - gn - = 16; - -57  - gr -[ -n -]; - -59 -ry -( -r -, "hello"); - -60 - gv -. -t -( -r -); - -61 -ry -( -r -, "world"); - -63 -REQUIRE -( -v - == "hello"); - -67 -SECTION -("stores std::string by copy") { - -68 - gd -:: -rg - -r -; - -70 - gr - = "hello"; - -71 - gv -. -t -( -r -); - -72 - gr -. -a -(0, 5, "world"); - -74 -REQUIRE -( -v - == "hello"); - -77 -SECTION -("stores static JsonString byeference") { - -78  - gr -[16]; - -80 -ry -( -r -, "hello"); - -81 - gv -. -t -( -JsSg -( -r -, -ue -)); - -82 -ry -( -r -, "world"); - -84 -REQUIRE -( -v - == "world"); - -87 -SECTION -("storeson-static JsonString by copy") { - -88  - gr -[16]; - -90 -ry -( -r -, "hello"); - -91 - gv -. -t -( -JsSg -( -r -, -l -)); - -92 -ry -( -r -, "world"); - -94 -REQUIRE -( -v - == "hello"); - -97 -SECTION -("storesnnumsn integer") { - -98 -ECode - - gcode - = -ERROR_10 -; - -100 - gv -. -t -( -code -); - -102 -REQUIRE -( -v -. -is -<>(= -ue -); - -103 -REQUIRE -( -v -. -as -<>() == 10); - -107 -TEST_CASE -("JsonVariant withotnough memory") { - -108 - gSticJsDocumt -<1> - gdoc -; - -110 -JsV - - gv - = -doc -. -to -(); - -112 -SECTION -("std::string") { - -113 - gv -. -t -( -d -:: -rg -("hello world!!")); - -114 -REQUIRE -( -v -. -isNu -()); - -117 -SECTION -("Serialized") { - -118 - gv -. -t -( -rlized -( -d -:: -rg -("hello world!!"))); - -119 -REQUIRE -( -v -. -isNu -()); - -123 -TEST_CASE -("JsonVariant::set(DynamicJsonDocument)") { - -124 -DymicJsDocumt - -doc1 -(1024); - -125 - gdoc1 -["hello"] = "world"; - -127 -DymicJsDocumt - -doc2 -(1024); - -128 -JsV - - gv - = -doc2 -. -to -(); - -131 - gv -. -t -( -doc1 -); - -132 - gdoc1 -. -r -(); - -134 - gd -:: -rg - -js -; - -135 -rlizeJs -( -doc2 -, -js -); - -136 -REQUIRE -( -js - == "{\"hello\":\"world\"}"); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/subscript.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonVariant::operator[]") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsV - - gv - = -doc -. -to -(); - -12 -SECTION -("The JsonVariant is undefined") { - -13 -REQUIRE -(0 = -v -. -size -()); - -14 -REQUIRE -( -v -["0"]. -isNu -()); - -15 -REQUIRE -( -v -[0]. -isNu -()); - -18 -SECTION -("The JsonVariant is string") { - -19 - gv -. -t -("hello world"); - -20 -REQUIRE -(0 = -v -. -size -()); - -21 -REQUIRE -( -v -["0"]. -isNu -()); - -22 -REQUIRE -( -v -[0]. -isNu -()); - -25 -SECTION -("The JsonVariant is JsonArray") { - -26 -JsAay - - gy - = -v -. -to -(); - -28 -SECTION -("get value") { - -29 - gy -. -add -("elementt index 0"); - -30 - gy -. -add -("elementt index 1"); - -32 -REQUIRE -(2 = -v -. -size -()); - -33 - gv -[0]. - gas -< - gd -:: -rg ->(); - -35 -REQUIRE -( -d -:: -rg -("em index 1"= -v -[1]); - -36 -REQUIRE -( -d -:: -rg -("elementt index 0") == - -37 -v -[ -ic_ -<>(0)]); - -38 -REQUIRE -( -v -[666]. -isNu -()); - -39 -REQUIRE -( -v -[3]. -isNu -()); - -40 -REQUIRE -( -v -["0"]. -isNu -()); - -43 -SECTION -("set value") { - -44 - gy -. -add -("hello"); - -46 - gv -[1] = "world"; - -48 -REQUIRE -( -v -. -size -() == 2); - -49 -REQUIRE -( -d -:: -rg -("wld"= -v -[1]); - -52 -SECTION -("set value inested object") { - -53 - gy -. -NeedObje -(); - -55 - gv -[0]["hello"] = "world"; - -57 -REQUIRE -(1 = -v -. -size -()); - -58 -REQUIRE -(1 = -v -[0]. -size -()); - -59 -REQUIRE -( -d -:: -rg -("wld"= -v -[0]["hello"]); - -63 -SECTION -("The JsonVariant is JsonObject") { - -64 -JsObje - - gobje - = -v -. -to -(); - -66 -SECTION -("get value") { - -67 - gobje -["a"] = "elementt key \"a\""; - -68 - gobje -["b"] = "elementt key \"b\""; - -70 -REQUIRE -(2 = -v -. -size -()); - -71 -REQUIRE -( -d -:: -rg -("em key \"a\""= -v -["a"]); - -72 -REQUIRE -( -d -:: -rg -("em key \"b\""= -v -["b"]); - -73 -REQUIRE -( -v -["c"]. -isNu -()); - -74 -REQUIRE -( -v -[0]. -isNu -()); - -77 -SECTION -("set value, key is const char*") { - -78 - gv -["hello"] = "world"; - -80 -REQUIRE -(1 = -v -. -size -()); - -81 -REQUIRE -( -d -:: -rg -("wld"= -v -["hello"]); - -84 -SECTION -("set value, key is char[]") { - -85  - gkey -[] = "hello"; - -86 - gv -[ -key -] = "world"; - -87 - gkey -[0] = '!'; - -89 -REQUIRE -(1 = -v -. -size -()); - -90 -REQUIRE -( -d -:: -rg -("wld"= -v -["hello"]); - -93 -SECTION -("var[key].to()") { - -94 -JsAay - - gr - = -v -["hlo"]. -to -(); - -95 -REQUIRE -( -r -. -isNu -(= -l -); - -99 #i -defed -( -HAS_VARIABLE_LENGTH_ARRAY -) && \ - -100 ! -defed -( -SUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR -) - -101 -SECTION -("key is VLA") { - -102  - gi - = 16; - -103  - gv -[ -i -]; - -104 -ry -( -v -, "hello"); - -106 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -107 -JsV - - gv - = -doc -. -as -(); - -109 -REQUIRE -( -d -:: -rg -("wld"= -v -[ -v -]); - -112 -SECTION -("key is VLA, const JsonVariant") { - -113  - gi - = 16; - -114  - gv -[ -i -]; - -115 -ry -( -v -, "hello"); - -117 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -118 cڡ -JsV - - gv - = -doc -. -as -(); - -120 -REQUIRE -( -d -:: -rg -("wld"= -v -[ -v -]); - -125 -TEST_CASE -("JsonVariantConst::operator[]") { - -126 -DymicJsDocumt - -doc -(4096); - -127 -JsV - - gv - = -doc -. -to -(); - -128 -JsVCڡ - - gcv - = -v -; - -130 -SECTION -("The JsonVariant is undefined") { - -131 -REQUIRE -(0 = -cv -. -size -()); - -132 -REQUIRE -( -cv -["0"]. -isNu -()); - -133 -REQUIRE -( -cv -[0]. -isNu -()); - -136 -SECTION -("The JsonVariant is string") { - -137 - gv -. -t -("hello world"); - -138 -REQUIRE -(0 = -cv -. -size -()); - -139 -REQUIRE -( -cv -["0"]. -isNu -()); - -140 -REQUIRE -( -cv -[0]. -isNu -()); - -143 -SECTION -("The JsonVariant is JsonArray") { - -144 -JsAay - - gy - = -v -. -to -(); - -146 -SECTION -("get value") { - -147 - gy -. -add -("elementt index 0"); - -148 - gy -. -add -("elementt index 1"); - -150 -REQUIRE -(2 = -cv -. -size -()); - -151 -REQUIRE -( -d -:: -rg -("em index 0"= -cv -[0]); - -152 -REQUIRE -( -d -:: -rg -("em index 1"= -cv -[1]); - -153 -REQUIRE -( -d -:: -rg -("elementt index 0") == - -154 -v -[ -ic_ -<>(0)]); - -155 -REQUIRE -( -cv -[666]. -isNu -()); - -156 -REQUIRE -( -cv -[3]. -isNu -()); - -157 -REQUIRE -( -cv -["0"]. -isNu -()); - -161 -SECTION -("The JsonVariant is JsonObject") { - -162 -JsObje - - gobje - = -v -. -to -(); - -164 -SECTION -("get value") { - -165 - gobje -["a"] = "elementt key \"a\""; - -166 - gobje -["b"] = "elementt key \"b\""; - -168 -REQUIRE -(2 = -cv -. -size -()); - -169 -REQUIRE -( -d -:: -rg -("em key \"a\""= -cv -["a"]); - -170 -REQUIRE -( -d -:: -rg -("em key \"b\""= -cv -["b"]); - -171 -REQUIRE -( -cv -["c"]. -isNu -()); - -172 -REQUIRE -( -cv -[0]. -isNu -()); - -176 -SECTION -("Autoromoteull JsonVarianto JsonObject") { - -177 - gv -["hello"] = "world"; - -179 -REQUIRE -( -v -. -is -< -JsObje ->(= -ue -); - -182 -SECTION -("Don'tutoromoteon-null JsonVarianto JsonObject") { - -183 - gv -. -t -(42); - -184 - gv -["hello"] = "world"; - -186 -REQUIRE -( -v -. -is -< -JsObje ->(= -l -); - -189 -SECTION -("Don'tutoromoteull JsonVarianto JsonObject wheneading") { - -190 cڡ * - gvue - = -v -["hello"]; - -192 -REQUIRE -( -v -. -is -< -JsObje ->(= -l -); - -193 -REQUIRE -( -vue - == 0); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/types.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -8  - ~ - -10 - gme - < -tyme - - gT -> - -11  - $checkVue -( -T - -exed -) { - -12 -DymicJsDocumt - - `doc -(4096); - -13 -JsV - -v - = -doc -. -to -(); - -15 -v -. - `t -( -exed -); - -16 - `REQUIRE -( -exed - = -v -. -as -< -T ->()); - -17 - } -} - -19 - gme - < -tyme - - gT -> - -20  - $checkRen -( -T - & -exed -) { - -21 -JsV - -v - = -exed -; - -22 - `REQUIRE -( -exed - = -v -. -as -< -T - &>()); - -23 - } -} - -25 - gme - < -tyme - - gT -> - -26  - $checkNumicTy -() { - -27 -DymicJsDocumt - - `docM -(4096), - `docMax -(4096); - -28 -JsV - -vM - = -docM -. -to -(); - -29 -JsV - -vMax - = -docMax -. -to -(); - -31 -T - -m - = -d -:: -numic_lims -:: - `m -(); - -32 -T - -max - = -d -:: -numic_lims -:: - `max -(); - -34 -vM -. - `t -( -m -); - -35 -vMax -. - `t -( -max -); - -37 - `REQUIRE -( -m - = -vM -. -as -< -T ->()); - -38 - `REQUIRE -( -max - = -vMax -. -as -< -T ->()); - -39 - } -} - -41 -TEST_CASE -("JsonVariant set()/get()") { - -42 #i -ARDUINOJSON_USE_LONG_LONG - - -43 -SECTION -("SizeOfJsonInteger") { - -44 -REQUIRE -(8 =( -JsIeg -)); - -48 -SECTION -("Null") { - -49 - gcheckVue -( - gNULL -); - -51 -SECTION -("const char*") { - -52 - gcheckVue -("hello"); - -54 -SECTION -("std::string") { - -55 - gcheckVue -< - gd -:: -rg ->("hello"); - -58 -SECTION -("False") { - -59 - gcheckVue -< - gbo ->( - gl -); - -61 -SECTION -("True") { - -62 - gcheckVue -< - gbo ->( - gue -); - -65 -SECTION -("Double") { - -66 - gcheckNumicTy -<>(); - -68 -SECTION -("Float") { - -69 - gcheckNumicTy -<>(); - -71 -SECTION -("Char") { - -72 - gcheckNumicTy -<>(); - -74 -SECTION -("SChar") { - -75 - gcheckNumicTy -(); - -77 -SECTION -("SInt") { - -78 - gcheckNumicTy -(); - -80 -SECTION -("SLong") { - -81 - gcheckNumicTy -(); - -83 -SECTION -("SShort") { - -84 - gcheckNumicTy -(); - -86 -SECTION -("UChar") { - -87 - gcheckNumicTy -<>(); - -89 -SECTION -("UInt") { - -90 - gcheckNumicTy -<>(); - -92 -SECTION -("ULong") { - -93 - gcheckNumicTy -<>(); - -95 -SECTION -("UShort") { - -96 - gcheckNumicTy -<>(); - -98 #i -ARDUINOJSON_USE_LONG_LONG - - -99 -SECTION -("LongLong") { - -100 - gcheckNumicTy -<>(); - -102 -SECTION -("ULongLong") { - -103 - gcheckNumicTy -<>(); - -107 -SECTION -("Int8") { - -108 - gcheckNumicTy -< - gt8_t ->(); - -110 -SECTION -("Uint8") { - -111 - gcheckNumicTy -< - gut8_t ->(); - -113 -SECTION -("Int16") { - -114 - gcheckNumicTy -< - gt16_t ->(); - -116 -SECTION -("Uint16") { - -117 - gcheckNumicTy -< - gut16_t ->(); - -119 -SECTION -("Int32") { - -120 - gcheckNumicTy -< - gt32_t ->(); - -122 -SECTION -("Uint32") { - -123 - gcheckNumicTy -< - gut32_t ->(); - -125 #i -ARDUINOJSON_USE_LONG_LONG - - -126 -SECTION -("Int64") { - -127 - gcheckNumicTy -< - gt64_t ->(); - -129 -SECTION -("Uint64") { - -130 - gcheckNumicTy -< - gut64_t ->(); - -134 -SECTION -("CanStoreObject") { - -135 -DymicJsDocumt - -doc -(4096); - -136 -JsObje - - gobje - = -doc -. -to -(); - -138 - gcheckVue -< - gJsObje ->( - gobje -); - - @lib_standalone/ArduinoJson/extras/tests/JsonVariant/undefined.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("JsonVariant undefined") { - -9 -JsV - - gv -; - -11 -SECTION -("as()") { - -12 -SECTION -("long") { - -13 -REQUIRE -( -v -. -as -<>() == 0); - -16 -SECTION -("unsigned") { - -17 -REQUIRE -( -v -. -as -<>() == 0); - -20 -SECTION -("char*") { - -21 -REQUIRE -( -v -. -as -<*>() == 0); - -24 -SECTION -("double") { - -25 -REQUIRE -( -v -. -as -<>() == 0); - -28 -SECTION -("bool") { - -29 -REQUIRE -( -v -. -as -< -bo ->(= -l -); - -32 -SECTION -("JsonArray") { - -33 -REQUIRE -( -v -. -as -< -JsAay ->(). -isNu -()); - -36 -SECTION -("JsonObject") { - -37 -REQUIRE -( -v -. -as -< -JsObje ->(). -isNu -()); - -41 -SECTION -("is()") { - -42 -SECTION -("long") { - -43 -REQUIRE -( -v -. -is -<>(= -l -); - -46 -SECTION -("unsigned") { - -47 -REQUIRE -( -v -. -is -<>(= -l -); - -50 -SECTION -("char*") { - -51 -REQUIRE -( -v -. -is -<*>(= -l -); - -54 -SECTION -("double") { - -55 -REQUIRE -( -v -. -is -<>(= -l -); - -58 -SECTION -("bool") { - -59 -REQUIRE -( -v -. -is -< -bo ->(= -l -); - -62 -SECTION -("JsonArray") { - -63 -REQUIRE -( -v -. -is -< -JsAay ->(= -l -); - -66 -SECTION -("JsonObject") { - -67 -REQUIRE -( -v -. -is -< -JsObje ->(= -l -); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/add.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::add()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gMembProxy -< - gJsDocumt -&, cڡ *> - gmp - = -doc -["hello"]; - -14 -SECTION -("add(int)") { - -15 - gmp -. -add -(42); - -17 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"hello\":[42]}"); - -20 -SECTION -("add(const char*)") { - -21 - gmp -. -add -("world"); - -23 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"hello\":[\"world\"]}"); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/clear.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::clear()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gMembProxy -< - gJsDocumt -&, cڡ *> - gmp - = -doc -["hello"]; - -14 -SECTION -("size goes backo zero") { - -15 - gmp -. -add -(42); - -16 - gmp -. -r -(); - -18 -REQUIRE -( -mp -. -size -() == 0); - -21 -SECTION -("isNull()eturnrue") { - -22 - gmp -. -add -("hello"); - -23 - gmp -. -r -(); - -25 -REQUIRE -( -mp -. -isNu -(= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/compare.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::operator==()") { - -11 -DymicJsDocumt - -doc -(4096); - -13 -SECTION -("same values") { - -14 - gdoc -["key1"] = "value"; - -15 - gdoc -["key2"] = "value"; - -16 -REQUIRE -( -doc -["key1"] == doc["key2"]); - -17 -REQUIRE_FALSE -( -doc -["key1"] != doc["key2"]); - -20 -SECTION -("different values") { - -21 - gdoc -["key1"] = "value1"; - -22 - gdoc -["key2"] = "value2"; - -23 -REQUIRE_FALSE -( -doc -["key1"] == doc["key2"]); - -24 -REQUIRE -( -doc -["key1"] != doc["key2"]); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/containsKey.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::containsKey()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gMembProxy -< - gJsDocumt -&, cڡ *> - gmp - = -doc -["hello"]; - -14 -SECTION -("containsKey(const char*)") { - -15 - gmp -["key"] = "value"; - -17 -REQUIRE -( -mp -. -cڏsKey -("key"= -ue -); - -18 -REQUIRE -( -mp -. -cڏsKey -("key"= -ue -); - -21 -SECTION -("containsKey(std::string)") { - -22 - gmp -["key"] = "value"; - -24 -REQUIRE -( -mp -. -cڏsKey -( -d -:: -rg -("key")= -ue -); - -25 -REQUIRE -( -mp -. -cڏsKey -( -d -:: -rg -("key")= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/remove.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::remove()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gMembProxy -< - gJsDocumt -&, cڡ *> - gmp - = -doc -["hello"]; - -14 -SECTION -("remove(int)") { - -15 - gmp -. -add -(1); - -16 - gmp -. -add -(2); - -17 - gmp -. -add -(3); - -19 - gmp -. -move -(1); - -21 -REQUIRE -( -mp -. -as -< -d -:: -rg ->() == "[1,3]"); - -24 -SECTION -("remove(const char *)") { - -25 - gmp -["a"] = 1; - -26 - gmp -["b"] = 2; - -28 - gmp -. -move -("a"); - -30 -REQUIRE -( -mp -. -as -< -d -:: -rg ->() == "{\"b\":2}"); - -33 -SECTION -("remove(std::string)") { - -34 - gmp -["a"] = 1; - -35 - gmp -["b"] = 2; - -37 - gmp -. -move -( -d -:: -rg -("b")); - -39 -REQUIRE -( -mp -. -as -< -d -:: -rg ->() == "{\"a\":1}"); - -42 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -43 -SECTION -("remove(vla)") { - -44 - gmp -["a"] = 1; - -45 - gmp -["b"] = 2; - -47  - gi - = 4; - -48  - gv -[ -i -]; - -49 -ry -( -v -, "b"); - -50 - gmp -. -move -( -v -); - -52 -REQUIRE -( -mp -. -as -< -d -:: -rg ->() == "{\"a\":1}"); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/set.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::set()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gMembProxy -< - gJsDocumt -&, cڡ *> - gmp - = -doc -["hello"]; - -14 -SECTION -("set(int)") { - -15 - gmp -. -t -(42); - -17 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"hello\":42}"); - -20 -SECTION -("set(const char*)") { - -21 - gmp -. -t -("world"); - -23 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"hello\":\"world\"}"); - -26 -SECTION -("set(char[])") { - -27  - gs -[] = "world"; - -28 - gmp -. -t -( -s -); - -29 -ry -( -s -, "!!!!!"); - -31 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"hello\":\"world\"}"); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/size.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::size()") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gMembProxy -< - gJsDocumt -&, cڡ *> - gmp - = -doc -["hello"]; - -14 -SECTION -("returns 0") { - -15 -REQUIRE -( -mp -. -size -() == 0); - -18 -SECTION -("asnrray,eturn 2") { - -19 - gmp -. -add -(1); - -20 - gmp -. -add -(2); - -22 -REQUIRE -( -mp -. -size -() == 2); - -25 -SECTION -("asn object,eturn 2") { - -26 - gmp -["a"] = 1; - -27 - gmp -["b"] = 2; - -29 -REQUIRE -( -mp -. -size -() == 2); - - @lib_standalone/ArduinoJson/extras/tests/MemberProxy/subscript.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemberProxy::operator[]") { - -11 -DymicJsDocumt - -doc -(4096); - -12 - gMembProxy -< - gJsDocumt -&, cڡ *> - gmp - = -doc -["hello"]; - -14 -SECTION -("set member") { - -15 - gmp -["world"] = 42; - -17 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"hello\":{\"world\":42}}"); - -20 -SECTION -("setlement") { - -21 - gmp -[2] = 42; - -23 -REQUIRE -( -doc -. -as -< -d -:: -rg ->() == "{\"hello\":[null,null,42]}"); - - @lib_standalone/ArduinoJson/extras/tests/MemoryPool/StringBuilder.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -11 -TEST_CASE -("StringBuilder") { - -12  - gbufr -[4096]; - -14 -SECTION -("Works when buffer is bignough") { - -15 -MemyPo - -po -( -bufr -, -addPaddg -( -JSON_STRING_SIZE -(6))); - -17 -SgBud - -r -(& -po -); - -18 - gr -. -nd -("hello"); - -20 -REQUIRE -( -r -. -come -(= -d -:: -rg -("hello")); - -23 -SECTION -("Returnsull whenoo small") { - -24 -MemyPo - -po -( -bufr -, (*)); - -26 -SgBud - -r -(& -po -); - -27 - gr -. -nd -("hello world!"); - -29 -REQUIRE -( -r -. -come -() == 0); - -32 -SECTION -("Increases size of memoryool") { - -33 -MemyPo - -po -( -bufr -, -addPaddg -( -JSON_STRING_SIZE -(6))); - -35 -SgBud - -r -(& -po -); - -36 - gr -. -nd -('h'); - -37 - gr -. -come -(); - -39 -REQUIRE -( -JSON_STRING_SIZE -(2= -po -. -size -()); - - @lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocString.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemoryPool::allocFrozenString()") { - -11 cڡ -size_t - - gpoCacy - = 64; - -12 cڡ -size_t - - glgeSg - = -poCacy -; - -13  - gbufr -[ -poCacy -]; - -14 -MemyPo - -po -( -bufr -, -poCacy -); - -16 -SECTION -("Returns differentddresses") { - -17 * - ga - = -po -. -locFrozSg -(1); - -18 * - gb - = -po -. -locFrozSg -(1); - -19 -REQUIRE -( -a - ! -b -); - -22 -SECTION -("Returns NULL when full") { - -23 * - gp1 - = -po -. -locFrozSg -( -lgeSg -); - -24 -REQUIRE -( -p1 - != 0); - -26 * - gp2 - = -po -. -locFrozSg -(1); - -27 -REQUIRE -( -p2 - == 0); - -30 -SECTION -("Returns NULL whenool isoo small") { - -31 * - gp - = -po -. -locFrozSg -( -lgeSg - + 1); - -32 -REQUIRE -(0 = -p -); - -35 -SECTION -("Returns NULL when buffer is NULL") { - -36 -MemyPo - -po2 -(0, -poCacy -); - -37 -REQUIRE -(0 = -po2 -. -locFrozSg -(2)); - -40 -SECTION -("Returns NULL when capacity is 0") { - -41 -MemyPo - -po2 -( -bufr -, 0); - -42 -REQUIRE -(0 = -po2 -. -locFrozSg -(2)); - -45 -SECTION -("Returns sameddressfter clear()") { - -46 * - ga - = -po -. -locFrozSg -(1); - -47 - gpo -. -r -(); - -48 * - gb - = -po -. -locFrozSg -(1); - -50 -REQUIRE -( -a - = -b -); - -53 -SECTION -("Can use full capacity when fresh") { - -54 * - ga - = -po -. -locFrozSg -( -lgeSg -); - -56 -REQUIRE -( -a - != 0); - -59 -SECTION -("Can use full capacityfter clear") { - -60 - gpo -. -locFrozSg -( -lgeSg -); - -61 - gpo -. -r -(); - -63 * - ga - = -po -. -locFrozSg -( -lgeSg -); - -65 -REQUIRE -( -a - != 0); - - @lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocVariant.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemoryPool::allocVariant()") { - -11  - gbufr -[4096]; - -13 -SECTION -("Returns differentointer") { - -14 -MemyPo - -po -( -bufr -, (buffer)); - -16 -VSl -* - gs1 - = -po -. -locV -(); - -17 -REQUIRE -( -s1 - != 0); - -18 -VSl -* - gs2 - = -po -. -locV -(); - -19 -REQUIRE -( -s2 - != 0); - -21 -REQUIRE -( -s1 - ! -s2 -); - -24 -SECTION -("Returnslignedointers") { - -25 -MemyPo - -po -( -bufr -, (buffer)); - -27 -REQUIRE -( -isAligd -( -po -. -locV -())); - -28 -REQUIRE -( -isAligd -( -po -. -locV -())); - -31 -SECTION -("Returns zero if capacity is 0") { - -32 -MemyPo - -po -( -bufr -, 0); - -34 -REQUIRE -( -po -. -locV -() == 0); - -37 -SECTION -("Returns zero if buffer isull") { - -38 -MemyPo - -po -(0, ( -bufr -)); - -40 -REQUIRE -( -po -. -locV -() == 0); - -43 -SECTION -("Returns zero if capacity is insufficient") { - -44 -MemyPo - -po -( -bufr -, ( -VSl -)); - -46 - gpo -. -locV -(); - -48 -REQUIRE -( -po -. -locV -() == 0); - - @lib_standalone/ArduinoJson/extras/tests/MemoryPool/clear.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 cڡ -size_t - - gpoCacy - = 512; - -12 -TEST_CASE -("MemoryPool::clear()") { - -13  - gbufr -[ -poCacy -]; - -14 -MemyPo - -po -( -bufr -, (buffer)); - -16 -SECTION -("Discardsllocated variants") { - -17 - gpo -. -locV -(); - -19 - gpo -. -r -(); - -20 -REQUIRE -( -po -. -size -() == 0); - -23 -SECTION -("Discardsllocated strings") { - -24 - gpo -. -locFrozSg -(10); - -25 -REQUIRE -( -po -. -size -() > 0); - -27 - gpo -. -r -(); - -29 -REQUIRE -( -po -. -size -() == 0); - - @lib_standalone/ArduinoJson/extras/tests/MemoryPool/size.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("MemoryPool::capacity()") { - -11  - gbufr -[4096]; - -12 cڡ -size_t - - gcy - = 64; - -13 -MemyPo - -po -( -bufr -, -cy -); - -14 -REQUIRE -( -cy - = -po -.capacity()); - -17 -TEST_CASE -("MemoryPool::size()") { - -18  - gbufr -[4096]; - -19 -MemyPo - -po -( -bufr -, (buffer)); - -21 -SECTION -("Initial size is 0") { - -22 -REQUIRE -(0 = -po -. -size -()); - -25 -SECTION -("size() == capacity()fterllocExpandableString()") { - -26 - gpo -. -locExndabSg -(); - -27 -REQUIRE -( -po -. -size -(=po. -cy -()); - -30 -SECTION -("Decreasesfter freezeString()") { - -31 -SgSl - - ga - = -po -. -locExndabSg -(); - -32 - gpo -. -zeSg -( -a -, 1); - -33 -REQUIRE -( -po -. -size -(= -JSON_STRING_SIZE -(1)); - -35 -SgSl - - gb - = -po -. -locExndabSg -(); - -36 - gpo -. -zeSg -( -b -, 1); - -37 -REQUIRE -( -po -. -size -(=2 * -JSON_STRING_SIZE -(1)); - -40 -SECTION -("IncreasesfterllocFrozenString()") { - -41 - gpo -. -locFrozSg -(0); - -42 -REQUIRE -( -po -. -size -(= -JSON_STRING_SIZE -(0)); - -44 - gpo -. -locFrozSg -(0); - -45 -REQUIRE -( -po -. -size -(=2 * -JSON_STRING_SIZE -(0)); - -48 -SECTION -("Doesn't grow when memoryool is full") { - -49 cڡ -size_t - - gvCou - = ( -bufr -/ ( -VSl -); - -51  -size_t - - gi - = 0; i < - gvCou -; i++ - gpo -. -locV -(); - -52 -size_t - - gsize - = -po -. -size -(); - -54 - gpo -. -locV -(); - -56 -REQUIRE -( -size - = -po -.size()); - - @lib_standalone/ArduinoJson/extras/tests/Misc/FloatParts.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("FloatParts") { - -11 -SECTION -("1.7976931348623157E+308") { - -12 - gFltPts -<> -s -(1.7976931348623157E+308); - -13 -REQUIRE -( -s -. -gl - == 1); - -14 -REQUIRE -( -s -. -decim - == 797693135); - -15 -REQUIRE -( -s -. -decimPs - == 9); - -16 -REQUIRE -( -s -. -expڒt - == 308); - -19 -SECTION -("4.94065645841247e-324") { - -20 - gFltPts -<> -s -(4.94065645841247e-324); - -21 -REQUIRE -( -s -. -gl - == 4); - -22 -REQUIRE -( -s -. -decim - == 940656458); - -23 -REQUIRE -( -s -. -decimPs - == 9); - -24 -REQUIRE -( -s -. -expڒt - == -324); - -28 -TEST_CASE -("FloatParts") { - -29 -SECTION -("3.4E+38") { - -30 - gFltPts -<> -s -(3.4E+38f); - -31 -REQUIRE -( -s -. -gl - == 3); - -32 -REQUIRE -( -s -. -decim - == 4); - -33 -REQUIRE -( -s -. -decimPs - == 1); - -34 -REQUIRE -( -s -. -expڒt - == 38); - -37 -SECTION -("1.17549435e−38") { - -38 - gFltPts -<> -s -(1.17549435e-38f); - -39 -REQUIRE -( -s -. -gl - == 1); - -40 -REQUIRE -( -s -. -decim - == 175494); - -41 -REQUIRE -( -s -. -decimPs - == 6); - -42 -REQUIRE -( -s -. -expڒt - == -38); - - @lib_standalone/ArduinoJson/extras/tests/Misc/Issue1189.cpp - -5  - ~ - -8  - $f -( -JsDocumt -{ - } -} - -10  - $ma -() { - -11 -DymicJsDocumt - - `doc -(1024); - -12 - `f -( -doc -); - -13 - } -} - - @lib_standalone/ArduinoJson/extras/tests/Misc/Issue978.cpp - -5  - ~ - -7  - sSm - {}; - -9  - $ma -() { - -10 -Sm -* -am - = 0; - -11 -DymicJsDocumt - - `doc -(1024); - -12 - `derlizeJs -( -doc -, -am -); - -13 - } -} - - @lib_standalone/ArduinoJson/extras/tests/Misc/Readers.cpp - -5  - #ARDUINOJSON_ENABLE_ARDUINO_STREAM - 1 - - ) - -6  - ~ - -7  - ~ - -9 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -11 -TEST_CASE -("Reader") { - -12 -SECTION -("read()") { - -13 - gd -:: -irgam - -c -("\x01\xFF"); - -14 - gRd -< - gd -:: -irgam -> -ad -( -c -); - -16 -REQUIRE -( -ad -. -ad -() == 0x01); - -17 -REQUIRE -( -ad -. -ad -() == 0xFF); - -18 -REQUIRE -( -ad -. -ad -() == -1); - -21 -SECTION -("readBytes()llt once") { - -22 - gd -:: -irgam - -c -("ABC"); - -23 - gRd -< - gd -:: -irgam -> -ad -( -c -); - -25  - gbufr -[8] = "abcd"; - -26 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 3); - -28 -REQUIRE -( -bufr -[0] == 'A'); - -29 -REQUIRE -( -bufr -[1] == 'B'); - -30 -REQUIRE -( -bufr -[2] == 'C'); - -31 -REQUIRE -( -bufr -[3] == 'd'); - -34 -SECTION -("readBytes() inwoarts") { - -35 - gd -:: -irgam - -c -("ABCDEF"); - -36 - gRd -< - gd -:: -irgam -> -ad -( -c -); - -38  - gbufr -[12] = "abcdefg"; - -39 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 4); - -40 -REQUIRE -( -ad -. -adBys -( -bufr - + 4, 4) == 2); - -42 -REQUIRE -( -bufr -[0] == 'A'); - -43 -REQUIRE -( -bufr -[1] == 'B'); - -44 -REQUIRE -( -bufr -[2] == 'C'); - -45 -REQUIRE -( -bufr -[3] == 'D'); - -46 -REQUIRE -( -bufr -[4] == 'E'); - -47 -REQUIRE -( -bufr -[5] == 'F'); - -48 -REQUIRE -( -bufr -[6] == 'g'); - -52 -TEST_CASE -("BoundedReader") { - -53 -SECTION -("read") { - -54 - gBoundedRd - -ad -("\x01\xFF", 2); - -55 -REQUIRE -( -ad -. -ad -() == 0x01); - -56 -REQUIRE -( -ad -. -ad -() == 0xFF); - -57 -REQUIRE -( -ad -. -ad -() == -1); - -58 -REQUIRE -( -ad -. -ad -() == -1); - -61 -SECTION -("readBytes()llt once") { - -62 - gBoundedRd - -ad -("ABCD", 3); - -64  - gbufr -[8] = "abcd"; - -65 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 3); - -67 -REQUIRE -( -bufr -[0] == 'A'); - -68 -REQUIRE -( -bufr -[1] == 'B'); - -69 -REQUIRE -( -bufr -[2] == 'C'); - -70 -REQUIRE -( -bufr -[3] == 'd'); - -73 -SECTION -("readBytes() inwoarts") { - -74 - gBoundedRd - -ad -("ABCDEF", 6); - -76  - gbufr -[8] = "abcdefg"; - -77 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 4); - -78 -REQUIRE -( -ad -. -adBys -( -bufr - + 4, 4) == 2); - -80 -REQUIRE -( -bufr -[0] == 'A'); - -81 -REQUIRE -( -bufr -[1] == 'B'); - -82 -REQUIRE -( -bufr -[2] == 'C'); - -83 -REQUIRE -( -bufr -[3] == 'D'); - -84 -REQUIRE -( -bufr -[4] == 'E'); - -85 -REQUIRE -( -bufr -[5] == 'F'); - -86 -REQUIRE -( -bufr -[6] == 'g'); - -90 -TEST_CASE -("Reader") { - -91 -SECTION -("read()") { - -92 - gRd - -ad -("\x01\xFF\x00\x12"); - -93 -REQUIRE -( -ad -. -ad -() == 0x01); - -94 -REQUIRE -( -ad -. -ad -() == 0xFF); - -95 -REQUIRE -( -ad -. -ad -() == 0); - -96 -REQUIRE -( -ad -. -ad -() == 0x12); - -99 -SECTION -("readBytes()llt once") { - -100 - gRd - -ad -("ABCD"); - -102  - gbufr -[8] = "abcd"; - -103 -REQUIRE -( -ad -. -adBys -( -bufr -, 3) == 3); - -105 -REQUIRE -( -bufr -[0] == 'A'); - -106 -REQUIRE -( -bufr -[1] == 'B'); - -107 -REQUIRE -( -bufr -[2] == 'C'); - -108 -REQUIRE -( -bufr -[3] == 'd'); - -111 -SECTION -("readBytes() inwoarts") { - -112 - gRd - -ad -("ABCDEF"); - -114  - gbufr -[8] = "abcdefg"; - -115 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 4); - -116 -REQUIRE -( -ad -. -adBys -( -bufr - + 4, 2) == 2); - -118 -REQUIRE -( -bufr -[0] == 'A'); - -119 -REQUIRE -( -bufr -[1] == 'B'); - -120 -REQUIRE -( -bufr -[2] == 'C'); - -121 -REQUIRE -( -bufr -[3] == 'D'); - -122 -REQUIRE -( -bufr -[4] == 'E'); - -123 -REQUIRE -( -bufr -[5] == 'F'); - -124 -REQUIRE -( -bufr -[6] == 'g'); - -128 -TEST_CASE -("IteratorReader") { - -129 -SECTION -("read()") { - -130 - gd -:: -rg - -c -("\x01\xFF"); - -131 - gItRd -< - gd -:: -rg -:: -cڡ_ -> -ad -( -c -. -beg -(), src. -d -()); - -133 -REQUIRE -( -ad -. -ad -() == 0x01); - -134 -REQUIRE -( -ad -. -ad -() == 0xFF); - -135 -REQUIRE -( -ad -. -ad -() == -1); - -138 -SECTION -("readBytes()llt once") { - -139 - gd -:: -rg - -c -("ABC"); - -140 - gItRd -< - gd -:: -rg -:: -cڡ_ -> -ad -( -c -. -beg -(), src. -d -()); - -142  - gbufr -[8] = "abcd"; - -143 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 3); - -145 -REQUIRE -( -bufr -[0] == 'A'); - -146 -REQUIRE -( -bufr -[1] == 'B'); - -147 -REQUIRE -( -bufr -[2] == 'C'); - -148 -REQUIRE -( -bufr -[3] == 'd'); - -151 -SECTION -("readBytes() inwoarts") { - -152 - gd -:: -rg - -c -("ABCDEF"); - -153 - gItRd -< - gd -:: -rg -:: -cڡ_ -> -ad -( -c -. -beg -(), src. -d -()); - -155  - gbufr -[12] = "abcdefg"; - -156 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 4); - -157 -REQUIRE -( -ad -. -adBys -( -bufr - + 4, 4) == 2); - -159 -REQUIRE -( -bufr -[0] == 'A'); - -160 -REQUIRE -( -bufr -[1] == 'B'); - -161 -REQUIRE -( -bufr -[2] == 'C'); - -162 -REQUIRE -( -bufr -[3] == 'D'); - -163 -REQUIRE -( -bufr -[4] == 'E'); - -164 -REQUIRE -( -bufr -[5] == 'F'); - -165 -REQUIRE -( -bufr -[6] == 'g'); - -169 as - cSmStub - : -public - -Sm - { - -170 -public -: - -171 - $SmStub -(cڡ * -s -: - $_am -( -s -) {} - -173  - $ad -() { - -174  -_am -. - `g -(); - -175 - } -} - -177 -size_t - - $adBys -(* -bufr -, -size_t - -ngth -) { - -178 -_am -. - `ad -( -bufr -, -ic_ -< -d -:: -amsize ->( -ngth -)); - -179  -ic_ -< -size_t ->( -_am -. - `gcou -()); - -180 - } -} - -182 - give -: - -183 -d -:: -irgam - -_am -; - -186 -TEST_CASE -("Reader") { - -187 -SECTION -("read()") { - -188 -SmStub - -c -("\x01\xFF"); - -189 - gRd -< - gSmStub -> -ad -( -c -); - -191 -REQUIRE -( -ad -. -ad -() == 0x01); - -192 -REQUIRE -( -ad -. -ad -() == 0xFF); - -193 -REQUIRE -( -ad -. -ad -() == -1); - -196 -SECTION -("readBytes()llt once") { - -197 -SmStub - -c -("ABC"); - -198 - gRd -< - gSmStub -> -ad -( -c -); - -200  - gbufr -[8] = "abcd"; - -201 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 3); - -203 -REQUIRE -( -bufr -[0] == 'A'); - -204 -REQUIRE -( -bufr -[1] == 'B'); - -205 -REQUIRE -( -bufr -[2] == 'C'); - -206 -REQUIRE -( -bufr -[3] == 'd'); - -209 -SECTION -("readBytes() inwoarts") { - -210 -SmStub - -c -("ABCDEF"); - -211 - gRd -< - gSmStub -> -ad -( -c -); - -213  - gbufr -[12] = "abcdefg"; - -214 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 4); - -215 -REQUIRE -( -ad -. -adBys -( -bufr - + 4, 4) == 2); - -217 -REQUIRE -( -bufr -[0] == 'A'); - -218 -REQUIRE -( -bufr -[1] == 'B'); - -219 -REQUIRE -( -bufr -[2] == 'C'); - -220 -REQUIRE -( -bufr -[3] == 'D'); - -221 -REQUIRE -( -bufr -[4] == 'E'); - -222 -REQUIRE -( -bufr -[5] == 'F'); - -223 -REQUIRE -( -bufr -[6] == 'g'); - - @lib_standalone/ArduinoJson/extras/tests/Misc/StringAdapters.cpp - -5  - ~"cuom_rg.h -" - -6  - ~"ogmem_emuti.h -" - -7  - ~"wed_rcmp.h -" - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14  - ~ - -16 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -18 -TEST_CASE -("ConstRamStringAdapter") { - -19 -SECTION -("null") { - -20 -CڡRamSgAdr - -adr -( -NULL -); - -22 -CHECK -( -adr -. -com -("bravo") < 0); - -23 -CHECK -( -adr -. -com -( -NULL -) == 0); - -25 -CHECK -( -adr -. -equs -( -NULL -)); - -26 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -28 -CHECK -( -adr -. -size -() == 0); - -31 -SECTION -("non-null") { - -32 -CڡRamSgAdr - -adr -("bravo"); - -34 -CHECK -( -adr -. -com -( -NULL -) > 0); - -35 -CHECK -( -adr -. -com -("alpha") > 0); - -36 -CHECK -( -adr -. -com -("bravo") == 0); - -37 -CHECK -( -adr -. -com -("charlie") < 0); - -39 -CHECK -( -adr -. -equs -("bravo")); - -40 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -42 -CHECK -( -adr -. -size -() == 5); - -46 -TEST_CASE -("SizedRamStringAdapter") { - -47 -SECTION -("null") { - -48 -SizedRamSgAdr - -adr -( -NULL -, 10); - -50 -CHECK -( -adr -. -com -("bravo") < 0); - -51 -CHECK -( -adr -. -com -( -NULL -) == 0); - -53 -CHECK -( -adr -. -equs -( -NULL -)); - -54 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -56 -CHECK -( -adr -. -size -() == 10); - -59 -SECTION -("non-null") { - -60 -SizedRamSgAdr - -adr -("bravo", 5); - -62 -CHECK -( -adr -. -com -( -NULL -) > 0); - -63 -CHECK -( -adr -. -com -("alpha") > 0); - -64 -CHECK -( -adr -. -com -("bravo") == 0); - -65 -CHECK -( -adr -. -com -("charlie") < 0); - -67 -CHECK -( -adr -. -equs -("bravo")); - -68 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -70 -CHECK -( -adr -. -size -() == 5); - -74 -TEST_CASE -("FlashStringAdapter") { - -75 -SECTION -("null") { - -76 -FshSgAdr - -adr -( -NULL -); - -78 -CHECK -( -adr -. -com -("bravo") < 0); - -79 -CHECK -( -adr -. -com -( -NULL -) == 0); - -81 -CHECK -( -adr -. -equs -( -NULL -)); - -82 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -84 -CHECK -( -adr -. -size -() == 0); - -87 -SECTION -("non-null") { - -88 -FshSgAdr - - gadr - = -adtSg -( -F -("bravo")); - -90 -CHECK -( -adr -. -com -( -NULL -) > 0); - -91 -CHECK -( -adr -. -com -("alpha") > 0); - -92 -CHECK -( -adr -. -com -("bravo") == 0); - -93 -CHECK -( -adr -. -com -("charlie") < 0); - -95 -CHECK -( -adr -. -equs -("bravo")); - -96 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -98 -CHECK -( -adr -. -size -() == 5); - -102 -TEST_CASE -("std::string") { - -103 - gd -:: -rg - -r -("bravo"); - -104 - gSSgAdr -< - gd -:: -rg -> -adr - = -adtSg -( -r -); - -106 -CHECK -( -adr -. -com -( -NULL -) > 0); - -107 -CHECK -( -adr -. -com -("alpha") > 0); - -108 -CHECK -( -adr -. -com -("bravo") == 0); - -109 -CHECK -( -adr -. -com -("charlie") < 0); - -111 -CHECK -( -adr -. -equs -("bravo")); - -112 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -114 -CHECK -( -adr -. -size -() == 5); - -117 -TEST_CASE -("custom_string") { - -118 -cuom_rg - -r -("bravo"); - -119 - gSSgAdr -< - gcuom_rg -> - gadr - = -adtSg -( -r -); - -121 -CHECK -( -adr -. -com -( -NULL -) > 0); - -122 -CHECK -( -adr -. -com -("alpha") > 0); - -123 -CHECK -( -adr -. -com -("bravo") == 0); - -124 -CHECK -( -adr -. -com -("charlie") < 0); - -126 -CHECK -( -adr -. -equs -("bravo")); - -127 -CHECK_FALSE -( -adr -. -equs -("charlie")); - -129 -CHECK -( -adr -. -size -() == 5); - -132 -TEST_CASE -("IsString") { - -133 -SECTION -("std::string") { - -134 -CHECK -( -IsSg -< -d -:: -rg ->:: -vue - = -ue -); - -137 -SECTION -("basic_string") { - -138 -CHECK -( -IsSg -< -d -:: -basic_rg -< -wch_t -> >:: -vue - = -l -); - -141 -SECTION -("custom_string") { - -142 -CHECK -( -IsSg -< -cuom_rg ->:: -vue - = -ue -); - -145 -SECTION -("const __FlashStringHelper*") { - -146 -CHECK -( -IsSg -:: -vue - = -ue -); - - @lib_standalone/ArduinoJson/extras/tests/Misc/StringWriter.cpp - -5  - #ARDUINOJSON_ENABLE_ARDUINO_STRING - 1 - - ) - -6  - #ARDUINOJSON_STRING_BUFFER_SIZE - 5 - - ) - -7  - ~ - -8  - ~ - -9  - ~"cuom_rg.h -" - -11 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -13 - gme - < -tyme - - gSgWr -> - -14  -size_t - - $t -( -SgWr -& -sb -, cڡ * -s -) { - -15  -sb -. - `wre -( -t_ -( -s -), - ` -(s)); - -16 - } -} - -18 - gme - < -tyme - - gSgWr -,ym - gSg -> - -19  - $comm_s -( -SgWr -& -sb -, cڡ -Sg -& -ouut -) { - -20 - `SECTION -("InitialState") { - -21 - `REQUIRE -( -d -:: - `rg -(""= -ouut -); - -24 - `SECTION -("EmptyString") { - -25 - `REQUIRE -(0 = - `t -( -sb -, "")); - -26 - `REQUIRE -( -d -:: - `rg -(""= -ouut -); - -29 - `SECTION -("OneString") { - -30 - `REQUIRE -(4 = - `t -( -sb -, "ABCD")); - -31 - `REQUIRE -( -d -:: - `rg -("ABCD"= -ouut -); - -34 - `SECTION -("TwoStrings") { - -35 - `REQUIRE -(4 = - `t -( -sb -, "ABCD")); - -36 - `REQUIRE -(4 = - `t -( -sb -, "EFGH")); - -37 - `REQUIRE -( -d -:: - `rg -("ABCDEFGH"= -ouut -); - -39 - } -} - -41 -TEST_CASE -("StaticStringWriter") { - -42  - gouut -[20]; - -43 -SticSgWr - -sb -( -ouut -, (output)); - -45 -comm_s -( -sb -, -ic_ -( -ouut -)); - -47 -SECTION -("OverCapacity") { - -48 -REQUIRE -(19 = -t -( -sb -, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")); - -49 -REQUIRE -(0 = -t -( -sb -, "ABC")); - -50 -REQUIRE -( -d -:: -rg -("ABCDEFGHIJKLMNOPQRS"= -ouut -); - -54 -TEST_CASE -("Writer") { - -55 - gd -:: -rg - -ouut -; - -56 - gWr -< - gd -:: -rg -> -sb -( -ouut -); - -57 -comm_s -( -sb -, -ouut -); - -60 -TEST_CASE -("Writer") { - -61 :: -Sg - -ouut -; - -62 - gWr -< :: -Sg -> -sb -( -ouut -); - -64 -comm_s -( -sb -, -ouut -); - -66 -SECTION -("Writes charactersoemporary buffer") { - -68 - gsb -. -wre -('a'); - -69 - gsb -. -wre -('b'); - -70 - gsb -. -wre -('c'); - -71 -REQUIRE -( -ouut - == ""); - -74 - gsb -. -wre -('d'); - -75 -REQUIRE -( -ouut - == "abcd"); - -78 - gsb -. -wre -('e'); - -79 - gsb -.~ -Wr -(); - -80 -REQUIRE -( -ouut - == "abcde"); - -83 -SECTION -("Writes stringsoemporary buffer") { - -85 -t -( -sb -, "abc"); - -86 -REQUIRE -( -ouut - == ""); - -89 -t -( -sb -, "de"); - -90 -REQUIRE -( -ouut - == "abcd"); - -93 - gsb -.~ -Wr -(); - -94 -REQUIRE -( -ouut - == "abcde"); - -98 -TEST_CASE -("Writer") { - -99 -cuom_rg - - gouut -; - -100 - gWr -< - gcuom_rg -> -sb -( -ouut -); - -102 -REQUIRE -(4 = -t -( -sb -, "ABCD")); - -103 -REQUIRE -("ABCD" = -ouut -); - -106 -TEST_CASE -("IsWriteableString") { - -107 -SECTION -("std::string") { - -108 -REQUIRE -( -IsWrbSg -< -d -:: -rg ->:: -vue - = -ue -); - -111 -SECTION -("custom_string") { - -112 -REQUIRE -( -IsWrbSg -< -cuom_rg ->:: -vue - = -ue -); - -115 -SECTION -("basic_string") { - -116 -REQUIRE -( -IsWrbSg -< -d -:: -basic_rg -< -wch_t -> >:: -vue - = -l -); - - @lib_standalone/ArduinoJson/extras/tests/Misc/TypeTraits.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 as - cEmyCss - {}; - -11 - eEmyEnum - {}; - -13 -TEST_CASE -("Polyfills/type_traits") { - -14 -SECTION -("is_base_of") { - -15 -REQUIRE_FALSE -( - -16 -ic_ -< -bo ->( -is_ba_of -< -d -:: -iam -, std:: -orgam ->:: -vue -)); - -17 -REQUIRE -( - -18 -ic_ -< -bo ->( -is_ba_of -< -d -:: -iam -, std:: -irgam ->:: -vue -)); - -21 -SECTION -("is_array") { - -22 -REQUIRE_FALSE -(( -is_y -:: -vue -)); - -23 -REQUIRE -(( -is_y -:: -vue -)); - -24 -REQUIRE -(( -is_y -:: -vue -)); - -27 -SECTION -("is_const") { - -28 -CHECK -( -is_cڡ -<>:: -vue - = -l -); - -29 -CHECK -( -is_cڡ -:: -vue - = -ue -); - -32 -SECTION -("is_signed") { - -33 -CHECK -( -is_sigd -<>:: -vue - = -ue -); - -34 -CHECK -( -is_sigd -:: -vue - = -ue -); - -35 -CHECK -( -is_sigd -:: -vue - = -ue -); - -36 -CHECK -( -is_sigd -:: -vue - = -ue -); - -37 -CHECK -( -is_sigd -:: -vue - = -ue -); - -38 -CHECK -( -is_sigd -<>:: -vue - = -ue -); - -39 -CHECK -( -is_sigd -<>:: -vue - = -ue -); - -40 -CHECK -( -is_sigd -< -bo ->:: -vue - = -l -); - -43 -SECTION -("is_unsigned") { - -44 -CHECK -( -is_unsigd -<>:: -vue - = -ue -); - -45 -CHECK -( -is_unsigd -<>:: -vue - = -ue -); - -46 -CHECK -( -is_unsigd -<>:: -vue - = -ue -); - -47 -CHECK -( -is_unsigd -<>:: -vue - = -ue -); - -48 -CHECK -( -is_unsigd -< -bo ->:: -vue - = -ue -); - -49 -CHECK -( -is_unsigd -<>:: -vue - = -l -); - -50 -CHECK -( -is_unsigd -<>:: -vue - = -l -); - -51 -CHECK -( -is_unsigd -<>:: -vue - = -l -); - -54 -SECTION -("is_convertible") { - -55 -CHECK -(( -is_cvtib -<, >:: -vue - = -ue -)); - -56 -CHECK -(( -is_cvtib -<, >:: -vue - = -ue -)); - -57 -CHECK -(( -is_cvtib -< -EmyEnum -, >:: -vue - = -ue -)); - -58 -CHECK -(( -is_cvtib -<*, >:: -vue - = -l -)); - -59 -CHECK -(( -is_cvtib -< -EmyCss -, >:: -vue - = -l -)); - -62 -SECTION -("is_class") { - -63 -CHECK -(( -is_ass -<>:: -vue - = -l -)); - -64 -CHECK -(( -is_ass -< -EmyEnum ->:: -vue - = -l -)); - -65 -CHECK -(( -is_ass -<*>:: -vue - = -l -)); - -66 -CHECK -(( -is_ass -< -EmyCss ->:: -vue - = -ue -)); - -69 -SECTION -("is_enum") { - -70 -CHECK -( -is_um -<>:: -vue - = -l -); - -71 -CHECK -( -is_um -< -EmyEnum ->:: -vue - = -ue -); - -72 -CHECK -( -is_um -<*>:: -vue - = -l -); - -73 -CHECK -( -is_um -< -EmyCss ->:: -vue - = -l -); - -74 -CHECK -( -is_um -< -bo ->:: -vue - = -l -); - -75 -CHECK -( -is_um -<>:: -vue - = -l -); - -78 -SECTION -("IsVisitable") { - -79 -CHECK -( -IsVisab -< -DerliziE ->:: -vue - = -l -); - -80 -CHECK -( -IsVisab -< -JsPa ->:: -vue - = -l -); - -81 -CHECK -( -IsVisab -< -VRef ->:: -vue - = -ue -); - -82 -CHECK -( -IsVisab -< -VCڡRef ->:: -vue - = -ue -); - -83 -CHECK -( -IsVisab -< -AayRef ->:: -vue - = -ue -); - -84 -CHECK -( -IsVisab -< -EmtProxy -< -AayRef -> >:: -vue - = -ue -); - -85 -CHECK -( -IsVisab -< -AayCڡRef ->:: -vue - = -ue -); - -86 -CHECK -( -IsVisab -< -ObjeRef ->:: -vue - = -ue -); - -87 -CHECK -(( -IsVisab -< -MembProxy -< -ObjeRef -, cڡ *> >:: -vue - = -ue -)); - -88 -CHECK -( -IsVisab -< -ObjeCڡRef ->:: -vue - = -ue -); - -89 -CHECK -( -IsVisab -< -DymicJsDocumt ->:: -vue - = -ue -); - -90 -CHECK -( -IsVisab -< -SticJsDocumt -<10> >:: -vue - = -ue -); - - @lib_standalone/ArduinoJson/extras/tests/Misc/Utf16.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10  - $Utf16Codot -( -ut16_t - -codeun -, -ut32_t - -exedCodot -) { - -11 -Utf16 -:: -Codot - - -; - -12 - `REQUIRE -( - -. - `nd -( -codeun -= -ue -); - -13 - `REQUIRE -( - -. - `vue -(= -exedCodot -); - -14 - } -} - -16  - $Utf16Codot -( -ut16_t - -codeun1 -, ut16_ -codeun2 -, - -17 -ut32_t - -exedCodot -) { - -18 -Utf16 -:: -Codot - - -; - -19 - `REQUIRE -( - -. - `nd -( -codeun1 -= -l -); - -20 - `REQUIRE -( - -. - `nd -( -codeun2 -= -ue -); - -21 - `REQUIRE -( - -. - `vue -(= -exedCodot -); - -22 - } -} - -24 -TEST_CASE -("Utf16::Codepoint()") { - -25 -SECTION -("U+0000") { - -26 -Utf16Codot -(0x0000, 0x000000); - -29 -SECTION -("U+0001") { - -30 -Utf16Codot -(0x0001, 0x000001); - -33 -SECTION -("U+D7FF") { - -34 -Utf16Codot -(0xD7FF, 0x00D7FF); - -37 -SECTION -("U+E000") { - -38 -Utf16Codot -(0xE000, 0x00E000); - -41 -SECTION -("U+FFFF") { - -42 -Utf16Codot -(0xFFFF, 0x00FFFF); - -45 -SECTION -("U+010000") { - -46 -Utf16Codot -(0xD800, 0xDC00, 0x010000); - -49 -SECTION -("U+010001") { - -50 -Utf16Codot -(0xD800, 0xDC01, 0x010001); - -53 -SECTION -("U+0103FF") { - -54 -Utf16Codot -(0xD800, 0xDFFF, 0x0103FF); - -57 -SECTION -("U+010400") { - -58 -Utf16Codot -(0xD801, 0xDC00, 0x010400); - -61 -SECTION -("U+010400") { - -62 -Utf16Codot -(0xDBFF, 0xDC00, 0x10FC00); - -65 -SECTION -("U+10FFFF") { - -66 -Utf16Codot -(0xDBFF, 0xDFFF, 0x10FFFF); - - @lib_standalone/ArduinoJson/extras/tests/Misc/Utf8.cpp - -5  - ~ - -6  - ~ - -8  - ~ - -10 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -12  - $Codot -( -ut32_t - -codot -, -d -:: -rg - -exed -) { - -13  -bufr -[4096]; - -14 -MemyPo - - `po -( -bufr -, 4096); - -15 -SgBud - - `r -(& -po -); - -17 - `CAPTURE -( -codot -); - -18 -Utf8 -:: - `codeCodot -( -codot -, -r -); - -20 - `REQUIRE -( -r -. - `come -(= -exed -); - -21 - } -} - -23 -TEST_CASE -("Utf8::encodeCodepoint()") { - -24 -SECTION -("U+0000") { - -25 -Codot -(0x0000, ""); - -28 -SECTION -("U+0001") { - -29 -Codot -(0x0001, "\x01"); - -32 -SECTION -("U+007F") { - -33 -Codot -(0x007F, "\x7f"); - -36 -SECTION -("U+0080") { - -37 -Codot -(0x0080, "\xc2\x80"); - -40 -SECTION -("U+07FF") { - -41 -Codot -(0x07FF, "\xdf\xbf"); - -44 -SECTION -("U+0800") { - -45 -Codot -(0x0800, "\xe0\xa0\x80"); - -48 -SECTION -("U+FFFF") { - -49 -Codot -(0xFFFF, "\xef\xbf\xbf"); - -52 -SECTION -("U+10000") { - -53 -Codot -(0x10000, "\xf0\x90\x80\x80"); - -56 -SECTION -("U+10FFFF") { - -57 -Codot -(0x10FFFF, "\xf4\x8f\xbf\xbf"); - - @lib_standalone/ArduinoJson/extras/tests/Misc/conflicts.cpp - -6  - ~ - -7  - ~ - -8  - ~ - -11  - #b -() - - ) - -12  - #cڡ -() - - ) - -13  - #DEFAULT - - - ) - -14  - #DISABLED - - - ) - -15  - #HIGH - - - ) - -16  - #INPUT - - - ) - -17  - #LOW - - - ) - -18  - #max -() - - ) - -19  - #m -() - - ) - -20  - #OUTPUT - - - ) - -21  - #round -() - - ) - -22  - #sq -() - - ) - -23  - #wd -() - - ) - -24  - #bRd -() - - ) - -25  - #bS -() - - ) - -26  - #bCˬ -() - - ) - -27  - #bWre -() - - ) - -28  - #us -() - - ) - -29  - #lowBy -() - - ) - -30  - #highBy -() - - ) - -31  - #DEC - - - ) - -32  - #HEX - - - ) - -33  - #OCT - - - ) - -34  - #BIN - - - ) - -35  - #cbi -() - - ) - -36  - #sbi -() - - ) - -39  - #_max -() - - ) - -40  - #_m -() - - ) - -43  - #BLOCKSIZE - - - ) - -44  - #CAPACITY - - - ) - -47  - ~"ArduoJs.h -" - - @lib_standalone/ArduinoJson/extras/tests/Misc/custom_string.hpp - -5 #agm - - - -7  - ~ - -9  - gcuom_ch_as - : -d -:: -ch_as -<> {}; - -10  - gcuom_lot - : -d -:: -lot -<> {}; - -11  - gd -:: - tbasic_rg -<, - tcuom_ch_as -, - tcuom_lot -> - -12 - tcuom_rg -; - - @lib_standalone/ArduinoJson/extras/tests/Misc/unsigned_char.cpp - -5  - ~ - -6  - ~ - -8 #i -defed -( -__g__ -) - -9  - #CONFLICTS_WITH_BUILTIN_OPERATOR - - - ) - -12 -TEST_CASE -("unsigned char[]") { - -13 -SECTION -("deserializeJson()") { - -14  - gput -[] = "{\"a\":42}"; - -16 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1)> - gdoc -; - -17 -DerliziE - - gr - = -derlizeJs -( -doc -, -put -); - -19 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -22 -SECTION -("deserializeMsgPack()") { - -23  - gput -[] = "\xDE\x00\x01\xA5Hello\xA5world"; - -25 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -26 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -28 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -31 -SECTION -("serializeMsgPack(unsigned char[])") { - -32  - gbufr -[32]; - -33 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -34 - gdoc -["hello"] = "world"; - -36 -size_t - - gn - = -rlizeMsgPack -( -doc -, -bufr -); - -38 -REQUIRE -( -n - == 13); - -39 -REQUIRE -( -memcmp -( -bufr -, "\x81\xA5hello\xA5world", 13) == 0); - -42 -SECTION -("serializeMsgPack(unsigned char*)") { - -43  - gbufr -[32]; - -44 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -45 - gdoc -["hello"] = "world"; - -47 -size_t - - gn - = -rlizeMsgPack -( -doc -, -bufr -, (buffer)); - -49 -REQUIRE -( -n - == 13); - -50 -REQUIRE -( -memcmp -( -bufr -, "\x81\xA5hello\xA5world", 13) == 0); - -53 -SECTION -("serializeJson(unsigned char[])") { - -54  - gbufr -[32]; - -55 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -56 - gdoc -["hello"] = "world"; - -58 -size_t - - gn - = -rlizeJs -( -doc -, -bufr -); - -60 -REQUIRE -( -n - == 17); - -61 -REQUIRE -( -memcmp -( -bufr -, "{\"hlo\":\"wld\"}", -n -) == 0); - -64 -SECTION -("serializeJson(unsigned char*)") { - -65  - gbufr -[32]; - -66 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -67 - gdoc -["hello"] = "world"; - -69 -size_t - - gn - = -rlizeJs -( -doc -, -bufr -, (buffer)); - -71 -REQUIRE -( -n - == 17); - -72 -REQUIRE -( -memcmp -( -bufr -, "{\"hlo\":\"wld\"}", -n -) == 0); - -75 -SECTION -("serializeJsonPretty(unsigned char[])") { - -76  - gbufr -[32]; - -77 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -78 - gdoc -["hello"] = "world"; - -80 -size_t - - gn - = -rlizeJsPy -( -doc -, -bufr -); - -82 -REQUIRE -( -n - == 24); - -85 -SECTION -("serializeJsonPretty(unsigned char*)") { - -86  - gbufr -[32]; - -87 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(2)> - gdoc -; - -88 - gdoc -["hello"] = "world"; - -90 -size_t - - gn - = -rlizeJsPy -( -doc -, -bufr -, (buffer)); - -92 -REQUIRE -( -n - == 24); - -95 -SECTION -("JsonVariant") { - -96 -DymicJsDocumt - -doc -(4096); - -98 -SECTION -("set") { - -99  - gvue -[] = "42"; - -101 -JsV - - gv - = -doc -. -to -(); - -102 - gv -. -t -( -vue -); - -104 -REQUIRE -(42 = -v -. -as -<>()); - -107 #ide -CONFLICTS_WITH_BUILTIN_OPERATOR - - -108 -SECTION -("operator[]") { - -109  - gkey -[] = "hello"; - -111 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -112 -JsV - - gv - = -doc -. -as -(); - -114 -REQUIRE -( -d -:: -rg -("wld"= -v -[ -key -]); - -118 #ide -CONFLICTS_WITH_BUILTIN_OPERATOR - - -119 -SECTION -("operator[] const") { - -120  - gkey -[] = "hello"; - -122 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -123 cڡ -JsV - - gv - = -doc -. -as -(); - -125 -REQUIRE -( -d -:: -rg -("wld"= -v -[ -key -]); - -129 -SECTION -("operator==") { - -130  - gcomnd -[] = "hello"; - -132 -JsV - - gv - = -doc -. -to -(); - -133 - gv -. -t -("hello"); - -135 -REQUIRE -( -comnd - = -v -); - -136 -REQUIRE -( -v - = -comnd -); - -137 -REQUIRE_FALSE -( -comnd - ! -v -); - -138 -REQUIRE_FALSE -( -v - ! -comnd -); - -141 -SECTION -("operator!=") { - -142  - gcomnd -[] = "hello"; - -144 -JsV - - gv - = -doc -. -to -(); - -145 - gv -. -t -("world"); - -147 -REQUIRE -( -comnd - ! -v -); - -148 -REQUIRE -( -v - ! -comnd -); - -149 -REQUIRE_FALSE -( -comnd - = -v -); - -150 -REQUIRE_FALSE -( -v - = -comnd -); - -154 -SECTION -("JsonObject") { - -155 #ide -CONFLICTS_WITH_BUILTIN_OPERATOR - - -156 -SECTION -("operator[]") { - -157  - gkey -[] = "hello"; - -159 -DymicJsDocumt - -doc -(4096); - -160 -JsObje - - gobj - = -doc -. -to -(); - -161 - gobj -[ -key -] = "world"; - -163 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -166 -SECTION -("JsonObject::operator[] const") { - -167  - gkey -[] = "hello"; - -169 -DymicJsDocumt - -doc -(4096); - -170 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -172 -JsObje - - gobj - = -doc -. -as -(); - -173 -REQUIRE -( -d -:: -rg -("wld"= -obj -[ -key -]); - -177 -SECTION -("containsKey()") { - -178  - gkey -[] = "hello"; - -180 -DymicJsDocumt - -doc -(4096); - -181 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -182 -JsObje - - gobj - = -doc -. -as -(); - -183 -REQUIRE -( -ue - = -obj -. -cڏsKey -( -key -)); - -186 -SECTION -("remove()") { - -187  - gkey -[] = "hello"; - -189 -DymicJsDocumt - -doc -(4096); - -190 -derlizeJs -( -doc -, "{\"hello\":\"world\"}"); - -191 -JsObje - - gobj - = -doc -. -as -(); - -192 - gobj -. -move -( -key -); - -194 -REQUIRE -(0 = -obj -. -size -()); - -197 -SECTION -("createNestedArray()") { - -198  - gkey -[] = "hello"; - -200 -DymicJsDocumt - -doc -(4096); - -201 -JsObje - - gobj - = -doc -. -to -(); - -202 - gobj -. -NeedAay -( -key -); - -205 -SECTION -("createNestedObject()") { - -206  - gkey -[] = "hello"; - -208 -DymicJsDocumt - -doc -(4096); - -209 -JsObje - - gobj - = -doc -. -to -(); - -210 - gobj -. -NeedObje -( -key -); - -214 -SECTION -("MemberProxy") { - -215 -SECTION -("operator=") { - -216  - gvue -[] = "world"; - -218 -DymicJsDocumt - -doc -(4096); - -219 -JsObje - - gobj - = -doc -. -to -(); - -220 - gobj -["hlo"] = -vue -; - -222 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -225 -SECTION -("set()") { - -226  - gvue -[] = "world"; - -228 -DymicJsDocumt - -doc -(4096); - -229 -JsObje - - gobj - = -doc -. -to -(); - -230 - gobj -["hlo"]. -t -( -vue -); - -232 -REQUIRE -( -d -:: -rg -("wld"= -obj -["hello"]); - -236 -SECTION -("JsonArray") { - -237 -SECTION -("add()") { - -238  - gvue -[] = "world"; - -240 -DymicJsDocumt - -doc -(4096); - -241 -JsAay - - gr - = -doc -. -to -(); - -242 - gr -. -add -( -vue -); - -244 -REQUIRE -( -d -:: -rg -("wld"= -r -[0]); - -248 -SECTION -("ElementProxy") { - -249 -SECTION -("set()") { - -250  - gvue -[] = "world"; - -252 -DymicJsDocumt - -doc -(4096); - -253 -JsAay - - gr - = -doc -. -to -(); - -254 - gr -. -add -("hello"); - -255 - gr -[0]. -t -( -vue -); - -257 -REQUIRE -( -d -:: -rg -("wld"= -r -[0]); - -260 -SECTION -("operator=") { - -261  - gvue -[] = "world"; - -263 -DymicJsDocumt - -doc -(4096); - -264 -JsAay - - gr - = -doc -. -to -(); - -265 - gr -. -add -("hello"); - -266 - gr -[0] = -vue -; - -268 -REQUIRE -( -d -:: -rg -("wld"= -r -[0]); - - @lib_standalone/ArduinoJson/extras/tests/Misc/version.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -usg - - gCch -:: -Mchs -:: -SsWh -; - -11 -TEST_CASE -("ARDUINOJSON_VERSION") { - -12 - gd -:: -rgam - -vsi -; - -14 - gvsi - << - gARDUINOJSON_VERSION_MAJOR - << "." << - gARDUINOJSON_VERSION_MINOR - - -15 << "." << - gARDUINOJSON_VERSION_REVISION -; - -17 -REQUIRE_THAT -( -ARDUINOJSON_VERSION -, -SsWh -( -vsi -. -r -())); - - @lib_standalone/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp - -1  - ~ - -5 -mea - - gARDUINOJSON_NAMESPACE - { - -6  -rcmp -(cڡ * -a -, cڡ * -b -) { - -7  - gsu - = :: -rcmp -( -a -, -b -); - -8 i( - gsu - > 0) - -10 i( - gsu - < 0) - -15  -cmp -(cڡ * -a -, cڡ * -b -, -size_t - -n -) { - -16  - gsu - = :: -cmp -( -a -, -b -, -n -); - -17 i( - gsu - > 0) - -19 i( - gsu - < 0) - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/cpp11.cpp - -1  - ~ - -3  - ~ - -5 #i -__lulus - >= 201103L - -7 -TEST_CASE -("nullptr") { - -8 -DymicJsDocumt - -doc -(4096); - -9 -JsV - - gv - = -doc -. -to -(); - -11 -SECTION -("JsonVariant ==ullptr") { - -12 -REQUIRE -(( -v - = -nuαr -)); - -13 -REQUIRE_FALSE -(( -v - ! -nuαr -)); - -16 -SECTION -("JsonVariant !=ullptr") { - -17 - gv -. -t -(42); - -19 -REQUIRE_FALSE -(( -v - = -nuαr -)); - -20 -REQUIRE -(( -v - ! -nuαr -)); - -23 -SECTION -("JsonVariant.set(nullptr)") { - -24 - gv -. -t -(42); - -25 - gv -. -t -( -nuαr -); - -27 -REQUIRE -( -v -. -isNu -()); - -30 -SECTION -("JsonVariant.is()") { - -31 - gv -. -t -(42); - -32 -REQUIRE -( -v -. -is -< -d -:: -nuαr_t ->(= -l -); - -34 - gv -. -r -(); - -35 -REQUIRE -( -v -. -is -< -d -:: -nuαr_t ->(= -ue -); - -39 -TEST_CASE -("Issue #1120") { - -40 - gSticJsDocumt -<500> - gdoc -; - -41 -cڡex -  - gr -[] = - -43 -derlizeJs -( -doc -, -r -); - -45 -SECTION -("MemberProxy::isNull()") { - -46 -SECTION -("returns false") { - -47 aut - gvue - = -doc -[ -d -:: -rg -("contents")]; - -48 -CHECK -( -vue -. -isNu -(= -l -); - -51 -SECTION -("returnsrue") { - -52 aut - gvue - = -doc -[ -d -:: -rg -("zontents")]; - -53 -CHECK -( -vue -. -isNu -(= -ue -); - -57 -SECTION -("ElementProxy >::isNull()") { - -58 -SECTION -("returns false") { - -59 aut - gvue - = -doc -["contents"][1]; - -60 -CHECK -( -vue -. -isNu -(= -l -); - -63 -SECTION -("returnsrue") { - -64 aut - gvue - = -doc -["contents"][2]; - -65 -CHECK -( -vue -. -isNu -(= -ue -); - -69 -SECTION -("MemberProxy, const char*>::isNull()") { - -70 -SECTION -("returns false") { - -71 aut - gvue - = -doc -["contents"][1]["module"]; - -72 -CHECK -( -vue -. -isNu -(= -l -); - -75 -SECTION -("returnsrue") { - -76 aut - gvue - = -doc -["contents"][1]["zodule"]; - -77 -CHECK -( -vue -. -isNu -(= -ue -); - -81 -SECTION -("MemberProxy, std::string>::isNull()") { - -82 -SECTION -("returns false") { - -83 aut - gvue - = -doc -["cڋs"][1][ -d -:: -rg -("module")]; - -84 -CHECK -( -vue -. -isNu -(= -l -); - -87 -SECTION -("returnsrue") { - -88 aut - gvue - = -doc -["cڋs"][1][ -d -:: -rg -("zodule")]; - -89 -CHECK -( -vue -. -isNu -(= -ue -); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_0.cpp - -1  - #ARDUINOJSON_DECODE_UNICODE - 0 - - ) - -2  - ~ - -4  - ~ - -6 -TEST_CASE -("ARDUINOJSON_DECODE_UNICODE == 0") { - -7 -DymicJsDocumt - -doc -(2048); - -8 -DerliziE - - gr - = -derlizeJs -( -doc -, "\"\\uD834\\uDD1E\""); - -10 -REQUIRE -( -r - = -DerliziE -:: -NSu܋d -); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_1.cpp - -1  - #ARDUINOJSON_DECODE_UNICODE - 1 - - ) - -2  - ~ - -4  - ~ - -6 -TEST_CASE -("ARDUINOJSON_DECODE_UNICODE == 1") { - -7 -DymicJsDocumt - -doc -(2048); - -8 -DerliziE - - gr - = -derlizeJs -( -doc -, "\"\\uD834\\uDD1E\""); - -10 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp - -5  - #ARDUINOJSON_ENABLE_COMMENTS - 0 - - ) - -6  - ~ - -8  - ~ - -10 -TEST_CASE -("Comments shouldroduce InvalidInput") { - -11 -DymicJsDocumt - -doc -(2048); - -13 cڡ * - gCas -[] = { - -47 cڡ -size_t - - gCou - = ( -Cas -) / (testCases[0]); - -49  -size_t - - gi - = 0; i < - gCou -; i++) { - -50 cڡ * - gput - = -Cas -[ -i -]; - -51 -CAPTURE -( -put -); - -52 -REQUIRE -( -derlizeJs -( -doc -, -put -= -DerliziE -:: -InvidIut -); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp - -5  - #ARDUINOJSON_ENABLE_COMMENTS - 1 - - ) - -6  - ~ - -8  - ~ - -10 -TEST_CASE -("Comments inrrays") { - -11 -DymicJsDocumt - -doc -(2048); - -13 -SECTION -("Block comments") { - -14 -SECTION -("Before opening bracket") { - -15 -DerliziE - - gr - = - -16 -derlizeJs -( -doc -, "/*COMMENT*/ [\"hello\"]"); - -17 -JsAay - - gr - = -doc -. -as -(); - -19 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -20 -REQUIRE -(1 = -r -. -size -()); - -21 -REQUIRE -( -r -[0] == "hello"); - -24 -SECTION -("After opening bracket") { - -25 -DerliziE - - gr - = - -26 -derlizeJs -( -doc -, "[/*COMMENT*/ \"hello\"]"); - -27 -JsAay - - gr - = -doc -. -as -(); - -29 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -30 -REQUIRE -(1 = -r -. -size -()); - -31 -REQUIRE -( -r -[0] == "hello"); - -34 -SECTION -("Before closing bracket") { - -35 -DerliziE - - gr - = -derlizeJs -( -doc -, "[\"hello\"/*COMMENT*/]"); - -36 -JsAay - - gr - = -doc -. -as -(); - -38 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -39 -REQUIRE -(1 = -r -. -size -()); - -40 -REQUIRE -( -r -[0] == "hello"); - -43 -SECTION -("After closing bracket") { - -44 -DerliziE - - gr - = -derlizeJs -( -doc -, "[\"hello\"]/*COMMENT*/"); - -45 -JsAay - - gr - = -doc -. -as -(); - -47 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -48 -REQUIRE -(1 = -r -. -size -()); - -49 -REQUIRE -( -r -[0] == "hello"); - -52 -SECTION -("Before comma") { - -53 -DerliziE - - gr - = - -54 -derlizeJs -( -doc -, "[\"hello\"/*COMMENT*/,\"world\"]"); - -55 -JsAay - - gr - = -doc -. -as -(); - -57 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -58 -REQUIRE -(2 = -r -. -size -()); - -59 -REQUIRE -( -r -[0] == "hello"); - -60 -REQUIRE -( -r -[1] == "world"); - -63 -SECTION -("After comma") { - -64 -DerliziE - - gr - = - -65 -derlizeJs -( -doc -, "[\"hello\",/*COMMENT*/ \"world\"]"); - -66 -JsAay - - gr - = -doc -. -as -(); - -68 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -69 -REQUIRE -(2 = -r -. -size -()); - -70 -REQUIRE -( -r -[0] == "hello"); - -71 -REQUIRE -( -r -[1] == "world"); - -74 -SECTION -("/*/") { - -75 -DerliziE - - gr - = -derlizeJs -( -doc -, "[/*/\n]"); - -76 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -79 -SECTION -("Unfinished comment") { - -80 -DerliziE - - gr - = -derlizeJs -( -doc -, "[/*COMMENT]"); - -81 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -84 -SECTION -("Final slash missing") { - -85 -DerliziE - - gr - = -derlizeJs -( -doc -, "[/*COMMENT*]"); - -86 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -90 -SECTION -("Trailing comments") { - -91 -SECTION -("Before opening bracket") { - -92 -DerliziE - - gr - = - -93 -derlizeJs -( -doc -, "//COMMENT\n\t[\"hello\"]"); - -94 -JsAay - - gr - = -doc -. -as -(); - -96 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -97 -REQUIRE -(1 = -r -. -size -()); - -98 -REQUIRE -( -r -[0] == "hello"); - -101 -SECTION -("After opening bracket") { - -102 -DerliziE - - gr - = -derlizeJs -( -doc -, "[//COMMENT\n\"hello\"]"); - -103 -JsAay - - gr - = -doc -. -as -(); - -105 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -106 -REQUIRE -(1 = -r -. -size -()); - -107 -REQUIRE -( -r -[0] == "hello"); - -110 -SECTION -("Before closing bracket") { - -111 -DerliziE - - gr - = - -112 -derlizeJs -( -doc -, "[\"hello\"//COMMENT\r\n]"); - -113 -JsAay - - gr - = -doc -. -as -(); - -115 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -116 -REQUIRE -(1 = -r -. -size -()); - -117 -REQUIRE -( -r -[0] == "hello"); - -120 -SECTION -("After closing bracket") { - -121 -DerliziE - - gr - = -derlizeJs -( -doc -, "[\"hello\"]//COMMENT\n"); - -122 -JsAay - - gr - = -doc -. -as -(); - -124 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -125 -REQUIRE -(1 = -r -. -size -()); - -126 -REQUIRE -( -r -[0] == "hello"); - -129 -SECTION -("Before comma") { - -130 -DerliziE - - gr - = - -131 -derlizeJs -( -doc -, "[\"hello\"//COMMENT\n,\"world\"]"); - -132 -JsAay - - gr - = -doc -. -as -(); - -134 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -135 -REQUIRE -(2 = -r -. -size -()); - -136 -REQUIRE -( -r -[0] == "hello"); - -137 -REQUIRE -( -r -[1] == "world"); - -140 -SECTION -("After comma") { - -141 -DerliziE - - gr - = - -142 -derlizeJs -( -doc -, "[\"hello\",//COMMENT\n\"world\"]"); - -143 -JsAay - - gr - = -doc -. -as -(); - -145 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -146 -REQUIRE -(2 = -r -. -size -()); - -147 -REQUIRE -( -r -[0] == "hello"); - -148 -REQUIRE -( -r -[1] == "world"); - -151 -SECTION -("Invalid comment") { - -152 -DerliziE - - gr - = -derlizeJs -( -doc -, "[/COMMENT\n]"); - -153 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -156 -SECTION -("End document with comment") { - -157 -DerliziE - - gr - = -derlizeJs -( -doc -, "[//COMMENT"); - -158 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -163 -TEST_CASE -("Comments in objects") { - -164 -DymicJsDocumt - -doc -(2048); - -166 -SECTION -("Block comments") { - -167 -SECTION -("Before opening brace") { - -168 -DerliziE - - gr - = - -169 -derlizeJs -( -doc -, "/*COMMENT*/ {\"hello\":\"world\"}"); - -170 -JsObje - - gobj - = -doc -. -as -(); - -172 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -173 -REQUIRE -( -obj -["hello"] == "world"); - -176 -SECTION -("After opening brace") { - -177 -DerliziE - - gr - = - -178 -derlizeJs -( -doc -, "{/*COMMENT*/\"hello\":\"world\"}"); - -179 -JsObje - - gobj - = -doc -. -as -(); - -181 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -182 -REQUIRE -( -obj -["hello"] == "world"); - -185 -SECTION -("Before colon") { - -186 -DerliziE - - gr - = - -187 -derlizeJs -( -doc -, "{\"hello\"/*COMMENT*/:\"world\"}"); - -188 -JsObje - - gobj - = -doc -. -as -(); - -190 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -191 -REQUIRE -( -obj -["hello"] == "world"); - -194 -SECTION -("After colon") { - -195 -DerliziE - - gr - = - -196 -derlizeJs -( -doc -, "{\"hello\":/*COMMENT*/\"world\"}"); - -197 -JsObje - - gobj - = -doc -. -as -(); - -199 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -200 -REQUIRE -( -obj -["hello"] == "world"); - -203 -SECTION -("Before closing brace") { - -204 -DerliziE - - gr - = - -205 -derlizeJs -( -doc -, "{\"hello\":\"world\"/*COMMENT*/}"); - -206 -JsObje - - gobj - = -doc -. -as -(); - -208 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -209 -REQUIRE -( -obj -["hello"] == "world"); - -212 -SECTION -("After closing brace") { - -213 -DerliziE - - gr - = - -214 -derlizeJs -( -doc -, "{\"hello\":\"world\"}/*COMMENT*/"); - -215 -JsObje - - gobj - = -doc -. -as -(); - -217 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -218 -REQUIRE -( -obj -["hello"] == "world"); - -221 -SECTION -("Before comma") { - -222 -DerliziE - - gr - = -derlizeJs -( - -223 -doc -, "{\"hello\":\"world\"/*COMMENT*/,\"answer\":42}"); - -224 -JsObje - - gobj - = -doc -. -as -(); - -226 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -227 -REQUIRE -( -obj -["hello"] == "world"); - -228 -REQUIRE -( -obj -["answer"] == 42); - -231 -SECTION -("After comma") { - -232 -DerliziE - - gr - = -derlizeJs -( - -233 -doc -, "{\"hello\":\"world\",/*COMMENT*/\"answer\":42}"); - -234 -JsObje - - gobj - = -doc -. -as -(); - -236 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -237 -REQUIRE -( -obj -["hello"] == "world"); - -238 -REQUIRE -( -obj -["answer"] == 42); - -242 -SECTION -("Trailing comments") { - -243 -SECTION -("Before opening brace") { - -244 -DerliziE - - gr - = - -245 -derlizeJs -( -doc -, "//COMMENT\n {\"hello\":\"world\"}"); - -246 -JsObje - - gobj - = -doc -. -as -(); - -248 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -249 -REQUIRE -( -obj -["hello"] == "world"); - -252 -SECTION -("After opening brace") { - -253 -DerliziE - - gr - = - -254 -derlizeJs -( -doc -, "{//COMMENT\n\"hello\":\"world\"}"); - -255 -JsObje - - gobj - = -doc -. -as -(); - -257 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -258 -REQUIRE -( -obj -["hello"] == "world"); - -261 -SECTION -("Before colon") { - -262 -DerliziE - - gr - = - -263 -derlizeJs -( -doc -, "{\"hello\"//COMMENT\n:\"world\"}"); - -264 -JsObje - - gobj - = -doc -. -as -(); - -266 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -267 -REQUIRE -( -obj -["hello"] == "world"); - -270 -SECTION -("After colon") { - -271 -DerliziE - - gr - = - -272 -derlizeJs -( -doc -, "{\"hello\"://COMMENT\n\"world\"}"); - -273 -JsObje - - gobj - = -doc -. -as -(); - -275 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -276 -REQUIRE -( -obj -["hello"] == "world"); - -279 -SECTION -("Before closing brace") { - -280 -DerliziE - - gr - = - -281 -derlizeJs -( -doc -, "{\"hello\":\"world\"//COMMENT\n}"); - -282 -JsObje - - gobj - = -doc -. -as -(); - -284 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -285 -REQUIRE -( -obj -["hello"] == "world"); - -288 -SECTION -("After closing brace") { - -289 -DerliziE - - gr - = - -290 -derlizeJs -( -doc -, "{\"hello\":\"world\"}//COMMENT\n"); - -291 -JsObje - - gobj - = -doc -. -as -(); - -293 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -294 -REQUIRE -( -obj -["hello"] == "world"); - -297 -SECTION -("Before comma") { - -298 -DerliziE - - gr - = -derlizeJs -( - -299 -doc -, "{\"hello\":\"world\"//COMMENT\n,\"answer\":42}"); - -300 -JsObje - - gobj - = -doc -. -as -(); - -302 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -303 -REQUIRE -( -obj -["hello"] == "world"); - -304 -REQUIRE -( -obj -["answer"] == 42); - -307 -SECTION -("After comma") { - -308 -DerliziE - - gr - = -derlizeJs -( - -309 -doc -, "{\"hello\":\"world\",//COMMENT\n\"answer\":42}"); - -310 -JsObje - - gobj - = -doc -. -as -(); - -312 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -313 -REQUIRE -( -obj -["hello"] == "world"); - -314 -REQUIRE -( -obj -["answer"] == 42); - -318 -SECTION -("Dangling slash") { - -319 -SECTION -("Before opening brace") { - -320 -DerliziE - - gr - = -derlizeJs -( -doc -, "/{\"hello\":\"world\"}"); - -322 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -325 -SECTION -("After opening brace") { - -326 -DerliziE - - gr - = -derlizeJs -( -doc -, "{/\"hello\":\"world\"}"); - -328 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -331 -SECTION -("Before colon") { - -332 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\"/:\"world\"}"); - -334 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -337 -SECTION -("After colon") { - -338 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\":/\"world\"}"); - -340 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -343 -SECTION -("Before closing brace") { - -344 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\":\"world\"/}"); - -346 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -349 -SECTION -("After closing brace") { - -350 -DerliziE - - gr - = -derlizeJs -( -doc -, "{\"hello\":\"world\"}/"); - -351 -JsObje - - gobj - = -doc -. -as -(); - -353 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -354 -REQUIRE -( -obj -["hello"] == "world"); - -357 -SECTION -("Before comma") { - -358 -DerliziE - - gr - = - -359 -derlizeJs -( -doc -, "{\"hello\":\"world\"/,\"answer\":42}"); - -361 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -364 -SECTION -("After comma") { - -365 -DerliziE - - gr - = - -366 -derlizeJs -( -doc -, "{\"hello\":\"world\",/\"answer\":42}"); - -368 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -373 -TEST_CASE -("Commentslone") { - -374 -DymicJsDocumt - -doc -(2048); - -376 -SECTION -("Justrailing comment") { - -377 -DerliziE - - gr - = -derlizeJs -( -doc -, "// comment"); - -379 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -382 -SECTION -("Just block comment") { - -383 -DerliziE - - gr - = -derlizeJs -( -doc -, "/*comment*/"); - -385 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -388 -SECTION -("Just slash") { - -389 -DerliziE - - gr - = -derlizeJs -( -doc -, "/"); - -391 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -394 -SECTION -("Prematureerminator") { - -395 -DerliziE - - gr - = -derlizeJs -( -doc -, "/* comment"); - -397 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -400 -SECTION -("Prematurend on sized input") { - -401 -DerliziE - - gr - = -derlizeJs -( -doc -, "/* comment */", 10); - -403 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_0.cpp - -1  - #ARDUINOJSON_ENABLE_INFINITY - 0 - - ) - -2  - ~ - -4  - ~ - -5  - ~ - -7  - $asPFas -(cڡ * -js -) { - -8 -DymicJsDocumt - - `doc -(4096); - -9 aut -r - = - `derlizeJs -( -doc -, -js -); - -11 - `REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - -12 - } -} - -14  - $asJsEqus -(cڡ -JsDocumt -& -doc -, - -15 -d -:: -rg - -exedJs -) { - -16 -d -:: -rg - -auJs -; - -17 - `rlizeJs -( -doc -, -auJs -); - -18 - `REQUIRE -( -auJs - = -exedJs -); - -19 - } -} - -21 -TEST_CASE -("ARDUINOJSON_ENABLE_INFINITY == 0") { - -22 -SECTION -("serializeJson()") { - -23 -DymicJsDocumt - -doc -(4096); - -24 - gdoc -. -add -( -d -:: -numic_lims -<>:: -fy -()); - -25 - gdoc -. -add -(- -d -:: -numic_lims -<>:: -fy -()); - -27 -asJsEqus -( -doc -, "[null,null]"); - -30 -SECTION -("deserializeJson()") { - -31 -asPFas -("{\"X\":Infinity}"); - -32 -asPFas -("{\"X\":-Infinity}"); - -33 -asPFas -("{\"X\":+Infinity}"); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_1.cpp - -1  - #ARDUINOJSON_ENABLE_INFINITY - 1 - - ) - -2  - ~ - -4  - ~ - -5  - ~ - -7 -mea - - gmy - { - -8 -usg - - gARDUINOJSON_NAMESPACE -:: -isf -; - -11 -TEST_CASE -("ARDUINOJSON_ENABLE_INFINITY == 1") { - -12 -DymicJsDocumt - -doc -(4096); - -14 -SECTION -("serializeJson()") { - -15 - gdoc -. -add -( -d -:: -numic_lims -<>:: -fy -()); - -16 - gdoc -. -add -(- -d -:: -numic_lims -<>:: -fy -()); - -18 - gd -:: -rg - -js -; - -19 -rlizeJs -( -doc -, -js -); - -21 -REQUIRE -( -js - == "[Infinity,-Infinity]"); - -24 -SECTION -("deserializeJson()") { - -25 aut - gr - = -derlizeJs -( -doc -, "[Infinity,-Infinity,+Infinity]"); - -26  - ga - = -doc -[0]; - -27  - gb - = -doc -[1]; - -28  - gc - = -doc -[2]; - -30 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -31 -REQUIRE -( -my -:: -isf -( -a -)); - -32 -REQUIRE -( -a - > 0); - -33 -REQUIRE -( -my -:: -isf -( -b -)); - -34 -REQUIRE -( -b - < 0); - -35 -REQUIRE -( -my -:: -isf -( -c -)); - -36 -REQUIRE -( -c - > 0); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_0.cpp - -1  - #ARDUINOJSON_ENABLE_NAN - 0 - - ) - -2  - ~ - -4  - ~ - -5  - ~ - -7 -TEST_CASE -("ARDUINOJSON_ENABLE_NAN == 0") { - -8 -DymicJsDocumt - -doc -(4096); - -9 -JsObje - - gro - = -doc -. -to -(); - -11 -SECTION -("serializeJson()") { - -12 - gro -["X"] = -d -:: -numic_lims -<>:: -siglg_NaN -(); - -14 - gd -:: -rg - -js -; - -15 -rlizeJs -( -doc -, -js -); - -17 -REQUIRE -( -js - == "{\"X\":null}"); - -20 -SECTION -("deserializeJson()") { - -21 aut - gr - = -derlizeJs -( -doc -, "{\"X\":NaN}"); - -23 -REQUIRE -( -r - = -DerliziE -:: -InvidIut -); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_1.cpp - -1  - #ARDUINOJSON_ENABLE_NAN - 1 - - ) - -2  - ~ - -4  - ~ - -5  - ~ - -7 -mea - - gmy - { - -8 -usg - - gARDUINOJSON_NAMESPACE -:: -i -; - -11 -TEST_CASE -("ARDUINOJSON_ENABLE_NAN == 1") { - -12 -DymicJsDocumt - -doc -(4096); - -13 -JsObje - - gro - = -doc -. -to -(); - -15 -SECTION -("serializeJson()") { - -16 - gro -["X"] = -d -:: -numic_lims -<>:: -siglg_NaN -(); - -18 - gd -:: -rg - -js -; - -19 -rlizeJs -( -doc -, -js -); - -21 -REQUIRE -( -js - == "{\"X\":NaN}"); - -24 -SECTION -("deserializeJson()") { - -25 aut - gr - = -derlizeJs -( -doc -, "{\"X\":NaN}"); - -26  - gx - = -doc -["X"]; - -28 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -29 -REQUIRE -( -my -:: -i -( -x -)); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp - -5  - ~"ogmem_emuti.h -" - -7  - #ARDUINOJSON_ENABLE_PROGMEM - 1 - - ) - -8  - ~ - -10  - ~ - -12 -TEST_CASE -("Flash strings") { - -13 -DymicJsDocumt - -doc -(2048); - -15 -SECTION -("deserializeJson()") { - -16 -DerliziE - - gr - = -derlizeJs -( -doc -, -F -("{'hello':'world'}")); - -18 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -19 -REQUIRE -( -doc -["hello"] == "world"); - -22 -SECTION -("JsonDocument::operator[]") { - -23 - gdoc -[ -F -("hello")] = F("world"); - -25 -REQUIRE -( -doc -["hello"] == "world"); - -28 -SECTION -("JsonDocument::add()") { - -29 - gdoc -. -add -( -F -("world")); - -31 -REQUIRE -( -doc -[0] == "world"); - -34 -SECTION -("JsonVariant::set()") { - -35 -JsV - - gv - = -doc -. -to -(); - -37 - gv -. -t -( -F -("world")); - -39 -REQUIRE -( -v - == "world"); - -42 -SECTION -("MemberProxy::operator==") { - -43 - gdoc -["hello"] = "world"; - -45 -REQUIRE -( -doc -["hlo"] = -F -("world")); - -48 -SECTION -("ElementProxy::operator==") { - -49 - gdoc -. -add -("world"); - -51 -REQUIRE -( -doc -[0] = -F -("world")); - -55 -TEST_CASE -("strlen_P") { - -56 -CHECK -( -_P -( -FC -("")) == 0); - -57 -CHECK -( -_P -( -FC -("a")) == 1); - -58 -CHECK -( -_P -( -FC -("ac")) == 2); - -61 -TEST_CASE -("strncmp_P") { - -62 -CHECK -( -cmp_P -("a", -FC -("b"), 0) == 0); - -63 -CHECK -( -cmp_P -("a", -FC -("b"), 1) == -1); - -64 -CHECK -( -cmp_P -("b", -FC -("a"), 1) == 1); - -65 -CHECK -( -cmp_P -("a", -FC -("a"), 0) == 0); - -66 -CHECK -( -cmp_P -("a", -FC -("b"), 2) == -1); - -67 -CHECK -( -cmp_P -("b", -FC -("a"), 2) == 1); - -68 -CHECK -( -cmp_P -("a", -FC -("a"), 2) == 0); - -71 -TEST_CASE -("strcmp_P") { - -72 -CHECK -( -rcmp_P -("a", -FC -("b")) == -1); - -73 -CHECK -( -rcmp_P -("b", -FC -("a")) == 1); - -74 -CHECK -( -rcmp_P -("a", -FC -("a")) == 0); - -75 -CHECK -( -rcmp_P -("", -FC -("ab")) == -1); - -76 -CHECK -( -rcmp_P -("ab", -FC -("aa")) == 1); - -77 -CHECK -( -rcmp_P -("", -FC -("aa")) == 0); - -80 -TEST_CASE -("memcpy_P") { - -81  - gd -[4]; - -82 -CHECK -( -memy_P -( -d -, -FC -("ABC"), 4) == dst); - -83 -CHECK -( -d -[0] == 'A'); - -84 -CHECK -( -d -[1] == 'B'); - -85 -CHECK -( -d -[2] == 'C'); - -86 -CHECK -( -d -[3] == 0); - -89 -TEST_CASE -("BoundedReader") { - -90 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -92 -SECTION -("read") { - -93 - gBoundedRd - -ad -( -F -("\x01\xFF"), 2); - -94 -REQUIRE -( -ad -. -ad -() == 0x01); - -95 -REQUIRE -( -ad -. -ad -() == 0xFF); - -96 -REQUIRE -( -ad -. -ad -() == -1); - -97 -REQUIRE -( -ad -. -ad -() == -1); - -100 -SECTION -("readBytes()llt once") { - -101 - gBoundedRd - -ad -( -F -("ABCD"), 3); - -103  - gbufr -[8] = "abcd"; - -104 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 3); - -106 -REQUIRE -( -bufr -[0] == 'A'); - -107 -REQUIRE -( -bufr -[1] == 'B'); - -108 -REQUIRE -( -bufr -[2] == 'C'); - -109 -REQUIRE -( -bufr -[3] == 'd'); - -112 -SECTION -("readBytes() inwoarts") { - -113 - gBoundedRd - -ad -( -F -("ABCDEF"), 6); - -115  - gbufr -[8] = "abcdefg"; - -116 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 4); - -117 -REQUIRE -( -ad -. -adBys -( -bufr - + 4, 4) == 2); - -119 -REQUIRE -( -bufr -[0] == 'A'); - -120 -REQUIRE -( -bufr -[1] == 'B'); - -121 -REQUIRE -( -bufr -[2] == 'C'); - -122 -REQUIRE -( -bufr -[3] == 'D'); - -123 -REQUIRE -( -bufr -[4] == 'E'); - -124 -REQUIRE -( -bufr -[5] == 'F'); - -125 -REQUIRE -( -bufr -[6] == 'g'); - -129 -TEST_CASE -("Reader") { - -130 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -132 -SECTION -("read()") { - -133 - gRd - -ad -( -F -("\x01\xFF\x00\x12")); - -134 -REQUIRE -( -ad -. -ad -() == 0x01); - -135 -REQUIRE -( -ad -. -ad -() == 0xFF); - -136 -REQUIRE -( -ad -. -ad -() == 0); - -137 -REQUIRE -( -ad -. -ad -() == 0x12); - -140 -SECTION -("readBytes()llt once") { - -141 - gRd - -ad -( -F -("ABCD")); - -143  - gbufr -[8] = "abcd"; - -144 -REQUIRE -( -ad -. -adBys -( -bufr -, 3) == 3); - -146 -REQUIRE -( -bufr -[0] == 'A'); - -147 -REQUIRE -( -bufr -[1] == 'B'); - -148 -REQUIRE -( -bufr -[2] == 'C'); - -149 -REQUIRE -( -bufr -[3] == 'd'); - -152 -SECTION -("readBytes() inwoarts") { - -153 - gRd - -ad -( -F -("ABCDEF")); - -155  - gbufr -[8] = "abcdefg"; - -156 -REQUIRE -( -ad -. -adBys -( -bufr -, 4) == 4); - -157 -REQUIRE -( -ad -. -adBys -( -bufr - + 4, 2) == 2); - -159 -REQUIRE -( -bufr -[0] == 'A'); - -160 -REQUIRE -( -bufr -[1] == 'B'); - -161 -REQUIRE -( -bufr -[2] == 'C'); - -162 -REQUIRE -( -bufr -[3] == 'D'); - -163 -REQUIRE -( -bufr -[4] == 'E'); - -164 -REQUIRE -( -bufr -[5] == 'F'); - -165 -REQUIRE -( -bufr -[6] == 'g'); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_0.cpp - -1  - #ARDUINOJSON_USE_DOUBLE - 0 - - ) - -2  - ~ - -4  - ~ - -6 -TEST_CASE -("ARDUINOJSON_USE_DOUBLE == 0") { - -7 -DymicJsDocumt - -doc -(4096); - -8 -JsObje - - gro - = -doc -. -to -(); - -10 - gro -["pi"] = 3.14; - -11 - gro -["e"] = 2.72; - -13 - gd -:: -rg - -js -; - -14 -rlizeJs -( -doc -, -js -); - -16 -REQUIRE -( -js - == "{\"pi\":3.14,\"e\":2.72}"); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_1.cpp - -1  - #ARDUINOJSON_USE_DOUBLE - 1 - - ) - -2  - ~ - -4  - ~ - -6 -TEST_CASE -("ARDUINOJSON_USE_DOUBLE == 1") { - -7 -DymicJsDocumt - -doc -(4096); - -8 -JsObje - - gro - = -doc -. -to -(); - -10 - gro -["pi"] = 3.14; - -11 - gro -["e"] = 2.72; - -13 - gd -:: -rg - -js -; - -14 -rlizeJs -( -doc -, -js -); - -16 -REQUIRE -( -js - == "{\"pi\":3.14,\"e\":2.72}"); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_0.cpp - -1  - #ARDUINOJSON_USE_LONG_LONG - 0 - - ) - -2  - ~ - -4  - ~ - -6 - gme - < -size_t - - gsize_of_lg -> - -7 - gd -:: -rg - -g_exed_js -(); - -9 - gme - <> - -10 - gd -:: -rg - -g_exed_js -<4>() { - -14 - gme - <> - -15 - gd -:: -rg - -g_exed_js -<8>() { - -19 -TEST_CASE -("ARDUINOJSON_USE_LONG_LONG == 0") { - -20 -DymicJsDocumt - -doc -(4096); - -21 -JsObje - - gro - = -doc -. -to -(); - -23 - gro -["A"] = 123456789123456789; - -24 - gro -["B"] = 987654321987654321; - -26 - gd -:: -rg - -js -; - -27 -rlizeJs -( -doc -, -js -); - -29 -REQUIRE -( -js - = -g_exed_js -<()>()); - - @lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_1.cpp - -1  - #ARDUINOJSON_USE_LONG_LONG - 1 - - ) - -2  - ~ - -4  - ~ - -6 -TEST_CASE -("ARDUINOJSON_USE_LONG_LONG == 1") { - -7 -DymicJsDocumt - -doc -(4096); - -8 -JsObje - - gro - = -doc -. -to -(); - -10 - gro -["A"] = 123456789123456789; - -11 - gro -["B"] = 987654321987654321; - -13 - gd -:: -rg - -js -; - -14 -rlizeJs -( -doc -, -js -); - -16 -REQUIRE -( -js - == "{\"A\":123456789123456789,\"B\":987654321987654321}"); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("deserialize MsgPackrray") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("fixarray") { - -12 -SECTION -("empty") { - -13 cڡ * - gput - = "\x90"; - -15 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -16 -JsAay - - gy - = -doc -. -as -(); - -18 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -19 -REQUIRE -( -y -. -size -() == 0); - -22 -SECTION -("two integers") { - -23 cڡ * - gput - = "\x92\x01\x02"; - -25 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -26 -JsAay - - gy - = -doc -. -as -(); - -28 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -29 -REQUIRE -( -y -. -size -() == 2); - -30 -REQUIRE -( -y -[0] == 1); - -31 -REQUIRE -( -y -[1] == 2); - -35 -SECTION -("array 16") { - -36 -SECTION -("empty") { - -37 cڡ * - gput - = "\xDC\x00\x00"; - -39 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -40 -JsAay - - gy - = -doc -. -as -(); - -42 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -43 -REQUIRE -( -y -. -size -() == 0); - -46 -SECTION -("two strings") { - -47 cڡ * - gput - = "\xDC\x00\x02\xA5hello\xA5world"; - -49 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -50 -JsAay - - gy - = -doc -. -as -(); - -52 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -53 -REQUIRE -( -y -. -size -() == 2); - -54 -REQUIRE -( -y -[0] == "hello"); - -55 -REQUIRE -( -y -[1] == "world"); - -59 -SECTION -("array 32") { - -60 -SECTION -("empty") { - -61 cڡ * - gput - = "\xDD\x00\x00\x00\x00"; - -63 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -64 -JsAay - - gy - = -doc -. -as -(); - -66 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -67 -REQUIRE -( -y -. -size -() == 0); - -70 -SECTION -("two floats") { - -71 cڡ * - gput - = - -74 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -75 -JsAay - - gy - = -doc -. -as -(); - -77 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -78 -REQUIRE -( -y -. -size -() == 2); - -79 -REQUIRE -( -y -[0] == 0.0f); - -80 -REQUIRE -( -y -[1] == 3.14f); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("deserialize MsgPack object") { - -9 -DymicJsDocumt - -doc -(4096); - -11 -SECTION -("fixmap") { - -12 -SECTION -("empty") { - -13 cڡ * - gput - = "\x80"; - -15 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -16 -JsObje - - gobj - = -doc -. -as -(); - -18 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -19 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -20 -REQUIRE -( -obj -. -size -() == 0); - -23 -SECTION -("two integers") { - -24 cڡ * - gput - = "\x82\xA3one\x01\xA3two\x02"; - -26 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -27 -JsObje - - gobj - = -doc -. -as -(); - -29 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -30 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -31 -REQUIRE -( -obj -. -size -() == 2); - -32 -REQUIRE -( -obj -["one"] == 1); - -33 -REQUIRE -( -obj -["two"] == 2); - -36 -SECTION -("key is str 8") { - -37 cڡ * - gput - = "\x82\xd9\x03one\x01\xd9\x03two\x02"; - -39 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -40 -JsObje - - gobj - = -doc -. -as -(); - -42 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -43 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -44 -REQUIRE -( -obj -. -size -() == 2); - -45 -REQUIRE -( -obj -["one"] == 1); - -46 -REQUIRE -( -obj -["two"] == 2); - -49 -SECTION -("key is str 16") { - -50 cڡ * - gput - = "\x82\xda\x00\x03one\x01\xda\x00\x03two\x02"; - -52 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -53 -JsObje - - gobj - = -doc -. -as -(); - -55 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -56 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -57 -REQUIRE -( -obj -. -size -() == 2); - -58 -REQUIRE -( -obj -["one"] == 1); - -59 -REQUIRE -( -obj -["two"] == 2); - -62 -SECTION -("key is str 32") { - -63 cڡ * - gput - = - -66 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -67 -JsObje - - gobj - = -doc -. -as -(); - -69 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -70 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -71 -REQUIRE -( -obj -. -size -() == 2); - -72 -REQUIRE -( -obj -["one"] == 1); - -73 -REQUIRE -( -obj -["two"] == 2); - -77 -SECTION -("map 16") { - -78 -SECTION -("empty") { - -79 cڡ * - gput - = "\xDE\x00\x00"; - -81 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -82 -JsObje - - gobj - = -doc -. -as -(); - -84 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -85 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -86 -REQUIRE -( -obj -. -size -() == 0); - -89 -SECTION -("two strings") { - -90 cڡ * - gput - = "\xDE\x00\x02\xA1H\xA5hello\xA1W\xA5world"; - -92 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -93 -JsObje - - gobj - = -doc -. -as -(); - -95 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -96 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -97 -REQUIRE -( -obj -. -size -() == 2); - -98 -REQUIRE -( -obj -["H"] == "hello"); - -99 -REQUIRE -( -obj -["W"] == "world"); - -103 -SECTION -("map 32") { - -104 -SECTION -("empty") { - -105 cڡ * - gput - = "\xDF\x00\x00\x00\x00"; - -107 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -108 -JsObje - - gobj - = -doc -. -as -(); - -110 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -111 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -112 -REQUIRE -( -obj -. -size -() == 0); - -115 -SECTION -("two floats") { - -116 cڡ * - gput - = - -120 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -121 -JsObje - - gobj - = -doc -. -as -(); - -123 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -124 -REQUIRE -( -doc -. -is -< -JsObje ->()); - -125 -REQUIRE -( -obj -. -size -() == 2); - -126 -REQUIRE -( -obj -["zero"] == 0.0f); - -127 -REQUIRE -( -obj -["pi"] == 3.14f); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeStaticVariant.cpp - -5  - ~ - -6  - ~ - -8 - gme - < -size_t - - gCacy -> - -9  - $check -(cڡ * -put -, -DerliziE - -exed -) { - -10 -SticJsDocumt -< -Cacy -> -v -; - -12 -DerliziE - -r - = - `derlizeMsgPack -( -v -, -put -); - -14 - `CAPTURE -( -put -); - -15 - `REQUIRE -( -r - = -exed -); - -16 - } -} - -18 - gme - < -size_t - - gSize -> - -19  - $checkSg -(cڡ * -put -, -DerliziE - -exed -) { - -20 -check -< - `JSON_STRING_SIZE -( -Size -)>( -put -, -exed -); - -21 - } -} - -23 -TEST_CASE -("deserializeMsgPack(StaticJsonDocument&)") { - -24 -SECTION -("single valueslways fit") { - -25 - gcheck -<0>("\xc0", - gDerliziE -:: -Ok -); - -26 - gcheck -<0>("\xc2", - gDerliziE -:: -Ok -); - -27 - gcheck -<0>("\xc3", - gDerliziE -:: -Ok -); - -28 - gcheck -<0>("\xcc\x00", - gDerliziE -:: -Ok -); - -29 - gcheck -<0>("\xcd\x30\x39", - gDerliziE -:: -Ok -); - -30 - gcheck -<0>("\xCE\x12\x34\x56\x78", - gDerliziE -:: -Ok -); - -33 -SECTION -("fixstr") { - -34 - gcheckSg -<8>("\xA0", - gDerliziE -:: -Ok -); - -35 - gcheckSg -<8>("\xA7ZZZZZZZ", - gDerliziE -:: -Ok -); - -36 - gcheckSg -<8>("\xA8ZZZZZZZZ", - gDerliziE -:: -NoMemy -); - -37 - gcheckSg -<16>("\xAFZZZZZZZZZZZZZZZ", - gDerliziE -:: -Ok -); - -38 - gcheckSg -<16>("\xB0ZZZZZZZZZZZZZZZZ", - gDerliziE -:: -NoMemy -); - -41 -SECTION -("str 8") { - -42 - gcheckSg -<8>("\xD9\x00", - gDerliziE -:: -Ok -); - -43 - gcheckSg -<8>("\xD9\x07ZZZZZZZ", - gDerliziE -:: -Ok -); - -44 - gcheckSg -<8>("\xD9\x08ZZZZZZZZ", - gDerliziE -:: -NoMemy -); - -45 - gcheckSg -<16>("\xD9\x0FZZZZZZZZZZZZZZZ", - gDerliziE -:: -Ok -); - -46 - gcheckSg -<16>("\xD9\x10ZZZZZZZZZZZZZZZZ", - gDerliziE -:: -NoMemy -); - -49 -SECTION -("str 16") { - -50 - gcheckSg -<8>("\xDA\x00\x00", - gDerliziE -:: -Ok -); - -51 - gcheckSg -<8>("\xDA\x00\x07ZZZZZZZ", - gDerliziE -:: -Ok -); - -52 - gcheckSg -<8>("\xDA\x00\x08ZZZZZZZZ", - gDerliziE -:: -NoMemy -); - -53 - gcheckSg -<16>("\xDA\x00\x0FZZZZZZZZZZZZZZZ", - gDerliziE -:: -Ok -); - -54 - gcheckSg -<16>("\xDA\x00\x10ZZZZZZZZZZZZZZZZ", - -55 - gDerliziE -:: -NoMemy -); - -58 -SECTION -("str 32") { - -59 - gcheckSg -<8>("\xDB\x00\x00\x00\x00", - gDerliziE -:: -Ok -); - -60 - gcheckSg -<8>("\xDB\x00\x00\x00\x07ZZZZZZZ", - gDerliziE -:: -Ok -); - -61 - gcheckSg -<8>("\xDB\x00\x00\x00\x08ZZZZZZZZ", - -62 - gDerliziE -:: -NoMemy -); - -63 - gcheckSg -<16>("\xDB\x00\x00\x00\x0FZZZZZZZZZZZZZZZ", - -64 - gDerliziE -:: -Ok -); - -65 - gcheckSg -<16>("\xDB\x00\x00\x00\x10ZZZZZZZZZZZZZZZZ", - -66 - gDerliziE -:: -NoMemy -); - -69 -SECTION -("fixarray") { - -70 - gcheck -< -JSON_ARRAY_SIZE -(0)>("\x90", - gDerliziE -:: -Ok -); - -71 - gcheck -< -JSON_ARRAY_SIZE -(0)>("\x91\x01", - -72 - gDerliziE -:: -NoMemy -); - -73 - gcheck -< -JSON_ARRAY_SIZE -(1)>("\x91\x01", - gDerliziE -:: -Ok -); - -74 - gcheck -< -JSON_ARRAY_SIZE -(1)>("\x92\x01\x02", - -75 - gDerliziE -:: -NoMemy -); - -78 -SECTION -("array 16") { - -79 - gcheck -< -JSON_ARRAY_SIZE -(0)>("\xDC\x00\x00", - gDerliziE -:: -Ok -); - -80 - gcheck -< -JSON_ARRAY_SIZE -(0)>("\xDC\x00\x01\x01", - -81 - gDerliziE -:: -NoMemy -); - -82 - gcheck -< -JSON_ARRAY_SIZE -(1)>("\xDC\x00\x01\x01", - gDerliziE -:: -Ok -); - -83 - gcheck -< -JSON_ARRAY_SIZE -(1)>("\xDC\x00\x02\x01\x02", - -84 - gDerliziE -:: -NoMemy -); - -87 -SECTION -("array 32") { - -88 - gcheck -< -JSON_ARRAY_SIZE -(0)>("\xDD\x00\x00\x00\x00", - gDerliziE -:: -Ok -); - -89 - gcheck -< -JSON_ARRAY_SIZE -(0)>("\xDD\x00\x00\x00\x01\x01", - -90 - gDerliziE -:: -NoMemy -); - -91 - gcheck -< -JSON_ARRAY_SIZE -(1)>("\xDD\x00\x00\x00\x01\x01", - -92 - gDerliziE -:: -Ok -); - -93 - gcheck -< -JSON_ARRAY_SIZE -(1)>("\xDD\x00\x00\x00\x02\x01\x02", - -94 - gDerliziE -:: -NoMemy -); - -97 -SECTION -("fixmap") { - -98 -SECTION -("{}") { - -99 - gcheck -< -JSON_OBJECT_SIZE -(0)>("\x80", - gDerliziE -:: -Ok -); - -101 -SECTION -("{H:1}") { - -102 - gcheck -< -JSON_OBJECT_SIZE -(0)>("\x81\xA1H\x01", - -103 - gDerliziE -:: -NoMemy -); - -104 - gcheck -< -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(2)>( - -105 "\x81\xA1H\x01", - gDerliziE -:: -Ok -); - -107 -SECTION -("{H:1,W:2}") { - -108 - gcheck -< -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(2)>( - -109 "\x82\xA1H\x01\xA1W\x02", - gDerliziE -:: -NoMemy -); - -110 - gcheck -< -JSON_OBJECT_SIZE -(2+ 2 * -JSON_STRING_SIZE -(2)>( - -111 "\x82\xA1H\x01\xA1W\x02", - gDerliziE -:: -Ok -); - -115 -SECTION -("map 16") { - -116 -SECTION -("{}") { - -117 - gcheck -< -JSON_OBJECT_SIZE -(0)>("\xDE\x00\x00", - gDerliziE -:: -Ok -); - -119 -SECTION -("{H:1}") { - -120 - gcheck -< -JSON_OBJECT_SIZE -(0)>("\xDE\x00\x01\xA1H\x01", - -121 - gDerliziE -:: -NoMemy -); - -122 - gcheck -< -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(2)>( - -123 "\xDE\x00\x01\xA1H\x01", - gDerliziE -:: -Ok -); - -125 -SECTION -("{H:1,W:2}") { - -126 - gcheck -< -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(2)>( - -127 "\xDE\x00\x02\xA1H\x01\xA1W\x02", - gDerliziE -:: -NoMemy -); - -128 - gcheck -< -JSON_OBJECT_SIZE -(2) + 2 * JSON_OBJECT_SIZE(1)>( - -129 "\xDE\x00\x02\xA1H\x01\xA1W\x02", - gDerliziE -:: -Ok -); - -133 -SECTION -("map 32") { - -134 -SECTION -("{}") { - -135 - gcheck -< -JSON_OBJECT_SIZE -(0)>("\xDF\x00\x00\x00\x00", - -136 - gDerliziE -:: -Ok -); - -138 -SECTION -("{H:1}") { - -139 - gcheck -< -JSON_OBJECT_SIZE -(0)>("\xDF\x00\x00\x00\x01\xA1H\x01", - -140 - gDerliziE -:: -NoMemy -); - -141 - gcheck -< -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(2)>( - -142 "\xDF\x00\x00\x00\x01\xA1H\x01", - gDerliziE -:: -Ok -); - -144 -SECTION -("{H:1,W:2}") { - -145 - gcheck -< -JSON_OBJECT_SIZE -(1+ -JSON_STRING_SIZE -(2)>( - -147 - gDerliziE -:: -NoMemy -); - -148 - gcheck -< -JSON_OBJECT_SIZE -(2) + 2 * JSON_OBJECT_SIZE(1)>( - -149 "\xDF\x00\x00\x00\x02\xA1H\x01\xA1W\x02", - gDerliziE -:: -Ok -); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp - -5  - ~ - -6  - ~ - -8 - gme - < -tyme - - gT -,ym - gU -> - -9  - $check -(cڡ * -put -, -U - -exed -) { - -10 -DymicJsDocumt - - `doc -(4096); - -12 -DerliziE - -r - = - `derlizeMsgPack -( -doc -, -put -); - -14 - `REQUIRE -( -r - = -DerliziE -:: -Ok -); - -15 - `REQUIRE -( -doc -. -is -< -T ->()); - -16 - `REQUIRE -( -doc -. -as -< -T ->(= -exed -); - -17 - } -} - -19 #i -ARDUINOJSON_USE_LONG_LONG - == 0 - -20  - $checkNSu܋d -(cڡ * -put -) { - -21 -DymicJsDocumt - - `doc -(4096); - -22 -DerliziE - -r - = - `derlizeMsgPack -( -doc -, -put -); - -23 - `REQUIRE -( -r - = -DerliziE -:: -NSu܋d -); - -24 - } -} - -27  - $checkIsNu -(cڡ * -put -) { - -28 -DymicJsDocumt - - `doc -(4096); - -30 -DerliziE - -r - = - `derlizeMsgPack -( -doc -, -put -); - -32 - `REQUIRE -( -r - = -DerliziE -:: -Ok -); - -33 - `REQUIRE -( -doc -. -as -< -JsV ->(). - `isNu -()); - -34 - } -} - -36 -TEST_CASE -("deserialize MsgPack value") { - -37 -SECTION -("nil") { - -38 -checkIsNu -("\xc0"); - -41 -SECTION -("bool") { - -42 - gcheck -< - gbo ->("\xc2", - gl -); - -43 - gcheck -< - gbo ->("\xc3", - gue -); - -46 -SECTION -("positive fixint") { - -47 - gcheck -<>("\x00", 0); - -48 - gcheck -<>("\x7F", 127); - -51 -SECTION -("negative fixint") { - -52 - gcheck -<>("\xe0", -32); - -53 - gcheck -<>("\xff", -1); - -56 -SECTION -("uint 8") { - -57 - gcheck -<>("\xcc\x00", 0); - -58 - gcheck -<>("\xcc\xff", 255); - -61 -SECTION -("uint 16") { - -62 - gcheck -<>("\xcd\x00\x00", 0); - -63 - gcheck -<>("\xcd\xFF\xFF", 65535); - -64 - gcheck -<>("\xcd\x30\x39", 12345); - -67 -SECTION -("uint 32") { - -68 - gcheck -< - gut32_t ->("\xCE\x00\x00\x00\x00", 0x00000000U); - -69 - gcheck -< - gut32_t ->("\xCE\xFF\xFF\xFF\xFF", 0xFFFFFFFFU); - -70 - gcheck -< - gut32_t ->("\xCE\x12\x34\x56\x78", 0x12345678U); - -73 -SECTION -("uint 64") { - -74 #i -ARDUINOJSON_USE_LONG_LONG - - -75 - gcheck -< - gut64_t ->("\xCF\x00\x00\x00\x00\x00\x00\x00\x00", 0U); - -76 - gcheck -< - gut64_t ->("\xCF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", - -78 - gcheck -< - gut64_t ->("\xCF\x12\x34\x56\x78\x9A\xBC\xDE\xF0", - -81 -checkNSu܋d -("\xCF\x00\x00\x00\x00\x00\x00\x00\x00"); - -82 -checkNSu܋d -("\xCF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); - -83 -checkNSu܋d -("\xCF\x12\x34\x56\x78\x9A\xBC\xDE\xF0"); - -87 -SECTION -("int 8") { - -88 - gcheck -<>("\xd0\x00", 0); - -89 - gcheck -<>("\xd0\xff", -1); - -92 -SECTION -("int 16") { - -93 - gcheck -<>("\xD1\x00\x00", 0); - -94 - gcheck -<>("\xD1\xFF\xFF", -1); - -95 - gcheck -<>("\xD1\xCF\xC7", -12345); - -98 -SECTION -("int 32") { - -99 - gcheck -<>("\xD2\x00\x00\x00\x00", 0); - -100 - gcheck -<>("\xD2\xFF\xFF\xFF\xFF", -1); - -101 - gcheck -<>("\xD2\xB6\x69\xFD\x2E", -1234567890); - -104 -SECTION -("int 64") { - -105 #i -ARDUINOJSON_USE_LONG_LONG - - -106 - gcheck -< - gt64_t ->("\xD3\x00\x00\x00\x00\x00\x00\x00\x00", -t64_t -(0U)); - -107 - gcheck -< - gt64_t ->("\xD3\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", - -108 -t64_t -(0xFFFFFFFFFFFFFFFFU)); - -109 - gcheck -< - gt64_t ->("\xD3\x12\x34\x56\x78\x9A\xBC\xDE\xF0", - -110 -t64_t -(0x123456789ABCDEF0)); - -112 -checkNSu܋d -("\xD3\x00\x00\x00\x00\x00\x00\x00\x00"); - -113 -checkNSu܋d -("\xD3\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); - -114 -checkNSu܋d -("\xD3\x12\x34\x56\x78\x9A\xBC\xDE\xF0"); - -118 -SECTION -("float 32") { - -119 - gcheck -<>("\xCA\x00\x00\x00\x00", 0.0f); - -120 - gcheck -<>("\xCA\x40\x48\xF5\xC3", 3.14f); - -123 -SECTION -("float 64") { - -124 - gcheck -<>("\xCB\x00\x00\x00\x00\x00\x00\x00\x00", 0.0); - -125 - gcheck -<>("\xCB\x40\x09\x21\xCA\xC0\x83\x12\x6F", 3.1415); - -128 -SECTION -("fixstr") { - -129 - gcheck -("\xA0", - gd -:: -rg -("")); - -130 - gcheck -("\xABhlwld", - gd -:: -rg -("hello world")); - -131 - gcheck -("\xBFhello world hello world hello !", - -132 - gd -:: -rg -("hello world hello world hello !")); - -135 -SECTION -("str 8") { - -136 - gcheck -("\xd9\x05hlo", - gd -:: -rg -("hello")); - -139 -SECTION -("str 16") { - -140 - gcheck -("\xda\x00\x05hlo", - gd -:: -rg -("hello")); - -143 -SECTION -("str 32") { - -144 - gcheck -("\xdb\x00\x00\x00\x05hlo", - gd -:: -rg -("hello")); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 - gme - < -tyme - - gT -> - -11  - $check -(cڡ * -put -, -T - -exed -) { - -12 -T - -au -; - -13 -ut8_t -* -f - = -t_ -(& -au -); - -14 cڡ -ut8_t -* -d - = -t_ -( -put -); - -15 - `doubToFlt -( -d -, -f -); - -16 - `fixEndss -( -au -); - -17 - `CHECK -( -au - = -exed -); - -18 - } -} - -20 -TEST_CASE -("doubleToFloat()") { - -21 -check -("\x40\x09\x21\xCA\xC0\x83\x12\x6F", 3.1415f); - -22 -check -("\x00\x00\x00\x00\x00\x00\x00\x00", 0.0f); - -23 -check -("\x80\x00\x00\x00\x00\x00\x00\x00", -0.0f); - -24 -check -("\xC0\x5E\xDC\xCC\xCC\xCC\xCC\xCD", -123.45f); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/incompleteInput.cpp - -5  - ~ - -6  - ~ - -8 -DerliziE - - $derlize -(cڡ * -put -, -size_t - -n -) { - -9 -DymicJsDocumt - - `doc -(4096); - -11  - `derlizeMsgPack -( -doc -, -put -, -n -); - -12 - } -} - -14  - $checkASizes -(cڡ * -put -, -size_t - -n -) { - -15 - `REQUIRE -( - `derlize -( -put -, -n -= -DerliziE -:: -Ok -); - -17 -- -n -) { - -18 - `REQUIRE -( - `derlize -( -put -, -n -= -DerliziE -:: -IncomeIut -); - -20 - } -} - -22 -TEST_CASE -("deserializeMsgPack()eturns IncompleteInput") { - -23 -SECTION -("empty input") { - -24 -checkASizes -("\x00", 1); - -27 -SECTION -("fixarray") { - -28 -checkASizes -("\x91\x01", 2); - -31 -SECTION -("array 16") { - -32 -checkASizes -("\xDC\x00\x01\x01", 4); - -35 -SECTION -("array 32") { - -36 -checkASizes -("\xDD\x00\x00\x00\x01\x01", 6); - -39 -SECTION -("fixmap") { - -40 -checkASizes -("\x81\xA3one\x01", 6); - -43 -SECTION -("map 16") { - -44 -checkASizes -("\xDE\x00\x01\xA3one\x01", 8); - -47 -SECTION -("map 32") { - -48 -checkASizes -("\xDF\x00\x00\x00\x01\xA3one\x01", 10); - -49 -checkASizes -("\xDF\x00\x00\x00\x01\xd9\x03one\x01", 11); - -52 -SECTION -("uint 8") { - -53 -checkASizes -("\xcc\x01", 2); - -56 -SECTION -("uint 16") { - -57 -checkASizes -("\xcd\x00\x01", 3); - -60 -SECTION -("uint 32") { - -61 -checkASizes -("\xCE\x00\x00\x00\x01", 5); - -64 #i -ARDUINOJSON_USE_LONG_LONG - - -65 -SECTION -("uint 64") { - -66 -checkASizes -("\xCF\x00\x00\x00\x00\x00\x00\x00\x00", 9); - -70 -SECTION -("int 8") { - -71 -checkASizes -("\xD0\x01", 2); - -74 -SECTION -("int 16") { - -75 -checkASizes -("\xD1\x00\x01", 3); - -78 -SECTION -("int 32") { - -79 -checkASizes -("\xD2\x00\x00\x00\x01", 5); - -82 #i -ARDUINOJSON_USE_LONG_LONG - - -83 -SECTION -("int 64") { - -84 -checkASizes -("\xD3\x00\x00\x00\x00\x00\x00\x00\x00", 9); - -88 -SECTION -("float 32") { - -89 -checkASizes -("\xCA\x40\x48\xF5\xC3", 5); - -92 -SECTION -("float 64") { - -93 -checkASizes -("\xCB\x40\x09\x21\xCA\xC0\x83\x12\x6F", 9); - -96 -SECTION -("fixstr") { - -97 -checkASizes -("\xABhello world", 12); - -100 -SECTION -("str 8") { - -101 -checkASizes -("\xd9\x05hello", 7); - -104 -SECTION -("str 16") { - -105 -checkASizes -("\xda\x00\x05hello", 8); - -108 -SECTION -("str 32") { - -109 -checkASizes -("\xdb\x00\x00\x00\x05hello", 10); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp - -5  - ~ - -6  - ~ - -8  - ~"CuomRd.h -" - -10 -TEST_CASE -("deserializeMsgPack(const std::string&)") { - -11 -DymicJsDocumt - -doc -(4096); - -13 -SECTION -("shouldccept const string") { - -14 cڡ - gd -:: -rg - -put -("\x92\x01\x02"); - -16 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -18 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -21 -SECTION -("shouldcceptemporary string") { - -22 -DerliziE - - gr - = - -23 -derlizeMsgPack -( -doc -, -d -:: -rg -("\x92\x01\x02")); - -25 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -28 -SECTION -("should duplicate content") { - -29 - gd -:: -rg - -put -("\x91\xA5hello"); - -31 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -32 - gput -[2] = 'X'; - -34 -JsAay - - gy - = -doc -. -as -(); - -35 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -36 -REQUIRE -( -d -:: -rg -("hlo"= -y -[0]); - -39 -SECTION -("shouldccept zero in input") { - -40 -DerliziE - - gr - = - -41 -derlizeMsgPack -( -doc -, -d -:: -rg -("\x92\x00\x02", 3)); - -43 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -44 -JsAay - - gr - = -doc -. -as -(); - -45 -REQUIRE -( -r -[0] == 0); - -46 -REQUIRE -( -r -[1] == 2); - -50 -TEST_CASE -("deserializeMsgPack(std::istream&)") { - -51 -DymicJsDocumt - -doc -(4096); - -53 -SECTION -("shouldccept zero in input") { - -54 - gd -:: -irgam - -put -( -d -:: -rg -("\x92\x00\x02", 3)); - -56 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -58 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -59 -JsAay - - gr - = -doc -. -as -(); - -60 -REQUIRE -( -r -[0] == 0); - -61 -REQUIRE -( -r -[1] == 2); - -64 -SECTION -("should detect incomplete input") { - -65 - gd -:: -irgam - -put -("\x92\x00\x02"); - -67 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -put -); - -69 -REQUIRE -( -r - = -DerliziE -:: -IncomeIut -); - -73 #ifde -HAS_VARIABLE_LENGTH_ARRAY - - -74 -TEST_CASE -("deserializeMsgPack(VLA)") { - -75  - gi - = 16; - -76  - gv -[ -i -]; - -77 -memy -( -v -, "\xDE\x00\x01\xA5Hello\xA5world", 15); - -79 - gSticJsDocumt -< -JSON_OBJECT_SIZE -(1)> - gdoc -; - -80 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -v -); - -82 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -86 -TEST_CASE -("deserializeMsgPack(CustomReader)") { - -87 -DymicJsDocumt - -doc -(4096); - -88 -CuomRd - -ad -("\x92\xA5Hello\xA5world"); - -89 -DerliziE - - gr - = -derlizeMsgPack -( -doc -, -ad -); - -91 -REQUIRE -( -r - = -DerliziE -:: -Ok -); - -92 -REQUIRE -( -doc -. -size -() == 2); - -93 -REQUIRE -( -doc -[0] == "Hello"); - -94 -REQUIRE -( -doc -[1] == "world"); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp - -5  - ~ - -6  - ~ - -8  - #SHOULD_WORK -( -exessi - - `REQUIRE -( -DerliziE -:: -Ok - =exessi); - - ) - -9  - #SHOULD_FAIL -( -exessi -) \ - -10 - `REQUIRE -( -DerliziE -:: -TooDp - = -exessi -); - - ) - -12 -TEST_CASE -("JsonDeserializeresting") { - -13 -DymicJsDocumt - -doc -(4096); - -15 -SECTION -("Input = const char*") { - -16 -SECTION -("limit = 0") { - -17 - gDerliziOi -:: -NegLim - -ág -(0); - -18 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, "\xA1H", -ág -)); - -19 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x90", -ág -)); - -20 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x80", -ág -)); - -23 -SECTION -("limit = 1") { - -24 - gDerliziOi -:: -NegLim - -ág -(1); - -25 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, "\x90", -ág -)); - -26 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, "\x80", -ág -)); - -27 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x81\xA1H\x80", -ág -)); - -28 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x91\x90", -ág -)); - -32 -SECTION -("char*nd size_t") { - -33 -SECTION -("limit = 0") { - -34 - gDerliziOi -:: -NegLim - -ág -(0); - -35 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, "\xA1H", 2, -ág -)); - -36 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x90", 1, -ág -)); - -37 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x80", 1, -ág -)); - -40 -SECTION -("limit = 1") { - -41 - gDerliziOi -:: -NegLim - -ág -(1); - -42 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, "\x90", 1, -ág -)); - -43 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, "\x80", 1, -ág -)); - -44 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x81\xA1H\x80", 4, -ág -)); - -45 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, "\x91\x90", 2, -ág -)); - -49 -SECTION -("Input = std::string") { - -50 -usg - - gd -:: -rg -; - -52 -SECTION -("limit = 0") { - -53 - gDerliziOi -:: -NegLim - -ág -(0); - -54 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, -rg -("\xA1H"), -ág -)); - -55 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, -rg -("\x90"), -ág -)); - -56 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, -rg -("\x80"), -ág -)); - -59 -SECTION -("limit = 1") { - -60 - gDerliziOi -:: -NegLim - -ág -(1); - -61 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, -rg -("\x90"), -ág -)); - -62 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, -rg -("\x80"), -ág -)); - -63 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, -rg -("\x81\xA1H\x80"), -ág -)); - -64 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, -rg -("\x91\x90"), -ág -)); - -68 -SECTION -("Input = std::istream") { - -69 -SECTION -("limit = 0") { - -70 - gDerliziOi -:: -NegLim - -ág -(0); - -71 - gd -:: -irgam - -good -("\xA1H"); - -72 - gd -:: -irgam - -bad -("\x90"); - -73 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, -good -, -ág -)); - -74 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, -bad -, -ág -)); - -77 -SECTION -("limit = 1") { - -78 - gDerliziOi -:: -NegLim - -ág -(1); - -79 - gd -:: -irgam - -good -("\x90"); - -80 - gd -:: -irgam - -bad -("\x91\x90"); - -81 -SHOULD_WORK -( -derlizeMsgPack -( -doc -, -good -, -ág -)); - -82 -SHOULD_FAIL -( -derlizeMsgPack -( -doc -, -bad -, -ág -)); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/notSupported.cpp - -5  - ~ - -6  - ~ - -8  - $checkNSu܋d -(cڡ * -put -) { - -9 -DymicJsDocumt - - `doc -(4096); - -11 -DerliziE - -r - = - `derlizeMsgPack -( -doc -, -put -); - -13 - `REQUIRE -( -r - = -DerliziE -:: -NSu܋d -); - -14 - } -} - -16 -TEST_CASE -("deserializeMsgPack()eturn NotSupported") { - -17 -SECTION -("bin 8") { - -18 -checkNSu܋d -("\xc4"); - -21 -SECTION -("bin 16") { - -22 -checkNSu܋d -("\xc5"); - -25 -SECTION -("bin 32") { - -26 -checkNSu܋d -("\xc6"); - -29 -SECTION -("ext 8") { - -30 -checkNSu܋d -("\xc7"); - -33 -SECTION -("ext 16") { - -34 -checkNSu܋d -("\xc8"); - -37 -SECTION -("ext 32") { - -38 -checkNSu܋d -("\xc9"); - -41 -SECTION -("fixext 1") { - -42 -checkNSu܋d -("\xd4"); - -45 -SECTION -("fixext 2") { - -46 -checkNSu܋d -("\xd5"); - -49 -SECTION -("fixext 4") { - -50 -checkNSu܋d -("\xd6"); - -53 -SECTION -("fixext 8") { - -54 -checkNSu܋d -("\xd7"); - -57 -SECTION -("fixext 16") { - -58 -checkNSu܋d -("\xd8"); - -61 -SECTION -("unsupported inrray") { - -62 -checkNSu܋d -("\x91\xc4"); - -65 -SECTION -("unsupported in map") { - -66 -checkNSu܋d -("\x81\xc4\x00\xA1H"); - -67 -checkNSu܋d -("\x81\xA1H\xc4\x00"); - -70 -SECTION -("integers key") { - -71 -checkNSu܋d -("\x81\x01\xA1H"); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("serialize MsgPacko various destinationypes") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsObje - - gobje - = -doc -. -to -(); - -11 - gobje -["hello"] = "world"; - -12 cڡ * - gexed_su - = "\x81\xA5hello\xA5world"; - -13 cڡ -size_t - - gexed_ngth - = 13; - -15 -SECTION -("std::string") { - -16 - gd -:: -rg - -su -; - -17 -size_t - - gn - = -rlizeMsgPack -( -obje -, -su -); - -19 -REQUIRE -( -exed_su - = -su -); - -20 -REQUIRE -( -exed_ngth - = -n -); - -32 -SECTION -("char[]") { - -33  - gsu -[64]; - -34 -size_t - - gn - = -rlizeMsgPack -( -obje -, -su -); - -36 -REQUIRE -( -d -:: -rg -( -exed_su -= -su -); - -37 -REQUIRE -( -exed_ngth - = -n -); - -40 -SECTION -("char*") { - -41  - gsu -[64]; - -42 -size_t - - gn - = -rlizeMsgPack -( -obje -, -su -, 64); - -44 -REQUIRE -( -d -:: -rg -( -exed_su -= -su -); - -45 -REQUIRE -( -exed_ngth - = -n -); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp - -5  - ~ - -6  - ~ - -8 -TEST_CASE -("measureMsgPack()") { - -9 -DymicJsDocumt - -doc -(4096); - -10 -JsObje - - gobje - = -doc -. -to -(); - -11 - gobje -["hello"] = "world"; - -13 -REQUIRE -( -msuMsgPack -( -doc -) == 13); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/misc.cpp - -1  - ~ - -2  - ~ - -3  - ~ - -5 - gme - < -tyme - - gT -> - -6  - $check -( -T - -vue -, cڡ -d -:: -rg - & -exed -) { - -7 -DymicJsDocumt - - `doc -(4096); - -8 -doc -. -to -< -JsV ->(). - `t -( -vue -); - -9  -bufr -[256] = ""; - -10 -size_t - -tuVue - = - `rlizeMsgPack -( -doc -, -bufr -, (buffer)); - -11 - `REQUIRE -( -exed - = -bufr -); - -12 - `REQUIRE -( -exed -. - `size -(= -tuVue -); - -13 - } -} - -15 -TEST_CASE -("serializeMsgPack(MemberProxy)") { - -16 -DymicJsDocumt - -doc -(4096); - -17 -derlizeJs -( -doc -, "{\"hello\":42}"); - -18 -JsObje - - gobj - = -doc -. -as -(); - -19 - gd -:: -rg - -su -; - -21 -rlizeMsgPack -( -obj -["hlo"], -su -); - -23 -REQUIRE -( -su - == "*"); - -26 -TEST_CASE -("serializeMsgPack(ElementProxy)") { - -27 -DymicJsDocumt - -doc -(4096); - -28 -derlizeJs -( -doc -, "[42]"); - -29 -JsAay - - gr - = -doc -. -as -(); - -30 - gd -:: -rg - -su -; - -32 -rlizeMsgPack -( -r -[0], -su -); - -34 -REQUIRE -( -su - == "*"); - -37 -TEST_CASE -("serializeMsgPack(JsonVariantSubscript)") { - -38 -DymicJsDocumt - -doc -(4096); - -39 -derlizeJs -( -doc -, "[42]"); - -40 -JsV - - gv - = -doc -. -as -(); - -41 - gd -:: -rg - -su -; - -43 -rlizeMsgPack -( -v -[0], -su -); - -45 -REQUIRE -( -su - == "*"); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp - -5  - ~ - -6  - ~ - -8  - $check -(cڡ -JsAay - -y -, cڡ * -exed_da -, - -9 -size_t - -exed_n -) { - -10 -d -:: -rg - - `exed -( -exed_da -,xed_d+ -exed_n -); - -11 -d -:: -rg - -au -; - -12 -size_t - -n - = - `rlizeMsgPack -( -y -, -au -); - -13 - `CAPTURE -( -y -); - -14 - `REQUIRE -( -n - = -exed_n -); - -15 - `REQUIRE -( -au - = -exed -); - -16 - } -} - -18 - gme - < -size_t - - gN -> - -19  -check -(cڡ -JsAay - -y -, cڡ (& -exed_da -)[ -N -]) { - -20 cڡ -size_t - - gexed_n - = -N - - 1; - -21 -check -( -y -, -exed_da -, -exed_n -); - -24  - $check -(cڡ -JsAay - -y -, cڡ -d -:: -rg -& -exed -) { - -25 - `check -( -y -, -exed -. - `da -(),xed. - `ngth -()); - -26 - } -} - -28 -TEST_CASE -("serialize MsgPackrray") { - -29 -DymicJsDocumt - -doc -( -JSON_ARRAY_SIZE -(65536)); - -30 -JsAay - - gy - = -doc -. -to -(); - -32 -SECTION -("empty") { - -33 -check -( -y -, "\x90"); - -36 -SECTION -("fixarray") { - -37 - gy -. -add -("hello"); - -38 - gy -. -add -("world"); - -40 -check -( -y -, "\x92\xA5hello\xA5world"); - -43 -SECTION -("array 16") { - -44  - gi - = 0; i < 16; i++ - gy -. -add -( -i -); - -46 -check -( -y -, - -51 -SECTION -("array 32") { - -52 cڡ * - gn - = 0; - -53  - gi - = 0; i < 65536; i++ - gy -. -add -( -n -); - -55 -check -( -y -, - -56 -d -:: -rg -("\xDD\x00\x01\x00\x00", 5) + std::string(65536, '\xc0')); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9  - $check -(cڡ -JsObje - -obje -, cڡ * -exed_da -, - -10 -size_t - -exed_n -) { - -11 -d -:: -rg - - `exed -( -exed_da -,xed_d+ -exed_n -); - -12 -d -:: -rg - -au -; - -13 -size_t - -n - = - `rlizeMsgPack -( -obje -, -au -); - -14 - `CAPTURE -( -obje -); - -15 - `REQUIRE -( -n - = -exed_n -); - -16 - `REQUIRE -( -au - = -exed -); - -17 - } -} - -19 - gme - < -size_t - - gN -> - -20  -check -(cڡ -JsObje - -obje -, cڡ (& -exed_da -)[ -N -]) { - -21 cڡ -size_t - - gexed_n - = -N - - 1; - -22 -check -( -obje -, -exed_da -, -exed_n -); - -25 -TEST_CASE -("serialize MsgPack object") { - -26 -DymicJsDocumt - -doc -(4096); - -27 -JsObje - - gobje - = -doc -. -to -(); - -29 -SECTION -("empty") { - -30 -check -( -obje -, "\x80"); - -33 -SECTION -("fixmap") { - -34 - gobje -["hello"] = "world"; - -36 -check -( -obje -, "\x81\xA5hello\xA5world"); - -39 -SECTION -("map 16") { - -40  - gi - = 0; i < 16; ++i) { - -41  - gkey -[16]; - -42 -rtf -( -key -, "i%X", -i -); - -43 - gobje -[ -key -] = -i -; - -46 -check -( -obje -, - -52 -SECTION -("serialized(const char*)") { - -53 - gobje -["hlo"] = -rlized -("\xDB\x00\x01\x00\x00", 5); - -54 -check -( -obje -, "\x81\xA5hello\xDB\x00\x01\x00\x00"); - -57 -SECTION -("serialized(std::string)") { - -58 - gobje -["hlo"] = -rlized -( -d -:: -rg -("\xDB\x00\x01\x00\x00", 5)); - -59 -check -( -obje -, "\x81\xA5hello\xDB\x00\x01\x00\x00"); - - @lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp - -5  - ~ - -6  - ~ - -8 - gme - < -tyme - - gT -> - -9  - $checkV -( -T - -vue -, cڡ * -exed_da -, - -10 -size_t - -exed_n -) { - -11 -DymicJsDocumt - - `doc -(4096); - -12 -JsV - -v - = -doc -. -to -(); - -13 -v -. - `t -( -vue -); - -14 -d -:: -rg - - `exed -( -exed_da -,xed_d+ -exed_n -); - -15 -d -:: -rg - -au -; - -16 -size_t - -n - = - `rlizeMsgPack -( -v -, -au -); - -17 - `CAPTURE -( -v -); - -18 - `REQUIRE -( -n - = -exed_n -); - -19 - `REQUIRE -( -au - = -exed -); - -20 - } -} - -22 - gme - < -tyme - - gT -, -size_t - - gN -> - -23  -checkV -( -T - -vue -, cڡ (& -exed_da -)[ -N -]) { - -24 cڡ -size_t - - gexed_n - = -N - - 1; - -25 -checkV -( -vue -, -exed_da -, -exed_n -); - -28 - gme - < -tyme - - gT -> - -29  - $checkV -( -T - -vue -, cڡ -d -:: -rg -& -exed -) { - -30 - `checkV -( -vue -, -exed -. - `da -(),xed. - `ngth -()); - -31 - } -} - -33 -TEST_CASE -("serialize MsgPack value") { - -34 -SECTION -("undefined") { - -35 -checkV -( -JsV -(), "\xC0"); - -38 -SECTION -("nil") { - -39 cڡ * - gn - = 0; - -40 -checkV -( -n -, "\xC0"); - -43 -SECTION -("bool") { - -44 -checkV -( -l -, "\xC2"); - -45 -checkV -( -ue -, "\xC3"); - -48 -SECTION -("positive fixint") { - -49 -checkV -(0, "\x00"); - -50 -checkV -(127, "\x7F"); - -53 -SECTION -("uint 8") { - -54 -checkV -(128, "\xCC\x80"); - -55 -checkV -(255, "\xCC\xFF"); - -58 -SECTION -("uint 16") { - -59 -checkV -(256, "\xCD\x01\x00"); - -60 -checkV -(0xFFFF, "\xCD\xFF\xFF"); - -63 -SECTION -("uint 32") { - -64 -checkV -(0x00010000U, "\xCE\x00\x01\x00\x00"); - -65 -checkV -(0x12345678U, "\xCE\x12\x34\x56\x78"); - -66 -checkV -(0xFFFFFFFFU, "\xCE\xFF\xFF\xFF\xFF"); - -69 #i -ARDUINOJSON_USE_LONG_LONG - - -70 -SECTION -("uint 64") { - -71 -checkV -(0x0001000000000000U, "\xCF\x00\x01\x00\x00\x00\x00\x00\x00"); - -72 -checkV -(0x123456789ABCDEF0U, "\xCF\x12\x34\x56\x78\x9A\xBC\xDE\xF0"); - -73 -checkV -(0xFFFFFFFFFFFFFFFFU, "\xCF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"); - -77 -SECTION -("negative fixint") { - -78 -checkV -(-1, "\xFF"); - -79 -checkV -(-32, "\xE0"); - -82 -SECTION -("int 8") { - -83 -checkV -(-33, "\xD0\xDF"); - -84 -checkV -(-128, "\xD0\x80"); - -87 -SECTION -("int 16") { - -88 -checkV -(-129, "\xD1\xFF\x7F"); - -89 -checkV -(-32768, "\xD1\x80\x00"); - -92 -SECTION -("int 32") { - -93 -checkV -(-32769, "\xD2\xFF\xFF\x7F\xFF"); - -94 -checkV -(-2147483647 - 1, "\xD2\x80\x00\x00\x00"); - -97 #i -ARDUINOJSON_USE_LONG_LONG - - -98 -SECTION -("int 64") { - -99 -checkV -( -t64_t -(0xFEDCBA9876543210), - -104 -SECTION -("float 32") { - -105 -checkV -(1.25, "\xCA\x3F\xA0\x00\x00"); - -108 -SECTION -("float 64") { - -109 -checkV -(3.1415, "\xCB\x40\x09\x21\xCA\xC0\x83\x12\x6F"); - -112 -SECTION -("fixstr") { - -113 -checkV -("", "\xA0"); - -114 -checkV -("hello world hello world hello !", - -118 -SECTION -("str 8") { - -119 -checkV -("hello world hello world hello !!", - -123 -SECTION -("str 16") { - -124 - gd -:: -rg - -sh܋ -(256, '?'); - -125 -checkV -( -sh܋ -. -c_r -(), -d -:: -rg -("\xDA\x01\x00", 3) + shortest); - -127 - gd -:: -rg - -lge -(65535, '?'); - -128 -checkV -( -lge -. -c_r -(), -d -:: -rg -("\xDA\xFF\xFF", 3) +ongest); - -131 -SECTION -("str 32") { - -132 - gd -:: -rg - -sh܋ -(65536, '?'); - -133 -checkV -( -sh܋ -. -c_r -(), - -134 -d -:: -rg -("\xDB\x00\x01\x00\x00", 5+ -sh܋ -); - -137 -SECTION -("serialized(const char*)") { - -138 -checkV -( -rlized -("\xDA\xFF\xFF"), "\xDA\xFF\xFF"); - -139 -checkV -( -rlized -("\xDB\x00\x01\x00\x00", 5), "\xDB\x00\x01\x00\x00"); - - @lib_standalone/ArduinoJson/extras/tests/Numbers/parseFloat.cpp - -5  - #ARDUINOJSON_USE_DOUBLE - 0 - - ) - -6  - #ARDUINOJSON_ENABLE_NAN - 1 - - ) - -7  - #ARDUINOJSON_ENABLE_INFINITY - 1 - - ) - -9  - ~ - -10  - ~ - -12 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -14 - gme - < -tyme - - gT -> - -15  - $checkFlt -(cڡ * -put -, -T - -exed -) { - -16 - `CAPTURE -( -put -); - -17 - `REQUIRE -( -rFlt -< -T ->( -put -= - `Arox -( -exed -)); - -18 - } -} - -20 - gme - < -tyme - - gT -> - -21  - $checkNaN -(cڡ * -put -) { - -22 - `CAPTURE -( -put -); - -23 -T - -su - = -rFlt -( -put -); - -24 - `REQUIRE -( -su - !=esult); - -25 - } -} - -27 - gme - < -tyme - - gT -> - -28  - $checkInf -(cڡ * -put -, -bo - -give -) { - -29 - `CAPTURE -( -put -); - -30 -T - -x - = -rFlt -( -put -); - -31 i( -give -) - -32 - `REQUIRE -( -x - < 0); - -34 - `REQUIRE -( -x - > 0); - -35 - `REQUIRE -( -x - == x); - -36 - `REQUIRE -( -x - * 2 == x); - -37 - } -} - -39 -TEST_CASE -("parseFloat()") { - -40 -SECTION -("Float_Short_NoExponent") { - -41 - gcheckFlt -<>("3.14", 3.14f); - -42 - gcheckFlt -<>("-3.14", -3.14f); - -43 - gcheckFlt -<>("+3.14", +3.14f); - -46 -SECTION -("Short_NoDot") { - -47 - gcheckFlt -<>("1E+38", 1E+38f); - -48 - gcheckFlt -<>("-1E+38", -1E+38f); - -49 - gcheckFlt -<>("+1E-38", +1E-38f); - -50 - gcheckFlt -<>("+1e+38", +1e+38f); - -51 - gcheckFlt -<>("-1e-38", -1e-38f); - -54 -SECTION -("Max") { - -55 - gcheckFlt -<>("340.2823e+36", 3.402823e+38f); - -56 - gcheckFlt -<>("34.02823e+37", 3.402823e+38f); - -57 - gcheckFlt -<>("3.402823e+38", 3.402823e+38f); - -58 - gcheckFlt -<>("0.3402823e+39", 3.402823e+38f); - -59 - gcheckFlt -<>("0.03402823e+40", 3.402823e+38f); - -60 - gcheckFlt -<>("0.003402823e+41", 3.402823e+38f); - -63 -SECTION -("VeryLong") { - -64 - gcheckFlt -<>("0.00000000000000000000000000000001", 1e-32f); - -65 - gcheckFlt -<>("100000000000000000000000000000000.0", 1e+32f); - -66 - gcheckFlt -<>( - -71 -SECTION -("MantissaTooLongToFit") { - -72 - gcheckFlt -<>("0.340282346638528861111111111111", 0.34028234663852886f); - -73 - gcheckFlt -<>("34028234663852886.11111111111111", 34028234663852886.0f); - -74 - gcheckFlt -<>("34028234.66385288611111111111111", 34028234.663852886f); - -76 - gcheckFlt -<>("-0.340282346638528861111111111111", - -78 - gcheckFlt -<>("-34028234663852886.11111111111111", - -80 - gcheckFlt -<>("-34028234.66385288611111111111111", - -84 -SECTION -("ExponentTooBig") { - -85 - gcheckInf -<>("1e39", - gl -); - -86 - gcheckInf -<>("-1e39", - gue -); - -87 - gcheckInf -<>("1e255", - gl -); - -88 - gcheckFlt -<>("1e-255", 0.0f); - -91 -SECTION -("NaN") { - -92 - gcheckNaN -<>("NaN"); - -93 - gcheckNaN -<>("nan"); - -96 -SECTION -("Infinity") { - -97 - gcheckInf -<>("Infy", - gl -); - -98 - gcheckInf -<>("+Infy", - gl -); - -99 - gcheckInf -<>("-Infy", - gue -); - -100 - gcheckInf -<>("f", - gl -); - -101 - gcheckInf -<>("+f", - gl -); - -102 - gcheckInf -<>("-f", - gue -); - -104 - gcheckInf -<>("1e300", - gl -); - -105 - gcheckInf -<>("-1e300", - gue -); - -109 -TEST_CASE -("parseFloat()") { - -110 -SECTION -("Short_NoExponent") { - -111 - gcheckFlt -<>("3.14", 3.14); - -112 - gcheckFlt -<>("-3.14", -3.14); - -113 - gcheckFlt -<>("+3.14", +3.14); - -116 -SECTION -("Short_NoDot") { - -117 - gcheckFlt -<>("1E+308", 1E+308); - -118 - gcheckFlt -<>("-1E+308", -1E+308); - -119 - gcheckFlt -<>("+1E-308", +1E-308); - -120 - gcheckFlt -<>("+1e+308", +1e+308); - -121 - gcheckFlt -<>("-1e-308", -1e-308); - -124 -SECTION -("Max") { - -125 - gcheckFlt -<>(".017976931348623147e+310", 1.7976931348623147e+308); - -126 - gcheckFlt -<>(".17976931348623147e+309", 1.7976931348623147e+308); - -127 - gcheckFlt -<>("1.7976931348623147e+308", 1.7976931348623147e+308); - -128 - gcheckFlt -<>("17.976931348623147e+307", 1.7976931348623147e+308); - -129 - gcheckFlt -<>("179.76931348623147e+306", 1.7976931348623147e+308); - -132 -SECTION -("Min") { - -133 - gcheckFlt -<>(".022250738585072014e-306", 2.2250738585072014e-308); - -134 - gcheckFlt -<>(".22250738585072014e-307", 2.2250738585072014e-308); - -135 - gcheckFlt -<>("2.2250738585072014e-308", 2.2250738585072014e-308); - -136 - gcheckFlt -<>("22.250738585072014e-309", 2.2250738585072014e-308); - -137 - gcheckFlt -<>("222.50738585072014e-310", 2.2250738585072014e-308); - -140 -SECTION -("VeryLong") { - -141 - gcheckFlt -<>("0.00000000000000000000000000000001", 1e-32); - -142 - gcheckFlt -<>("100000000000000000000000000000000.0", 1e+32); - -143 - gcheckFlt -<>( - -148 -SECTION -("MantissaTooLongToFit") { - -149 - gcheckFlt -<>("0.179769313486231571111111111111", 0.17976931348623157); - -150 - gcheckFlt -<>("17976931348623157.11111111111111", 17976931348623157.0); - -151 - gcheckFlt -<>("1797693.134862315711111111111111", 1797693.1348623157); - -153 - gcheckFlt -<>("-0.179769313486231571111111111111", - -155 - gcheckFlt -<>("-17976931348623157.11111111111111", - -157 - gcheckFlt -<>("-1797693.134862315711111111111111", - -161 -SECTION -("ExponentTooBig") { - -162 - gcheckInf -<>("1e309", - gl -); - -163 - gcheckInf -<>("-1e309", - gue -); - -164 - gcheckInf -<>("1e65535", - gl -); - -165 - gcheckFlt -<>("1e-65535", 0.0); - -168 -SECTION -("NaN") { - -169 - gcheckNaN -<>("NaN"); - -170 - gcheckNaN -<>("nan"); - - @lib_standalone/ArduinoJson/extras/tests/Numbers/parseInteger.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -11 - gme - < -tyme - - gT -> - -12  - $checkIeg -(cڡ * -put -, -T - -exed -) { - -13 - `CAPTURE -( -put -); - -14 -T - -au - = -rIeg -( -put -); - -15 - `REQUIRE -( -exed - = -au -); - -16 - } -} - -18 -TEST_CASE -("parseInteger()") { - -19 - gcheckIeg -< - gt8_t ->("-128", -128); - -20 - gcheckIeg -< - gt8_t ->("127", 127); - -21 - gcheckIeg -< - gt8_t ->("+127", 127); - -22 - gcheckIeg -< - gt8_t ->("3.14", 3); - -23 - gcheckIeg -< - gt8_t ->("x42", 0); - -24 - gcheckIeg -< - gt8_t ->("128", 0); - -25 - gcheckIeg -< - gt8_t ->("-129", 0); - -28 -TEST_CASE -("parseInteger()") { - -29 - gcheckIeg -< - gt16_t ->("-32768", -32768); - -30 - gcheckIeg -< - gt16_t ->("32767", 32767); - -31 - gcheckIeg -< - gt16_t ->("+32767", 32767); - -32 - gcheckIeg -< - gt16_t ->("3.14", 3); - -33 - gcheckIeg -< - gt16_t ->("x42", 0); - -34 - gcheckIeg -< - gt16_t ->("-32769", 0); - -35 - gcheckIeg -< - gt16_t ->("32768", 0); - -38 -TEST_CASE -("parseInteger()") { - -39 - gcheckIeg -< - gt32_t ->("-2147483648", (-2147483647 - 1)); - -40 - gcheckIeg -< - gt32_t ->("2147483647", 2147483647); - -41 - gcheckIeg -< - gt32_t ->("+2147483647", 2147483647); - -42 - gcheckIeg -< - gt32_t ->("3.14", 3); - -43 - gcheckIeg -< - gt32_t ->("x42", 0); - -44 - gcheckIeg -< - gt32_t ->("-2147483649", 0); - -45 - gcheckIeg -< - gt32_t ->("2147483648", 0); - -48 -TEST_CASE -("parseInteger()") { - -49 - gcheckIeg -< - gut8_t ->("0", 0); - -50 - gcheckIeg -< - gut8_t ->("255", 255); - -51 - gcheckIeg -< - gut8_t ->("+255", 255); - -52 - gcheckIeg -< - gut8_t ->("3.14", 3); - -53 - gcheckIeg -< - gut8_t ->("x42", 0); - -54 - gcheckIeg -< - gut8_t ->("-1", 0); - -55 - gcheckIeg -< - gut8_t ->("256", 0); - -58 -TEST_CASE -("parseInteger()") { - -59 - gcheckIeg -< - gut16_t ->("0", 0); - -60 - gcheckIeg -< - gut16_t ->("65535", 65535); - -61 - gcheckIeg -< - gut16_t ->("+65535", 65535); - -62 - gcheckIeg -< - gut16_t ->("3.14", 3); - -64 - gcheckIeg -< - gut16_t ->("x42", 0); - -65 - gcheckIeg -< - gut16_t ->("-1", 0); - -66 - gcheckIeg -< - gut16_t ->("65536", 0); - - @lib_standalone/ArduinoJson/extras/tests/Numbers/parseNumber.cpp - -5  - ~ - -6  - ~ - -8 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -10 -TEST_CASE -("Test uint32_t overflow") { - -11 - gPdNumb -<, - gut32_t -> - gf - = - -12 -rNumb -<, - gut32_t ->("4294967295"); - -13 - gPdNumb -<, - gut32_t -> - gcd - = - -14 -rNumb -<, - gut32_t ->("4294967296"); - -16 -REQUIRE -( -f -. -ty -(= -ut8_t -( -VALUE_IS_POSITIVE_INTEGER -)); - -17 -REQUIRE -( -cd -. -ty -(= -ut8_t -( -VALUE_IS_FLOAT -)); - -20 -TEST_CASE -("Invalid value") { - -21 - gPdNumb -<, - gut32_t -> - gsu - = -rNumb -<, uint32_t>("6a3"); - -23 -REQUIRE -( -su -. -ty -(= -ut8_t -( -VALUE_IS_NULL -)); - - @lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp - -5  - ~ - -6  - ~ - -7  - ~ - -9  - #ARDUINOJSON_ENABLE_NAN - 1 - - ) - -10  - #ARDUINOJSON_ENABLE_INFINITY - 1 - - ) - -11  - ~ - -12  - ~ - -14 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -16 - gme - < -tyme - - gTFlt -> - -17  - $check -( -TFlt - -put -, cڡ -d -:: -rg -& -exed -) { - -18 -d -:: -rg - -ouut -; - -19 -Wr -< -d -:: -rg -> - `sb -( -ouut -); - -20 -TextFmr -< -Wr -< -d -:: -rg -> > - `wr -( -sb -); - -21 -wr -. - `wreFlt -( -put -); - -22 - `REQUIRE -( -wr -. - `bysWrn -(= -ouut -. - `size -()); - -23 - `CHECK -( -exed - = -ouut -); - -24 - } -} - -26 -TEST_CASE -("TextFormatter::writeFloat(double)") { - -27 -SECTION -("Pi") { - -28 - gcheck -<>(3.14159265359, "3.141592654"); - -31 -SECTION -("Signaling NaN") { - -32  - gn - = -d -:: -numic_lims -<>:: -siglg_NaN -(); - -33 - gcheck -<>( - gn -, "NaN"); - -36 -SECTION -("Quiet NaN") { - -37  - gn - = -d -:: -numic_lims -<>:: -qut_NaN -(); - -38 - gcheck -<>( - gn -, "NaN"); - -41 -SECTION -("Infinity") { - -42  - gf - = -d -:: -numic_lims -<>:: -fy -(); - -43 - gcheck -<>( - gf -, "Infinity"); - -44 - gcheck -<>(- - gf -, "-Infinity"); - -47 -SECTION -("Zero") { - -48 - gcheck -<>(0.0, "0"); - -49 - gcheck -<>(-0.0, "0"); - -52 -SECTION -("Espilon") { - -53 - gcheck -<>(2.2250738585072014E-308, "2.225073859e-308"); - -54 - gcheck -<>(-2.2250738585072014E-308, "-2.225073859e-308"); - -57 -SECTION -("Max double") { - -58 - gcheck -<>(1.7976931348623157E+308, "1.797693135e308"); - -59 - gcheck -<>(-1.7976931348623157E+308, "-1.797693135e308"); - -62 -SECTION -("Bigxponent") { - -64 - gcheck -<>(1e255, "1e255"); - -65 - gcheck -<>(1e-255, "1e-255"); - -68 -SECTION -("Exponentation when <= 1e-5") { - -69 - gcheck -<>(1e-4, "0.0001"); - -70 - gcheck -<>(1e-5, "1e-5"); - -72 - gcheck -<>(-1e-4, "-0.0001"); - -73 - gcheck -<>(-1e-5, "-1e-5"); - -76 -SECTION -("Exponentation when >= 1e7") { - -77 - gcheck -<>(9999999.999, "9999999.999"); - -78 - gcheck -<>(10000000.0, "1e7"); - -80 - gcheck -<>(-9999999.999, "-9999999.999"); - -81 - gcheck -<>(-10000000.0, "-1e7"); - -84 -SECTION -("Rounding whenoo many decimals") { - -85 - gcheck -<>(0.000099999999999, "0.0001"); - -86 - gcheck -<>(0.0000099999999999, "1e-5"); - -87 - gcheck -<>(0.9999999996, "1"); - -90 -SECTION -("9 decimallaces") { - -91 - gcheck -<>(0.100000001, "0.100000001"); - -92 - gcheck -<>(0.999999999, "0.999999999"); - -94 - gcheck -<>(9.000000001, "9.000000001"); - -95 - gcheck -<>(9.999999999, "9.999999999"); - -98 -SECTION -("10 decimallaces") { - -99 - gcheck -<>(0.1000000001, "0.1"); - -100 - gcheck -<>(0.9999999999, "1"); - -102 - gcheck -<>(9.0000000001, "9"); - -103 - gcheck -<>(9.9999999999, "10"); - -107 -TEST_CASE -("TextFormatter::writeFloat(float)") { - -108 -SECTION -("Pi") { - -109 - gcheck -<>(3.14159265359f, "3.141593"); - -112 -SECTION -("999.9") { - -113 - gcheck -<>(999.9f, "999.9"); - -116 -SECTION -("24.3") { - -117 - gcheck -<>(24.3f, "24.3"); - - @lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeString.cpp - -5  - ~ - -7  - ~ - -8  - ~ - -10 -usg - -mea - - gARDUINOJSON_NAMESPACE -; - -12  - $check -(cڡ * -put -, -d -:: -rg - -exed -) { - -13  -ouut -[1024]; - -14 -SticSgWr - - `sb -( -ouut -, (output)); - -15 -TextFmr -< -SticSgWr -> - `wr -( -sb -); - -16 -wr -. - `wreSg -( -put -); - -17 - `REQUIRE -( -exed - = -ouut -); - -18 - `REQUIRE -( -wr -. - `bysWrn -(= -exed -. - `size -()); - -19 - } -} - -21 -TEST_CASE -("TextFormatter::writeString()") { - -22 -SECTION -("EmptyString") { - -23 -check -("", "\"\""); - -26 -SECTION -("QuotationMark") { - -27 -check -("\"", "\"\\\"\""); - -30 -SECTION -("ReverseSolidus") { - -31 -check -("\\", "\"\\\\\""); - -34 -SECTION -("Solidus") { - -35 -check -("/", "\"/\""); - -38 -SECTION -("Backspace") { - -39 -check -("\b", "\"\\b\""); - -42 -SECTION -("Formfeed") { - -43 -check -("\f", "\"\\f\""); - -46 -SECTION -("Newline") { - -47 -check -("\n", "\"\\n\""); - -50 -SECTION -("CarriageReturn") { - -51 -check -("\r", "\"\\r\""); - -54 -SECTION -("HorizontalTab") { - -55 -check -("\t", "\"\\t\""); - - @lib_standalone/ArduinoJson/extras/tests/catch/catch.cpp - -5  - #CATCH_CONFIG_MAIN - - - ) - -6  - ~"tch.h -" - - @lib_standalone/ArduinoJson/extras/tests/catch/catch.hpp - -11 #ide -TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED - - -12  - #TWOBLUECUBES_SINGLE_INCLUDE_CATCH_HPP_INCLUDED - - - ) - -14  - #TWOBLUECUBES_CATCH_HPP_INCLUDED - - - ) - -16 #ifde -__g__ - - -17 #agm -g - -syem_hd - - -18 #i -defed - -__GNUC__ - - -19 #agm -GCC - -syem_hd - - -24 #ifde -__g__ - - -25 #ifde -__ICC - - -26 #agm -wng -( -push -) - -27 #agm -wng -( -dib -: 161 1682) - -29 #agm -g - -dgnoic - -igned - "-Wglobal-constructors" - -30 #agm -g - -dgnoic - -igned - "-Wvariadic-macros" - -31 #agm -g - -dgnoic - -igned - "-Wc99-extensions" - -32 #agm -g - -dgnoic - -igned - "-Wunused-variable" - -33 #agm -g - -dgnoic - -push - - -34 #agm -g - -dgnoic - -igned - "-Wpadded" - -35 #agm -g - -dgnoic - -igned - "-Wc++98-compat" - -36 #agm -g - -dgnoic - -igned - "-Wc++98-compat-pedantic" - -37 #agm -g - -dgnoic - -igned - "-Wswitch-enum" - -38 #agm -g - -dgnoic - -igned - "-Wcovered-switch-default" - -40 #i -defed - -__GNUC__ - - -41 #agm -GCC - -dgnoic - -igned - "-Wvariadic-macros" - -42 #agm -GCC - -dgnoic - -igned - "-Wunused-variable" - -43 #agm -GCC - -dgnoic - -igned - "-Wparentheses" - -45 #agm -GCC - -dgnoic - -push - - -46 #agm -GCC - -dgnoic - -igned - "-Wpadded" - -48 #i -defed -( -CATCH_CONFIG_MAIN -|| defed( -CATCH_CONFIG_RUNNER -) - -49  - #CATCH_IMPL - - - ) - -52 #ifde -CATCH_IMPL - - -53 #ide -CLARA_CONFIG_MAIN - - -54  - #CLARA_CONFIG_MAIN_NOT_DEFINED - - - ) - -55  - #CLARA_CONFIG_MAIN - - - ) - -60  - #TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_H_INCLUDED - - - ) - -63  - #TWOBLUECUBES_CATCH_COMMON_H_INCLUDED - - - ) - -66  - #TWOBLUECUBES_CATCH_COMPILER_CAPABILITIES_HPP_INCLUDED - - - ) - -100 #ifde -__lulus - - -102 #i -__lulus - >= 201103L - -103  - #CATCH_CPP11_OR_GREATER - - - ) - -106 #i -__lulus - >= 201402L - -107  - #CATCH_CPP14_OR_GREATER - - - ) - -112 #ifde -__g__ - - -114 #i -__has_u -( -cxx_nuαr -) - -115  - #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -118 #i -__has_u -( -cxx_nx -) - -119  - #CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT - - - ) - -122 #i -defed -( -CATCH_CPP11_OR_GREATER -) - -123  - #CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -124 - `_Pgma -( "clang diagnosticush" ) \ - -125 - `_Pgma -"g dgnoiigned \"-Wex-time-derus\"" ) - - ) - -126  - #CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - \ - -127 - `_Pgma -"g dgnoip" ) - - ) - -129  - #CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS - \ - -130 - `_Pgma -( "clang diagnosticush" ) \ - -131 - `_Pgma -"g dgnoiigned \"-Whes\"" ) - - ) - -132  - #CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS - \ - -133 - `_Pgma -"g dgnoip" ) - - ) - -140 #i -defed -( -__CYGWIN__ -|| defed( -__QNX__ -) - -142 #i! -defed -( -CATCH_CONFIG_POSIX_SIGNALS -) - -143  - #CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS - - - ) - -148 #ifde -__OS400__ - - -149  - #CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS - - - ) - -150  - #CATCH_CONFIG_COLOUR_NONE - - - ) - -155 #ifde -__CYGWIN__ - - -159  - #_BSD_SOURCE - - - ) - -165 #ifde -__BORLANDC__ - - -171 #ifde -__EDG_VERSION__ - - -177 #ifde -__DMC__ - - -183 #ifde -__GNUC__ - - -185 #i -__GNUC__ - =4 && -__GNUC_MINOR__ - >6 && -defed -( -__GXX_EXPERIMENTAL_CXX0X__ -) - -186  - #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -196 #ifde -_MSC_VER - - -198  - #CATCH_INTERNAL_CONFIG_WINDOWS_SEH - - - ) - -200 #i( -_MSC_VER - >= 1600) - -201  - #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -202  - #CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR - - - ) - -205 #i( -_MSC_VER - >= 1900 ) - -206  - #CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT - - - ) - -207  - #CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS - - - ) - -208  - #CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE - - - ) - -209  - #CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS - - - ) - -217 #i -defed - -_MSC_VER - && _MSC_VER > 1400 && !defed -__EDGE__ -) || \ - -218 -defed - - g__WAVE__ - && - g__WAVE_HAS_VARIADICS - ) || \ - -219 -defed - - g__GNUC__ - && __GNUC__ >= 3 ) || \ - -220 ! -defed - -__lulus - && -__STDC_VERSION__ - >= 199901L || __cplusplus >= 201103L ) - -222  - #CATCH_INTERNAL_CONFIG_VARIADIC_MACROS - - - ) - -227 #i -defed - -_MSC_VER - && _MSC_VER >= 1300 ) || \ - -228 -defed - -__GNUC__ - && ( __GNUC__ > 4 || (__GNUC__ =4 && -__GNUC_MINOR__ - >= 3 )) ) || \ - -229 -defed - -__g__ - && -__g_maj__ - >= 3 ) - -231  - #CATCH_INTERNAL_CONFIG_COUNTER - - - ) - -239 #i -defed -( -CATCH_CPP11_OR_GREATER -) - -241 #i! -defed -( -CATCH_INTERNAL_CONFIG_CPP11_NULLPTR -) - -242  - #CATCH_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -245 #ide -CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT - - -246  - #CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT - - - ) - -249 #ide -CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS - - -250  - #CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS - - - ) - -253 #ide -CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM - - -254  - #CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM - - - ) - -257 #ide -CATCH_INTERNAL_CONFIG_CPP11_TUPLE - - -258  - #CATCH_INTERNAL_CONFIG_CPP11_TUPLE - - - ) - -261 #ide -CATCH_INTERNAL_CONFIG_VARIADIC_MACROS - - -262  - #CATCH_INTERNAL_CONFIG_VARIADIC_MACROS - - - ) - -265 #i! -defed -( -CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG -) - -266  - #CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG - - - ) - -269 #i! -defed -( -CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE -) - -270  - #CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE - - - ) - -272 #i! -defed -( -CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR -) - -273  - #CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR - - - ) - -275 #i! -defed -( -CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE -) - -276  - #CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE - - - ) - -278 #i! -defed -( -CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS -) - -279  - #CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS - - - ) - -285 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_NULLPTR -&& !defed( -CATCH_CONFIG_CPP11_NO_NULLPTR -&& !defed( -CATCH_CONFIG_CPP11_NULLPTR -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -286  - #CATCH_CONFIG_CPP11_NULLPTR - - - ) - -288 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_NOEXCEPT -&& !defed( -CATCH_CONFIG_CPP11_NO_NOEXCEPT -&& !defed( -CATCH_CONFIG_CPP11_NOEXCEPT -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -289  - #CATCH_CONFIG_CPP11_NOEXCEPT - - - ) - -291 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_GENERATED_METHODS -&& !defed( -CATCH_CONFIG_CPP11_NO_GENERATED_METHODS -&& !defed( -CATCH_CONFIG_CPP11_GENERATED_METHODS -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -292  - #CATCH_CONFIG_CPP11_GENERATED_METHODS - - - ) - -294 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_IS_ENUM -&& !defed( -CATCH_CONFIG_CPP11_NO_IS_ENUM -&& !defed( -CATCH_CONFIG_CPP11_IS_ENUM -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -295  - #CATCH_CONFIG_CPP11_IS_ENUM - - - ) - -297 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_TUPLE -&& !defed( -CATCH_CONFIG_CPP11_NO_TUPLE -&& !defed( -CATCH_CONFIG_CPP11_TUPLE -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -298  - #CATCH_CONFIG_CPP11_TUPLE - - - ) - -300 #i -defed -( -CATCH_INTERNAL_CONFIG_VARIADIC_MACROS -&& !defed( -CATCH_CONFIG_NO_VARIADIC_MACROS -&& !defed( -CATCH_CONFIG_VARIADIC_MACROS -) - -301  - #CATCH_CONFIG_VARIADIC_MACROS - - - ) - -303 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_LONG_LONG -&& !defed( -CATCH_CONFIG_CPP11_NO_LONG_LONG -&& !defed( -CATCH_CONFIG_CPP11_LONG_LONG -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -304  - #CATCH_CONFIG_CPP11_LONG_LONG - - - ) - -306 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_OVERRIDE -&& !defed( -CATCH_CONFIG_CPP11_NO_OVERRIDE -&& !defed( -CATCH_CONFIG_CPP11_OVERRIDE -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -307  - #CATCH_CONFIG_CPP11_OVERRIDE - - - ) - -309 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_UNIQUE_PTR -&& !defed( -CATCH_CONFIG_CPP11_NO_UNIQUE_PTR -&& !defed( -CATCH_CONFIG_CPP11_UNIQUE_PTR -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -310  - #CATCH_CONFIG_CPP11_UNIQUE_PTR - - - ) - -315 #i -defed -( -CATCH_INTERNAL_CONFIG_COUNTER -&& !defed( -CATCH_CONFIG_NO_COUNTER -&& !defed( -CATCH_CONFIG_COUNTER -&& !defed( -__JETBRAINS_IDE__ -) - -316  - #CATCH_CONFIG_COUNTER - - - ) - -318 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_SHUFFLE -&& !defed( -CATCH_CONFIG_CPP11_NO_SHUFFLE -&& !defed( -CATCH_CONFIG_CPP11_SHUFFLE -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -319  - #CATCH_CONFIG_CPP11_SHUFFLE - - - ) - -321 #i -defed -( -CATCH_INTERNAL_CONFIG_CPP11_TYPE_TRAITS -&& !defed( -CATCH_CONFIG_CPP11_NO_TYPE_TRAITS -&& !defed( -CATCH_CONFIG_CPP11_TYPE_TRAITS -&& !defed( -CATCH_CONFIG_NO_CPP11 -) - -322  - #CATCH_CONFIG_CPP11_TYPE_TRAITS - - - ) - -324 #i -defed -( -CATCH_INTERNAL_CONFIG_WINDOWS_SEH -&& !defed( -CATCH_CONFIG_NO_WINDOWS_SEH -&& !defed( -CATCH_CONFIG_WINDOWS_SEH -) - -325  - #CATCH_CONFIG_WINDOWS_SEH - - - ) - -328 #i! -defed -( -CATCH_INTERNAL_CONFIG_NO_POSIX_SIGNALS -&& !defed( -CATCH_CONFIG_NO_POSIX_SIGNALS -&& !defed( -CATCH_CONFIG_POSIX_SIGNALS -) - -329  - #CATCH_CONFIG_POSIX_SIGNALS - - - ) - -332 #i! -defed -( -CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS -) - -333  - #CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS - - - ) - -334  - #CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS - - - ) - -336 #i! -defed -( -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS -) - -337  - #CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - - - ) - -338  - #CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - - - ) - -342 #i -defed -( -CATCH_CONFIG_CPP11_NOEXCEPT -&& !defed( -CATCH_NOEXCEPT -) - -343  - #CATCH_NOEXCEPT - -nx - - - ) - -344  - #CATCH_NOEXCEPT_IS -( -x - - `nx -(x) - - ) - -346  - #CATCH_NOEXCEPT - - `throw -() - - ) - -347  - #CATCH_NOEXCEPT_IS -( -x -) - - ) - -351 #ifde -CATCH_CONFIG_CPP11_NULLPTR - - -352  - #CATCH_NULL - -nuαr - - - ) - -354  - #CATCH_NULL - -NULL - - - ) - -358 #ifde -CATCH_CONFIG_CPP11_OVERRIDE - - -359  - #CATCH_OVERRIDE - -ovride - - - ) - -361  - #CATCH_OVERRIDE - - - ) - -365 #ifde -CATCH_CONFIG_CPP11_UNIQUE_PTR - - -366  - #CATCH_AUTO_PTR - -T - ) -d -:: -unique_r - - - ) - -368  - #CATCH_AUTO_PTR - -T - ) -d -:: -auto_r - - - ) - -371  - #INTERNAL_CATCH_UNIQUE_NAME_LINE2 - -me -, -le - )ame## - ) -line - -372  - #INTERNAL_CATCH_UNIQUE_NAME_LINE - -me -, -le - ) - `INTERNAL_CATCH_UNIQUE_NAME_LINE2 -me,) - - ) - -373 #ifde -CATCH_CONFIG_COUNTER - - -374  - #INTERNAL_CATCH_UNIQUE_NAME - -me - ) - `INTERNAL_CATCH_UNIQUE_NAME_LINE -me, -__COUNTER__ - ) - - ) - -376  - #INTERNAL_CATCH_UNIQUE_NAME - -me - ) - `INTERNAL_CATCH_UNIQUE_NAME_LINE -me, -__LINE__ - ) - - ) - -379  - #INTERNAL_CATCH_STRINGIFY2 - -ex - ) #ex - - ) - -380  - #INTERNAL_CATCH_STRINGIFY - -ex - ) - `INTERNAL_CATCH_STRINGIFY2 -ex ) - - ) - -382  - ~ - -383  - ~ - -385 -mea - - gCch - { - -387  - gICfig -; - -389  - sCaSsive - { - eChoi - { - -390 - gYes -, - -391 - gNo - - -394 as - cNCyab - { - -395 #ifde -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -396 -NCyab -NCyab cڡ& ) = -de -; - -397 -NCyab -NCyab && ) = -de -; - -398 - gNCyab -& - gݔ - = ( -NCyab - cڡ& ) = -de -; - -399 - gNCyab -& - gݔ - = ( -NCyab - && ) = -de -; - -401 -NCyab -NCyab cڡ& -fo - ); - -402 - gNCyab -& - gݔ - = ( -NCyab - const& ); - -405 - geed -: - -406 -NCyab -() {} - -407 -vtu - ~ -NCyab -(); - -410 as - cSaBo - { - -411 - gpublic -: - -412 ( -SaBo -::* - tty -)() const; - -414  -ty - -makeSa - -bo - -vue - ) { - -415  - gvue - ? & - gSaBo -:: -ueVue - : 0; - -417 - give -: - -418  -ueVue -() const {} - -421 - gme -< -tyme - - gCڏT -> - -422  - $deA - -CڏT -& -cڏ - ) { - -423 -tyme - -CڏT -:: -cڡ_ - - - = -cڏ -. - `beg -(); - -424 -tyme - -CڏT -:: -cڡ_ - -End - = -cڏ -. - `d -(); - -425 ; - - ! -End -; ++it ) - -426 -de - * - -; - -427 - } -} - -428 - gme -< -tyme - - gAssoctiveCڏT -> - -429  - $deAVues - -AssoctiveCڏT -& -cڏ - ) { - -430 -tyme - -AssoctiveCڏT -:: -cڡ_ - - - = -cڏ -. - `beg -(); - -431 -tyme - -AssoctiveCڏT -:: -cڡ_ - -End - = -cڏ -. - `d -(); - -432 ; - - ! -End -; ++it ) - -433 -de - - --> -cd -; - -434 - } -} - -436 -bo - -tsWh - -d -:: -rg - cڡ& -s -, std::rg cڡ& -efix - ); - -437 -bo - -tsWh - -d -:: -rg - cڡ& -s -,  -efix - ); - -438 -bo - -dsWh - -d -:: -rg - cڡ& -s -, std::rg cڡ& -suffix - ); - -439 -bo - -dsWh - -d -:: -rg - cڡ& -s -,  -suffix - ); - -440 -bo - -cڏs - -d -:: -rg - cڡ& -s -, std::rg cڡ& -fix - ); - -441  -toLowInP - -d -:: -rg -& -s - ); - -442 - gd -:: -rg - -toLow - -d -::rg cڡ& -s - ); - -443 - gd -:: -rg - -im - -d -::rg cڡ& -r - ); - -444 -bo - -aInP - -d -:: -rg -& -r -, std::rg cڡ& -aThis -, std::rg cڡ& -whThis - ); - -446  - suli - { - -447 -uli - -d -:: -size_t - -cou -, std:: -rg - cڡ& -b - ); - -449 -nd - - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -uli - cڡ& - gulir - ); - -451 - gd -:: -size_t - -m_cou -; - -452 - gd -:: -rg - -m_b -; - -455  - sSourLeInfo - { - -457 -SourLeInfo -(); - -458 -SourLeInfo -cڡ* -_fe -, -d -:: -size_t - -_le - ); - -459 #ifde -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -460 -SourLeInfo -(SourLeInfcڡ& -h -) = ; - -461 -SourLeInfo -( SourceLineInfo && ) = ; - -462 - gSourLeInfo -& - gݔ - = ( -SourLeInfo - const& ) = ; - -463 - gSourLeInfo -& - gݔ - = ( -SourLeInfo - && ) = ; - -465 -bo - -emy -() const; - -466 -bo - - gݔ - = -SourLeInfo - cڡ& -h - ) const; - -467 -bo - - gݔ - < ( -SourLeInfo - cڡ& - gh - ) const; - -469 cڡ* - gfe -; - -470 - gd -:: -size_t - -le -; - -473 - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -SourLeInfo - cڡ& - gfo - ); - -476 -le - -bo - - $isTrue - -bo - -vue - ){  vue; - } -} - -477 -le - -bo - - $waysTrue -({  -ue -; - } -} - -478 -le - -bo - - $waysF -({  -l -; - } -} - -480  -throwLogicE - -d -:: -rg - cڡ& -mesge -, -SourLeInfo - cڡ& -lotiInfo - ); - -482  -edRng - -ICfig - cڡ& -cfig - ); - -483  -gSd -(); - -489  - sSmEndSt - { - -490 - gd -:: -rg - -ݔ -+() { - -491  -d -:: -rg -(); - -494 - gme -< -tyme - - gT -> - -495 -T - cڡ& - gݔ - + ( T cڡ& - gvue -, - gSmEndSt - ) { - -496  - gvue -; - -500  - #CATCH_INTERNAL_LINEINFO - :: -Cch -:: - `SourLeInfo - -__FILE__ -, -ic_ -< -d -:: -size_t -> -__LINE__ - ) ) - - ) - -501  - #CATCH_INTERNAL_ERROR - -msg - ) :: -Cch -:: - `throwLogicE -msg, -CATCH_INTERNAL_LINEINFO - ); - - ) - -503 -mea - - gCch - { - -505 as - cNImemdExi - : -public - -d -:: -exi - - -507 -public -: - -508 -NImemdExi - -SourLeInfo - cڡ& -leInfo - ); - -510 - gvtu - ~ -NImemdExi -( - gCATCH_NOEXCEPT - {} - -512 -vtu - cڡ * -wh -(cڡ - gCATCH_NOEXCEPT -; - -514 - give -: - -515 -d -:: -rg - -m_wh -; - -516 -SourLeInfo - - gm_leInfo -; - -522  - #CATCH_NOT_IMPLEMENTED - -throw - -Cch -:: - `NImemdExi - -CATCH_INTERNAL_LINEINFO - ) - - ) - -525  - #TWOBLUECUBES_CATCH_CONTEXT_H_INCLUDED - - - ) - -528  - #TWOBLUECUBES_CATCH_INTERFACES_GENERATORS_H_INCLUDED - - - ) - -530  - ~ - -532 -mea - - gCch - { - -534  - sIGInfo - { - -535 - gvtu - ~ -IGInfo -(); - -536 -vtu - -bo - -moveNext -() = 0; - -537 -vtu - - gd -:: -size_t - -gCutIndex -() const = 0; - -540  - sIGsFTe - { - -541 - gvtu - ~ -IGsFTe -(); - -543 -vtu - - gIGInfo -& -gGInfo - -d -:: -rg - cڡ& -feInfo -, std:: -size_t - -size - ) = 0; - -544 -vtu - -bo - -moveNext -() = 0; - -547 -IGsFTe -* -GsFTe -(); - -552  - #TWOBLUECUBES_CATCH_PTR_HPP_INCLUDED - - - ) - -554 #ifde -__g__ - - -555 #agm -g - -dgnoic - -push - - -556 #agm -g - -dgnoic - -igned - "-Wpadded" - -559 -mea - - gCch - { - -564 - gme -< -tyme - - gT -> - -565 as - cP - { - -566 - gpublic -: - -567 -P -(: -m_p - -CATCH_NULL - ){} - -568 -P - -T -* -p - ) : -m_p -( ){ - -569 if -m_p - ) - -570 -m_p --> -addRef -(); - -572 -P -P cڡ& -h - ) : -m_p -( other.m_p ){ - -573 if -m_p - ) - -574 -m_p --> -addRef -(); - -576 ~ -P -(){ - -577 if - gm_p - ) - -578 - gm_p --> -a -(); - -580  -t -() { - -581 if - gm_p - ) - -582 - gm_p --> -a -(); - -583 - gm_p - = -CATCH_NULL -; - -585 - gP -& - gݔ - = ( -T -* -p - ){ - -586 -P - -mp - -p - ); - -587 -sw - -mp - ); - -588  * - gthis -; - -590 - gP -& - gݔ - = ( -P - cڡ& -h - ){ - -591 -P - -mp - -h - ); - -592 -sw - -mp - ); - -593  * - gthis -; - -595  -sw - -P -& -h - ) { - gd -::sw -m_p -, other.m_p ); } - -596 -T -* -g -(cڡ{  - gm_p -; } - -597 - gT -& - gݔ -*(cڡ {  * - gm_p -; } - -598 -T -* - gݔ -->(cڡ {  - gm_p -; } - -599 -bo - - gݔ - !(cڡ {  - gm_p - = -CATCH_NULL -; } - -600 -ݔ - - gSaBo -:: -ty -(cڡ {  -SaBo -:: -makeSa - -m_p - ! -CATCH_NULL - ); } - -602 - give -: - -603 -T -* -m_p -; - -606  - gIShed - : -NCyab - { - -607 -vtu - ~ -IShed -(); - -608 -vtu -  -addRef -() const = 0; - -609 -vtu -  -a -() const = 0; - -612 - gme -< -tyme - - gT - = -IShed -> - -613  -ShedIm - : -T - { - -615 -ShedIm -(: -m_rc -( 0 ){} - -617 -vtu -  -addRef -() const { - -618 ++ -m_rc -; - -620 -vtu -  -a -() const { - -621 if-- - gm_rc - == 0 ) - -622 -de - -this -; - -625 -mub -  - gm_rc -; - -630 #ifde -__g__ - - -631 #agm -g - -dgnoic - -p - - -634 -mea - - gCch - { - -636 -ass - - gTeCa -; - -637 -ass - - gSm -; - -638  - gIResuCtu -; - -639  - gIRu” -; - -640  - gIGsFTe -; - -641  - gICfig -; - -643  - sICڋxt - - -645 - gvtu - ~ -ICڋxt -(); - -647 -vtu - -IResuCtu -* -gResuCtu -() = 0; - -648 -vtu - -IRu” -* -gRu” -() = 0; - -649 -vtu - -size_t - -gGIndex - -d -:: -rg - cڡ& -feInfo -, size_ -tٮSize - ) = 0; - -650 -vtu - -bo - -advGsFCutTe -() = 0; - -651 -vtu - - gP -< -ICfig - cڡ> -gCfig -() const = 0; - -654  - gIMubCڋxt - : -ICڋxt - - -656 -vtu - ~ -IMubCڋxt -(); - -657 -vtu -  -tResuCtu - -IResuCtu -* -suCtu - ) = 0; - -658 -vtu -  -tRu” - -IRu” -* -ru” - ) = 0; - -659 -vtu -  -tCfig - -P -< -ICfig - cڡ> cڡ& -cfig - ) = 0; - -662 - gICڋxt -& -gCutCڋxt -(); - -663 - gIMubCڋxt -& -gCutMubCڋxt -(); - -664  -nUpCڋxt -(); - -665 -Sm - -Sm - -d -:: -rg - cڡ& -amName - ); - -670  - #TWOBLUECUBES_CATCH_TEST_REGISTRY_HPP_INCLUDED - - - ) - -673  - #TWOBLUECUBES_CATCH_INTERFACES_TESTCASE_H_INCLUDED - - - ) - -675  - ~ - -677 -mea - - gCch - { - -679 -ass - - gTeSc -; - -681  - gITeCa - : -IShed - { - -682 -vtu -  -voke - () const = 0; - -683 - geed -: - -684 -vtu - ~ -ITeCa -(); - -687 -ass - - gTeCa -; - -688  - gICfig -; - -690  - sITeCaRegiry - { - -691 - gvtu - ~ -ITeCaRegiry -(); - -692 -vtu - - gd -:: -ve -< -TeCa -> cڡ& -gATes -() const = 0; - -693 -vtu - - gd -:: -ve -< -TeCa -> cڡ& -gATesS܋d - -ICfig - cڡ& -cfig - ) const = 0; - -696 -bo - -mchTe - -TeCa - cڡ& -Ca -, -TeSc - cڡ& -Sc -, -ICfig - cڡ& -cfig - ); - -697 - gd -:: -ve -< -TeCa -> -frTes - -d -::ve cڡ& -Cas -, -TeSc - cڡ& -Sc -, -ICfig - cڡ& -cfig - ); - -698 - gd -:: -ve -< -TeCa -> cڡ& -gATeCasS܋d - -ICfig - cڡ& -cfig - ); - -702 -mea - - gCch - { - -704 - gme -< -tyme - - gC -> - -705 -ass - - gMhodTeCa - : -public - -ShedIm -< -ITeCa -> { - -707 -public -: - -708 -MhodTeCa -( -C -::* -mhod -)(: -m_mhod -( method ) {} - -710 -vtu -  -voke -() const { - -711 -C - -obj -; - -712 ( - gobj -.* - gm_mhod -)(); - -715 - give -: - -716 -vtu - ~ -MhodTeCa -() {} - -718 ( -C -::* -m_mhod -)(); - -721 (* - gTeFuni -)(); - -723  - sNameAndDesc - { - -724 -NameAndDesc -cڡ * -_me - = "", cڡ * -_desti -= "" ) - -725 : -me - -_me - ), -desti - -_desti - ) - -728 cڡ * - gme -; - -729 cڡ * - gdesti -; - -732  - ggiTeCa - - -733 -ITeCa -* - gCa -, - -734 cڡ* - gassName -, - -735 -NameAndDesc - cڡ& - gmeAndDesc -, - -736 -SourLeInfo - cڡ& - gleInfo - ); - -738  - sAutoReg - { - -740 - gAutoReg - - -741 -TeFuni - - gfuni -, - -742 -SourLeInfo - cڡ& - gleInfo -, - -743 -NameAndDesc - cڡ& - gmeAndDesc - ); - -745 - gme -< -tyme - - gC -> - -746 - gAutoReg - - -747 ( - gC -::* -mhod -)(), - -748 cڡ* - gassName -, - -749 -NameAndDesc - cڡ& - gmeAndDesc -, - -750 -SourLeInfo - cڡ& - gleInfo - ) { - -752 - ggiTeCa - - -753 -w - - gMhodTeCa -< - gC -> - gmhod - ), - -754 - gassName -, - -755 - gmeAndDesc -, - -756 - gleInfo - ); - -759 ~ -AutoReg -(); - -761 - give -: - -762 -AutoReg -( AutoReg const& ); - -763  - gݔ - -AutoReg - const& ); - -766  - ggiTeCaFuni - - -767 -TeFuni - - gfuni -, - -768 -SourLeInfo - cڡ& - gleInfo -, - -769 -NameAndDesc - cڡ& - gmeAndDesc - ); - -773 #ifde -CATCH_CONFIG_VARIADIC_MACROS - - -775  - #INTERNAL_CATCH_TESTCASE2 - -TeName -, ... ) \ - -776  - `TeName -(); \ - -777 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -778 -mea -{ -Cch -:: -AutoReg - - `INTERNAL_CATCH_UNIQUE_NAME - -autoRegir - )& -TeName -, -CATCH_INTERNAL_LINEINFO -, Cch:: - `NameAndDesc - -__VA_ARGS__ - ) ); } \ - -779 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - \ - -780  - `TeName -() - - ) - -781  - #INTERNAL_CATCH_TESTCASE -( ... ) \ - -782 - `INTERNAL_CATCH_TESTCASE2 - - `INTERNAL_CATCH_UNIQUE_NAME - -____C_A_T_C_H____T_E_S_T____ - ), -__VA_ARGS__ - ) - - ) - -785  - #INTERNAL_CATCH_METHOD_AS_TEST_CASE - -QuifdMhod -, ... ) \ - -786 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -787 -mea -{ -Cch -:: -AutoReg - - `INTERNAL_CATCH_UNIQUE_NAME - -autoRegir - )& -QuifdMhod -, "&" #QuifdMhod, Cch:: - `NameAndDesc - -__VA_ARGS__ - ), -CATCH_INTERNAL_LINEINFO - ); } \ - -788 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - - - ) - -791  - #INTERNAL_CATCH_TEST_CASE_METHOD2 - -TeName -, -CssName -, ... )\ - -792 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -793 -mea -{ \ - -794  -TeName - : -CssName -{ \ - -795  - ` -(); \ - -797 -Cch -:: -AutoReg - - `INTERNAL_CATCH_UNIQUE_NAME - -autoRegir - ) ( & -TeName -:: - -, #CssName, Cch:: - `NameAndDesc - -__VA_ARGS__ - ), -CATCH_INTERNAL_LINEINFO - ); \ - -799 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - \ - -800  -TeName -:: - ` -() - - ) - -801  - #INTERNAL_CATCH_TEST_CASE_METHOD - -CssName -, ... ) \ - -802 - `INTERNAL_CATCH_TEST_CASE_METHOD2 - - `INTERNAL_CATCH_UNIQUE_NAME - -____C_A_T_C_H____T_E_S_T____ - ), -CssName -, -__VA_ARGS__ - ) - - ) - -805  - #INTERNAL_CATCH_REGISTER_TESTCASE - -Funi -, ... ) \ - -806 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -807 -Cch -:: - `AutoReg - -Funi -, -CATCH_INTERNAL_LINEINFO -, Cch:: - `NameAndDesc - -__VA_ARGS__ - ) ); \ - -808 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - - - ) - -812  - #INTERNAL_CATCH_TESTCASE2 - -TeName -, -Name -, -Desc - ) \ - -813  - `TeName -(); \ - -814 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -815 -mea -{ -Cch -:: -AutoReg - - `INTERNAL_CATCH_UNIQUE_NAME - -autoRegir - )& -TeName -, -CATCH_INTERNAL_LINEINFO -, Cch:: - `NameAndDesc - -Name -, -Desc - ) ); } \ - -816 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - \ - -817  - `TeName -() - - ) - -818  - #INTERNAL_CATCH_TESTCASE - -Name -, -Desc - ) \ - -819 - `INTERNAL_CATCH_TESTCASE2 - - `INTERNAL_CATCH_UNIQUE_NAME - -____C_A_T_C_H____T_E_S_T____ - ), -Name -, -Desc - ) - - ) - -822  - #INTERNAL_CATCH_METHOD_AS_TEST_CASE - -QuifdMhod -, -Name -, -Desc - ) \ - -823 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -824 -mea -{ -Cch -:: -AutoReg - - `INTERNAL_CATCH_UNIQUE_NAME - -autoRegir - )& -QuifdMhod -, "&" #QuifdMhod, Cch:: - `NameAndDesc - -Name -, -Desc - ), -CATCH_INTERNAL_LINEINFO - ); } \ - -825 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - - - ) - -828  - #INTERNAL_CATCH_TEST_CASE_METHOD2 - -TeCaName -, -CssName -, -TeName -, -Desc - )\ - -829 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -830 -mea -{ \ - -831  -TeCaName - : -CssName -{ \ - -832  - ` -(); \ - -834 -Cch -:: -AutoReg - - `INTERNAL_CATCH_UNIQUE_NAME - -autoRegir - ) ( & -TeCaName -:: - -, #CssName, Cch:: - `NameAndDesc - -TeName -, -Desc - ), -CATCH_INTERNAL_LINEINFO - ); \ - -836 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - \ - -837  -TeCaName -:: - ` -() - - ) - -838  - #INTERNAL_CATCH_TEST_CASE_METHOD - -CssName -, -TeName -, -Desc - )\ - -839 - `INTERNAL_CATCH_TEST_CASE_METHOD2 - - `INTERNAL_CATCH_UNIQUE_NAME - -____C_A_T_C_H____T_E_S_T____ - ), -CssName -, -TeName -, -Desc - ) - - ) - -842  - #INTERNAL_CATCH_REGISTER_TESTCASE - -Funi -, -Name -, -Desc - ) \ - -843 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - \ - -844 -Cch -:: - `AutoReg - -Funi -, -CATCH_INTERNAL_LINEINFO -, Cch:: - `NameAndDesc - -Name -, -Desc - ) ); \ - -845 -CATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - - - ) - -850  - #TWOBLUECUBES_CATCH_CAPTURE_HPP_INCLUDED - - - ) - -853  - #TWOBLUECUBES_CATCH_RESULT_BUILDER_H_INCLUDED - - - ) - -856  - #TWOBLUECUBES_CATCH_RESULT_TYPE_H_INCLUDED - - - ) - -858 -mea - - gCch - { - -861  - sResuWas - { - eOfTy - { - -862 - gUnknown - = -1, - -863 - gOk - = 0, - -864 - gInfo - = 1, - -865 - gWng - = 2, - -867 - gFauB - = 0x10, - -869 - gExessiFaed - = -FauB - | 1, - -870 - gExicFau - = -FauB - | 2, - -872 - gExi - = 0x100 | -FauB -, - -874 - gThwExi - = -Exi - | 1, - -875 - gDidThrowExi - = -Exi - | 2, - -877 - gFECdi - = 0x200 | -FauB - - -881 -le - -bo - -isOk - -ResuWas -:: -OfTy - -suTy - ) { - -882  ( -suTy - & -ResuWas -:: -FauB - ) == 0; - -884 -le - -bo - -isJuInfo - -ags - ) { - -885  - gags - = -ResuWas -:: -Info -; - -889  - sResuDiosi - { - eFgs - { - -890 - gNm - = 0x01, - -892 - gCtueOnFau - = 0x02, - -893 - gFTe - = 0x04, - -894 - gSussFa - = 0x08 - -897 -le - - gResuDiosi -:: -Fgs - -ݔ - | ( -ResuDiosi -::Fg -lhs -, ResuDiosi::Fg -rhs - ) { - -898  -ic_ -< -ResuDiosi -:: -Fgs ->Сic_<> -lhs - ) | stic_<> -rhs - ) ); - -901 -le - -bo - -shouldCtueOnFau - -ags - ) {  ( - gags - & - gResuDiosi -:: -CtueOnFau - ) != 0; } - -902 -le - -bo - -isFTe - -ags - ) {  ( - gags - & - gResuDiosi -:: -FTe - ) != 0; } - -903 -le - -bo - -shouldSussFau - -ags - ) {  ( - gags - & - gResuDiosi -:: -SussFa - ) != 0; } - -908  - #TWOBLUECUBES_CATCH_ASSERTIONRESULT_H_INCLUDED - - - ) - -910  - ~ - -912 -mea - - gCch - { - -914  - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -; - -916  - sDecompodExessi - - -918 - gvtu - ~ -DecompodExessi -() {} - -919 -vtu - -bo - -isByExessi -() const { - -920  - gl -; - -922 -vtu -  -cڡruExessi - -d -:: -rg -& -de - ) const = 0; - -926 - gme -< -tyme - - gT -> - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -& - gݔ - + ( -T - const& ); - -927 - gme -< -tyme - - gT -> - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -& - gݔ - - ( -T - const& ); - -928 - gme -< -tyme - - gT -> - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -& - gݔ - * ( -T - const& ); - -929 - gme -< -tyme - - gT -> - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -& - gݔ - / ( -T - const& ); - -930 - gme -< -tyme - - gT -> - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -& - gݔ - % ( -T - const& ); - -931 - gme -< -tyme - - gT -> - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -& - gݔ - && ( -T - const& ); - -932 - gme -< -tyme - - gT -> - gSTATIC_ASSERT_Exessi_Too_Comex_Pa_Rewre_As_By_Comris -& - gݔ - || ( -T - const& ); - -934 - give -: - -935 -DecompodExessi -& -ݔ - = (DecomposedExpression const&); - -938  - sAsiInfo - - -940 -AsiInfo -(); - -941 -AsiInfo -cڡ * -_maoName -, - -942 -SourLeInfo - cڡ& -_leInfo -, - -943 cڡ * -_udExessi -, - -944 -ResuDiosi -:: -Fgs - -_suDiosi -, - -945 cڡ * -_cdArg - = ""); - -947 cڡ * - gmaoName -; - -948 -SourLeInfo - - gleInfo -; - -949 cڡ * - gudExessi -; - -950 - gResuDiosi -:: -Fgs - -suDiosi -; - -951 cڡ * - gcdArg -; - -954  - sAsiResuDa - - -956 -AsiResuDa -(: -decompodExessi - -CATCH_NULL - ) - -957 , -suTy - -ResuWas -:: -Unknown - ) - -958 , -ged - -l - ) - -959 , -hesized - -l - ) {} - -961  -ge - -bo - -hesize - ) { - -962 - gged - = ! -ged -; - -963 - ghesized - = -hesize -; - -964 if - gsuTy - = -ResuWas -:: -Ok - ) - -965 -suTy - = -ResuWas -:: -ExessiFaed -; - -966 if - gsuTy - = -ResuWas -:: -ExessiFaed - ) - -967 -suTy - = -ResuWas -:: -Ok -; - -970 - gd -:: -rg - cڡ& -cڡruExessi -() const { - -971 if -decompodExessi - ! -CATCH_NULL - ) { - -972 -decompodExessi --> -cڡruExessi - -cڡruedExessi - ); - -973 if - ghesized - ) { - -974 - gcڡruedExessi -. - -( 0, 1, '(' ); - -975 - gcڡruedExessi -. -nd -( 1, ')' ); - -977 if - gged - ) { - -978 - gcڡruedExessi -. - -( 0, 1, '!' ); - -980 - gdecompodExessi - = -CATCH_NULL -; - -982  - gcڡruedExessi -; - -985 -mub - -DecompodExessi - cڡ* - gdecompodExessi -; - -986 -mub - - gd -:: -rg - -cڡruedExessi -; - -987 - gd -:: -rg - -mesge -; - -988 - gResuWas -:: -OfTy - -suTy -; - -989 -bo - - gged -; - -990 -bo - - ghesized -; - -993 as - cAsiResu - { - -994 - gpublic -: - -995 -AsiResu -(); - -996 -AsiResu - -AsiInfo - cڡ& -fo -, -AsiResuDa - cڡ& -da - ); - -997 ~ -AsiResu -(); - -998 #ifde -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -999 -AsiResu -( AssertionResult const& ) = ; - -1000 -AsiResu -( AssertionResult && ) = ; - -1001 - gAsiResu -& - gݔ - = ( -AsiResu - const& ) = ; - -1002 - gAsiResu -& - gݔ - = ( -AsiResu - && ) = ; - -1005 -bo - -isOk -() const; - -1006 -bo - -suceded -() const; - -1007 - gResuWas -:: -OfTy - -gResuTy -() const; - -1008 -bo - -hasExessi -() const; - -1009 -bo - -hasMesge -() const; - -1010 - gd -:: -rg - -gExessi -() const; - -1011 - gd -:: -rg - -gExessiInMao -() const; - -1012 -bo - -hasExndedExessi -() const; - -1013 - gd -:: -rg - -gExndedExessi -() const; - -1014 - gd -:: -rg - -gMesge -() const; - -1015 -SourLeInfo - -gSourInfo -() const; - -1016 - gd -:: -rg - -gTeMaoName -() const; - -1017  -disrdDecompodExessi -() const; - -1018  -exndDecompodExessi -() const; - -1020 - geed -: - -1021 -AsiInfo - -m_fo -; - -1022 -AsiResuDa - - gm_suDa -; - -1028  - #TWOBLUECUBES_CATCH_MATCHERS_HPP_INCLUDED - - - ) - -1030 -mea - - gCch - { - -1031 -mea - - gMchs - { - -1032 -mea - - gIm - { - -1034 - gme -< -tyme - - gArgT ->  - gMchAOf -; - -1035 - gme -< -tyme - - gArgT ->  - gMchAnyOf -; - -1036 - gme -< -tyme - - gArgT ->  - gMchNOf -; - -1038 as - cMchUydBa - { - -1039 - gpublic -: - -1040 -d -:: -rg - -toSg -() const { - -1041 if -m_chedToSg -. -emy -() ) - -1042 -m_chedToSg - = -desibe -(); - -1043  - gm_chedToSg -; - -1046 - geed -: - -1047 -vtu - ~ -MchUydBa -(); - -1048 -vtu - - gd -:: -rg - -desibe -() const = 0; - -1049 -mub - - gd -:: -rg - -m_chedToSg -; - -1050 - give -: - -1051 -MchUydBa -& -ݔ - = ( MatcherUntypedBase const& ); - -1054 - gme -< -tyme - - gObjeT -> - -1055  - sMchMhod - { - -1056 -vtu - -bo - -mch - -ObjeT - cڡ& -g - ) const = 0; - -1058 - gme -< -tyme - - gPT -> - -1059  - gMchMhod -< - gPT -*> { - -1060 -vtu - -bo - -mch - -PT -* -g - ) const = 0; - -1063 - gme -< -tyme - - gObjeT -,ym - gComtT - = -ObjeT -> - -1064  -MchBa - : -MchUydBa -, - gMchMhod -< - gObjeT -> { - -1066 - gMchAOf -< - gComtT -> - gݔ - && ( -MchBa - cڡ& - gh - ) const; - -1067 - gMchAnyOf -< - gComtT -> - gݔ - || ( -MchBa - cڡ& - gh - ) const; - -1068 - gMchNOf -< - gComtT -> - gݔ - ! () const; - -1071 - gme -< -tyme - - gArgT -> - -1072  - gMchAOf - : -MchBa -< -ArgT -> { - -1073 -vtu - -bo - -mch - -ArgT - cڡ& -g - ) cڡ -CATCH_OVERRIDE - { - -1074  -d -:: -size_t - -i - = 0; - gi - < - gm_mchs -. -size -(); ++i ) { - -1075 i(! - gm_mchs -[ -i -]-> -mch -( -g -)) - -1076  - gl -; - -1078  - gue -; - -1080 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -1081 -d -:: -rg - -desti -; - -1082 - gdesti -. -rve -4 + -m_mchs -. -size -()*32 ); - -1083 - gdesti - += "( "; - -1084  - gd -:: -size_t - -i - = 0; - gi - < - gm_mchs -. -size -(); ++i ) { - -1085 if - gi - != 0 ) - -1086 -desti - += "nd "; - -1087 - gdesti - + -m_mchs -[ -i -]-> -toSg -(); - -1089 - gdesti - += " )"; - -1090  - gdesti -; - -1093 - gMchAOf -< - gArgT ->& - gݔ - && ( - gMchBa - cڡ& - gh - ) { - -1094 - gm_mchs -. -push_back -& -h - ); - -1095  * - gthis -; - -1098 - gd -:: -ve -< -MchBa -< -ArgT -> cڡ*> -m_mchs -; - -1100 - gme -< -tyme - - gArgT -> - -1101  - gMchAnyOf - : -MchBa -< -ArgT -> { - -1103 -vtu - -bo - -mch - -ArgT - cڡ& -g - ) cڡ -CATCH_OVERRIDE - { - -1104  -d -:: -size_t - -i - = 0; - gi - < - gm_mchs -. -size -(); ++i ) { - -1105 i( - gm_mchs -[ -i -]-> -mch -( -g -)) - -1106  - gue -; - -1108  - gl -; - -1110 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -1111 -d -:: -rg - -desti -; - -1112 - gdesti -. -rve -4 + -m_mchs -. -size -()*32 ); - -1113 - gdesti - += "( "; - -1114  - gd -:: -size_t - -i - = 0; - gi - < - gm_mchs -. -size -(); ++i ) { - -1115 if - gi - != 0 ) - -1116 -desti - += " or "; - -1117 - gdesti - + -m_mchs -[ -i -]-> -toSg -(); - -1119 - gdesti - += " )"; - -1120  - gdesti -; - -1123 - gMchAnyOf -< - gArgT ->& - gݔ - || ( - gMchBa - cڡ& - gh - ) { - -1124 - gm_mchs -. -push_back -& -h - ); - -1125  * - gthis -; - -1128 - gd -:: -ve -< -MchBa -< -ArgT -> cڡ*> -m_mchs -; - -1131 - gme -< -tyme - - gArgT -> - -1132  - gMchNOf - : -MchBa -< -ArgT -> { - -1134 -MchNOf - -MchBa -< -ArgT -> cڡ& -undlygMch - ) : -m_undlygMch -( underlyingMatcher ) {} - -1136 -vtu - -bo - -mch - -ArgT - cڡ& -g - ) cڡ -CATCH_OVERRIDE - { - -1137  ! -m_undlygMch -. -mch - -g - ); - -1140 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -1141  "n " + -m_undlygMch -. -toSg -(); - -1143 - gMchBa -< - gArgT -> cڡ& - gm_undlygMch -; - -1146 - gme -< -tyme - - gObjeT -,ym - gComtT -> - -1147 - gMchAOf -< - gComtT -> - gMchBa -< - gObjeT -, ComtT>:: -ݔ - && ( -MchBa - cڡ& -h - ) const { - -1148  -MchAOf -< -ComtT ->(&& * -this - && -h -; - -1150 - gme -< -tyme - - gObjeT -,ym - gComtT -> - -1151 - gMchAnyOf -< - gComtT -> - gMchBa -< - gObjeT -, ComtT>:: -ݔ - || ( -MchBa - cڡ& -h - ) const { - -1152  -MchAnyOf -< -ComtT ->(|| * -this - || -h -; - -1154 - gme -< -tyme - - gObjeT -,ym - gComtT -> - -1155 - gMchNOf -< - gComtT -> - gMchBa -< - gObjeT -, ComtT>:: -ݔ - ! () const { - -1156  -MchNOf -< -ComtT ->* -this - ); - -1164 - gme -< -tyme - - gT -> - -1165 - gIm -:: -MchNOf -< -T -> -N - -Im -:: -MchBa - cڡ& -undlygMch - ) { - -1166  -Im -:: -MchNOf -< -T -> -undlygMch - ); - -1168 - gme -< -tyme - - gT -> - -1169 - gIm -:: -MchAOf -< -T -> -AOf - -Im -:: -MchBa - cڡ& -m1 -, Im::MchBa cڡ& -m2 - ) { - -1170  -Im -:: -MchAOf -< -T ->(&& -m1 - && -m2 -; - -1172 - gme -< -tyme - - gT -> - -1173 - gIm -:: -MchAOf -< -T -> -AOf - -Im -:: -MchBa - cڡ& -m1 -, Im::MchBa cڡ& -m2 -, Im::MchBa cڡ& -m3 - ) { - -1174  -Im -:: -MchAOf -< -T ->(&& -m1 - && -m2 - && -m3 -; - -1176 - gme -< -tyme - - gT -> - -1177 - gIm -:: -MchAnyOf -< -T -> -AnyOf - -Im -:: -MchBa - cڡ& -m1 -, Im::MchBa cڡ& -m2 - ) { - -1178  -Im -:: -MchAnyOf -< -T ->(|| -m1 - || -m2 -; - -1180 - gme -< -tyme - - gT -> - -1181 - gIm -:: -MchAnyOf -< -T -> -AnyOf - -Im -:: -MchBa - cڡ& -m1 -, Im::MchBa cڡ& -m2 -, Im::MchBa cڡ& -m3 - ) { - -1182  -Im -:: -MchAnyOf -< -T ->(|| -m1 - || -m2 - || -m3 -; - -1187 -usg - -mea - - gMchs -; - -1188 -usg - - gMchs -:: -Im -:: -MchBa -; - -1192 -mea - - gCch - { - -1194  - sTeFauExi -{}; - -1196 - gme -< -tyme - - gT -> -ass - - gExessiLhs -; - -1198  - sCyabSm - { - -1199 -CyabSm -() {} - -1200 -CyabSm -CyabSm cڡ& -h - ) { - -1201 - goss - << - gh -.oss. -r -(); - -1203 - gCyabSm -& - gݔ -= -CyabSm - cڡ& -h - ) { - -1204 -oss -. -r -( -d -:: -rg -()); - -1205 - goss - << - gh -.oss. -r -(); - -1206  * - gthis -; - -1208 - gd -:: -orgam - -oss -; - -1211 as - cResuBud - : -public - -DecompodExessi - { - -1212 -public -: - -1213 -ResuBud -cڡ* -maoName -, - -1214 -SourLeInfo - cڡ& -leInfo -, - -1215 cڡ* -udExessi -, - -1216 -ResuDiosi -:: -Fgs - -suDiosi -, - -1217 cڡ* -cdArg - = "" ); - -1218 ~ -ResuBud -(); - -1220 - gme -< -tyme - - gT -> - -1221 - gExessiLhs -< -T - cڡ&> - gݔ - - gݔ - < -bo - -vue - ); - -1224 - gme -< -tyme - - gT -> - -1225 - gResuBud -& - gݔ - << ( -T - cڡ& - gvue - ) { - -1226 -am -(). - goss - << - gvue -; - -1227  * - gthis -; - -1230 - gResuBud -& -tResuTy - -ResuWas -:: -OfTy - -su - ); - -1231 - gResuBud -& -tResuTy - -bo - -su - ); - -1233  -dExessi - -DecompodExessi - cڡ& -ex - ); - -1235 -vtu -  -cڡruExessi - -d -:: -rg -& -de - ) cڡ -CATCH_OVERRIDE -; - -1237 -AsiResu - -bud -() const; - -1238 -AsiResu - -bud - -DecompodExessi - cڡ& -ex - ) const; - -1240  -uAiveExi - -ResuDiosi -:: -Fgs - -suDiosi - = ResuDiosi:: -Nm - ); - -1241  -uResu - -ResuWas -:: -OfTy - -suTy - ); - -1242  -uExessi -(); - -1243  -uExedExi - -d -:: -rg - cڡ& -exedMesge - ); - -1244  -uExedExi - -Mchs -:: -Im -:: -MchBa -< -d -:: -rg -> cڡ& -mch - ); - -1245  -hdResu - -AsiResu - cڡ& -su - ); - -1246  -a -(); - -1247 -bo - -shouldDebugBak -() const; - -1248 -bo - -lowThrows -() const; - -1250 - gme -< -tyme - - gArgT -,ym - gMchT -> - -1251  -uMch - -ArgT - cڡ& -g -, -MchT - cڡ& -mch -, cڡ* -mchSg - ); - -1253  -tExiGud -(); - -1254  -untExiGud -(); - -1256 - give -: - -1257 -AsiInfo - -m_asiInfo -; - -1258 -AsiResuDa - - gm_da -; - -1260 - gCyabSm - & -am -() - -1262 if(! - gm_udSm -) - -1264 - gm_udSm - = -ue -; - -1265 -m_am -(). - goss -. -r -(""); - -1267  -m_am -(); - -1270  - gCyabSm - & -m_am -() - -1272  -CyabSm - - gs -; - -1273  - gs -; - -1276 -bo - - gm_shouldDebugBak -; - -1277 -bo - - gm_shouldThrow -; - -1278 -bo - - gm_gudExi -; - -1279 -bo - - gm_udSm -; - -1286  - #TWOBLUECUBES_CATCH_EXPRESSION_LHS_HPP_INCLUDED - - - ) - -1289  - #TWOBLUECUBES_CATCH_EVALUATE_HPP_INCLUDED - - - ) - -1291 #ifde -_MSC_VER - - -1292 #agm -wng -( -push -) - -1293 #agm -wng -( -dib -:4389) - -1294 #agm -wng -( -dib -:4312) - -1297  - ~ - -1299 -mea - - gCch - { - -1300 -mea - - gIl - { - -1302 - eOt - { - -1303 - gIsEquTo -, - -1304 - gIsNEquTo -, - -1305 - gIsLessTh -, - -1306 - gIsGTh -, - -1307 - gIsLessThOrEquTo -, - -1308 - gIsGThOrEquTo - - -1311 - gme -< -Ot - - gOp ->  - sOtTs - { cڡ * -gName -(){  "*error*"; } }; - -1312 - gme -<>  - gOtTs -< - gIsEquTo -> { cڡ * -gName -(){  "=="; } }; - -1313 - gme -<>  - gOtTs -< - gIsNEquTo -> { cڡ * -gName -(){  "!="; } }; - -1314 - gme -<>  - gOtTs -< - gIsLessTh -> { cڡ * -gName -(){  "<"; } }; - -1315 - gme -<>  - gOtTs -< - gIsGTh -> { cڡ * -gName -(){  ">"; } }; - -1316 - gme -<>  - gOtTs -< - gIsLessThOrEquTo -> { cڡ * -gName -(){  "<="; } }; - -1317 - gme -<>  - gOtTs -< - gIsGThOrEquTo ->{ cڡ * -gName -(){  ">="; } }; - -1319 - gme -< -tyme - - gT -> - -1320 - gT -& -Ca -( -T - cڡ& -t -{  - gcڡ_ -( - gt -); } - -1323 #ifde -CATCH_CONFIG_CPP11_NULLPTR - - -1324 -le - - gd -:: -nuαr_t - -Ca -( -d -::nuαr_t{  -nuαr -; } - -1329 - gme -< -tyme - - gT1 -,ym - gT2 -, -Ot - - gOp -> - -1330  - sEvu -{}; - -1332 - gme -< -tyme - - gT1 -,ym - gT2 -> - -1333  - gEvu -< - gT1 -, - gT2 -, - gIsEquTo -> { - -1334  -bo - -evue - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs -) { - -1335  -bo - -Ca - -lhs - ) =Ca -rhs - ) ); - -1338 - gme -< -tyme - - gT1 -,ym - gT2 -> - -1339  - gEvu -< - gT1 -, - gT2 -, - gIsNEquTo -> { - -1340  -bo - -evue - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs - ) { - -1341  -bo - -Ca - -lhs - ) !Ca -rhs - ) ); - -1344 - gme -< -tyme - - gT1 -,ym - gT2 -> - -1345  - gEvu -< - gT1 -, - gT2 -, - gIsLessTh -> { - -1346  -bo - -evue - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs - ) { - -1347  -bo - -Ca - -lhs - ) < opCa -rhs - ) ); - -1350 - gme -< -tyme - - gT1 -,ym - gT2 -> - -1351  - gEvu -< - gT1 -, - gT2 -, - gIsGTh -> { - -1352  -bo - -evue - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs - ) { - -1353  -bo - -Ca - -lhs - ) > opCa -rhs - ) ); - -1356 - gme -< -tyme - - gT1 -,ym - gT2 -> - -1357  - gEvu -< - gT1 -, - gT2 -, - gIsGThOrEquTo -> { - -1358  -bo - -evue - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs - ) { - -1359  -bo - -Ca - -lhs - ) >Ca -rhs - ) ); - -1362 - gme -< -tyme - - gT1 -,ym - gT2 -> - -1363  - gEvu -< - gT1 -, - gT2 -, - gIsLessThOrEquTo -> { - -1364  -bo - -evue - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs - ) { - -1365  -bo - -Ca - -lhs - ) - -1370 -bo - -yEvu - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs - ) { - -1371  - gEvu -< - gT1 -, - gT2 -, - gOp ->:: -evue - -lhs -, -rhs - ); - -1378 - gme -< -Ot - - gOp -, -tyme - - gT1 -,ym - gT2 -> - -1379 -bo - -com - -T1 - cڡ& -lhs -, -T2 - cڡ& -rhs - ) { - -1380  - gEvu -< - gT1 -, - gT2 -, - gOp ->:: -evue - -lhs -, -rhs - ); - -1384 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1385  - gyEvu -< - gOp -> - glhs -, - gic_ -<> - grhs - ) ); - -1387 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1388  - gyEvu -< - gOp -> - glhs -, - gic_ -<> - grhs - ) ); - -1390 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1391  - gyEvu -< - gOp -> - glhs -, - gic_ -<> - grhs - ) ); - -1395 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1396  - gyEvu -< - gOp -> - glhs -, - gic_ -<> - grhs - ) ); - -1398 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1399  - gyEvu -< - gOp -> - glhs -, - gic_ -<> - grhs - ) ); - -1401 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1402  - gyEvu -< - gOp -> - glhs -, - gic_ -<> - grhs - ) ); - -1406 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1407  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1409 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1410  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1412 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1413  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1417 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1418  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1420 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1421  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1423 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1424  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1428 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -lhs -, -T -* -rhs - ) { - -1429  - gEvu -< - gT -*, T*, - gOp ->:: -evue - -t_ -< -T -*> -lhs - ), -rhs - ); - -1431 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -T -* -lhs -,  -rhs - ) { - -1432  - gEvu -< - gT -*, T*, - gOp ->:: -evue - -lhs -, -t_ -< -T -*> -rhs - ) ); - -1436 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -lhs -, -T -* -rhs - ) { - -1437  - gEvu -< - gT -*, T*, - gOp ->:: -evue - -t_ -< -T -*> -lhs - ), -rhs - ); - -1439 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -T -* -lhs -,  -rhs - ) { - -1440  - gEvu -< - gT -*, T*, - gOp ->:: -evue - -lhs -, -t_ -< -T -*> -rhs - ) ); - -1443 #ifde -CATCH_CONFIG_CPP11_LONG_LONG - - -1445 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1446  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1448 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1449  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1451 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1452  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1454 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1455  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1459 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1460  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1462 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1463  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1465 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1466  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1468 - gme -< -Ot - - gOp -> -bo - -com - -lhs -,  -rhs - ) { - -1469  - gyEvu -< - gOp -> - gic_ -<> - glhs - ), - grhs - ); - -1473 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -lhs -, -T -* -rhs - ) { - -1474  - gEvu -< - gT -*, T*, - gOp ->:: -evue - -t_ -< -T -*> -lhs - ), -rhs - ); - -1476 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -T -* -lhs -,  -rhs - ) { - -1477  - gEvu -< - gT -*, T*, - gOp ->:: -evue - -lhs -, -t_ -< -T -*> -rhs - ) ); - -1481 #ifde -CATCH_CONFIG_CPP11_NULLPTR - - -1483 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -d -:: -nuαr_t -, -T -* -rhs - ) { - -1484  - gEvu -< - gT -*, T*, - gOp ->:: -evue - -nuαr -, -rhs - ); - -1486 - gme -< -Ot - - gOp -, -tyme - - gT -> -bo - -com - -T -* -lhs -, -d -:: -nuαr_t - ) { - -1487  -Evu -< -T -*, - gT -*, - gOp ->:: -evue - -lhs -, -nuαr - ); - -1494 #ifde -_MSC_VER - - -1495 #agm -wng -( -p -) - -1499  - #TWOBLUECUBES_CATCH_TOSTRING_H_INCLUDED - - - ) - -1501  - ~ - -1502  - ~ - -1503  - ~ - -1504  - ~ - -1505  - ~ - -1507 #ifde -__OBJC__ - - -1509  - #TWOBLUECUBES_CATCH_OBJC_ARC_HPP_INCLUDED - - - ) - -1511 #imp܈< -Foundi -/Foundi. -h -> - -1513 #ifde -__has_u - - -1514  - #CATCH_ARC_ENABLED - - `__has_u -( -objc_c -) - - ) - -1516  - #CATCH_ARC_ENABLED - 0 - - ) - -1519  -cSaR - -NSObje -* -obj - ); - -1520 -id - -rfmOiڮSe -id -obj -, -SEL - -l - ); - -1522 #i! -CATCH_ARC_ENABLED - - -1523 -le -  - $cSaR - -NSObje -* -obj - ) { - -1524 [ -obj - -a -]; - -1525 - } -} - -1526 -le - -id - - $rfmOiڮSe - -id - -obj -, -SEL - -l - ) { - -1527 if[ -obj - -dsToSe -: -l -] ) - -1528  [ -obj - -rfmSe -: -l -]; - -1529  -n -; - -1530 - } -} - -1531  - #CATCH_UNSAFE_UNRETAINED - - - ) - -1532  - #CATCH_ARC_STRONG - - - ) - -1534 -le -  - $cSaR - -NSObje -* ){ - } -} - -1535 -le - -id - - $rfmOiڮSe - -id - -obj -, -SEL - -l - ) { - -1536 #ifde -__g__ - - -1537 #agm -g - -dgnoic - -push - - -1538 #agm -g - -dgnoic - -igned - "-Warc-performSelector-leaks" - -1540 if[ -obj - -dsToSe -: -l -] ) - -1541  [ -obj - -rfmSe -: -l -]; - -1542 #ifde -__g__ - - -1543 #agm -g - -dgnoic - -p - - -1545  -n -; - -1546 - } -} - -1547  - #CATCH_UNSAFE_UNRETAINED - -__un_uđaed - - - ) - -1548  - #CATCH_ARC_STRONG - -__rg - - - ) - -1553 #ifde -CATCH_CONFIG_CPP11_TUPLE - - -1554  - ~ - -1557 #ifde -CATCH_CONFIG_CPP11_IS_ENUM - - -1558  - ~ - -1561 -mea - - gCch - { - -1564 - gme -< -tyme - - gT -> - -1565 - gd -:: -rg - -toSg - -T - cڡ& -vue - ); - -1569 - gd -:: -rg - -toSg - -d -::rg cڡ& -vue - ); - -1570 - gd -:: -rg - -toSg - -d -:: -wrg - cڡ& -vue - ); - -1571 - gd -:: -rg - -toSg -cڡ * cڡ -vue - ); - -1572 - gd -:: -rg - -toSg -* cڡ -vue - ); - -1573 - gd -:: -rg - -toSg -cڡ -wch_t -* cڡ -vue - ); - -1574 - gd -:: -rg - -toSg - -wch_t -* cڡ -vue - ); - -1575 - gd -:: -rg - -toSg - -vue - ); - -1576 - gd -:: -rg - -toSg - -vue - ); - -1577 - gd -:: -rg - -toSg - -vue - ); - -1578 - gd -:: -rg - -toSg -cڡ  -vue - ); - -1579 - gd -:: -rg - -toSg -cڡ  -vue - ); - -1580 - gd -:: -rg - -toSg - -bo - -vue - ); - -1581 - gd -:: -rg - -toSg - -vue - ); - -1582 - gd -:: -rg - -toSg -sigd  -vue - ); - -1583 - gd -:: -rg - -toSg - -vue - ); - -1585 #ifde -CATCH_CONFIG_CPP11_LONG_LONG - - -1586 - gd -:: -rg - -toSg - -vue - ); - -1587 - gd -:: -rg - -toSg - -vue - ); - -1590 #ifde -CATCH_CONFIG_CPP11_NULLPTR - - -1591 - gd -:: -rg - -toSg - -d -:: -nuαr_t - ); - -1594 #ifde -__OBJC__ - - -1595 - gd -:: -rg - -toSg - -NSSg - cڡ * cڡ& -nsrg - ); - -1596 - gd -:: -rg - -toSg - -NSSg - * -CATCH_ARC_STRONG - & -nsrg - ); - -1597 - gd -:: -rg - -toSg - -NSObje -* cڡ& -nsObje - ); - -1600 -mea - - gDa - { - -1602 cڡ -d -:: -rg - -urbSg -; - -1604 #i! -defed -( -CATCH_CONFIG_CPP11_STREAM_INSERTABLE_CHECK -) - -1605  - sBgTy - { - -1606 - gme -< -tyme - - gT -> -BgTy - -T - const& ); - -1609  - sTrueTy - {  - gsiz -[1]; }; - -1610  - sFTy - {  - gsiz -[2]; }; - -1612 - gTrueTy -& -Smab - -d -:: -oam -& ); - -1613 -FTy - -Smab -( FalseType ); - -1615 -FTy - - gݔ -<< - gd -:: -oam - cڡ&, -BgTy - const& ); - -1617 - gme -< -tyme - - gT -> - -1618  - sIsSmInab - { - -1619  - gd -:: -oam - & -s -; - -1620  -T - cڡ& - gt -; - -1621 um { - gvue - =  -Smab -( -s - << -t -= -TrueTy - ) }; - -1624 - gme -< -tyme - - gT -> - -1625 as - cIsSmInab - { - -1626 - gme -< -tyme - - gSS -,ym - gTT -> - -1627 aut - -() - -1628 -> -dety - -d -:: -dev -< -SS -&>(<< std::dev< -TT ->(), std:: -ue_ty -() ); - -1630 - gme -< - gtyme -,ypename> - -1631 aut - -(...-> - gd -:: -l_ty -; - -1633 - gpublic -: - -1634 cڡ -bo - -vue - = -dety -( - -< -d -:: -oam -,cڡ -T -&>(0))::value; - -1638 #i -defed -( -CATCH_CONFIG_CPP11_IS_ENUM -) - -1639 - gme -< -tyme - - gT -, - -1640 -bo - - gIsEnum - = -d -:: -is_um -< -T ->:: -vue - - -1642  - sEnumSgMak - - -1644  -d -:: -rg - -cvt - -T - cڡ& ) {  -urbSg -; } - -1647 - gme -< -tyme - - gT -> - -1648  - gEnumSgMak -< - gT -, - gue -> - -1650  - gd -:: -rg - -cvt - -T - cڡ& -v - ) - -1652  :: -Cch -:: -toSg -( - -1653 -ic_ -< -tyme - -d -:: -undlyg_ty -< -T ->:: -ty ->( -v -) - -1658 - gme -< -bo - - gC -> - -1659  - sSgMakBa - { - -1660 #i -defed -( -CATCH_CONFIG_CPP11_IS_ENUM -) - -1661 - gme -< -tyme - - gT -> - -1662  - gd -:: -rg - -cvt - -T - cڡ& -v - ) - -1664  -EnumSgMak -< -T ->:: -cvt - -v - ); - -1667 - gme -< -tyme - - gT -> - -1668  - gd -:: -rg - -cvt - -T - cڡ& ) {  -urbSg -; } - -1672 - gme -<> - -1673  - gSgMakBa -< - gue -> { - -1674 - gme -< -tyme - - gT -> - -1675  - gd -:: -rg - -cvt - -T - cڡ& -_vue - ) { - -1676 -d -:: -orgam - -oss -; - -1677 - goss - << - g_vue -; - -1678  - goss -. -r -(); - -1682 - gd -:: -rg - -wMemyToSg -cڡ * -obje -, -d -:: -size_t - -size - ); - -1684 - gme -< -tyme - - gT -> - -1685 - gd -:: -rg - -wMemyToSg -cڡ -T -& -obje - ) { - -1686  -wMemyToSg -& -obje -, (object) ); - -1691 - gme -< -tyme - - gT -> - -1692  - gSgMak - : - -1693 -Da -:: -SgMakBa -:: -vue -> {}; - -1695 - gme -< -tyme - - gT -> - -1696  - gSgMak -< - gT -*> { - -1697 - gme -< -tyme - - gU -> - -1698  - gd -:: -rg - -cvt - -U -* -p - ) { - -1699 if! -p - ) - -1702  - gDa -:: -wMemyToSg - -p - ); - -1706 - gme -< -tyme - - gR -,ym - gC -> - -1707  - gSgMak -< -R - - gC -::*> { - -1708  -d -:: -rg - -cvt - -R - -C -::* -p - ) { - -1709 if! -p - ) - -1712  - gDa -:: -wMemyToSg - -p - ); - -1716 -mea - - gDa - { - -1717 - gme -< -tyme - - gIutIt -> - -1718 - gd -:: -rg - -ngeToSg - -IutIt - -f -, IutIt -ϡ - ); - -1728 - gme -< -tyme - - gT -,ym - gAot -> - -1729 - gd -:: -rg - -toSg - -d -:: -ve -< -T -, -Aot -> cڡ& -v - ) { - -1730  - gDa -:: -ngeToSg - -v -. -beg -(), v. -d -() ); - -1733 #ifde -CATCH_CONFIG_CPP11_TUPLE - - -1736 -mea - - gTueDa - { - -1737 - gme -< - -1738 -tyme - - gTue -, - -1739 - gd -:: -size_t - -N - = 0, - -1740 - gbo - = ( -N - < -d -:: -tue_size -< -Tue ->:: -vue -) - -1742  - sEmtPrr - { - -1743  -t -cڡ -Tue -& -tue -, -d -:: -oam -& -os - ) - -1745 -os - << ( -N - ? ", " : " " ) - -1746 << -Cch -:: -toSg -( -d -:: -g -< -N ->( -tue -)); - -1747 - gEmtPrr -< - gTue -, - gN -+1>:: -t -( -tue -, -os -); - -1751 - gme -< - -1752 -tyme - - gTue -, - -1753 - gd -:: -size_t - -N - - -1755  -EmtPrr -< -Tue -, - gN -, - gl -> { - -1756  -t -cڡ -Tue -&, -d -:: -oam -& ) {} - -1761 - gme -< - gtyme - ... - gTys -> - -1762  - gSgMak -< - gd -:: -tue -< -Tys -...>> { - -1764  -d -:: -rg - -cvt -cڡ std:: -tue -< -Tys -...>&uple ) - -1766 -d -:: -orgam - -os -; - -1767 - gos - << '{'; - -1768 - gTueDa -:: -EmtPrr -< -d -:: -tue -< -Tys -...>>:: -t -tue, -os - ); - -1769 - gos - << " }"; - -1770  - gos -. -r -(); - -1775 -mea - - gDa - { - -1776 - gme -< -tyme - - gT -> - -1777 - gd -:: -rg - -makeSg - -T - cڡ& -vue - ) { - -1778  -SgMak -< -T ->:: -cvt - -vue - ); - -1789 - gme -< -tyme - - gT -> - -1790 - gd -:: -rg - - $toSg - -T - cڡ& -vue - ) { - -1791  -SgMak -< -T ->:: - `cvt - -vue - ); - -1792 - } -} - -1794 -mea - - gDa - { - -1795 - gme -< -tyme - - gIutIt -> - -1796 - gd -:: -rg - -ngeToSg - -IutIt - -f -, IutIt -ϡ - ) { - -1797 - gd -:: -orgam - -oss -; - -1798 - goss - << "{ "; - -1799 if - gf - ! -ϡ - ) { - -1800 -oss - << -Cch -:: -toSg -* -f - ); - -1801  ++ - gf - ; f ! -ϡ - ; ++first ) - -1802 - goss - << ", " << - gCch -:: -toSg -* -f - ); - -1804 - goss - << " }"; - -1805  - goss -. -r -(); - -1811 -mea - - gCch - { - -1813 - gme -< -tyme - - gLhsT -, - gIl -:: -Ot - -Op -,ym - gRhsT -> - -1814 -ass - - gByExessi -; - -1816 - gme -< -tyme - - gArgT -,ym - gMchT -> - -1817 -ass - - gMchExessi -; - -1821 - gme -< -tyme - - gT -> - -1822 as - cExessiLhs - : -public - -DecompodExessi - { - -1823 -public -: - -1824 -ExessiLhs - -ResuBud -& -rb -, -T - -lhs - ) : -m_rb -rb ), -m_lhs -lh), -m_uthy -( -l -) {} - -1826 - gExessiLhs -& - gݔ - = ( cڡ -ExessiLhs -& ); - -1828 - gme -< -tyme - - gRhsT -> - -1829 - gByExessi -< - gT -, - gIl -:: -IsEquTo -, -RhsT - const&> - -1830 - gݔ - = -RhsT - cڡ& -rhs - ) { - -1831  -uExessi -< -Il -:: -IsEquTo -> -rhs - ); - -1834 - gme -< -tyme - - gRhsT -> - -1835 - gByExessi -< - gT -, - gIl -:: -IsNEquTo -, -RhsT - const&> - -1836 - gݔ - ! -RhsT - cڡ& -rhs - ) { - -1837  -uExessi -< -Il -:: -IsNEquTo -> -rhs - ); - -1840 - gme -< -tyme - - gRhsT -> - -1841 - gByExessi -< - gT -, - gIl -:: -IsLessTh -, -RhsT - const&> - -1842 - gݔ - < ( -RhsT - cڡ& - grhs - ) { - -1843  - guExessi -< - gIl -:: -IsLessTh -> -rhs - ); - -1846 - gme -< -tyme - - gRhsT -> - -1847 - gByExessi -< - gT -, - gIl -:: -IsGTh -, -RhsT - const&> - -1848 - gݔ - > ( -RhsT - cڡ& - grhs - ) { - -1849  - guExessi -< - gIl -:: -IsGTh -> -rhs - ); - -1852 - gme -< -tyme - - gRhsT -> - -1853 - gByExessi -< - gT -, - gIl -:: -IsLessThOrEquTo -, -RhsT - const&> - -1854 - gݔ - < -RhsT - cڡ& -rhs - ) { - -1855  -uExessi -< -Il -:: -IsLessThOrEquTo -> -rhs - ); - -1858 - gme -< -tyme - - gRhsT -> - -1859 - gByExessi -< - gT -, - gIl -:: -IsGThOrEquTo -, -RhsT - const&> - -1860 - gݔ - > -RhsT - cڡ& -rhs - ) { - -1861  -uExessi -< -Il -:: -IsGThOrEquTo -> -rhs - ); - -1864 - gByExessi -< - gT -, - gIl -:: -IsEquTo -, - gbo -> - gݔ - = -bo - -rhs - ) { - -1865  -uExessi -< -Il -:: -IsEquTo -> -rhs - ); - -1868 - gByExessi -< - gT -, - gIl -:: -IsNEquTo -, - gbo -> - gݔ - ! -bo - -rhs - ) { - -1869  -uExessi -< -Il -:: -IsNEquTo -> -rhs - ); - -1872  -dExessi -() { - -1873 - gm_uthy - = -m_lhs - ? -ue - : -l -; - -1874 - gm_rb - - -1875 . -tResuTy - -m_uthy - ) - -1876 . -dExessi -* -this - ); - -1879 -vtu -  -cڡruExessi - -d -:: -rg -& -de - ) cڡ -CATCH_OVERRIDE - { - -1880 -de - = -Cch -:: -toSg - -m_lhs - ); - -1883 - give -: - -1884 -me -< -Il -:: -Ot - -Op -, -tyme - - gRhsT -> - -1885 - gByExessi -< - gT -, - gOp -, - gRhsT -&> -uExessi - -RhsT -& -rhs - ) const { - -1886  - gByExessi -< - gT -, - gOp -, - gRhsT -&> - gm_rb -, - gm_lhs -, - grhs - ); - -1889 - gme -< - gIl -:: -Ot - -Op -> - -1890 -ByExessi -< -T -, - gOp -, - gbo -> -uExessi - -bo - -rhs - ) const { - -1891  - gByExessi -< - gT -, - gOp -, - gbo -> - gm_rb -, - gm_lhs -, - grhs - ); - -1894 - give -: - -1895 -ResuBud -& -m_rb -; - -1896 -T - - gm_lhs -; - -1897 -bo - - gm_uthy -; - -1900 - gme -< -tyme - - gLhsT -, - gIl -:: -Ot - -Op -,ym - gRhsT -> - -1901 as - cByExessi - : -public - -DecompodExessi - { - -1902 -public -: - -1903 -ByExessi - -ResuBud -& -rb -, -LhsT - -lhs -, -RhsT - -rhs - ) - -1904 : -m_rb - -rb - ), -m_lhs - -lhs - ), -m_rhs - -rhs - ) {} - -1906 - gByExessi -& - gݔ - = ( -ByExessi -& ); - -1908  -dExessi -() const { - -1909 - gm_rb - - -1910 . -tResuTy - -Il -:: -com -< -Op -> -m_lhs -, -m_rhs - ) ) - -1911 . -dExessi -* -this - ); - -1914 -vtu - -bo - -isByExessi -(cڡ - gCATCH_OVERRIDE - { - -1915  - gue -; - -1918 -vtu -  -cڡruExessi - -d -:: -rg -& -de - ) cڡ -CATCH_OVERRIDE - { - -1919 -d -:: -rg - -lhs - = -Cch -:: -toSg - -m_lhs - ); - -1920 - gd -:: -rg - -rhs - = -Cch -:: -toSg - -m_rhs - ); - -1921  - gdim - = -lhs -. -size -(+ -rhs -.size() < 40 && - -1922 -lhs -. -fd -('\n'= -d -:: -rg -:: -os - && - -1923 -rhs -. -fd -('\n'= -d -:: -rg -:: -os - ? ' ' : '\n'; - -1924 - gde -. -rve -7 + -lhs -. -size -(+ -rhs -.size() ); - -1929 - gde - = -lhs -; - -1930 - gde - + -dim -; - -1931 - gde - + -Il -:: -OtTs -< -Op ->:: -gName -(); - -1932 - gde - + -dim -; - -1933 - gde - + -rhs -; - -1936 - give -: - -1937 -ResuBud -& -m_rb -; - -1938 -LhsT - - gm_lhs -; - -1939 -RhsT - - gm_rhs -; - -1942 - gme -< -tyme - - gArgT -,ym - gMchT -> - -1943 as - cMchExessi - : -public - -DecompodExessi - { - -1944 -public -: - -1945 -MchExessi - -ArgT - -g -, -MchT - -mch -, cڡ* -mchSg - ) - -1946 : -m_g - -g - ), -m_mch - -mch - ), -m_mchSg - -mchSg - ) {} - -1948 -vtu - -bo - -isByExessi -(cڡ - gCATCH_OVERRIDE - { - -1949  - gue -; - -1952 -vtu -  -cڡruExessi - -d -:: -rg -& -de - ) cڡ -CATCH_OVERRIDE - { - -1953 -d -:: -rg - -mchAsSg - = -m_mch -. -toSg -(); - -1954 - gde - = -Cch -:: -toSg - -m_g - ); - -1955 - gde - += ' '; - -1956 if - gmchAsSg - = -Da -:: -urbSg - ) - -1957 -de - + -m_mchSg -; - -1959 - gde - + -mchAsSg -; - -1962 - give -: - -1963 -ArgT - -m_g -; - -1964 -MchT - - gm_mch -; - -1965 cڡ* - gm_mchSg -; - -1971 -mea - - gCch - { - -1973 - gme -< -tyme - - gT -> - -1974 - gExessiLhs -< -T - cڡ&> - gResuBud -:: -ݔ - * -this -, -ݔd - ); - -1978 -le - - gExessiLhs -< - gbo -> - gResuBud -:: -ݔ - < -bo - -vue - ) { - -1979  -ExessiLhs -< -bo ->* -this -, -vue - ); - -1982 - gme -< -tyme - - gArgT -,ym - gMchT -> - -1983  - gResuBud -:: -uMch - -ArgT - cڡ& -g -, -MchT - cڡ& -mch -, - -1984 cڡ* -mchSg - ) { - -1985 - gMchExessi -< -ArgT - cڡ&, -MchT - cڡ&> -ex - -g -, -mch -, -mchSg - ); - -1986 -tResuTy - -mch -. -mch - -g - ) ); - -1987 -dExessi - -ex - ); - -1993  - #TWOBLUECUBES_CATCH_MESSAGE_H_INCLUDED - - - ) - -1995  - ~ - -1997 -mea - - gCch - { - -1999  - sMesgeInfo - { - -2000 -MesgeInfo - -d -:: -rg - cڡ& -_maoName -, - -2001 -SourLeInfo - cڡ& -_leInfo -, - -2002 -ResuWas -:: -OfTy - -_ty - ); - -2004 - gd -:: -rg - -maoName -; - -2005 -SourLeInfo - - gleInfo -; - -2006 - gResuWas -:: -OfTy - -ty -; - -2007 - gd -:: -rg - -mesge -; - -2008  - gqu -; - -2010 -bo - - gݔ - = -MesgeInfo - cڡ& -h - ) const { - -2011  -qu - = -h -.sequence; - -2013 -bo - - gݔ - < ( -MesgeInfo - cڡ& - gh - ) const { - -2014  - gqu - < - gh -.sequence; - -2016 - give -: - -2017  -globCou -; - -2020  - sMesgeBud - { - -2021 -MesgeBud - -d -:: -rg - cڡ& -maoName -, - -2022 -SourLeInfo - cڡ& -leInfo -, - -2023 -ResuWas -:: -OfTy - -ty - ) - -2024 : -m_fo - -maoName -, -leInfo -, -ty - ) - -2027 - gme -< -tyme - - gT -> - -2028 - gMesgeBud -& - gݔ - << ( -T - cڡ& - gvue - ) { - -2029 - gm_am - << - gvue -; - -2030  * - gthis -; - -2033 -MesgeInfo - - gm_fo -; - -2034 - gd -:: -orgam - -m_am -; - -2037 as - cScedMesge - { - -2038 - gpublic -: - -2039 -ScedMesge - -MesgeBud - cڡ& -bud - ); - -2040 -ScedMesge -ScedMesgcڡ& -h - ); - -2041 ~ -ScedMesge -(); - -2043 -MesgeInfo - - gm_fo -; - -2049  - #TWOBLUECUBES_CATCH_INTERFACES_CAPTURE_H_INCLUDED - - - ) - -2051  - ~ - -2053 -mea - - gCch - { - -2055 -ass - - gTeCa -; - -2056 -ass - - gAsiResu -; - -2057  - gAsiInfo -; - -2058  - gSeiInfo -; - -2059  - gSeiEndInfo -; - -2060  - gMesgeInfo -; - -2061 -ass - - gScedMesgeBud -; - -2062  - gCous -; - -2064  - sIResuCtu - { - -2066 - gvtu - ~ -IResuCtu -(); - -2068 -vtu -  -asiEnded - -AsiResu - cڡ& -su - ) = 0; - -2069 -vtu - -bo - -iSed - -SeiInfo - cڡ& -iInfo -, - -2070 -Cous -& -asis - ) = 0; - -2071 -vtu -  -iEnded - -SeiEndInfo - cڡ& -dInfo - ) = 0; - -2072 -vtu -  -iEndedEly - -SeiEndInfo - cڡ& -dInfo - ) = 0; - -2073 -vtu -  -pushScedMesge - -MesgeInfo - cڡ& -mesge - ) = 0; - -2074 -vtu -  -pScedMesge - -MesgeInfo - cڡ& -mesge - ) = 0; - -2076 -vtu - - gd -:: -rg - -gCutTeName -() const = 0; - -2077 -vtu - cڡ -AsiResu -* -gLaResu -() const = 0; - -2079 -vtu -  -exiElyR܋d -() = 0; - -2081 -vtu -  -hdFECdi - -d -:: -rg - cڡ& -mesge - ) = 0; - -2083 -vtu - -bo - -ϡAsiPasd -() = 0; - -2084 -vtu -  -asiPasd -() = 0; - -2085 -vtu -  -asiRun -() = 0; - -2088 - gIResuCtu -& -gResuCtu -(); - -2092  - #TWOBLUECUBES_CATCH_DEBUGGER_H_INCLUDED - - - ) - -2095  - #TWOBLUECUBES_CATCH_PLATFORM_H_INCLUDED - - - ) - -2097 #i -defed -( -__MAC_OS_X_VERSION_MIN_REQUIRED -) - -2098  - #CATCH_PLATFORM_MAC - - - ) - -2099 #i -defed -( -__IPHONE_OS_VERSION_MIN_REQUIRED -) - -2100  - #CATCH_PLATFORM_IPHONE - - - ) - -2101 #i -defed -( -lux -|| defed( -__lux -|| defed( -__lux__ -) - -2102  - #CATCH_PLATFORM_LINUX - - - ) - -2103 #i -defed -( -WIN32 -|| defed( -__WIN32__ -|| defed( -_WIN32 -|| defed( -_MSC_VER -) - -2104  - #CATCH_PLATFORM_WINDOWS - - - ) - -2105 #i! -defed -( -NOMINMAX -&& !defed( -CATCH_CONFIG_NO_NOMINMAX -) - -2106  - #CATCH_DEFINES_NOMINMAX - - - ) - -2108 #i! -defed -( -WIN32_LEAN_AND_MEAN -&& !defed( -CATCH_CONFIG_NO_WIN32_LEAN_AND_MEAN -) - -2109  - #CATCH_DEFINES_WIN32_LEAN_AND_MEAN - - - ) - -2113  - ~ - -2115 -mea - - gCch -{ - -2117 -bo - -isDebuggAive -(); - -2118  -wreToDebugCse - -d -:: -rg - cڡ& -xt - ); - -2121 #ifde -CATCH_PLATFORM_MAC - - -2125 #i -defed -( -__c64__ -|| defed( -__c__ -) - -2126  - #CATCH_TRAP -() \ - -2127 - `__asm__ -("li0, 20\nsc\nnop\nli0, 37\nli4, 2\nsc\nnop\n" \ - -2128 : : : "memy","r0","r3","r4" ) - - ) - -2130  - #CATCH_TRAP -( - `__asm__ -("$3\n" : : ) - - ) - -2133 #i -defed -( -CATCH_PLATFORM_LINUX -) - -2137 #i -defed -( -__GNUC__ -&& (defed( -__i386 -|| defed( -__x86_64 -)) - -2138  - #CATCH_TRAP -( -asm - vީ("$3" - - ) - -2140  - ~ - -2142  - #CATCH_TRAP -( - `i -( -SIGTRAP -) - - ) - -2144 #i -defed -( -_MSC_VER -) - -2145  - #CATCH_TRAP -( - `__debugbak -() - - ) - -2146 #i -defed -( -__MINGW32__ -) - -2147 "C" - $__deec -( -dimpt - -__d - - `DebugBak -(); - -2148  - #CATCH_TRAP -( - `DebugBak -() - - ) - -2151 #ifde -CATCH_TRAP - - -2152  - #CATCH_BREAK_INTO_DEBUGGER -(if -Cch -:: - `isDebuggAive -({ - `CATCH_TRAP -(); - } - - ) -} - -2154  - #CATCH_BREAK_INTO_DEBUGGER -( -Cch -:: - `waysTrue -(); - - ) - -2158  - #TWOBLUECUBES_CATCH_INTERFACES_RUNNER_H_INCLUDED - - - ) - -2160 -mea - - gCch - { - -2161 -ass - - gTeCa -; - -2163  - sIRu” - { - -2164 - gvtu - ~ -IRu” -(); - -2165 -vtu - -bo - -abtg -() const = 0; - -2169 #i -defed -( -CATCH_CONFIG_FAST_COMPILE -) - -2174  - #INTERNAL_CATCH_REACT - -suBud - ) \ - -2175 -suBud -. - `a -(); - - ) - -2182  - #INTERNAL_CATCH_TEST_NO_TRY - -maoName -, -suDiosi -, -ex - ) \ - -2184 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, #ex, -suDiosi - ); \ - -2185 -__tchResu -. - `tExiGud -(); \ - -2186 -CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS - \ - -2187 -__tchResu - < -ex - ). - `dExessi -(); \ - -2188 -CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS - \ - -2189 -__tchResu -. - `untExiGud -(); \ - -2190 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2191 }  -Cch -:: - `isTrue - -l - && -ic_ -< -bo ->!!( -ex -) ) ) ) - -2193 - - ) - -2194  - #INTERNAL_CHECK_THAT_NO_TRY - -maoName -, -mch -, -suDiosi -, -g - ) \ - -2196 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, #g ", " #mch, -suDiosi - ); \ - -2197 -__tchResu -. - `tExiGud -(); \ - -2198 -__tchResu -. - `uMch - -g -, -mch -, #matcher ); \ - -2199 -__tchResu -. - `untExiGud -(); \ - -2200 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2201 }  -Cch -:: - `waysF -() - - ) - -2209  - #INTERNAL_CATCH_REACT - -suBud - ) \ - -2210 if -suBud -. - `shouldDebugBak -( - `CATCH_BREAK_INTO_DEBUGGER -(); \ - -2211 -suBud -. - `a -(); - - ) - -2215  - #INTERNAL_CATCH_TEST - -maoName -, -suDiosi -, -ex - ) \ - -2217 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, #ex, -suDiosi - ); \ - -2218 -y - { \ - -2219 -CATCH_INTERNAL_SUPPRESS_PARENTHESES_WARNINGS - \ - -2220 -__tchResu - < -ex - ). - `dExessi -(); \ - -2221 -CATCH_INTERNAL_UNSUPPRESS_PARENTHESES_WARNINGS - \ - -2223 - `tch -( ... ) { \ - -2224 -__tchResu -. - `uAiveExi - -suDiosi - ); \ - -2226 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2227 }  -Cch -:: - `isTrue - -l - && -ic_ -< -bo ->!!( -ex -) ) ) ) - -2229 - - ) - -2231  - #INTERNAL_CATCH_IF - -maoName -, -suDiosi -, -ex - ) \ - -2232 - `INTERNAL_CATCH_TEST - -maoName -, -suDiosi -, -ex - ); \ - -2233 if -Cch -:: - `gResuCtu -(). - `ϡAsiPasd -() - - ) - -2236  - #INTERNAL_CATCH_ELSE - -maoName -, -suDiosi -, -ex - ) \ - -2237 - `INTERNAL_CATCH_TEST - -maoName -, -suDiosi -, -ex - ); \ - -2238 if! -Cch -:: - `gResuCtu -(). - `ϡAsiPasd -() - - ) - -2241  - #INTERNAL_CATCH_NO_THROW - -maoName -, -suDiosi -, -ex - ) \ - -2243 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, #ex, -suDiosi - ); \ - -2244 -y - { \ - -2245 -ic_ -<>( -ex -); \ - -2246 -__tchResu -. - `uResu - -Cch -:: -ResuWas -:: -Ok - ); \ - -2248 - `tch -( ... ) { \ - -2249 -__tchResu -. - `uAiveExi - -suDiosi - ); \ - -2251 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2252 }  -Cch -:: - `waysF -() - - ) - -2255  - #INTERNAL_CATCH_THROWS - -maoName -, -suDiosi -, -mch -, -ex - ) \ - -2257 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, #ex, -suDiosi -, #matcher ); \ - -2258 if -__tchResu -. - `lowThrows -() ) \ - -2259 -y - { \ - -2260 -ic_ -<>( -ex -); \ - -2261 -__tchResu -. - `uResu - -Cch -:: -ResuWas -:: -DidThrowExi - ); \ - -2263 - `tch -( ... ) { \ - -2264 -__tchResu -. - `uExedExi - -mch - ); \ - -2267 -__tchResu -. - `uResu - -Cch -:: -ResuWas -:: -Ok - ); \ - -2268 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2269 }  -Cch -:: - `waysF -() - - ) - -2272  - #INTERNAL_CATCH_THROWS_AS - -maoName -, -exiTy -, -suDiosi -, -ex - ) \ - -2274 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, #ex ", " #exiTy, -suDiosi - ); \ - -2275 if -__tchResu -. - `lowThrows -() ) \ - -2276 -y - { \ - -2277 -ic_ -<>( -ex -); \ - -2278 -__tchResu -. - `uResu - -Cch -:: -ResuWas -:: -DidThrowExi - ); \ - -2280 - `tch - -exiTy - ) { \ - -2281 -__tchResu -. - `uResu - -Cch -:: -ResuWas -:: -Ok - ); \ - -2283 - `tch -( ... ) { \ - -2284 -__tchResu -. - `uAiveExi - -suDiosi - ); \ - -2287 -__tchResu -. - `uResu - -Cch -:: -ResuWas -:: -Ok - ); \ - -2288 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2289 }  -Cch -:: - `waysF -() - - ) - -2292 #ifde -CATCH_CONFIG_VARIADIC_MACROS - - -2293  - #INTERNAL_CATCH_MSG - -maoName -, -mesgeTy -, -suDiosi -, ... ) \ - -2295 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, "", -suDiosi - ); \ - -2296 -__tchResu - << -__VA_ARGS__ - + :: -Cch -:: - `SmEndSt -(); \ - -2297 -__tchResu -. - `uResu - -mesgeTy - ); \ - -2298 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2299 }  -Cch -:: - `waysF -() - - ) - -2301  - #INTERNAL_CATCH_MSG - -maoName -, -mesgeTy -, -suDiosi -, -log - ) \ - -2303 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, "", -suDiosi - ); \ - -2304 -__tchResu - << -log - + :: -Cch -:: - `SmEndSt -(); \ - -2305 -__tchResu -. - `uResu - -mesgeTy - ); \ - -2306 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2307 }  -Cch -:: - `waysF -() - - ) - -2311  - #INTERNAL_CATCH_INFO - -maoName -, -log - ) \ - -2312 -Cch -:: -ScedMesge - - `INTERNAL_CATCH_UNIQUE_NAME - -scedMesge - ) = Cch:: - `MesgeBud - -maoName -, -CATCH_INTERNAL_LINEINFO -, Cch:: -ResuWas -:: -Info - ) << -log -; - - ) - -2315  - #INTERNAL_CHECK_THAT - -maoName -, -mch -, -suDiosi -, -g - ) \ - -2317 -Cch -:: -ResuBud - - `__tchResu - -maoName -, -CATCH_INTERNAL_LINEINFO -, #g ", " #mch, -suDiosi - ); \ - -2318 -y - { \ - -2319 -__tchResu -. - `uMch - -g -, -mch -, #matcher ); \ - -2320 } - `tch -( ... ) { \ - -2321 -__tchResu -. - `uAiveExi - -suDiosi - | -Cch -:: -ResuDiosi -:: -CtueOnFau - ); \ - -2323 - `INTERNAL_CATCH_REACT - -__tchResu - ) \ - -2324 }  -Cch -:: - `waysF -() - - ) - -2327  - #TWOBLUECUBES_CATCH_SECTION_H_INCLUDED - - - ) - -2330  - #TWOBLUECUBES_CATCH_SECTION_INFO_H_INCLUDED - - - ) - -2333  - #TWOBLUECUBES_CATCH_TOTALS_HPP_INCLUDED - - - ) - -2335  - ~ - -2337 -mea - - gCch - { - -2339  - sCous - { - -2340 -Cous -(: -sd -0 ), -ed -0 ), -edButOk -( 0 ) {} - -2342 -Cous - - gݔ - - ( Coucڡ& - gh - ) const { - -2343 -Cous - - gdiff -; - -2344 - gdiff -. - gsd - = -sd - - -h -.passed; - -2345 - gdiff -. - ged - = -ed - - -h -.failed; - -2346 - gdiff -. - gedButOk - = -edButOk - - -h -.failedButOk; - -2347  - gdiff -; - -2349 - gCous -& - gݔ - + -Cous - cڡ& -h - ) { - -2350 -sd - + -h -.passed; - -2351 - ged - + -h -. -ed -; - -2352 - gedButOk - + -h -. -edButOk -; - -2353  * - gthis -; - -2356 - gd -:: -size_t - -tٮ -() const { - -2357  -sd - + -ed - + -edButOk -; - -2359 -bo - -lPasd -() const { - -2360  - ged - =0 && -edButOk - == 0; - -2362 -bo - -lOk -() const { - -2363  - ged - == 0; - -2366 - gd -:: -size_t - -sd -; - -2367 - gd -:: -size_t - -ed -; - -2368 - gd -:: -size_t - -edButOk -; - -2371  - sTٮs - { - -2373 -Tٮs - - gݔ - - ( Tٮcڡ& - gh - ) const { - -2374 -Tٮs - - gdiff -; - -2375 - gdiff -. - gasis - = -asis - - -h -.assertions; - -2376 - gdiff -. - gCas - = -Cas - - -h -.testCases; - -2377  - gdiff -; - -2380 -Tٮs - -d -Tٮcڡ& -evTٮs - ) const { - -2381 -Tٮs - - gdiff - = * -this - - -evTٮs -; - -2382 if - gdiff -. - gasis -. - ged - > 0 ) - -2383 ++ - gdiff -. - gCas -. - ged -; - -2384 if - gdiff -. - gasis -. - gedButOk - > 0 ) - -2385 ++ - gdiff -. - gCas -. - gedButOk -; - -2387 ++ - gdiff -. - gCas -. - gsd -; - -2388  - gdiff -; - -2391 - gTٮs -& - gݔ - + -Tٮs - cڡ& -h - ) { - -2392 -asis - + -h -.assertions; - -2393 - gCas - + -h -. -Cas -; - -2394  * - gthis -; - -2397 -Cous - - gasis -; - -2398 -Cous - - gCas -; - -2402  - ~ - -2404 -mea - - gCch - { - -2406  - sSeiInfo - { - -2407 - gSeiInfo - - -2408 -SourLeInfo - cڡ& - g_leInfo -, - -2409 - gd -:: -rg - cڡ& -_me -, - -2410 - gd -:: -rg - cڡ& -_desti - = -d -::string() ); - -2412 - gd -:: -rg - -me -; - -2413 - gd -:: -rg - -desti -; - -2414 -SourLeInfo - - gleInfo -; - -2417  - sSeiEndInfo - { - -2418 -SeiEndInfo - -SeiInfo - cڡ& -_iInfo -, -Cous - cڡ& -_evAsis -,  -_dutiInSecds - ) - -2419 : -iInfo - -_iInfo - ), -evAsis - -_evAsis - ), -dutiInSecds - -_dutiInSecds - ) - -2422 -SeiInfo - - giInfo -; - -2423 -Cous - - gevAsis -; - -2424  - gdutiInSecds -; - -2430  - #TWOBLUECUBES_CATCH_TIMER_H_INCLUDED - - - ) - -2432 #ifde -_MSC_VER - - -2434 -mea - - gCch - { - -2435  - tUI64 -; - -2438  - ~ - -2439 -mea - - gCch - { - -2440  -ut64_t - - tUI64 -; - -2444 -mea - - gCch - { - -2445 as - cTim - { - -2446 - gpublic -: - -2447 -Tim -(: -m_ticks -( 0 ) {} - -2448  -t -(); - -2449  -gEpdMiocds -() const; - -2450  -gEpdMlicds -() const; - -2451  -gEpdSecds -() const; - -2453 - give -: - -2454 -UI64 - -m_ticks -; - -2459  - ~ - -2461 -mea - - gCch - { - -2463 as - cSei - : -NCyab - { - -2464 -public -: - -2465 -Sei - -SeiInfo - cڡ& -fo - ); - -2466 ~ -Sei -(); - -2469 -ݔ - -bo -() const; - -2471 - give -: - -2472 -SeiInfo - -m_fo -; - -2474 - gd -:: -rg - -m_me -; - -2475 -Cous - - gm_asis -; - -2476 -bo - - gm_iInuded -; - -2477 -Tim - - gm_tim -; - -2482 #ifde -CATCH_CONFIG_VARIADIC_MACROS - - -2483  - #INTERNAL_CATCH_SECTION -( ... ) \ - -2484 if -Cch -:: -Sei - cڡ& - `INTERNAL_CATCH_UNIQUE_NAME - -tch__Sei - ) = Cch:: - `SeiInfo - -CATCH_INTERNAL_LINEINFO -, -__VA_ARGS__ - ) ) - - ) - -2486  - #INTERNAL_CATCH_SECTION - -me -, -desc - ) \ - -2487 if -Cch -:: -Sei - cڡ& - `INTERNAL_CATCH_UNIQUE_NAME - -tch__Sei - ) = Cch:: - `SeiInfo - -CATCH_INTERNAL_LINEINFO -, -me -, -desc - ) ) - - ) - -2491  - #TWOBLUECUBES_CATCH_GENERATORS_HPP_INCLUDED - - - ) - -2493  - ~ - -2494  - ~ - -2495  - ~ - -2497 -mea - - gCch - { - -2499 - gme -< -tyme - - gT -> - -2500  - sIG - { - -2501 - gvtu - ~ -IG -() {} - -2502 -vtu - -T - -gVue - -d -:: -size_t - -dex - ) const = 0; - -2503 -vtu - - gd -:: -size_t - -size - () const = 0; - -2506 - gme -< -tyme - - gT -> - -2507 -ass - - gBwnG - : -public - -IG -< -T -> { - -2508 -public -: - -2509 -BwnG - -T - -om -, T -to - ) : -m_om -om ), -m_to -(o ){} - -2511 -vtu - -T - -gVue - -d -:: -size_t - -dex - ) const { - -2512  -m_om -+ -ic_ -<> -dex - ); - -2515 -vtu - - gd -:: -size_t - -size -() const { - -2516  -ic_ -< -d -:: -size_t ->1+ -m_to -- -m_om - ); - -2519 - give -: - -2521 -T - -m_om -; - -2522 -T - - gm_to -; - -2525 - gme -< -tyme - - gT -> - -2526 -ass - - gVuesG - : -public - -IG -< -T -> { - -2527 -public -: - -2528 -VuesG -(){} - -2530  -add - -T - -vue - ) { - -2531 -m_vues -. -push_back - -vue - ); - -2534 -vtu - -T - -gVue - -d -:: -size_t - -dex - ) const { - -2535  -m_vues -[ -dex -]; - -2538 -vtu - - gd -:: -size_t - -size -() const { - -2539  -m_vues -. -size -(); - -2542 - give -: - -2543 -d -:: -ve -< -T -> -m_vues -; - -2546 - gme -< -tyme - - gT -> - -2547 as - cComposeG - { - -2548 - gpublic -: - -2549 -ComposeG -(: -m_tٮSize -( 0 ) {} - -2552 -ComposeG -ComposeG& -h - ) - -2553 : -m_feInfo - -h -.m_fileInfo ), - -2554 -m_tٮSize -( 0 ) - -2556 -move - -h - ); - -2559 - gComposeG -& -tFeInfo -cڡ * -feInfo - ) { - -2560 - gm_feInfo - = -feInfo -; - -2561  * - gthis -; - -2564 ~ -ComposeG -() { - -2565 -deA - -m_compod - ); - -2568 -ݔ - -T - () const { - -2569 -size_t - - govlIndex - = -gCutCڋxt -(). -gGIndex - -m_feInfo -, -m_tٮSize - ); - -2571 -tyme - - gd -:: -ve -*>:: -cڡ_ - - - = -m_compod -. -beg -(); - -2572 -tyme - - gd -:: -ve -*>:: -cڡ_ - -End - = -m_compod -. -d -(); - -2573  -size_t - - gdex - = 0; - g - ! -End -; ++it ) - -2575 cڡ - gIG -< - gT ->* - gg - = * - -; - -2576 if - govlIndex - > -dex - && -ovlIndex - < index + -g --> -size -() ) - -2578  -g --> -gVue - -ovlIndex -- -dex - ); - -2580 - gdex - + -g --> -size -(); - -2582 -CATCH_INTERNAL_ERROR -( "Indexedastnd of generatedange" ); - -2583  -T -(); - -2586  -add -cڡ -IG -< -T ->* -g - ) { - -2587 - gm_tٮSize - + -g --> -size -(); - -2588 - gm_compod -. -push_back - -g - ); - -2591 - gComposeG -& -th - -ComposeG -& -h - ) { - -2592 -move - -h - ); - -2593  * - gthis -; - -2596 - gComposeG -& -th - -T - -vue - ) { - -2597 - gVuesG -< - gT ->* - gvuesG - = -w - -VuesG -< -T ->(); - -2598 - gvuesG --> -add - -vue - ); - -2599 -add - -vuesG - ); - -2600  * - gthis -; - -2603 - give -: - -2605  -move - -ComposeG -& -h - ) { - -2606 -m_compod -. - -m_compod. -d -(), -h -.m_compod. -beg -(), other.m_composed.end() ); - -2607 - gm_tٮSize - + -h -. -m_tٮSize -; - -2608 - gh -. - gm_compod -. -r -(); - -2611 - gd -:: -ve -*> -m_compod -; - -2612 - gd -:: -rg - -m_feInfo -; - -2613 -size_t - - gm_tٮSize -; - -2616 -mea - - gGs - - -2618 - gme -< -tyme - - gT -> - -2619 - gComposeG -< - gT -> -bwn - -T - -om -, T -to - ) { - -2620 - gComposeG -< - gT -> - ggs -; - -2621 - ggs -. -add - -w - -BwnG -< -T -> -om -, -to - ) ); - -2622  - ggs -; - -2625 - gme -< -tyme - - gT -> - -2626 - gComposeG -< - gT -> -vues - -T - -v1 -, T -v2 - ) { - -2627 - gComposeG -< - gT -> - ggs -; - -2628 - gVuesG -< - gT ->* - gvuesG - = -w - -VuesG -< -T ->(); - -2629 - gvuesG --> -add - -v1 - ); - -2630 - gvuesG --> -add - -v2 - ); - -2631 - ggs -. -add - -vuesG - ); - -2632  - ggs -; - -2635 - gme -< -tyme - - gT -> - -2636 - gComposeG -< - gT -> -vues - -T - -v1 -, T -v2 -, T -v3 - ){ - -2637 - gComposeG -< - gT -> - ggs -; - -2638 - gVuesG -< - gT ->* - gvuesG - = -w - -VuesG -< -T ->(); - -2639 - gvuesG --> -add - -v1 - ); - -2640 - gvuesG --> -add - -v2 - ); - -2641 - gvuesG --> -add - -v3 - ); - -2642 - ggs -. -add - -vuesG - ); - -2643  - ggs -; - -2646 - gme -< -tyme - - gT -> - -2647 - gComposeG -< - gT -> -vues - -T - -v1 -, T -v2 -, T -v3 -, T -v4 - ) { - -2648 - gComposeG -< - gT -> - ggs -; - -2649 - gVuesG -< - gT ->* - gvuesG - = -w - -VuesG -< -T ->(); - -2650 - gvuesG --> -add - -v1 - ); - -2651 - gvuesG --> -add - -v2 - ); - -2652 - gvuesG --> -add - -v3 - ); - -2653 - gvuesG --> -add - -v4 - ); - -2654 - ggs -. -add - -vuesG - ); - -2655  - ggs -; - -2660 -usg - -mea - - gGs -; - -2664  - #INTERNAL_CATCH_LINESTR2 - -le - ) #le - - ) - -2665  - #INTERNAL_CATCH_LINESTR - -le - ) - `INTERNAL_CATCH_LINESTR2 -l) - - ) - -2667  - #INTERNAL_CATCH_GENERATE - -ex - )x. - `tFeInfo - -__FILE__ - "(" - `INTERNAL_CATCH_LINESTR - -__LINE__ - ) ")" ) - - ) - -2670  - #TWOBLUECUBES_CATCH_INTERFACES_EXCEPTION_H_INCLUDED - - - ) - -2672  - ~ - -2673  - ~ - -2676  - #TWOBLUECUBES_CATCH_INTERFACES_REGISTRY_HUB_H_INCLUDED - - - ) - -2678  - ~ - -2680 -mea - - gCch - { - -2682 -ass - - gTeCa -; - -2683  - gITeCaRegiry -; - -2684  - gIExiTnRegiry -; - -2685  - gIExiTn -; - -2686  - gIR܋rRegiry -; - -2687  - gIR܋rFay -; - -2688  - gITagAlsRegiry -; - -2690  - sIRegiryHub - { - -2691 - gvtu - ~ -IRegiryHub -(); - -2693 -vtu - -IR܋rRegiry - cڡ& -gR܋rRegiry -() const = 0; - -2694 -vtu - -ITeCaRegiry - cڡ& -gTeCaRegiry -() const = 0; - -2695 -vtu - -ITagAlsRegiry - cڡ& -gTagAlsRegiry -() const = 0; - -2697 -vtu - - gIExiTnRegiry -& -gExiTnRegiry -() = 0; - -2700  - sIMubRegiryHub - { - -2701 - gvtu - ~ -IMubRegiryHub -(); - -2702 -vtu -  -giR܋r - -d -:: -rg - cڡ& -me -, -P -< -IR܋rFay -> cڡ& -y - ) = 0; - -2703 -vtu -  -giLi - -P -< -IR܋rFay -> cڡ& -y - ) = 0; - -2704 -vtu -  -giTe - -TeCa - cڡ& -Info - ) = 0; - -2705 -vtu -  -giTn -cڡ -IExiTn -* - - ) = 0; - -2706 -vtu -  -giTagAls - -d -:: -rg - cڡ& -s -, std::rg cڡ& -g -, -SourLeInfo - cڡ& -leInfo - ) = 0; - -2709 - gIRegiryHub -& -gRegiryHub -(); - -2710 - gIMubRegiryHub -& -gMubRegiryHub -(); - -2711  -nUp -(); - -2712 - gd -:: -rg - -eAiveExi -(); - -2716 -mea - - gCch - { - -2718  - gd -:: - trg -(* - texiTneFuni -)(); - -2720  - gIExiTn -; - -2721  - gd -:: - tve - - tExiTns -; - -2723  - sIExiTn - { - -2724 - gvtu - ~ -IExiTn -(); - -2725 -vtu - - gd -:: -rg - -e - -ExiTns -:: -cڡ_ - - -, ExiTns::cڡ_ -End - ) const = 0; - -2728  - sIExiTnRegiry - { - -2729 - gvtu - ~ -IExiTnRegiry -(); - -2731 -vtu - - gd -:: -rg - -eAiveExi -() const = 0; - -2734 as - cExiTnRegir - { - -2735 - gme -< -tyme - - gT -> - -2736 as - cExiTn - : -public - -IExiTn - { - -2737 -public -: - -2739 -ExiTn - -d -:: -rg -(* -eFuni -) -T -& ) ) - -2740 : -m_eFuni - -eFuni - ) - -2743 -vtu - -d -:: -rg - -e - -ExiTns -:: -cڡ_ - - -, ExiTns::cڡ_ -End - ) cڡ -CATCH_OVERRIDE - { - -2744 -y - { - -2745 if - - = -End - ) - -2746 -throw -; - -2748  (* - g -)-> -e - - -+1, -End - ); - -2750 -tch - -T -& -ex - ) { - -2751  -m_eFuni - -ex - ); - -2755 - geed -: - -2756 -d -:: -rg -(* -m_eFuni -) -T -& ); - -2759 - gpublic -: - -2760 -me -< -tyme - -T -> - -2761 -ExiTnRegir - -d -:: -rg -(* -eFuni -) -T -& ) ) { - -2762 -gMubRegiryHub -(). -giTn - - -2763 -w - -ExiTn -< -T -> -eFuni - ) ); - -2769  - #INTERNAL_CATCH_TRANSLATE_EXCEPTION2 - -Name -, -sigtu - ) \ - -2770  -d -:: -rg - - `Name - -sigtu - ); \ - -2771 -mea -{ -Cch -:: -ExiTnRegir - - `INTERNAL_CATCH_UNIQUE_NAME - -tch__ExiRegir - )& -Name - ); }\ - -2772  -d -:: -rg - - `Name - -sigtu - ) - - ) - -2774  - #INTERNAL_CATCH_TRANSLATE_EXCEPTION - -sigtu - ) - `INTERNAL_CATCH_TRANSLATE_EXCEPTION2 - - `INTERNAL_CATCH_UNIQUE_NAME - -tch__ExiTn - ), sigtu ) - - ) - -2777  - #TWOBLUECUBES_CATCH_APPROX_HPP_INCLUDED - - - ) - -2779  - ~ - -2780  - ~ - -2782 #i -defed -( -CATCH_CONFIG_CPP11_TYPE_TRAITS -) - -2783  - ~ - -2786 -mea - - gCch - { - -2787 -mea - - gDa - { - -2789 as - cArox - { - -2790 - gpublic -: - -2791 -exic - -Arox - (  -vue - ) - -2792 : -m_s - -d -:: -numic_lims -<>:: -s -()*100 ), - -2793 -m_mg -( 0.0 ), - -2794 -m_s -( 1.0 ), - -2795 -m_vue - -vue - ) - -2798  -Arox - -cuom -() { - -2799  -Arox -( 0 ); - -2802 #i -defed -( -CATCH_CONFIG_CPP11_TYPE_TRAITS -) - -2804 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2805 -Arox - -ݔ -() -T - -vue - ) { - -2806 -Arox - -ox - -ic_ -<>( -vue -) ); - -2807 - gox -. -s - -m_s - ); - -2808 - gox -. -mg - -m_mg - ); - -2809 - gox -. -s - -m_s - ); - -2810  - gox -; - -2813 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2814 -exic - -Arox - -T - -vue - ): Arox( -ic_ -<>(value)) - -2817 -me - < -tyme - -T -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2818 -nd - -bo - -ݔ - =cڡ -T -& -lhs -, -Arox - cڡ& - grhs - ) { - -2820 aut - glhs_v - = ( -lhs -); - -2821 -bo - - gtiveOK - = -d -:: -bs -( -lhs_v - - -rhs -. -m_vue -:: -vue ->:: -ty -> - -2829 -nd - -bo - -ݔ - = -Arox - cڡ& -lhs -, cڡ - gT -& - grhs - ) { - -2830  - gݔ -== -rhs -, - glhs - ); - -2833 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2834 -nd - -bo - -ݔ - ! -T - -lhs -, -Arox - cڡ& - grhs - ) { - -2835  ! - gݔ -== -lhs -, - grhs - ); - -2838 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2839 -nd - -bo - -ݔ - ! -Arox - cڡ& -lhs -, -T - - grhs - ) { - -2840  ! - gݔ -== -rhs -, - glhs - ); - -2843 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2844 -nd - -bo - -ݔ - < -T - -lhs -, -Arox - cڡ& - grhs - ) { - -2845  ( - glhs -< - grhs -. - gm_vue - ||h= -rhs -; - -2848 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2849 -nd - -bo - -ݔ - < -Arox - cڡ& -lhs -, -T - - grhs - ) { - -2850  - glhs -. - gm_vue - < ( - grhs -||h= -rhs -; - -2853 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2854 -nd - -bo - -ݔ - > -T - -lhs -, -Arox - cڡ& - grhs - ) { - -2855  ( - glhs -> - grhs -. - gm_vue - ||h= -rhs -; - -2858 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2859 -nd - -bo - -ݔ - > -Arox - cڡ& -lhs -, -T - - grhs - ) { - -2860  - glhs -. - gm_vue - > ( - grhs -||h= -rhs -; - -2863 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2864 -Arox -& -s - -T - -wEps - ) { - -2865 -m_s - = ( -wEps -); - -2866  * - gthis -; - -2869 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2870 -Arox -& -mg - -T - -wMg - ) { - -2871 -m_mg - = ( -wMg -); - -2872  * - gthis -; - -2875 - gme - < -tyme - - gT -, - gtyme - =ym -d -:: -ab_if -:: -vue ->:: -ty -> - -2876 -Arox -& -s - -T - -wS - ) { - -2877 -m_s - = ( -wS -); - -2878  * - gthis -; - -2883 -Arox - -ݔ -() - gvue - ) { - -2884 -Arox - -ox - -vue - ); - -2885 - gox -. -s - -m_s - ); - -2886 - gox -. -mg - -m_mg - ); - -2887 - gox -. -s - -m_s - ); - -2888  - gox -; - -2891 -nd - -bo - - gݔ - = -lhs -, -Arox - cڡ& - grhs - ) { - -2893 -bo - - gtiveOK - = -d -:: -bs - -lhs - - -rhs -. -m_vue - )  -lhs -, -Arox - cڡ& - grhs - ) { - -2921  - glhs - > - grhs -. - gm_vue - ||h= -rhs -; - -2924 -nd - -bo - - gݔ - > -Arox - cڡ& -lhs -,  - grhs - ) { - -2925  - glhs -. - gm_vue - > - grhs - ||h= -rhs -; - -2928 - gArox -& -s - -wEps - ) { - -2929 - gm_s - = -wEps -; - -2930  * - gthis -; - -2933 - gArox -& -mg - -wMg - ) { - -2934 - gm_mg - = -wMg -; - -2935  * - gthis -; - -2938 - gArox -& -s - -wS - ) { - -2939 - gm_s - = -wS -; - -2940  * - gthis -; - -2944 - gd -:: -rg - -toSg -() const { - -2945 -d -:: -orgam - -oss -; - -2946 - goss - << "Arox" << - gCch -:: -toSg - -m_vue - ) << " )"; - -2947  - goss -. -r -(); - -2950 - give -: - -2951  -m_s -; - -2952  - gm_mg -; - -2953  - gm_s -; - -2954  - gm_vue -; - -2958 - gme -<> - -2959 -le - - gd -:: -rg - -toSg -< -Da -:: -Arox ->Da::Arox cڡ& -vue - ) { - -2960  -vue -. -toSg -(); - -2966  - #TWOBLUECUBES_CATCH_MATCHERS_STRING_H_INCLUDED - - - ) - -2968 -mea - - gCch - { - -2969 -mea - - gMchs - { - -2971 -mea - - gStdSg - { - -2973  - sCadSg - - -2975 -CadSg - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - ); - -2976 - gd -:: -rg - -adjuSg - -d -::rg cڡ& -r - ) const; - -2977 - gd -:: -rg - -SsivySuffix -() const; - -2979 - gCaSsive -:: -Choi - -m_Ssivy -; - -2980 - gd -:: -rg - -m_r -; - -2983  - gSgMchBa - : -MchBa -< -d -:: -rg -> { - -2984 -SgMchBa - -d -:: -rg - cڡ& -ݔi -, -CadSg - cڡ& -comt - ); - -2985 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE -; - -2987 -CadSg - - gm_comt -; - -2988 - gd -:: -rg - -m_ݔi -; - -2991  - gEqusMch - : -SgMchBa - { - -2992 -EqusMch - -CadSg - cڡ& -comt - ); - -2993 -vtu - -bo - -mch - -d -:: -rg - cڡ& -sour - ) cڡ -CATCH_OVERRIDE -; - -2995  - gCڏsMch - : -SgMchBa - { - -2996 -CڏsMch - -CadSg - cڡ& -comt - ); - -2997 -vtu - -bo - -mch - -d -:: -rg - cڡ& -sour - ) cڡ -CATCH_OVERRIDE -; - -2999  - gSsWhMch - : -SgMchBa - { - -3000 -SsWhMch - -CadSg - cڡ& -comt - ); - -3001 -vtu - -bo - -mch - -d -:: -rg - cڡ& -sour - ) cڡ -CATCH_OVERRIDE -; - -3003  - gEndsWhMch - : -SgMchBa - { - -3004 -EndsWhMch - -CadSg - cڡ& -comt - ); - -3005 -vtu - -bo - -mch - -d -:: -rg - cڡ& -sour - ) cڡ -CATCH_OVERRIDE -; - -3013 - gStdSg -:: -EqusMch - -Equs - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - = CaSsive:: -Yes - ); - -3014 - gStdSg -:: -CڏsMch - -Cڏs - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - = CaSsive:: -Yes - ); - -3015 - gStdSg -:: -EndsWhMch - -EndsWh - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - = CaSsive:: -Yes - ); - -3016 - gStdSg -:: -SsWhMch - -SsWh - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - = CaSsive:: -Yes - ); - -3022  - #TWOBLUECUBES_CATCH_MATCHERS_VECTOR_H_INCLUDED - - - ) - -3024 -mea - - gCch - { - -3025 -mea - - gMchs - { - -3027 -mea - - gVe - { - -3029 - gme -< -tyme - - gT -> - -3030  - gCڏsEmtMch - : -MchBa -< -d -:: -ve -< -T ->, - gT -> { - -3032 -CڏsEmtMch -( -T - cڡ & -comt -: -m_comt -( comparator) {} - -3034 -bo - -mch -( -d -:: -ve -< -T -> cڡ & -v -cڡ -CATCH_OVERRIDE - { - -3035  -d -:: -fd -( -v -. -beg -(), v. -d -(), -m_comt -) != v.end(); - -3038 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -3039  "Cڏs: " + -Cch -:: -toSg - -m_comt - ); - -3042 -T - cڡ& - gm_comt -; - -3045 - gme -< -tyme - - gT -> - -3046  - gCڏsMch - : -MchBa -< -d -:: -ve -< -T ->, - gd -::vector > { - -3048 -CڏsMch -( -d -:: -ve -< -T -> cڡ & -comt -: -m_comt -( comparator ) {} - -3050 -bo - -mch -( -d -:: -ve -< -T -> cڡ & -v -cڡ -CATCH_OVERRIDE - { - -3052 i( -m_comt -. -size -(> -v -.size()) - -3053  -l -; - -3054  -size_t - - gi - = 0; i < - gm_comt -. -size -(); ++i) - -3055 i( - gd -:: -fd -( -v -. -beg -(), v. -d -(), -m_comt -[ -i -]) == v.end()) - -3056  -l -; - -3057  - gue -; - -3059 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -3060  "Cڏs: " + -Cch -:: -toSg - -m_comt - ); - -3063 - gd -:: -ve -< -T -> cڡ& -m_comt -; - -3066 - gme -< -tyme - - gT -> - -3067  - gEqusMch - : -MchBa -< -d -:: -ve -< -T ->, - gd -::vector > { - -3069 -EqusMch -( -d -:: -ve -< -T -> cڡ & -comt -: -m_comt -( comparator ) {} - -3071 -bo - -mch -( -d -:: -ve -< -T -> cڡ & -v -cڡ -CATCH_OVERRIDE - { - -3076 i( -m_comt -. -size -(! -v -.size()) - -3077  -l -; - -3078  -size_t - - gi - = 0; i < - gv -. -size -(); ++i) - -3079 i( - gm_comt -[ -i -] ! -v -[i]) - -3080  -l -; - -3081  - gue -; - -3083 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -3084  "Equs: " + -Cch -:: -toSg - -m_comt - ); - -3086 - gd -:: -ve -< -T -> cڡ& -m_comt -; - -3094 - gme -< -tyme - - gT -> - -3095 - gVe -:: -CڏsMch -< -T -> -Cڏs - -d -:: -ve - cڡ& -comt - ) { - -3096  -Ve -:: -CڏsMch -< -T -> -comt - ); - -3099 - gme -< -tyme - - gT -> - -3100 - gVe -:: -CڏsEmtMch -< -T -> -VeCڏs -T cڡ& -comt - ) { - -3101  -Ve -:: -CڏsEmtMch -< -T -> -comt - ); - -3104 - gme -< -tyme - - gT -> - -3105 - gVe -:: -EqusMch -< -T -> -Equs - -d -:: -ve - cڡ& -comt - ) { - -3106  -Ve -:: -EqusMch -< -T -> -comt - ); - -3113  - #TWOBLUECUBES_CATCH_INTERFACES_TAG_ALIAS_REGISTRY_H_INCLUDED - - - ) - -3116  - #TWOBLUECUBES_CATCH_TAG_ALIAS_H_INCLUDED - - - ) - -3118  - ~ - -3120 -mea - - gCch - { - -3122  - sTagAls - { - -3123 -TagAls - -d -:: -rg - cڡ& -_g -, -SourLeInfo - -_leInfo - ) : -g -_g ), -leInfo -( _lineInfo ) {} - -3125 - gd -:: -rg - -g -; - -3126 -SourLeInfo - - gleInfo -; - -3129  - sRegirFTagAls - { - -3130 -RegirFTagAls -cڡ* -s -, cڡ* -g -, -SourLeInfo - cڡ& -leInfo - ); - -3135  - #CATCH_REGISTER_TAG_ALIAS - -s -, -ec - ) -mea -{ -Cch -:: -RegirFTagAls - - `INTERNAL_CATCH_UNIQUE_NAME - -AutoRegiTagAls - )Юs, sc, -CATCH_INTERNAL_LINEINFO - ); } - - ) - -3137  - #TWOBLUECUBES_CATCH_OPTION_HPP_INCLUDED - - - ) - -3139 -mea - - gCch - { - -3142 - gme -< -tyme - - gT -> - -3143 as - cOi - { - -3144 - gpublic -: - -3145 -Oi -(: -nuabVue - -CATCH_NULL - ) {} - -3146 -Oi - -T - cڡ& -_vue - ) - -3147 : -nuabVue - -w - -age - ) -T - -_vue - ) ) - -3149 -Oi -Oi cڡ& -_h - ) - -3150 : -nuabVue - -_h - ? -w - -age - ) -T -*_h ) : -CATCH_NULL - ) - -3153 ~ -Oi -() { - -3154 -t -(); - -3157 - gOi -& - gݔ - -Oi - cڡ& -_h - ) { - -3158 if& -_h - ! -this - ) { - -3159 -t -(); - -3160 if - g_h - ) - -3161 - gnuabVue - = -w - -age - ) -T -* -_h - ); - -3163  * - gthis -; - -3165 - gOi -& - gݔ - = ( -T - cڡ& -_vue - ) { - -3166 -t -(); - -3167 - gnuabVue - = -w - -age - ) -T - -_vue - ); - -3168  * - gthis -; - -3171  -t -() { - -3172 if - gnuabVue - ) - -3173 - gnuabVue -->~ -T -(); - -3174 - gnuabVue - = -CATCH_NULL -; - -3177 - gT -& - gݔ -*({  * - gnuabVue -; } - -3178 -T - cڡ& - gݔ -*(cڡ {  * - gnuabVue -; } - -3179 -T -* - gݔ -->({  - gnuabVue -; } - -3180 cڡ -T -* - gݔ -->(cڡ {  - gnuabVue -; } - -3182 -T - -vueOr -T cڡ& -deuVue - ) const { - -3183  - gnuabVue - ? *nuabVu: -deuVue -; - -3186 -bo - -some -(cڡ {  - gnuabVue - ! -CATCH_NULL -; } - -3187 -bo - -ne -(cڡ {  - gnuabVue - = -CATCH_NULL -; } - -3189 -bo - - gݔ - !(cڡ {  - gnuabVue - = -CATCH_NULL -; } - -3190 -ݔ - - gSaBo -:: -ty -() const { - -3191  -SaBo -:: -makeSa - -some -() ); - -3194 - give -: - -3195 -T - * -nuabVue -; - -3197  - gage -[( -T -)]; - -3200  - gdummy1 -; - -3201 (* - gdummy2 -)(); - -3202  - gdummy3 -; - -3203 #ifde -CATCH_CONFIG_CPP11_LONG_LONG - - -3204  - gdummy4 -; - -3211 -mea - - gCch - { - -3213  - sITagAlsRegiry - { - -3214 - gvtu - ~ -ITagAlsRegiry -(); - -3215 -vtu - - gOi -< - gTagAls -> -fd - -d -:: -rg - cڡ& -s - ) const = 0; - -3216 -vtu - - gd -:: -rg - -exndAls - -d -::rg cڡ& -uxndedTeSc - ) const = 0; - -3218  -ITagAlsRegiry - cڡ& -g -(); - -3226  - #TWOBLUECUBES_CATCH_TEST_CASE_INFO_H_INCLUDED - - - ) - -3228  - ~ - -3229  - ~ - -3231 #ifde -__g__ - - -3232 #agm -g - -dgnoic - -push - - -3233 #agm -g - -dgnoic - -igned - "-Wpadded" - -3236 -mea - - gCch - { - -3238  - gITeCa -; - -3240  - sTeCaInfo - { - -3241 - eSclPrݔts -{ - -3242 - gNe - = 0, - -3243 - gIsHidd - = 1 << 1, - -3244 - gShouldFa - = 1 << 2, - -3245 - gMayFa - = 1 << 3, - -3246 - gThrows - = 1 << 4, - -3247 - gNP܏b - = 1 << 5 - -3250 -TeCaInfo - -d -:: -rg - cڡ& -_me -, - -3251 -d -:: -rg - cڡ& -_assName -, - -3252 -d -:: -rg - cڡ& -_desti -, - -3253 -d -:: -t - cڡ& -_gs -, - -3254 -SourLeInfo - cڡ& -_leInfo - ); - -3256 -TeCaInfo -TeCaInfcڡ& -h - ); - -3258 -nd -  -tTags - -TeCaInfo -& -CaInfo -, -d -:: -t - cڡ& -gs - ); - -3260 -bo - -isHidd -() const; - -3261 -bo - -throws -() const; - -3262 -bo - -okToFa -() const; - -3263 -bo - -exedToFa -() const; - -3265 - gd -:: -rg - -me -; - -3266 - gd -:: -rg - -assName -; - -3267 - gd -:: -rg - -desti -; - -3268 - gd -:: -t -< -d -:: -rg -> -gs -; - -3269 - gd -:: -t -< -d -:: -rg -> -lTags -; - -3270 - gd -:: -rg - -gsAsSg -; - -3271 -SourLeInfo - - gleInfo -; - -3272 -SclPrݔts - - gݔts -; - -3275 as - cTeCa - : -public - -TeCaInfo - { - -3276 -public -: - -3278 -TeCa - -ITeCa -* -Ca -, -TeCaInfo - cڡ& -fo - ); - -3279 -TeCa -TeCa cڡ& -h - ); - -3281 -TeCa - -whName - -d -:: -rg - cڡ& -_wName - ) const; - -3283  -voke -() const; - -3285 -TeCaInfo - cڡ& -gTeCaInfo -() const; - -3287  -sw - -TeCa -& -h - ); - -3288 -bo - - gݔ - = -TeCa - cڡ& -h - ) const; - -3289 -bo - - gݔ - < ( -TeCa - cڡ& - gh - ) const; - -3290 - gTeCa -& - gݔ - = ( -TeCa - cڡ& -h - ); - -3292 - give -: - -3293 -P -< -ITeCa -> - -; - -3296 -TeCa - -makeTeCa - -ITeCa -* -Ca -, - -3297 -d -:: -rg - cڡ& -assName -, - -3298 -d -:: -rg - cڡ& -me -, - -3299 -d -:: -rg - cڡ& -desti -, - -3300 -SourLeInfo - cڡ& -leInfo - ); - -3303 #ifde -__g__ - - -3304 #agm -g - -dgnoic - -p - - -3308 #ifde -__OBJC__ - - -3310  - #TWOBLUECUBES_CATCH_OBJC_HPP_INCLUDED - - - ) - -3312 #imp܈< -objc -/ -ruime -. -h -> - -3314  - ~ - -3323 @ -oc - - gOcFixtu - - -3325 @ - gtiڮ - - -3327 -( - gtUp -; - -3328 -( - gDown -; - -3330 @ -d - - -3332 -mea - - gCch - { - -3334 -ass - - gOcMhod - : -public - -ShedIm -< -ITeCa -> { - -3336 -public -: - -3337 -OcMhod - -Css - -s -, -SEL - -l - ) : -m_s -), -m_l -( sel ) {} - -3339 -vtu -  -voke -() const { - -3340 -id - - gobj - = [[ -m_s - -loc -] - -]; - -3342 -rfmOiڮSe - -obj -, @ - -( -tUp -) ); - -3343 -rfmOiڮSe - -obj -, -m_l - ); - -3344 -rfmOiڮSe - -obj -, @ - -( -Down -) ); - -3346 -cSaR - -obj - ); - -3348 - give -: - -3349 -vtu - ~ -OcMhod -() {} - -3351 -Css - -m_s -; - -3352 -SEL - - gm_l -; - -3355 -mea - - gDa -{ - -3357 -le - - gd -:: -rg - -gA٩i - -Css - -s -, - -3358 -d -:: -rg - cڡ& -n٩iName -, - -3359 -d -:: -rg - cڡ& -CaName - ) { - -3360 -NSSg -* -lS - = [[NSSg -loc -] -WhFm -:@"Cch_%s_%s", - gn٩iName -. -c_r -(), - gCaName -.c_str()]; - -3361 -SEL - - gl - = -NSSeFromSg - -lS - ); - -3362 -cSaR - -lS - ); - -3363 -id - - gvue - = -rfmOiڮSe - -s -, -l - ); - -3364 if - gvue - ) - -3365  [( -NSSg -*) -vue - -UTF8Sg -]; - -3370 -le - -size_t - -giTeMhods -() { - -3371 -size_t - - gnoTeMhods - = 0; - -3372  - gnoCss - = -objc_gCssLi - -CATCH_NULL -, 0 ); - -3374 -Css -* - gass - = ( -CATCH_UNSAFE_UNRETAINED - Cs*) -mloc -(Css* -noCss -); - -3375 -objc_gCssLi - -ass -, -noCss - ); - -3377   - gc - = 0; c < - gnoCss -; c++ ) { - -3378 -Css - - gs - = -ass -[ -c -]; - -3380 -u_t - - gcou -; - -3381 -Mhod -* - gmhods - = -ass_cyMhodLi - -s -, & -cou - ); - -3382  -u_t - - gm - = 0; m < - gcou - ; m++ ) { - -3383 -SEL - - g - = -mhod_gName -( -mhods -[ -m -]); - -3384 - gd -:: -rg - -mhodName - = -l_gName -( - -); - -3385 if -tsWh - -mhodName -, "Catch_TestCase_" ) ) { - -3386 - gd -:: -rg - -CaName - = -mhodName -. -subr -( 15 ); - -3387 - gd -:: -rg - -me - = -Da -:: -gA٩i - -s -, "Name", -CaName - ); - -3388 - gd -:: -rg - -desc - = -Da -:: -gA٩i - -s -, "Desti", -CaName - ); - -3389 cڡ * - gassName - = -ass_gName - -s - ); - -3391 -gMubRegiryHub -(). -giTe - -makeTeCa - -w - -OcMhod - -s -, - - ), -assName -, -me -. -c_r -(), -desc -.c_r(), -SourLeInfo -() ) ); - -3392 - gnoTeMhods -++; - -3395 - -( -mhods -); - -3398  - gnoTeMhods -; - -3401 -mea - - gMchs - { - -3402 -mea - - gIm - { - -3403 -mea - - gNSSgMchs - { - -3405  - gSgHd - : -MchBa -< -NSSg -*>{ - -3406 -SgHd - -NSSg -* -subr - ) : -m_subr -[sub -cy -] ){} - -3407 -SgHd -SgHd cڡ& -h - ) : -m_subr -[h.m_sub -cy -] ){} - -3408 -SgHd -() { - -3409 -cSaR - -m_subr - ); - -3412 -vtu - -bo - -mch - -NSSg -* -g - ) cڡ - gCATCH_OVERRIDE - { - -3413  - gl -; - -3416 -NSSg -* - gm_subr -; - -3419  - gEqus - : -SgHd - { - -3420 -Equs - -NSSg -* -subr - ) : -SgHd -( substr ){} - -3422 -vtu - -bo - -mch - -NSSg -* -r - ) cڡ -CATCH_OVERRIDE - { - -3423  ( -r - ! -n - || -m_subr - ==il ) && - -3424 [ -r - -isEquToSg -: -m_subr -]; - -3427 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -3428  "equrg: " + -Cch -:: -toSg - -m_subr - ); - -3432  - gCڏs - : -SgHd - { - -3433 -Cڏs - -NSSg -* -subr - ) : -SgHd -( substr ){} - -3435 -vtu - -bo - -mch - -NSSg -* -r - ) const { - -3436  ( -r - ! -n - || -m_subr - ==il ) && - -3437 [ -r - -ngeOfSg -: -m_subr -]. -loti - ! -NSNFound -; - -3440 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -3441  "cڏrg: " + -Cch -:: -toSg - -m_subr - ); - -3445  - gSsWh - : -SgHd - { - -3446 -SsWh - -NSSg -* -subr - ) : -SgHd -( substr ){} - -3448 -vtu - -bo - -mch - -NSSg -* -r - ) const { - -3449  ( -r - ! -n - || -m_subr - ==il ) && - -3450 [ -r - -ngeOfSg -: -m_subr -]. -loti - == 0; - -3453 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -3454  "twh: " + -Cch -:: -toSg - -m_subr - ); - -3457  - gEndsWh - : -SgHd - { - -3458 -EndsWh - -NSSg -* -subr - ) : -SgHd -( substr ){} - -3460 -vtu - -bo - -mch - -NSSg -* -r - ) const { - -3461  ( -r - ! -n - || -m_subr - ==il ) && - -3462 [ -r - -ngeOfSg -: -m_subr -]. -loti - =[ -ngth -] - [m_substrength]; - -3465 -vtu - - gd -:: -rg - -desibe -(cڡ -CATCH_OVERRIDE - { - -3466  "dwh: " + -Cch -:: -toSg - -m_subr - ); - -3473 -le - - gIm -:: -NSSgMchs -:: -Equs - - -3474 -Equs - -NSSg -* -subr - ){  -Im -:: -NSSgMchs -::Equals( substr ); } - -3476 -le - - gIm -:: -NSSgMchs -:: -Cڏs - - -3477 -Cڏs - -NSSg -* -subr - ){  -Im -:: -NSSgMchs -::Contains( substr ); } - -3479 -le - - gIm -:: -NSSgMchs -:: -SsWh - - -3480 -SsWh - -NSSg -* -subr - ){  -Im -:: -NSSgMchs -::StartsWith( substr ); } - -3482 -le - - gIm -:: -NSSgMchs -:: -EndsWh - - -3483 -EndsWh - -NSSg -* -subr - ){  -Im -:: -NSSgMchs -::EndsWith( substr ); } - -3487 -usg - -mea - - gMchs -; - -3492  - #OC_TEST_CASE - -me -, -desc - )\ - -3493 +( -NSSg -* - `INTERNAL_CATCH_UNIQUE_NAME - -Cch_Name_ - ) \ - -3495  @ -me -; \ - -3497 +( -NSSg -* - `INTERNAL_CATCH_UNIQUE_NAME - -Cch_Desti_ - ) \ - -3499  @ -desc -; \ - -3501 -( - `INTERNAL_CATCH_UNIQUE_NAME - -Cch_TeCa_ - ) - - ) - -3505 #ifde -CATCH_IMPL - - -3508 #ifde -CATCH_CONFIG_WINDOWS_CRTDBG - - -3509  - ~ - -3510 as - cLkDe - { - -3511 - mpublic -: - -3512 - $LkDe -() { - -3513  -ag - = - `_CSDbgFg -( -_CRTDBG_REPORT_FLAG -); - -3514 -ag - | -_CRTDBG_LEAK_CHECK_DF -; - -3515 -ag - | -_CRTDBG_ALLOC_MEM_DF -; - -3516 - `_CSDbgFg -( -ag -); - -3517 - `_CSRtMode -( -_CRT_WARN -, -_CRTDBG_MODE_FILE - | -_CRTDBG_MODE_DEBUG -); - -3518 - `_CSRtFe -( -_CRT_WARN -, -_CRTDBG_FILE_STDERR -); - -3520 - `_CSBakAoc -(-1); - -3522 - } -}; - -3524 as - cLkDe - {}; - -3527 -LkDe - - gakDe -; - -3530  - #TWOBLUECUBES_CATCH_IMPL_HPP_INCLUDED - - - ) - -3535 #ifde -__g__ - - -3536 #agm -g - -dgnoic - -push - - -3537 #agm -g - -dgnoic - -igned - "-Wweak-vtables" - -3541  - #TWOBLUECUBES_CATCH_RUNNER_HPP_INCLUDED - - - ) - -3544  - #TWOBLUECUBES_CATCH_COMMANDLINE_HPP_INCLUDED - - - ) - -3547  - #TWOBLUECUBES_CATCH_CONFIG_HPP_INCLUDED - - - ) - -3550  - #TWOBLUECUBES_CATCH_TEST_SPEC_PARSER_HPP_INCLUDED - - - ) - -3552 #ifde -__g__ - - -3553 #agm -g - -dgnoic - -push - - -3554 #agm -g - -dgnoic - -igned - "-Wpadded" - -3558  - #TWOBLUECUBES_CATCH_TEST_SPEC_HPP_INCLUDED - - - ) - -3560 #ifde -__g__ - - -3561 #agm -g - -dgnoic - -push - - -3562 #agm -g - -dgnoic - -igned - "-Wpadded" - -3566  - #TWOBLUECUBES_CATCH_WILDCARD_PATTERN_HPP_INCLUDED - - - ) - -3568  - ~ - -3570 -mea - - gCch - - -3572 as - cWdrdP - { - -3573 - eWdrdPosi - { - -3574 - gNoWdrd - = 0, - -3575 - gWdrdAtS - = 1, - -3576 - gWdrdAtEnd - = 2, - -3577 - gWdrdAtBhEnds - = -WdrdAtS - | -WdrdAtEnd - - -3580 - gpublic -: - -3582 -WdrdP - -d -:: -rg - cڡ& -n -, -CaSsive -:: -Choi - -Ssivy - ) - -3583 : -m_Ssivy - -Ssivy - ), - -3584 -m_wdrd - -NoWdrd - ), - -3585 -m_n - -adjuCa - -n - ) ) - -3587 if -tsWh - -m_n -, '*' ) ) { - -3588 - gm_n - = -m_n -. -subr -( 1 ); - -3589 - gm_wdrd - = -WdrdAtS -; - -3591 if -dsWh - -m_n -, '*' ) ) { - -3592 - gm_n - = -m_n -. -subr -0, m_n. -size -()-1 ); - -3593 - gm_wdrd - = -ic_ -< -WdrdPosi -> -m_wdrd - | -WdrdAtEnd - ); - -3596 - gvtu - ~ -WdrdP -(); - -3597 -vtu - -bo - -mches - -d -:: -rg - cڡ& -r - ) const { - -3598  -m_wdrd - ) { - -3599  -NoWdrd -: - -3600  -m_n - = -adjuCa - -r - ); - -3601  - gWdrdAtS -: - -3602  -dsWh - -adjuCa - -r - ), -m_n - ); - -3603  - gWdrdAtEnd -: - -3604  -tsWh - -adjuCa - -r - ), -m_n - ); - -3605  - gWdrdAtBhEnds -: - -3606  -cڏs - -adjuCa - -r - ), -m_n - ); - -3609 #ifde -__g__ - - -3610 #agm -g - -dgnoic - -push - - -3611 #agm -g - -dgnoic - -igned - "-Wunreachable-code" - -3613 -throw - - gd -:: -logic_r -( "Unknownnum" ); - -3614 #ifde -__g__ - - -3615 #agm -g - -dgnoic - -p - - -3618 - give -: - -3619 -d -:: -rg - -adjuCa -Сd::rg cڡ& -r - ) const { - -3620  -m_Ssivy - = -CaSsive -:: -No - ? -toLow - -r - ) : str; - -3622 - gCaSsive -:: -Choi - -m_Ssivy -; - -3623 -WdrdPosi - - gm_wdrd -; - -3624 - gd -:: -rg - -m_n -; - -3628  - ~ - -3629  - ~ - -3631 -mea - - gCch - { - -3633 as - cTeSc - { - -3634  - gP - : -ShedIm -<> { - -3635 -vtu - ~ -P -(); - -3636 -vtu - -bo - -mches - -TeCaInfo - cڡ& -Ca - ) const = 0; - -3638 as - cNameP - : -public - -P - { - -3639 -public -: - -3640 -NameP - -d -:: -rg - cڡ& -me - ) - -3641 : -m_wdrdP - -toLow - -me - ), -CaSsive -:: -No - ) - -3643 -vtu - ~ -NameP -(); - -3644 -vtu - -bo - -mches - -TeCaInfo - cڡ& -Ca - ) const { - -3645  - gm_wdrdP -. -mches - -toLow - -Ca -. -me - ) ); - -3647 - give -: - -3648 -WdrdP - -m_wdrdP -; - -3651 as - cTagP - : -public - -P - { - -3652 -public -: - -3653 -TagP - -d -:: -rg - cڡ& -g - ) : -m_g - -toLow -(ag ) ) {} - -3654 -vtu - ~ -TagP -(); - -3655 -vtu - -bo - -mches - -TeCaInfo - cڡ& -Ca - ) const { - -3656  - gCa -. - glTags -. -fd - -m_g - ) ! -Ca -. -lTags -. -d -(); - -3658 - give -: - -3659 -d -:: -rg - -m_g -; - -3662 as - cExudedP - : -public - -P - { - -3663 -public -: - -3664 -ExudedP - -P -< -P -> cڡ& -undlygP - ) : -m_undlygP -( underlyingPattern ) {} - -3665 -vtu - ~ -ExudedP -(); - -3666 -vtu - -bo - -mches - -TeCaInfo - cڡ& -Ca - ) cڡ {  ! - gm_undlygP -->matches(estCase ); } - -3667 - give -: - -3668 -P -< -P -> -m_undlygP -; - -3671  - sFr - { - -3672 - gd -:: -ve -< -P -< -P -> > -m_ns -; - -3674 -bo - -mches - -TeCaInfo - cڡ& -Ca - ) const { - -3676  - gd -:: -ve -< -P -< -P -> >:: -cڡ_ - - - = -m_ns -. -beg -(), - gEnd - = m_ns. -d -(); - g - ! -End -; ++it ) { - -3677 if!(* - g -)-> -mches - -Ca - ) ) - -3678  - gl -; - -3680  - gue -; - -3684 - gpublic -: - -3685 -bo - -hasFrs -() const { - -3686  ! -m_frs -. -emy -(); - -3688 -bo - -mches - -TeCaInfo - cڡ& -Ca - ) const { - -3690  - gd -:: -ve -< -Fr ->:: -cڡ_ - - - = -m_frs -. -beg -(), - gEnd - = m_frs. -d -(); - g - ! -End -; ++it ) - -3691 if - g --> -mches - -Ca - ) ) - -3692  - gue -; - -3693  - gl -; - -3696 - give -: - -3697 -d -:: -ve -< -Fr -> -m_frs -; - -3699 -nd - -ass - - gTeScPr -; - -3703 #ifde -__g__ - - -3704 #agm -g - -dgnoic - -p - - -3707 -mea - - gCch - { - -3709 as - cTeScPr - { - -3710 - eMode -{ - gNe -, - gName -, - gQuedName -, - gTag -, - gEsdName - }; - -3711 -Mode - - gm_mode -; - -3712 -bo - - gm_exusi -; - -3713 - gd -:: -size_t - -m_t -, - gm_pos -; - -3714 - gd -:: -rg - -m_g -; - -3715 - gd -:: -ve -< -d -:: -size_t -> -m_esChs -; - -3716 - gTeSc -:: -Fr - -m_cutFr -; - -3717 -TeSc - - gm_Sc -; - -3718 -ITagAlsRegiry - cڡ* - gm_gAls -; - -3720 - gpublic -: - -3721 -TeScPr - -ITagAlsRegiry - cڡ& -gAls - ) : -m_mode -( -Ne -), -m_exusi -( -l -), -m_t -(0), -m_pos -(0), -m_gAls -( &tagAliases ) {} - -3723 - gTeScPr -& -r - -d -:: -rg - cڡ& -g - ) { - -3724 -m_mode - = -Ne -; - -3725 - gm_exusi - = -l -; - -3726 - gm_t - = -d -:: -rg -:: -os -; - -3727 - gm_g - = -m_gAls --> -exndAls - -g - ); - -3728 - gm_esChs -. -r -(); - -3729  - gm_pos - = 0; m_po< - gm_g -. -size -(); ++m_pos ) - -3730 -visCh - -m_g -[ -m_pos -] ); - -3731 if - gm_mode - = -Name - ) - -3732 -addP -< -TeSc -:: -NameP ->(); - -3733  * - gthis -; - -3735 -TeSc - -Sc -() { - -3736 -addFr -(); - -3737  - gm_Sc -; - -3739 - give -: - -3740  -visCh - -c - ) { - -3741 if -m_mode - = -Ne - ) { - -3742  -c - ) { - -3744 '~': -m_exusi - = -ue -; ; - -3745 '[':  -tNewMode - -Tag -, ++ -m_pos - ); - -3746 '"':  -tNewMode - -QuedName -, ++ -m_pos - ); - -3747 '\\':  -es -(); - -3748 : -tNewMode - -Name -, -m_pos - ); ; - -3751 if - gm_mode - = -Name - ) { - -3752 if -c - == ',' ) { - -3753 -addP -< -TeSc -:: -NameP ->(); - -3754 -addFr -(); - -3756 if - gc - == '[' ) { - -3757 if -subSg -() == "exclude:" ) - -3758 -m_exusi - = -ue -; - -3760 - gaddP -< - gTeSc -:: -NameP ->(); - -3761 -tNewMode - -Tag -, ++ -m_pos - ); - -3763 if - gc - == '\\' ) - -3764 -es -(); - -3766 if - gm_mode - = -EsdName - ) - -3767 -m_mode - = -Name -; - -3768 if - gm_mode - = -QuedName - && -c - == '"' ) - -3769 -addP -< -TeSc -:: -NameP ->(); - -3770 if - gm_mode - = -Tag - && -c - == ']' ) - -3771 -addP -< -TeSc -:: -TagP ->(); - -3773  -tNewMode - -Mode - -mode -, -d -:: -size_t - -t - ) { - -3774 -m_mode - = -mode -; - -3775 - gm_t - = -t -; - -3777  -es -() { - -3778 if - gm_mode - = -Ne - ) - -3779 -m_t - = -m_pos -; - -3780 - gm_mode - = -EsdName -; - -3781 - gm_esChs -. -push_back - -m_pos - ); - -3783 - gd -:: -rg - -subSg -(cڡ {  -m_g -. -subr - -m_t -, -m_pos - - m_start ); } - -3784 - gme -< -tyme - - gT -> - -3785  -addP -() { - -3786 - gd -:: -rg - -tok - = -subSg -(); - -3787  -size_t - - gi - = 0; i < - gm_esChs -. -size -(); ++i ) - -3788 - gtok - = -tok -. -subr -0, -m_esChs -[ -i -]- -m_t --i ) +oken.substr( m_escapeChars[i]-m_start-i+1 ); - -3789 - gm_esChs -. -r -(); - -3790 if -tsWh - -tok -, "exclude:" ) ) { - -3791 - gm_exusi - = -ue -; - -3792 - gtok - = -tok -. -subr -( 8 ); - -3794 if! - gtok -. -emy -() ) { - -3795 - gP -< - gTeSc -:: -P -> -n - = -w - -T - -tok - ); - -3796 if - gm_exusi - ) - -3797 - gn - = -w - -TeSc -:: -ExudedP - -n - ); - -3798 - gm_cutFr -. - gm_ns -. -push_back - -n - ); - -3800 - gm_exusi - = -l -; - -3801 - gm_mode - = -Ne -; - -3803  -addFr -() { - -3804 if! - gm_cutFr -. - gm_ns -. -emy -() ) { - -3805 - gm_Sc -. - gm_frs -. -push_back - -m_cutFr - ); - -3806 - gm_cutFr - = -TeSc -:: -Fr -(); - -3810 -le - -TeSc - - $rTeSc - -d -:: -rg - cڡ& -g - ) { - -3811  - `TeScPr - -ITagAlsRegiry -:: - `g -(). - `r - -g - ). - `Sc -(); - -3812 - } -} - -3816 #ifde -__g__ - - -3817 #agm -g - -dgnoic - -p - - -3821  - #TWOBLUECUBES_CATCH_INTERFACES_CONFIG_H_INCLUDED - - - ) - -3823  - ~ - -3824  - ~ - -3825  - ~ - -3827 -mea - - gCch - { - -3829  - sVbosy - { - eLev - { - -3830 - gNoOuut - = 0, - -3831 - gQut -, - -3832 - gNm - - -3835  - sWnAbout - { - eWh - { - -3836 - gNhg - = 0x00, - -3837 - gNoAsis - = 0x01 - -3840  - sShowDutis - { - eOrN - { - -3841 - gDeuFR܋r -, - -3842 - gAlways -, - -3843 - gNev - - -3845  - sRunTes - { - eInWhOrd - { - -3846 - gInDeiOrd -, - -3847 - gInLexicogphilOrd -, - -3848 - gInRdomOrd - - -3850  - sUCour - { - eYesOrNo - { - -3851 - gAuto -, - -3852 - gYes -, - -3853 - gNo - - -3856 -ass - - gTeSc -; - -3858  - gICfig - : -IShed - { - -3860 -vtu - ~ -ICfig -(); - -3862 -vtu - -bo - -lowThrows -() const = 0; - -3863 -vtu - - gd -:: -oam -& -am -() const = 0; - -3864 -vtu - - gd -:: -rg - -me -() const = 0; - -3865 -vtu - -bo - -udeSucssfulResus -() const = 0; - -3866 -vtu - -bo - -shouldDebugBak -() const = 0; - -3867 -vtu - -bo - -wnAboutMissgAsis -() const = 0; - -3868 -vtu -  -abtA -() const = 0; - -3869 -vtu - -bo - -showInvisibs -() const = 0; - -3870 -vtu - - gShowDutis -:: -OrN - -showDutis -() const = 0; - -3871 -vtu - -TeSc - cڡ& -Sc -() const = 0; - -3872 -vtu - - gRunTes -:: -InWhOrd - -runOrd -() const = 0; - -3873 -vtu -  -gSd -() const = 0; - -3874 -vtu - - gUCour -:: -YesOrNo - -uCour -() const = 0; - -3875 -vtu - - gd -:: -ve -< -d -:: -rg -> cڡ& -gSeisToRun -() const = 0; - -3881  - #TWOBLUECUBES_CATCH_STREAM_H_INCLUDED - - - ) - -3884  - #TWOBLUECUBES_CATCH_STREAMBUF_H_INCLUDED - - - ) - -3886  - ~ - -3888 -mea - - gCch - { - -3890 as - cSmBufBa - : -public - -d -:: -ambuf - { - -3891 -public -: - -3892 -vtu - ~ -SmBufBa -( -CATCH_NOEXCEPT -; - -3896  - ~ - -3897  - ~ - -3898  - ~ - -3899  - ~ - -3901 -mea - - gCch - { - -3903 - gd -:: -oam -& -cout -(); - -3904 - gd -:: -oam -& - -(); - -3905 - gd -:: -oam -& -og -(); - -3907  - sISm - { - -3908 - gvtu - ~ -ISm -( - gCATCH_NOEXCEPT -; - -3909 -vtu - - gd -:: -oam -& -am -() const = 0; - -3912 as - cFeSm - : -public - -ISm - { - -3913 -mub - -d -:: -ofam - -m_ofs -; - -3914 - gpublic -: - -3915 -FeSm - -d -:: -rg - cڡ& -fame - ); - -3916 - gvtu - ~ -FeSm -( - gCATCH_NOEXCEPT -; - -3917 - gpublic -: - -3918 -vtu - -d -:: -oam -& -am -(cڡ -CATCH_OVERRIDE -; - -3921 as - cCoutSm - : -public - -ISm - { - -3922 -mub - -d -:: -oam - -m_os -; - -3923 - gpublic -: - -3924 -CoutSm -(); - -3925 - gvtu - ~ -CoutSm -( - gCATCH_NOEXCEPT -; - -3927 - gpublic -: - -3928 -vtu - -d -:: -oam -& -am -(cڡ -CATCH_OVERRIDE -; - -3931 as - cDebugOutSm - : -public - -ISm - { - -3932 -CATCH_AUTO_PTR - -SmBufBa - ) -m_amBuf -; - -3933 -mub - - gd -:: -oam - -m_os -; - -3934 - gpublic -: - -3935 -DebugOutSm -(); - -3936 - gvtu - ~ -DebugOutSm -( - gCATCH_NOEXCEPT -; - -3938 - gpublic -: - -3939 -vtu - -d -:: -oam -& -am -(cڡ -CATCH_OVERRIDE -; - -3943  - ~ - -3944  - ~ - -3945  - ~ - -3946  - ~ - -3948 #ide -CATCH_CONFIG_CONSOLE_WIDTH - - -3949  - #CATCH_CONFIG_CONSOLE_WIDTH - 80 - - ) - -3952 -mea - - gCch - { - -3954  - sCfigDa - { - -3956 -CfigDa -() - -3957 : -liTes - -l - ), - -3958 -liTags - -l - ), - -3959 -liR܋rs - -l - ), - -3960 -liTeNamesOy - -l - ), - -3961 -liExaInfo - -l - ), - -3962 -showSucssfulTes - -l - ), - -3963 -shouldDebugBak - -l - ), - -3964 -noThrow - -l - ), - -3965 -showHp - -l - ), - -3966 -showInvisibs - -l - ), - -3967 -famesAsTags - -l - ), - -3968 -abtA -( -1 ), - -3969 -gSd -( 0 ), - -3970 -vbosy - -Vbosy -:: -Nm - ), - -3971 -wngs - -WnAbout -:: -Nhg - ), - -3972 -showDutis - -ShowDutis -:: -DeuFR܋r - ), - -3973 -runOrd - -RunTes -:: -InDeiOrd - ), - -3974 -uCour - -UCour -:: -Auto - ) - -3977 -bo - -liTes -; - -3978 -bo - - gliTags -; - -3979 -bo - - gliR܋rs -; - -3980 -bo - - gliTeNamesOy -; - -3981 -bo - - gliExaInfo -; - -3983 -bo - - gshowSucssfulTes -; - -3984 -bo - - gshouldDebugBak -; - -3985 -bo - - gnoThrow -; - -3986 -bo - - gshowHp -; - -3987 -bo - - gshowInvisibs -; - -3988 -bo - - gfamesAsTags -; - -3990  - gabtA -; - -3991  - ggSd -; - -3993 - gVbosy -:: -Lev - -vbosy -; - -3994 - gWnAbout -:: -Wh - -wngs -; - -3995 - gShowDutis -:: -OrN - -showDutis -; - -3996 - gRunTes -:: -InWhOrd - -runOrd -; - -3997 - gUCour -:: -YesOrNo - -uCour -; - -3999 - gd -:: -rg - -ouutFame -; - -4000 - gd -:: -rg - -me -; - -4001 - gd -:: -rg - -ossName -; - -4003 - gd -:: -ve -< -d -:: -rg -> -p܋rNames -; - -4004 - gd -:: -ve -< -d -:: -rg -> -sOrTags -; - -4005 - gd -:: -ve -< -d -:: -rg -> -isToRun -; - -4008 -ass - - gCfig - : -public - -ShedIm -< -ICfig -> { - -4009 -ive -: - -4010 -Cfig -Cfig cڡ& -h - ); - -4011 - gCfig -& - gݔ - = ( -Cfig - cڡ& -h - ); - -4012 -vtu -  -dummy -(); - -4013 - gpublic -: - -4015 -Cfig -() - -4018 -Cfig - -CfigDa - cڡ& -da - ) - -4019 : -m_da - -da - ), - -4020 -m_am - -ݒSm -() ) - -4022 if! - gda -. - gsOrTags -. -emy -() ) { - -4023 -TeScPr - -rr - -ITagAlsRegiry -:: -g -() ); - -4024  - gd -:: -size_t - -i - = 0; - gi - < - gda -. - gsOrTags -. -size -(); ++i ) - -4025 - grr -. -r - -da -. -sOrTags -[ -i -] ); - -4026 - gm_Sc - = -rr -. -Sc -(); - -4030 - gvtu - ~ -Cfig -() {} - -4032 - gd -:: -rg - cڡ& -gFame -() const { - -4033  -m_da -. -ouutFame - ; - -4036 -bo - -liTes -(cڡ {  - gm_da -. - gliTes -; } - -4037 -bo - -liTeNamesOy -(cڡ {  - gm_da -. - gliTeNamesOy -; } - -4038 -bo - -liTags -(cڡ {  - gm_da -. - gliTags -; } - -4039 -bo - -liR܋rs -(cڡ {  - gm_da -. - gliR܋rs -; } - -4040 -bo - -liExaInfo -(cڡ {  - gm_da -. - gliExaInfo -; } - -4042 - gd -:: -rg - -gProssName -(cڡ {  -m_da -. -ossName -; } - -4044 - gd -:: -ve -< -d -:: -rg -> cڡ& -gR܋rNames -(cڡ {  -m_da -. -p܋rNames -; } - -4045 - gd -:: -ve -< -d -:: -rg -> cڡ& -gSeisToRun -(cڡ -CATCH_OVERRIDE - {  -m_da -. -isToRun -; } - -4047 -vtu - -TeSc - cڡ& -Sc -(cڡ - gCATCH_OVERRIDE - {  - gm_Sc -; } - -4049 -bo - -showHp -(cڡ {  - gm_da -. - gshowHp -; } - -4052 -vtu - -bo - -lowThrows -(cڡ - gCATCH_OVERRIDE - {  ! - gm_da -. - gnoThrow -; } - -4053 -vtu - - gd -:: -oam -& -am -(cڡ -CATCH_OVERRIDE - {  -m_am -->stream(); } - -4054 -vtu - - gd -:: -rg - -me -(cڡ -CATCH_OVERRIDE - {  -m_da -.me. -emy -(? m_da. -ossName - : m_data.name; } - -4055 -vtu - -bo - -udeSucssfulResus -(cڡ - gCATCH_OVERRIDE - {  - gm_da -. - gshowSucssfulTes -; } - -4056 -vtu - -bo - -wnAboutMissgAsis -(cڡ - gCATCH_OVERRIDE - {  - gm_da -. - gwngs - & - gWnAbout -:: -NoAsis -; } - -4057 -vtu - - gShowDutis -:: -OrN - -showDutis -(cڡ -CATCH_OVERRIDE - {  -m_da -.showDurations; } - -4058 -vtu - - gRunTes -:: -InWhOrd - -runOrd -(cڡ -CATCH_OVERRIDE - {  -m_da -.runOrder; } - -4059 -vtu -  -gSd -(cڡ - gCATCH_OVERRIDE - {  - gm_da -. - ggSd -; } - -4060 -vtu - - gUCour -:: -YesOrNo - -uCour -(cڡ -CATCH_OVERRIDE - {  -m_da -.useColour; } - -4061 -vtu - -bo - -shouldDebugBak -(cڡ - gCATCH_OVERRIDE - {  - gm_da -. - gshouldDebugBak -; } - -4062 -vtu -  -abtA -(cڡ - gCATCH_OVERRIDE - {  - gm_da -. - gabtA -; } - -4063 -vtu - -bo - -showInvisibs -(cڡ - gCATCH_OVERRIDE - {  - gm_da -. - gshowInvisibs -; } - -4065 - give -: - -4067 -ISm - cڡ* -ݒSm -() { - -4068 if -m_da -. -ouutFame -. -emy -() ) - -4069  -w - -CoutSm -(); - -4070 if - gm_da -. - gouutFame -[0] == '%' ) { - -4071 if -m_da -. -ouutFame - == "%debug" ) - -4072  -w - -DebugOutSm -(); - -4074 -throw - - gd -:: -doma_r -"Uecognid sm: " + -m_da -. -ouutFame - ); - -4077  -w - -FeSm - -m_da -. -ouutFame - ); - -4079 -CfigDa - - gm_da -; - -4081 -CATCH_AUTO_PTR - -ISm - cڡ ) - gm_am -; - -4082 -TeSc - - gm_Sc -; - -4088  - #TWOBLUECUBES_CATCH_CLARA_H_INCLUDED - - - ) - -4091 #ifde -CLARA_CONFIG_CONSOLE_WIDTH - - -4092  - #CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH - -CLARA_CONFIG_CONSOLE_WIDTH - - - ) - -4093 #unde -CLARA_CONFIG_CONSOLE_WIDTH - - -4095  - #CLARA_CONFIG_CONSOLE_WIDTH - -CATCH_CONFIG_CONSOLE_WIDTH - - - ) - -4098  - #STITCH_CLARA_OPEN_NAMESPACE - -mea - -Cch - { - - ) - -4104 #i! -defed -( -TWOBLUECUBES_CLARA_H_INCLUDED -|| defed( -STITCH_CLARA_OPEN_NAMESPACE -) - -4106 #ide -STITCH_CLARA_OPEN_NAMESPACE - - -4107  - #TWOBLUECUBES_CLARA_H_INCLUDED - - - ) - -4108  - #STITCH_CLARA_OPEN_NAMESPACE - - - ) - -4109  - #STITCH_CLARA_CLOSE_NAMESPACE - - - ) - -4111  - #STITCH_CLARA_CLOSE_NAMESPACE - } - - ) - -4114  - #STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE - -STITCH_CLARA_OPEN_NAMESPACE - - - ) - -4119 #i! -defed -( -TBC_TEXT_FORMAT_H_INCLUDED -|| defed( -STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE -) - -4120 #ide -STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE - - -4121  - #TBC_TEXT_FORMAT_H_INCLUDED - - - ) - -4124  - ~ - -4125  - ~ - -4126  - ~ - -4127  - ~ - -4128  - ~ - -4131 #ifde -STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE - - -4132 -mea - - gSTITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE - { - -4135 -mea - - gTbc - { - -4137 #ifde -TBC_TEXT_FORMAT_CONSOLE_WIDTH - - -4138 cڡ  - gcseWidth - = -TBC_TEXT_FORMAT_CONSOLE_WIDTH -; - -4140 cڡ  - gcseWidth - = 80; - -4143  - sTextAribus - { - -4144 -TextAribus -() - -4145 : -lIndt - -d -:: -rg -:: -os - ), - -4146 -dt -( 0 ), - -4147 -width - -cseWidth --1 ), - -4148 -bCh -( '\t' ) - -4151 - gTextAribus -& -tInlIndt - -d -:: -size_t - -_vue - ) { -lIndt - = _vue;  * - gthis -; } - -4152 - gTextAribus -& -tIndt - -d -:: -size_t - -_vue - ) { -dt - = _vue;  * - gthis -; } - -4153 - gTextAribus -& -tWidth - -d -:: -size_t - -_vue - ) { -width - = _vue;  * - gthis -; } - -4154 - gTextAribus -& -tTabCh - -_vue - ) { - gbCh - = _vue;  * - gthis -; } - -4156 - gd -:: -size_t - -lIndt -; - -4157 - gd -:: -size_t - -dt -; - -4158 - gd -:: -size_t - -width -; - -4159  - gbCh -; - -4162 as - cText - { - -4163 - gpublic -: - -4164 -Text - -d -:: -rg - cڡ& -_r -, -TextAribus - cڡ& -_ - = TextAttributes() ) - -4165 : - - -_ - ) - -4167 -d -:: -rg - -wabChs - = " [({.,/|\\-"; - -4168 - gd -:: -size_t - -dt - = -_ -. -lIndt - ! -d -:: -rg -:: -os - - -4169 ? -_ -. -lIndt - - -4170 : -_ -. -dt -; - -4171 - gd -:: -rg - -mad - = -_r -; - -4173  ! - gmad -. -emy -() ) { - -4174 if - gles -. -size -() >= 1000 ) { - -4175 -les -. -push_back -( "... messageruncated dueoxcessive size" ); - -4178 - gd -:: -size_t - -bPos - = -d -:: -rg -:: -os -; - -4179 - gd -:: -size_t - -width - = ( -d -:: -m -) -mad -. -size -(), - g_ -. - gwidth - - - gdt - ); - -4180 - gd -:: -size_t - -pos - = -mad -. -fd_f_of -( '\n' ); - -4181 if - gpos - < -width - ) { - -4182 -width - = -pos -; - -4184 - gpos - = -mad -. -fd_ϡ_of - -_ -. -bCh -, -width - ); - -4185 if - gpos - ! -d -:: -rg -:: -os - ) { - -4186 -bPos - = -pos -; - -4187 if - gmad -[ -width -] == '\n' ) - -4188 -width ---; - -4189 - gmad - = -mad -. -subr -0, -bPos - ) +emainder.substr(abPos+1 ); - -4192 if - gwidth - = -mad -. -size -() ) { - -4193 -liLe - -dt -, -mad -, -width - ); - -4195 if - gmad -[ -width -] == '\n' ) { - -4196 -liLe - -dt -, -mad -, -width - ); - -4197 if - gwidth - <1 || -mad -. -size -() != 1 ) - -4198 -mad - =emad. -subr -( 1 ); - -4199 - gdt - = -_ -. -dt -; - -4202 - gpos - = -mad -. -fd_ϡ_of - -wabChs -, -width - ); - -4203 if - gpos - ! -d -:: -rg -:: -os - && -pos - > 0 ) { - -4204 -liLe - -dt -, -mad -, -pos - ); - -4205 if - gmad -[0] == ' ' ) - -4206 -mad - =emad. -subr -( 1 ); - -4209 -liLe - -dt -, -mad -, -width --1 ); - -4210 - gles -. -back -() += "-"; - -4212 if - gles -. -size -() == 1 ) - -4213 -dt - = -_ -.indent; - -4214 if - gbPos - ! -d -:: -rg -:: -os - ) - -4215 -dt - + -bPos -; - -4220  -liLe - -d -:: -size_t - -_dt -, std:: -rg -& -_mad -, std::size_ -_pos - ) { - -4221 -les -. -push_back - -d -:: -rg - -_dt -, ' ' ) + -_mad -. -subr -0, -_pos - ) ); - -4222 - g_mad - = -_mad -. -subr - -_pos - ); - -4225  - gd -:: - tve -< - td -:: - trg ->:: - tcڡ_ - const_iterator; - -4227 -cڡ_ - -beg -(cڡ {  - gles -.begin(); } - -4228 -cڡ_ - -d -(cڡ {  - gles -.end(); } - -4229 - gd -:: -rg - cڡ& -ϡ -(cڡ {  -les -. -back -(); } - -4230 - gd -:: -size_t - -size -(cڡ {  -les -.size(); } - -4231 - gd -:: -rg - cڡ& -ݔ -[] -d -:: -size_t - -_dex - ) cڡ {  -les -[_index]; } - -4232 - gd -:: -rg - -toSg -() const { - -4233 -d -:: -orgam - -oss -; - -4234 - goss - << * - gthis -; - -4235  - goss -. -r -(); - -4238 -nd - - gd -:: -oam -& -ݔ - << ( -d -::oam& -_am -, -Text - cڡ& - g_xt - ) { - -4239  - gText -:: -cڡ_ - - - = -_xt -. -beg -(), - gEnd - = _xt. -d -(); - -4240 - g - ! -End -; ++it ) { - -4241 if - g - ! -_xt -. -beg -() ) - -4242 -_am - << "\n"; - -4243 - g_am - << * - g -; - -4245  - g_am -; - -4248 - give -: - -4249 -d -:: -rg - -r -; - -4250 -TextAribus - - g -; - -4251 - gd -:: -ve -< -d -:: -rg -> -les -; - -4256 #ifde -STITCH_TBC_TEXT_FORMAT_OUTER_NAMESPACE - - -4265 #unde -STITCH_TBC_TEXT_FORMAT_OPEN_NAMESPACE - - -4269 #ide -TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED - - -4270  - #TWOBLUECUBES_CLARA_COMPILERS_H_INCLUDED - - - ) - -4292 #ifde -__g__ - - -4294 #i - $__has_u -( -cxx_nuαr -) - -4295  - #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -4298 #i - $__has_u -( -cxx_nx -) - -4299  - #CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT - - - ) - -4306 #ifde -__GNUC__ - - -4308 #i -__GNUC__ - =4 && -__GNUC_MINOR__ - >6 && - $defed -( -__GXX_EXPERIMENTAL_CXX0X__ -) - -4309  - #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -4319 #ifde -_MSC_VER - - -4321 #i( -_MSC_VER - >= 1600) - -4322  - #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -4323  - #CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR - - - ) - -4326 #i( -_MSC_VER - >= 1900 ) - -4327  - #CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT - - - ) - -4328  - #CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS - - - ) - -4337 #i - `defed -( -__lulus -) && __cplusplus >= 201103L - -4339  - #CLARA_CPP11_OR_GREATER - - - ) - -4341 #i! - $defed -( -CLARA_INTERNAL_CONFIG_CPP11_NULLPTR -) - -4342  - #CLARA_INTERNAL_CONFIG_CPP11_NULLPTR - - - ) - -4345 #ide -CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT - - -4346  - #CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT - - - ) - -4349 #ide -CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS - - -4350  - #CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS - - - ) - -4353 #i! - $defed -( -CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE -) - -4354  - #CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE - - - ) - -4356 #i! - $defed -( -CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR -) - -4357  - #CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR - - - ) - -4363 #i - `defed -( -CLARA_INTERNAL_CONFIG_CPP11_NULLPTR -&& !defed( -CLARA_CONFIG_CPP11_NO_NULLPTR -&& !defed( -CLARA_CONFIG_CPP11_NULLPTR -&& ! - $defed -( -CLARA_CONFIG_NO_CPP11 -) - -4364  - #CLARA_CONFIG_CPP11_NULLPTR - - - ) - -4366 #i - `defed -( -CLARA_INTERNAL_CONFIG_CPP11_NOEXCEPT -&& !defed( -CLARA_CONFIG_CPP11_NO_NOEXCEPT -&& !defed( -CLARA_CONFIG_CPP11_NOEXCEPT -&& ! - $defed -( -CLARA_CONFIG_NO_CPP11 -) - -4367  - #CLARA_CONFIG_CPP11_NOEXCEPT - - - ) - -4369 #i - `defed -( -CLARA_INTERNAL_CONFIG_CPP11_GENERATED_METHODS -&& !defed( -CLARA_CONFIG_CPP11_NO_GENERATED_METHODS -&& !defed( -CLARA_CONFIG_CPP11_GENERATED_METHODS -&& ! - $defed -( -CLARA_CONFIG_NO_CPP11 -) - -4370  - #CLARA_CONFIG_CPP11_GENERATED_METHODS - - - ) - -4372 #i - `defed -( -CLARA_INTERNAL_CONFIG_CPP11_OVERRIDE -&& !defed( -CLARA_CONFIG_NO_OVERRIDE -&& !defed( -CLARA_CONFIG_CPP11_OVERRIDE -&& ! - $defed -( -CLARA_CONFIG_NO_CPP11 -) - -4373  - #CLARA_CONFIG_CPP11_OVERRIDE - - - ) - -4375 #i - `defed -( -CLARA_INTERNAL_CONFIG_CPP11_UNIQUE_PTR -&& !defed( -CLARA_CONFIG_NO_UNIQUE_PTR -&& !defed( -CLARA_CONFIG_CPP11_UNIQUE_PTR -&& ! - $defed -( -CLARA_CONFIG_NO_CPP11 -) - -4376  - #CLARA_CONFIG_CPP11_UNIQUE_PTR - - - ) - -4380 #i - `defed -( -CLARA_CONFIG_CPP11_NOEXCEPT -&& ! - $defed -( -CLARA_NOEXCEPT -) - -4381  - #CLARA_NOEXCEPT - -nx - - - ) - -4382  - #CLARA_NOEXCEPT_IS -( -x - - $nx -( -x -) - - ) - -4384  - #CLARA_NOEXCEPT - - $throw -() - - ) - -4385  - #CLARA_NOEXCEPT_IS -( -x -) - - ) - -4389 #ifde -CLARA_CONFIG_CPP11_NULLPTR - - -4390  - #CLARA_NULL - -nuαr - - - ) - -4392  - #CLARA_NULL - -NULL - - - ) - -4396 #ifde -CLARA_CONFIG_CPP11_OVERRIDE - - -4397  - #CLARA_OVERRIDE - -ovride - - - ) - -4399  - #CLARA_OVERRIDE - - - ) - -4403 #ifde -CLARA_CONFIG_CPP11_UNIQUE_PTR - - -4404  - #CLARA_AUTO_PTR - -T - ) -d -:: -unique_r - - - ) - -4406  - #CLARA_AUTO_PTR - -T - ) -d -:: -auto_r - - - ) - -4414  - ~ - -4415  - ~ - -4416  - ~ - -4418 #i - `defed -( -WIN32 -|| defed( -__WIN32__ -|| defed( -_WIN32 -|| - $defed -( -_MSC_VER -) - -4419  - #CLARA_PLATFORM_WINDOWS - - - ) - -4423 #ifde -STITCH_CLARA_OPEN_NAMESPACE - - -4424 -STITCH_CLARA_OPEN_NAMESPACE - - -4427 -mea - -CϿ - { - -4429  - sUosiڮTag - {}; - -4431 -UosiڮTag - -_ -; - -4433 #ifde -CLARA_CONFIG_MAIN - - -4434 -UosiڮTag - -_ -; - -4437 -mea - -Da - { - -4439 #ifde -CLARA_CONSOLE_WIDTH - - -4440 cڡ  -cseWidth - = -CLARA_CONFIG_CONSOLE_WIDTH -; - -4442 cڡ  -cseWidth - = 80; - -4445 -usg - -mea - -Tbc -; - -4447 -le - -bo - - `tsWh - -d -:: -rg - cڡ& -r -, std::rg cڡ& -efix - ) { - -4448  -r -. - `size -(> -efix -.size(&& s. - `subr -( 0,refix.size() ) ==refix; - -4451 -me -< -tyme - -T ->  - sRemoveCڡRef -{ T - tty -; }; - -4452 -me -< -tyme - -T ->  -RemoveCڡRef -{ T - tty -; }; - -4453 -me -< -tyme - -T ->  -RemoveCڡRef -{ T - tty -; }; - -4454 -me -< -tyme - -T ->  -RemoveCڡRef -{ T - tty -; }; - -4456 -me -< -tyme - -T ->  - sIsBo - { cڡ -bo - -vue - = -l -; }; - -4457 -me -<>  -IsBo -< -bo -> { cڡ bo -vue - = -ue -; }; - -4459 -me -< -tyme - -T -> - -4460  - `cvtIo - -d -:: -rg - cڡ& -_sour -, -T -& -_de - ) { - -4461 -d -:: -rgam - -ss -; - -4462 -ss - << -_sour -; - -4463 -ss - >> -_de -; - -4464 if -ss -. - ` -() ) - -4465 -throw - -d -:: - `ruime_r -"Ubˁcv" + -_sour - + "o destinationype" ); - -4467 -le -  - `cvtIo - -d -:: -rg - cڡ& -_sour -, std::rg& -_de - ) { - -4468 -_de - = -_sour -; - -4470  - `toLowCh -( -c -) { - -4471  -ic_ -<> -d -:: - `tow - -c - ) ); - -4473 -le -  - `cvtIo - -d -:: -rg - cڡ& -_sour -, -bo -& -_de - ) { - -4474 -d -:: -rg - -sourLC - = -_sour -; - -4475 -d -:: - `sfm - -sourLC -. - `beg -(), sourLC. - `d -(), sourLC.beg(), -toLowCh - ); - -4476 if -sourLC - == "y" || sourceLC == "1" || sourceLC == "true" || sourceLC == "yes" || sourceLC == "on" ) - -4477 -_de - = -ue -; - -4478 if -sourLC - == "n" || sourceLC == "0" || sourceLC == "false" || sourceLC == "no" || sourceLC == "off" ) - -4479 -_de - = -l -; - -4481 -throw - -d -:: - `ruime_r -"Exed boޗvubudidلecogni:\ '" + -_sour - + "'" ); - -4484 -me -< -tyme - -CfigT -> - -4485  - sIArgFuni - { - -4486 -vtu - ~ - `IArgFuni -() {} - -4487 #ifde -CLARA_CONFIG_CPP11_GENERATED_METHODS - - -4488 - `IArgFuni -() = ; - -4489 - `IArgFuni - -IArgFuni - const& ) = ; - -4491 -vtu -  - `t - -CfigT -& -cfig -, -d -:: -rg - cڡ& -vue - ) const = 0; - -4492 -vtu - -bo - - `kesArg -() const = 0; - -4493 -vtu - -IArgFuni -* - `e -() const = 0; - -4496 -me -< -tyme - -CfigT -> - -4497 as - cBoundArgFuni - { - -4498 -public -: - -4499 - `BoundArgFuni -(: - `funiObj - -CLARA_NULL - ) {} - -4500 - `BoundArgFuni - -IArgFuni -< -CfigT ->* -_funiObj - ) : - `funiObj -( _functionObj ) {} - -4501 - `BoundArgFuni - -BoundArgFuni - cڡ& -h - ) : - `funiObj -h. -funiObj - ? oth.funiObj-> - `e -(: -CLARA_NULL - ) {} - -4502 -BoundArgFuni -& -ݔ - = ( BoundArgFuni cڡ& -h - ) { - -4503 -IArgFuni -< -CfigT ->* -wFuniObj - = -h -. -funiObj - ? oth.funiObj-> - `e -(: -CLARA_NULL -; - -4504 -de - -funiObj -; - -4505 -funiObj - = -wFuniObj -; - -4506  * -this -; - -4508 ~ - `BoundArgFuni -({ -de - -funiObj -; } - -4510  - `t - -CfigT -& -cfig -, -d -:: -rg - cڡ& -vue - ) const { - -4511 -funiObj --> - `t - -cfig -, -vue - ); - -4513 -bo - - `kesArg -(cڡ {  -funiObj -->takesArg(); } - -4515 -bo - - `isS -() const { - -4516  -funiObj - ! -CLARA_NULL -; - -4518 -ive -: - -4519 -IArgFuni -< -CfigT ->* -funiObj -; - -4522 -me -< -tyme - -C -> - -4523  -NuBd - : -IArgFuni -< -C ->{ - -4524 -vtu -  - `t - -C -&, -d -:: -rg - const& ) const {} - -4525 -vtu - -bo - - `kesArg -(cڡ {  -ue -; } - -4526 -vtu - -IArgFuni -< -C ->* - `e -(cڡ {  -w - - `NuBd -* -this - ); } - -4529 -me -< -tyme - -C -,ym -M -> - -4530  -BoundDaMemb - : -IArgFuni -< -C ->{ - -4531 - `BoundDaMemb - -M - -C -::* -_memb - ) : - `memb -( _member ) {} - -4532 -vtu -  - `t - -C -& -p -, -d -:: -rg - cڡ& -rgVue - ) const { - -4533 - `cvtIo - -rgVue -, -p -.* -memb - ); - -4535 -vtu - -bo - - `kesArg -(cڡ {  ! -IsBo -< -M ->:: -vue -; } - -4536 -vtu - -IArgFuni -< -C ->* - `e -(cڡ {  -w - - `BoundDaMemb -* -this - ); } - -4537 -M - -C -::* -memb -; - -4539 -me -< -tyme - -C -,ym -M -> - -4540  -BoundUryMhod - : -IArgFuni -< -C ->{ - -4541 - `BoundUryMhod -( -C -::* -_memb -) -M - ) ) : - `memb -( _member ) {} - -4542 -vtu -  - `t - -C -& -p -, -d -:: -rg - cڡ& -rgVue - ) const { - -4543 -tyme - -RemoveCڡRef -< -M ->:: -ty - -vue -; - -4544 - `cvtIo - -rgVue -, -vue - ); - -4545 ( -p -.* -memb -) -vue - ); - -4547 -vtu - -bo - - `kesArg -(cڡ {  ! -IsBo -< -M ->:: -vue -; } - -4548 -vtu - -IArgFuni -< -C ->* - `e -(cڡ {  -w - - `BoundUryMhod -* -this - ); } - -4549 ( -C -::* -memb -) -M - ); - -4551 -me -< -tyme - -C -> - -4552  -BoundNuάyMhod - : -IArgFuni -< -C ->{ - -4553 - `BoundNuάyMhod -( -C -::* -_memb -)(: - `memb -( _member ) {} - -4554 -vtu -  - `t - -C -& -p -, -d -:: -rg - cڡ& -rgVue - ) const { - -4555 -bo - -vue -; - -4556 - `cvtIo - -rgVue -, -vue - ); - -4557 if -vue - ) - -4558 ( -p -.* -memb -)(); - -4560 -vtu - -bo - - `kesArg -(cڡ {  -l -; } - -4561 -vtu - -IArgFuni -< -C ->* - `e -(cڡ {  -w - - `BoundNuάyMhod -* -this - ); } - -4562 ( -C -::* -memb -)(); - -4565 -me -< -tyme - -C -> - -4566  -BoundUryFuni - : -IArgFuni -< -C ->{ - -4567 - `BoundUryFuni -(* -_funi -) -C -& ) ) : - `funi -( _function ) {} - -4568 -vtu -  - `t - -C -& -obj -, -d -:: -rg - cڡ& -rgVue - ) const { - -4569 -bo - -vue -; - -4570 - `cvtIo - -rgVue -, -vue - ); - -4571 if -vue - ) - -4572 - `funi - -obj - ); - -4574 -vtu - -bo - - `kesArg -(cڡ {  -l -; } - -4575 -vtu - -IArgFuni -< -C ->* - `e -(cڡ {  -w - - `BoundUryFuni -* -this - ); } - -4576 (* -funi -) -C -& ); - -4579 -me -< -tyme - -C -,ym -T -> - -4580  -BoundByFuni - : -IArgFuni -< -C ->{ - -4581 - `BoundByFuni -(* -_funi -) -C -&, -T - ) ) : - `funi -( _function ) {} - -4582 -vtu -  - `t - -C -& -obj -, -d -:: -rg - cڡ& -rgVue - ) const { - -4583 -tyme - -RemoveCڡRef -< -T ->:: -ty - -vue -; - -4584 - `cvtIo - -rgVue -, -vue - ); - -4585 - `funi - -obj -, -vue - ); - -4587 -vtu - -bo - - `kesArg -(cڡ {  ! -IsBo -< -T ->:: -vue -; } - -4588 -vtu - -IArgFuni -< -C ->* - `e -(cڡ {  -w - - `BoundByFuni -* -this - ); } - -4589 (* -funi -) -C -&, -T - ); - -4594 -le - -d -:: -ve - - `gsToVe - -gc -, cڡ* cڡ* cڡ -gv - ) { - -4595 -d -:: -ve - - `gs - -ic_ - -gc - ) ); - -4596  -d -:: -size_t - -i - = 0; i < -ic_ - -gc - ); ++i ) - -4597 -gs -[ -i -] = -gv -[i]; - -4599  -gs -; - -4602 as - cPr - { - -4603 - eMode - { -Ne -, -MaybeShtO -, -SshO -, -ShtO -, -LgO -, -Posiڮ - }; - -4604 -Mode - -mode -; - -4605 -d -:: -size_t - -om -; - -4606 -bo - -Ques -; - -4607 -public -: - -4609  - sTok - { - -4610 - eTy - { -Posiڮ -, -ShtO -, -LgO - }; - -4611 - `Tok - -Ty - -_ty -, -d -:: -rg - cڡ& -_da - ) : - `ty -_ty ), - `da -( _data ) {} - -4612 -Ty - -ty -; - -4613 -d -:: -rg - -da -; - -4616 - `Pr -(: - `mode - -Ne - ), - `om -0 ), - `Ques - -l - ){} - -4618  - `rIoToks - -d -:: -ve - cڡ& -gs -, std::ve< -Tok ->& -toks - ) { - -4619 cڡ -d -:: -rg - -doubDash - = "--"; - -4620  -d -:: -size_t - -i - = 1; i < -gs -. - `size -(&&rgs[i] ! -doubDash -; ++i ) - -4621 - `rIoToks - -gs -[ -i -], -toks -); - -4624  - `rIoToks - -d -:: -rg - cڡ& -g -, std:: -ve -< -Tok ->& -toks - ) { - -4625  -d -:: -size_t - -i - = 0; i < -g -. - `size -(); ++i ) { - -4626  -c - = -g -[ -i -]; - -4627 if -c - == '"' ) - -4628 -Ques - = !inQuotes; - -4629 -mode - = - `hdMode - -i -, -c -, -g -, -toks - ); - -4631 -mode - = - `hdMode - -g -. - `size -(), '\0',rg, -toks - ); - -4633 -Mode - - `hdMode - -d -:: -size_t - -i -,  -c -, std:: -rg - cڡ& -g -, std:: -ve -< -Tok ->& -toks - ) { - -4634  -mode - ) { - -4635  -Ne -:  - `hdNe - -i -, -c - ); - -4636  -MaybeShtO -:  - `hdMaybeShtO - -i -, -c - ); - -4637  -ShtO -: - -4638  -LgO -: - -4639  -SshO -:  - `hdO - -i -, -c -, -g -, -toks - ); - -4640  -Posiڮ -:  - `hdPosiڮ - -i -, -c -, -g -, -toks - ); - -4641 : -throw - -d -:: - `logic_r -( "Unknown mode" ); - -4645 -Mode - - `hdNe - -d -:: -size_t - -i -,  -c - ) { - -4646 if -Ques - ) { - -4647 -om - = -i -; - -4648  -Posiڮ -; - -4650  -c - ) { - -4651 '-':  -MaybeShtO -; - -4652 #ifde -CLARA_PLATFORM_WINDOWS - - -4653 '/': -om - = -i -+1;  -SshO -; - -4655 : -om - = -i -;  -Posiڮ -; - -4658 -Mode - - `hdMaybeShtO - -d -:: -size_t - -i -,  -c - ) { - -4659  -c - ) { - -4660 '-': -om - = -i -+1;  -LgO -; - -4661 : -om - = -i -;  -ShtO -; - -4665 -Mode - - `hdO - -d -:: -size_t - -i -,  -c -, std:: -rg - cڡ& -g -, std:: -ve -< -Tok ->& -toks - ) { - -4666 if -d -:: - `rg -":=\0", 3 ). - `fd - -c - ) =d:: -rg -:: -os - ) - -4667  -mode -; - -4669 -d -:: -rg - -tName - = -g -. - `subr - -om -, -i --from ); - -4670 if -mode - = -ShtO - ) - -4671  -d -:: -size_t - -j - = 0; j < -tName -. - `size -(); ++j ) - -4672 -toks -. - `push_back - - `Tok - -Tok -:: -ShtO -, -tName -. - `subr - -j -, 1 ) ) ); - -4673 if -mode - = -SshO - && -tName -. - `size -() == 1 ) - -4674 -toks -. - `push_back - - `Tok - -Tok -:: -ShtO -, -tName - ) ); - -4676 -toks -. - `push_back - - `Tok - -Tok -:: -LgO -, -tName - ) ); - -4677  -Ne -; - -4679 -Mode - - `hdPosiڮ - -d -:: -size_t - -i -,  -c -, std:: -rg - cڡ& -g -, std:: -ve -< -Tok ->& -toks - ) { - -4680 if -Ques - || -d -:: - `rg -"\0", 1 ). - `fd - -c - ) =d:: -rg -:: -os - ) - -4681  -mode -; - -4683 -d -:: -rg - -da - = -g -. - `subr - -om -, -i --from ); - -4684 -toks -. - `push_back - - `Tok - -Tok -:: -Posiڮ -, -da - ) ); - -4685  -Ne -; - -4689 -me -< -tyme - -CfigT -> - -4690  - sCommArgPrݔts - { - -4691 - `CommArgPrݔts -() {} - -4692 - `CommArgPrݔts - -Da -:: -BoundArgFuni -< -CfigT -> cڡ& -_boundFld - ) : - `boundFld -( _boundField ) {} - -4694 -Da -:: -BoundArgFuni -< -CfigT -> -boundFld -; - -4695 -d -:: -rg - -desti -; - -4696 -d -:: -rg - -da -; - -4697 -d -:: -rg - -ahd -; - -4699 -bo - - `kesArg -() const { - -4700  ! -ahd -. - `emy -(); - -4702  - `vide -() const { - -4703 if! -boundFld -. - `isS -() ) - -4704 -throw - -d -:: - `logic_r -( "optionot bound" ); - -4707  - sOiArgPrݔts - { - -4708 -d -:: -ve - -shtNames -; - -4709 -d -:: -rg - -lgName -; - -4711 -bo - - `hasShtName - -d -:: -rg - cڡ& -shtName - ) const { - -4712  -d -:: - `fd - -shtNames -. - `beg -(), shtNames. - `d -(), -shtName - ) != shortNames.end(); - -4714 -bo - - `hasLgName - -d -:: -rg - cڡ& -_lgName - ) const { - -4715  -_lgName - = -lgName -; - -4718  - sPosiڮArgPrݔts - { - -4719 - `PosiڮArgPrݔts -(: - `posi -( -1 ) {} - -4720  -posi -; - -4722 -bo - - `isFixedPosiڮ -() const { - -4723  -posi - != -1; - -4727 -me -< -tyme - -CfigT -> - -4728 as - cCommdLe - { - -4730  -Arg - : -CommArgPrݔts -< -CfigT ->, -OiArgPrݔts -, -PosiڮArgPrݔts - { - -4731 - `Arg -() {} - -4732 - `Arg - -Da -:: -BoundArgFuni -< -CfigT -> cڡ& -_boundFld - ) : -CommArgPrݔts -( _boundField ) {} - -4734 -usg - -CommArgPrݔts -< -CfigT ->:: -ahd -; - -4736 -d -:: -rg - - `dbgName -() const { - -4737 if! -lgName -. - `emy -() ) - -4738  "--" + -lgName -; - -4739 if! -shtNames -. - `emy -() ) - -4740  "-" + -shtNames -[0]; - -4743 -d -:: -rg - - `commds -() const { - -4744 -d -:: -orgam - -oss -; - -4745 -bo - -f - = -ue -; - -4746 -d -:: -ve -:: -cڡ_ - - - = -shtNames -. - `beg -(), -End - = shtNames. - `d -(); - -4747 ; - - ! -End -; ++it ) { - -4748 if -f - ) - -4749 -f - = -l -; - -4751 -oss - << ", "; - -4752 -oss - << "-" << * - -; - -4754 if! -lgName -. - `emy -() ) { - -4755 if! -f - ) - -4756 -oss - << ", "; - -4757 -oss - << "--" << -lgName -; - -4759 if! -ahd -. - `emy -() ) - -4760 -oss - << " <" << -ahd - << ">"; - -4761  -oss -. - `r -(); - -4765  - `CLARA_AUTO_PTR - - tArg - ) - tArgAutoP -; - -4767 -nd -  - `addOName - -Arg -& -g -, -d -:: -rg - cڡ& -tName - ) - -4769 if -tName -. - `emy -() ) - -4771 if -Da -:: - `tsWh - -tName -, "--" ) ) { - -4772 if! -g -. -lgName -. - `emy -() ) - -4773 -throw - -d -:: - `logic_r -( "Only oneong opt may be specified. '" - -4774 + -g -. -lgName - - -4776 + -tName - + "'" ); - -4777 -g -. -lgName - = -tName -. - `subr -( 2 ); - -4779 if -Da -:: - `tsWh - -tName -, "-" ) ) - -4780 -g -. -shtNames -. - `push_back - -tName -. - `subr -( 1 ) ); - -4782 -throw - -d -:: - `logic_r -"ti mu beg wh - o--. Oi was: '" + -tName - + "'" ); - -4784 -nd -  - `tPosiڮArg - -Arg -& -g -,  -posi - ) - -4786 -g -. -posi - =osition; - -4789 as - cArgBud - { - -4790 -public -: - -4791 - `ArgBud - -Arg -* -g - ) : - `m_g -(rg ) {} - -4794 -me -< -tyme - -C -,ym -M -> - -4795  - `bd - -M - -C -::* -fld -, -d -:: -rg - cڡ& -ahd - ) { - -4796 -m_g --> -boundFld - = -w - -Da -:: -BoundDaMemb -< -C -, -M -> -fld - ); - -4797 -m_g --> -ahd - =laceholder; - -4800 -me -< -tyme - -C -> - -4801  - `bd - -bo - -C -::* -fld - ) { - -4802 -m_g --> -boundFld - = -w - -Da -:: -BoundDaMemb -< -C -, -bo -> -fld - ); - -4806 -me -< -tyme - -C -,ym -M -> - -4807  - `bd -( -C -::* -uryMhod -) -M - ), -d -:: -rg - cڡ& -ahd - ) { - -4808 -m_g --> -boundFld - = -w - -Da -:: -BoundUryMhod -< -C -, -M -> -uryMhod - ); - -4809 -m_g --> -ahd - =laceholder; - -4813 -me -< -tyme - -C -> - -4814  - `bd -( -C -::* -uryMhod -) -bo - ) ) { - -4815 -m_g --> -boundFld - = -w - -Da -:: -BoundUryMhod -< -C -, -bo -> -uryMhod - ); - -4819 -me -< -tyme - -C -> - -4820  - `bd -( -C -::* -nuάyMhod -)() ) { - -4821 -m_g --> -boundFld - = -w - -Da -:: -BoundNuάyMhod -< -C -> -nuάyMhod - ); - -4825 -me -< -tyme - -C -> - -4826  - `bd -(* -uryFuni -) -C -& ) ) { - -4827 -m_g --> -boundFld - = -w - -Da -:: -BoundUryFuni -< -C -> -uryFuni - ); - -4831 -me -< -tyme - -C -,ym -T -> - -4832  - `bd -(* -byFuni -) -C -&, -T - ), -d -:: -rg - cڡ& -ahd - ) { - -4833 -m_g --> -boundFld - = -w - -Da -:: -BoundByFuni -< -C -, -T -> -byFuni - ); - -4834 -m_g --> -ahd - =laceholder; - -4837 -ArgBud -& - `desibe - -d -:: -rg - cڡ& -desti - ) { - -4838 -m_g --> -desti - = description; - -4839  * -this -; - -4841 -ArgBud -& - `da - -d -:: -rg - cڡ& -da - ) { - -4842 -m_g --> -da - = detail; - -4843  * -this -; - -4846 -eed -: - -4847 -Arg -* -m_g -; - -4850 as - cOBud - : -public - -ArgBud - { - -4851 -public -: - -4852 - `OBud - -Arg -* -g - ) : - `ArgBud -(rg ) {} - -4853 - `OBud - -OBud -& -h - ) : - `ArgBud -( other ) {} - -4855 -OBud -& -ݔ -[] -d -:: -rg - cڡ& -tName - ) { - -4856 - `addOName -* -ArgBud -:: -m_g -, -tName - ); - -4857  * -this -; - -4861 -public -: - -4863 - `CommdLe -() - -4864 : - `m_boundProssName - -w - -Da -:: -NuBd -< -CfigT ->() ), - -4865 - `m_higheScifdArgPosi -( 0 ), - -4866 - `m_throwOnUecognidToks - -l - ) - -4868 - `CommdLe - -CommdLe - cڡ& -h - ) - -4869 : - `m_boundProssName - -h -. -m_boundProssName - ), - -4870 - `m_tis - ( -h -. -m_tis - ), - -4871 - `m_posiڮArgs - -h -. -m_posiڮArgs - ), - -4872 - `m_higheScifdArgPosi - -h -. -m_higheScifdArgPosi - ), - -4873 - `m_throwOnUecognidToks - -h -. -m_throwOnUecognidToks - ) - -4875 if -h -. -m_tgArg -. - `g -() ) - -4876 -m_tgArg -. - `t - -w - - `Arg -* -h -.m_floatingArg ) ); - -4879 -CommdLe -& - `tThrowOnUecognidToks - -bo - -shouldThrow - = -ue - ) { - -4880 -m_throwOnUecognidToks - = -shouldThrow -; - -4881  * -this -; - -4884 -OBud - -ݔ -[] -d -:: -rg - cڡ& -tName - ) { - -4885 -m_tis -. - `push_back - - `Arg -() ); - -4886 - `addOName - -m_tis -. - `back -(), -tName - ); - -4887 -OBud - - `bud -& -m_tis -. - `back -() ); - -4888  -bud -; - -4891 -ArgBud - -ݔ -[] -posi - ) { - -4892 -m_posiڮArgs -. - ` - -d -:: - `make_ - -posi -, - `Arg -() ) ); - -4893 if -posi - > -m_higheScifdArgPosi - ) - -4894 -m_higheScifdArgPosi - = -posi -; - -4895 - `tPosiڮArg - -m_posiڮArgs -[ -posi -],osition ); - -4896 -ArgBud - - `bud -& -m_posiڮArgs -[ -posi -] ); - -4897  -bud -; - -4901 -ArgBud - -ݔ -[] -UosiڮTag - ) { - -4902 if -m_tgArg -. - `g -() ) - -4903 -throw - -d -:: - `logic_r -( "Only one unpositionalrgument can bedded" ); - -4904 -m_tgArg -. - `t - -w - - `Arg -() ); - -4905 -ArgBud - - `bud - -m_tgArg -. - `g -() ); - -4906  -bud -; - -4909 -me -< -tyme - -C -,ym -M -> - -4910  - `bdProssName - -M - -C -::* -fld - ) { - -4911 -m_boundProssName - = -w - -Da -:: -BoundDaMemb -< -C -, -M -> -fld - ); - -4913 -me -< -tyme - -C -,ym -M -> - -4914  - `bdProssName -( -C -::* -_uryMhod -) -M - ) ) { - -4915 -m_boundProssName - = -w - -Da -:: -BoundUryMhod -< -C -, -M -> -_uryMhod - ); - -4918  - `tUge - -d -:: -oam -& -os -, std:: -size_t - -dt - = 0, std::size_ -width - = -Da -:: -cseWidth - ) const { - -4919 -tyme - -d -:: -ve -< -Arg ->:: -cڡ_ - -Beg - = -m_tis -. - `beg -(), -End - = m_tis. - `d -(), - -; - -4920 -d -:: -size_t - -maxWidth - = 0; - -4921  - - = -Beg -; i! -End -; ++it ) - -4922 -maxWidth - = ( -d -:: -max -)maxWidth, - --> - `commds -(). - `size -() ); - -4924  - - = -Beg -; i! -End -; ++it ) { - -4925 -Da -:: -Text - - `uge - - --> - `commds -(), Da:: - `TextAribus -() - -4926 . - `tWidth - -maxWidth -+ -dt - ) - -4927 . - `tIndt - -dt - ) ); - -4928 -Da -:: -Text - - `desc - - --> -desti -, Da:: - `TextAribus -() - -4929 . - `tWidth - -width - - -maxWidth - - 3 ) ); - -4931  -d -:: -size_t - -i - = 0; i < (d:: -max -) -uge -. - `size -(), -desc -.size() ); ++i ) { - -4932 -d -:: -rg - -ugeC - = -i - < -uge -. - `size -() ? usage[i] : ""; - -4933 -os - << -ugeC -; - -4935 if -i - < -desc -. - `size -(&& !desc[i]. - `emy -() ) - -4936 -os - << -d -:: - `rg - -dt - + 2 + -maxWidth - - -ugeC -. - `size -(), ' ' ) - -4937 << -desc -[ -i -]; - -4938 -os - << "\n"; - -4942 -d -:: -rg - - `tUge -() const { - -4943 -d -:: -orgam - -oss -; - -4944 - `tUge - -oss - ); - -4945  -oss -. - `r -(); - -4948  - `gSynsis - -d -:: -oam -& -os - ) const { - -4949   -i - = 1; i < -m_higheScifdArgPosi -; ++i ) { - -4950 if -i - > 1 ) - -4951 -os - << " "; - -4952 -tyme - -d -:: -m -<, -Arg ->:: -cڡ_ - - - = -m_posiڮArgs -. - `fd - -i - ); - -4953 if - - ! -m_posiڮArgs -. - `d -() ) - -4954 -os - << "<" << - --> -cd -. -ahd - << ">"; - -4955 if -m_tgArg -. - `g -() ) - -4956 -os - << "<" << -m_tgArg --> -ahd - << ">"; - -4958 -throw - -d -:: - `logic_r -( "non consecutiveositionalrguments witho floatingrgs" ); - -4961 if -m_tgArg -. - `g -() ) { - -4962 if -m_higheScifdArgPosi - > 1 ) - -4963 -os - << " "; - -4964 -os - << "[<" << -m_tgArg --> -ahd - << "> ...]"; - -4967 -d -:: -rg - - `gSynsis -() const { - -4968 -d -:: -orgam - -oss -; - -4969 - `gSynsis - -oss - ); - -4970  -oss -. - `r -(); - -4973  - `uge - -d -:: -oam -& -os -, std:: -rg - cڡ& -ocName - ) const { - -4974 - `vide -(); - -4975 -os - << "uge:\ " << -ocName - << " "; - -4976 - `gSynsis - -os - ); - -4977 if! -m_tis -. - `emy -() ) { - -4978 -os - << " [options]\n\nwhere optionsre: \n"; - -4979 - `tUge - -os -, 2 ); - -4981 -os - << "\n"; - -4983 -d -:: -rg - - `uge -Сd::rg cڡ& -ocName - ) const { - -4984 -d -:: -orgam - -oss -; - -4985 - `uge - -oss -, -ocName - ); - -4986  -oss -. - `r -(); - -4989 -CfigT - - `r - -d -:: -ve - cڡ& -gs - ) const { - -4990 -CfigT - -cfig -; - -4991 - `rIo - -gs -, -cfig - ); - -4992  -cfig -; - -4995 -d -:: -ve -< -Pr -:: -Tok -> - `rIo -Сd::ve cڡ& -gs -, -CfigT -& -cfig - ) const { - -4996 -d -:: -rg - -ossName - = -gs -. - `emy -(? std:: - `rg -() :rgs[0]; - -4997 -d -:: -size_t - -ϡSsh - = -ossName -. - `fd_ϡ_of -( "/\\" ); - -4998 if -ϡSsh - ! -d -:: -rg -:: -os - ) - -4999 -ossName - =rossName. - `subr - -ϡSsh -+1 ); - -5000 -m_boundProssName -. - `t - -cfig -, -ossName - ); - -5001 -d -:: -ve -< -Pr -:: -Tok -> -toks -; - -5002 -Pr - -rr -; - -5003 -rr -. - `rIoToks - -gs -, -toks - ); - -5004  - `puϋ - -toks -, -cfig - ); - -5007 -d -:: -ve -< -Pr -:: -Tok -> - `puϋ -Сd::ve cڡ& -toks -, -CfigT -& -cfig - ) const { - -5008 - `vide -(); - -5009 -d -:: -ve -< -Pr -:: -Tok -> -unudToks - = - `puϋOis - -toks -, -cfig - ); - -5010 -unudToks - = - `puϋFixedArgs -unudToks, -cfig - ); - -5011 -unudToks - = - `puϋFltgArgs -unudToks, -cfig - ); - -5012  -unudToks -; - -5015 -d -:: -ve -< -Pr -:: -Tok -> - `puϋOis -Сd::ve cڡ& -toks -, -CfigT -& -cfig - ) const { - -5016 -d -:: -ve -< -Pr -:: -Tok -> -unudToks -; - -5017 -d -:: -ve - -rs -; - -5018  -d -:: -size_t - -i - = 0; i < -toks -. - `size -(); ++i ) { - -5019 -Pr -:: -Tok - cڡ& -tok - = -toks -[ -i -]; - -5020 -tyme - -d -:: -ve -< -Arg ->:: -cڡ_ - - - = -m_tis -. - `beg -(), -End - = m_tis. - `d -(); - -5021 ; - - ! -End -; ++it ) { - -5022 -Arg - cڡ& -g - = * - -; - -5024 -y - { - -5025 if -tok -. -ty - = -Pr -:: -Tok -:: -ShtO - && -g -. - `hasShtName -tok. -da - ) ) || - -5026 -tok -. -ty - = -Pr -:: -Tok -:: -LgO - && -g -. - `hasLgName -tok. -da - ) ) ) { - -5027 if -g -. - `kesArg -() ) { - -5028 if -i - = -toks -. - `size -()-1 ||oks[i+1]. -ty - ! -Pr -:: -Tok -:: -Posiڮ - ) - -5029 -rs -. - `push_back -"Exedrgumtti: " + -tok -. -da - ); - -5031 -g -. -boundFld -. - `t - -cfig -, -toks -[++ -i -]. -da - ); - -5034 -g -. -boundFld -. - `t - -cfig -, "true" ); - -5039 - `tch - -d -:: -exi -& -ex - ) { - -5040 -rs -. - `push_back - -d -:: - `rg - -ex -. - `wh -(+ "\n- whrsg: (" + -g -. - `commds -() + ")" ); - -5043 if - - = -End - ) { - -5044 if -tok -. -ty - = -Pr -:: -Tok -:: -Posiڮ - || ! -m_throwOnUecognidToks - ) - -5045 -unudToks -. - `push_back - -tok - ); - -5046 if -rs -. - `emy -(&& -m_throwOnUecognidToks - ) - -5047 -rs -. - `push_back -"uecognid oi: " + -tok -. -da - ); - -5050 if! -rs -. - `emy -() ) { - -5051 -d -:: -orgam - -oss -; - -5052  -d -:: -ve -:: -cڡ_ - - - = -rs -. - `beg -(), -End - =s. - `d -(); - -5053 - - ! -End -; - -5054 ++ - - ) { - -5055 if - - ! -rs -. - `beg -() ) - -5056 -oss - << "\n"; - -5057 -oss - << * - -; - -5059 -throw - -d -:: - `ruime_r - -oss -. - `r -() ); - -5061  -unudToks -; - -5063 -d -:: -ve -< -Pr -:: -Tok -> - `puϋFixedArgs -Сd::ve cڡ& -toks -, -CfigT -& -cfig - ) const { - -5064 -d -:: -ve -< -Pr -:: -Tok -> -unudToks -; - -5065  -posi - = 1; - -5066  -d -:: -size_t - -i - = 0; i < -toks -. - `size -(); ++i ) { - -5067 -Pr -:: -Tok - cڡ& -tok - = -toks -[ -i -]; - -5068 -tyme - -d -:: -m -<, -Arg ->:: -cڡ_ - - - = -m_posiڮArgs -. - `fd - -posi - ); - -5069 if - - ! -m_posiڮArgs -. - `d -() ) - -5070 - --> -cd -. -boundFld -. - `t - -cfig -, -tok -. -da - ); - -5072 -unudToks -. - `push_back - -tok - ); - -5073 if -tok -. -ty - = -Pr -:: -Tok -:: -Posiڮ - ) - -5074 -posi -++; - -5076  -unudToks -; - -5078 -d -:: -ve -< -Pr -:: -Tok -> - `puϋFltgArgs -Сd::ve cڡ& -toks -, -CfigT -& -cfig - ) const { - -5079 if! -m_tgArg -. - `g -() ) - -5080  -toks -; - -5081 -d -:: -ve -< -Pr -:: -Tok -> -unudToks -; - -5082  -d -:: -size_t - -i - = 0; i < -toks -. - `size -(); ++i ) { - -5083 -Pr -:: -Tok - cڡ& -tok - = -toks -[ -i -]; - -5084 if -tok -. -ty - = -Pr -:: -Tok -:: -Posiڮ - ) - -5085 -m_tgArg --> -boundFld -. - `t - -cfig -, -tok -. -da - ); - -5087 -unudToks -. - `push_back - -tok - ); - -5089  -unudToks -; - -5092  - `vide -() const - -5094 if -m_tis -. - `emy -(&& -m_posiڮArgs -.emy(&& ! -m_tgArg -. - `g -() ) - -5095 -throw - -d -:: - `logic_r -( "No options orrguments specified" ); - -5097  -tyme - -d -:: -ve -< -Arg ->:: -cڡ_ - - - = -m_tis -. - `beg -(), - -5098 -End - = -m_tis -. - `d -(); - -5099 - - ! -End -; ++it ) - -5100 - --> - `vide -(); - -5103 -ive -: - -5104 -Da -:: -BoundArgFuni -< -CfigT -> -m_boundProssName -; - -5105 -d -:: -ve -< -Arg -> -m_tis -; - -5106 -d -:: -m -<, -Arg -> -m_posiڮArgs -; - -5107 -ArgAutoP - -m_tgArg -; - -5108  -m_higheScifdArgPosi -; - -5109 -bo - -m_throwOnUecognidToks -; - -5112 - } -} - -5114 - gSTITCH_CLARA_CLOSE_NAMESPACE - - -5115 #unde -STITCH_CLARA_OPEN_NAMESPACE - - -5116 #unde -STITCH_CLARA_CLOSE_NAMESPACE - - -5119 #unde -STITCH_CLARA_OPEN_NAMESPACE - - -5122 #ifde -CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH - - -5123  - #CLARA_CONFIG_CONSOLE_WIDTH - -CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH - - - ) - -5124 #unde -CATCH_TEMP_CLARA_CONFIG_CONSOLE_WIDTH - - -5127  - ~ - -5128  - ~ - -5130 -mea - - gCch - { - -5132 -le -  -abtAF - -CfigDa -& -cfig - ) { - gcfig -. - gabtA - = 1; } - -5133 -le -  -abtAX - -CfigDa -& -cfig -,  -x - ) { - -5134 if - gx - < 1 ) - -5135 -throw - - gd -:: -ruime_r -( "Valuefter -x or --abortAfter must be greaterhan zero" ); - -5136 - gcfig -. - gabtA - = -x -; - -5138 -le -  -addTeOrTags - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -_Sc - ) { cfig. -sOrTags -. -push_back -( _testSpec ); } - -5139 -le -  -addSeiToRun - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -iName - ) { cfig. -isToRun -. -push_back -( sectionName ); } - -5140 -le -  -addR܋rName - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -_p܋rName - ) { cfig. -p܋rNames -. -push_back -( _reporterName ); } - -5142 -le -  -addWng - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -_wng - ) { - -5143 if -_wng - == "NoAssertions" ) - -5144 -cfig -. -wngs - = -ic_ -< -WnAbout -:: -Wh ->cfig.wng| WnAbout:: -NoAsis - ); - -5146 -throw - - gd -:: -ruime_r -"Uecognid wng: '" + -_wng - + '\'' ); - -5148 -le -  -tOrd - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -d - ) { - -5149 if -tsWh -"deed", -d - ) ) - -5150 - gcfig -. - grunOrd - = -RunTes -:: -InDeiOrd -; - -5151 if -tsWh -"xil", -d - ) ) - -5152 - gcfig -. - grunOrd - = -RunTes -:: -InLexicogphilOrd -; - -5153 if -tsWh -"ndom", -d - ) ) - -5154 - gcfig -. - grunOrd - = -RunTes -:: -InRdomOrd -; - -5156 -throw - - gd -:: -ruime_r -"Uecognid ordg: '" + -d - + '\'' ); - -5158 -le -  -tRngSd - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -ed - ) { - -5159 if -ed - == "time" ) { - -5160 -cfig -. -gSd - = -ic_ -<> -d -:: -time -(0) ); - -5163 - gd -:: -rgam - -ss -; - -5164 - gss - << - ged -; - -5165 - gss - >> - gcfig -. - ggSd -; - -5166 if - gss -. - -() ) - -5167 -throw - - gd -:: -ruime_r -( "Argumento --rng-seed should behe word 'time' orumber" ); - -5170 -le -  -tVbosy - -CfigDa -& -cfig -,  -v - ) { - -5172 - gcfig -. - gvbosy - = -ic_ -< -Vbosy -:: -Lev -> -v - ); - -5174 -le -  -tShowDutis - -CfigDa -& -cfig -, -bo - -_showDutis - ) { - -5175 - gcfig -. - gshowDutis - = -_showDutis - - -5176 ? -ShowDutis -:: -Always - - -5177 : -ShowDutis -:: -Nev -; - -5179 -le -  -tUCour - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -vue - ) { - -5180 -d -:: -rg - -mode - = -toLow - -vue - ); - -5182 if - gmode - == "yes" ) - -5183 -cfig -. -uCour - = -UCour -:: -Yes -; - -5184 if - gmode - == "no" ) - -5185 -cfig -. -uCour - = -UCour -:: -No -; - -5186 if - gmode - == "auto" ) - -5187 -cfig -. -uCour - = -UCour -:: -Auto -; - -5189 -throw - - gd -:: -ruime_r -( "colour mode must be one of:uto, yes oro" ); - -5191 -le -  -fCour - -CfigDa -& -cfig - ) { - -5192 - gcfig -. - guCour - = -UCour -:: -Yes -; - -5194 -le -  -ldTeNamesFromFe - -CfigDa -& -cfig -, -d -:: -rg - cڡ& -_fame - ) { - -5195 -d -:: -ifam - -f - -_fame -. -c_r -() ); - -5196 if! - gf -. -is_ݒ -() ) - -5197 -throw - - gd -:: -doma_r -"Ubˁld iufe: " + -_fame - ); - -5199 - gd -:: -rg - -le -; - -5200  - gd -:: -gle - -f -, -le - ) ) { - -5201 - gle - = -im -( -le -); - -5202 if! - gle -. -emy -(&& ! -tsWh - -le -, '#' ) ) { - -5203 if! -tsWh - -le -, '"' ) ) - -5204 - gle - = '"' + -le - + '"'; - -5205 -addTeOrTags - -cfig -, -le - + ',' ); - -5210 -le - - gCϿ -:: -CommdLe -< -CfigDa -> -makeCommdLePr -() { - -5212 -usg - -mea - -CϿ -; - -5213 - gCommdLe -< - gCfigDa -> - gi -; - -5215 - gi -. -bdProssName -& -CfigDa -:: -ossName - ); - -5217 - gi -["-?"]["-h"]["--help"] - -5218 . -desibe -( "display usage information" ) - -5219 . -bd -& -CfigDa -:: -showHp - ); - -5221 - gi -["-l"]["--list-tests"] - -5222 . -desibe -( "listll/matchingest cases" ) - -5223 . -bd -& -CfigDa -:: -liTes - ); - -5225 - gi -["-t"]["--list-tags"] - -5226 . -desibe -( "listll/matchingags" ) - -5227 . -bd -& -CfigDa -:: -liTags - ); - -5229 - gi -["-s"]["--success"] - -5230 . -desibe -( "include successfulests in output" ) - -5231 . -bd -& -CfigDa -:: -showSucssfulTes - ); - -5233 - gi -["-b"]["--break"] - -5234 . -desibe -( "break into debugger on failure" ) - -5235 . -bd -& -CfigDa -:: -shouldDebugBak - ); - -5237 - gi -["-e"]["--nothrow"] - -5238 . -desibe -( "skipxceptionests" ) - -5239 . -bd -& -CfigDa -:: -noThrow - ); - -5241 - gi -["-i"]["--invisibles"] - -5242 . -desibe -( "show invisibles (tabs,ewlines)" ) - -5243 . -bd -& -CfigDa -:: -showInvisibs - ); - -5245 - gi -["-o"]["--out"] - -5246 . -desibe -( "output filename" ) - -5247 . -bd -& -CfigDa -:: -ouutFame -, "filename" ); - -5249 - gi -["-r"]["--reporter"] - -5251 . -desibe -( "reportero use (defaultso console)" ) - -5252 . -bd -& -addR܋rName -, "name" ); - -5254 - gi -["-n"]["--name"] - -5255 . -desibe -( "suiteame" ) - -5256 . -bd -& -CfigDa -:: -me -, "name" ); - -5258 - gi -["-a"]["--abort"] - -5259 . -desibe -( "abortt first failure" ) - -5260 . -bd -& -abtAF - ); - -5262 - gi -["-x"]["--abortx"] - -5263 . -desibe -( "abortfter x failures" ) - -5264 . -bd -& -abtAX -, "no. failures" ); - -5266 - gi -["-w"]["--warn"] - -5267 . -desibe -( "enable warnings" ) - -5268 . -bd -& -addWng -, "warningame" ); - -5277 - gi -[ -_ -] - -5278 . -desibe -( "whichest orestso use" ) - -5279 . -bd -& -addTeOrTags -, "testame,attern orags" ); - -5281 - gi -["-d"]["--durations"] - -5282 . -desibe -( "showest durations" ) - -5283 . -bd -& -tShowDutis -, "yes|no" ); - -5285 - gi -["-f"]["--input-file"] - -5286 . -desibe -( "loadestamesoun from file" ) - -5287 . -bd -& -ldTeNamesFromFe -, "filename" ); - -5289 - gi -["-#"]["--filenames-as-tags"] - -5290 . -desibe -( "addsag forhe filename" ) - -5291 . -bd -& -CfigDa -:: -famesAsTags - ); - -5293 - gi -["-c"]["--section"] - -5294 . -desibe -( "specify sectionoun" ) - -5295 . -bd -& -addSeiToRun -, "sectioname" ); - -5298 - gi -["--list-test-names-only"] - -5299 . -desibe -( "listll/matchingest casesames only" ) - -5300 . -bd -& -CfigDa -:: -liTeNamesOy - ); - -5302 - gi -["--list-extra-info"] - -5303 . -desibe -( "listll/matchingest cases with more info" ) - -5304 . -bd -& -CfigDa -:: -liExaInfo - ); - -5306 - gi -["--list-reporters"] - -5307 . -desibe -( "listlleporters" ) - -5308 . -bd -& -CfigDa -:: -liR܋rs - ); - -5310 - gi -["--order"] - -5311 . -desibe -( "test case order (defaultso decl)" ) - -5312 . -bd -& -tOrd -, "decl|lex|rand" ); - -5314 - gi -["--rng-seed"] - -5315 . -desibe -( "set specific seed forandomumbers" ) - -5316 . -bd -& -tRngSd -, "'time'|number" ); - -5318 - gi -["--force-colour"] - -5319 . -desibe -( "force colourised output (deprecated)" ) - -5320 . -bd -& -fCour - ); - -5322 - gi -["--use-colour"] - -5323 . -desibe -( "should output be colourised" ) - -5324 . -bd -& -tUCour -, "yes|no" ); - -5326  - gi -; - -5332  - #TWOBLUECUBES_CATCH_LIST_HPP_INCLUDED - - - ) - -5335  - #TWOBLUECUBES_CATCH_TEXT_H_INCLUDED - - - ) - -5337  - #TBC_TEXT_FORMAT_CONSOLE_WIDTH - -CATCH_CONFIG_CONSOLE_WIDTH - - - ) - -5339  - #CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE - -Cch - - - ) - -5342 #ide -CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE - - -5343 #ifde -TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED - - -5344 #ide -TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED - - -5345  - #TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED - - - ) - -5348  - #TWOBLUECUBES_TEXT_FORMAT_H_INCLUDED - - - ) - -5351 #ide -TWOBLUECUBES_TEXT_FORMAT_H_ALREADY_INCLUDED - - -5352  - ~ - -5353  - ~ - -5354  - ~ - -5357 #ifde -CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE - - -5358 -mea - - gCLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE - { - -5361 -mea - - gTbc - { - -5363 #ifde -TBC_TEXT_FORMAT_CONSOLE_WIDTH - - -5364 cڡ  - gcseWidth - = -TBC_TEXT_FORMAT_CONSOLE_WIDTH -; - -5366 cڡ  - gcseWidth - = 80; - -5369  - sTextAribus - { - -5370 -TextAribus -() - -5371 : -lIndt - -d -:: -rg -:: -os - ), - -5372 -dt -( 0 ), - -5373 -width - -cseWidth --1 ) - -5376 - gTextAribus -& -tInlIndt - -d -:: -size_t - -_vue - ) { -lIndt - = _vue;  * - gthis -; } - -5377 - gTextAribus -& -tIndt - -d -:: -size_t - -_vue - ) { -dt - = _vue;  * - gthis -; } - -5378 - gTextAribus -& -tWidth - -d -:: -size_t - -_vue - ) { -width - = _vue;  * - gthis -; } - -5380 - gd -:: -size_t - -lIndt -; - -5381 - gd -:: -size_t - -dt -; - -5382 - gd -:: -size_t - -width -; - -5385 as - cText - { - -5386 - gpublic -: - -5387 -Text - -d -:: -rg - cڡ& -_r -, -TextAribus - cڡ& -_ - = TextAttributes() ) - -5388 : - - -_ - ) - -5390 cڡ -d -:: -rg - -wabBefeChs - = "[({<\t"; - -5391 cڡ - gd -:: -rg - -wabAChs - = "])}>-,./|\\"; - -5392 cڡ - gd -:: -rg - -wabIndOfChs - = " \n\r"; - -5393 - gd -:: -rg - -dt - = -_ -. -lIndt - ! -d -::rg:: -os - - -5394 ? -d -:: -rg - -_ -. -lIndt -, ' ' ) - -5395 : -d -:: -rg - -_ -. -dt -, ' ' ); - -5397  - gd -:: - trg -:: - tcڡ_ - - t -; - -5398 - - - g - = -_r -. -beg -(); - -5399 cڡ - - - grEnd - = -_r -. -d -(); - -5401  - g - ! -rEnd - ) { - -5403 if -les -. -size -() >= 1000 ) { - -5404 -les -. -push_back -( "... messageruncated dueoxcessive size" ); - -5408 - gd -:: -rg - -suffix -; - -5409 - gd -:: -size_t - -width - = ( -d -:: -m -) -ic_ - -rEnd -- - - ), - g_ -. - gwidth -- - gic_ -< - gsize_t -> - gdt -. -size -() ) ); - -5410 - - - gEnd - = - -+ -width -; - -5411 - - - gNext - = -_r -. -d -(); - -5413 - - - gNewLe - = -d -:: -fd - - -, -End -, '\n' ); - -5414 if - gNewLe - ! -End - ) - -5415 -End - = -NewLe -; - -5417 if - gEnd - ! -rEnd - ) { - -5418 -bo - -foundWpPot - = -l -; - -5419 - - - gfdIt - = -End -; - -5421 if - gwabAChs -. -fd -* -fdIt - ) ! -d -:: -rg -:: -os - && fdI! -End - ) { - -5422 -End - = -fdIt -+1; - -5423 - gNext - = -fdIt -+1; - -5424 - gfoundWpPot - = -ue -; - -5426 if - gfdIt - > - g - && - gwabBefeChs -. -fd -* -fdIt - ) ! -d -:: -rg -:: -os - ) { - -5427 -End - = -fdIt -; - -5428 - gNext - = -fdIt -; - -5429 - gfoundWpPot - = -ue -; - -5431 if - gwabIndOfChs -. -fd -* -fdIt - ) ! -d -:: -rg -:: -os - ) { - -5432 -Next - = -fdIt -+1; - -5433 - gEnd - = -fdIt -; - -5434 - gfoundWpPot - = -ue -; - -5436 if - gfdIt - = - - ) - -5439 -- - gfdIt -; - -5441  ! - gfoundWpPot - ); - -5443 if! - gfoundWpPot - ) { - -5445 -- - gEnd -; - -5446 - gNext - = -End -; - -5447 - gsuffix - = "-"; - -5450  - gEnd - > - g - && - gwabIndOfChs -. -fd -*( -End --1! -d -:: -rg -:: -os - ) - -5451 -- -End -; - -5454 - gles -. -push_back - -dt - + -d -:: -rg - - -, -End - ) + -suffix - ); - -5456 if - gdt -. -size -(! -_ -. -dt - ) - -5457 -dt - = -d -:: -rg - -_ -.indent, ' ' ); - -5458 - g - = -Next -; - -5462  - gd -:: - tve -< - td -:: - trg ->:: - tcڡ_ - const_iterator; - -5464 -cڡ_ - -beg -(cڡ {  - gles -.begin(); } - -5465 -cڡ_ - -d -(cڡ {  - gles -.end(); } - -5466 - gd -:: -rg - cڡ& -ϡ -(cڡ {  -les -. -back -(); } - -5467 - gd -:: -size_t - -size -(cڡ {  -les -.size(); } - -5468 - gd -:: -rg - cڡ& -ݔ -[] -d -:: -size_t - -_dex - ) cڡ {  -les -[_index]; } - -5469 - gd -:: -rg - -toSg -() const { - -5470 -d -:: -orgam - -oss -; - -5471 - goss - << * - gthis -; - -5472  - goss -. -r -(); - -5475 -le - -nd - - gd -:: -oam -& -ݔ - << ( -d -::oam& -_am -, -Text - cڡ& - g_xt - ) { - -5476  - gText -:: -cڡ_ - - - = -_xt -. -beg -(), - gEnd - = _xt. -d -(); - -5477 - g - ! -End -; ++it ) { - -5478 if - g - ! -_xt -. -beg -() ) - -5479 -_am - << "\n"; - -5480 - g_am - << * - g -; - -5482  - g_am -; - -5485 - give -: - -5486 -d -:: -rg - -r -; - -5487 -TextAribus - - g -; - -5488 - gd -:: -ve -< -d -:: -rg -> -les -; - -5493 #ifde -CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE - - -5498 #unde -CLICHE_TBC_TEXT_FORMAT_OUTER_NAMESPACE - - -5500 -mea - - gCch - { - -5501 -usg - - gTbc -:: -Text -; - -5502 -usg - - gTbc -:: -TextAribus -; - -5506  - #TWOBLUECUBES_CATCH_CONSOLE_COLOUR_HPP_INCLUDED - - - ) - -5508 -mea - - gCch - { - -5510  - sCour - { - -5511 - eCode - { - -5512 - gNe - = 0, - -5514 - gWhe -, - -5515 - gRed -, - -5516 - gG -, - -5517 - gBlue -, - -5518 - gCy -, - -5519 - gYlow -, - -5520 - gGy -, - -5522 - gBright - = 0x10, - -5524 - gBrightRed - = -Bright - | -Red -, - -5525 - gBrightG - = -Bright - | -G -, - -5526 - gLightGy - = -Bright - | -Gy -, - -5527 - gBrightWhe - = -Bright - | -Whe -, - -5530 - gFeName - = -LightGy -, - -5531 - gWng - = -Ylow -, - -5532 - gResuE - = -BrightRed -, - -5533 - gResuSucss - = -BrightG -, - -5534 - gResuExedFau - = -Wng -, - -5536 - gE - = -BrightRed -, - -5537 - gSucss - = -G -, - -5539 - gOrigExessi - = -Cy -, - -5540 - gRecڡruedExessi - = -Ylow -, - -5542 - gSecdyText - = -LightGy -, - -5543 - gHds - = -Whe - - -5547 -Cour - -Code - -_courCode - ); - -5548 -Cour -Coucڡ& -h - ); - -5549 ~ -Cour -(); - -5552  -u - -Code - -_courCode - ); - -5554 - give -: - -5555 -bo - -m_moved -; - -5558 -le - - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -Cour - cڡ& ) {  - gos -; } - -5563  - #TWOBLUECUBES_CATCH_INTERFACES_REPORTER_H_INCLUDED - - - ) - -5565  - ~ - -5566  - ~ - -5567  - ~ - -5569 -mea - - gCch - - -5571  - sR܋rCfig - { - -5572 -exic - -R܋rCfig - -P -< -ICfig - cڡ> cڡ& -_fuCfig - ) - -5573 : -m_am -& -_fuCfig --> -am -(), -m_fuCfig -( _fullConfig ) {} - -5575 -R܋rCfig - -P -< -ICfig - cڡ> cڡ& -_fuCfig -, -d -:: -oam -& -_am - ) - -5576 : -m_am -& -_am - ), -m_fuCfig - -_fuCfig - ) {} - -5578 - gd -:: -oam -& -am -(cڡ {  * -m_am -; } - -5579 - gP -< -ICfig - cڡ> -fuCfig -(cڡ {  - gm_fuCfig -; } - -5581 - give -: - -5582 -d -:: -oam -* -m_am -; - -5583 - gP -< -ICfig - cڡ> - gm_fuCfig -; - -5586  - sR܋rPns - { - -5587 -R܋rPns -() - -5588 : -shouldRedeStdOut - -l - ) - -5591 -bo - -shouldRedeStdOut -; - -5594 - gme -< -tyme - - gT -> - -5595  - gLazySt - : -Oi -< -T -> { - -5596 -LazySt -(: -ud - -l - ) {} - -5597 -LazySt -& -ݔ -= -T - cڡ& -_vue - ) { - -5598 -Oi -< -T ->:: -ݔ -= -_vue - ); - -5599 - gud - = -l -; - -5600  * - gthis -; - -5602  -t -() { - -5603 - gOi -< - gT ->:: -t -(); - -5604 - gud - = -l -; - -5606 -bo - - gud -; - -5609  - sTeRunInfo - { - -5610 -TeRunInfo - -d -:: -rg - cڡ& -_me - ) : -me -( _name ) {} - -5611 -d -:: -rg - -me -; - -5613  - sGroupInfo - { - -5614 -GroupInfo - -d -:: -rg - cڡ& -_me -, - -5615 -d -:: -size_t - -_groupIndex -, - -5616 -d -:: -size_t - -_groupsCou - ) - -5617 : -me - -_me - ), - -5618 -groupIndex - -_groupIndex - ), - -5619 -groupsCous - -_groupsCou - ) - -5622 - gd -:: -rg - -me -; - -5623 - gd -:: -size_t - -groupIndex -; - -5624 - gd -:: -size_t - -groupsCous -; - -5627  - sAsiSts - { - -5628 -AsiSts - -AsiResu - cڡ& -_asiResu -, - -5629 -d -:: -ve -< -MesgeInfo -> cڡ& -_foMesges -, - -5630 -Tٮs - cڡ& -_tٮs - ) - -5631 : -asiResu - -_asiResu - ), - -5632 -foMesges - -_foMesges - ), - -5633 -tٮs - -_tٮs - ) - -5635 if - gasiResu -. -hasMesge -() ) { - -5638 -MesgeBud - -bud - -asiResu -. -gTeMaoName -(),siResu. -gSourInfo -(),siResu. -gResuTy -() ); - -5639 - gbud - << - gasiResu -. -gMesge -(); - -5640 - gbud -. - gm_fo -. - gmesge - = -bud -. -m_am -. -r -(); - -5642 - gfoMesges -. -push_back - -bud -. -m_fo - ); - -5645 - gvtu - ~ -AsiSts -(); - -5647 #ifde -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -5648 -AsiSts -( AssertionStats const& ) = ; - -5649 -AsiSts -( AssertionStats && ) = ; - -5650 - gAsiSts -& - gݔ - = ( -AsiSts - const& ) = ; - -5651 - gAsiSts -& - gݔ - = ( -AsiSts - && ) = ; - -5654 -AsiResu - - gasiResu -; - -5655 - gd -:: -ve -< -MesgeInfo -> -foMesges -; - -5656 -Tٮs - - gtٮs -; - -5659  - sSeiSts - { - -5660 -SeiSts - -SeiInfo - cڡ& -_iInfo -, - -5661 -Cous - cڡ& -_asis -, - -5662  -_dutiInSecds -, - -5663 -bo - -_missgAsis - ) - -5664 : -iInfo - -_iInfo - ), - -5665 -asis - -_asis - ), - -5666 -dutiInSecds - -_dutiInSecds - ), - -5667 -missgAsis - -_missgAsis - ) - -5669 - gvtu - ~ -SeiSts -(); - -5670 #ifde -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -5671 -SeiSts -( SectionStats const& ) = ; - -5672 -SeiSts -( SectionStats && ) = ; - -5673 - gSeiSts -& - gݔ - = ( -SeiSts - const& ) = ; - -5674 - gSeiSts -& - gݔ - = ( -SeiSts - && ) = ; - -5677 -SeiInfo - - giInfo -; - -5678 -Cous - - gasis -; - -5679  - gdutiInSecds -; - -5680 -bo - - gmissgAsis -; - -5683  - sTeCaSts - { - -5684 -TeCaSts - -TeCaInfo - cڡ& -_Info -, - -5685 -Tٮs - cڡ& -_tٮs -, - -5686 -d -:: -rg - cڡ& -_dOut -, - -5687 -d -:: -rg - cڡ& -_dE -, - -5688 -bo - -_abtg - ) - -5689 : -Info - -_Info - ), - -5690 -tٮs - -_tٮs - ), - -5691 -dOut - -_dOut - ), - -5692 -dE - -_dE - ), - -5693 -abtg - -_abtg - ) - -5695 - gvtu - ~ -TeCaSts -(); - -5697 #ifde -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -5698 -TeCaSts -( TestCaseStats const& ) = ; - -5699 -TeCaSts -( TestCaseStats && ) = ; - -5700 - gTeCaSts -& - gݔ - = ( -TeCaSts - const& ) = ; - -5701 - gTeCaSts -& - gݔ - = ( -TeCaSts - && ) = ; - -5704 -TeCaInfo - - gInfo -; - -5705 -Tٮs - - gtٮs -; - -5706 - gd -:: -rg - -dOut -; - -5707 - gd -:: -rg - -dE -; - -5708 -bo - - gabtg -; - -5711  - sTeGroupSts - { - -5712 -TeGroupSts - -GroupInfo - cڡ& -_groupInfo -, - -5713 -Tٮs - cڡ& -_tٮs -, - -5714 -bo - -_abtg - ) - -5715 : -groupInfo - -_groupInfo - ), - -5716 -tٮs - -_tٮs - ), - -5717 -abtg - -_abtg - ) - -5719 -TeGroupSts - -GroupInfo - cڡ& -_groupInfo - ) - -5720 : -groupInfo - -_groupInfo - ), - -5721 -abtg - -l - ) - -5723 - gvtu - ~ -TeGroupSts -(); - -5725 #ifde -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -5726 -TeGroupSts -( TestGroupStats const& ) = ; - -5727 -TeGroupSts -( TestGroupStats && ) = ; - -5728 - gTeGroupSts -& - gݔ - = ( -TeGroupSts - const& ) = ; - -5729 - gTeGroupSts -& - gݔ - = ( -TeGroupSts - && ) = ; - -5732 -GroupInfo - - ggroupInfo -; - -5733 -Tٮs - - gtٮs -; - -5734 -bo - - gabtg -; - -5737  - sTeRunSts - { - -5738 -TeRunSts - -TeRunInfo - cڡ& -_runInfo -, - -5739 -Tٮs - cڡ& -_tٮs -, - -5740 -bo - -_abtg - ) - -5741 : -runInfo - -_runInfo - ), - -5742 -tٮs - -_tٮs - ), - -5743 -abtg - -_abtg - ) - -5745 - gvtu - ~ -TeRunSts -(); - -5747 #ide -CATCH_CONFIG_CPP11_GENERATED_METHODS - - -5748 -TeRunSts -TeRunStcڡ& -_h - ) - -5749 : -runInfo - -_h -.runInfo ), - -5750 -tٮs - -_h -.totals ), - -5751 -abtg - -_h -.aborting ) - -5754 -TeRunSts -( TestRunStats const& ) = ; - -5755 -TeRunSts -( TestRunStats && ) = ; - -5756 - gTeRunSts -& - gݔ - = ( -TeRunSts - const& ) = ; - -5757 - gTeRunSts -& - gݔ - = ( -TeRunSts - && ) = ; - -5760 -TeRunInfo - - grunInfo -; - -5761 -Tٮs - - gtٮs -; - -5762 -bo - - gabtg -; - -5765 -ass - - gMuɝR܋rs -; - -5767  - gISmgR܋r - : -IShed - { - -5768 -vtu - ~ -ISmgR܋r -(); - -5773 -vtu - -R܋rPns - -gPns -() const = 0; - -5775 -vtu -  -noMchgTeCas - -d -:: -rg - cڡ& -ec - ) = 0; - -5777 -vtu -  -RunSg - -TeRunInfo - cڡ& -RunInfo - ) = 0; - -5778 -vtu -  -GroupSg - -GroupInfo - cڡ& -groupInfo - ) = 0; - -5780 -vtu -  -CaSg - -TeCaInfo - cڡ& -Info - ) = 0; - -5781 -vtu -  -iSg - -SeiInfo - cڡ& -iInfo - ) = 0; - -5783 -vtu -  -asiSg - -AsiInfo - cڡ& -asiInfo - ) = 0; - -5786 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -asiSts - ) = 0; - -5788 -vtu -  -iEnded - -SeiSts - cڡ& -iSts - ) = 0; - -5789 -vtu -  -CaEnded - -TeCaSts - cڡ& -CaSts - ) = 0; - -5790 -vtu -  -GroupEnded - -TeGroupSts - cڡ& -GroupSts - ) = 0; - -5791 -vtu -  -RunEnded - -TeRunSts - cڡ& -RunSts - ) = 0; - -5793 -vtu -  -skTe - -TeCaInfo - cڡ& -Info - ) = 0; - -5795 -vtu - -MuɝR܋rs -* -yAsMui -({  - gCATCH_NULL -; } - -5798  - gIR܋rFay - : -IShed - { - -5799 -vtu - ~ -IR܋rFay -(); - -5800 -vtu - -ISmgR܋r -* - - -R܋rCfig - cڡ& -cfig - ) const = 0; - -5801 -vtu - - gd -:: -rg - -gDesti -() const = 0; - -5804  - sIR܋rRegiry - { - -5805  - gd -:: - tm -< - td -:: - trg -, - tP -< - tIR܋rFay -> > - tFayM -; - -5806  - gd -:: - tve -< - tP -< - tIR܋rFay -> > - tLis -; - -5808 - gvtu - ~ -IR܋rRegiry -(); - -5809 -vtu - -ISmgR܋r -* - - -d -:: -rg - cڡ& -me -, -P -< -ICfig - cڡ> cڡ& -cfig - ) const = 0; - -5810 -vtu - -FayM - cڡ& -gFaܛs -() const = 0; - -5811 -vtu - -Lis - cڡ& -gLis -() const = 0; - -5814 - gP -< - gISmgR܋r -> -addR܋r - -P -< -ISmgR܋r -> cڡ& -exigR܋r -, P cڡ& -addiڮR܋r - ); - -5818  - ~ - -5819  - ~ - -5821 -mea - - gCch - { - -5823 -le - - gd -:: -size_t - -liTes - -Cfig - cڡ& -cfig - ) { - -5825 -TeSc - -Sc - = -cfig -.testSpec(); - -5826 if - gcfig -. -Sc -(). -hasFrs -() ) - -5827 - gCch -:: -cout -() << "Matchingest cases:\n"; - -5829 - gCch -:: -cout -() << "Allvailableest cases:\n"; - -5830 - gSc - = -TeScPr - -ITagAlsRegiry -:: -g -(). -r -"*" ). -Sc -(); - -5833 - gd -:: -size_t - -mchedTes - = 0; - -5834 -TextAribus - - gmeAr -, - gdescAr -, - ggsAr -; - -5835 - gmeAr -. -tInlIndt -2 ). -tIndt -( 4 ); - -5836 - gdescAr -. -tIndt -( 4 ); - -5837 - ggsAr -. -tIndt -( 6 ); - -5839 - gd -:: -ve -< -TeCa -> -mchedTeCas - = -frTes - -gATeCasS܋d - -cfig - ), -Sc -, config ); - -5840  - gd -:: -ve -< -TeCa ->:: -cڡ_ - - - = -mchedTeCas -. -beg -(), - gEnd - = mchedTeCas. -d -(); - -5841 - g - ! -End -; - -5842 ++ - g - ) { - -5843 - gmchedTes -++; - -5844 -TeCaInfo - cڡ& - gCaInfo - = - --> -gTeCaInfo -(); - -5845 - gCour -:: -Code - -cour - = -CaInfo -. -isHidd -() - -5846 ? -Cour -:: -SecdyText - - -5847 : -Cour -:: -Ne -; - -5848 -Cour - -courGud - -cour - ); - -5850 - gCch -:: -cout -(<< -Text - -CaInfo -. -me -, -meAr - ) << - gd -:: -dl -; - -5851 if - gcfig -. -liExaInfo -() ) { - -5852 - gCch -:: -cout -(<< " " << -CaInfo -. -leInfo - << -d -:: -dl -; - -5853 - gd -:: -rg - -desti - = -CaInfo -.description; - -5854 if - gdesti -. -emy -() ) - -5855 - gdesti - = "(NO DESCRIPTION)"; - -5856 - gCch -:: -cout -(<< -Text - -desti -, -descAr - ) << - gd -:: -dl -; - -5858 if! - gCaInfo -. - ggs -. -emy -() ) - -5859 - gCch -:: -cout -(<< -Text - -CaInfo -. -gsAsSg -, -gsAr - ) << - gd -:: -dl -; - -5862 if! - gcfig -. -Sc -(). -hasFrs -() ) - -5863 - gCch -:: -cout -(<< -uli - -mchedTes -, " ca" ) << '\n' << - gd -:: -dl -; - -5865 - gCch -:: -cout -(<< -uli - -mchedTes -, "mchge ca" ) << '\n' << - gd -:: -dl -; - -5866  - gmchedTes -; - -5869 -le - - gd -:: -size_t - -liTesNamesOy - -Cfig - cڡ& -cfig - ) { - -5870 -TeSc - -Sc - = -cfig -.testSpec(); - -5871 if! - gcfig -. -Sc -(). -hasFrs -() ) - -5872 - gSc - = -TeScPr - -ITagAlsRegiry -:: -g -(). -r -"*" ). -Sc -(); - -5873 - gd -:: -size_t - -mchedTes - = 0; - -5874 - gd -:: -ve -< -TeCa -> -mchedTeCas - = -frTes - -gATeCasS܋d - -cfig - ), -Sc -, config ); - -5875  - gd -:: -ve -< -TeCa ->:: -cڡ_ - - - = -mchedTeCas -. -beg -(), - gEnd - = mchedTeCas. -d -(); - -5876 - g - ! -End -; - -5877 ++ - g - ) { - -5878 - gmchedTes -++; - -5879 -TeCaInfo - cڡ& - gCaInfo - = - --> -gTeCaInfo -(); - -5880 if -tsWh - -CaInfo -. -me -, '#' ) ) - -5881 - gCch -:: -cout -(<< '"' << -CaInfo -. -me - << '"'; - -5883 - gCch -:: -cout -(<< -CaInfo -. -me -; - -5884 i - gcfig -. -liExaInfo -() ) - -5885 - gCch -:: -cout -(<< "\t@" << -CaInfo -. -leInfo -; - -5886 - gCch -:: -cout -(<< -d -:: -dl -; - -5888  - gmchedTes -; - -5891  - sTagInfo - { - -5892 -TagInfo -(: -cou - ( 0 ) {} - -5893  -add - -d -:: -rg - cڡ& -lg - ) { - -5894 ++ -cou -; - -5895 - glgs -. - - -lg - ); - -5897 - gd -:: -rg - -l -() const { - -5898 -d -:: -rg - -out -; - -5899  - gd -:: -t -< -d -:: -rg ->:: -cڡ_ - - - = -lgs -. -beg -(), - gEnd - = sΚgs. -d -(); - -5900 - g - ! -End -; - -5901 ++ - g - ) - -5902 - gout - +"[" + * - - + "]"; - -5903  - gout -; - -5905 - gd -:: -t -< -d -:: -rg -> -lgs -; - -5906 - gd -:: -size_t - -cou -; - -5909 -le - - gd -:: -size_t - -liTags - -Cfig - cڡ& -cfig - ) { - -5910 -TeSc - -Sc - = -cfig -.testSpec(); - -5911 if - gcfig -. -Sc -(). -hasFrs -() ) - -5912 - gCch -:: -cout -() << "Tags for matchingest cases:\n"; - -5914 - gCch -:: -cout -() << "Allvailableags:\n"; - -5915 - gSc - = -TeScPr - -ITagAlsRegiry -:: -g -(). -r -"*" ). -Sc -(); - -5918 - gd -:: -m -< -d -:: -rg -, - gTagInfo -> - ggCous -; - -5920 - gd -:: -ve -< -TeCa -> -mchedTeCas - = -frTes - -gATeCasS܋d - -cfig - ), -Sc -, config ); - -5921  - gd -:: -ve -< -TeCa ->:: -cڡ_ - - - = -mchedTeCas -. -beg -(), - gEnd - = mchedTeCas. -d -(); - -5922 - g - ! -End -; - -5923 ++ - g - ) { - -5924  - gd -:: -t -< -d -:: -rg ->:: -cڡ_ - -gIt - = - --> -gTeCaInfo -(). -gs -. -beg -(), - -5925 - ggItEnd - = - --> -gTeCaInfo -(). -gs -. -d -(); - -5926 - ggIt - ! -gItEnd -; - -5927 ++ - ggIt - ) { - -5928 - gd -:: -rg - -gName - = * -gIt -; - -5929 - gd -:: -rg - -lTagName - = -toLow - -gName - ); - -5930 - gd -:: -m -< -d -:: -rg -, - gTagInfo ->:: - - -couIt - = -gCous -. -fd - -lTagName - ); - -5931 if - gcouIt - = -gCous -. -d -() ) - -5932 -couIt - = -gCous -. - - -d -:: -make_ - -lTagName -, -TagInfo -(). - gf -; - -5933 - gcouIt --> - gcd -. -add - -gName - ); - -5937  - gd -:: -m -< -d -:: -rg -, - gTagInfo ->:: -cڡ_ - -couIt - = -gCous -. -beg -(), - -5938 - gcouItEnd - = -gCous -. -d -(); - -5939 - gcouIt - ! -couItEnd -; - -5940 ++ - gcouIt - ) { - -5941 - gd -:: -orgam - -oss -; - -5942 - goss - << " " << - gd -:: -tw -(2<< -couIt --> -cd -. -cou - << " "; - -5943 -Text - -w - -couIt --> -cd -. -l -(), -TextAribus -() - -5944 . -tInlIndt -( 0 ) - -5945 . -tIndt - -oss -. -r -(). -size -() ) - -5946 . -tWidth - -CATCH_CONFIG_CONSOLE_WIDTH --10 ) ); - -5947 - gCch -:: -cout -(<< -oss -. -r -(<< -w - << '\n'; - -5949 - gCch -:: -cout -(<< -uli - -gCous -. -size -(), "g" ) << '\n' << - gd -:: -dl -; - -5950  - ggCous -. -size -(); - -5953 -le - - gd -:: -size_t - -liR܋rs - -Cfig - const& ) { - -5954 -Cch -:: -cout -() << "Availableeporters:\n"; - -5955 - gIR܋rRegiry -:: -FayM - cڡ& -ܛs - = -gRegiryHub -(). -gR܋rRegiry -(). -gFaܛs -(); - -5956 - gIR܋rRegiry -:: -FayM -:: -cڡ_ - -Beg - = -ܛs -. -beg -(), - gEnd - = faܛs. -d -(), - g -; - -5957 - gd -:: -size_t - -maxNameL - = 0; - -5958  - g - = -Beg -; i! -End -; ++it ) - -5959 - gmaxNameL - = ( -d -:: -max -) -maxNameL -, - g --> - gf -. -size -() ); - -5961  - g - = -Beg -; i! -End -; ++it ) { - -5962 -Text - -w - - --> -cd --> -gDesti -(), -TextAribus -() - -5963 . -tInlIndt -( 0 ) - -5964 . -tIndt -7+ -maxNameL - ) - -5965 . -tWidth - -CATCH_CONFIG_CONSOLE_WIDTH - - -maxNameL --8 ) ); - -5966 - gCch -:: -cout -() << " " - -5967 << - --> -f - - -5969 << -d -:: -rg - -maxNameL - - - --> -f -. -size -() + 2, ' ' ) - -5970 << - gw - << '\n'; - -5972 - gCch -:: -cout -(<< -d -:: -dl -; - -5973  - gܛs -. -size -(); - -5976 -le - - gOi -< - gd -:: -size_t -> -li - -Cfig - cڡ& -cfig - ) { - -5977 -Oi -< -d -:: -size_t -> -liedCou -; - -5978 if - gcfig -. -liTes -(|| ( cfig. -liExaInfo -(&& !cfig. -liTeNamesOy -() ) ) - -5979 - gliedCou - = -liedCou -. -vueOr -(0+ -liTes - -cfig - ); - -5980 if - gcfig -. -liTeNamesOy -() ) - -5981 - gliedCou - = -liedCou -. -vueOr -(0+ -liTesNamesOy - -cfig - ); - -5982 if - gcfig -. -liTags -() ) - -5983 - gliedCou - = -liedCou -. -vueOr -(0+ -liTags - -cfig - ); - -5984 if - gcfig -. -liR܋rs -() ) - -5985 - gliedCou - = -liedCou -. -vueOr -(0+ -liR܋rs - -cfig - ); - -5986  - gliedCou -; - -5992  - #TWOBLUECUBES_CATCH_RUNNER_IMPL_HPP_INCLUDED - - - ) - -5995  - #TWOBLUECUBES_CATCH_TEST_CASE_TRACKER_HPP_INCLUDED - - - ) - -5997  - ~ - -5998  - ~ - -5999  - ~ - -6000  - ~ - -6001  - ~ - -6003 -CATCH_INTERNAL_SUPPRESS_ETD_WARNINGS - - -6005 -mea - - gCch - { - -6006 -mea - - gTeCaTckg - { - -6008  - sNameAndLoti - { - -6009 - gd -:: -rg - -me -; - -6010 -SourLeInfo - - gloti -; - -6012 -NameAndLoti - -d -:: -rg - cڡ& -_me -, -SourLeInfo - cڡ& -_loti - ) - -6013 : -me - -_me - ), - -6014 -loti - -_loti - ) - -6018  - gITck - : -ShedIm -<> { - -6019 -vtu - ~ -ITck -(); - -6022 -vtu - -NameAndLoti - cڡ& -meAndLoti -() const = 0; - -6025 -vtu - -bo - -isCome -() const = 0; - -6026 -vtu - -bo - -isSucssfuyComed -() const = 0; - -6027 -vtu - -bo - -isOn -() const = 0; - -6028 -vtu - -bo - -hasChdn -() const = 0; - -6030 -vtu - - gITck -& - -() = 0; - -6033 -vtu -  -o -() = 0; - -6034 -vtu -  - -() = 0; - -6035 -vtu -  -mkAsNdgAnhRun -() = 0; - -6037 -vtu -  -addChd - -P -< -ITck -> cڡ& -chd - ) = 0; - -6038 -vtu - -ITck -* -fdChd - -NameAndLoti - cڡ& -meAndLoti - ) = 0; - -6039 -vtu -  -ݒChd -() = 0; - -6042 -vtu - -bo - -isSeiTck -() const = 0; - -6043 -vtu - -bo - -isIndexTck -() const = 0; - -6046 as - cTckCڋxt - { - -6048 - eRunS - { - -6049 - gNSed -, - -6050 - gExecutg -, - -6051 - gComedCye - - -6054 - gP -< - gITck -> - gm_roTck -; - -6055 -ITck -* - gm_cutTck -; - -6056 -RunS - - gm_runS -; - -6058 - gpublic -: - -6060  -TckCڋxt -& - -() { - -6061  -TckCڋxt - -s_ -; - -6062  - gs_ -; - -6065 -TckCڋxt -() - -6066 : -m_cutTck - -CATCH_NULL - ), - -6067 -m_runS - -NSed - ) - -6070 - gITck -& -tRun -(); - -6072  -dRun -() { - -6073 - gm_roTck -. -t -(); - -6074 - gm_cutTck - = -CATCH_NULL -; - -6075 - gm_runS - = -NSed -; - -6078  -tCye -() { - -6079 - gm_cutTck - = -m_roTck -. -g -(); - -6080 - gm_runS - = -Executg -; - -6082  -comeCye -() { - -6083 - gm_runS - = -ComedCye -; - -6086 -bo - -comedCye -() const { - -6087  - gm_runS - = -ComedCye -; - -6089 - gITck -& -cutTck -() { - -6090  * - gm_cutTck -; - -6092  -tCutTck - -ITck -* -ack - ) { - -6093 - gm_cutTck - = -ack -; - -6097 as - cTckBa - : -public - -ITck - { - -6098 -eed -: - -6099 - eCyeS - { - -6100 -NSed -, - -6101 - gExecutg -, - -6102 - gExecutgChdn -, - -6103 - gNdsAnhRun -, - -6104 - gComedSucssfuy -, - -6105 - gFaed - - -6107 as - cTckHasName - { - -6108 -NameAndLoti - - gm_meAndLoti -; - -6109 - gpublic -: - -6110 -TckHasName - -NameAndLoti - cڡ& -meAndLoti - ) : -m_meAndLoti -(ameAndLocation ) {} - -6111 -bo - -ݔ - () -P -< -ITck -> cڡ& -ack - ) { - -6113 -ack --> -meAndLoti -(). -me - = -m_meAndLoti -.name && - -6114 -ack --> -meAndLoti -(). -loti - = -m_meAndLoti -.location; - -6117  - gd -:: - tve -< - tP -< - tITck -> > - tChdn -; - -6118 -NameAndLoti - - gm_meAndLoti -; - -6119 - gTckCڋxt -& - gm_x -; - -6120 -ITck -* - gm_ -; - -6121 -Chdn - - gm_chdn -; - -6122 -CyeS - - gm_runS -; - -6123 - gpublic -: - -6124 -TckBa - -NameAndLoti - cڡ& -meAndLoti -, -TckCڋxt -& -x -, -ITck -* - - ) - -6125 : -m_meAndLoti - -meAndLoti - ), - -6126 -m_x - -x - ), - -6127 -m_ - - - ), - -6128 -m_runS - -NSed - ) - -6130 - gvtu - ~ -TckBa -(); - -6132 -vtu - -NameAndLoti - cڡ& -meAndLoti -(cڡ - gCATCH_OVERRIDE - { - -6133  - gm_meAndLoti -; - -6135 -vtu - -bo - -isCome -(cڡ - gCATCH_OVERRIDE - { - -6136  - gm_runS - = -ComedSucssfuy - || -m_runS - = -Faed -; - -6138 -vtu - -bo - -isSucssfuyComed -(cڡ - gCATCH_OVERRIDE - { - -6139  - gm_runS - = -ComedSucssfuy -; - -6141 -vtu - -bo - -isOn -(cڡ - gCATCH_OVERRIDE - { - -6142  - gm_runS - ! -NSed - && ! -isCome -(); - -6144 -vtu - -bo - -hasChdn -(cڡ - gCATCH_OVERRIDE - { - -6145  ! - gm_chdn -. -emy -(); - -6148 -vtu -  -addChd - -P -< -ITck -> cڡ& -chd - ) - gCATCH_OVERRIDE - { - -6149 - gm_chdn -. -push_back - -chd - ); - -6152 -vtu - -ITck -* -fdChd - -NameAndLoti - cڡ& -meAndLoti - ) - gCATCH_OVERRIDE - { - -6153 - gChdn -:: -cڡ_ - - - = -d -:: -fd_if - -m_chdn -. -beg -(), m_chdn. -d -(), -TckHasName - -meAndLoti - ) ); - -6154  - g - ! -m_chdn -. -d -() ) - -6155 ? - --> -g -() - -6156 : -CATCH_NULL -; - -6158 -vtu - - gITck -& - -( - gCATCH_OVERRIDE - { - -6159 -as - -m_ - ); - -6160  * - gm_ -; - -6163 -vtu -  -ݒChd -( - gCATCH_OVERRIDE - { - -6164 if - gm_runS - ! -ExecutgChdn - ) { - -6165 -m_runS - = -ExecutgChdn -; - -6166 if - gm_ - ) - -6167 - gm_ --> -ݒChd -(); - -6171 -vtu - -bo - -isSeiTck -(cڡ - gCATCH_OVERRIDE - {  - gl -; } - -6172 -vtu - -bo - -isIndexTck -(cڡ - gCATCH_OVERRIDE - {  - gl -; } - -6174  -ݒ -() { - -6175 - gm_runS - = -Executg -; - -6176 -moveToThis -(); - -6177 if - gm_ - ) - -6178 - gm_ --> -ݒChd -(); - -6181 -vtu -  -o -( - gCATCH_OVERRIDE - { - -6184  & - gm_x -. -cutTck -(! -this - ) - -6185 -m_x -. -cutTck -(). -o -(); - -6187  - gm_runS - ) { - -6188  - gNSed -: - -6189  -ComedSucssfuy -: - -6190  -Faed -: - -6191 -throw - -d -:: -logic_r -( "Illogical state" ); - -6193  - gNdsAnhRun -: - -6196  - gExecutg -: - -6197 -m_runS - = -ComedSucssfuy -; - -6199  - gExecutgChdn -: - -6200 if -m_chdn -. -emy -(|| m_chdn. -back -()-> -isCome -() ) - -6201 -m_runS - = -ComedSucssfuy -; - -6205 -throw - -d -:: -logic_r -( "Unexpected state" ); - -6207 -moveToPt -(); - -6208 - gm_x -. -comeCye -(); - -6210 -vtu -  - -( - gCATCH_OVERRIDE - { - -6211 - gm_runS - = -Faed -; - -6212 if - gm_ - ) - -6213 - gm_ --> -mkAsNdgAnhRun -(); - -6214 -moveToPt -(); - -6215 - gm_x -. -comeCye -(); - -6217 -vtu -  -mkAsNdgAnhRun -( - gCATCH_OVERRIDE - { - -6218 - gm_runS - = -NdsAnhRun -; - -6220 - give -: - -6221  -moveToPt -() { - -6222 -as - -m_ - ); - -6223 - gm_x -. -tCutTck - -m_ - ); - -6225  -moveToThis -() { - -6226 - gm_x -. -tCutTck - -this - ); - -6230 as - cSeiTck - : -public - -TckBa - { - -6231 -d -:: -ve - -m_frs -; - -6232 - gpublic -: - -6233 -SeiTck - -NameAndLoti - cڡ& -meAndLoti -, -TckCڋxt -& -x -, -ITck -* - - ) - -6234 : -TckBa - -meAndLoti -, -x -, - - ) - -6236 if - g - ) { - -6237  ! - g --> -isSeiTck -() ) - -6238 - g - = & - -->parent(); - -6240 - gSeiTck -& - gSei - = -ic_ -< -SeiTck -&>* - - ); - -6241 -addNextFrs - -Sei -. -m_frs - ); - -6244 - gvtu - ~ -SeiTck -(); - -6246 -vtu - -bo - -isSeiTck -(cڡ - gCATCH_OVERRIDE - {  - gue -; } - -6248  - gSeiTck -& -acque - -TckCڋxt -& -x -, -NameAndLoti - cڡ& -meAndLoti - ) { - -6249 -SeiTck -* - gi - = -CATCH_NULL -; - -6251 - gITck -& - gcutTck - = -x -. -cutTck -(); - -6252 if -ITck -* - gchdTck - = -cutTck -. -fdChd - -meAndLoti - ) ) { - -6253 -as - -chdTck - ); - -6254 -as - -chdTck --> -isSeiTck -() ); - -6255 - gi - = -ic_ -< -SeiTck -*> -chdTck - ); - -6258 - gi - = -w - -SeiTck - -meAndLoti -, -x -, & -cutTck - ); - -6259 - gcutTck -. -addChd - -i - ); - -6261 if! - gx -. -comedCye -() ) - -6262 - gi --> -yOn -(); - -6263  * - gi -; - -6266  -yOn -() { - -6267 if! -isCome -(&& ( - gm_frs -. -emy -(|| m_frs[0].emy(|| m_frs[0] = -m_meAndLoti -. -me - ) ) - -6268 -ݒ -(); - -6271  -addInlFrs - -d -:: -ve - cڡ& -frs - ) { - -6272 if! -frs -. -emy -() ) { - -6273 -m_frs -. -push_back -(""); - -6274 - gm_frs -. -push_back -(""); - -6275 - gm_frs -. - - -m_frs -. -d -(), -frs -. -beg -(), filters.end() ); - -6278  -addNextFrs - -d -:: -ve - cڡ& -frs - ) { - -6279 if -frs -. -size -() > 1 ) - -6280 -m_frs -. - -m_frs. -d -(), ++ -frs -. -beg -(), filters.end() ); - -6284 as - cIndexTck - : -public - -TckBa - { - -6285  -m_size -; - -6286  - gm_dex -; - -6287 - gpublic -: - -6288 -IndexTck - -NameAndLoti - cڡ& -meAndLoti -, -TckCڋxt -& -x -, -ITck -* - -,  -size - ) - -6289 : -TckBa - -meAndLoti -, -x -, - - ), - -6290 -m_size - -size - ), - -6291 -m_dex -( -1 ) - -6293 - gvtu - ~ -IndexTck -(); - -6295 -vtu - -bo - -isIndexTck -(cڡ - gCATCH_OVERRIDE - {  - gue -; } - -6297  - gIndexTck -& -acque - -TckCڋxt -& -x -, -NameAndLoti - cڡ& -meAndLoti -,  -size - ) { - -6298 -IndexTck -* - gack - = -CATCH_NULL -; - -6300 - gITck -& - gcutTck - = -x -. -cutTck -(); - -6301 if -ITck -* - gchdTck - = -cutTck -. -fdChd - -meAndLoti - ) ) { - -6302 -as - -chdTck - ); - -6303 -as - -chdTck --> -isIndexTck -() ); - -6304 - gack - = -ic_ -< -IndexTck -*> -chdTck - ); - -6307 - gack - = -w - -IndexTck - -meAndLoti -, -x -, & -cutTck -, -size - ); - -6308 - gcutTck -. -addChd - -ack - ); - -6311 if! - gx -. -comedCye -(&& ! - gack --> -isCome -() ) { - -6312 if - gack --> - gm_runS - ! -ExecutgChdn - && -ack --> -m_runS - ! -NdsAnhRun - ) - -6313 -ack --> -moveNext -(); - -6314 - gack --> -ݒ -(); - -6317  * - gack -; - -6320  -dex -(cڡ {  - gm_dex -; } - -6322  -moveNext -() { - -6323 - gm_dex -++; - -6324 - gm_chdn -. -r -(); - -6327 -vtu -  -o -( - gCATCH_OVERRIDE - { - -6328 - gTckBa -:: -o -(); - -6329 if - gm_runS - = -ComedSucssfuy - && -m_dex - < -m_size --1 ) - -6330 -m_runS - = -Executg -; - -6334 -le - - gITck -& - gTckCڋxt -:: -tRun -() { - -6335 -m_roTck - = -w - -SeiTck - -NameAndLoti -"{ro}", -CATCH_INTERNAL_LINEINFO - ), * -this -, -CATCH_NULL - ); - -6336 - gm_cutTck - = -CATCH_NULL -; - -6337 - gm_runS - = -Executg -; - -6338  * - gm_roTck -; - -6343 -usg - - gTeCaTckg -:: -ITck -; - -6344 -usg - - gTeCaTckg -:: -TckCڋxt -; - -6345 -usg - - gTeCaTckg -:: -SeiTck -; - -6346 -usg - - gTeCaTckg -:: -IndexTck -; - -6350 - gCATCH_INTERNAL_UNSUPPRESS_ETD_WARNINGS - - -6353  - #TWOBLUECUBES_CATCH_FATAL_CONDITION_H_INCLUDED - - - ) - -6355 -mea - - gCch - { - -6358 -le -  -ptF - -d -:: -rg - cڡ& -mesge - ) { - -6359 -ICڋxt -& -cڋxt - = -Cch -:: -gCutCڋxt -(); - -6360 -IResuCtu -* - gsuCtu - = -cڋxt -. -gResuCtu -(); - -6361 - gsuCtu --> -hdFECdi - -mesge - ); - -6366 #i - $defed - ( -CATCH_PLATFORM_WINDOWS - ) - -6369  - #TWOBLUECUBES_CATCH_WINDOWS_H_PROXY_H_INCLUDED - - - ) - -6371 #ifde -CATCH_DEFINES_NOMINMAX - - -6372  - #NOMINMAX - - - ) - -6374 #ifde -CATCH_DEFINES_WIN32_LEAN_AND_MEAN - - -6375  - #WIN32_LEAN_AND_MEAN - - - ) - -6378 #ifde -__AFXDLL - - -6379  - ~ - -6381  - ~ - -6384 #ifde -CATCH_DEFINES_NOMINMAX - - -6385 #unde -NOMINMAX - - -6387 #ifde -CATCH_DEFINES_WIN32_LEAN_AND_MEAN - - -6388 #unde -WIN32_LEAN_AND_MEAN - - -6392 #i! - $defed - ( -CATCH_CONFIG_WINDOWS_SEH - ) - -6394 -mea - -Cch - { - -6395  - sFCdiHdr - { - -6396  - `t -() {} - -6398 - } -} - -6402 -mea - - gCch - { - -6404  - sSiglDefs - { -DWORD - - gid -; cڡ * - gme -; }; - -6405 -SiglDefs - -siglDefs -[]; - -6409 -SiglDefs - - gsiglDefs -[] = { - -6410 { -EXCEPTION_ILLEGAL_INSTRUCTION -, "SIGILL - Illegal instruction signal" }, - -6411 { -EXCEPTION_STACK_OVERFLOW -, "SIGSEGV - Stack overflow" }, - -6412 { -EXCEPTION_ACCESS_VIOLATION -, "SIGSEGV - Segmentation violation signal" }, - -6413 { -EXCEPTION_INT_DIVIDE_BY_ZERO -, "Divide by zerorror" }, - -6416  - sFCdiHdr - { - -6418  -LONG - -CALLBACK - -hdVeedExi -( -PEXCEPTION_POINTERS - -ExiInfo -) { - -6419  - gi - = 0; i < ( - gsiglDefs -/ ( - gSiglDefs -); ++i) { - -6420 i( - gExiInfo --> - gExiRecd --> - gExiCode - = -siglDefs -[ -i -]. -id -) { - -6421 -ptF -( -siglDefs -[ -i -]. -me -); - -6426  - gEXCEPTION_CONTINUE_SEARCH -; - -6429 -FCdiHdr -() { - -6430 - gisS - = -ue -; - -6433 - ggueSize - = 32 * 1024; - -6434 - gexiHdrHd - = -CATCH_NULL -; - -6436 - gexiHdrHd - = -AddVeedExiHdr -(1, -hdVeedExi -); - -6438 -SThadSckGue -(& -gueSize -); - -6441  -t -() { - -6442 i( - gisS -) { - -6444 -RemoveVeedExiHdr -( -exiHdrHd -); - -6445 -SThadSckGue -(& -gueSize -); - -6446 - gexiHdrHd - = -CATCH_NULL -; - -6447 - gisS - = -l -; - -6451 ~ -FCdiHdr -() { - -6452 -t -(); - -6454 - give -: - -6455  -bo - -isS -; - -6456  -ULONG - - ggueSize -; - -6457  -PVOID - - gexiHdrHd -; - -6460 -bo - - gFCdiHdr -:: -isS - = -l -; - -6461 -ULONG - - gFCdiHdr -:: -gueSize - = 0; - -6462 -PVOID - - gFCdiHdr -:: -exiHdrHd - = -CATCH_NULL -; - -6470 #i! - $defed -( -CATCH_CONFIG_POSIX_SIGNALS -) - -6472 -mea - -Cch - { - -6473  - sFCdiHdr - { - -6474  - `t -() {} - -6476 - } -} - -6480  - ~ - -6482 -mea - - gCch - { - -6484  - sSiglDefs - { - -6485  - gid -; - -6486 cڡ * - gme -; - -6488 -SiglDefs - -siglDefs -[]; - -6489 -SiglDefs - - gsiglDefs -[] = { - -6490 { -SIGINT -, "SIGINT - Terminal interrupt signal" }, - -6491 { -SIGILL -, "SIGILL - Illegal instruction signal" }, - -6492 { -SIGFPE -, "SIGFPE - Floatingointrror signal" }, - -6493 { -SIGSEGV -, "SIGSEGV - Segmentation violation signal" }, - -6494 { -SIGTERM -, "SIGTERM - Terminationequest signal" }, - -6495 { -SIGABRT -, "SIGABRT - Abort (abnormalermination) signal" } - -6498  - sFCdiHdr - { - -6500  -bo - - gisS -; - -6501  -sigai - - gdSigAis - [( -siglDefs -)/( -SiglDefs -)]; - -6502  -ack_t - - gdSigSck -; - -6503  - gtSckMem -[ -SIGSTKSZ -]; - -6505  -hdSigl - -sig - ) { - -6506 - gd -:: -rg - -me - = ""; - -6507  - gd -:: -size_t - -i - = 0; - gi - < ( - gsiglDefs -/ ( - gSiglDefs -); ++i) { - -6508 - gSiglDefs - & - gdef - = -siglDefs -[ -i -]; - -6509 i( - gsig - = -def -. -id -) { - -6510 -me - = -def -.name; - -6514 -t -(); - -6515 -ptF -( -me -); - -6516 -i - -sig - ); - -6519 -FCdiHdr -() { - -6520 - gisS - = -ue -; - -6521 -ack_t - - gsigSck -; - -6522 - gsigSck -. - gss_ - = -tSckMem -; - -6523 - gsigSck -. - gss_size - = -SIGSTKSZ -; - -6524 - gsigSck -. - gss_ags - = 0; - -6525 -sigtack -(& -sigSck -, & -dSigSck -); - -6526  -sigai - - g - = { 0 }; - -6528 - g -. - g_hdr - = -hdSigl -; - -6529 - g -. - g_ags - = -SA_ONSTACK -; - -6530  - gd -:: -size_t - -i - = 0; - gi - < ( - gsiglDefs -)/( - gSiglDefs -); ++i) { - -6531 -sigai -( -siglDefs -[ -i -]. -id -, & - -, & -dSigAis -[i]); - -6535 ~ -FCdiHdr -() { - -6536 -t -(); - -6538  -t -() { - -6539 if - gisS - ) { - -6541  - gd -:: -size_t - -i - = 0; - gi - < ( - gsiglDefs -)/( - gSiglDefs -); ++i ) { - -6542 -sigai -( -siglDefs -[ -i -]. -id -, & -dSigAis -[i], -CATCH_NULL -); - -6545 -sigtack -(& -dSigSck -, -CATCH_NULL -); - -6546 - gisS - = -l -; - -6551 -bo - - gFCdiHdr -:: -isS - = -l -; - -6552  -sigai - - gFCdiHdr -:: -dSigAis -[( -siglDefs -)/( -SiglDefs -)] = {}; - -6553 -ack_t - - gFCdiHdr -:: -dSigSck - = {}; - -6554  - gFCdiHdr -:: -tSckMem -[ -SIGSTKSZ -] = {}; - -6562  - ~ - -6563  - ~ - -6565 -mea - - gCch - { - -6567 as - cSmRede - { - -6569 - gpublic -: - -6570 -SmRede - -d -:: -oam -& -am -, std:: -rg -& -rgSg - ) - -6571 : -m_am - -am - ), - -6572 -m_evBuf - -am -. -rdbuf -() ), - -6573 -m_rgSg - -rgSg - ) - -6575 - gam -. -rdbuf - -m_oss -.rdbuf() ); - -6578 ~ -SmRede -() { - -6579 - gm_rgSg - + -m_oss -. -r -(); - -6580 - gm_am -. -rdbuf - -m_evBuf - ); - -6583 - give -: - -6584 -d -:: -oam -& -m_am -; - -6585 - gd -:: -ambuf -* -m_evBuf -; - -6586 - gd -:: -orgam - -m_oss -; - -6587 - gd -:: -rg -& -m_rgSg -; - -6593 as - cStdERede - { - -6594 - gpublic -: - -6595 -StdERede -( -d -:: -rg -& -rgSg -) - -6596 : -m_Buf - - -(). -rdbuf -(), -m_ogBuf -( -og -().rdbuf()), - -6597 -m_rgSg -( -rgSg -){ - -6598 - -(). -rdbuf -( -m_oss -.rdbuf()); - -6599 -og -(). -rdbuf -( -m_oss -.rdbuf()); - -6601 ~ -StdERede -() { - -6602 - gm_rgSg - + -m_oss -. -r -(); - -6603 - -(). -rdbuf -( -m_Buf -); - -6604 -og -(). -rdbuf -( -m_ogBuf -); - -6606 - give -: - -6607 -d -:: -ambuf -* -m_Buf -; - -6608 - gd -:: -ambuf -* -m_ogBuf -; - -6609 - gd -:: -orgam - -m_oss -; - -6610 - gd -:: -rg -& -m_rgSg -; - -6615 -ass - - gRunCڋxt - : -public - -IResuCtu -,ubli - gIRu” - { - -6617 -RunCڋxt -( RunContext const& ); - -6618  - gݔ - = -RunCڋxt - const& ); - -6620 - gpublic -: - -6622 -exic - -RunCڋxt - -P -< -ICfig - cڡ> cڡ& -_cfig -, P< -ISmgR܋r -> cڡ& -p܋r - ) - -6623 : -m_runInfo - -_cfig --> -me -() ), - -6624 -m_cڋxt - -gCutMubCڋxt -() ), - -6625 -m_aiveTeCa - -CATCH_NULL - ), - -6626 -m_cfig - -_cfig - ), - -6627 -m_p܋r - -p܋r - ), - -6628 -m_shouldRtUxed - ( -ue - ) - -6630 - gm_cڋxt -. -tRu” - -this - ); - -6631 - gm_cڋxt -. -tCfig - -m_cfig - ); - -6632 - gm_cڋxt -. -tResuCtu - -this - ); - -6633 - gm_p܋r --> -RunSg - -m_runInfo - ); - -6636 - gvtu - ~ -RunCڋxt -() { - -6637 - gm_p܋r --> -RunEnded - -TeRunSts - -m_runInfo -, -m_tٮs -, -abtg -() ) ); - -6640  -GroupSg - -d -:: -rg - cڡ& -Sc -, std:: -size_t - -groupIndex -, std::size_ -groupsCou - ) { - -6641 -m_p܋r --> -GroupSg - -GroupInfo - -Sc -, -groupIndex -, -groupsCou - ) ); - -6643  -GroupEnded - -d -:: -rg - cڡ& -Sc -, -Tٮs - cڡ& -tٮs -, std:: -size_t - -groupIndex -, std::size_ -groupsCou - ) { - -6644 -m_p܋r --> -GroupEnded - -TeGroupSts - -GroupInfo - -Sc -, -groupIndex -, -groupsCou - ), -tٮs -, -abtg -() ) ); - -6647 -Tٮs - -runTe - -TeCa - cڡ& -Ca - ) { - -6648 -Tٮs - - gevTٮs - = -m_tٮs -; - -6650 - gd -:: -rg - -deedCout -; - -6651 - gd -:: -rg - -deedCr -; - -6653 -TeCaInfo - - gInfo - = -Ca -. -gTeCaInfo -(); - -6655 - gm_p܋r --> -CaSg - -Info - ); - -6657 - gm_aiveTeCa - = & -Ca -; - -6660 - gITck -& - groTck - = -m_ackCڋxt -. -tRun -(); - -6661 -as - -roTck -. -isSeiTck -() ); - -6662 - gic_ -< - gSeiTck -&> - groTck - ). -addInlFrs - -m_cfig --> -gSeisToRun -() ); - -6664 - gm_ackCڋxt -. -tCye -(); - -6665 - gm_CaTck - = & -SeiTck -:: -acque - -m_ackCڋxt -, -TeCaTckg -:: -NameAndLoti - -Info -. -me -,eInfo. -leInfo - ) ); - -6666 -runCutTe - -deedCout -, -deedCr - ); - -6668  ! - gm_CaTck --> -isSucssfuyComed -(&& ! -abtg -() ); - -6671  -gCutCڋxt -(). -advGsFCutTe -(&& ! -abtg -() ); - -6673 -Tٮs - - gdTٮs - = -m_tٮs -. -d - -evTٮs - ); - -6674 if - gInfo -. -exedToFa -(&& - gdTٮs -. - gCas -. - gsd - > 0 ) { - -6675 - gdTٮs -. - gasis -. - ged -++; - -6676 - gdTٮs -. - gCas -. - gsd ---; - -6677 - gdTٮs -. - gCas -. - ged -++; - -6679 - gm_tٮs -. - gCas - + -dTٮs -. -Cas -; - -6680 - gm_p܋r --> -CaEnded - -TeCaSts - -Info -, - -6681 -dTٮs -, - -6682 -deedCout -, - -6683 -deedCr -, - -6684 -abtg -() ) ); - -6686 - gm_aiveTeCa - = -CATCH_NULL -; - -6687 - gm_CaTck - = -CATCH_NULL -; - -6689  - gdTٮs -; - -6692 - gP -< -ICfig - cڡ> -cfig -() const { - -6693  - gm_cfig -; - -6696 - give -: - -6698 -vtu -  -asiEnded - -AsiResu - cڡ& -su - ) { - -6699 if -su -. -gResuTy -(= -ResuWas -:: -Ok - ) { - -6700 -m_tٮs -. -asis -. -sd -++; - -6702 if! - gsu -. -isOk -() ) { - -6703 - gm_tٮs -. - gasis -. - ged -++; - -6708 - gic_ -<>( - gm_p܋r --> -asiEnded -( -AsiSts -( -su -, -m_mesges -, -m_tٮs -))); - -6711 - gm_ϡAsiInfo - = -AsiInfo -"", -m_ϡAsiInfo -. -leInfo -, "{Unknowexessiڇᔁhp܋de}" , m_ϡAsiInfo. -suDiosi - ); - -6712 - gm_ϡResu - = -su -; - -6715 -vtu - -bo - -ϡAsiPasd -() - -6717  - gm_tٮs -. - gasis -. - gsd - =( -m_evPasd - + 1); - -6720 -vtu -  -asiPasd -() - -6722 - gm_tٮs -. - gasis -. - gsd -++; - -6723 - gm_ϡAsiInfo -. - gudExessi - = "{Unknownxpressionfterheeportedine}"; - -6724 - gm_ϡAsiInfo -. - gmaoName - = ""; - -6727 -vtu -  -asiRun -() - -6729 - gm_evPasd - = -m_tٮs -. -asis -. -sd -; - -6732 -vtu - -bo - -iSed - ( - -6733 -SeiInfo - cڡ& -iInfo -, - -6734 -Cous -& -asis - - -6737 - gITck -& - giTck - = -SeiTck -:: -acque - -m_ackCڋxt -, -TeCaTckg -:: -NameAndLoti - -iInfo -. -me -, seiInfo. -leInfo - ) ); - -6738 if! - giTck -. -isOn -() ) - -6739  - gl -; - -6740 - gm_aiveSeis -. -push_back -& -iTck - ); - -6742 - gm_ϡAsiInfo -. - gleInfo - = -iInfo -. -leInfo -; - -6744 - gm_p܋r --> -iSg - -iInfo - ); - -6746 - gasis - = -m_tٮs -. -asis -; - -6748  - gue -; - -6750 -bo - -FMissgAsis - -Cous -& -asis - ) { - -6751 if - gasis -. -tٮ -() != 0 ) - -6752  -l -; - -6753 if! - gm_cfig --> -wnAboutMissgAsis -() ) - -6754  - gl -; - -6755 if - gm_ackCڋxt -. -cutTck -(). -hasChdn -() ) - -6756  - gl -; - -6757 - gm_tٮs -. - gasis -. - ged -++; - -6758 - gasis -. - ged -++; - -6759  - gue -; - -6762 -vtu -  -iEnded - -SeiEndInfo - cڡ& -dInfo - ) { - -6763 -Cous - - gasis - = -m_tٮs -. -asis - - -dInfo -. -evAsis -; - -6764 -bo - - gmissgAsis - = -FMissgAsis - -asis - ); - -6766 if! - gm_aiveSeis -. -emy -() ) { - -6767 - gm_aiveSeis -. -back -()-> -o -(); - -6768 - gm_aiveSeis -. -p_back -(); - -6771 - gm_p܋r --> -iEnded - -SeiSts - -dInfo -. -iInfo -, -asis -,ndInfo. -dutiInSecds -, -missgAsis - ) ); - -6772 - gm_mesges -. -r -(); - -6775 -vtu -  -iEndedEly - -SeiEndInfo - cڡ& -dInfo - ) { - -6776 if - gm_unfishedSeis -. -emy -() ) - -6777 - gm_aiveSeis -. -back -()-> - -(); - -6779 - gm_aiveSeis -. -back -()-> -o -(); - -6780 - gm_aiveSeis -. -p_back -(); - -6782 - gm_unfishedSeis -. -push_back - -dInfo - ); - -6785 -vtu -  -pushScedMesge - -MesgeInfo - cڡ& -mesge - ) { - -6786 - gm_mesges -. -push_back - -mesge - ); - -6789 -vtu -  -pScedMesge - -MesgeInfo - cڡ& -mesge - ) { - -6790 - gm_mesges -. -a - -d -:: -move - -m_mesges -. -beg -(), m_mesges. -d -(), -mesge - ), m_messages.end() ); - -6793 -vtu - - gd -:: -rg - -gCutTeName -() const { - -6794  -m_aiveTeCa - - -6795 ? -m_aiveTeCa --> -gTeCaInfo -(). -me - - -6796 : -d -:: -rg -(); - -6799 -vtu - cڡ -AsiResu -* -gLaResu -() const { - -6800  & - gm_ϡResu -; - -6803 -vtu -  -exiElyR܋d -() { - -6804 - gm_shouldRtUxed - = -l -; - -6807 -vtu -  -hdFECdi - -d -:: -rg - cڡ& -mesge - ) { - -6810 -AsiResuDa - -mpResu -; - -6811 - gmpResu -. - gsuTy - = -ResuWas -:: -FECdi -; - -6812 - gmpResu -. - gmesge - = -mesge -; - -6813 -AsiResu - -su -( -m_ϡAsiInfo -, -mpResu -); - -6815 -gResuCtu -(). -asiEnded -( -su -); - -6817 -hdUnfishedSeis -(); - -6820 -TeCaInfo - cڡ& - gCaInfo - = -m_aiveTeCa --> -gTeCaInfo -(); - -6821 -SeiInfo - -CaSei - -CaInfo -. -leInfo -,eCaInfo. -me -,eCaInfo. -desti - ); - -6823 -Cous - - gasis -; - -6824 - gasis -. - ged - = 1; - -6825 -SeiSts - -CaSeiSts - -CaSei -, -asis -, 0, -l - ); - -6826 - gm_p܋r --> -iEnded - -CaSeiSts - ); - -6828 -TeCaInfo - - gInfo - = -m_aiveTeCa --> -gTeCaInfo -(); - -6830 -Tٮs - - gdTٮs -; - -6831 - gdTٮs -. - gCas -. - ged - = 1; - -6832 - gdTٮs -. - gasis -. - ged - = 1; - -6833 - gm_p܋r --> -CaEnded - -TeCaSts - -Info -, - -6834 -dTٮs -, - -6835 -d -:: -rg -(), - -6836 -d -:: -rg -(), - -6837 -l - ) ); - -6838 - gm_tٮs -. - gCas -. - ged -++; - -6839 -GroupEnded - -d -:: -rg -(), -m_tٮs -, 1, 1 ); - -6840 - gm_p܋r --> -RunEnded - -TeRunSts - -m_runInfo -, -m_tٮs -, -l - ) ); - -6843 - gpublic -: - -6845 -bo - -abtg -() const { - -6846  -m_tٮs -. -asis -. -ed - = -ic_ -< -d -:: -size_t -> -m_cfig --> -abtA -() ); - -6849 - give -: - -6851  -runCutTe - -d -:: -rg -& -deedCout -, std::rg& -deedCr - ) { - -6852 -TeCaInfo - cڡ& -CaInfo - = -m_aiveTeCa --> -gTeCaInfo -(); - -6853 -SeiInfo - -CaSei - -CaInfo -. -leInfo -,eCaInfo. -me -,eCaInfo. -desti - ); - -6854 - gm_p܋r --> -iSg - -CaSei - ); - -6855 -Cous - - gevAsis - = -m_tٮs -. -asis -; - -6856  - gduti - = 0; - -6857 - gm_shouldRtUxed - = -ue -; - -6858 - gy - { - -6859 - gm_ϡAsiInfo - = -AsiInfo -"TEST_CASE", -CaInfo -. -leInfo -, "", -ResuDiosi -:: -Nm - ); - -6861 -edRng -* -m_cfig - ); - -6863 -Tim - - gtim -; - -6864 - gtim -. -t -(); - -6865 if - gm_p܋r --> -gPns -(). - gshouldRedeStdOut - ) { - -6866 -SmRede - -coutRed - -Cch -:: -cout -(), -deedCout - ); - -6867 -StdERede - -rRed - -deedCr - ); - -6868 -vokeAiveTeCa -(); - -6871 -vokeAiveTeCa -(); - -6873 - gduti - = -tim -. -gEpdSecds -(); - -6875 -tch - -TeFauExi -& ) { - -6878 -tch -(...) { - -6881 i( - gm_shouldRtUxed -) { - -6882 -makeUxedResuBud -(). -uAiveExi -(); - -6885 - gm_CaTck --> -o -(); - -6886 -hdUnfishedSeis -(); - -6887 - gm_mesges -. -r -(); - -6889 -Cous - - gasis - = -m_tٮs -. -asis - - -evAsis -; - -6890 -bo - - gmissgAsis - = -FMissgAsis - -asis - ); - -6892 if - gCaInfo -. -okToFa -() ) { - -6893 - gd -:: -sw - -asis -. -edButOk -,sis. -ed - ); - -6894 - gm_tٮs -. - gasis -. - ged - - -asis -. -edButOk -; - -6895 - gm_tٮs -. - gasis -. - gedButOk - + -asis -. -edButOk -; - -6898 -SeiSts - -CaSeiSts - -CaSei -, -asis -, -duti -, -missgAsis - ); - -6899 - gm_p܋r --> -iEnded - -CaSeiSts - ); - -6902  -vokeAiveTeCa -() { - -6903 -FCdiHdr - - glCdiHdr -; - -6904 - gm_aiveTeCa --> -voke -(); - -6905 - glCdiHdr -. -t -(); - -6908 - give -: - -6910 -ResuBud - -makeUxedResuBud -() const { - -6911  -ResuBud - -m_ϡAsiInfo -. -maoName -, - -6912 -m_ϡAsiInfo -. -leInfo -, - -6913 -m_ϡAsiInfo -. -udExessi -, - -6914 -m_ϡAsiInfo -. -suDiosi - ); - -6917  -hdUnfishedSeis -() { - -6920  - gd -:: -ve -< -SeiEndInfo ->:: -cڡ_v_ - - - = -m_unfishedSeis -. -rbeg -(), - -6921 - gEnd - = -m_unfishedSeis -. -nd -(); - -6922 - g - ! -End -; - -6923 ++ - g - ) - -6924 -iEnded -* - - ); - -6925 - gm_unfishedSeis -. -r -(); - -6928 -TeRunInfo - - gm_runInfo -; - -6929 - gIMubCڋxt -& - gm_cڋxt -; - -6930 -TeCa - cڡ* - gm_aiveTeCa -; - -6931 -ITck -* - gm_CaTck -; - -6932 -ITck -* - gm_cutSeiTck -; - -6933 -AsiResu - - gm_ϡResu -; - -6935 - gP -< -ICfig - cڡ> - gm_cfig -; - -6936 -Tٮs - - gm_tٮs -; - -6937 - gP -< - gISmgR܋r -> - gm_p܋r -; - -6938 - gd -:: -ve -< -MesgeInfo -> -m_mesges -; - -6939 -AsiInfo - - gm_ϡAsiInfo -; - -6940 - gd -:: -ve -< -SeiEndInfo -> -m_unfishedSeis -; - -6941 - gd -:: -ve -< -ITck -*> -m_aiveSeis -; - -6942 -TckCڋxt - - gm_ackCڋxt -; - -6943 -size_t - - gm_evPasd -; - -6944 -bo - - gm_shouldRtUxed -; - -6947 - gIResuCtu -& -gResuCtu -() { - -6948 if -IResuCtu -* - gu - = -gCutCڋxt -(). -gResuCtu -() ) - -6949  * -u -; - -6951 -throw - - gd -:: -logic_r -( "Noesult capture instance" ); - -6957  - #TWOBLUECUBES_CATCH_VERSION_H_INCLUDED - - - ) - -6959 -mea - - gCch - { - -6962  - sVsi - { - -6963 -Vsi - -_majVsi -, - -6964  -_mVsi -, - -6965  -_tchNumb -, - -6966 cڡ * cڡ -_bnchName -, - -6967  -_budNumb - ); - -6969 cڡ - gmajVsi -; - -6970 cڡ - gmVsi -; - -6971 cڡ - gtchNumb -; - -6974 cڡ * cڡ - gbnchName -; - -6975 cڡ - gbudNumb -; - -6977 -nd - - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -Vsi - cڡ& - gvsi - ); - -6979 - give -: - -6980  -ݔ -= -Vsi - const& ); - -6983 -le - -Vsi - -libryVsi -(); - -6986  - ~ - -6987  - ~ - -6988  - ~ - -6990 -mea - - gCch - { - -6992 - gP -< - gISmgR܋r -> -R܋r - -d -:: -rg - cڡ& -p܋rName -, -P -< -Cfig -> cڡ& -cfig - ) { - -6993 - gP -< - gISmgR܋r -> - gp܋r - = -gRegiryHub -(). -gR܋rRegiry -(). - - -p܋rName -, -cfig -. -g -() ); - -6994 if! - gp܋r - ) { - -6995 - gd -:: -orgam - -oss -; - -6996 - goss - << "Nػp܋gied whame: '" << - gp܋rName - << "'"; - -6997 -throw - - gd -:: -doma_r - -oss -. -r -() ); - -6999  - gp܋r -; - -7002 #i! -defed -( -CATCH_CONFIG_DEFAULT_REPORTER -) - -7003  - #CATCH_CONFIG_DEFAULT_REPORTER - "cse" - - ) - -7006 - gP -< - gISmgR܋r -> -makeR܋r - -P -< -Cfig -> cڡ& -cfig - ) { - -7007 - gd -:: -ve -< -d -:: -rg -> -p܋rs - = -cfig --> -gR܋rNames -(); - -7008 if - gp܋rs -. -emy -() ) - -7009 - gp܋rs -. -push_back - -CATCH_CONFIG_DEFAULT_REPORTER - ); - -7011 - gP -< - gISmgR܋r -> - gp܋r -; - -7012  - gd -:: -ve -< -d -:: -rg ->:: -cڡ_ - - - = -p܋rs -. -beg -(), - gEnd - =܋rs. -d -(); - -7013 - g - ! -End -; - -7014 ++ - g - ) - -7015 - gp܋r - = -addR܋r - -p܋r -, -R܋r -* - -, -cfig - ) ); - -7016  - gp܋r -; - -7018 - gP -< - gISmgR܋r -> -addLis - -P -< -ICfig - cڡ> cڡ& -cfig -, P< -ISmgR܋r -> -p܋rs - ) { - -7019 - gIR܋rRegiry -:: -Lis - -lis - = -gRegiryHub -(). -gR܋rRegiry -(). -gLis -(); - -7020  - gIR܋rRegiry -:: -Lis -:: -cڡ_ - - - = -lis -. -beg -(), - gEnd - =is. -d -(); - -7021 - g - ! -End -; - -7022 ++ - g - ) - -7023 - gp܋rs - = -addR܋r -( -p܋rs -, (* - -)-> - - -R܋rCfig - -cfig - ) ) ); - -7024  - gp܋rs -; - -7027 -Tٮs - -runTes - -P -< -Cfig -> cڡ& -cfig - ) { - -7029 - gP -< -ICfig - cڡ> - gicfig - = -cfig -. -g -(); - -7031 - gP -< - gISmgR܋r -> - gp܋r - = -makeR܋r - -cfig - ); - -7032 - gp܋r - = -addLis - -icfig -, -p܋r - ); - -7034 -RunCڋxt - -cڋxt - -icfig -, -p܋r - ); - -7036 -Tٮs - - gtٮs -; - -7038 - gcڋxt -. -GroupSg - -cfig --> -me -(), 1, 1 ); - -7040 -TeSc - - gSc - = -cfig --> -Sc -(); - -7041 if! - gSc -. -hasFrs -() ) - -7042 - gSc - = -TeScPr - -ITagAlsRegiry -:: -g -(). -r -"~[.]" ). -Sc -(); - -7044 - gd -:: -ve -< -TeCa -> cڡ& -lTeCas - = -gATeCasS܋d -* -icfig - ); - -7045  - gd -:: -ve -< -TeCa ->:: -cڡ_ - - - = -lTeCas -. -beg -(), - gEnd - =TeCas. -d -(); - -7046 - g - ! -End -; - -7047 ++ - g - ) { - -7048 if! - gcڋxt -. -abtg -(&& -mchTe -* - -, -Sc -, * -icfig - ) ) - -7049 - gtٮs - + -cڋxt -. -runTe -* - - ); - -7051 - gp܋r --> -skTe -* - - ); - -7054 - gcڋxt -. -GroupEnded - -icfig --> -me -(), -tٮs -, 1, 1 ); - -7055  - gtٮs -; - -7058  -yFamesAsTags - -ICfig - cڡ& -cfig - ) { - -7059 - gd -:: -ve -< -TeCa -> cڡ& -s - = -gATeCasS܋d - -cfig - ); - -7060  - gd -:: -size_t - -i - = 0; - gi - < - gs -. -size -(); ++i ) { - -7061 - gTeCa -& - g - = -cڡ_ -< -TeCa -&> -s -[ -i -] ); - -7062 - gd -:: -t -< -d -:: -rg -> -gs - = - -.tags; - -7064 - gd -:: -rg - -fame - = - -. -leInfo -. -fe -; - -7065 - gd -:: -rg -:: -size_ty - -ϡSsh - = -fame -. -fd_ϡ_of -( "\\/" ); - -7066 if - gϡSsh - ! -d -:: -rg -:: -os - ) - -7067 -fame - = fame. -subr - -ϡSsh -+1 ); - -7069 - gd -:: -rg -:: -size_ty - -ϡD - = -fame -. -fd_ϡ_of -( '.' ); - -7070 if - gϡD - ! -d -:: -rg -:: -os - ) - -7071 -fame - = fame. -subr -0, -ϡD - ); - -7073 - ggs -. - -'#' + -fame - ); - -7074 -tTags - - -, -gs - ); - -7078 as - cSessi - : -NCyab - { - -7079  -bo - -adyIntd -; - -7081 - gpublic -: - -7083  - sOnUnudOis - { - eDoWh - { -Igne -, - gFa - }; }; - -7085 -Sessi -() - -7086 : -m_i - -makeCommdLePr -() ) { - -7087 if -adyIntd - ) { - -7088 -d -:: -rg - -msg - = "Only one instance of Catch::Session canver be used"; - -7089 - gCch -:: - -(<< -msg - << -d -:: -dl -; - -7090 -throw - - gd -:: -logic_r - -msg - ); - -7092 - gadyIntd - = -ue -; - -7094 ~ -Sessi -() { - -7095 - gCch -:: -nUp -(); - -7098  -showHp - -d -:: -rg - cڡ& -ossName - ) { - -7099 -Cch -:: -cout -(<< "\nCch v" << -libryVsi -() << "\n"; - -7101 - gm_i -. -uge - -Cch -:: -cout -(), -ossName - ); - -7102 - gCch -:: -cout -(<< "F mܐda ug shoje docs\n" << -d -:: -dl -; - -7105  -yCommdLe - -gc -, cڡ* cڡ* cڡ -gv -, -OnUnudOis -:: -DoWh - -unudOiBehaviour - = OnUnudOis:: -Fa - ) { - -7106 -y - { - -7107 -m_i -. -tThrowOnUecognidToks - -unudOiBehaviour - = -OnUnudOis -:: -Fa - ); - -7108 - gm_unudToks - = -m_i -. -rIo - -CϿ -:: -gsToVe - -gc -, -gv - ), -m_cfigDa - ); - -7109 if - gm_cfigDa -. - gshowHp - ) - -7110 -showHp - -m_cfigDa -. -ossName - ); - -7111 - gm_cfig -. -t -(); - -7113 -tch - -d -:: -exi -& -ex - ) { - -7115 -Cour - -courGud -Cour:: -Red - ); - -7116 - gCch -:: - -() - -7118 << -Text - -ex -. -wh -(), -TextAribus -(). -tIndt -(2) ) - -7121 - gm_i -. -uge - -Cch -:: -cout -(), -m_cfigDa -. -ossName - ); - -7122  ( - gd -:: -numic_lims -<>:: -max -)(); - -7127  -uCfigDa - -CfigDa - cڡ& -_cfigDa - ) { - -7128 - gm_cfigDa - = -_cfigDa -; - -7129 - gm_cfig -. -t -(); - -7132  -run - -gc -, cڡ* cڡ* cڡ -gv - ) { - -7134  - gtuCode - = -yCommdLe - -gc -, -gv - ); - -7135 if - gtuCode - == 0 ) - -7136 -tuCode - = -run -(); - -7137  - gtuCode -; - -7140 #i -defed -( -WIN32 -&& defed( -UNICODE -) - -7141  -run - -gc -, -wch_t - cڡ* cڡ* cڡ -gv - ) { - -7143 ** - gutf8Argv - = -w - *[ -gc - ]; - -7145   - gi - = 0; i < - ggc -; ++i ) { - -7146  - gbufSize - = -WideChToMuiBy - -CP_UTF8 -, 0, -gv -[ -i -], -1, -NULL -, 0, NULL, NULL ); - -7148 - gutf8Argv -[ -i - ] = -w - [ -bufSize - ]; - -7150 -WideChToMuiBy - -CP_UTF8 -, 0, -gv -[ -i -], -1, -utf8Argv -[i], -bufSize -, -NULL -, NULL ); - -7153  - gtuCode - = -yCommdLe - -gc -, -utf8Argv - ); - -7154 if - gtuCode - == 0 ) - -7155 -tuCode - = -run -(); - -7157   - gi - = 0; i < - ggc -; ++i ) - -7158 - gde - [] - gutf8Argv -[ -i - ]; - -7160 - gde - [] - gutf8Argv -; - -7162  - gtuCode -; - -7166  -run -() { - -7167 if - gm_cfigDa -. - gshowHp - ) - -7170 - gy - - -7172 -cfig -(); - -7174 -edRng -* -m_cfig - ); - -7176 if - gm_cfigDa -. - gfamesAsTags - ) - -7177 -yFamesAsTags -* -m_cfig - ); - -7180 if - gOi -< - gd -:: -size_t -> -lied - = -li - -cfig -() ) ) - -7181  -ic_ -<>* -lied - ); - -7183  - gic_ -<> -runTes - -m_cfig - ). - gasis -. - ged - ); - -7185 -tch - -d -:: -exi -& -ex - ) { - -7186 -Cch -:: - -(<< -ex -. -wh -(<< -d -:: -dl -; - -7187  ( - gd -:: -numic_lims -<>:: -max -)(); - -7191 - gCϿ -:: -CommdLe -< -CfigDa -> cڡ& -i -() const { - -7192  -m_i -; - -7194 - gd -:: -ve -< -CϿ -:: -Pr -:: -Tok -> cڡ& -unudToks -() const { - -7195  -m_unudToks -; - -7197 - gCfigDa -& -cfigDa -() { - -7198  - gm_cfigDa -; - -7200 - gCfig -& -cfig -() { - -7201 if! - gm_cfig - ) - -7202 - gm_cfig - = -w - -Cfig - -m_cfigDa - ); - -7203  * - gm_cfig -; - -7205 - give -: - -7206 -CϿ -:: -CommdLe -< -CfigDa -> -m_i -; - -7207 - gd -:: -ve -< -CϿ -:: -Pr -:: -Tok -> -m_unudToks -; - -7208 -CfigDa - - gm_cfigDa -; - -7209 - gP -< - gCfig -> - gm_cfig -; - -7212 -bo - - gSessi -:: -adyIntd - = -l -; - -7217  - #TWOBLUECUBES_CATCH_REGISTRY_HUB_HPP_INCLUDED - - - ) - -7220  - #TWOBLUECUBES_CATCH_TEST_CASE_REGISTRY_IMPL_HPP_INCLUDED - - - ) - -7222  - ~ - -7223  - ~ - -7224  - ~ - -7225  - ~ - -7227 -mea - - gCch - { - -7229  - sRdomNumbG - { - -7230  - gd -:: - trdiff_t - - tsu_ty -; - -7232 -su_ty - -ݔ -()лsu_ty - gn - ) cڡ {  - gd -:: -nd -(% -n -; } - -7234 #ifde -CATCH_CONFIG_CPP11_SHUFFLE - - -7235  -cڡex - -su_ty - -m -() {  0; } - -7236  -cڡex - -su_ty - -max -() {  1000000; } - -7237 -su_ty - -ݔ -()(cڡ {  - gd -:: -nd -(% -max -(); } - -7239 - gme -< -tyme - - gV -> - -7240  -shufe - -V -& -ve - ) { - -7241 -RdomNumbG - - gg -; - -7242 #ifde -CATCH_CONFIG_CPP11_SHUFFLE - - -7243 - gd -:: -shufe - -ve -. -beg -(), ve. -d -(), -g - ); - -7245 - gd -:: -ndom_shufe - -ve -. -beg -(), ve. -d -(), -g - ); - -7250 -le - - gd -:: -ve -< -TeCa -> -stTes - -ICfig - cڡ& -cfig -, -d -::ve cڡ& -uns܋dTeCas - ) { - -7252 -d -:: -ve -< -TeCa -> -s܋d - = -uns܋dTeCas -; - -7254  - gcfig -. -runOrd -() ) { - -7255  - gRunTes -:: -InLexicogphilOrd -: - -7256 -d -:: -st - -s܋d -. -beg -(), s܋d. -d -() ); - -7258  - gRunTes -:: -InRdomOrd -: - -7260 -edRng - -cfig - ); - -7261 - gRdomNumbG -:: -shufe - -s܋d - ); - -7264  - gRunTes -:: -InDeiOrd -: - -7268  - gs܋d -; - -7270 -bo - -mchTe - -TeCa - cڡ& -Ca -, -TeSc - cڡ& -Sc -, -ICfig - cڡ& -cfig - ) { - -7271  - gSc -. -mches - -Ca - ) && ( - gcfig -. -lowThrows -(|| ! - gCa -. -throws -() ); - -7274  -fNoDuiTeCas - -d -:: -ve -< -TeCa -> cڡ& -funis - ) { - -7275 -d -:: -t -< -TeCa -> -Funis -; - -7276  - gd -:: -ve -< -TeCa ->:: -cڡ_ - - - = -funis -. -beg -(), - gEnd - = funis. -d -(); - -7277 - g - ! -End -; - -7278 ++ - g - ) { - -7279 - gd -:: - -< -d -:: -t -< -TeCa ->:: -cڡ_ -, - gbo -> - gev - = -Funis -. - -* - - ); - -7280 if! - gev -. - gcd - ) { - -7281 - gd -:: -orgam - -ss -; - -7283 - gss - << -Cour -Cour:: -Red - ) - -7284 << "r: TEST_CASE\"" << - --> -me - << "\" )lready defined.\n" - -7285 << "\tF s " << -ev -. -f --> -gTeCaInfo -(). -leInfo - << '\n' - -7286 << "\tRedefed" << - --> -gTeCaInfo -(). -leInfo - << -d -:: -dl -; - -7288 -throw - - gd -:: -ruime_r -( -ss -. -r -()); - -7293 - gd -:: -ve -< -TeCa -> -frTes - -d -::ve cڡ& -Cas -, -TeSc - cڡ& -Sc -, -ICfig - cڡ& -cfig - ) { - -7294 - gd -:: -ve -< -TeCa -> -fd -; - -7295 - gfd -. -rve - -Cas -. -size -() ); - -7296  - gd -:: -ve -< -TeCa ->:: -cڡ_ - - - = -Cas -. -beg -(), - gEnd - =eCas. -d -(); - -7297 - g - ! -End -; - -7298 ++ - g - ) - -7299 if -mchTe -* - -, -Sc -, -cfig - ) ) - -7300 - gfd -. -push_back -* - - ); - -7301  - gfd -; - -7303 - gd -:: -ve -< -TeCa -> cڡ& -gATeCasS܋d - -ICfig - cڡ& -cfig - ) { - -7304  -gRegiryHub -(). -gTeCaRegiry -(). -gATesS܋d - -cfig - ); - -7307 as - cTeRegiry - : -public - -ITeCaRegiry - { - -7308 -public -: - -7309 -TeRegiry -() - -7310 : -m_cutStOrd - -RunTes -:: -InDeiOrd - ), - -7311 -m_uamedCou -( 0 ) - -7313 - gvtu - ~ -TeRegiry -(); - -7315 -vtu -  -giTe - -TeCa - cڡ& -Ca - ) { - -7316 - gd -:: -rg - -me - = -Ca -. -gTeCaInfo -().name; - -7317 if - gme -. -emy -() ) { - -7318 - gd -:: -orgam - -oss -; - -7319 - goss - << "Anymou ca " << ++ - gm_uamedCou -; - -7320  -giTe - -Ca -. -whName - -oss -. -r -() ) ); - -7322 - gm_funis -. -push_back - -Ca - ); - -7325 -vtu - - gd -:: -ve -< -TeCa -> cڡ& -gATes -() const { - -7326  -m_funis -; - -7328 -vtu - - gd -:: -ve -< -TeCa -> cڡ& -gATesS܋d - -ICfig - cڡ& -cfig - ) const { - -7329 if -m_s܋dFunis -. -emy -() ) - -7330 -fNoDuiTeCas - -m_funis - ); - -7332 if - gm_cutStOrd - ! -cfig -. -runOrd -(|| -m_s܋dFunis -. -emy -() ) { - -7333 -m_s܋dFunis - = -stTes - -cfig -, -m_funis - ); - -7334 - gm_cutStOrd - = -cfig -. -runOrd -(); - -7336  - gm_s܋dFunis -; - -7339 - give -: - -7340 -d -:: -ve -< -TeCa -> -m_funis -; - -7341 -mub - - gRunTes -:: -InWhOrd - -m_cutStOrd -; - -7342 -mub - - gd -:: -ve -< -TeCa -> -m_s܋dFunis -; - -7343 -size_t - - gm_uamedCou -; - -7344 - gd -:: -ios_ba -:: -In - -m_oamIn -; - -7349 -ass - - gFeFuniTeCa - : -public - -ShedIm -< -ITeCa -> { - -7350 -public -: - -7352 -FeFuniTeCa - -TeFuni - -fun - ) : -m_fun -( fun ) {} - -7354 -vtu -  -voke -() const { - -7355 -m_fun -(); - -7358 - give -: - -7359 -vtu - ~ -FeFuniTeCa -(); - -7361 -TeFuni - - gm_fun -; - -7364 -le - - gd -:: -rg - -exaCssName - -d -::rg cڡ& -assOrQuifdMhodName - ) { - -7365 -d -:: -rg - -assName - = -assOrQuifdMhodName -; - -7366 if -tsWh - -assName -, '&' ) ) - -7368 - gd -:: -size_t - -ϡCs - = -assName -. -rfd -( "::" ); - -7369 - gd -:: -size_t - -nuimeCs - = -assName -. -rfd -"::", -ϡCs --1 ); - -7370 if - gnuimeCs - = -d -:: -rg -:: -os - ) - -7371 -nuimeCs - = 1; - -7372 - gassName - = -assName -. -subr - -nuimeCs -, -ϡCs --penultimateColons ); - -7374  - gassName -; - -7377  - ggiTeCa - - -7378 -ITeCa -* - gCa -, - -7379 cڡ* - gassOrQuifdMhodName -, - -7380 -NameAndDesc - cڡ& - gmeAndDesc -, - -7381 -SourLeInfo - cڡ& - gleInfo - ) { - -7383 -gMubRegiryHub -(). - ggiTe - - -7384 - gmakeTeCa - - -7385 - gCa -, - -7386 -exaCssName - -assOrQuifdMhodName - ), - -7387 - gmeAndDesc -. - gme -, - -7388 - gmeAndDesc -. - gdesti -, - -7389 - gleInfo - ) ); - -7391  - ggiTeCaFuni - - -7392 -TeFuni - - gfuni -, - -7393 -SourLeInfo - cڡ& - gleInfo -, - -7394 -NameAndDesc - cڡ& - gmeAndDesc - ) { - -7395 -giTeCa - -w - -FeFuniTeCa - -funi - ), "", -meAndDesc -, -leInfo - ); - -7400 - gAutoReg -:: -AutoReg - - -7401 -TeFuni - -funi -, - -7402 -SourLeInfo - cڡ& - gleInfo -, - -7403 -NameAndDesc - cڡ& - gmeAndDesc - ) { - -7404 -giTeCaFuni - -funi -, -leInfo -, -meAndDesc - ); - -7407 - gAutoReg -::~ -AutoReg -() {} - -7412  - #TWOBLUECUBES_CATCH_REPORTER_REGISTRY_HPP_INCLUDED - - - ) - -7414  - ~ - -7416 -mea - -Cch - { - -7418 as - cR܋rRegiry - : -public - -IR܋rRegiry - { - -7420 -public -: - -7422 -vtu - ~ -R܋rRegiry -( -CATCH_OVERRIDE - {} - -7424 -vtu - -ISmgR܋r -* - - -d -:: -rg - cڡ& -me -, -P -< -ICfig - cڡ> cڡ& -cfig - ) cڡ - gCATCH_OVERRIDE - { - -7425 - gFayM -:: -cڡ_ - - - = -m_ܛs -. -fd - -me - ); - -7426 if - g - = -m_ܛs -. -d -() ) - -7427  -CATCH_NULL -; - -7428  - g --> - gcd --> - - -R܋rCfig - -cfig - ) ); - -7431  -giR܋r - -d -:: -rg - cڡ& -me -, -P -< -IR܋rFay -> cڡ& -y - ) { - -7432 - gm_ܛs -. - - -d -:: -make_ - -me -, -y - ) ); - -7434  -giLi - -P -< -IR܋rFay -> cڡ& -y - ) { - -7435 - gm_lis -. -push_back - -y - ); - -7438 -vtu - -FayM - cڡ& -gFaܛs -(cڡ - gCATCH_OVERRIDE - { - -7439  - gm_ܛs -; - -7441 -vtu - -Lis - cڡ& -gLis -(cڡ - gCATCH_OVERRIDE - { - -7442  - gm_lis -; - -7445 - give -: - -7446 -FayM - -m_ܛs -; - -7447 -Lis - - gm_lis -; - -7452  - #TWOBLUECUBES_CATCH_EXCEPTION_TRANSLATOR_REGISTRY_HPP_INCLUDED - - - ) - -7454 #ifde -__OBJC__ - - -7458 -mea - - gCch - { - -7460 as - cExiTnRegiry - : -public - -IExiTnRegiry - { - -7461 -public -: - -7462 ~ -ExiTnRegiry -() { - -7463 -deA - -m_s - ); - -7466 -vtu -  -giTn -cڡ -IExiTn -* - - ) { - -7467 - gm_s -. -push_back - - - ); - -7470 -vtu - - gd -:: -rg - -eAiveExi -() const { - -7471 -y - { - -7472 #ifde -__OBJC__ - - -7474 @ -y - { - -7475  -yTns -(); - -7477 @ -tch - ( -NSExi - * -exi -) { - -7478  - gCch -:: -toSg -[ -exi - -desti -] ); - -7481  -yTns -(); - -7484 -tch - -TeFauExi -& ) { - -7485 - gthrow -; - -7487 -tch - -d -:: -exi -& -ex - ) { - -7488  -ex -. -wh -(); - -7490 -tch - -d -:: -rg -& -msg - ) { - -7491  -msg -; - -7493 -tch -cڡ * -msg - ) { - -7494  - gmsg -; - -7496 -tch -(...) { - -7501 - gd -:: -rg - -yTns -() const { - -7502 if -m_s -. -emy -() ) - -7503 -throw -; - -7505  - gm_s -[0]-> -e - -m_s -. -beg -()+1, m_s. -d -() ); - -7508 - give -: - -7509 -d -:: -ve - -m_s -; - -7514  - #TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_H_INCLUDED - - - ) - -7516  - ~ - -7518 -mea - - gCch - { - -7520 as - cTagAlsRegiry - : -public - -ITagAlsRegiry - { - -7521 -public -: - -7522 -vtu - ~ -TagAlsRegiry -(); - -7523 -vtu - - gOi -< - gTagAls -> -fd - -d -:: -rg - cڡ& -s - ) const; - -7524 -vtu - - gd -:: -rg - -exndAls - -d -::rg cڡ& -uxndedTeSc - ) const; - -7525  -add - -d -:: -rg - cڡ& -s -, std::rg cڡ& -g -, -SourLeInfo - cڡ& -leInfo - ); - -7527 - give -: - -7528 -d -:: -m - - gm_giry -; - -7533 -mea - - gCch - { - -7535 - gmea - { - -7537 -ass - - gRegiryHub - : -public - -IRegiryHub -,ubli - gIMubRegiryHub - { - -7539 -RegiryHub -( RegistryHub const& ); - -7540  - gݔ -= -RegiryHub - const& ); - -7542 - gpublic -: - -7543 -RegiryHub -() { - -7545 -vtu - -IR܋rRegiry - cڡ& -gR܋rRegiry -(cڡ -CATCH_OVERRIDE - { - -7546  -m_p܋rRegiry -; - -7548 -vtu - -ITeCaRegiry - cڡ& -gTeCaRegiry -(cڡ - gCATCH_OVERRIDE - { - -7549  - gm_CaRegiry -; - -7551 -vtu - - gIExiTnRegiry -& -gExiTnRegiry -( - gCATCH_OVERRIDE - { - -7552  - gm_exiTnRegiry -; - -7554 -vtu - -ITagAlsRegiry - cڡ& -gTagAlsRegiry -(cڡ - gCATCH_OVERRIDE - { - -7555  - gm_gAlsRegiry -; - -7558 - gpublic -: - -7559 -vtu -  -giR܋r - -d -:: -rg - cڡ& -me -, -P -< -IR܋rFay -> cڡ& -y - ) - gCATCH_OVERRIDE - { - -7560 - gm_p܋rRegiry -. -giR܋r - -me -, -y - ); - -7562 -vtu -  -giLi - -P -< -IR܋rFay -> cڡ& -y - ) - gCATCH_OVERRIDE - { - -7563 - gm_p܋rRegiry -. -giLi - -y - ); - -7565 -vtu -  -giTe - -TeCa - cڡ& -Info - ) - gCATCH_OVERRIDE - { - -7566 - gm_CaRegiry -. -giTe - -Info - ); - -7568 -vtu -  -giTn -cڡ -IExiTn -* - - ) - gCATCH_OVERRIDE - { - -7569 - gm_exiTnRegiry -. -giTn - - - ); - -7571 -vtu -  -giTagAls - -d -:: -rg - cڡ& -s -, std::rg cڡ& -g -, -SourLeInfo - cڡ& -leInfo - ) - gCATCH_OVERRIDE - { - -7572 - gm_gAlsRegiry -. -add - -s -, -g -, -leInfo - ); - -7575 - give -: - -7576 -TeRegiry - -m_CaRegiry -; - -7577 -R܋rRegiry - - gm_p܋rRegiry -; - -7578 -ExiTnRegiry - - gm_exiTnRegiry -; - -7579 -TagAlsRegiry - - gm_gAlsRegiry -; - -7583 -le - - gRegiryHub -*& -gTheRegiryHub -() { - -7584  -RegiryHub -* - gtheRegiryHub - = -CATCH_NULL -; - -7585 if! - gtheRegiryHub - ) - -7586 - gtheRegiryHub - = -w - -RegiryHub -(); - -7587  - gtheRegiryHub -; - -7591 - gIRegiryHub -& -gRegiryHub -() { - -7592  * -gTheRegiryHub -(); - -7594 - gIMubRegiryHub -& -gMubRegiryHub -() { - -7595  * -gTheRegiryHub -(); - -7597  -nUp -() { - -7598 -de - -gTheRegiryHub -(); - -7599 -gTheRegiryHub -( -CATCH_NULL -; - -7600 -nUpCڋxt -(); - -7602 - gd -:: -rg - -eAiveExi -() { - -7603  -gRegiryHub -(). -gExiTnRegiry -(). -eAiveExi -(); - -7609  - #TWOBLUECUBES_CATCH_NOTIMPLEMENTED_EXCEPTION_HPP_INCLUDED - - - ) - -7611  - ~ - -7613 -mea - - gCch - { - -7615 - gNImemdExi -:: -NImemdExi - -SourLeInfo - cڡ& -leInfo - ) - -7616 : -m_leInfo - -leInfo - ) { - -7617 -d -:: -orgam - -oss -; - -7618 - goss - << - gleInfo - << ": function "; - -7619 - goss - << "not implemented"; - -7620 - gm_wh - = -oss -. -r -(); - -7623 cڡ * - gNImemdExi -:: -wh -(cڡ -CATCH_NOEXCEPT - { - -7624  -m_wh -. -c_r -(); - -7630  - #TWOBLUECUBES_CATCH_CONTEXT_IMPL_HPP_INCLUDED - - - ) - -7633  - #TWOBLUECUBES_CATCH_STREAM_HPP_INCLUDED - - - ) - -7635  - ~ - -7636  - ~ - -7637  - ~ - -7639 -mea - - gCch - { - -7641 - gme -< -tyme - - gWrF -, -size_t - - gbufrSize -=256> - -7642 as - cSmBufIm - : -public - -SmBufBa - { - -7643  -da -[ -bufrSize -]; - -7644 -WrF - - gm_wr -; - -7646 - gpublic -: - -7647 -SmBufIm -() { - -7648 - - -da -, data + (data) ); - -7651 ~ -SmBufIm -( - gCATCH_NOEXCEPT - { - -7652 -sync -(); - -7655 - give -: - -7656  -ovow - -c - ) { - -7657 -sync -(); - -7659 if - gc - ! -EOF - ) { - -7660 if -pba -(= -r -() ) - -7661 -m_wr - -d -:: -rg -1, -ic_ -<> -c - ) ) ); - -7663 -utc - -ic_ -<> -c - ) ); - -7668  -sync -() { - -7669 if -pba -(! - -() ) { - -7670 -m_wr - -d -:: -rg - -pba -(), -ic_ - - -() -base() ) ) ); - -7671 - - -pba -(), -r -() ); - -7679 - gFeSm -:: -FeSm - -d -:: -rg - cڡ& -fame - ) { - -7680 -m_ofs -. -ݒ - -fame -. -c_r -() ); - -7681 if - gm_ofs -. - -() ) { - -7682 - gd -:: -orgam - -oss -; - -7683 - goss - << "Ubˁݒ fe: '" << - gfame - << '\''; - -7684 -throw - - gd -:: -doma_r - -oss -. -r -() ); - -7688 - gd -:: -oam -& -FeSm -:: -am -() const { - -7689  -m_ofs -; - -7692  - sOuutDebugWr - { - -7694  -ݔ -() - gd -:: -rg - cڡ& -r - ) { - -7695 -wreToDebugCse - -r - ); - -7699 - gDebugOutSm -:: -DebugOutSm -() - -7700 : -m_amBuf - -w - -SmBufIm -< -OuutDebugWr ->() ), - -7701 -m_os - -m_amBuf -. -g -() ) - -7704 - gd -:: -oam -& -DebugOutSm -:: -am -() const { - -7705  -m_os -; - -7710 - gCoutSm -:: -CoutSm -() - -7711 : -m_os - -Cch -:: -cout -(). -rdbuf -() ) - -7714 -d -:: -oam -& -CoutSm -:: -am -() const { - -7715  -m_os -; - -7718 #ide -CATCH_CONFIG_NOSTDOUT - - -7719 - gd -:: -oam -& -cout -() { - -7720  -d -:: -cout -; - -7722 - gd -:: -oam -& - -() { - -7723  -d -:: - -; - -7725 - gd -:: -oam -& -og -() { - -7726  -d -:: -og -; - -7731 -mea - - gCch - { - -7733 as - cCڋxt - : -public - -IMubCڋxt - { - -7735 -Cڋxt -(: -m_cfig - -CATCH_NULL - ), -m_ru” -CATCH_NULL ), -m_suCtu -( CATCH_NULL ) {} - -7736 -Cڋxt -( Context const& ); - -7737  - gݔ -= -Cڋxt - const& ); - -7739 - gpublic -: - -7740 -vtu - ~ -Cڋxt -() { - -7741 -deAVues - -m_gsByTeName - ); - -7744 - gpublic -: - -7745 -vtu - -IResuCtu -* -gResuCtu -() { - -7746  -m_suCtu -; - -7748 -vtu - -IRu” -* -gRu” -() { - -7749  - gm_ru” -; - -7751 -vtu - -size_t - -gGIndex - -d -:: -rg - cڡ& -feInfo -, size_ -tٮSize - ) { - -7752  -gGsFCutTe -() - -7753 . -gGInfo - -feInfo -, -tٮSize - ) - -7754 . -gCutIndex -(); - -7756 -vtu - -bo - -advGsFCutTe -() { - -7757 -IGsFTe -* - ggs - = -fdGsFCutTe -(); - -7758  - ggs - && gs-> -moveNext -(); - -7761 -vtu - - gP -< -ICfig - cڡ> -gCfig -() const { - -7762  - gm_cfig -; - -7765 - gpublic -: - -7766 -vtu -  -tResuCtu - -IResuCtu -* -suCtu - ) { - -7767 -m_suCtu - = -suCtu -; - -7769 -vtu -  -tRu” - -IRu” -* -ru” - ) { - -7770 - gm_ru” - = -ru” -; - -7772 -vtu -  -tCfig - -P -< -ICfig - cڡ> cڡ& -cfig - ) { - -7773 - gm_cfig - = -cfig -; - -7776 -nd - - gIMubCڋxt -& -gCutMubCڋxt -(); - -7778 - give -: - -7779 -IGsFTe -* -fdGsFCutTe -() { - -7780 -d -:: -rg - -Name - = -gResuCtu -()-> -gCutTeName -(); - -7782 - gd -:: -m -< -d -:: -rg -, - gIGsFTe -*>:: -cڡ_ - - - = - -7783 -m_gsByTeName -. -fd - -Name - ); - -7784  - g - ! -m_gsByTeName -. -d -() - -7785 ? - --> -cd - - -7786 : -CATCH_NULL -; - -7789 - gIGsFTe -& -gGsFCutTe -() { - -7790 -IGsFTe -* - ggs - = -fdGsFCutTe -(); - -7791 if! - ggs - ) { - -7792 - gd -:: -rg - -Name - = -gResuCtu -()-> -gCutTeName -(); - -7793 - ggs - = -GsFTe -(); - -7794 - gm_gsByTeName -. - - -d -:: -make_ - -Name -, -gs - ) ); - -7796  * - ggs -; - -7799 - give -: - -7800 -P -< -ICfig - cڡ> -m_cfig -; - -7801 -IRu” -* - gm_ru” -; - -7802 -IResuCtu -* - gm_suCtu -; - -7803 - gd -:: -m -< -d -:: -rg -, - gIGsFTe -*> - gm_gsByTeName -; - -7806 - gmea - { - -7807 -Cڋxt -* - gcutCڋxt - = -CATCH_NULL -; - -7809 - gIMubCڋxt -& -gCutMubCڋxt -() { - -7810 if! - gcutCڋxt - ) - -7811 - gcutCڋxt - = -w - -Cڋxt -(); - -7812  * - gcutCڋxt -; - -7814 - gICڋxt -& -gCutCڋxt -() { - -7815  -gCutMubCڋxt -(); - -7818  -nUpCڋxt -() { - -7819 -de - - gcutCڋxt -; - -7820 - gcutCڋxt - = -CATCH_NULL -; - -7825  - #TWOBLUECUBES_CATCH_CONSOLE_COLOUR_IMPL_HPP_INCLUDED - - - ) - -7828  - #TWOBLUECUBES_CATCH_ERRNO_GUARD_HPP_INCLUDED - - - ) - -7830  - ~ - -7832 -mea - - gCch - { - -7834 as - cEnoGud - { - -7835 - gpublic -: - -7836 -EnoGud -(): -m_dEno -( -o -){} - -7837 ~ -EnoGud -({ -o - = -m_dEno -; } - -7838 - give -: - -7839  -m_dEno -; - -7844 -mea - - gCch - { - -7845 - gmea - { - -7847  - sICourIm - { - -7848 - gvtu - ~ -ICourIm -() {} - -7849 -vtu -  -u - -Cour -:: -Code - -_courCode - ) = 0; - -7852  - gNoCourIm - : -ICourIm - { - -7853  -u - -Cour -:: -Code - ) {} - -7855  -ICourIm -* - -() { - -7856  -NoCourIm - -s_ -; - -7857  & - gs_ -; - -7864 #i! -defed - -CATCH_CONFIG_COLOUR_NONE - ) && !defed -CATCH_CONFIG_COLOUR_WINDOWS - ) && ! - $defed - -CATCH_CONFIG_COLOUR_ANSI - ) - -7865 #ifde -CATCH_PLATFORM_WINDOWS - - -7866  - #CATCH_CONFIG_COLOUR_WINDOWS - - - ) - -7868  - #CATCH_CONFIG_COLOUR_ANSI - - - ) - -7872 #i - $defed - ( -CATCH_CONFIG_COLOUR_WINDOWS - ) - -7874 -mea - -Cch - { - -7875 -mea - { - -7877 as - cW32CourIm - : -public - -ICourIm - { - -7878 -public -: - -7879 - `W32CourIm -(: - `doutHd - - `GStdHd -( -STD_OUTPUT_HANDLE -) ) - -7881 -CONSOLE_SCREEN_BUFFER_INFO - -csbiInfo -; - -7882 - `GCseSnBufrInfo - -doutHd -, & -csbiInfo - ); - -7883 -igFegroundAribus - = -csbiInfo -. -wAribus - & ~ -BACKGROUND_GREEN - | -BACKGROUND_RED - | -BACKGROUND_BLUE - | -BACKGROUND_INTENSITY - ); - -7884 -igBackgroundAribus - = -csbiInfo -. -wAribus - & ~ -FOREGROUND_GREEN - | -FOREGROUND_RED - | -FOREGROUND_BLUE - | -FOREGROUND_INTENSITY - ); - -7887 -vtu -  - `u - -Cour -:: -Code - -_courCode - ) { - -7888  -_courCode - ) { - -7889  -Cour -:: -Ne -:  - `tTextAribu - -igFegroundAribus - ); - -7890  -Cour -:: -Whe -:  - `tTextAribu - -FOREGROUND_GREEN - | -FOREGROUND_RED - | -FOREGROUND_BLUE - ); - -7891  -Cour -:: -Red -:  - `tTextAribu - -FOREGROUND_RED - ); - -7892  -Cour -:: -G -:  - `tTextAribu - -FOREGROUND_GREEN - ); - -7893  -Cour -:: -Blue -:  - `tTextAribu - -FOREGROUND_BLUE - ); - -7894  -Cour -:: -Cy -:  - `tTextAribu - -FOREGROUND_BLUE - | -FOREGROUND_GREEN - ); - -7895  -Cour -:: -Ylow -:  - `tTextAribu - -FOREGROUND_RED - | -FOREGROUND_GREEN - ); - -7896  -Cour -:: -Gy -:  - `tTextAribu -( 0 ); - -7898  -Cour -:: -LightGy -:  - `tTextAribu - -FOREGROUND_INTENSITY - ); - -7899  -Cour -:: -BrightRed -:  - `tTextAribu - -FOREGROUND_INTENSITY - | -FOREGROUND_RED - ); - -7900  -Cour -:: -BrightG -:  - `tTextAribu - -FOREGROUND_INTENSITY - | -FOREGROUND_GREEN - ); - -7901  -Cour -:: -BrightWhe -:  - `tTextAribu - -FOREGROUND_INTENSITY - | -FOREGROUND_GREEN - | -FOREGROUND_RED - | -FOREGROUND_BLUE - ); - -7903  -Cour -:: -Bright -: -throw - -d -:: - `logic_r -( "not colour" ); - -7907 -ive -: - -7908  - `tTextAribu - -WORD - -_xtAribu - ) { - -7909 - `SCseTextAribu - -doutHd -, -_xtAribu - | -igBackgroundAribus - ); - -7911 -HANDLE - -doutHd -; - -7912 -WORD - -igFegroundAribus -; - -7913 -WORD - -igBackgroundAribus -; - -7916 -ICourIm -* - `fmCourIn -() { - -7917  -W32CourIm - -s_ -; - -7919 -P -< -ICfig - cڡ> -cfig - = - `gCutCڋxt -(). - `gCfig -(); - -7920 -UCour -:: -YesOrNo - -courMode - = -cfig - - -7921 ? -cfig --> - `uCour -() - -7922 : -UCour -:: -Auto -; - -7923 if -courMode - = -UCour -:: -Auto - ) - -7924 -courMode - = ! - `isDebuggAive -() - -7925 ? -UCour -:: -Yes - - -7926 : -UCour -:: -No -; - -7927  -courMode - = -UCour -:: -Yes - - -7928 ? & -s_ - - -7929 : -NoCourIm -:: - ` -(); - -7933 - } -} - -7935 #i - $defed - -CATCH_CONFIG_COLOUR_ANSI - ) - -7937  - ~ - -7939 -mea - -Cch - { - -7940 -mea - { - -7946 as - cPosixCourIm - : -public - -ICourIm - { - -7947 -public -: - -7948 -vtu -  - `u - -Cour -:: -Code - -_courCode - ) { - -7949  -_courCode - ) { - -7950  -Cour -:: -Ne -: - -7951  -Cour -:: -Whe -:  - `tCour -( "[0m" ); - -7952  -Cour -:: -Red -:  - `tCour -( "[0;31m" ); - -7953  -Cour -:: -G -:  - `tCour -( "[0;32m" ); - -7954  -Cour -:: -Blue -:  - `tCour -( "[0;34m" ); - -7955  -Cour -:: -Cy -:  - `tCour -( "[0;36m" ); - -7956  -Cour -:: -Ylow -:  - `tCour -( "[0;33m" ); - -7957  -Cour -:: -Gy -:  - `tCour -( "[1;30m" ); - -7959  -Cour -:: -LightGy -:  - `tCour -( "[0;37m" ); - -7960  -Cour -:: -BrightRed -:  - `tCour -( "[1;31m" ); - -7961  -Cour -:: -BrightG -:  - `tCour -( "[1;32m" ); - -7962  -Cour -:: -BrightWhe -:  - `tCour -( "[1;37m" ); - -7964  -Cour -:: -Bright -: -throw - -d -:: - `logic_r -( "not colour" ); - -7967  -ICourIm -* - ` -() { - -7968  -PosixCourIm - -s_ -; - -7969  & -s_ -; - -7972 -ive -: - -7973  - `tCour -cڡ * -_esCode - ) { - -7974 -Cch -:: - `cout -(<< '\033' << -_esCode -; - -7978 -ICourIm -* - `fmCourIn -() { - -7979 -EnoGud - -gud -; - -7980 -P -< -ICfig - cڡ> -cfig - = - `gCutCڋxt -(). - `gCfig -(); - -7981 -UCour -:: -YesOrNo - -courMode - = -cfig - - -7982 ? -cfig --> - `uCour -() - -7983 : -UCour -:: -Auto -; - -7984 if -courMode - = -UCour -:: -Auto - ) - -7985 -courMode - = (! - `isDebuggAive -(&& - `iy -( -STDOUT_FILENO -) ) - -7986 ? -UCour -:: -Yes - - -7987 : -UCour -:: -No -; - -7988  -courMode - = -UCour -:: -Yes - - -7989 ? -PosixCourIm -:: - ` -() - -7990 : -NoCourIm -:: - ` -(); - -7994 - } -} - -7998 -mea - - gCch - { - -8000  -ICourIm -* -fmCourIn -({  - gNoCourIm -:: - -(); } - -8006 -mea - - gCch - { - -8008 - gCour -:: -Cour - -Code - -_courCode - ) : -m_moved - -l - ) { -u -( _colourCode ); } - -8009 - gCour -:: -Cour -Coucڡ& -_h - ) : -m_moved - -l - ) { -cڡ_ -_h ).m_moved = -ue -; } - -8010 - gCour -::~ -Cour -(){ if! -m_moved - ) -u - -Ne - ); } - -8012  - gCour -:: -u - -Code - -_courCode - ) { - -8013  -ICourIm -* -im - = -fmCourIn -(); - -8014 - gim --> -u - -_courCode - ); - -8020  - #TWOBLUECUBES_CATCH_GENERATORS_IMPL_HPP_INCLUDED - - - ) - -8022  - ~ - -8023  - ~ - -8024  - ~ - -8026 -mea - - gCch - { - -8028  - gGInfo - : -IGInfo - { - -8030 -GInfo - -d -:: -size_t - -size - ) - -8031 : -m_size - -size - ), - -8032 -m_cutIndex -( 0 ) - -8035 -bo - -moveNext -() { - -8036 if++ - gm_cutIndex - = -m_size - ) { - -8037 -m_cutIndex - = 0; - -8038  - gl -; - -8040  - gue -; - -8043 - gd -:: -size_t - -gCutIndex -() const { - -8044  -m_cutIndex -; - -8047 - gd -:: -size_t - -m_size -; - -8048 - gd -:: -size_t - -m_cutIndex -; - -8053 as - cGsFTe - : -public - -IGsFTe - { - -8055 -public -: - -8056 ~ -GsFTe -() { - -8057 -deA - -m_gsInOrd - ); - -8060 - gIGInfo -& -gGInfo - -d -:: -rg - cڡ& -feInfo -, std:: -size_t - -size - ) { - -8061 -d -:: -m -:: -cڡ_ - - - = -m_gsByName -. -fd - -feInfo - ); - -8062 if - g - = -m_gsByName -. -d -() ) { - -8063 -IGInfo -* -fo - = -w - -GInfo - -size - ); - -8064 - gm_gsByName -. - - -d -:: -make_ - -feInfo -, -fo - ) ); - -8065 - gm_gsInOrd -. -push_back - -fo - ); - -8066  * - gfo -; - -8068  * - g --> - gcd -; - -8071 -bo - -moveNext -() { - -8072 - gd -:: -ve -< -IGInfo -*>:: -cڡ_ - - - = -m_gsInOrd -. -beg -(); - -8073 - gd -:: -ve -< -IGInfo -*>:: -cڡ_ - -End - = -m_gsInOrd -. -d -(); - -8074 ; - g - ! -End -; ++it ) { - -8075 if(* - g -)-> -moveNext -() ) - -8076  - gue -; - -8078  - gl -; - -8081 - give -: - -8082 -d -:: -m - - gm_gsByName -; - -8083 - gd -:: -ve -< -IGInfo -*> -m_gsInOrd -; - -8086 -IGsFTe -* -GsFTe -() - -8088  -w - -GsFTe -(); - -8094  - #TWOBLUECUBES_CATCH_ASSERTIONRESULT_HPP_INCLUDED - - - ) - -8096 -mea - - gCch - { - -8098 - gAsiInfo -:: -AsiInfo -(): -maoName -(""), -udExessi -(""), -suDiosi -( -ResuDiosi -:: -Nm -), -cdArg -(""){} - -8100 - gAsiInfo -:: -AsiInfo -cڡ * -_maoName -, - -8101 -SourLeInfo - cڡ& -_leInfo -, - -8102 cڡ * -_udExessi -, - -8103 -ResuDiosi -:: -Fgs - -_suDiosi -, - -8104 cڡ * -_cdArg -) - -8105 : -maoName - -_maoName - ), - -8106 -leInfo - -_leInfo - ), - -8107 -udExessi - -_udExessi - ), - -8108 -suDiosi - -_suDiosi - ), - -8109 -cdArg - -_cdArg - ) - -8112 - gAsiResu -:: -AsiResu -() {} - -8114 -AsiResu -::AsiResu -AsiInfo - cڡ& -fo -, -AsiResuDa - cڡ& -da - ) - -8115 : -m_fo - -fo - ), - -8116 -m_suDa - -da - ) - -8119 - gAsiResu -::~ -AsiResu -() {} - -8122 -bo - -AsiResu -:: -suceded -() const { - -8123  -Cch -:: -isOk - -m_suDa -. -suTy - ); - -8127 -bo - - gAsiResu -:: -isOk -() const { - -8128  -Cch -:: -isOk - -m_suDa -. -suTy - ) || -shouldSussFau - -m_fo -. -suDiosi - ); - -8131 - gResuWas -:: -OfTy - -AsiResu -:: -gResuTy -() const { - -8132  -m_suDa -. -suTy -; - -8135 -bo - - gAsiResu -:: -hasExessi -() const { - -8136  -m_fo -. -udExessi -[0] != 0; - -8139 -bo - - gAsiResu -:: -hasMesge -() const { - -8140  ! -m_suDa -. -mesge -. -emy -(); - -8143 - gd -:: -rg - -udExessiWhSecdArgumt -cڡ * -udExessi -, cڡ * -cdArg - ) { - -8144  ( - gcdArg -[0] =0 || -cdArg -[0] == '"' && secondArg[1] == '"') - -8145 ? -udExessi - - -8146 : -d -:: -rg -( -udExessi -+ ", " + -cdArg -; - -8149 - gd -:: -rg - -AsiResu -:: -gExessi -() const { - -8150 if -isFTe - -m_fo -. -suDiosi - ) ) - -8151  '!' + -udExessiWhSecdArgumt -( -m_fo -. -udExessi -, m_fo. -cdArg -); - -8153  -udExessiWhSecdArgumt -( -m_fo -. -udExessi -, m_fo. -cdArg -); - -8155 - gd -:: -rg - -AsiResu -:: -gExessiInMao -() const { - -8156 if -m_fo -. -maoName -[0] == 0 ) - -8157  -udExessiWhSecdArgumt -( -m_fo -. -udExessi -, m_fo. -cdArg -); - -8159  - gd -:: -rg -( -m_fo -. -maoName -+ "" + -udExessiWhSecdArgumt -(m_fo. -udExessi -, m_fo. -cdArg -) + " )"; - -8162 -bo - - gAsiResu -:: -hasExndedExessi -() const { - -8163  -hasExessi -(&& -gExndedExessi -(! -gExessi -(); - -8166 - gd -:: -rg - -AsiResu -:: -gExndedExessi -() const { - -8167  -m_suDa -. -cڡruExessi -(); - -8170 - gd -:: -rg - -AsiResu -:: -gMesge -() const { - -8171  -m_suDa -. -mesge -; - -8173 -SourLeInfo - - gAsiResu -:: -gSourInfo -() const { - -8174  -m_fo -. -leInfo -; - -8177 - gd -:: -rg - -AsiResu -:: -gTeMaoName -() const { - -8178  -m_fo -. -maoName -; - -8181  - gAsiResu -:: -disrdDecompodExessi -() const { - -8182 -m_suDa -. -decompodExessi - = -CATCH_NULL -; - -8185  - gAsiResu -:: -exndDecompodExessi -() const { - -8186 -m_suDa -. -cڡruExessi -(); - -8192  - #TWOBLUECUBES_CATCH_TEST_CASE_INFO_HPP_INCLUDED - - - ) - -8194  - ~ - -8196 -mea - - gCch - { - -8198 -le - - gTeCaInfo -:: -SclPrݔts - -rSclTag - -d -:: -rg - cڡ& -g - ) { - -8199 if -tsWh - -g -, '.' ) || - -8200 - gg - == "hide" || - -8201 -g - == "!hide" ) - -8202  -TeCaInfo -:: -IsHidd -; - -8203 if - gg - == "!throws" ) - -8204  -TeCaInfo -:: -Throws -; - -8205 if - gg - == "!shouldfail" ) - -8206  -TeCaInfo -:: -ShouldFa -; - -8207 if - gg - == "!mayfail" ) - -8208  -TeCaInfo -:: -MayFa -; - -8209 if - gg - == "!nonportable" ) - -8210  -TeCaInfo -:: -NP܏b -; - -8212  - gTeCaInfo -:: -Ne -; - -8214 -le - -bo - -isRervedTag - -d -:: -rg - cڡ& -g - ) { - -8215  -rSclTag - -g - ) = -TeCaInfo -:: -Ne - &&ag. -size -(> 0 && ! -d -:: -ium -(ag[0] ); - -8217 -le -  -fNRervedTag - -d -:: -rg - cڡ& -g -, -SourLeInfo - cڡ& -_leInfo - ) { - -8218 if -isRervedTag - -g - ) ) { - -8219 - gd -:: -orgam - -ss -; - -8220 - gss - << -Cour -(Cour:: -Red -) - -8221 << "Tagam[" << -g - << "]otllowed.\n" - -8223 << -Cour -(Cour:: -FeName -) - -8224 << -_leInfo - << '\n'; - -8225 -throw - - gd -:: -ruime_r -( -ss -. -r -()); - -8229 -TeCa - -makeTeCa - -ITeCa -* -_Ca -, - -8230 -d -:: -rg - cڡ& -_assName -, - -8231 -d -:: -rg - cڡ& -_me -, - -8232 -d -:: -rg - cڡ& -_descOrTags -, - -8233 -SourLeInfo - cڡ& -_leInfo - ) - -8235 -bo - -isHidd - -tsWh - -_me -, "./" ) ); - -8238 - gd -:: -t -< -d -:: -rg -> -gs -; - -8239 - gd -:: -rg - -desc -, - gg -; - -8240 -bo - - gTag - = -l -; - -8241  - gd -:: -size_t - -i - = 0; - gi - < - g_descOrTags -. -size -(); ++i ) { - -8242  - gc - = -_descOrTags -[ -i -]; - -8243 if! - gTag - ) { - -8244 if - gc - == '[' ) - -8245 -Tag - = -ue -; - -8247 - gdesc - + -c -; - -8250 if - gc - == ']' ) { - -8251 -TeCaInfo -:: -SclPrݔts - - - = -rSclTag - -g - ); - -8252 if - g - = -TeCaInfo -:: -IsHidd - ) - -8253 -isHidd - = -ue -; - -8254 if - g - = -TeCaInfo -:: -Ne - ) - -8255 -fNRervedTag - -g -, -_leInfo - ); - -8257 - ggs -. - - -g - ); - -8258 - gg -. -r -(); - -8259 - gTag - = -l -; - -8262 - gg - + -c -; - -8265 if - gisHidd - ) { - -8266 - ggs -. - -( "hide" ); - -8267 - ggs -. - -( "." ); - -8270 -TeCaInfo - -fo - -_me -, -_assName -, -desc -, -gs -, -_leInfo - ); - -8271  -TeCa - -_Ca -, -fo - ); - -8274  -tTags - -TeCaInfo -& -CaInfo -, -d -:: -t - cڡ& -gs - ) - -8276 -CaInfo -. -gs - =ags; - -8277 - gCaInfo -. - glTags -. -r -(); - -8279 - gd -:: -orgam - -oss -; - -8280  - gd -:: -t -< -d -:: -rg ->:: -cڡ_ - - - = -gs -. -beg -(), - gEnd - =ags. -d -(); - g - ! -End -; ++it ) { - -8281 - goss - << '[' << * - g - << ']'; - -8282 - gd -:: -rg - -lTag - = -toLow -* - - ); - -8283 - gCaInfo -. - gݔts - = -ic_ -< -TeCaInfo -:: -SclPrݔts -> -CaInfo -. -ݔts - | -rSclTag - -lTag - ) ); - -8284 - gCaInfo -. - glTags -. - - -lTag - ); - -8286 - gCaInfo -. - ggsAsSg - = -oss -. -r -(); - -8289 - gTeCaInfo -:: -TeCaInfo - -d -:: -rg - cڡ& -_me -, - -8290 -d -:: -rg - cڡ& -_assName -, - -8291 -d -:: -rg - cڡ& -_desti -, - -8292 -d -:: -t - cڡ& -_gs -, - -8293 -SourLeInfo - cڡ& -_leInfo - ) - -8294 : -me - -_me - ), - -8295 -assName - -_assName - ), - -8296 -desti - -_desti - ), - -8297 -leInfo - -_leInfo - ), - -8298 -ݔts - -Ne - ) - -8300 -tTags -* -this -, -_gs - ); - -8303 - gTeCaInfo -:: -TeCaInfo -TeCaInfcڡ& -h - ) - -8304 : -me - -h -.name ), - -8305 -assName - -h -.className ), - -8306 -desti - -h -.description ), - -8307 -gs - -h -.tags ), - -8308 -lTags - -h -.lcaseTags ), - -8309 -gsAsSg - -h -.tagsAsString ), - -8310 -leInfo - -h -.lineInfo ), - -8311 -ݔts - -h -.properties ) - -8314 -bo - - gTeCaInfo -:: -isHidd -() const { - -8315  ( -ݔts - & -IsHidd - ) != 0; - -8317 -bo - - gTeCaInfo -:: -throws -() const { - -8318  ( -ݔts - & -Throws - ) != 0; - -8320 -bo - - gTeCaInfo -:: -okToFa -() const { - -8321  ( -ݔts - & ( -ShouldFa - | -MayFa - ) ) != 0; - -8323 -bo - - gTeCaInfo -:: -exedToFa -() const { - -8324  ( -ݔts - & ( -ShouldFa - ) ) != 0; - -8327 - gTeCa -:: -TeCa - -ITeCa -* -Ca -, -TeCaInfo - cڡ& -fo - ) : TeCaInfoКf), - -(estCase ) {} - -8329 - gTeCa -:: -TeCa -TeCa cڡ& -h - ) - -8330 : -TeCaInfo - -h - ), - -8331 - - -h -.test ) - -8334 -TeCa - - gTeCa -:: -whName - -d -:: -rg - cڡ& -_wName - ) const { - -8335 -TeCa - -h -* -this - ); - -8336 - gh -. - gme - = -_wName -; - -8337  - gh -; - -8340  - gTeCa -:: -sw - -TeCa -& -h - ) { - -8341 - -. -sw - -h -.test ); - -8342 - gme -. -sw - -h -. -me - ); - -8343 - gassName -. -sw - -h -. -assName - ); - -8344 - gdesti -. -sw - -h -. -desti - ); - -8345 - ggs -. -sw - -h -. -gs - ); - -8346 - glTags -. -sw - -h -. -lTags - ); - -8347 - ggsAsSg -. -sw - -h -. -gsAsSg - ); - -8348 - gd -:: -sw - -TeCaInfo -:: -ݔts -, -ic_ - -h - ).properties ); - -8349 - gd -:: -sw - -leInfo -, -h -.lineInfo ); - -8352  - gTeCa -:: -voke -() const { - -8353 - --> -voke -(); - -8356 -bo - - gTeCa -:: -ݔ - = -TeCa - cڡ& -h - ) const { - -8357  - -. -g -(= -h -.test.get() && - -8358 -me - = -h -.name && - -8359 -assName - = -h -.className; - -8362 -bo - - gTeCa -:: -ݔ - < ( -TeCa - cڡ& -h - ) const { - -8363  -me - < -h -.name; - -8365 - gTeCa -& TeCa:: -ݔ - = ( -TeCa - cڡ& -h - ) { - -8366 -TeCa - -mp - -h - ); - -8367 -sw - -mp - ); - -8368  * - gthis -; - -8371 -TeCaInfo - cڡ& - gTeCa -:: -gTeCaInfo -() const - -8373  * -this -; - -8379  - #TWOBLUECUBES_CATCH_VERSION_HPP_INCLUDED - - - ) - -8381 -mea - - gCch - { - -8383 - gVsi -:: -Vsi - - -8384  -_majVsi -, - -8385  - g_mVsi -, - -8386  - g_tchNumb -, - -8387 cڡ * cڡ - g_bnchName -, - -8388  - g_budNumb - ) - -8389 : -majVsi - -_majVsi - ), - -8390 -mVsi - -_mVsi - ), - -8391 -tchNumb - -_tchNumb - ), - -8392 -bnchName - -_bnchName - ), - -8393 -budNumb - -_budNumb - ) - -8396 - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -Vsi - cڡ& - gvsi - ) { - -8397 - gos - << - gvsi -. - gmajVsi - << '.' - -8398 << - gvsi -. - gmVsi - << '.' - -8399 << - gvsi -. - gtchNumb -; - -8401 i( - gvsi -. - gbnchName -[0]) { - -8402 - gos - << '-' << - gvsi -. - gbnchName - - -8403 << '.' << - gvsi -. - gbudNumb -; - -8405  - gos -; - -8408 -le - -Vsi - -libryVsi -() { - -8409  -Vsi - -vsi -( 1, 9, 7, "", 0 ); - -8410  - gvsi -; - -8416  - #TWOBLUECUBES_CATCH_MESSAGE_HPP_INCLUDED - - - ) - -8418 -mea - - gCch - { - -8420 - gMesgeInfo -:: -MesgeInfo - -d -:: -rg - cڡ& -_maoName -, - -8421 -SourLeInfo - cڡ& -_leInfo -, - -8422 -ResuWas -:: -OfTy - -_ty - ) - -8423 : -maoName - -_maoName - ), - -8424 -leInfo - -_leInfo - ), - -8425 -ty - -_ty - ), - -8426 -qu -++ -globCou - ) - -8430  - gMesgeInfo -:: -globCou - = 0; - -8434 - gScedMesge -:: -ScedMesge - -MesgeBud - cڡ& -bud - ) - -8435 : -m_fo - -bud -.m_info ) - -8437 -m_fo -. -mesge - = -bud -. -m_am -. -r -(); - -8438 -gResuCtu -(). -pushScedMesge - -m_fo - ); - -8440 - gScedMesge -:: -ScedMesge -ScedMesgcڡ& -h - ) - -8441 : -m_fo - -h -.m_info ) - -8444 -ScedMesge -::~ScopedMessage() { - -8445 i! -d -:: -unught_exi -() ){ - -8446 -gResuCtu -(). -pScedMesge -( -m_fo -); - -8453  - #TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_HPP_INCLUDED - - - ) - -8456  - #TWOBLUECUBES_CATCH_LEGACY_REPORTER_ADAPTER_H_INCLUDED - - - ) - -8458 -mea - - gCch - - -8461  - gIR܋r - : -IShed - { - -8462 -vtu - ~ -IR܋r -(); - -8464 -vtu - -bo - -shouldRedeStdout -() const = 0; - -8466 -vtu -  -STeg -() = 0; - -8467 -vtu -  -EndTeg - -Tٮs - cڡ& -tٮs - ) = 0; - -8468 -vtu -  -SGroup - -d -:: -rg - cڡ& -groupName - ) = 0; - -8469 -vtu -  -EndGroup - -d -:: -rg - cڡ& -groupName -, -Tٮs - cڡ& -tٮs - ) = 0; - -8470 -vtu -  -STeCa - -TeCaInfo - cڡ& -Info - ) = 0; - -8471 -vtu -  -EndTeCa - -TeCaInfo - cڡ& -Info -, -Tٮs - cڡ& -tٮs -, -d -:: -rg - cڡ& -dOut -, std::rg cڡ& -dE - ) = 0; - -8472 -vtu -  -SSei - -d -:: -rg - cڡ& -iName -, std::rg cڡ& -desti - ) = 0; - -8473 -vtu -  -EndSei - -d -:: -rg - cڡ& -iName -, -Cous - cڡ& -asis - ) = 0; - -8474 -vtu -  -NoAsisInSei - -d -:: -rg - cڡ& -iName - ) = 0; - -8475 -vtu -  -NoAsisInTeCa - -d -:: -rg - cڡ& -Name - ) = 0; - -8476 -vtu -  -Ab܋d -() = 0; - -8477 -vtu -  -Resu - -AsiResu - cڡ& -su - ) = 0; - -8480 -ass - - gLegacyR܋rAdr - : -public - -ShedIm -< -ISmgR܋r -> - -8482 -public -: - -8483 -LegacyR܋rAdr - -P -< -IR܋r -> cڡ& -gacyR܋r - ); - -8484 - gvtu - ~ -LegacyR܋rAdr -(); - -8486 -vtu - -R܋rPns - -gPns -() const; - -8487 -vtu -  -noMchgTeCas - -d -:: -rg - const& ); - -8488 -vtu -  -RunSg - -TeRunInfo - const& ); - -8489 -vtu -  -GroupSg - -GroupInfo - cڡ& -groupInfo - ); - -8490 -vtu -  -CaSg - -TeCaInfo - cڡ& -Info - ); - -8491 -vtu -  -iSg - -SeiInfo - cڡ& -iInfo - ); - -8492 -vtu -  -asiSg - -AsiInfo - const& ); - -8493 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -asiSts - ); - -8494 -vtu -  -iEnded - -SeiSts - cڡ& -iSts - ); - -8495 -vtu -  -CaEnded - -TeCaSts - cڡ& -CaSts - ); - -8496 -vtu -  -GroupEnded - -TeGroupSts - cڡ& -GroupSts - ); - -8497 -vtu -  -RunEnded - -TeRunSts - cڡ& -RunSts - ); - -8498 -vtu -  -skTe - -TeCaInfo - const& ); - -8500 - give -: - -8501 -P -< -IR܋r -> -m_gacyR܋r -; - -8505 -mea - - gCch - - -8507 - gLegacyR܋rAdr -:: -LegacyR܋rAdr - -P -< -IR܋r -> cڡ& -gacyR܋r - ) - -8508 : -m_gacyR܋r - -gacyR܋r - ) - -8510 -LegacyR܋rAdr -::~LegacyReporterAdapter() {} - -8512 -R܋rPns - -LegacyR܋rAdr -:: -gPns -() const { - -8513 -R܋rPns - -efs -; - -8514 - gefs -. - gshouldRedeStdOut - = -m_gacyR܋r --> -shouldRedeStdout -(); - -8515  - gefs -; - -8518  - gLegacyR܋rAdr -:: -noMchgTeCas - -d -:: -rg - const& ) {} - -8519  -LegacyR܋rAdr -:: -RunSg - -TeRunInfo - const& ) { - -8520 -m_gacyR܋r --> -STeg -(); - -8522  - gLegacyR܋rAdr -:: -GroupSg - -GroupInfo - cڡ& -groupInfo - ) { - -8523 -m_gacyR܋r --> -SGroup - -groupInfo -. -me - ); - -8525  - gLegacyR܋rAdr -:: -CaSg - -TeCaInfo - cڡ& -Info - ) { - -8526 -m_gacyR܋r --> -STeCa - -Info - ); - -8528  - gLegacyR܋rAdr -:: -iSg - -SeiInfo - cڡ& -iInfo - ) { - -8529 -m_gacyR܋r --> -SSei - -iInfo -. -me -, seiInfo. -desti - ); - -8531  - gLegacyR܋rAdr -:: -asiSg - -AsiInfo - const& ) { - -8535 -bo - -LegacyR܋rAdr -:: -asiEnded - -AsiSts - cڡ& -asiSts - ) { - -8536 if -asiSts -. -asiResu -. -gResuTy -(! -ResuWas -:: -Ok - ) { - -8537  -d -:: -ve -< -MesgeInfo ->:: -cڡ_ - - - = -asiSts -. -foMesges -. -beg -(), - gEnd - =siSts.foMesges. -d -(); - -8538 - g - ! -End -; - -8539 ++ - g - ) { - -8540 if - g --> - gty - = -ResuWas -:: -Info - ) { - -8541 -ResuBud - -rb - - --> -maoName -. -c_r -(), it-> -leInfo -, "", -ResuDiosi -:: -Nm - ); - -8542 - grb - << - g --> - gmesge -; - -8543 - grb -. -tResuTy - -ResuWas -:: -Info - ); - -8544 -AsiResu - - gsu - = -rb -. -bud -(); - -8545 - gm_gacyR܋r --> -Resu - -su - ); - -8549 - gm_gacyR܋r --> -Resu - -asiSts -. -asiResu - ); - -8550  - gue -; - -8552  - gLegacyR܋rAdr -:: -iEnded - -SeiSts - cڡ& -iSts - ) { - -8553 if -iSts -. -missgAsis - ) - -8554 -m_gacyR܋r --> -NoAsisInSei - -iSts -. -iInfo -. -me - ); - -8555 - gm_gacyR܋r --> -EndSei - -iSts -. -iInfo -. -me -, seiSts. -asis - ); - -8557  - gLegacyR܋rAdr -:: -CaEnded - -TeCaSts - cڡ& -CaSts - ) { - -8558 -m_gacyR܋r --> -EndTeCa - - -8559 -CaSts -. -Info -, - -8560 - gCaSts -. - gtٮs -, - -8561 - gCaSts -. - gdOut -, - -8562 - gCaSts -. - gdE - ); - -8564  - gLegacyR܋rAdr -:: -GroupEnded - -TeGroupSts - cڡ& -GroupSts - ) { - -8565 if -GroupSts -. -abtg - ) - -8566 -m_gacyR܋r --> -Ab܋d -(); - -8567 - gm_gacyR܋r --> -EndGroup - -GroupSts -. -groupInfo -. -me -,eGroupSts. -tٮs - ); - -8569  - gLegacyR܋rAdr -:: -RunEnded - -TeRunSts - cڡ& -RunSts - ) { - -8570 -m_gacyR܋r --> -EndTeg - -RunSts -. -tٮs - ); - -8572  - gLegacyR܋rAdr -:: -skTe - -TeCaInfo - const& ) { - -8578 #ifde -__g__ - - -8579 #agm -g - -dgnoic - -push - - -8580 #agm -g - -dgnoic - -igned - "-Wc++11-long-long" - -8583 #ifde -CATCH_PLATFORM_WINDOWS - - -8587  - ~ - -8591 -mea - -Cch - { - -8593 -mea - { - -8594 #ifde -CATCH_PLATFORM_WINDOWS - - -8595 -UI64 - -gCutTicks -() { - -8596  -UI64 - -hz -=0, - ghzo -=0; - -8597 i(! - ghz -) { - -8598 -QuyPfmFqucy - -t_ -< -LARGE_INTEGER -*>& -hz - ) ); - -8599 -QuyPfmCou - -t_ -< -LARGE_INTEGER -*>& -hzo - ) ); - -8601 -UI64 - - gt -; - -8602 -QuyPfmCou - -t_ -< -LARGE_INTEGER -*>& -t - ) ); - -8603  (( - gt -- - ghzo -)*1000000)/ - ghz -; - -8606 -UI64 - -gCutTicks -() { - -8607 -timev - - gt -; - -8608 -gtimeofday -(& -t -, -CATCH_NULL -); - -8609  - gic_ -< - gUI64 -> - gt -. - gtv_c - ) * 1000000u + stic_t. - gtv_uc - ); - -8614  - gTim -:: -t -() { - -8615 -m_ticks - = -gCutTicks -(); - -8617  - gTim -:: -gEpdMiocds -() const { - -8618  -ic_ -<>( -gCutTicks -(- -m_ticks -); - -8620  - gTim -:: -gEpdMlicds -() const { - -8621  -ic_ -<>( -gEpdMiocds -()/1000); - -8623  - gTim -:: -gEpdSecds -() const { - -8624  -gEpdMiocds -()/1000000.0; - -8629 #ifde -__g__ - - -8630 #agm -g - -dgnoic - -p - - -8633  - #TWOBLUECUBES_CATCH_COMMON_HPP_INCLUDED - - - ) - -8635  - ~ - -8636  - ~ - -8638 -mea - - gCch - { - -8640 -bo - -tsWh - -d -:: -rg - cڡ& -s -, std::rg cڡ& -efix - ) { - -8641  -s -. -size -(> -efix -.size(&& -d -:: -equ -ջfix. -beg -(),fix. -d -(), s.begin()); - -8643 -bo - -tsWh - -d -:: -rg - cڡ& -s -,  -efix - ) { - -8644  ! - gs -. -emy -(&& s[0] = -efix -; - -8646 -bo - -dsWh - -d -:: -rg - cڡ& -s -, std::rg cڡ& -suffix - ) { - -8647  -s -. -size -(> -suffix -.size(&& -d -:: -equ -(suffix. -rbeg -(), suffix. -nd -(), s.rbegin()); - -8649 -bo - -dsWh - -d -:: -rg - cڡ& -s -,  -suffix - ) { - -8650  ! - gs -. -emy -(&& s[ -s -. -size -()-1] = -suffix -; - -8652 -bo - -cڏs - -d -:: -rg - cڡ& -s -, std::rg cڡ& -fix - ) { - -8653  -s -. -fd - -fix - ) ! -d -:: -rg -:: -os -; - -8655  -toLowCh -( -c -) { - -8656  - gic_ -<> - gd -:: -tow - -c - ) ); - -8658  -toLowInP - -d -:: -rg -& -s - ) { - -8659 -d -:: -sfm - -s -. -beg -(), s. -d -(), s.beg(), -toLowCh - ); - -8661 - gd -:: -rg - -toLow - -d -::rg cڡ& -s - ) { - -8662 -d -:: -rg - -lc - = -s -; - -8663 -toLowInP - -lc - ); - -8664  - glc -; - -8666 - gd -:: -rg - -im - -d -::rg cڡ& -r - ) { - -8667 cڡ* -wheaChs - = "\n\r\t "; - -8668 - gd -:: -rg -:: -size_ty - -t - = -r -. -fd_f_n_of - -wheaChs - ); - -8669 - gd -:: -rg -:: -size_ty - -d - = -r -. -fd_ϡ_n_of - -wheaChs - ); - -8671  - gt - ! -d -:: -rg -:: -os - ? -r -. -subr - -t -, 1+ -d --start ) : std::string(); - -8674 -bo - -aInP - -d -:: -rg -& -r -, std::rg cڡ& -aThis -, std::rg cڡ& -whThis - ) { - -8675 -bo - -ad - = -l -; - -8676 - gd -:: -size_t - -i - = -r -. -fd - -aThis - ); - -8677  - gi - ! -d -:: -rg -:: -os - ) { - -8678 -ad - = -ue -; - -8679 - gr - = -r -. -subr -0, -i - ) + - gwhThis - + s.subri+ -aThis -. -size -() ); - -8680 if - gi - < - gr -. -size -()- - gwhThis -.size() ) - -8681 - gi - = -r -. -fd - -aThis -, -i -+ -whThis -. -size -() ); - -8683 - gi - = -d -:: -rg -:: -os -; - -8685  - gad -; - -8688 - guli -:: -uli - -d -:: -size_t - -cou -, std:: -rg - cڡ& -b - ) - -8689 : -m_cou - -cou - ), - -8690 -m_b - -b - ) - -8693 - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -uli - cڡ& - gulir - ) { - -8694 - gos - << - gulir -. - gm_cou - << ' ' < -gSd -(); - -8723 - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -SourLeInfo - cڡ& - gfo - ) { - -8724 #ide -__GNUG__ - - -8725 - gos - << - gfo -. - gfe - << '(' << info. - gle - << ')'; - -8727 - gos - << - gfo -. - gfe - << ':' << info. - gle -; - -8729  - gos -; - -8732  -throwLogicE - -d -:: -rg - cڡ& -mesge -, -SourLeInfo - cڡ& -lotiInfo - ) { - -8733 - gd -:: -orgam - -oss -; - -8734 - goss - << - glotiInfo - << ": ICch: '" << - gmesge - << '\''; - -8735 if -waysTrue -() ) - -8736 -throw - - gd -:: -logic_r - -oss -. -r -() ); - -8741  - #TWOBLUECUBES_CATCH_SECTION_HPP_INCLUDED - - - ) - -8743 -mea - - gCch - { - -8745 - gSeiInfo -:: -SeiInfo - - -8746 -SourLeInfo - cڡ& -_leInfo -, - -8747 - gd -:: -rg - cڡ& -_me -, - -8748 - gd -:: -rg - cڡ& -_desti - ) - -8749 : -me - -_me - ), - -8750 -desti - -_desti - ), - -8751 -leInfo - -_leInfo - ) - -8754 - gSei -:: -Sei - -SeiInfo - cڡ& -fo - ) - -8755 : -m_fo - -fo - ), - -8756 -m_iInuded - -gResuCtu -(). -iSed - -m_fo -, -m_asis - ) ) - -8758 - gm_tim -. -t -(); - -8761 #i -defed -( -_MSC_VER -) - -8762 #agm -wng -( -push -) - -8763 #agm -wng -( -dib -:4996) - -8765 - gSei -::~ -Sei -() { - -8766 if -m_iInuded - ) { - -8767 -SeiEndInfo - -dInfo - -m_fo -, -m_asis -, -m_tim -. -gEpdSecds -() ); - -8768 if - gd -:: -unught_exi -() ) - -8769 -gResuCtu -(). -iEndedEly - -dInfo - ); - -8771 -gResuCtu -(). -iEnded - -dInfo - ); - -8774 #i -defed -( -_MSC_VER -) - -8775 #agm -wng -( -p -) - -8779 - gSei -:: -ݔ - -bo -() const { - -8780  -m_iInuded -; - -8786  - #TWOBLUECUBES_CATCH_DEBUGGER_HPP_INCLUDED - - - ) - -8788 #ifde -CATCH_PLATFORM_MAC - - -8790  - ~ - -8791  - ~ - -8792  - ~ - -8793  - ~ - -8794  - ~ - -8796 -mea - - gCch -{ - -8803 -bo - -isDebuggAive -(){ - -8805  - gmib -[4]; - -8806  -kfo_oc - - gfo -; - -8807 -size_t - - gsize -; - -8812 - gfo -. - gkp_oc -. - gp_ag - = 0; - -8817 - gmib -[0] = -CTL_KERN -; - -8818 - gmib -[1] = -KERN_PROC -; - -8819 - gmib -[2] = -KERN_PROC_PID -; - -8820 - gmib -[3] = -gpid -(); - -8824 - gsize - = ( -fo -); - -8825 if -sysl -( -mib -, (mib/ (*mib), & -fo -, & -size -, -CATCH_NULL -, 0) != 0 ) { - -8826 -Cch -:: - -(<< "\n** Ctsysed - ubˁdmidebugg iaiv**\n" << -d -:: -dl -; - -8827  - gl -; - -8832  ( ( - gfo -. - gkp_oc -. - gp_ag - & - gP_TRACED -) != 0 ); - -8836 #i - $defed -( -CATCH_PLATFORM_LINUX -) - -8837  - ~ - -8838  - ~ - -8840 -mea - -Cch -{ - -8848 -bo - - `isDebuggAive -(){ - -8851 -EnoGud - -gud -; - -8852 -d -:: -ifam - - ` -("/proc/self/status"); - -8853  -d -:: -rg - -le -; std:: - `gle -( - -,ine); ) { - -8854 cڡ  -PREFIX_LEN - = 11; - -8855 if -le -. - `com -(0, -PREFIX_LEN -, "TracerPid:\t") == 0 ) { - -8859  -le -. - `ngth -(> -PREFIX_LEN - &&ine[PREFIX_LEN] != '0'; - -8863  -l -; - -8865 - } -} - -8866 #i - $defed -( -_MSC_VER -) - -8867 "C" - $__deec -( -dimpt - -__d - - `IsDebuggP -(); - -8868 -mea - -Cch - { - -8869 -bo - - `isDebuggAive -() { - -8870  - `IsDebuggP -() != 0; - -8872 - } -} - -8873 #i - $defed -( -__MINGW32__ -) - -8874 "C" - $__deec -( -dimpt - -__d - - `IsDebuggP -(); - -8875 -mea - -Cch - { - -8876 -bo - - `isDebuggAive -() { - -8877  - `IsDebuggP -() != 0; - -8879 - } -} - -8881 -mea - - gCch - { - -8882 -le - -bo - -isDebuggAive -({  - gl -; } - -8886 #ifde -CATCH_PLATFORM_WINDOWS - - -8888 -mea - - gCch - { - -8889  -wreToDebugCse - -d -:: -rg - cڡ& -xt - ) { - -8890 :: -OuutDebugSgA - -xt -. -c_r -() ); - -8894 -mea - - gCch - { - -8895  -wreToDebugCse - -d -:: -rg - cڡ& -xt - ) { - -8897 -Cch -:: -cout -(<< -xt -; - -8903  - #TWOBLUECUBES_CATCH_TOSTRING_HPP_INCLUDED - - - ) - -8905 -mea - - gCch - { - -8907 -mea - - gDa - { - -8909 cڡ - gd -:: -rg - -urbSg - = "{?}"; - -8911 - gmea - { - -8912 cڡ  - ghexThshd - = 255; - -8914  - sEndess - { - -8915 - eArch - { - gBig -, - gLe - }; - -8917  -Arch - -which -() { - -8918  - u_ -{ - -8919  - gasI -; - -8920  - gasCh -[ ()]; - -8921 } - gu -; - -8923 - gu -. - gasI - = 1; - -8924  ( - gu -. - gasCh -[()-1] =1 ) ? -Big - : -Le -; - -8929 - gd -:: -rg - -wMemyToSg -cڡ * -obje -, -d -:: -size_t - -size - ) - -8932  -i - = 0, - gd - = -ic_ -<> -size - ), - gc - = 1; - -8933 if - gEndess -:: -which -(= -Endess -:: -Le - ) { - -8934 -i - = -d --1; - -8935 - gd - = -c - = -1; - -8938 cڡ * - gbys - = -ic_ -<cڡ *>( -obje -); - -8939 - gd -:: -orgam - -os -; - -8940 - gos - << "0x" << - gd -:: -tfl -('0'<< -d -:: -hex -; - -8941  ; - gi - ! -d -; i + -c - ) - -8942 -os - << -d -:: -tw -(2<< -ic_ -<>( -bys -[ -i -]); - -8943  - gos -. -r -(); - -8947 - gd -:: -rg - -toSg - -d -::rg cڡ& -vue - ) { - -8948 -d -:: -rg - -s - = -vue -; - -8949 if -gCutCڋxt -(). -gCfig -()-> -showInvisibs -() ) { - -8950  -size_t - - gi - = 0; i < - gs -. -size -(); ++i ) { - -8951 - gd -:: -rg - -subs -; - -8952  - gs -[ -i -] ) { - -8953 '\n': -subs - = "\\n"; ; - -8954 '\t': -subs - = "\\t"; ; - -8957 if! - gsubs -. -emy -() ) { - -8958 - gs - = -s -. -subr -0, -i - ) + - gsubs - + s.substr( i+1 ); - -8959 ++ - gi -; - -8963  '"' + - gs - + '"'; - -8965 - gd -:: -rg - -toSg - -d -:: -wrg - cڡ& -vue - ) { - -8967 -d -:: -rg - -s -; - -8968 - gs -. -rve - -vue -. -size -() ); - -8969  -size_t - - gi - = 0; i < - gvue -. -size -(); ++i ) - -8970 - gs - + -vue -[ -i -] <0xf? -ic_ -<>( value[i] ) : '?'; - -8971  - gCch -:: -toSg - -s - ); - -8974 - gd -:: -rg - -toSg -cڡ * cڡ -vue - ) { - -8975  -vue - ? -Cch -:: -toSg - -d -:: -rg -( value ) ) : std::string( "{null string}" ); - -8978 - gd -:: -rg - -toSg -* cڡ -vue - ) { - -8979  -Cch -:: -toSg - -ic_ - -vue - ) ); - -8982 - gd -:: -rg - -toSg -cڡ -wch_t -* cڡ -vue - ) - -8984  -vue - ? -Cch -:: -toSg - -d -:: -wrg -(vue: std:: -rg -( "{null string}" ); - -8987 - gd -:: -rg - -toSg - -wch_t -* cڡ -vue - ) - -8989  -Cch -:: -toSg - -ic_ - -vue - ) ); - -8992 - gd -:: -rg - -toSg - -vue - ) { - -8993 -d -:: -orgam - -oss -; - -8994 - goss - << - gvue -; - -8995 if - gvue - > - gDa -:: -hexThshd - ) - -8996 -oss - << " (0x" << -d -:: -hex - << -vue - << ')'; - -8997  - goss -. -r -(); - -9000 - gd -:: -rg - -toSg - -vue - ) { - -9001 -d -:: -orgam - -oss -; - -9002 - goss - << - gvue -; - -9003 if - gvue - > - gDa -:: -hexThshd - ) - -9004 -oss - << " (0x" << -d -:: -hex - << -vue - << ')'; - -9005  - goss -. -r -(); - -9008 - gd -:: -rg - -toSg - -vue - ) { - -9009  -Cch -:: -toSg - -ic_ -<> -vue - ) ); - -9012 - gme -< -tyme - - gT -> - -9013 - gd -:: -rg - -ToSg - -T - -vue -,  -ecisi - ) { - -9014 - gd -:: -orgam - -oss -; - -9015 - goss - << - gd -:: -cisi - -ecisi - ) - -9016 << -d -:: -fixed - - -9017 << -vue -; - -9018 - gd -:: -rg - -d - = -oss -. -r -(); - -9019 - gd -:: -size_t - -i - = -d -. -fd_ϡ_n_of -( '0' ); - -9020 if - gi - ! -d -:: -rg -:: -os - && -i - ! -d -. -size -()-1 ) { - -9021 if -d -[ -i -] == '.' ) - -9022 -i -++; - -9023 - gd - = -d -. -subr -0, -i -+1 ); - -9025  - gd -; - -9028 - gd -:: -rg - -toSg -cڡ  -vue - ) { - -9029  -ToSg - -vue -, 10 ); - -9031 - gd -:: -rg - -toSg -cڡ  -vue - ) { - -9032  -ToSg - -vue -, 5 ) + 'f'; - -9035 - gd -:: -rg - -toSg - -bo - -vue - ) { - -9036  -vue - ? "true" : "false"; - -9039 - gd -:: -rg - -toSg - -vue - ) { - -9040 i -vue - == '\r' ) - -9042 i - gvue - == '\f' ) - -9044 i - gvue - == '\n' ) - -9046 i - gvue - == '\t' ) - -9048 i'\0' < -vue - && value < ' ' ) - -9049  -toSg - -ic_ -<> -vue - ) ); - -9050  - gchr -[] = "' '"; - -9051 - gchr -[1] = -vue -; - -9052  - gchr -; - -9055 - gd -:: -rg - -toSg -sigd  -vue - ) { - -9056  -toSg - -ic_ -<> -vue - ) ); - -9059 - gd -:: -rg - -toSg - -vue - ) { - -9060  -toSg - -ic_ -<> -vue - ) ); - -9063 #ifde -CATCH_CONFIG_CPP11_LONG_LONG - - -9064 - gd -:: -rg - -toSg - -vue - ) { - -9065 -d -:: -orgam - -oss -; - -9066 - goss - << - gvue -; - -9067 if - gvue - > - gDa -:: -hexThshd - ) - -9068 -oss - << " (0x" << -d -:: -hex - << -vue - << ')'; - -9069  - goss -. -r -(); - -9071 - gd -:: -rg - -toSg - -vue - ) { - -9072 -d -:: -orgam - -oss -; - -9073 - goss - << - gvue -; - -9074 if - gvue - > - gDa -:: -hexThshd - ) - -9075 -oss - << " (0x" << -d -:: -hex - << -vue - << ')'; - -9076  - goss -. -r -(); - -9080 #ifde -CATCH_CONFIG_CPP11_NULLPTR - - -9081 - gd -:: -rg - -toSg - -d -:: -nuαr_t - ) { - -9086 #ifde -__OBJC__ - - -9087 - gd -:: -rg - -toSg - -NSSg - cڡ * cڡ& -nsrg - ) { - -9088 if! -nsrg - ) - -9090  "@" + -toSg -([ -nsrg - -UTF8Sg -]); - -9092 - gd -:: -rg - -toSg - -NSSg - * -CATCH_ARC_STRONG - & -nsrg - ) { - -9093 if! -nsrg - ) - -9095  "@" + -toSg -([ -nsrg - -UTF8Sg -]); - -9097 - gd -:: -rg - -toSg - -NSObje -* cڡ& -nsObje - ) { - -9098  -toSg -[ -nsObje - -desti -] ); - -9105  - #TWOBLUECUBES_CATCH_RESULT_BUILDER_HPP_INCLUDED - - - ) - -9107 -mea - - gCch - { - -9109 - gResuBud -:: -ResuBud -cڡ* -maoName -, - -9110 -SourLeInfo - cڡ& -leInfo -, - -9111 cڡ* -udExessi -, - -9112 -ResuDiosi -:: -Fgs - -suDiosi -, - -9113 cڡ* -cdArg - ) - -9114 : -m_asiInfo - -maoName -, -leInfo -, -udExessi -, -suDiosi -, -cdArg - ), - -9115 -m_shouldDebugBak - -l - ), - -9116 -m_shouldThrow - -l - ), - -9117 -m_gudExi - -l - ), - -9118 -m_udSm - -l - ) - -9121 - gResuBud -::~ -ResuBud -() { - -9122 #i -defed -( -CATCH_CONFIG_FAST_COMPILE -) - -9123 i -m_gudExi - ) { - -9124 -am -(). -oss - << "Exceptionranslation was disabled by CATCH_CONFIG_FAST_COMPILE"; - -9125 -uResu - -ResuWas -:: -ThwExi - ); - -9126 -gCutCڋxt -(). -gResuCtu -()-> -exiElyR܋d -(); - -9131 - gResuBud -& ResuBud:: -tResuTy - -ResuWas -:: -OfTy - -su - ) { - -9132 -m_da -. -suTy - = -su -; - -9133  * - gthis -; - -9135 - gResuBud -& ResuBud:: -tResuTy - -bo - -su - ) { - -9136 -m_da -. -suTy - = -su - ? -ResuWas -:: -Ok - : ResuWas:: -ExessiFaed -; - -9137  * - gthis -; - -9140  - gResuBud -:: -dExessi - -DecompodExessi - cڡ& -ex - ) { - -9142 if -isFTe - -m_asiInfo -. -suDiosi - ) ) { - -9143 -m_da -. -ge - -ex -. -isByExessi -() ); - -9146 -gResuCtu -(). -asiRun -(); - -9148 if( -gCutCڋxt -(). -gCfig -()-> -udeSucssfulResus -(|| - gm_da -. - gsuTy - ! -ResuWas -:: -Ok -) - -9150 -AsiResu - -su - = -bud - -ex - ); - -9151 -hdResu - -su - ); - -9154 -gResuCtu -(). -asiPasd -(); - -9157  - gResuBud -:: -uAiveExi - -ResuDiosi -:: -Fgs - -suDiosi - ) { - -9158 -m_asiInfo -. -suDiosi - =esultDisposition; - -9159 -am -(). - goss - << - gCch -:: -eAiveExi -(); - -9160 -uResu - -ResuWas -:: -ThwExi - ); - -9163  - gResuBud -:: -uResu - -ResuWas -:: -OfTy - -suTy - ) { - -9164 -tResuTy - -suTy - ); - -9165 -uExessi -(); - -9168  - gResuBud -:: -uExedExi - -d -:: -rg - cڡ& -exedMesge - ) { - -9169 if -exedMesge -. -emy -() ) - -9170 -uExedExi - -Mchs -:: -Im -:: -MchAOf -< -d -:: -rg ->() ); - -9172 -uExedExi - -Mchs -:: -Equs - -exedMesge - ) ); - -9175  - gResuBud -:: -uExedExi - -Mchs -:: -Im -:: -MchBa -< -d -:: -rg -> cڡ& -mch - ) { - -9177 -as -! -isFTe - -m_asiInfo -. -suDiosi - ) ); - -9178 -AsiResuDa - - gda - = -m_da -; - -9179 - gda -. - gsuTy - = -ResuWas -:: -Ok -; - -9180 - gda -. - gcڡruedExessi - = -udExessiWhSecdArgumt -( -m_asiInfo -. -udExessi -, m_asiInfo. -cdArg -); - -9182 - gd -:: -rg - -auMesge - = -Cch -:: -eAiveExi -(); - -9183 if! - gmch -. -mch - -auMesge - ) ) { - -9184 - gda -. - gsuTy - = -ResuWas -:: -ExessiFaed -; - -9185 - gda -. - gcڡruedExessi - = -auMesge -; - -9187 -AsiResu - -su - -m_asiInfo -, -da - ); - -9188 -hdResu - -su - ); - -9191  - gResuBud -:: -uExessi -() { - -9192 -AsiResu - -su - = -bud -(); - -9193 -hdResu - -su - ); - -9196  - gResuBud -:: -hdResu - -AsiResu - cڡ& -su - ) - -9198 -gResuCtu -(). -asiEnded - -su - ); - -9200 if! - gsu -. -isOk -() ) { - -9201 if -gCutCڋxt -(). -gCfig -()-> -shouldDebugBak -() ) - -9202 - gm_shouldDebugBak - = -ue -; - -9203 if -gCutCڋxt -(). -gRu” -()-> -abtg -(|| ( - gm_asiInfo -. - gsuDiosi - & - gResuDiosi -:: -Nm -) ) - -9204 -m_shouldThrow - = -ue -; - -9208  - gResuBud -:: -a -() { - -9209 #i -defed -( -CATCH_CONFIG_FAST_COMPILE -) - -9210 i( -m_shouldDebugBak -) { - -9215 -CATCH_BREAK_INTO_DEBUGGER -(); - -9218 if - gm_shouldThrow - ) - -9219 -throw - - gCch -:: -TeFauExi -(); - -9222 -bo - - gResuBud -:: -shouldDebugBak -(cڡ {  -m_shouldDebugBak -; } - -9223 -bo - - gResuBud -:: -lowThrows -(cڡ {  -gCutCڋxt -(). -gCfig -()->allowThrows(); } - -9225 -AsiResu - - gResuBud -:: -bud -() const - -9227  -bud -* -this - ); - -9236 -AsiResu - - gResuBud -:: -bud - -DecompodExessi - cڡ& -ex - ) const - -9238 -as - -m_da -. -suTy - ! -ResuWas -:: -Unknown - ); - -9239 -AsiResuDa - - gda - = -m_da -; - -9241 if( - gm_udSm -) - -9242 - gda -. - gmesge - = -m_am -(). -oss -. -r -(); - -9243 - gda -. - gdecompodExessi - = & -ex -; - -9244  -AsiResu - -m_asiInfo -, -da - ); - -9247  - gResuBud -:: -cڡruExessi - -d -:: -rg -& -de - ) const { - -9248 -de - = -udExessiWhSecdArgumt -( -m_asiInfo -. -udExessi -, m_asiInfo. -cdArg -); - -9251  - gResuBud -:: -tExiGud -() { - -9252 -m_gudExi - = -ue -; - -9254  - gResuBud -:: -untExiGud -() { - -9255 -m_gudExi - = -l -; - -9261  - #TWOBLUECUBES_CATCH_TAG_ALIAS_REGISTRY_HPP_INCLUDED - - - ) - -9263 -mea - - gCch - { - -9265 - gTagAlsRegiry -::~ -TagAlsRegiry -() {} - -9267 -Oi -< -TagAls -> -TagAlsRegiry -:: -fd - -d -:: -rg - cڡ& -s - ) const { - -9268 -d -:: -m -:: -cڡ_ - - - = -m_giry -. -fd - -s - ); - -9269 if - g - ! -m_giry -. -d -() ) - -9270  - --> -cd -; - -9272  - gOi -< - gTagAls ->(); - -9275 - gd -:: -rg - -TagAlsRegiry -:: -exndAls - -d -::rg cڡ& -uxndedTeSc - ) const { - -9276 -d -:: -rg - -exndedTeSc - = -uxndedTeSc -; - -9277  - gd -:: -m -< -d -:: -rg -, - gTagAls ->:: -cڡ_ - - - = -m_giry -. -beg -(), - gEnd - = m_giry. -d -(); - -9278 - g - ! -End -; - -9279 ++ - g - ) { - -9280 - gd -:: -size_t - -pos - = -exndedTeSc -. -fd - - --> -f - ); - -9281 if - gpos - ! -d -:: -rg -:: -os - ) { - -9282 -exndedTeSc - =xndedTeSc. -subr -0, -pos - ) + - -9283 - g --> - gcd -. - gg - + - -9284 - gexndedTeSc -. -subr - -pos - + - --> -f -. -size -() ); - -9287  - gexndedTeSc -; - -9290  - gTagAlsRegiry -:: -add - -d -:: -rg - cڡ& -s -, std::rg cڡ& -g -, -SourLeInfo - cڡ& -leInfo - ) { - -9292 if! -tsWh - -s -, "[@" ) || ! -dsWh -(lias, ']' ) ) { - -9293 - gd -:: -orgam - -oss -; - -9294 - goss - << -Cour -Cour:: -Red - ) - -9295 << "r:agls, \"" << -s - << "\" isot ofhe form [@aliasame].\n" - -9296 << -Cour -Cour:: -FeName - ) - -9297 << -leInfo - << '\n'; - -9298 -throw - - gd -:: -doma_r - -oss -. -r -(). -c_r -() ); - -9300 if! - gm_giry -. - - -d -:: -make_ - -s -, -TagAls - -g -, -leInfo - ) ) ). - gcd - ) { - -9301 - gd -:: -orgam - -oss -; - -9302 - goss - << -Cour -Cour:: -Red - ) - -9303 << "r:agls, \"" << -s - << "\"lreadyegistered.\n" - -9305 << -Cour -Cour:: -Red - ) << -fd -( -s -)-> -leInfo - << '\n' - -9306 << -Cour -Cour:: -Red - ) << "\tRedefinedt " - -9307 << -Cour -Cour:: -FeName -<< -leInfo - << '\n'; - -9308 -throw - - gd -:: -doma_r - -oss -. -r -(). -c_r -() ); - -9312 - gITagAlsRegiry -::~ -ITagAlsRegiry -() {} - -9314 -ITagAlsRegiry - cڡ& ITagAlsRegiry:: -g -() { - -9315  -gRegiryHub -(). -gTagAlsRegiry -(); - -9318 - gRegirFTagAls -:: -RegirFTagAls -cڡ* -s -, cڡ* -g -, -SourLeInfo - cڡ& -leInfo - ) { - -9319 -gMubRegiryHub -(). -giTagAls - -s -, -g -, -leInfo - ); - -9326 -mea - - gCch - { - -9327 -mea - - gMchs - { - -9329 -mea - - gStdSg - { - -9331 - gCadSg -:: -CadSg - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - ) - -9332 : -m_Ssivy - -Ssivy - ), - -9333 -m_r - -adjuSg - -r - ) ) - -9335 - gd -:: -rg - -CadSg -:: -adjuSg - -d -::rg cڡ& -r - ) const { - -9336  -m_Ssivy - = -CaSsive -:: -No - - -9337 ? -toLow - -r - ) - -9338 : -r -; - -9340 - gd -:: -rg - -CadSg -:: -SsivySuffix -() const { - -9341  -m_Ssivy - = -CaSsive -:: -No - - -9343 : -d -:: -rg -(); - -9346 - gSgMchBa -:: -SgMchBa - -d -:: -rg - cڡ& -ݔi -, -CadSg - cڡ& -comt - ) - -9347 : -m_comt - -comt - ), - -9348 -m_ݔi - -ݔi - ) { - -9351 - gd -:: -rg - -SgMchBa -:: -desibe -() const { - -9352 -d -:: -rg - -desti -; - -9353 - gdesti -. -rve -(5 + -m_ݔi -. -size -(+ -m_comt -. -m_r -.size() + - -9354 -m_comt -. -SsivySuffix -(). -size -()); - -9355 - gdesti - + -m_ݔi -; - -9356 - gdesti - += ": \""; - -9357 - gdesti - + -m_comt -. -m_r -; - -9358 - gdesti - += "\""; - -9359 - gdesti - + -m_comt -. -SsivySuffix -(); - -9360  - gdesti -; - -9363 - gEqusMch -:: -EqusMch - -CadSg - cڡ& -comt - ) : -SgMchBa -( "equals", comparator ) {} - -9365 -bo - - gEqusMch -:: -mch - -d -:: -rg - cڡ& -sour - ) const { - -9366  -m_comt -. -adjuSg - -sour - ) =m_comt. -m_r -; - -9369 - gCڏsMch -:: -CڏsMch - -CadSg - cڡ& -comt - ) : -SgMchBa -( "contains", comparator ) {} - -9371 -bo - - gCڏsMch -:: -mch - -d -:: -rg - cڡ& -sour - ) const { - -9372  -cڏs - -m_comt -. -adjuSg - -sour - ), m_comt. -m_r - ); - -9375 - gSsWhMch -:: -SsWhMch - -CadSg - cڡ& -comt - ) : -SgMchBa -( "starts with", comparator ) {} - -9377 -bo - - gSsWhMch -:: -mch - -d -:: -rg - cڡ& -sour - ) const { - -9378  -tsWh - -m_comt -. -adjuSg - -sour - ), m_comt. -m_r - ); - -9381 - gEndsWhMch -:: -EndsWhMch - -CadSg - cڡ& -comt - ) : -SgMchBa -( "ends with", comparator ) {} - -9383 -bo - - gEndsWhMch -:: -mch - -d -:: -rg - cڡ& -sour - ) const { - -9384  -dsWh - -m_comt -. -adjuSg - -sour - ), m_comt. -m_r - ); - -9389 - gStdSg -:: -EqusMch - -Equs - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - ) { - -9390  -StdSg -:: -EqusMch -StdSg:: -CadSg - -r -, -Ssivy -) ); - -9392 - gStdSg -:: -CڏsMch - -Cڏs - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - ) { - -9393  -StdSg -:: -CڏsMch -StdSg:: -CadSg - -r -, -Ssivy -) ); - -9395 - gStdSg -:: -EndsWhMch - -EndsWh - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - ) { - -9396  -StdSg -:: -EndsWhMch -StdSg:: -CadSg - -r -, -Ssivy -) ); - -9398 - gStdSg -:: -SsWhMch - -SsWh - -d -:: -rg - cڡ& -r -, -CaSsive -:: -Choi - -Ssivy - ) { - -9399  -StdSg -:: -SsWhMch -StdSg:: -CadSg - -r -, -Ssivy -) ); - -9405  - #TWOBLUECUBES_CATCH_REPORTER_MULTI_HPP_INCLUDED - - - ) - -9407 -mea - - gCch - { - -9409 -ass - - gMuɝR܋rs - : -public - -ShedIm -< -ISmgR܋r -> { - -9410  -d -:: - tve -< - tP -< - tISmgR܋r -> > - tR܋rs -; - -9411 -R܋rs - - gm_p܋rs -; - -9413 - gpublic -: - -9414  -add - -P -< -ISmgR܋r -> cڡ& -p܋r - ) { - -9415 -m_p܋rs -. -push_back - -p܋r - ); - -9418 - gpublic -: - -9420 -vtu - -R܋rPns - -gPns -(cڡ -CATCH_OVERRIDE - { - -9421  -m_p܋rs -[0]-> -gPns -(); - -9424 -vtu -  -noMchgTeCas - -d -:: -rg - cڡ& -ec - ) -CATCH_OVERRIDE - { - -9425  -R܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9426 - g - ! -End -; - -9427 ++ - g - ) - -9428 (* - g -)-> -noMchgTeCas - -ec - ); - -9431 -vtu -  -RunSg - -TeRunInfo - cڡ& -RunInfo - ) - gCATCH_OVERRIDE - { - -9432  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9433 - g - ! -End -; - -9434 ++ - g - ) - -9435 (* - g -)-> -RunSg - -RunInfo - ); - -9438 -vtu -  -GroupSg - -GroupInfo - cڡ& -groupInfo - ) - gCATCH_OVERRIDE - { - -9439  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9440 - g - ! -End -; - -9441 ++ - g - ) - -9442 (* - g -)-> -GroupSg - -groupInfo - ); - -9445 -vtu -  -CaSg - -TeCaInfo - cڡ& -Info - ) - gCATCH_OVERRIDE - { - -9446  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9447 - g - ! -End -; - -9448 ++ - g - ) - -9449 (* - g -)-> -CaSg - -Info - ); - -9452 -vtu -  -iSg - -SeiInfo - cڡ& -iInfo - ) - gCATCH_OVERRIDE - { - -9453  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9454 - g - ! -End -; - -9455 ++ - g - ) - -9456 (* - g -)-> -iSg - -iInfo - ); - -9459 -vtu -  -asiSg - -AsiInfo - cڡ& -asiInfo - ) - gCATCH_OVERRIDE - { - -9460  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9461 - g - ! -End -; - -9462 ++ - g - ) - -9463 (* - g -)-> -asiSg - -asiInfo - ); - -9467 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -asiSts - ) - gCATCH_OVERRIDE - { - -9468 -bo - - grBufr - = -l -; - -9469  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9470 - g - ! -End -; - -9471 ++ - g - ) - -9472 - grBufr - |(* - -)-> -asiEnded - -asiSts - ); - -9473  - grBufr -; - -9476 -vtu -  -iEnded - -SeiSts - cڡ& -iSts - ) - gCATCH_OVERRIDE - { - -9477  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9478 - g - ! -End -; - -9479 ++ - g - ) - -9480 (* - g -)-> -iEnded - -iSts - ); - -9483 -vtu -  -CaEnded - -TeCaSts - cڡ& -CaSts - ) - gCATCH_OVERRIDE - { - -9484  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9485 - g - ! -End -; - -9486 ++ - g - ) - -9487 (* - g -)-> -CaEnded - -CaSts - ); - -9490 -vtu -  -GroupEnded - -TeGroupSts - cڡ& -GroupSts - ) - gCATCH_OVERRIDE - { - -9491  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9492 - g - ! -End -; - -9493 ++ - g - ) - -9494 (* - g -)-> -GroupEnded - -GroupSts - ); - -9497 -vtu -  -RunEnded - -TeRunSts - cڡ& -RunSts - ) - gCATCH_OVERRIDE - { - -9498  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9499 - g - ! -End -; - -9500 ++ - g - ) - -9501 (* - g -)-> -RunEnded - -RunSts - ); - -9504 -vtu -  -skTe - -TeCaInfo - cڡ& -Info - ) - gCATCH_OVERRIDE - { - -9505  - gR܋rs -:: -cڡ_ - - - = -m_p܋rs -. -beg -(), - gEnd - = m_p܋rs. -d -(); - -9506 - g - ! -End -; - -9507 ++ - g - ) - -9508 (* - g -)-> -skTe - -Info - ); - -9511 -vtu - -MuɝR܋rs -* -yAsMui -( - gCATCH_OVERRIDE - { - -9512  - gthis -; - -9517 - gP -< - gISmgR܋r -> -addR܋r - -P -< -ISmgR܋r -> cڡ& -exigR܋r -, P cڡ& -addiڮR܋r - ) { - -9518 - gP -< - gISmgR܋r -> - gsuɚgR܋r -; - -9520 if - gexigR܋r - ) { - -9521 -MuɝR܋rs -* - gmui - = -exigR܋r --> -yAsMui -(); - -9522 if! - gmui - ) { - -9523 - gmui - = -w - -MuɝR܋rs -; - -9524 - gsuɚgR܋r - = -P -< -ISmgR܋r -> -mui - ); - -9525 if - gexigR܋r - ) - -9526 - gmui --> -add - -exigR܋r - ); - -9529 - gsuɚgR܋r - = -exigR܋r -; - -9530 - gmui --> -add - -addiڮR܋r - ); - -9533 - gsuɚgR܋r - = -addiڮR܋r -; - -9535  - gsuɚgR܋r -; - -9541  - #TWOBLUECUBES_CATCH_REPORTER_XML_HPP_INCLUDED - - - ) - -9544  - #TWOBLUECUBES_CATCH_REPORTER_BASES_HPP_INCLUDED - - - ) - -9546  - ~ - -9547  - ~ - -9548  - ~ - -9549  - ~ - -9551 -mea - - gCch - { - -9553 - gmea - { - -9556 - gd -:: -rg - -gFmdDuti - -duti - ) { - -9561 cڡ -size_t - -maxDoubSize - = -DBL_MAX_10_EXP - + 1 + 1 + 3 + 1; - -9562  - gbufr -[ -maxDoubSize -]; - -9565 -EnoGud - - ggud -; - -9566 #ifde -_MSC_VER - - -9567 -rtf_s -( -bufr -, "%.3f", -duti -); - -9569 -rtf -( -bufr -, "%.3f", -duti -); - -9571  - gd -:: -rg -( -bufr -); - -9575  - gSmgR܋rBa - : -ShedIm -< -ISmgR܋r -> { - -9577 -SmgR܋rBa - -R܋rCfig - cڡ& -_cfig - ) - -9578 : -m_cfig - -_cfig -. -fuCfig -() ), - -9579 -am - -_cfig -.stream() ) - -9581 - gm_p܋rPfs -. - gshouldRedeStdOut - = -l -; - -9584 -vtu - -R܋rPns - -gPns -(cڡ - gCATCH_OVERRIDE - { - -9585  - gm_p܋rPfs -; - -9588 - gvtu - ~ -SmgR܋rBa -( - gCATCH_OVERRIDE -; - -9590 -vtu -  -noMchgTeCas - -d -:: -rg - cڡ& ) -CATCH_OVERRIDE - {} - -9592 -vtu -  -RunSg - -TeRunInfo - cڡ& -_RunInfo - ) -CATCH_OVERRIDE - { - -9593 -cutTeRunInfo - = -_RunInfo -; - -9595 -vtu -  -GroupSg - -GroupInfo - cڡ& -_groupInfo - ) - gCATCH_OVERRIDE - { - -9596 - gcutGroupInfo - = -_groupInfo -; - -9599 -vtu -  -CaSg - -TeCaInfo - cڡ& -_Info - ) - gCATCH_OVERRIDE - { - -9600 - gcutTeCaInfo - = -_Info -; - -9602 -vtu -  -iSg - -SeiInfo - cڡ& -_iInfo - ) - gCATCH_OVERRIDE - { - -9603 - gm_iSck -. -push_back - -_iInfo - ); - -9606 -vtu -  -iEnded - -SeiSts - cڡ& ) - gCATCH_OVERRIDE - { - -9607 - gm_iSck -. -p_back -(); - -9609 -vtu -  -CaEnded - -TeCaSts - cڡ& ) - gCATCH_OVERRIDE - { - -9610 - gcutTeCaInfo -. -t -(); - -9612 -vtu -  -GroupEnded - -TeGroupSts - cڡ& ) - gCATCH_OVERRIDE - { - -9613 - gcutGroupInfo -. -t -(); - -9615 -vtu -  -RunEnded - -TeRunSts - cڡ& ) - gCATCH_OVERRIDE - { - -9616 - gcutTeCaInfo -. -t -(); - -9617 - gcutGroupInfo -. -t -(); - -9618 - gcutTeRunInfo -. -t -(); - -9621 -vtu -  -skTe - -TeCaInfo - cڡ& ) - gCATCH_OVERRIDE - { - -9626 - gP -< -ICfig - cڡ> - gm_cfig -; - -9627 - gd -:: -oam -& -am -; - -9629 - gLazySt -< - gTeRunInfo -> - gcutTeRunInfo -; - -9630 - gLazySt -< - gGroupInfo -> - gcutGroupInfo -; - -9631 - gLazySt -< - gTeCaInfo -> - gcutTeCaInfo -; - -9633 - gd -:: -ve -< -SeiInfo -> -m_iSck -; - -9634 -R܋rPns - - gm_p܋rPfs -; - -9637  - gCumutiveR܋rBa - : -ShedIm -< -ISmgR܋r -> { - -9638 -me -< -tyme - -T -,ym - gChdNodeT -> - -9639  - gNode - : -ShedIm -<> { - -9640 -exic - -Node - -T - cڡ& -_vue - ) : -vue -( _value ) {} - -9641 -vtu - ~ -Node -() {} - -9643  -d -:: - tve -< - tP -< - tChdNodeT -> > - tChdNodes -; - -9644 -T - - gvue -; - -9645 -ChdNodes - - gchdn -; - -9647  - gSeiNode - : -ShedIm -<> { - -9648 -exic - -SeiNode - -SeiSts - cڡ& -_s - ) : -s -( _stats ) {} - -9649 -vtu - ~ -SeiNode -(); - -9651 -bo - - gݔ - = -SeiNode - cڡ& -h - ) const { - -9652  -s -. -iInfo -. -leInfo - = -h -.stats.sectionInfo.lineInfo; - -9654 -bo - - gݔ - = -P -< -SeiNode -> cڡ& -h - ) const { - -9655  -ݔ -==* -h - ); - -9658 -SeiSts - - gs -; - -9659  - gd -:: - tve -< - tP -< - tSeiNode -> > - tChdSeis -; - -9660  - gd -:: - tve -< - tAsiSts -> - tAsis -; - -9661 -ChdSeis - - gchdSeis -; - -9662 -Asis - - gasis -; - -9663 - gd -:: -rg - -dOut -; - -9664 - gd -:: -rg - -dE -; - -9667  - sBySeiInfo - { - -9668 -BySeiInfo - -SeiInfo - cڡ& -h - ) : -m_h -( other ) {} - -9669 -BySeiInfo -BySeiInfcڡ& -h - ) : -m_h -( other.m_other ) {} - -9670 -bo - -ݔ -( -P -< -SeiNode -> cڡ& -node - ) const { - -9671  (( -node --> -s -. -iInfo -. -me - = -m_h -.name) && - -9672 ( -node --> -s -. -iInfo -. -leInfo - = -m_h -.lineInfo)); - -9674 - give -: - -9675  -ݔ -= -BySeiInfo - const& ); - -9676 -SeiInfo - cڡ& - gm_h -; - -9679  - gNode -< - tTeCaSts -, - tSeiNode -> - tTeCaNode -; - -9680  - gNode -< - tTeGroupSts -, - tTeCaNode -> - tTeGroupNode -; - -9681  - gNode -< - tTeRunSts -, - tTeGroupNode -> - tTeRunNode -; - -9683 -CumutiveR܋rBa - -R܋rCfig - cڡ& -_cfig - ) - -9684 : -m_cfig - -_cfig -. -fuCfig -() ), - -9685 -am - -_cfig -.stream() ) - -9687 - gm_p܋rPfs -. - gshouldRedeStdOut - = -l -; - -9689 ~ -CumutiveR܋rBa -(); - -9691 -vtu - -R܋rPns - -gPns -(cڡ - gCATCH_OVERRIDE - { - -9692  - gm_p܋rPfs -; - -9695 -vtu -  -RunSg - -TeRunInfo - cڡ& ) - gCATCH_OVERRIDE - {} - -9696 -vtu -  -GroupSg - -GroupInfo - cڡ& ) - gCATCH_OVERRIDE - {} - -9698 -vtu -  -CaSg - -TeCaInfo - cڡ& ) - gCATCH_OVERRIDE - {} - -9700 -vtu -  -iSg - -SeiInfo - cڡ& -iInfo - ) - gCATCH_OVERRIDE - { - -9701 -SeiSts - -comeSts - -iInfo -, -Cous -(), 0, -l - ); - -9702 - gP -< - gSeiNode -> - gnode -; - -9703 if - gm_iSck -. -emy -() ) { - -9704 if! - gm_roSei - ) - -9705 - gm_roSei - = -w - -SeiNode - -comeSts - ); - -9706 - gnode - = -m_roSei -; - -9709 - gSeiNode -& - gNode - = * -m_iSck -. -back -(); - -9710 - gSeiNode -:: -ChdSeis -:: -cڡ_ - - - = - -9711 -d -:: -fd_if - -Node -. -chdSeis -. -beg -(), - -9712 -Node -. -chdSeis -. -d -(), - -9713 -BySeiInfo - -iInfo - ) ); - -9714 if - g - = -Node -. -chdSeis -. -d -() ) { - -9715 -node - = -w - -SeiNode - -comeSts - ); - -9716 - gNode -. - gchdSeis -. -push_back - -node - ); - -9719 - gnode - = * - -; - -9721 - gm_iSck -. -push_back - -node - ); - -9722 - gm_dSei - = -node -; - -9725 -vtu -  -asiSg - -AsiInfo - cڡ& ) - gCATCH_OVERRIDE - {} - -9727 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -asiSts - ) - gCATCH_OVERRIDE - { - -9728 -as -! -m_iSck -. -emy -() ); - -9729 - gSeiNode -& - giNode - = * -m_iSck -. -back -(); - -9730 - giNode -. - gasis -. -push_back - -asiSts - ); - -9736 -eExndedExessi - -iNode -. -asis -. -back -(). -asiResu - ); - -9737  - gue -; - -9739 -vtu -  -iEnded - -SeiSts - cڡ& -iSts - ) - gCATCH_OVERRIDE - { - -9740 -as -! -m_iSck -. -emy -() ); - -9741 - gSeiNode -& - gnode - = * -m_iSck -. -back -(); - -9742 - gnode -. - gs - = -iSts -; - -9743 - gm_iSck -. -p_back -(); - -9745 -vtu -  -CaEnded - -TeCaSts - cڡ& -CaSts - ) - gCATCH_OVERRIDE - { - -9746 - gP -< - gTeCaNode -> - gnode - = -w - -TeCaNode - -CaSts - ); - -9747 -as - -m_iSck -. -size -() == 0 ); - -9748 - gnode --> - gchdn -. -push_back - -m_roSei - ); - -9749 - gm_Cas -. -push_back - -node - ); - -9750 - gm_roSei -. -t -(); - -9752 -as - -m_dSei - ); - -9753 - gm_dSei --> - gdOut - = -CaSts -. -dOut -; - -9754 - gm_dSei --> - gdE - = -CaSts -. -dE -; - -9756 -vtu -  -GroupEnded - -TeGroupSts - cڡ& -GroupSts - ) - gCATCH_OVERRIDE - { - -9757 - gP -< - gTeGroupNode -> - gnode - = -w - -TeGroupNode - -GroupSts - ); - -9758 - gnode --> - gchdn -. -sw - -m_Cas - ); - -9759 - gm_Groups -. -push_back - -node - ); - -9761 -vtu -  -RunEnded - -TeRunSts - cڡ& -RunSts - ) - gCATCH_OVERRIDE - { - -9762 - gP -< - gTeRunNode -> - gnode - = -w - -TeRunNode - -RunSts - ); - -9763 - gnode --> - gchdn -. -sw - -m_Groups - ); - -9764 - gm_Runs -. -push_back - -node - ); - -9765 -RunEndedCumutive -(); - -9767 -vtu -  -RunEndedCumutive -() = 0; - -9769 -vtu -  -skTe - -TeCaInfo - cڡ& ) - gCATCH_OVERRIDE - {} - -9771 -vtu -  -eExndedExessi - -AsiResu -& -su - ) const { - -9772 if - gsu -. -isOk -() ) - -9773 - gsu -. -disrdDecompodExessi -(); - -9775 - gsu -. -exndDecompodExessi -(); - -9778 - gP -< -ICfig - cڡ> - gm_cfig -; - -9779 - gd -:: -oam -& -am -; - -9780 - gd -:: -ve -< -AsiSts -> -m_asis -; - -9781 - gd -:: -ve -< -d -::ve< -P -< -SeiNode -> > > -m_is -; - -9782 - gd -:: -ve -< -P -< -TeCaNode -> > -m_Cas -; - -9783 - gd -:: -ve -< -P -< -TeGroupNode -> > -m_Groups -; - -9785 - gd -:: -ve -< -P -< -TeRunNode -> > -m_Runs -; - -9787 - gP -< - gSeiNode -> - gm_roSei -; - -9788 - gP -< - gSeiNode -> - gm_dSei -; - -9789 - gd -:: -ve -< -P -< -SeiNode -> > -m_iSck -; - -9790 -R܋rPns - - gm_p܋rPfs -; - -9794 - gme -< - gC -> - -9795 cڡ* -gLeOfChs -() { - -9796  - gle -[ -CATCH_CONFIG_CONSOLE_WIDTH -] = {0}; - -9797 if!* - gle - ) { - -9798 - gd -:: -memt - -le -, -C -, -CATCH_CONFIG_CONSOLE_WIDTH --1 ); - -9799 - gle -[ -CATCH_CONFIG_CONSOLE_WIDTH --1] = 0; - -9801  - gle -; - -9804  - gTeEvtLiBa - : -SmgR܋rBa - { - -9805 -TeEvtLiBa - -R܋rCfig - cڡ& -_cfig - ) - -9806 : -SmgR܋rBa - -_cfig - ) - -9809 -vtu -  -asiSg - -AsiInfo - cڡ& ) -CATCH_OVERRIDE - {} - -9810 -vtu - -bo - -asiEnded - -AsiSts - cڡ& ) -CATCH_OVERRIDE - { - -9811  -l -; - -9818  - #TWOBLUECUBES_CATCH_REPORTER_REGISTRARS_HPP_INCLUDED - - - ) - -9820 -mea - - gCch - { - -9822 - gme -< -tyme - - gT -> - -9823 as - cLegacyR܋rRegir - { - -9825 as - cR܋rFay - : -public - -IR܋rFay - { - -9826 -vtu - -ISmgR܋r -* - - -R܋rCfig - cڡ& -cfig - ) const { - -9827  -w - -LegacyR܋rAdr -w -T - -cfig - ) ); - -9830 -vtu - - gd -:: -rg - -gDesti -() const { - -9831  -T -:: -gDesti -(); - -9835 - gpublic -: - -9837 -LegacyR܋rRegir - -d -:: -rg - cڡ& -me - ) { - -9838 -gMubRegiryHub -(). -giR܋r - -me -, -w - -R܋rFay -() ); - -9842 - gme -< -tyme - - gT -> - -9843 as - cR܋rRegir - { - -9845 -ass - - gR܋rFay - : -public - -ShedIm -< -IR܋rFay -> { - -9858 -vtu - -ISmgR܋r -* - - -R܋rCfig - cڡ& -cfig - ) const { - -9859  -w - -T - -cfig - ); - -9862 -vtu - - gd -:: -rg - -gDesti -() const { - -9863  -T -:: -gDesti -(); - -9867 - gpublic -: - -9869 -R܋rRegir - -d -:: -rg - cڡ& -me - ) { - -9870 -gMubRegiryHub -(). -giR܋r - -me -, -w - -R܋rFay -() ); - -9874 - gme -< -tyme - - gT -> - -9875 as - cLiRegir - { - -9877 -ass - - gLiFay - : -public - -ShedIm -< -IR܋rFay -> { - -9879 -vtu - -ISmgR܋r -* - - -R܋rCfig - cڡ& -cfig - ) const { - -9880  -w - -T - -cfig - ); - -9882 -vtu - - gd -:: -rg - -gDesti -() const { - -9883  -d -:: -rg -(); - -9887 - gpublic -: - -9889 -LiRegir -() { - -9890 -gMubRegiryHub -(). -giLi - -w - -LiFay -() ); - -9895  - #INTERNAL_CATCH_REGISTER_LEGACY_REPORTER - -me -, -p܋rTy - ) \ - -9896 -mea -{ -Cch -:: -LegacyR܋rRegir -< -p܋rTy -> -tch__RegirF -## - `p܋rTy - -me - ); } - - ) - -9898  - #INTERNAL_CATCH_REGISTER_REPORTER - -me -, -p܋rTy - ) \ - -9899 -mea -{ -Cch -:: -R܋rRegir -< -p܋rTy -> -tch__RegirF -## - `p܋rTy - -me - ); } - - ) - -9902  - #INTERNAL_CATCH_REGISTER_LISTENER - -liTy - ) \ - -9903 -mea -{ -Cch -:: -LiRegir -< -liTy -> -tch__RegirF -##liTy; } - - ) - -9905  - #CATCH_REGISTER_LISTENER - -liTy - ) \ - -9906 -mea -{ -Cch -:: -LiRegir -< -liTy -> -tch__RegirF -##liTy; } - - ) - -9909  - #TWOBLUECUBES_CATCH_XMLWRITER_HPP_INCLUDED - - - ) - -9911  - ~ - -9912  - ~ - -9913  - ~ - -9914  - ~ - -9916 -mea - - gCch - { - -9918 as - cXmlEncode - { - -9919 - gpublic -: - -9920 - eFWh - { -FTextNodes -, - gFAribus - }; - -9922 -XmlEncode - -d -:: -rg - cڡ& -r -, -FWh - -fWh - = -FTextNodes - ) - -9923 : -m_r - -r - ), - -9924 -m_fWh - -fWh - ) - -9927  -codeTo - -d -:: -oam -& -os - ) const { - -9932  -d -:: -size_t - -i - = 0; - gi - < - gm_r -. -size -(); ++ i ) { - -9933  - gc - = -m_r -[ -i -]; - -9934  - gc - ) { - -9935 '<': -os - << "<"; ; - -9936 '&': -os - << "&"; ; - -9940 if -i - > 2 && -m_r -[i-1] == ']' && m_str[i-2] == ']' ) - -9941 -os - << ">"; - -9943 - gos - << - gc -; - -9947 if -m_fWh - = -FAribus - ) - -9948 -os - << """; - -9950 - gos - << - gc -; - -9956 i -c - >= 0 && c < '\x09' ) || ( c > '\x0D' && c < '\x20') || c=='\x7F' ) { - -9958 -os - << "\\x" << -d -:: -u - << std:: -hex - << std:: -tfl -('0'<< std:: -tw -(2) - -9959 << -ic_ -<> -c - ); - -9962 - gos - << - gc -; - -9967 -nd - - gd -:: -oam -& -ݔ - << ( -d -::oam& -os -, -XmlEncode - cڡ& - gxmlEncode - ) { - -9968 - gxmlEncode -. -codeTo - -os - ); - -9969  - gos -; - -9972 - give -: - -9973 -d -:: -rg - -m_r -; - -9974 -FWh - - gm_fWh -; - -9977 as - cXmlWr - { - -9978 - gpublic -: - -9980 as - cScedEmt - { - -9981 -public -: - -9982 -ScedEmt - -XmlWr -* -wr - ) - -9983 : -m_wr - -wr - ) - -9986 -ScedEmt -ScedEmcڡ& -h - ) - -9987 : -m_wr - -h -.m_writer ){ - -9988 -h -. -m_wr - = -CATCH_NULL -; - -9991 ~ -ScedEmt -() { - -9992 if - gm_wr - ) - -9993 - gm_wr --> -dEmt -(); - -9996 - gScedEmt -& -wreText - -d -:: -rg - cڡ& -xt -, -bo - -dt - = -ue - ) { - -9997 -m_wr --> -wreText - -xt -, -dt - ); - -9998  * - gthis -; - -10001 - gme -< -tyme - - gT -> - -10002 - gScedEmt -& -wreAribu - -d -:: -rg - cڡ& -me -, -T - cڡ& -ibu - ) { - -10003 - gm_wr --> -wreAribu - -me -, -ibu - ); - -10004  * - gthis -; - -10007 - give -: - -10008 -mub - -XmlWr -* -m_wr -; - -10011 -XmlWr -() - -10012 : -m_gIsOn - -l - ), - -10013 -m_edsNewle - -l - ), - -10014 -m_os - -Cch -:: -cout -() ) - -10016 -wreDei -(); - -10019 -XmlWr - -d -:: -oam -& -os - ) - -10020 : -m_gIsOn - -l - ), - -10021 -m_edsNewle - -l - ), - -10022 -m_os - -os - ) - -10024 -wreDei -(); - -10027 ~ -XmlWr -() { - -10028  ! - gm_gs -. -emy -() ) - -10029 -dEmt -(); - -10032 - gXmlWr -& -tEmt - -d -:: -rg - cڡ& -me - ) { - -10033 -suTagClod -(); - -10034 -wleIfNesry -(); - -10035 - gm_os - << - gm_dt - << '<' << - gme -; - -10036 - gm_gs -. -push_back - -me - ); - -10037 - gm_dt - += " "; - -10038 - gm_gIsOn - = -ue -; - -10039  * - gthis -; - -10042 -ScedEmt - -scedEmt - -d -:: -rg - cڡ& -me - ) { - -10043 -ScedEmt - -sced - -this - ); - -10044 -tEmt - -me - ); - -10045  - gsced -; - -10048 - gXmlWr -& -dEmt -() { - -10049 -wleIfNesry -(); - -10050 - gm_dt - = -m_dt -. -subr -0, m_dt. -size -()-2 ); - -10051 if - gm_gIsOn - ) { - -10052 - gm_os - << "/>"; - -10053 - gm_gIsOn - = -l -; - -10056 - gm_os - << - gm_dt - << ""; - -10058 - gm_os - << - gd -:: -dl -; - -10059 - gm_gs -. -p_back -(); - -10060  * - gthis -; - -10063 - gXmlWr -& -wreAribu - -d -:: -rg - cڡ& -me -, std::rg cڡ& -ibu - ) { - -10064 if! -me -. -emy -(&& ! -ibu -.empty() ) - -10065 -m_os - << ' ' << -me - << "=\"" << -XmlEncode - -ibu -, XmlEncode:: -FAribus - ) << '"'; - -10066  * - gthis -; - -10069 - gXmlWr -& -wreAribu - -d -:: -rg - cڡ& -me -, -bo - -ibu - ) { - -10070 - gm_os - << ' ' << - gme - << "=\"" << ( - gibu - ? "true" : "false" ) << '"'; - -10071  * - gthis -; - -10074 - gme -< -tyme - - gT -> - -10075 - gXmlWr -& -wreAribu - -d -:: -rg - cڡ& -me -, -T - cڡ& -ibu - ) { - -10076 - gd -:: -orgam - -oss -; - -10077 - goss - << - gibu -; - -10078  -wreAribu - -me -, -oss -. -r -() ); - -10081 - gXmlWr -& -wreText - -d -:: -rg - cڡ& -xt -, -bo - -dt - = -ue - ) { - -10082 if! -xt -. -emy -() ){ - -10083 -bo - -gWasOn - = -m_gIsOn -; - -10084 -suTagClod -(); - -10085 if - ggWasOn - && - gdt - ) - -10086 - gm_os - << - gm_dt -; - -10087 - gm_os - << -XmlEncode - -xt - ); - -10088 - gm_edsNewle - = -ue -; - -10090  * - gthis -; - -10093 - gXmlWr -& -wreCommt - -d -:: -rg - cڡ& -xt - ) { - -10094 -suTagClod -(); - -10095 - gm_os - << - gm_dt - << ""; - -10096 - gm_edsNewle - = -ue -; - -10097  * - gthis -; - -10100  -wreStyshtRef - -d -:: -rg - cڡ& -u - ) { - -10101 -m_os - << "\n"; - -10104 - gXmlWr -& -wreBnkLe -() { - -10105 -suTagClod -(); - -10106 - gm_os - << '\n'; - -10107  * - gthis -; - -10110  -suTagClod -() { - -10111 if - gm_gIsOn - ) { - -10112 - gm_os - << ">" << - gd -:: -dl -; - -10113 - gm_gIsOn - = -l -; - -10117 - give -: - -10118 -XmlWr -( XmlWriter const& ); - -10119  - gݔ -= -XmlWr - const& ); - -10121  -wreDei -() { - -10122 - gm_os - << "\n"; - -10125  -wleIfNesry -() { - -10126 if - gm_edsNewle - ) { - -10127 - gm_os - << - gd -:: -dl -; - -10128 - gm_edsNewle - = -l -; - -10132 -bo - - gm_gIsOn -; - -10133 -bo - - gm_edsNewle -; - -10134 - gd -:: -ve -< -d -:: -rg -> -m_gs -; - -10135 - gd -:: -rg - -m_dt -; - -10136 - gd -:: -oam -& -m_os -; - -10141 -mea - - gCch - { - -10142 as - cXmlR܋r - : -public - -SmgR܋rBa - { - -10143 -public -: - -10144 -XmlR܋r - -R܋rCfig - cڡ& -_cfig - ) - -10145 : -SmgR܋rBa - -_cfig - ), - -10146 -m_xml -( -_cfig -. -am -()), - -10147 -m_iDth -( 0 ) - -10149 - gm_p܋rPfs -. - gshouldRedeStdOut - = -ue -; - -10152 - gvtu - ~ -XmlR܋r -( - gCATCH_OVERRIDE -; - -10154  - gd -:: -rg - -gDesti -() { - -10158 -vtu - - gd -:: -rg - -gStyshtRef -() const { - -10159  -d -:: -rg -(); - -10162  -wreSourInfo - -SourLeInfo - cڡ& -sourInfo - ) { - -10163 - gm_xml - - -10164 . -wreAribu -"fame", -sourInfo -. -fe - ) - -10165 . -wreAribu -"le", -sourInfo -. -le - ); - -10168 - gpublic -: - -10170 -vtu -  -noMchgTeCas - -d -:: -rg - cڡ& -s - ) -CATCH_OVERRIDE - { - -10171 -SmgR܋rBa -:: -noMchgTeCas - -s - ); - -10174 -vtu -  -RunSg - -TeRunInfo - cڡ& -Info - ) - gCATCH_OVERRIDE - { - -10175 - gSmgR܋rBa -:: -RunSg - -Info - ); - -10176 - gd -:: -rg - -yshtRef - = -gStyshtRef -(); - -10177 if! - gyshtRef -. -emy -() ) - -10178 - gm_xml -. -wreStyshtRef - -yshtRef - ); - -10179 - gm_xml -. -tEmt -( "Catch" ); - -10180 if! - gm_cfig --> -me -(). -emy -() ) - -10181 - gm_xml -. -wreAribu -"me", -m_cfig --> -me -() ); - -10184 -vtu -  -GroupSg - -GroupInfo - cڡ& -groupInfo - ) - gCATCH_OVERRIDE - { - -10185 - gSmgR܋rBa -:: -GroupSg - -groupInfo - ); - -10186 - gm_xml -. -tEmt -( "Group" ) - -10187 . -wreAribu -"me", -groupInfo -. -me - ); - -10190 -vtu -  -CaSg - -TeCaInfo - cڡ& -Info - ) - gCATCH_OVERRIDE - { - -10191 - gSmgR܋rBa -:: -CaSg -( -Info -); - -10192 - gm_xml -. -tEmt -( "TestCase" ) - -10193 . -wreAribu -"me", -im - -Info -. -me - ) ) - -10194 . -wreAribu -"desti", -Info -. -desti - ) - -10195 . -wreAribu -"gs", -Info -. -gsAsSg - ); - -10197 -wreSourInfo - -Info -. -leInfo - ); - -10199 i - gm_cfig --> -showDutis -(= -ShowDutis -:: -Always - ) - -10200 -m_CaTim -. -t -(); - -10201 - gm_xml -. -suTagClod -(); - -10204 -vtu -  -iSg - -SeiInfo - cڡ& -iInfo - ) - gCATCH_OVERRIDE - { - -10205 - gSmgR܋rBa -:: -iSg - -iInfo - ); - -10206 if - gm_iDth -++ > 0 ) { - -10207 - gm_xml -. -tEmt -( "Section" ) - -10208 . -wreAribu -"me", -im - -iInfo -. -me - ) ) - -10209 . -wreAribu -"desti", -iInfo -. -desti - ); - -10210 -wreSourInfo - -iInfo -. -leInfo - ); - -10211 - gm_xml -. -suTagClod -(); - -10215 -vtu -  -asiSg - -AsiInfo - cڡ& ) - gCATCH_OVERRIDE - { } - -10217 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -asiSts - ) - gCATCH_OVERRIDE - { - -10219 -AsiResu - cڡ& - gsu - = -asiSts -. -asiResu -; - -10221 -bo - - gudeResus - = -m_cfig --> -udeSucssfulResus -(|| ! -su -. -isOk -(); - -10223 if - gudeResus - ) { - -10225  - gd -:: -ve -< -MesgeInfo ->:: -cڡ_ - - - = -asiSts -. -foMesges -. -beg -(), - gEnd - =siSts.foMesges. -d -(); - -10226 - g - ! -End -; - -10227 ++ - g - ) { - -10228 if - g --> - gty - = -ResuWas -:: -Info - ) { - -10229 -m_xml -. -scedEmt -( "Info" ) - -10230 . -wreText - - --> -mesge - ); - -10231 } i - g --> - gty - = -ResuWas -:: -Wng - ) { - -10232 -m_xml -. -scedEmt -( "Warning" ) - -10233 . -wreText - - --> -mesge - ); - -10239 if! - gudeResus - && - gsu -. -gResuTy -(! -ResuWas -:: -Wng - ) - -10240  -ue -; - -10243 if - gsu -. -hasExessi -() ) { - -10244 - gm_xml -. -tEmt -( "Expression" ) - -10245 . -wreAribu -"sucss", -su -. -suceded -() ) - -10246 . -wreAribu -"ty", -su -. -gTeMaoName -() ); - -10248 -wreSourInfo - -su -. -gSourInfo -() ); - -10250 - gm_xml -. -scedEmt -( "Original" ) - -10251 . -wreText - -su -. -gExessi -() ); - -10252 - gm_xml -. -scedEmt -( "Expanded" ) - -10253 . -wreText - -su -. -gExndedExessi -() ); - -10257  - gsu -. -gResuTy -() ) { - -10258  - gResuWas -:: -ThwExi -: - -10259 -m_xml -. -tEmt -( "Exception" ); - -10260 -wreSourInfo - -su -. -gSourInfo -() ); - -10261 - gm_xml -. -wreText - -su -. -gMesge -() ); - -10262 - gm_xml -. -dEmt -(); - -10264  - gResuWas -:: -FECdi -: - -10265 -m_xml -. -tEmt -( "FatalErrorCondition" ); - -10266 -wreSourInfo - -su -. -gSourInfo -() ); - -10267 - gm_xml -. -wreText - -su -. -gMesge -() ); - -10268 - gm_xml -. -dEmt -(); - -10270  - gResuWas -:: -Info -: - -10271 -m_xml -. -scedEmt -( "Info" ) - -10272 . -wreText - -su -. -gMesge -() ); - -10274  - gResuWas -:: -Wng -: - -10277  - gResuWas -:: -ExicFau -: - -10278 -m_xml -. -tEmt -( "Failure" ); - -10279 -wreSourInfo - -su -. -gSourInfo -() ); - -10280 - gm_xml -. -wreText - -su -. -gMesge -() ); - -10281 - gm_xml -. -dEmt -(); - -10287 if - gsu -. -hasExessi -() ) - -10288 - gm_xml -. -dEmt -(); - -10290  - gue -; - -10293 -vtu -  -iEnded - -SeiSts - cڡ& -iSts - ) - gCATCH_OVERRIDE - { - -10294 - gSmgR܋rBa -:: -iEnded - -iSts - ); - -10295 if-- - gm_iDth - > 0 ) { - -10296 - gXmlWr -:: -ScedEmt - -e - = -m_xml -. -scedEmt -( "OverallResults" ); - -10297 - ge -. -wreAribu -"sucss", -iSts -. -asis -. -sd - ); - -10298 - ge -. -wreAribu -"us", -iSts -. -asis -. -ed - ); - -10299 - ge -. -wreAribu -"exedFaus", -iSts -. -asis -. -edButOk - ); - -10301 i - gm_cfig --> -showDutis -(= -ShowDutis -:: -Always - ) - -10302 -e -. -wreAribu -"dutiInSecds", -iSts -. -dutiInSecds - ); - -10304 - gm_xml -. -dEmt -(); - -10308 -vtu -  -CaEnded - -TeCaSts - cڡ& -CaSts - ) - gCATCH_OVERRIDE - { - -10309 - gSmgR܋rBa -:: -CaEnded - -CaSts - ); - -10310 - gXmlWr -:: -ScedEmt - -e - = -m_xml -. -scedEmt -( "OverallResult" ); - -10311 - ge -. -wreAribu -"sucss", -CaSts -. -tٮs -. -asis -. -lOk -() ); - -10313 i - gm_cfig --> -showDutis -(= -ShowDutis -:: -Always - ) - -10314 -e -. -wreAribu -"dutiInSecds", -m_CaTim -. -gEpdSecds -() ); - -10316 if! - gCaSts -. - gdOut -. -emy -() ) - -10317 - gm_xml -. -scedEmt -"StdOut" ). -wreText - -im - -CaSts -. -dOut - ), -l - ); - -10318 if! - gCaSts -. - gdE -. -emy -() ) - -10319 - gm_xml -. -scedEmt -"StdE" ). -wreText - -im - -CaSts -. -dE - ), -l - ); - -10321 - gm_xml -. -dEmt -(); - -10324 -vtu -  -GroupEnded - -TeGroupSts - cڡ& -GroupSts - ) - gCATCH_OVERRIDE - { - -10325 - gSmgR܋rBa -:: -GroupEnded - -GroupSts - ); - -10326 - gm_xml -. -scedEmt -( "OverallResults" ) - -10327 . -wreAribu -"sucss", -GroupSts -. -tٮs -. -asis -. -sd - ) - -10328 . -wreAribu -"us", -GroupSts -. -tٮs -. -asis -. -ed - ) - -10329 . -wreAribu -"exedFaus", -GroupSts -. -tٮs -. -asis -. -edButOk - ); - -10330 - gm_xml -. -dEmt -(); - -10333 -vtu -  -RunEnded - -TeRunSts - cڡ& -RunSts - ) - gCATCH_OVERRIDE - { - -10334 - gSmgR܋rBa -:: -RunEnded - -RunSts - ); - -10335 - gm_xml -. -scedEmt -( "OverallResults" ) - -10336 . -wreAribu -"sucss", -RunSts -. -tٮs -. -asis -. -sd - ) - -10337 . -wreAribu -"us", -RunSts -. -tٮs -. -asis -. -ed - ) - -10338 . -wreAribu -"exedFaus", -RunSts -. -tٮs -. -asis -. -edButOk - ); - -10339 - gm_xml -. -dEmt -(); - -10342 - give -: - -10343 -Tim - -m_CaTim -; - -10344 -XmlWr - - gm_xml -; - -10345  - gm_iDth -; - -10348 -INTERNAL_CATCH_REGISTER_REPORTER -"xml", -XmlR܋r - ) - -10353  - #TWOBLUECUBES_CATCH_REPORTER_JUNIT_HPP_INCLUDED - - - ) - -10355  - ~ - -10357 -mea - - gCch - { - -10359 - gmea - { - -10360 - gd -:: -rg - -gCutTimeamp -() { - -10363 -time_t - -wtime -; - -10364 - gd -:: -time -(& -wtime -); - -10365 cڡ -size_t - - gtimeSmpSize - = ("2017-01-16T17:06:45Z"); - -10367 #ifde -_MSC_VER - - -10368 - gd -:: -tm - -timeInfo - = {}; - -10369 -gmtime_s -(& -timeInfo -, & -wtime -); - -10371 - gd -:: -tm -* -timeInfo -; - -10372 - gtimeInfo - = -d -:: -gmtime -(& -wtime -); - -10375  - gtimeSmp -[ -timeSmpSize -]; - -10376 cڡ * cڡ - gfmt - = "%Y-%m-%dT%H:%M:%SZ"; - -10378 #ifde -_MSC_VER - - -10379 - gd -:: -rime -( -timeSmp -, -timeSmpSize -, -fmt -, & -timeInfo -); - -10381 - gd -:: -rime -( -timeSmp -, -timeSmpSize -, -fmt -, -timeInfo -); - -10383  - gd -:: -rg -( -timeSmp -); - -10388 as - cJunR܋r - : -public - -CumutiveR܋rBa - { - -10389 -public -: - -10390 -JunR܋r - -R܋rCfig - cڡ& -_cfig - ) - -10391 : -CumutiveR܋rBa - -_cfig - ), - -10392 -xml - -_cfig -. -am -() ), - -10393 -uxedExis -( 0 ), - -10394 -m_okToFa - -l - ) - -10396 - gm_p܋rPfs -. - gshouldRedeStdOut - = -ue -; - -10399 - gvtu - ~ -JunR܋r -( - gCATCH_OVERRIDE -; - -10401  - gd -:: -rg - -gDesti -() { - -10405 -vtu -  -noMchgTeCas - -d -:: -rg - cڡ& ) -CATCH_OVERRIDE - {} - -10407 -vtu -  -RunSg - -TeRunInfo - cڡ& -runInfo - ) -CATCH_OVERRIDE - { - -10408 -CumutiveR܋rBa -:: -RunSg - -runInfo - ); - -10409 - gxml -. -tEmt -( "testsuites" ); - -10412 -vtu -  -GroupSg - -GroupInfo - cڡ& -groupInfo - ) - gCATCH_OVERRIDE - { - -10413 - gsueTim -. -t -(); - -10414 - gdOutFSue -. -r -(""); - -10415 - gdEFSue -. -r -(""); - -10416 - guxedExis - = 0; - -10417 - gCumutiveR܋rBa -:: -GroupSg - -groupInfo - ); - -10420 -vtu -  -CaSg - -TeCaInfo - cڡ& -CaInfo - ) - gCATCH_OVERRIDE - { - -10421 - gm_okToFa - = -CaInfo -. -okToFa -(); - -10423 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -asiSts - ) - gCATCH_OVERRIDE - { - -10424 if - gasiSts -. - gasiResu -. -gResuTy -(= -ResuWas -:: -ThwExi - && ! -m_okToFa - ) - -10425 -uxedExis -++; - -10426  - gCumutiveR܋rBa -:: -asiEnded - -asiSts - ); - -10429 -vtu -  -CaEnded - -TeCaSts - cڡ& -CaSts - ) - gCATCH_OVERRIDE - { - -10430 - gdOutFSue - << - gCaSts -. - gdOut -; - -10431 - gdEFSue - << - gCaSts -. - gdE -; - -10432 - gCumutiveR܋rBa -:: -CaEnded - -CaSts - ); - -10435 -vtu -  -GroupEnded - -TeGroupSts - cڡ& -GroupSts - ) - gCATCH_OVERRIDE - { - -10436  - gsueTime - = -sueTim -. -gEpdSecds -(); - -10437 - gCumutiveR܋rBa -:: -GroupEnded - -GroupSts - ); - -10438 -wreGroup -* -m_Groups -. -back -(), -sueTime - ); - -10441 -vtu -  -RunEndedCumutive -( - gCATCH_OVERRIDE - { - -10442 - gxml -. -dEmt -(); - -10445  -wreGroup - -TeGroupNode - cڡ& -groupNode -,  -sueTime - ) { - -10446 - gXmlWr -:: -ScedEmt - -e - = -xml -. -scedEmt -( "testsuite" ); - -10447 -TeGroupSts - cڡ& - gs - = -groupNode -. -vue -; - -10448 - gxml -. -wreAribu -"me", -s -. -groupInfo -. -me - ); - -10449 - gxml -. -wreAribu -"rs", -uxedExis - ); - -10450 - gxml -. -wreAribu -"us", -s -. -tٮs -. -asis -. -ed -- -uxedExis - ); - -10451 - gxml -. -wreAribu -"s", -s -. -tٮs -. -asis -. -tٮ -() ); - -10452 - gxml -. -wreAribu -( "hostname", "tbd" ); - -10453 if - gm_cfig --> -showDutis -(= -ShowDutis -:: -Nev - ) - -10454 -xml -. -wreAribu -( "time", "" ); - -10456 - gxml -. -wreAribu -"time", -sueTime - ); - -10457 - gxml -. -wreAribu -"timeamp", -gCutTimeamp -() ); - -10460  - gTeGroupNode -:: -ChdNodes -:: -cڡ_ - - -10461 - - = -groupNode -. -chdn -. -beg -(), - gEnd - = groupNode.chdn. -d -(); - -10462 - g - ! -End -; - -10463 ++ - g - ) - -10464 -wreTeCa -** - - ); - -10466 - gxml -. -scedEmt -"syem-out" ). -wreText - -im - -dOutFSue -. -r -(), -l - ); - -10467 - gxml -. -scedEmt -"syem-r" ). -wreText - -im - -dEFSue -. -r -(), -l - ); - -10470  -wreTeCa - -TeCaNode - cڡ& -CaNode - ) { - -10471 -TeCaSts - cڡ& - gs - = -CaNode -. -vue -; - -10475 -as - -CaNode -. -chdn -. -size -() == 1 ); - -10476 -SeiNode - cڡ& - groSei - = * -CaNode -. -chdn -. -t -(); - -10478 - gd -:: -rg - -assName - = -s -. -Info -.className; - -10480 if - gassName -. -emy -() ) { - -10481 if - groSei -. - gchdSeis -. -emy -() ) - -10482 - gassName - = "global"; - -10484 -wreSei - -assName -, "", -roSei - ); - -10487  -wreSei - -d -:: -rg - cڡ& -assName -, - -10488 -d -:: -rg - cڡ& -roName -, - -10489 -SeiNode - cڡ& -iNode - ) { - -10490 - gd -:: -rg - -me - = -im - -iNode -. -s -. -iInfo -.name ); - -10491 if! - groName -. -emy -() ) - -10492 - gme - = -roName - + '/' + -me -; - -10494 if! - giNode -. - gasis -. -emy -() || - -10495 ! - giNode -. - gdOut -. -emy -() || - -10496 ! - giNode -. - gdE -. -emy -() ) { - -10497 - gXmlWr -:: -ScedEmt - -e - = -xml -. -scedEmt -( "testcase" ); - -10498 if - gassName -. -emy -() ) { - -10499 - gxml -. -wreAribu -"asame", -me - ); - -10500 - gxml -. -wreAribu -( "name", "root" ); - -10503 - gxml -. -wreAribu -"asame", -assName - ); - -10504 - gxml -. -wreAribu -"me", -me - ); - -10506 - gxml -. -wreAribu -"time", -Cch -:: -toSg - -iNode -. -s -. -dutiInSecds - ) ); - -10508 -wreAsis - -iNode - ); - -10510 if! - giNode -. - gdOut -. -emy -() ) - -10511 - gxml -. -scedEmt -"syem-out" ). -wreText - -im - -iNode -. -dOut - ), -l - ); - -10512 if! - giNode -. - gdE -. -emy -() ) - -10513 - gxml -. -scedEmt -"syem-r" ). -wreText - -im - -iNode -. -dE - ), -l - ); - -10515  - gSeiNode -:: -ChdSeis -:: -cڡ_ - - -10516 - - = -iNode -. -chdSeis -. -beg -(), - -10517 - gEnd - = -iNode -. -chdSeis -. -d -(); - -10518 - g - ! -End -; - -10519 ++ - g - ) - -10520 if - gassName -. -emy -() ) - -10521 -wreSei - -me -, "", ** - - ); - -10523 -wreSei - -assName -, -me -, ** - - ); - -10526  -wreAsis - -SeiNode - cڡ& -iNode - ) { - -10527  - gSeiNode -:: -Asis -:: -cڡ_ - - -10528 - - = -iNode -. -asis -. -beg -(), - gEnd - = seiNode.asis. -d -(); - -10529 - g - ! -End -; - -10530 ++ - g - ) - -10531 -wreAsi -* - - ); - -10533  -wreAsi - -AsiSts - cڡ& -s - ) { - -10534 -AsiResu - cڡ& - gsu - = -s -. -asiResu -; - -10535 if! - gsu -. -isOk -() ) { - -10536 - gd -:: -rg - -emtName -; - -10537  - gsu -. -gResuTy -() ) { - -10538  - gResuWas -:: -ThwExi -: - -10539  -ResuWas -:: -FECdi -: - -10540 -emtName - = "error"; - -10542  - gResuWas -:: -ExicFau -: - -10543 -emtName - = "failure"; - -10545  - gResuWas -:: -ExessiFaed -: - -10546 -emtName - = "failure"; - -10548  - gResuWas -:: -DidThrowExi -: - -10549 -emtName - = "failure"; - -10553  - gResuWas -:: -Info -: - -10554  -ResuWas -:: -Wng -: - -10555  -ResuWas -:: -Ok -: - -10556  -ResuWas -:: -Unknown -: - -10557  -ResuWas -:: -FauB -: - -10558  -ResuWas -:: -Exi -: - -10559 -emtName - = "internalError"; - -10563 - gXmlWr -:: -ScedEmt - -e - = -xml -. -scedEmt - -emtName - ); - -10565 - gxml -. -wreAribu -"mesge", -su -. -gExndedExessi -() ); - -10566 - gxml -. -wreAribu -"ty", -su -. -gTeMaoName -() ); - -10568 - gd -:: -orgam - -oss -; - -10569 if! - gsu -. -gMesge -(). -emy -() ) - -10570 - goss - << - gsu -. -gMesge -() << '\n'; - -10571  - gd -:: -ve -< -MesgeInfo ->:: -cڡ_ - - -10572 - - = -s -. -foMesges -. -beg -(), - -10573 - gEnd - = -s -. -foMesges -. -d -(); - -10574 - g - ! -End -; - -10575 ++ - g - ) - -10576 if - g --> - gty - = -ResuWas -:: -Info - ) - -10577 -oss - << - --> -mesge - << '\n'; - -10579 - goss - << " " << - gsu -. -gSourInfo -(); - -10580 - gxml -. -wreText - -oss -. -r -(), -l - ); - -10584 -XmlWr - - gxml -; - -10585 -Tim - - gsueTim -; - -10586 - gd -:: -orgam - -dOutFSue -; - -10587 - gd -:: -orgam - -dEFSue -; - -10588  - guxedExis -; - -10589 -bo - - gm_okToFa -; - -10592 -INTERNAL_CATCH_REGISTER_REPORTER -"jun", -JunR܋r - ) - -10597  - #TWOBLUECUBES_CATCH_REPORTER_CONSOLE_HPP_INCLUDED - - - ) - -10599  - ~ - -10600  - ~ - -10602 -mea - - gCch - { - -10604  - gCseR܋r - : -SmgR܋rBa - { - -10605 -CseR܋r - -R܋rCfig - cڡ& -_cfig - ) - -10606 : -SmgR܋rBa - -_cfig - ), - -10607 -m_hdPrd - -l - ) - -10610 - gvtu - ~ -CseR܋r -( - gCATCH_OVERRIDE -; - -10611  - gd -:: -rg - -gDesti -() { - -10615 -vtu -  -noMchgTeCas - -d -:: -rg - cڡ& -ec - ) -CATCH_OVERRIDE - { - -10616 -am - << "N؋ camched '" << -ec - << '\'' << -d -:: -dl -; - -10619 -vtu -  -asiSg - -AsiInfo - cڡ& ) - gCATCH_OVERRIDE - { - -10622 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -_asiSts - ) - gCATCH_OVERRIDE - { - -10623 -AsiResu - cڡ& - gsu - = -_asiSts -. -asiResu -; - -10625 -bo - - gudeResus - = -m_cfig --> -udeSucssfulResus -(|| ! -su -. -isOk -(); - -10628 if! - gudeResus - && - gsu -. -gResuTy -(! -ResuWas -:: -Wng - ) - -10629  -l -; - -10631 -zyPrt -(); - -10633 -AsiPrr - -r - -am -, -_asiSts -, -udeResus - ); - -10634 - gr -. -t -(); - -10635 - gam - << - gd -:: -dl -; - -10636  - gue -; - -10639 -vtu -  -iSg - -SeiInfo - cڡ& -_iInfo - ) - gCATCH_OVERRIDE - { - -10640 - gm_hdPrd - = -l -; - -10641 - gSmgR܋rBa -:: -iSg - -_iInfo - ); - -10643 -vtu -  -iEnded - -SeiSts - cڡ& -_iSts - ) - gCATCH_OVERRIDE - { - -10644 if - g_iSts -. - gmissgAsis - ) { - -10645 -zyPrt -(); - -10646 -Cour - -cour -Cour:: -ResuE - ); - -10647 if - gm_iSck -. -size -() > 1 ) - -10648 - gam - << "\nNossertions in section"; - -10650 - gam - << "\nNossertions inest case"; - -10651 - gam - << " '" << - g_iSts -. - giInfo -. - gme - << "'\n" << - gd -:: -dl -; - -10653 if - gm_cfig --> -showDutis -(= -ShowDutis -:: -Always - ) { - -10654 -am - << -gFmdDuti -( -_iSts -. -dutiInSecds -<< " s: " << _iSts. -iInfo -. -me - << -d -:: -dl -; - -10656 if - gm_hdPrd - ) { - -10657 - gm_hdPrd - = -l -; - -10659 - gSmgR܋rBa -:: -iEnded - -_iSts - ); - -10662 -vtu -  -CaEnded - -TeCaSts - cڡ& -_CaSts - ) - gCATCH_OVERRIDE - { - -10663 - gSmgR܋rBa -:: -CaEnded - -_CaSts - ); - -10664 - gm_hdPrd - = -l -; - -10666 -vtu -  -GroupEnded - -TeGroupSts - cڡ& -_GroupSts - ) - gCATCH_OVERRIDE - { - -10667 if - gcutGroupInfo -. - gud - ) { - -10668 -tSummyDivid -(); - -10669 - gam - << "Summy f grou'" << - g_GroupSts -. - ggroupInfo -. - gme - << "':\n"; - -10670 -tTٮs - -_GroupSts -. -tٮs - ); - -10671 - gam - << '\n' << - gd -:: -dl -; - -10673 - gSmgR܋rBa -:: -GroupEnded - -_GroupSts - ); - -10675 -vtu -  -RunEnded - -TeRunSts - cڡ& -_RunSts - ) - gCATCH_OVERRIDE - { - -10676 -tTٮsDivid - -_RunSts -. -tٮs - ); - -10677 -tTٮs - -_RunSts -. -tٮs - ); - -10678 - gam - << - gd -:: -dl -; - -10679 - gSmgR܋rBa -:: -RunEnded - -_RunSts - ); - -10682 - give -: - -10684 as - cAsiPrr - { - -10685  -ݔ - -AsiPrr - const& ); - -10686 - gpublic -: - -10687 -AsiPrr - -d -:: -oam -& -_am -, -AsiSts - cڡ& -_s -, -bo - -_tInfoMesges - ) - -10688 : -am - -_am - ), - -10689 -s - -_s - ), - -10690 -su - -_s -. -asiResu - ), - -10691 -cour - -Cour -:: -Ne - ), - -10692 -mesge - -su -. -gMesge -() ), - -10693 -mesges - -_s -. -foMesges - ), - -10694 -tInfoMesges - -_tInfoMesges - ) - -10696  - gsu -. -gResuTy -() ) { - -10697  - gResuWas -:: -Ok -: - -10698 -cour - = -Cour -:: -Sucss -; - -10699 - gssOrFa - = "PASSED"; - -10701 if - g_s -. - gfoMesges -. -size -() == 1 ) - -10702 -mesgeLab - = "with message"; - -10703 if - g_s -. - gfoMesges -. -size -() > 1 ) - -10704 - gmesgeLab - = "with messages"; - -10706  - gResuWas -:: -ExessiFaed -: - -10707 if -su -. -isOk -() ) { - -10708 -cour - = -Cour -:: -Sucss -; - -10709 - gssOrFa - = "FAILED - but was ok"; - -10712 - gcour - = -Cour -:: -E -; - -10713 - gssOrFa - = "FAILED"; - -10715 if - g_s -. - gfoMesges -. -size -() == 1 ) - -10716 -mesgeLab - = "with message"; - -10717 if - g_s -. - gfoMesges -. -size -() > 1 ) - -10718 - gmesgeLab - = "with messages"; - -10720  - gResuWas -:: -ThwExi -: - -10721 -cour - = -Cour -:: -E -; - -10722 - gssOrFa - = "FAILED"; - -10723 - gmesgeLab - = "dueo unexpectedxception with "; - -10724 i( - g_s -. - gfoMesges -. -size -() == 1) - -10725 -mesgeLab - += "message"; - -10726 i( - g_s -. - gfoMesges -. -size -() > 1) - -10727 - gmesgeLab - += "messages"; - -10729  - gResuWas -:: -FECdi -: - -10730 -cour - = -Cour -:: -E -; - -10731 - gssOrFa - = "FAILED"; - -10732 - gmesgeLab - = "dueo fatalrror condition"; - -10734  - gResuWas -:: -DidThrowExi -: - -10735 -cour - = -Cour -:: -E -; - -10736 - gssOrFa - = "FAILED"; - -10737 - gmesgeLab - = "becauseoxception washrown where one wasxpected"; - -10739  - gResuWas -:: -Info -: - -10740 -mesgeLab - = "info"; - -10742  - gResuWas -:: -Wng -: - -10743 -mesgeLab - = "warning"; - -10745  - gResuWas -:: -ExicFau -: - -10746 -ssOrFa - = "FAILED"; - -10747 - gcour - = -Cour -:: -E -; - -10748 if - g_s -. - gfoMesges -. -size -() == 1 ) - -10749 -mesgeLab - = "explicitly with message"; - -10750 if - g_s -. - gfoMesges -. -size -() > 1 ) - -10751 - gmesgeLab - = "explicitly with messages"; - -10754  - gResuWas -:: -Unknown -: - -10755  -ResuWas -:: -FauB -: - -10756  -ResuWas -:: -Exi -: - -10757 -ssOrFa - = "** internalrror **"; - -10758 - gcour - = -Cour -:: -E -; - -10763  -t -() const { - -10764 -tSourInfo -(); - -10765 if - gs -. - gtٮs -. - gasis -. -tٮ -() > 0 ) { - -10766 if - gsu -. -isOk -() ) - -10767 - gam - << '\n'; - -10768 -tResuTy -(); - -10769 -tOrigExessi -(); - -10770 -tRecڡruedExessi -(); - -10773 - gam - << '\n'; - -10775 -tMesge -(); - -10778 - give -: - -10779  -tResuTy -() const { - -10780 if! -ssOrFa -. -emy -() ) { - -10781 -Cour - -courGud - -cour - ); - -10782 - gam - << - gssOrFa - << ":\n"; - -10785  -tOrigExessi -() const { - -10786 if - gsu -. -hasExessi -() ) { - -10787 -Cour - -courGud -Cour:: -OrigExessi - ); - -10788 - gam - << " "; - -10789 - gam - << - gsu -. -gExessiInMao -(); - -10790 - gam - << '\n'; - -10793  -tRecڡruedExessi -() const { - -10794 if - gsu -. -hasExndedExessi -() ) { - -10795 - gam - << "withxpansion:\n"; - -10796 -Cour - -courGud -Cour:: -RecڡruedExessi - ); - -10797 - gam - << -Text - -su -. -gExndedExessi -(), -TextAribus -(). -tIndt -(2) ) << '\n'; - -10800  -tMesge -() const { - -10801 if! - gmesgeLab -. -emy -() ) - -10802 - gam - << - gmesgeLab - << ':' << '\n'; - -10803  - gd -:: -ve -< -MesgeInfo ->:: -cڡ_ - - - = -mesges -. -beg -(), - gEnd - = mesges. -d -(); - -10804 - g - ! -End -; - -10805 ++ - g - ) { - -10807 if - gtInfoMesges - || - g --> - gty - ! -ResuWas -:: -Info - ) - -10808 -am - << -Text - - --> -mesge -, -TextAribus -(). -tIndt -(2) ) << '\n'; - -10811  -tSourInfo -() const { - -10812 -Cour - -courGud -Cour:: -FeName - ); - -10813 - gam - << - gsu -. -gSourInfo -() << ": "; - -10816 - gd -:: -oam -& -am -; - -10817 -AsiSts - cڡ& - gs -; - -10818 -AsiResu - cڡ& - gsu -; - -10819 - gCour -:: -Code - -cour -; - -10820 - gd -:: -rg - -ssOrFa -; - -10821 - gd -:: -rg - -mesgeLab -; - -10822 - gd -:: -rg - -mesge -; - -10823 - gd -:: -ve -< -MesgeInfo -> -mesges -; - -10824 -bo - - gtInfoMesges -; - -10827  -zyPrt -() { - -10829 if! - gcutTeRunInfo -. - gud - ) - -10830 -zyPrtRunInfo -(); - -10831 if! - gcutGroupInfo -. - gud - ) - -10832 -zyPrtGroupInfo -(); - -10834 if! - gm_hdPrd - ) { - -10835 -tTeCaAndSeiHd -(); - -10836 - gm_hdPrd - = -ue -; - -10839  -zyPrtRunInfo -() { - -10840 - gam - << '\n' << - ggLeOfChs -<'~'>() << '\n'; - -10841 -Cour - -cour -Cour:: -SecdyText - ); - -10842 - gam - << - gcutTeRunInfo --> - gme - - -10843 << " iCch v" << -libryVsi -() << " hostpplication.\n" - -10846 if - gm_cfig --> -gSd -() != 0 ) - -10847 -am - << "Rdomsededo: " << -m_cfig --> -gSd -() << "\n\n"; - -10849 - gcutTeRunInfo -. - gud - = -ue -; - -10851  -zyPrtGroupInfo -() { - -10852 if! - gcutGroupInfo --> - gme -. -emy -(&& cutGroupInfo-> - ggroupsCous - > 1 ) { - -10853 -tClodHd -"Group: " + -cutGroupInfo --> -me - ); - -10854 - gcutGroupInfo -. - gud - = -ue -; - -10857  -tTeCaAndSeiHd -() { - -10858 -as -! -m_iSck -. -emy -() ); - -10859 -tOnHd - -cutTeCaInfo --> -me - ); - -10861 if - gm_iSck -. -size -() > 1 ) { - -10862 -Cour - -courGud -Cour:: -Hds - ); - -10864 - gd -:: -ve -< -SeiInfo ->:: -cڡ_ - - -10865 - - = -m_iSck -. -beg -()+1, - -10866 - gEnd - = -m_iSck -. -d -(); - -10867  ; - g - ! -End -; ++it ) - -10868 -tHdSg - - --> -me -, 2 ); - -10871 -SourLeInfo - - gleInfo - = -m_iSck -. -back -(). -leInfo -; - -10873 if! - gleInfo -. -emy -() ){ - -10874 - gam - << - ggLeOfChs -<'-'>() << '\n'; - -10875 -Cour - -courGud -Cour:: -FeName - ); - -10876 - gam - << - gleInfo - << '\n'; - -10878 - gam - << - ggLeOfChs -<'.'>(<< '\n' << - gd -:: -dl -; - -10881  -tClodHd - -d -:: -rg - cڡ& -_me - ) { - -10882 -tOnHd - -_me - ); - -10883 - gam - << - ggLeOfChs -<'.'>() << '\n'; - -10885  -tOnHd - -d -:: -rg - cڡ& -_me - ) { - -10886 -am - << -gLeOfChs -<'-'>() << '\n'; - -10888 -Cour - -courGud -Cour:: -Hds - ); - -10889 -tHdSg - -_me - ); - -10895  -tHdSg - -d -:: -rg - cڡ& -_rg -, std:: -size_t - -dt - = 0 ) { - -10896 -d -:: -size_t - -i - = -_rg -. -fd -( ": " ); - -10897 if - gi - ! -d -:: -rg -:: -os - ) - -10898 -i -+=2; - -10900 - gi - = 0; - -10901 - gam - << -Text - -_rg -, -TextAribus -() - -10902 . -tIndt - -dt -+ -i -) - -10903 . -tInlIndt - -dt - ) ) << '\n'; - -10906  - sSummyCumn - { - -10908 -SummyCumn - -d -:: -rg - cڡ& -_b -, -Cour -:: -Code - -_cour - ) - -10909 : -b - -_b - ), - -10910 -cour - -_cour - ) - -10912 -SummyCumn - -addRow - -d -:: -size_t - -cou - ) { - -10913 -d -:: -orgam - -oss -; - -10914 - goss - << - gcou -; - -10915 - gd -:: -rg - -row - = -oss -. -r -(); - -10916  - gd -:: -ve -< -d -:: -rg ->:: - - - - = -rows -. -beg -(); - g - !rows. -d -(); ++it ) { - -10917  - g --> -size -(< - grow -.size() ) - -10918 * - g - = ' ' + * - -; - -10919  - g --> -size -(> - grow -.size() ) - -10920 - grow - = ' ' + -row -; - -10922 - grows -. -push_back - -row - ); - -10923  * - gthis -; - -10926 - gd -:: -rg - -b -; - -10927 - gCour -:: -Code - -cour -; - -10928 - gd -:: -ve -< -d -:: -rg -> -rows -; - -10932  -tTٮs - -Tٮs - cڡ& -tٮs - ) { - -10933 if - gtٮs -. - gCas -. -tٮ -() == 0 ) { - -10934 -am - << -Cour -Cour:: -Wng - ) << "Noestsan\n"; - -10936 if - gtٮs -. - gasis -. -tٮ -(> 0 &&ٮs. - gCas -. -lPasd -() ) { - -10937 - gam - << -Cour -Cour:: -ResuSucss - ) << "Allestsassed"; - -10938 - gam - << " (" - -10939 << -uli - -tٮs -. -asis -. -sd -, "assertion" ) << " in " - -10940 << -uli - -tٮs -. -Cas -. -sd -, "test case" ) << ')' - -10945 - gd -:: -ve -< -SummyCumn -> -cumns -; - -10946 - gcumns -. -push_back - -SummyCumn -"", -Cour -:: -Ne - ) - -10947 . -addRow - -tٮs -. -Cas -. -tٮ -() ) - -10948 . -addRow - -tٮs -. -asis -. -tٮ -() ) ); - -10949 - gcumns -. -push_back - -SummyCumn -"sd", -Cour -:: -Sucss - ) - -10950 . -addRow - -tٮs -. -Cas -. -sd - ) - -10951 . -addRow - -tٮs -. -asis -. -sd - ) ); - -10952 - gcumns -. -push_back - -SummyCumn -"ed", -Cour -:: -ResuE - ) - -10953 . -addRow - -tٮs -. -Cas -. -ed - ) - -10954 . -addRow - -tٮs -. -asis -. -ed - ) ); - -10955 - gcumns -. -push_back - -SummyCumn -"edexed", -Cour -:: -ResuExedFau - ) - -10956 . -addRow - -tٮs -. -Cas -. -edButOk - ) - -10957 . -addRow - -tٮs -. -asis -. -edButOk - ) ); - -10959 -tSummyRow -" cas", -cumns -, 0 ); - -10960 -tSummyRow -"asis", -cumns -, 1 ); - -10963  -tSummyRow - -d -:: -rg - cڡ& -b -, std:: -ve -< -SummyCumn -> cڡ& -cs -, std:: -size_t - -row - ) { - -10964  -d -:: -ve -< -SummyCumn ->:: -cڡ_ - - - = -cs -. -beg -(); - g - !cs. -d -(); ++it ) { - -10965 - gd -:: -rg - -vue - = - --> -rows -[ -row -]; - -10966 if - g --> - gb -. -emy -() ) { - -10967 - gam - << - gb - << ": "; - -10968 if - gvue - != "0" ) - -10969 -am - << -vue -; - -10971 - gam - << -Cour -Cour:: -Wng - ) << "-one -"; - -10973 if - gvue - != "0" ) { - -10974 -am - << -Cour -Cour:: -LightGy - ) << " | "; - -10975 - gam - << -Cour - - --> -cour - ) - -10976 << - gvue - << ' ' << - g --> - gb -; - -10979 - gam - << '\n'; - -10982  - gd -:: -size_t - -makeRio - -d -::size_ -numb -, std::size_ -tٮ - ) { - -10983 -d -:: -size_t - -tio - = -tٮ - > 0 ? -CATCH_CONFIG_CONSOLE_WIDTH - * -numb -/otal : 0; - -10984  ( - gtio - =0 && -numb - > 0 ) ? 1 : -tio -; - -10986  - gd -:: -size_t -& -fdMax - -d -::size_t& -i -, std::size_t& -j -, std::size_t& -k - ) { - -10987 if -i - > -j - && i > -k - ) - -10988  -i -; - -10989 if - gj - > - gk - ) - -10990  - gj -; - -10992  - gk -; - -10995  -tTٮsDivid - -Tٮs - cڡ& -tٮs - ) { - -10996 if - gtٮs -. - gCas -. -tٮ -() > 0 ) { - -10997 - gd -:: -size_t - -edRio - = -makeRio - -tٮs -. -Cas -. -ed -,ٮs.Cas. -tٮ -() ); - -10998 - gd -:: -size_t - -edButOkRio - = -makeRio - -tٮs -. -Cas -. -edButOk -,ٮs.Cas. -tٮ -() ); - -10999 - gd -:: -size_t - -sdRio - = -makeRio - -tٮs -. -Cas -. -sd -,ٮs.Cas. -tٮ -() ); - -11000  - gedRio - + - gedButOkRio - + - gsdRio - < - gCATCH_CONFIG_CONSOLE_WIDTH --1 ) - -11001 -fdMax - -edRio -, -edButOkRio -, -sdRio - )++; - -11002  - gedRio - + - gedButOkRio - + - gsdRio - > - gCATCH_CONFIG_CONSOLE_WIDTH --1 ) - -11003 -fdMax - -edRio -, -edButOkRio -, -sdRio - )--; - -11005 - gam - << -Cour -Cour:: -E - ) << -d -:: -rg - -edRio -, '=' ); - -11006 - gam - << -Cour -Cour:: -ResuExedFau - ) << -d -:: -rg - -edButOkRio -, '=' ); - -11007 if - gtٮs -. - gCas -. -lPasd -() ) - -11008 - gam - << -Cour -Cour:: -ResuSucss - ) << -d -:: -rg - -sdRio -, '=' ); - -11010 - gam - << -Cour -Cour:: -Sucss - ) << -d -:: -rg - -sdRio -, '=' ); - -11013 - gam - << -Cour -Cour:: -Wng - ) << -d -:: -rg - -CATCH_CONFIG_CONSOLE_WIDTH --1, '=' ); - -11015 - gam - << '\n'; - -11017  -tSummyDivid -() { - -11018 - gam - << - ggLeOfChs -<'-'>() << '\n'; - -11021 - give -: - -11022 -bo - -m_hdPrd -; - -11025 -INTERNAL_CATCH_REGISTER_REPORTER -"cse", -CseR܋r - ) - -11030  - #TWOBLUECUBES_CATCH_REPORTER_COMPACT_HPP_INCLUDED - - - ) - -11032 -mea - - gCch - { - -11034  - gComR܋r - : -SmgR܋rBa - { - -11036 -ComR܋r - -R܋rCfig - cڡ& -_cfig - ) - -11037 : -SmgR܋rBa - -_cfig - ) - -11040 -vtu - ~ -ComR܋r -(); - -11042  - gd -:: -rg - -gDesti -() { - -11046 -vtu - -R܋rPns - -gPns -() const { - -11047 -R܋rPns - - gefs -; - -11048 - gefs -. - gshouldRedeStdOut - = -l -; - -11049  - gefs -; - -11052 -vtu -  -noMchgTeCas - -d -:: -rg - cڡ& -ec - ) { - -11053 -am - << "N؋ camched '" << -ec - << '\'' << -d -:: -dl -; - -11056 -vtu -  -asiSg - -AsiInfo - const& ) {} - -11058 -vtu - -bo - -asiEnded - -AsiSts - cڡ& -_asiSts - ) { - -11059 -AsiResu - cڡ& - gsu - = -_asiSts -. -asiResu -; - -11061 -bo - - gtInfoMesges - = -ue -; - -11064 if! - gm_cfig --> -udeSucssfulResus -(&& - gsu -. -isOk -() ) { - -11065 if - gsu -. -gResuTy -(! -ResuWas -:: -Wng - ) - -11066  -l -; - -11067 - gtInfoMesges - = -l -; - -11070 -AsiPrr - -r - -am -, -_asiSts -, -tInfoMesges - ); - -11071 - gr -. -t -(); - -11073 - gam - << - gd -:: -dl -; - -11074  - gue -; - -11077 -vtu -  -iEnded -( -SeiSts - cڡ& -_iSts - - gCATCH_OVERRIDE - { - -11078 i( - gm_cfig --> -showDutis -(= -ShowDutis -:: -Always -) { - -11079 -am - << -gFmdDuti -( -_iSts -. -dutiInSecds -<< " s: " << _iSts. -iInfo -. -me - << -d -:: -dl -; - -11083 -vtu -  -RunEnded - -TeRunSts - cڡ& -_RunSts - ) { - -11084 -tTٮs - -_RunSts -. -tٮs - ); - -11085 - gam - << '\n' << - gd -:: -dl -; - -11086 - gSmgR܋rBa -:: -RunEnded - -_RunSts - ); - -11089 - give -: - -11090 as - cAsiPrr - { - -11091  -ݔ - -AsiPrr - const& ); - -11092 - gpublic -: - -11093 -AsiPrr - -d -:: -oam -& -_am -, -AsiSts - cڡ& -_s -, -bo - -_tInfoMesges - ) - -11094 : -am - -_am - ) - -11095 , -s - -_s - ) - -11096 , -su - -_s -. -asiResu - ) - -11097 , -mesges - -_s -. -foMesges - ) - -11098 , -Mesge - -_s -. -foMesges -. -beg -() ) - -11099 , -tInfoMesges - -_tInfoMesges - ) - -11102  -t -() { - -11103 -tSourInfo -(); - -11105 - gMesge - = -mesges -. -beg -(); - -11107  - gsu -. -gResuTy -() ) { - -11108  - gResuWas -:: -Ok -: - -11109 -tResuTy - -Cour -:: -ResuSucss -, -sdSg -() ); - -11110 -tOrigExessi -(); - -11111 -tRecڡruedExessi -(); - -11112 i! - gsu -. -hasExessi -() ) - -11113 -tRemagMesges - -Cour -:: -Ne - ); - -11115 -tRemagMesges -(); - -11117  - gResuWas -:: -ExessiFaed -: - -11118 if -su -. -isOk -() ) - -11119 -tResuTy - -Cour -:: -ResuSucss -, -edSg -(+ -d -:: -rg -( " - but was ok" ) ); - -11121 -tResuTy - -Cour -:: -E -, -edSg -() ); - -11122 -tOrigExessi -(); - -11123 -tRecڡruedExessi -(); - -11124 -tRemagMesges -(); - -11126  - gResuWas -:: -ThwExi -: - -11127 -tResuTy - -Cour -:: -E -, -edSg -() ); - -11128 -tIssue -( "unexpectedxception with message:" ); - -11129 -tMesge -(); - -11130 -tExessiWas -(); - -11131 -tRemagMesges -(); - -11133  - gResuWas -:: -FECdi -: - -11134 -tResuTy - -Cour -:: -E -, -edSg -() ); - -11135 -tIssue -( "fatalrror condition with message:" ); - -11136 -tMesge -(); - -11137 -tExessiWas -(); - -11138 -tRemagMesges -(); - -11140  - gResuWas -:: -DidThrowExi -: - -11141 -tResuTy - -Cour -:: -E -, -edSg -() ); - -11142 -tIssue -( "expectedxception, gotone" ); - -11143 -tExessiWas -(); - -11144 -tRemagMesges -(); - -11146  - gResuWas -:: -Info -: - -11147 -tResuTy - -Cour -:: -Ne -, "info" ); - -11148 -tMesge -(); - -11149 -tRemagMesges -(); - -11151  - gResuWas -:: -Wng -: - -11152 -tResuTy - -Cour -:: -Ne -, "warning" ); - -11153 -tMesge -(); - -11154 -tRemagMesges -(); - -11156  - gResuWas -:: -ExicFau -: - -11157 -tResuTy - -Cour -:: -E -, -edSg -() ); - -11158 -tIssue -( "explicitly" ); - -11159 -tRemagMesges - -Cour -:: -Ne - ); - -11162  - gResuWas -:: -Unknown -: - -11163  -ResuWas -:: -FauB -: - -11164  -ResuWas -:: -Exi -: - -11165 -tResuTy - -Cour -:: -E -, "** internalrror **" ); - -11170 - give -: - -11173  -Cour -:: -Code - -dimCour -({  Cour:: -FeName -; } - -11175 #ifde -CATCH_PLATFORM_MAC - - -11176 cڡ * -edSg -() {  "FAILED"; } - -11177 cڡ * -sdSg -() {  "PASSED"; } - -11179 cڡ * -edSg -() {  "failed"; } - -11180 cڡ * -sdSg -() {  "passed"; } - -11183  -tSourInfo -() const { - -11184 -Cour - -courGud -Cour:: -FeName - ); - -11185 - gam - << - gsu -. -gSourInfo -() << ':'; - -11188  -tResuTy - -Cour -:: -Code - -cour -, -d -:: -rg - cڡ& -ssOrFa - ) const { - -11189 if! -ssOrFa -. -emy -() ) { - -11191 -Cour - -courGud - -cour - ); - -11192 - gam - << ' ' << - gssOrFa -; - -11194 - gam - << ':'; - -11198  -tIssue - -d -:: -rg - cڡ& -issue - ) const { - -11199 -am - << ' ' << -issue -; - -11202  -tExessiWas -() { - -11203 if - gsu -. -hasExessi -() ) { - -11204 - gam - << ';'; - -11206 -Cour - -cour - -dimCour -() ); - -11207 - gam - << "xpression was:"; - -11209 -tOrigExessi -(); - -11213  -tOrigExessi -() const { - -11214 if - gsu -. -hasExessi -() ) { - -11215 - gam - << ' ' << - gsu -. -gExessi -(); - -11219  -tRecڡruedExessi -() const { - -11220 if - gsu -. -hasExndedExessi -() ) { - -11222 -Cour - -cour - -dimCour -() ); - -11223 - gam - << " for: "; - -11225 - gam - << - gsu -. -gExndedExessi -(); - -11229  -tMesge -() { - -11230 i - gMesge - ! -mesges -. -d -() ) { - -11231 -am - << " '" << -Mesge --> -mesge - << '\''; - -11232 ++ - gMesge -; - -11236  -tRemagMesges - -Cour -:: -Code - -cour - = -dimCour -() ) { - -11237 i -Mesge - = -mesges -. -d -() ) - -11241 - gd -:: -ve -< -MesgeInfo ->:: -cڡ_ - -End - = -mesges -. -d -(); - -11242 cڡ - gd -:: -size_t - -N - = -ic_ -< -d -::size_t>Сd:: -di - -Mesge -, -End - ) ); - -11245 -Cour - -courGud - -cour - ); - -11246 - gam - << " wh " << -uli - -N -, "message" ) << ':'; - -11249 ; - gMesge - ! -End -; ) { - -11251 if - gtInfoMesges - || - gMesge --> - gty - ! -ResuWas -:: -Info - ) { - -11252 -am - << " '" << -Mesge --> -mesge - << '\''; - -11253 i++ - gMesge - ! -End - ) { - -11254 -Cour - -courGud - -dimCour -() ); - -11255 - gam - << "nd"; - -11261 - give -: - -11262 -d -:: -oam -& -am -; - -11263 -AsiSts - cڡ& - gs -; - -11264 -AsiResu - cڡ& - gsu -; - -11265 - gd -:: -ve -< -MesgeInfo -> -mesges -; - -11266 - gd -:: -ve -< -MesgeInfo ->:: -cڡ_ - -Mesge -; - -11267 -bo - - gtInfoMesges -; - -11277 - gd -:: -rg - -bhOrA - -d -:: -size_t - -cou - ) const { - -11278  -cou - =1 ? -d -:: -rg -() : count == 2 ? "both " : "all " ; - -11281  -tTٮs -cڡ -Tٮs -& -tٮs - ) const { - -11282 if - gtٮs -. - gCas -. -tٮ -() == 0 ) { - -11283 -am - << "Noestsan."; - -11285 if - gtٮs -. - gCas -. - ged - = -tٮs -. -Cas -. -tٮ -() ) { - -11286 -Cour - -cour -Cour:: -ResuE - ); - -11287 cڡ - gd -:: -rg - -quify_asis_ed - = - -11288 -tٮs -. -asis -. -ed - =tٮs.asis. -tٮ -() ? - -11289 -bhOrA - -tٮs -. -asis -. -ed - ) : -d -:: -rg -(); - -11290 - gam - << - -11291 "Faed " << -bhOrA - -tٮs -. -Cas -. -ed - ) - -11292 << -uli - -tٮs -. -Cas -. -ed -, "test case" ) << ", " - -11293 "ed " << - gquify_asis_ed - << - -11294 -uli - -tٮs -. -asis -. -ed -, "assertion" ) << '.'; - -11296 if - gtٮs -. - gasis -. -tٮ -() == 0 ) { - -11297 -am - << - -11298 "Pasd " << -bhOrA - -tٮs -. -Cas -. -tٮ -() ) - -11299 << -uli - -tٮs -. -Cas -. -tٮ -(), "test case" ) - -11302 if - gtٮs -. - gasis -. - ged - ) { - -11303 -Cour - -cour -Cour:: -ResuE - ); - -11304 - gam - << - -11305 "Faed " << -uli - -tٮs -. -Cas -. -ed -, "test case" ) << ", " - -11306 "ed " << -uli - -tٮs -. -asis -. -ed -, "assertion" ) << '.'; - -11309 -Cour - -cour -Cour:: -ResuSucss - ); - -11310 - gam - << - -11311 "Pasd " << -bhOrA - -tٮs -. -Cas -. -sd - ) - -11312 << -uli - -tٮs -. -Cas -. -sd -, "test case" ) << - -11313 " wh " << -uli - -tٮs -. -asis -. -sd -, "assertion" ) << '.'; - -11318 -INTERNAL_CATCH_REGISTER_REPORTER -"com", -ComR܋r - ) - -11322 -mea - - gCch - { - -11325 - gNCyab -::~ -NCyab -() {} - -11326 -IShed -::~IShared() {} - -11327 -ISm -::~ISm( -CATCH_NOEXCEPT - {} - -11328 -FeSm -::~FeSm( -CATCH_NOEXCEPT - {} - -11329 -CoutSm -::~CoutSm( -CATCH_NOEXCEPT - {} - -11330 -DebugOutSm -::~DebugOutSm( -CATCH_NOEXCEPT - {} - -11331 -SmBufBa -::~SmBufBa( -CATCH_NOEXCEPT - {} - -11332 -ICڋxt -::~IContext() {} - -11333 -IResuCtu -::~IResultCapture() {} - -11334 -ITeCa -::~ITestCase() {} - -11335 -ITeCaRegiry -::~ITestCaseRegistry() {} - -11336 -IRegiryHub -::~IRegistryHub() {} - -11337 -IMubRegiryHub -::~IMutableRegistryHub() {} - -11338 -IExiTn -::~IExceptionTranslator() {} - -11339 -IExiTnRegiry -::~IExceptionTranslatorRegistry() {} - -11340 -IR܋r -::~IReporter() {} - -11341 -IR܋rFay -::~IReporterFactory() {} - -11342 -IR܋rRegiry -::~IReporterRegistry() {} - -11343 -ISmgR܋r -::~IStreamingReporter() {} - -11344 -AsiSts -::~AssertionStats() {} - -11345 -SeiSts -::~SectionStats() {} - -11346 -TeCaSts -::~TestCaseStats() {} - -11347 -TeGroupSts -::~TestGroupStats() {} - -11348 -TeRunSts -::~TestRunStats() {} - -11349 -CumutiveR܋rBa -:: -SeiNode -::~SectionNode() {} - -11350 -CumutiveR܋rBa -::~CumulativeReporterBase() {} - -11352 -SmgR܋rBa -::~StreamingReporterBase() {} - -11353 -CseR܋r -::~ConsoleReporter() {} - -11354 -ComR܋r -::~CompactReporter() {} - -11355 -IRu” -::~IRunner() {} - -11356 -IMubCڋxt -::~IMutableContext() {} - -11357 -ICfig -::~IConfig() {} - -11358 -XmlR܋r -::~XmlReporter() {} - -11359 -JunR܋r -::~JunitReporter() {} - -11360 -TeRegiry -::~TestRegistry() {} - -11361 -FeFuniTeCa -::~FreeFunctionTestCase() {} - -11362 -IGInfo -::~IGeneratorInfo() {} - -11363 -IGsFTe -::~IGeneratorsForTest() {} - -11364 -WdrdP -::~WildcardPattern() {} - -11365 -TeSc -:: -P -::~Pattern() {} - -11366 -TeSc -:: -NameP -::~NamePattern() {} - -11367 -TeSc -:: -TagP -::~TagPattern() {} - -11368 -TeSc -:: -ExudedP -::~ExcludedPattern() {} - -11369 -Mchs -:: -Im -:: -MchUydBa -::~MatcherUntypedBase() {} - -11371  -Cfig -:: -dummy -() {} - -11373 -mea - -TeCaTckg - { - -11374 -ITck -::~ITracker() {} - -11375 -TckBa -::~TrackerBase() {} - -11376 -SeiTck -::~SectionTracker() {} - -11377 -IndexTck -::~IndexTracker() {} - -11381 #ifde -__g__ - - -11382 #agm -g - -dgnoic - -p - - -11387 #ifde -CATCH_CONFIG_MAIN - - -11389  - #TWOBLUECUBES_CATCH_DEFAULT_MAIN_HPP_INCLUDED - - - ) - -11391 #ide -__OBJC__ - - -11393 #i -defed -( -WIN32 -&& defed( -_UNICODE -&& !defed( -DO_NOT_USE_WMAIN -) - -11395 "C"  - $wma - ( -gc -, -wch_t - * -gv -[], wchar_t * []) { - -11398  - $ma - ( -gc -, * -gv -[]) { - -11401  -su - = -Cch -:: - `Sessi -(). - `run - -gc -, -gv - ); - -11402  ( -su - < 0xff ?esult : 0xff ); - -11403 - } -} - -11408  - $ma - ( -gc -, * cڡ -gv -[]) { - -11409 #i! -CATCH_ARC_ENABLED - - -11410 -NSAutܖPo - * -po - = [[NSAutܖPo -loc -] - -]; - -11413 -Cch -:: - `giTeMhods -(); - -11414  -su - = -Cch -:: - `Sessi -(). - `run - -gc -, (* cڡ*) -gv - ); - -11416 #i! -CATCH_ARC_ENABLED - - -11417 [ -po - -d -]; - -11420  ( -su - < 0xff ?esult : 0xff ); - -11421 - } -} - -11427 #ifde -CLARA_CONFIG_MAIN_NOT_DEFINED - - -11428 #unde -CLARA_CONFIG_MAIN - - -11434 #ifde -CATCH_CONFIG_PREFIX_ALL - - -11436 #i -defed -( -CATCH_CONFIG_FAST_COMPILE -) - -11437  - #CATCH_REQUIRE - -ex - ) - `INTERNAL_CATCH_TEST_NO_TRY -"CATCH_REQUIRE", -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11438  - #CATCH_REQUIRE_FALSE - -ex - ) - `INTERNAL_CATCH_TEST_NO_TRY -"CATCH_REQUIRE_FALSE", -Cch -:: -ResuDiosi -:: -Nm - | Cch::ResuDiosi:: -FTe -,x ) - - ) - -11440  - #CATCH_REQUIRE - -ex - ) - `INTERNAL_CATCH_TEST -"CATCH_REQUIRE", -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11441  - #CATCH_REQUIRE_FALSE - -ex - ) - `INTERNAL_CATCH_TEST -"CATCH_REQUIRE_FALSE", -Cch -:: -ResuDiosi -:: -Nm - | Cch::ResuDiosi:: -FTe -,x ) - - ) - -11444  - #CATCH_REQUIRE_THROWS - -ex - ) - `INTERNAL_CATCH_THROWS -"CATCH_REQUIRE_THROWS", -Cch -:: -ResuDiosi -:: -Nm -, "",x ) - - ) - -11445  - #CATCH_REQUIRE_THROWS_AS - -ex -, -exiTy - ) - `INTERNAL_CATCH_THROWS_AS -"CATCH_REQUIRE_THROWS_AS",xiTy, -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11446  - #CATCH_REQUIRE_THROWS_WITH - -ex -, -mch - ) - `INTERNAL_CATCH_THROWS -"CATCH_REQUIRE_THROWS_WITH", -Cch -:: -ResuDiosi -:: -Nm -, mch,x ) - - ) - -11447  - #CATCH_REQUIRE_NOTHROW - -ex - ) - `INTERNAL_CATCH_NO_THROW -"CATCH_REQUIRE_NOTHROW", -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11449  - #CATCH_CHECK - -ex - ) - `INTERNAL_CATCH_TEST -"CATCH_CHECK", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11450  - #CATCH_CHECK_FALSE - -ex - ) - `INTERNAL_CATCH_TEST -"CATCH_CHECK_FALSE", -Cch -:: -ResuDiosi -:: -CtueOnFau - | Cch::ResuDiosi:: -FTe -,x ) - - ) - -11451  - #CATCH_CHECKED_IF - -ex - ) - `INTERNAL_CATCH_IF -"CATCH_CHECKED_IF", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11452  - #CATCH_CHECKED_ELSE - -ex - ) - `INTERNAL_CATCH_ELSE -"CATCH_CHECKED_ELSE", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11453  - #CATCH_CHECK_NOFAIL - -ex - ) - `INTERNAL_CATCH_TEST -"CATCH_CHECK_NOFAIL", -Cch -:: -ResuDiosi -:: -CtueOnFau - | Cch::ResuDiosi:: -SussFa -,x ) - - ) - -11455  - #CATCH_CHECK_THROWS - -ex - ) - `INTERNAL_CATCH_THROWS -"CATCH_CHECK_THROWS", -Cch -:: -ResuDiosi -:: -CtueOnFau -, "",x ) - - ) - -11456  - #CATCH_CHECK_THROWS_AS - -ex -, -exiTy - ) - `INTERNAL_CATCH_THROWS_AS -"CATCH_CHECK_THROWS_AS",xiTy, -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11457  - #CATCH_CHECK_THROWS_WITH - -ex -, -mch - ) - `INTERNAL_CATCH_THROWS -"CATCH_CHECK_THROWS_WITH", -Cch -:: -ResuDiosi -:: -CtueOnFau -, mch,x ) - - ) - -11458  - #CATCH_CHECK_NOTHROW - -ex - ) - `INTERNAL_CATCH_NO_THROW -"CATCH_CHECK_NOTHROW", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11460  - #CATCH_CHECK_THAT - -g -, -mch - ) - `INTERNAL_CHECK_THAT -"CATCH_CHECK_THAT", mch, -Cch -:: -ResuDiosi -:: -CtueOnFau -,rg ) - - ) - -11462 #i -defed -( -CATCH_CONFIG_FAST_COMPILE -) - -11463  - #CATCH_REQUIRE_THAT - -g -, -mch - ) - `INTERNAL_CHECK_THAT_NO_TRY -"CATCH_REQUIRE_THAT", mch, -Cch -:: -ResuDiosi -:: -Nm -,rg ) - - ) - -11465  - #CATCH_REQUIRE_THAT - -g -, -mch - ) - `INTERNAL_CHECK_THAT -"CATCH_REQUIRE_THAT", mch, -Cch -:: -ResuDiosi -:: -Nm -,rg ) - - ) - -11468  - #CATCH_INFO - -msg - ) - `INTERNAL_CATCH_INFO -"CATCH_INFO", msg ) - - ) - -11469  - #CATCH_WARN - -msg - ) - `INTERNAL_CATCH_MSG -"CATCH_WARN", -Cch -:: -ResuWas -:: -Wng -, Cch:: -ResuDiosi -:: -CtueOnFau -, msg ) - - ) - -11470  - #CATCH_SCOPED_INFO - -msg - ) - `INTERNAL_CATCH_INFO -"CATCH_INFO", msg ) - - ) - -11471  - #CATCH_CAPTURE - -msg - ) - `INTERNAL_CATCH_INFO -"CATCH_CAPTURE", #msg " :" << -Cch -:: - `toSg -(msg) - - ) - -11472  - #CATCH_SCOPED_CAPTURE - -msg - ) - `INTERNAL_CATCH_INFO -"CATCH_CAPTURE", #msg " :" << -Cch -:: - `toSg -(msg) - - ) - -11474 #ifde -CATCH_CONFIG_VARIADIC_MACROS - - -11475  - #CATCH_TEST_CASE -... ) - `INTERNAL_CATCH_TESTCASE - -__VA_ARGS__ - ) - - ) - -11476  - #CATCH_TEST_CASE_METHOD - -assName -, ... ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName, -__VA_ARGS__ - ) - - ) - -11477  - #CATCH_METHOD_AS_TEST_CASE - -mhod -, ... ) - `INTERNAL_CATCH_METHOD_AS_TEST_CASE -mhod, -__VA_ARGS__ - ) - - ) - -11478  - #CATCH_REGISTER_TEST_CASE - -Funi -, ... ) - `INTERNAL_CATCH_REGISTER_TESTCASE -Funi, -__VA_ARGS__ - ) - - ) - -11479  - #CATCH_SECTION -... ) - `INTERNAL_CATCH_SECTION - -__VA_ARGS__ - ) - - ) - -11480  - #CATCH_FAIL -... ) - `INTERNAL_CATCH_MSG -"CATCH_FAIL", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -Nm -, -__VA_ARGS__ - ) - - ) - -11481  - #CATCH_FAIL_CHECK -... ) - `INTERNAL_CATCH_MSG -"CATCH_FAIL_CHECK", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -CtueOnFau -, -__VA_ARGS__ - ) - - ) - -11482  - #CATCH_SUCCEED -... ) - `INTERNAL_CATCH_MSG -"CATCH_SUCCEED", -Cch -:: -ResuWas -:: -Ok -, Cch:: -ResuDiosi -:: -CtueOnFau -, -__VA_ARGS__ - ) - - ) - -11484  - #CATCH_TEST_CASE - -me -, -desti - ) - `INTERNAL_CATCH_TESTCASE -me, desti ) - - ) - -11485  - #CATCH_TEST_CASE_METHOD - -assName -, -me -, -desti - ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName,ame, desti ) - - ) - -11486  - #CATCH_METHOD_AS_TEST_CASE - -mhod -, -me -, -desti - ) - `INTERNAL_CATCH_METHOD_AS_TEST_CASE -mhod,ame, desti ) - - ) - -11487  - #CATCH_REGISTER_TEST_CASE - -funi -, -me -, -desti - ) - `INTERNAL_CATCH_REGISTER_TESTCASE -funi,ame, desti ) - - ) - -11488  - #CATCH_SECTION - -me -, -desti - ) - `INTERNAL_CATCH_SECTION -me, desti ) - - ) - -11489  - #CATCH_FAIL - -msg - ) - `INTERNAL_CATCH_MSG -"CATCH_FAIL", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -Nm -, msg ) - - ) - -11490  - #CATCH_FAIL_CHECK - -msg - ) - `INTERNAL_CATCH_MSG -"CATCH_FAIL_CHECK", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -CtueOnFau -, msg ) - - ) - -11491  - #CATCH_SUCCEED - -msg - ) - `INTERNAL_CATCH_MSG -"CATCH_SUCCEED", -Cch -:: -ResuWas -:: -Ok -, Cch:: -ResuDiosi -:: -CtueOnFau -, msg ) - - ) - -11493  - #CATCH_ANON_TEST_CASE -( - `INTERNAL_CATCH_TESTCASE -"", "" ) - - ) - -11495  - #CATCH_REGISTER_REPORTER - -me -, -p܋rTy - ) - `INTERNAL_CATCH_REGISTER_REPORTER -me,܋rTy ) - - ) - -11496  - #CATCH_REGISTER_LEGACY_REPORTER - -me -, -p܋rTy - ) - `INTERNAL_CATCH_REGISTER_LEGACY_REPORTER -me,܋rTy ) - - ) - -11498  - #CATCH_GENERATE - -ex - - `INTERNAL_CATCH_GENERATE -ex ) - - ) - -11501 #ifde -CATCH_CONFIG_VARIADIC_MACROS - - -11502  - #CATCH_SCENARIO -... ) - `CATCH_TEST_CASE -"Srio: " -__VA_ARGS__ - ) - - ) - -11503  - #CATCH_SCENARIO_METHOD - -assName -, ... ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName, "Srio: " -__VA_ARGS__ - ) - - ) - -11505  - #CATCH_SCENARIO - -me -, -gs - ) - `CATCH_TEST_CASE -"Srio: "ame,ag) - - ) - -11506  - #CATCH_SCENARIO_METHOD - -assName -, -me -, -gs - ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName, "Srio: "ame,ag) - - ) - -11508  - #CATCH_GIVEN - -desc - ) - `CATCH_SECTION - -d -:: - `rg -"Giv: "+ desc, "" ) - - ) - -11509  - #CATCH_WHEN - -desc - ) - `CATCH_SECTION - -d -:: - `rg -" Wh: "+ desc, "" ) - - ) - -11510  - #CATCH_AND_WHEN - -desc - ) - `CATCH_SECTION - -d -:: - `rg -" And: "+ desc, "" ) - - ) - -11511  - #CATCH_THEN - -desc - ) - `CATCH_SECTION - -d -:: - `rg -" Th: "+ desc, "" ) - - ) - -11512  - #CATCH_AND_THEN - -desc - ) - `CATCH_SECTION - -d -:: - `rg -" And: "+ desc, "" ) - - ) - -11517 #i -defed -( -CATCH_CONFIG_FAST_COMPILE -) - -11518  - #REQUIRE - -ex - ) - `INTERNAL_CATCH_TEST_NO_TRY -"REQUIRE", -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11519  - #REQUIRE_FALSE - -ex - ) - `INTERNAL_CATCH_TEST_NO_TRY -"REQUIRE_FALSE", -Cch -:: -ResuDiosi -:: -Nm - | Cch::ResuDiosi:: -FTe -,x ) - - ) - -11522  - #REQUIRE - -ex - ) - `INTERNAL_CATCH_TEST -"REQUIRE", -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11523  - #REQUIRE_FALSE - -ex - ) - `INTERNAL_CATCH_TEST -"REQUIRE_FALSE", -Cch -:: -ResuDiosi -:: -Nm - | Cch::ResuDiosi:: -FTe -,x ) - - ) - -11526  - #REQUIRE_THROWS - -ex - ) - `INTERNAL_CATCH_THROWS -"REQUIRE_THROWS", -Cch -:: -ResuDiosi -:: -Nm -, "",x ) - - ) - -11527  - #REQUIRE_THROWS_AS - -ex -, -exiTy - ) - `INTERNAL_CATCH_THROWS_AS -"REQUIRE_THROWS_AS",xiTy, -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11528  - #REQUIRE_THROWS_WITH - -ex -, -mch - ) - `INTERNAL_CATCH_THROWS -"REQUIRE_THROWS_WITH", -Cch -:: -ResuDiosi -:: -Nm -, mch,x ) - - ) - -11529  - #REQUIRE_NOTHROW - -ex - ) - `INTERNAL_CATCH_NO_THROW -"REQUIRE_NOTHROW", -Cch -:: -ResuDiosi -:: -Nm -,x ) - - ) - -11531  - #CHECK - -ex - ) - `INTERNAL_CATCH_TEST -"CHECK", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11532  - #CHECK_FALSE - -ex - ) - `INTERNAL_CATCH_TEST -"CHECK_FALSE", -Cch -:: -ResuDiosi -:: -CtueOnFau - | Cch::ResuDiosi:: -FTe -,x ) - - ) - -11533  - #CHECKED_IF - -ex - ) - `INTERNAL_CATCH_IF -"CHECKED_IF", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11534  - #CHECKED_ELSE - -ex - ) - `INTERNAL_CATCH_ELSE -"CHECKED_ELSE", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11535  - #CHECK_NOFAIL - -ex - ) - `INTERNAL_CATCH_TEST -"CHECK_NOFAIL", -Cch -:: -ResuDiosi -:: -CtueOnFau - | Cch::ResuDiosi:: -SussFa -,x ) - - ) - -11537  - #CHECK_THROWS - -ex - ) - `INTERNAL_CATCH_THROWS -"CHECK_THROWS", -Cch -:: -ResuDiosi -:: -CtueOnFau -, "",x ) - - ) - -11538  - #CHECK_THROWS_AS - -ex -, -exiTy - ) - `INTERNAL_CATCH_THROWS_AS -"CHECK_THROWS_AS",xiTy, -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11539  - #CHECK_THROWS_WITH - -ex -, -mch - ) - `INTERNAL_CATCH_THROWS -"CHECK_THROWS_WITH", -Cch -:: -ResuDiosi -:: -CtueOnFau -, mch,x ) - - ) - -11540  - #CHECK_NOTHROW - -ex - ) - `INTERNAL_CATCH_NO_THROW -"CHECK_NOTHROW", -Cch -:: -ResuDiosi -:: -CtueOnFau -,x ) - - ) - -11542  - #CHECK_THAT - -g -, -mch - ) - `INTERNAL_CHECK_THAT -"CHECK_THAT", mch, -Cch -:: -ResuDiosi -:: -CtueOnFau -,rg ) - - ) - -11544 #i -defed -( -CATCH_CONFIG_FAST_COMPILE -) - -11545  - #REQUIRE_THAT - -g -, -mch - ) - `INTERNAL_CHECK_THAT_NO_TRY -"REQUIRE_THAT", mch, -Cch -:: -ResuDiosi -:: -Nm -,rg ) - - ) - -11547  - #REQUIRE_THAT - -g -, -mch - ) - `INTERNAL_CHECK_THAT -"REQUIRE_THAT", mch, -Cch -:: -ResuDiosi -:: -Nm -,rg ) - - ) - -11550  - #INFO - -msg - ) - `INTERNAL_CATCH_INFO -"INFO", msg ) - - ) - -11551  - #WARN - -msg - ) - `INTERNAL_CATCH_MSG -"WARN", -Cch -:: -ResuWas -:: -Wng -, Cch:: -ResuDiosi -:: -CtueOnFau -, msg ) - - ) - -11552  - #SCOPED_INFO - -msg - ) - `INTERNAL_CATCH_INFO -"INFO", msg ) - - ) - -11553  - #CAPTURE - -msg - ) - `INTERNAL_CATCH_INFO -"CAPTURE", #msg " :" << -Cch -:: - `toSg -(msg) - - ) - -11554  - #SCOPED_CAPTURE - -msg - ) - `INTERNAL_CATCH_INFO -"CAPTURE", #msg " :" << -Cch -:: - `toSg -(msg) - - ) - -11556 #ifde -CATCH_CONFIG_VARIADIC_MACROS - - -11557  - #TEST_CASE -... ) - `INTERNAL_CATCH_TESTCASE - -__VA_ARGS__ - ) - - ) - -11558  - #TEST_CASE_METHOD - -assName -, ... ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName, -__VA_ARGS__ - ) - - ) - -11559  - #METHOD_AS_TEST_CASE - -mhod -, ... ) - `INTERNAL_CATCH_METHOD_AS_TEST_CASE -mhod, -__VA_ARGS__ - ) - - ) - -11560  - #REGISTER_TEST_CASE - -Funi -, ... ) - `INTERNAL_CATCH_REGISTER_TESTCASE -Funi, -__VA_ARGS__ - ) - - ) - -11561  - #SECTION -... ) - `INTERNAL_CATCH_SECTION - -__VA_ARGS__ - ) - - ) - -11562  - #FAIL -... ) - `INTERNAL_CATCH_MSG -"FAIL", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -Nm -, -__VA_ARGS__ - ) - - ) - -11563  - #FAIL_CHECK -... ) - `INTERNAL_CATCH_MSG -"FAIL_CHECK", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -CtueOnFau -, -__VA_ARGS__ - ) - - ) - -11564  - #SUCCEED -... ) - `INTERNAL_CATCH_MSG -"SUCCEED", -Cch -:: -ResuWas -:: -Ok -, Cch:: -ResuDiosi -:: -CtueOnFau -, -__VA_ARGS__ - ) - - ) - -11566  - #TEST_CASE - -me -, -desti - ) - `INTERNAL_CATCH_TESTCASE -me, desti ) - - ) - -11567  - #TEST_CASE_METHOD - -assName -, -me -, -desti - ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName,ame, desti ) - - ) - -11568  - #METHOD_AS_TEST_CASE - -mhod -, -me -, -desti - ) - `INTERNAL_CATCH_METHOD_AS_TEST_CASE -mhod,ame, desti ) - - ) - -11569  - #REGISTER_TEST_CASE - -mhod -, -me -, -desti - ) - `INTERNAL_CATCH_REGISTER_TESTCASE -mhod,ame, desti ) - - ) - -11570  - #SECTION - -me -, -desti - ) - `INTERNAL_CATCH_SECTION -me, desti ) - - ) - -11571  - #FAIL - -msg - ) - `INTERNAL_CATCH_MSG -"FAIL", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -Nm -, msg ) - - ) - -11572  - #FAIL_CHECK - -msg - ) - `INTERNAL_CATCH_MSG -"FAIL_CHECK", -Cch -:: -ResuWas -:: -ExicFau -, Cch:: -ResuDiosi -:: -CtueOnFau -, msg ) - - ) - -11573  - #SUCCEED - -msg - ) - `INTERNAL_CATCH_MSG -"SUCCEED", -Cch -:: -ResuWas -:: -Ok -, Cch:: -ResuDiosi -:: -CtueOnFau -, msg ) - - ) - -11575  - #ANON_TEST_CASE -( - `INTERNAL_CATCH_TESTCASE -"", "" ) - - ) - -11577  - #REGISTER_REPORTER - -me -, -p܋rTy - ) - `INTERNAL_CATCH_REGISTER_REPORTER -me,܋rTy ) - - ) - -11578  - #REGISTER_LEGACY_REPORTER - -me -, -p܋rTy - ) - `INTERNAL_CATCH_REGISTER_LEGACY_REPORTER -me,܋rTy ) - - ) - -11580  - #GENERATE - -ex - - `INTERNAL_CATCH_GENERATE -ex ) - - ) - -11584  - #CATCH_TRANSLATE_EXCEPTION - -sigtu - ) - `INTERNAL_CATCH_TRANSLATE_EXCEPTION -sigtu ) - - ) - -11587 #ifde -CATCH_CONFIG_VARIADIC_MACROS - - -11588  - #SCENARIO -... ) - `TEST_CASE -"Srio: " -__VA_ARGS__ - ) - - ) - -11589  - #SCENARIO_METHOD - -assName -, ... ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName, "Srio: " -__VA_ARGS__ - ) - - ) - -11591  - #SCENARIO - -me -, -gs - ) - `TEST_CASE -"Srio: "ame,ag) - - ) - -11592  - #SCENARIO_METHOD - -assName -, -me -, -gs - ) - `INTERNAL_CATCH_TEST_CASE_METHOD -assName, "Srio: "ame,ag) - - ) - -11594  - #GIVEN - -desc - ) - `SECTION - -d -:: - `rg -(" Giv: "+ desc, "" ) - - ) - -11595  - #WHEN - -desc - ) - `SECTION - -d -:: - `rg -(" Wh: "+ desc, "" ) - - ) - -11596  - #AND_WHEN - -desc - ) - `SECTION - -d -:: - `rg -("And wh: "+ desc, "" ) - - ) - -11597  - #THEN - -desc - ) - `SECTION - -d -:: - `rg -(" Th: "+ desc, "" ) - - ) - -11598  - #AND_THEN - -desc - ) - `SECTION - -d -:: - `rg -(" And: "+ desc, "" ) - - ) - -11600 -usg - -Cch -:: -Da -:: -Arox -; - -11604  - #TWOBLUECUBES_CATCH_REENABLE_WARNINGS_H_INCLUDED - - - ) - -11606 #ifde -__g__ - - -11607 #ifde -__ICC - - -11608 #agm -wng -( -p -) - -11610 #agm -g - -dgnoic - -p - - -11612 #i -defed - -__GNUC__ - - -11613 #agm -GCC - -dgnoic - -p - - - @lib_standalone/ArduinoJson/src/ArduinoJson.h - -5 #agm - - - -7 #ifde -__lulus - - -9  - ~"ArduoJs.h -" - -11 -usg - -mea - - gArduoJs -; - -15 #r -ArduoJs - -ques - -a - -C -++ -comp -, - - -chge - -fe - -exnsi - -to - . -cc - - - . -p - - - @lib_standalone/ArduinoJson/src/ArduinoJson.hpp - -5 #agm - - - -7  - ~"ArduoJs/Cfiguti.h -" - -9 #i! -ARDUINOJSON_DEBUG - - -10 #ifde -__g__ - - -11 #agm -g - -syem_hd - - -12 #i -defed - -__GNUC__ - - -13 #agm -GCC - -syem_hd - - -17  - ~"ArduoJs/Aay/AayRef.h -" - -18  - ~"ArduoJs/Obje/ObjeRef.h -" - -19  - ~"ArduoJs/V/VRef.h -" - -21  - ~"ArduoJs/Documt/DymicJsDocumt.h -" - -22  - ~"ArduoJs/Documt/SticJsDocumt.h -" - -24  - ~"ArduoJs/Aay/AayIm.h -" - -25  - ~"ArduoJs/Aay/EmtProxy.h -" - -26  - ~"ArduoJs/Aay/Uts.h -" - -27  - ~"ArduoJs/Ci/CiIm.h -" - -28  - ~"ArduoJs/Obje/MembProxy.h -" - -29  - ~"ArduoJs/Obje/ObjeIm.h -" - -30  - ~"ArduoJs/V/VAsIm.h -" - -31  - ~"ArduoJs/V/VIm.h -" - -33  - ~"ArduoJs/Js/JsDerliz.h -" - -34  - ~"ArduoJs/Js/JsSliz.h -" - -35  - ~"ArduoJs/Js/PyJsSliz.h -" - -36  - ~"ArduoJs/MsgPack/MsgPackDerliz.h -" - -37  - ~"ArduoJs/MsgPack/MsgPackSliz.h -" - -39  - ~"ArduoJs/comtiby.h -" - -41 -mea - - gArduoJs - { - -42  - gARDUINOJSON_NAMESPACE -:: - tAayCڡRef - - tJsAayCڡ -; - -43  - gARDUINOJSON_NAMESPACE -:: - tAayRef - - tJsAay -; - -44  - gARDUINOJSON_NAMESPACE -:: - tFlt - - tJsFlt -; - -45  - gARDUINOJSON_NAMESPACE -:: - tIeg - - tJsIeg -; - -46  - gARDUINOJSON_NAMESPACE -:: - tObjeCڡRef - - tJsObjeCڡ -; - -47  - gARDUINOJSON_NAMESPACE -:: - tObjeRef - - tJsObje -; - -48  - gARDUINOJSON_NAMESPACE -:: - tPa - - tJsPa -; - -49  - gARDUINOJSON_NAMESPACE -:: - tPaCڡ - - tJsPaCڡ -; - -50  - gARDUINOJSON_NAMESPACE -:: - tSg - - tJsSg -; - -51  - gARDUINOJSON_NAMESPACE -:: - tUI - - tJsUI -; - -52  - gARDUINOJSON_NAMESPACE -:: - tVCڡRef - - tJsVCڡ -; - -53  - gARDUINOJSON_NAMESPACE -:: - tVRef - - tJsV -; - -54 -usg - - gARDUINOJSON_NAMESPACE -:: -BasicJsDocumt -; - -55 -usg - - gARDUINOJSON_NAMESPACE -:: -cyAay -; - -56 -usg - - gARDUINOJSON_NAMESPACE -:: -DerliziE -; - -57 -usg - - gARDUINOJSON_NAMESPACE -:: -derlizeJs -; - -58 -usg - - gARDUINOJSON_NAMESPACE -:: -derlizeMsgPack -; - -59 -usg - - gARDUINOJSON_NAMESPACE -:: -DymicJsDocumt -; - -60 -usg - - gARDUINOJSON_NAMESPACE -:: -JsDocumt -; - -61 -usg - - gARDUINOJSON_NAMESPACE -:: -msuJs -; - -62 -usg - - gARDUINOJSON_NAMESPACE -:: -rlized -; - -63 -usg - - gARDUINOJSON_NAMESPACE -:: -rlizeJs -; - -64 -usg - - gARDUINOJSON_NAMESPACE -:: -rlizeJsPy -; - -65 -usg - - gARDUINOJSON_NAMESPACE -:: -rlizeMsgPack -; - -66 -usg - - gARDUINOJSON_NAMESPACE -:: -SticJsDocumt -; - -68 -mea - - gDerliziOi - { - -69 -usg - - gARDUINOJSON_NAMESPACE -:: -Fr -; - -70 -usg - - gARDUINOJSON_NAMESPACE -:: -NegLim -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -le - -VDa - * -yAdd -( -CiDa - * -r -, -MemyPo - * -po -) { - -12  - gr - ?-> -addEmt -( -po -) : 0; - -15 - gme - < -tyme - - gVis -> - -16 -le -  -yAc -(cڡ -CiDa - * -r -, -Vis - & -vis -) { - -17 i( - gr -) - -18 - gvis -. -visAay -(* -r -); - -20 - gvis -. -visNu -(); - -23 -le - -bo - -yEqus -(cڡ -CiDa - * -lhs -, cڡ CiD* -rhs -) { - -24 i( - glhs - = -rhs -) - -25  -ue -; - -26 i(! - glhs - || ! - grhs -) - -27  - gl -; - -28  - glhs --> -equsAay -(* -rhs -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTAay -> - -13 -le - -AayRef - - gAayShtcuts -< - gTAay ->:: -NeedAay -() const { - -14  -im -()-> -addEmt -(). -me - -to -< -AayRef ->(); - -17 - gme - < -tyme - - gTAay -> - -18 -le - -ObjeRef - - gAayShtcuts -< - gTAay ->:: -NeedObje -() const { - -19  -im -()-> -addEmt -(). -me - -to -< -ObjeRef ->(); - -22 - gme - < -tyme - - gTAay -> - -23 -le - - gEmtProxy -< - gTAay -> - gAayShtcuts -:: -ݔ -[]( - -24 -size_t - -dex -) const { - -25  -EmtProxy -< -TAay ->(* -im -(), - gdex -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cVP - { - -13 - gpublic -: - -14 -VP -( -MemyPo - * -po -, -VDa - * -da -: -_v -(pool, data) {} - -16 -VRef - * - gݔ -->() { - -17  & - g_v -; - -20 - gVRef - & - gݔ -*() { - -21  - g_v -; - -24 - give -: - -25 -VRef - -_v -; - -28 as - cAayIt - { - -29 - gpublic -: - -30 -AayIt -(: -_ -(0) {} - -31 -exic - -AayIt -( -MemyPo - * -po -, -VSl - * - -) - -32 : -_po -( -po -), -_ -( - -) {} - -34 -VRef - - gݔ -*() const { - -35  -VRef -( -_po -, -_ --> -da -()); - -37 -VP - - gݔ -->() { - -38  -VP -( -_po -, -_ --> -da -()); - -41 -bo - - gݔ -==(cڡ -AayIt - & -h -) const { - -42  -_ - = -h -._slot; - -45 -bo - - gݔ -!=(cڡ -AayIt - & -h -) const { - -46  -_ - ! -h -._slot; - -49 - gAayIt - & - gݔ -++() { - -50 - g_ - = -_ --> -xt -(); - -51  * - gthis -; - -54 - gAayIt - & - gݔ -+=( -size_t - -di -) { - -55 -_ - = _-> -xt -( -di -); - -56  * - gthis -; - -59 -VSl - * - -() { - -60  - g_ -; - -63 - give -: - -64 -MemyPo - * -_po -; - -65 -VSl - * - g_ -; - -68 as - cVCڡP - { - -69 - gpublic -: - -70 -VCڡP -(cڡ -VDa - * -da -: -_v -(data) {} - -72 -VCڡRef - * -ݔ -->() { - -73  & -_v -; - -76 - gVCڡRef - & - gݔ -*() { - -77  - g_v -; - -80 - give -: - -81 -VCڡRef - -_v -; - -84 as - cAayCڡRefIt - { - -85 - gpublic -: - -86 -AayCڡRefIt -(: -_ -(0) {} - -87 -exic - -AayCڡRefIt -(cڡ -VSl - * - -: -_ -(slot) {} - -89 -VCڡRef - -ݔ -*() const { - -90  -VCڡRef -( -_ --> -da -()); - -92 -VCڡP - - gݔ -->() { - -93  -VCڡP -( -_ --> -da -()); - -96 -bo - - gݔ -==(cڡ -AayCڡRefIt - & -h -) const { - -97  -_ - = -h -._slot; - -100 -bo - - gݔ -!=(cڡ -AayCڡRefIt - & -h -) const { - -101  -_ - ! -h -._slot; - -104 - gAayCڡRefIt - & - gݔ -++() { - -105 - g_ - = -_ --> -xt -(); - -106  * - gthis -; - -109 - gAayCڡRefIt - & - gݔ -+=( -size_t - -di -) { - -110 -_ - = _-> -xt -( -di -); - -111  * - gthis -; - -114 cڡ -VSl - * - -() { - -115  - g_ -; - -118 - give -: - -119 cڡ -VSl - * -_ -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -13  - #JSON_ARRAY_SIZE -( -NUMBER_OF_ELEMENTS -) \ - -14 (( -NUMBER_OF_ELEMENTS -* ( -ARDUINOJSON_NAMESPACE -:: -VSl -)) - - ) - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 -ass - - gObjeRef -; - -19 - gme - < - gtyme -> - -20 -ass - - gEmtProxy -; - -22 - gme - < -tyme - - gTDa -> - -23 as - cAayRefBa - { - -24 - gpublic -: - -25 -ݔ - -VCڡRef -() const { - -26 cڡ * -da - = -_da -; - -27  -VCڡRef -( -t_ -( -da -)); - -30 - gme - < -tyme - - gVis -> - -31 -FORCE_INLINE -  -ac -( -Vis -& -vis -) const { - -32 -yAc -( -_da -, -vis -); - -35 -FORCE_INLINE - -bo - -isNu -() const { - -36  - g_da - == 0; - -39 -FORCE_INLINE - -ݔ - -bo -() const { - -40  - g_da - != 0; - -43 -FORCE_INLINE - -size_t - -memyUge -() const { - -44  - g_da - ? _da-> -memyUge -() : 0; - -47 -FORCE_INLINE - -size_t - -ág -() const { - -48  - g_da - ? _da-> -ág -() : 0; - -51 -FORCE_INLINE - -size_t - -size -() const { - -52  - g_da - ? _da-> -size -() : 0; - -55 - geed -: - -56 -AayRefBa -( -TDa -* -da -: -_da -(data) {} - -57 -TDa -* -_da -; - -60 -ass - - gAayCڡRef - : -public - -AayRefBa -, - -61 -public - - gVisab - { - -62 -nd - -ass - - gAayRef -; - -63  - gAayRefBa - - tba_ty -; - -65 - gpublic -: - -66  -AayCڡRefIt - - t -; - -68 -FORCE_INLINE - - - -beg -() const { - -69 i(! - g_da -) - -70  - -(); - -71  - -( -_da --> -hd -()); - -74 -FORCE_INLINE - - - -d -() const { - -75  - -(); - -78 -FORCE_INLINE - -AayCڡRef -(: -ba_ty -(0) {} - -79 -FORCE_INLINE - -AayCڡRef -(cڡ -CiDa -* -da -: -ba_ty -(data) {} - -81 -FORCE_INLINE - -bo - -ݔ -==( -AayCڡRef - -rhs -) const { - -82  -yEqus -( -_da -, -rhs -._data); - -85 -FORCE_INLINE - -VCڡRef - - gݔ -[]( -size_t - - gdex -) const { - -86  -gEmt -( -dex -); - -89 -FORCE_INLINE - -VCڡRef - -gEmt -( -size_t - -dex -) const { - -90  -VCڡRef -( -_da - ? _da-> -gEmt -( -dex -) : 0); - -94 -ass - - gAayRef - : -public - -AayRefBa -< -CiDa ->, - -95 -public - - gAayShtcuts -< - gAayRef ->, - -96 -public - - gVisab - { - -97  - gAayRefBa -< - tCiDa -> - tba_ty -; - -99 - gpublic -: - -100  -AayIt - - t -; - -102 -FORCE_INLINE - -AayRef -(: -ba_ty -(0), -_po -(0) {} - -103 -FORCE_INLINE - -AayRef -( -MemyPo -* -po -, -CiDa -* -da -) - -104 : -ba_ty -( -da -), -_po -( -po -) {} - -106 -ݔ - -VRef -() { - -107 * - gda - = -_da -; - -108  -VRef -( -_po -, -t_ -< -VDa -*>( -da -)); - -111 -ݔ - -AayCڡRef -() const { - -112  -AayCڡRef -( -_da -); - -115 -VRef - -addEmt -() const { - -116  -VRef -( -_po -, -yAdd -( -_da -, _pool)); - -119 -FORCE_INLINE - - - -beg -() const { - -120 i(! - g_da -) - -121  - -(); - -122  - -( -_po -, -_da --> -hd -()); - -125 -FORCE_INLINE - - - -d -() const { - -126  - -(); - -130 -FORCE_INLINE - -bo - -t -( -AayCڡRef - -c -) const { - -131 i(! - g_da - || ! - gc -._data) - -132  - gl -; - -133  - g_da --> -cyFrom -(* -c -. -_da -, -_po -); - -136 -FORCE_INLINE - -bo - - gݔ -==( -AayRef - -rhs -) const { - -137  -yEqus -( -_da -, -rhs -._data); - -141 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t - -dex -) const { - -142  -VRef -( -_po -, -_da - ? _da-> -gOrAddEmt -( -dex -, _pool) : 0); - -146 -FORCE_INLINE - -VRef - -gEmt -( -size_t - -dex -) const { - -147  -VRef -( -_po -, -_da - ? _da-> -gEmt -( -dex -) : 0); - -151 -FORCE_INLINE -  -move -( - - - -) const { - -152 i(! - g_da -) - -154 - g_da --> -moveSl -( - -. - -()); - -158 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -159 i(! - g_da -) - -161 - g_da --> -moveEmt -( -dex -); - -164 - give -: - -165 -MemyPo -* -_po -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < - gtyme -> - -13 -ass - - gEmtProxy -; - -15 - gme - < -tyme - - gTAay -> - -16 as - cAayShtcuts - { - -17 - gpublic -: - -19 -FORCE_INLINE - -EmtProxy -< -TAay -> -ݔ -[]( -size_t - -dex -) const; - -21 -FORCE_INLINE - -ObjeRef - -NeedObje -() const; - -23 -FORCE_INLINE - -AayRef - -NeedAay -() const; - -30 - gme - < -tyme - - gT -> - -31 -FORCE_INLINE - -bo - -add -(cڡ -T - & -vue -) const { - -32  -im -()-> -addEmt -(). -t -( -vue -); - -37 - gme - < -tyme - - gT -> - -38 -FORCE_INLINE - -bo - -add -( -T - * -vue -) const { - -39  -im -()-> -addEmt -(). -t -( -vue -); - -42 - give -: - -43 cڡ -TAay - * -im -() const { - -44  -ic_ -( -this -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 #ifde -_MSC_VER - - -12 #agm -wng -( -push -) - -13 #agm -wng -( -dib - : 4522) - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 - gme - < -tyme - - gTAay -> - -19 -ass - - gEmtProxy - : -public - -VOts -< -EmtProxy -< -TAay -> >, - -20 -public - - gVisab - { - -21  - gEmtProxy -< - tTAay -> - tthis_ty -; - -23 - gpublic -: - -24 -FORCE_INLINE - -EmtProxy -( -TAay - -y -, -size_t - -dex -) - -25 : -_y -( -y -), -_dex -( -dex -) {} - -27 -FORCE_INLINE - -EmtProxy -(cڡ EmtProxy& -c -) - -28 : -_y -( -c -._y), -_dex -(src._index) {} - -30 -FORCE_INLINE - - gthis_ty -& - gݔ -=(cڡ -this_ty -& -c -) { - -31 -gOrAddUpamEmt -(). -t -( -c -. -as -< -VCڡRef ->()); - -32  * - gthis -; - -40 - gme - < -tyme - - gT -> - -41 -FORCE_INLINE - - gthis_ty -& - gݔ -=(cڡ -T -& -c -) { - -42 -gOrAddUpamEmt -(). -t -( -c -); - -43  * - gthis -; - -48 - gme - < -tyme - - gT -> - -49 -FORCE_INLINE - - gthis_ty -& - gݔ -=( -T -* -c -) { - -50 -gOrAddUpamEmt -(). -t -( -c -); - -51  * - gthis -; - -54 -FORCE_INLINE - -bo - - gݔ -==( -VCڡRef - -rhs -) const { - -55  -ic_ -< -VCڡRef ->( -gUpamEmt -()= -rhs -; - -58 -FORCE_INLINE - -bo - - gݔ -!=( -VCڡRef - -rhs -) const { - -59  -ic_ -< -VCڡRef ->( -gUpamEmt -()! -rhs -; - -62 -FORCE_INLINE -  -r -() const { - -63 -gUpamEmt -(). -r -(); - -66 -FORCE_INLINE - -bo - -isNu -() const { - -67  -gUpamEmt -(). -isNu -(); - -70 - gme - < -tyme - - gT -> - -71 -FORCE_INLINE - -tyme - - gVAs -< - gT ->:: -ty - -as -() const { - -72  -gUpamEmt -(). -me - -as -< -T ->(); - -75 - gme - < -tyme - - gT -> - -76 -FORCE_INLINE - -bo - -is -() const { - -77  -gUpamEmt -(). -me - - gis -< - gT ->(); - -80 - gme - < -tyme - - gT -> - -81 -FORCE_INLINE - -tyme - - gVTo -< - gT ->:: -ty - -to -() const { - -82  -gOrAddUpamEmt -(). -me - -to -< -T ->(); - -90 - gme - < -tyme - - gTVue -> - -91 -FORCE_INLINE - -bo - -t -(cڡ -TVue -& -vue -) const { - -92  -gOrAddUpamEmt -(). -t -( -vue -); - -97 - gme - < -tyme - - gTVue -> - -98 -FORCE_INLINE - -bo - -t -( -TVue -* -vue -) const { - -99  -gOrAddUpamEmt -(). -t -( -vue -); - -102 - gme - < -tyme - - gVis -> - -103  -ac -( -Vis -& -vis -) const { - -104  -gUpamEmt -(). -ac -( -vis -); - -107 -FORCE_INLINE - -size_t - -size -() const { - -108  -gUpamEmt -(). -size -(); - -111 - gme - < -tyme - - gTNeedKey -> - -112 -VRef - -gMemb -( -TNeedKey -* -key -) const { - -113  -gUpamEmt -(). -gMemb -( -key -); - -116 - gme - < -tyme - - gTNeedKey -> - -117 -VRef - -gMemb -(cڡ -TNeedKey -& -key -) const { - -118  -gUpamEmt -(). -gMemb -( -key -); - -121 - gme - < -tyme - - gTNeedKey -> - -122 -VRef - -gOrAddMemb -( -TNeedKey -* -key -) const { - -123  -gOrAddUpamEmt -(). -gOrAddMemb -( -key -); - -126 - gme - < -tyme - - gTNeedKey -> - -127 -VRef - -gOrAddMemb -(cڡ -TNeedKey -& -key -) const { - -128  -gOrAddUpamEmt -(). -gOrAddMemb -( -key -); - -131 -VRef - -addEmt -() const { - -132  -gOrAddUpamEmt -(). -addEmt -(); - -135 -VRef - -gEmt -( -size_t - -dex -) const { - -136  -gOrAddUpamEmt -(). -gEmt -( -dex -); - -139 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -140 -gUpamEmt -(). -move -( -dex -); - -145 - gme - < -tyme - - gTCh -> - -146 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue ->:: -ty - -move -( - -147 -TCh -* -key -) const { - -148 -gUpamEmt -(). -move -( -key -); - -152 - gme - < -tyme - - gTSg -> - -153 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -154 cڡ -TSg -& -key -) const { - -155 -gUpamEmt -(). -move -( -key -); - -158 - give -: - -159 -FORCE_INLINE - -VRef - -gUpamEmt -() const { - -160  -_y -. -gEmt -( -_dex -); - -163 -FORCE_INLINE - -VRef - -gOrAddUpamEmt -() const { - -164  - g_y -. -gOrAddEmt -( -_dex -); - -167 -TAay - - g_y -; - -168 cڡ -size_t - - g_dex -; - -173 #ifde -_MSC_VER - - -174 #agm -wng -( -p -) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -, -size_t - - gN -> - -13 -le - -bo - -cyAay -( -T - (& -c -)[ -N -], -AayRef - -d -) { - -14  -cyAay -( -c -, -N -, -d -); - -18 - gme - < -tyme - - gT -> - -19 -le - -bo - -cyAay -( -T -* -c -, -size_t - -n -, -AayRef - -d -) { - -20 -bo - - gok - = -ue -; - -21  -size_t - - gi - = 0; i < - gn -; i++) { - -22 - gok - & -d -. -add -( -c -[ -i -]); - -24  - gok -; - -28 - gme - < -tyme - - gT -, -size_t - - gN1 -, size_ - gN2 -> - -29 -le - -bo - -cyAay -( -T - (& -c -)[ -N1 -][ -N2 -], -AayRef - -d -) { - -30 -bo - - gok - = -ue -; - -31  -size_t - - gi - = 0; i < - gN1 -; i++) { - -32 -AayRef - - gáedAay - = -d -. -NeedAay -(); - -33  -size_t - - gj - = 0; j < - gN2 -; j++) { - -34 - gok - & -áedAay -. -add -( -c -[ -i -][ -j -]); - -37  - gok -; - -41 - gme - < -tyme - - gT -, -size_t - - gN -> - -42 -le - -size_t - -cyAay -( -AayCڡRef - -c -, -T - (& -d -)[ -N -]) { - -43  -cyAay -( -c -, -d -, -N -); - -47 - gme - < -tyme - - gT -> - -48 -le - -size_t - -cyAay -( -AayCڡRef - -c -, -T -* -d -, size_ -n -) { - -49 -size_t - - gi - = 0; - -50  - gAayCڡRef -:: - - - - = -c -. -beg -(); - g - !c. -d -(&& -i - < -n -; - -51 ++ - g -) - -52 - gd -[ -i -++] = * - -; - -53  - gi -; - -57 - gme - < -tyme - - gT -, -size_t - - gN1 -, size_ - gN2 -> - -58 -le -  -cyAay -( -AayCڡRef - -c -, -T - (& -d -)[ -N1 -][ -N2 -]) { - -59 -size_t - - gi - = 0; - -60  - gAayCڡRef -:: - - - - = -c -. -beg -(); - g - !c. -d -(&& -i - < -N1 -; - -61 ++ - g -) { - -62 -cyAay -( - --> -as -< -AayCڡRef ->(), -d -[ -i -++]); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 -ass - - gMemyPo -; - -15 -ass - - gVDa -; - -16 -ass - - gVSl -; - -18 as - cCiDa - { - -19 -VSl - * - g_hd -; - -20 -VSl - * - g_ -; - -22 - gpublic -: - -31 -VDa - * -addEmt -( -MemyPo - * -po -); - -33 -VDa - * -gEmt -( -size_t - -dex -) const; - -35 -VDa - * -gOrAddEmt -( -size_t - -dex -, -MemyPo - * -po -); - -37  -moveEmt -( -size_t - -dex -); - -39 -bo - -equsAay -(cڡ -CiDa - & -h -) const; - -43 - gme - < -tyme - - gTAddSg -> - -44 -VDa - * -addMemb -( -TAddSg - -key -, -MemyPo - * -po -); - -46 - gme - < -tyme - - gTAddSg -> - -47 -VDa - * -gMemb -( -TAddSg - -key -) const; - -49 - gme - < -tyme - - gTAddSg -> - -50 -VDa - * -gOrAddMemb -( -TAddSg - -key -, -MemyPo - * -po -); - -52 - gme - < -tyme - - gTAddSg -> - -53  -moveMemb -( -TAddSg - -key -) { - -54 -moveSl -( -gSl -( -key -)); - -57 - gme - < -tyme - - gTAddSg -> - -58 -bo - -cڏsKey -(cڡ -TAddSg - & -key -) const; - -60 -bo - -equsObje -(cڡ -CiDa - & -h -) const; - -64  -r -(); - -65 -size_t - -memyUge -() const; - -66 -size_t - -ág -() const; - -67 -size_t - -size -() const; - -69 -VSl - * -addSl -( -MemyPo - *); - -70  -moveSl -( -VSl - * - -); - -72 -bo - -cyFrom -(cڡ -CiDa - & -c -, -MemyPo - * -po -); - -74 -VSl - * -hd -() const { - -75  - g_hd -; - -78  -movePors -( -rdiff_t - -rgDi -,diff_ -vDi -); - -80 - give -: - -81 -VSl - * -gSl -( -size_t - -dex -) const; - -83 - gme - < -tyme - - gTAddSg -> - -84 -VSl - * -gSl -( -TAddSg - -key -) const; - -86 -VSl - * -gPviousSl -(VariantSlot *) const; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 -le - -VSl -* - gCiDa -:: -addSl -( -MemyPo -* -po -) { - -13 -VSl -* - - = -po --> -locV -(); - -14 i(! - g -) - -17 i( - g_ -) { - -18 - g_ --> -tNextNNu -( - -); - -19 - g_ - = - -; - -21 - g_hd - = - -; - -22 - g_ - = - -; - -25 - g --> -r -(); - -26  - g -; - -29 -le - -VDa -* - gCiDa -:: -addEmt -( -MemyPo -* -po -) { - -30  -Da -( -addSl -( -po -)); - -33 - gme - < -tyme - - gTAddSg -> - -34 -le - -VDa -* - gCiDa -:: -addMemb -( -TAddSg - -key -, - -35 -MemyPo -* -po -) { - -36 -VSl -* - g - = -addSl -( -po -); - -37 i(! -SKey -( - -, -key -, -po -)) { - -38 -moveSl -( - -); - -41  - g --> -da -(); - -44 -le -  - gCiDa -:: -r -() { - -45 -_hd - = 0; - -46 - g_ - = 0; - -49 - gme - < -tyme - - gTAddSg -> - -50 -le - -bo - - gCiDa -:: -cڏsKey -(cڡ -TAddSg -& -key -) const { - -51  -gSl -( -key -) != 0; - -54 -le - -bo - - gCiDa -:: -cyFrom -(cڡ -CiDa -& -c -, - -55 -MemyPo -* -po -) { - -56 -r -(); - -57  -VSl -* - gs - = -c -. -_hd -; s; s = -s --> -xt -()) { - -58 -VDa -* -v -; - -59 i( - gs --> -key -() != 0) { - -60 i( -s --> -ownsKey -()) - -61 -v - = -addMemb -( -RamSgAdr -( -s --> -key -()), -po -); - -63 - gv - = -addMemb -( -CڡRamSgAdr -( -s --> -key -()), -po -); - -65 - gv - = -addEmt -( -po -); - -67 i(! - gv -) - -68  - gl -; - -69 i(! - gv --> -cyFrom -(* -s --> -da -(), -po -)) - -70  - gl -; - -72  - gue -; - -75 -le - -bo - - gCiDa -:: -equsObje -(cڡ -CiDa -& -h -) const { - -76 -size_t - -cou - = 0; - -77  -VSl -* - g - = -_hd -; sl; sl = - --> -xt -()) { - -78 -VDa -* -v1 - = - --> -da -(); - -79 -VDa -* - gv2 - = -h -. -gMemb -( -adtSg -( - --> -key -())); - -80 i(! -vEqus -( -v1 -, -v2 -)) - -81  - gl -; - -82 - gcou -++; - -84  - gcou - = -h -. -size -(); - -87 -le - -bo - - gCiDa -:: -equsAay -(cڡ -CiDa -& -h -) const { - -88 -VSl -* -s1 - = -_hd -; - -89 -VSl -* - gs2 - = -h -. -_hd -; - -91 i( - gs1 - = -s2 -) - -92  -ue -; - -93 i(! - gs1 - || ! - gs2 -) - -94  - gl -; - -95 i(! -vEqus -( -s1 --> -da -(), -s2 -->data())) - -96  - gl -; - -97 - gs1 - = -s1 --> -xt -(); - -98 - gs2 - = -s2 --> -xt -(); - -102 - gme - < -tyme - - gTAddSg -> - -103 -le - -VSl -* - gCiDa -:: -gSl -( -TAddSg - -key -) const { - -104 -VSl -* - - = -_hd -; - -105  - g -) { - -106 i( - gkey -. -equs -( - --> -key -())) - -108 - g - = - --> -xt -(); - -110  - g -; - -113 -le - -VSl -* - gCiDa -:: -gSl -( -size_t - -dex -) const { - -114  -_hd --> -xt -( -dex -); - -117 -le - -VSl -* - gCiDa -:: -gPviousSl -(VSl* -rg -) const { - -118 -VSl -* -cut - = -_hd -; - -119  - gcut -) { - -120 -VSl -* - gxt - = -cut --> -xt -(); - -121 i( - gxt - = -rg -) - -122  -cut -; - -123 - gcut - = -xt -; - -128 - gme - < -tyme - - gTAddSg -> - -129 -le - -VDa -* - gCiDa -:: -gMemb -( -TAddSg - -key -) const { - -130 -VSl -* - - = -gSl -( -key -); - -131  - g - ? sl-> -da -() : 0; - -134 - gme - < -tyme - - gTAddSg -> - -135 -le - -VDa -* - gCiDa -:: -gOrAddMemb -( -TAddSg - -key -, - -136 -MemyPo -* -po -) { - -138 i( - gkey -. -isNu -()) - -142 -VSl -* - g - = -gSl -( -key -); - -143 i( - g -) - -144  - g --> -da -(); - -146  -addMemb -( -key -, -po -); - -149 -le - -VDa -* - gCiDa -:: -gEmt -( -size_t - -dex -) const { - -150 -VSl -* - - = -gSl -( -dex -); - -151  - g - ? sl-> -da -() : 0; - -154 -le - -VDa -* - gCiDa -:: -gOrAddEmt -( -size_t - -dex -, - -155 -MemyPo -* -po -) { - -156 -VSl -* - g - = -_hd -; - -157  - g - && - gdex - > 0) { - -158 - g - = - --> -xt -(); - -159 - gdex ---; - -161 i(! - g -) - -162 - gdex -++; - -163  - gdex - > 0) { - -164 - g - = -addSl -( -po -); - -165 - gdex ---; - -167  -Da -( - -); - -170 -le -  - gCiDa -:: -moveSl -( -VSl -* - -) { - -171 i(! - -) - -173 -VSl -* - gev - = -gPviousSl -( - -); - -174 -VSl -* - gxt - = - --> -xt -(); - -175 i( - gev -) - -176 - gev --> -tNext -( -xt -); - -178 - g_hd - = -xt -; - -179 i(! - gxt -) - -180 - g_ - = -ev -; - -183 -le -  - gCiDa -:: -moveEmt -( -size_t - -dex -) { - -184 -moveSl -( -gSl -( -dex -)); - -187 -le - -size_t - - gCiDa -:: -memyUge -() const { - -188 -size_t - -tٮ - = 0; - -189  -VSl -* - gs - = -_hd -; s; s = -s --> -xt -()) { - -190 -tٮ - +( -VSl -+ -s --> -da -()-> -memyUge -(); - -191 i( - gs --> -ownsKey -()) - -192 - gtٮ - + - -( -s --> -key -()) + 1; - -194  - gtٮ -; - -197 -le - -size_t - - gCiDa -:: -ág -() const { - -198 -size_t - -maxChdNeg - = 0; - -199  -VSl -* - gs - = -_hd -; s; s = -s --> -xt -()) { - -200 -size_t - -chdNeg - = -s --> -da -()-> -ág -(); - -201 i( - gchdNeg - > - gmaxChdNeg -) - -202 - gmaxChdNeg - = -chdNeg -; - -204  - gmaxChdNeg - + 1; - -207 -le - -size_t - - gCiDa -:: -size -() const { - -208  -Size -( -_hd -); - -211 - gme - < -tyme - - gT -> - -212 -le -  -movePor -( -T -*& -p -, -rdiff_t - -offt -) { - -213 i(! - gp -) - -215 - gp - = -t_ -< -T -*>( - -216 -t_ -<*>et_<*>( -p -+ -offt -)); - -217 -ARDUINOJSON_ASSERT -( -isAligd -( -p -)); - -220 -le -  - gCiDa -:: -movePors -( -rdiff_t - -rgDi -, - -221 -rdiff_t - -vDi -) { - -222 -movePor -( -_hd -, -vDi -); - -223 -movePor -( -_ -, -vDi -); - -224  -VSl -* - g - = -_hd -; sl; sl = - --> -xt -()) - -225 - --> -movePors -( -rgDi -, -vDi -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Configuration.hpp - -5 #agm - - - -7 #i -defed -( -_MSC_VER -) - -8  - #ARDUINOJSON_HAS_INT64 - 1 - - ) - -10  - #ARDUINOJSON_HAS_INT64 - 0 - - ) - -13 #i -__lulus - >= 201103L - -14  - #ARDUINOJSON_HAS_LONG_LONG - 1 - - ) - -15  - #ARDUINOJSON_HAS_NULLPTR - 1 - - ) - -16  - #ARDUINOJSON_HAS_RVALUE_REFERENCES - 1 - - ) - -18  - #ARDUINOJSON_HAS_LONG_LONG - 0 - - ) - -19  - #ARDUINOJSON_HAS_NULLPTR - 0 - - ) - -20  - #ARDUINOJSON_HAS_RVALUE_REFERENCES - 0 - - ) - -24 #ide -ARDUINOJSON_EMBEDDED_MODE - - -25 #i -defed -( -ARDUINO -) \ - -26 || -defed -( -__IAR_SYSTEMS_ICC__ -) \ - -27 || -defed -( -__XC -) \ - -28 || -defed -( -__ARMCC_VERSION -) \ - -29 || - $defed -( -__AVR -) - -30  - #ARDUINOJSON_EMBEDDED_MODE - 1 - - ) - -32  - #ARDUINOJSON_EMBEDDED_MODE - 0 - - ) - -38 #i! - `defed -( -ARDUINOJSON_ENABLE_STD_STREAM -&& defed( -__has_ude -) - -39 #i - `__has_ude -(< -iam ->) && \ - -40 - `__has_ude -(< -oam ->) && \ - -41 ! - `defed -( -m -) && \ - -42 ! - $defed -( -max -) - -43  - #ARDUINOJSON_ENABLE_STD_STREAM - 1 - - ) - -45  - #ARDUINOJSON_ENABLE_STD_STREAM - 0 - - ) - -51 #i! - `defed -( -ARDUINOJSON_ENABLE_STD_STRING -&& defed( -__has_ude -) - -52 #i - `__has_ude -(< -rg ->&& ! - `defed -( -m -&& !defed( -max -) - -53  - #ARDUINOJSON_ENABLE_STD_STRING - 1 - - ) - -55  - #ARDUINOJSON_ENABLE_STD_STRING - 0 - - ) - -59 #i -ARDUINOJSON_EMBEDDED_MODE - - -62 #ide -ARDUINOJSON_USE_DOUBLE - - -63  - #ARDUINOJSON_USE_DOUBLE - 0 - - ) - -67 #ide -ARDUINOJSON_USE_LONG_LONG - - -68  - #ARDUINOJSON_USE_LONG_LONG - 0 - - ) - -72 #ide -ARDUINOJSON_ENABLE_STD_STRING - - -73  - #ARDUINOJSON_ENABLE_STD_STRING - 0 - - ) - -77 #ide -ARDUINOJSON_ENABLE_STD_STREAM - - -78  - #ARDUINOJSON_ENABLE_STD_STREAM - 0 - - ) - -82 #ide -ARDUINOJSON_DEFAULT_NESTING_LIMIT - - -83  - #ARDUINOJSON_DEFAULT_NESTING_LIMIT - 10 - - ) - -89 #ide -ARDUINOJSON_USE_DOUBLE - - -90  - #ARDUINOJSON_USE_DOUBLE - 1 - - ) - -94 #ide -ARDUINOJSON_USE_LONG_LONG - - -95 #i -ARDUINOJSON_HAS_LONG_LONG - || -ARDUINOJSON_HAS_INT64 - - -96  - #ARDUINOJSON_USE_LONG_LONG - 1 - - ) - -98  - #ARDUINOJSON_USE_LONG_LONG - 0 - - ) - -103 #ide -ARDUINOJSON_ENABLE_STD_STRING - - -104  - #ARDUINOJSON_ENABLE_STD_STRING - 1 - - ) - -108 #ide -ARDUINOJSON_ENABLE_STD_STREAM - - -109  - #ARDUINOJSON_ENABLE_STD_STREAM - 1 - - ) - -113 #ide -ARDUINOJSON_DEFAULT_NESTING_LIMIT - - -114  - #ARDUINOJSON_DEFAULT_NESTING_LIMIT - 50 - - ) - -119 #ifde -ARDUINO - - -121  - ~ - -124 #ide -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -125  - #ARDUINOJSON_ENABLE_ARDUINO_STRING - 1 - - ) - -129 #ide -ARDUINOJSON_ENABLE_ARDUINO_STREAM - - -130  - #ARDUINOJSON_ENABLE_ARDUINO_STREAM - 1 - - ) - -134 #ide -ARDUINOJSON_ENABLE_ARDUINO_PRINT - - -135  - #ARDUINOJSON_ENABLE_ARDUINO_PRINT - 1 - - ) - -141 #ide -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -142  - #ARDUINOJSON_ENABLE_ARDUINO_STRING - 0 - - ) - -146 #ide -ARDUINOJSON_ENABLE_ARDUINO_STREAM - - -147  - #ARDUINOJSON_ENABLE_ARDUINO_STREAM - 0 - - ) - -151 #ide -ARDUINOJSON_ENABLE_ARDUINO_PRINT - - -152  - #ARDUINOJSON_ENABLE_ARDUINO_PRINT - 0 - - ) - -157 #ide -ARDUINOJSON_ENABLE_PROGMEM - - -158 #ifde -PROGMEM - - -159  - #ARDUINOJSON_ENABLE_PROGMEM - 1 - - ) - -161  - #ARDUINOJSON_ENABLE_PROGMEM - 0 - - ) - -166 #ide -ARDUINOJSON_DECODE_UNICODE - - -167  - #ARDUINOJSON_DECODE_UNICODE - 0 - - ) - -171 #ide -ARDUINOJSON_ENABLE_COMMENTS - - -172  - #ARDUINOJSON_ENABLE_COMMENTS - 0 - - ) - -176 #ide -ARDUINOJSON_ENABLE_NAN - - -177  - #ARDUINOJSON_ENABLE_NAN - 0 - - ) - -181 #ide -ARDUINOJSON_ENABLE_INFINITY - - -182  - #ARDUINOJSON_ENABLE_INFINITY - 0 - - ) - -187 #ide -ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD - - -188  - #ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD - 1e7 - - ) - -192 #ide -ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD - - -193  - #ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD - 1e-5 - - ) - -196 #ide -ARDUINOJSON_LITTLE_ENDIAN - - -197 #i - `defed -( -_MSC_VER -) || \ - -198 ( - `defed -( -__BYTE_ORDER__ -&& __BYTE_ORDER__ = -__ORDER_LITTLE_ENDIAN__ -) || \ - -199 - `defed -( -__LITTLE_ENDIAN__ -|| defed( -__i386 -|| - $defed -( -__x86_64 -) - -200  - #ARDUINOJSON_LITTLE_ENDIAN - 1 - - ) - -202  - #ARDUINOJSON_LITTLE_ENDIAN - 0 - - ) - -206 #ide -ARDUINOJSON_TAB - - -207  - #ARDUINOJSON_TAB - " " - - ) - -210 #ide -ARDUINOJSON_STRING_BUFFER_SIZE - - -211  - #ARDUINOJSON_STRING_BUFFER_SIZE - 32 - - ) - -214 #ide -ARDUINOJSON_DEBUG - - -215 #ifde -__PLATFORMIO_BUILD_DEBUG__ - - -216  - #ARDUINOJSON_DEBUG - 1 - - ) - -218  - #ARDUINOJSON_DEBUG - 0 - - ) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp - -5 #agm - - - -7  - ~ - -9 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -10  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 as - cDerliziE - { - -17 ( - gDerliziE -::* - tbo_ty -)() const; - -18  -BoHr -() const {} - -20 - gpublic -: - -21 - eCode - { - -22 -Ok -, - -23 - gIncomeIut -, - -24 - gInvidIut -, - -25 - gNoMemy -, - -26 - gNSu܋d -, - -27 - gTooDp - - -30 -DerliziE -() {} - -31 -DerliziE -( -Code - -c -: -_code -(c) {} - -34 -nd - -bo - -ݔ -==(cڡ -DerliziE -& -lhs -, - -35 cڡ - gDerliziE -& - grhs -) { - -36  - glhs -. - g_code - = -rhs -. -_code -; - -38 -nd - -bo - - gݔ -!=(cڡ -DerliziE -& -lhs -, - -39 cڡ - gDerliziE -& - grhs -) { - -40  - glhs -. - g_code - ! -rhs -. -_code -; - -44 -nd - -bo - - gݔ -==(cڡ -DerliziE -& -lhs -, -Code - - grhs -) { - -45  - glhs -. - g_code - = -rhs -; - -47 -nd - -bo - - gݔ -==( -Code - -lhs -, cڡ - gDerliziE -& - grhs -) { - -48  - glhs - = -rhs -. -_code -; - -50 -nd - -bo - - gݔ -!=(cڡ -DerliziE -& -lhs -, -Code - - grhs -) { - -51  - glhs -. - g_code - ! -rhs -; - -53 -nd - -bo - - gݔ -!=( -Code - -lhs -, cڡ - gDerliziE -& - grhs -) { - -54  - glhs - ! -rhs -. -_code -; - -58 -ݔ - -bo_ty -() const { - -59  - g_code - ! -Ok - ? & -DerliziE -:: -BoHr - : 0; - -61 -nd - -bo - - gݔ -==(bo -vue -, cڡ - gDerliziE -& - gr -) { - -62  - gic_ -< - gbo ->( - gr -= -vue -; - -64 -nd - -bo - - gݔ -==(cڡ -DerliziE -& -r -, bo - gvue -) { - -65  - gic_ -< - gbo ->( - gr -= -vue -; - -67 -nd - -bo - - gݔ -!=(bo -vue -, cڡ - gDerliziE -& - gr -) { - -68  - gic_ -< - gbo ->( - gr -! -vue -; - -70 -nd - -bo - - gݔ -!=(cڡ -DerliziE -& -r -, bo - gvue -) { - -71  - gic_ -< - gbo ->( - gr -! -vue -; - -75 -Code - -code -() const { - -76  - g_code -; - -79 cڡ * -c_r -() const { - -80  - g_code -) { - -81  - gOk -: - -83  - gTooDp -: - -85  - gNoMemy -: - -87  - gInvidIut -: - -89  - gIncomeIut -: - -91  - gNSu܋d -: - -98 - give -: - -99 -Code - -_code -; - -102 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -103 -le - - gd -:: -oam -& -ݔ -<<( -d -::oam& -s -, - -104 cڡ - gDerliziE -& - ge -) { - -105 - gs - << - ge -. -c_r -(); - -106  - gs -; - -109 -le - - gd -:: -oam -& -ݔ -<<( -d -::oam& -s -, - gDerliziE -:: -Code - -c -) { - -110 -s - << -DerliziE -( -c -). -c_r -(); - -111  - gs -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cFr - { - -12 - gpublic -: - -13 -exic - -Fr -( -VCڡRef - -v -: -_v -(v) {} - -15 -bo - -low -() const { - -16  -_v -; - -19 -bo - -lowAay -() const { - -20  - g_v - = -ue - || -_v -. -is -< -AayRef ->(); - -23 -bo - -lowObje -() const { - -24  - g_v - = -ue - || -_v -. -is -< -ObjeRef ->(); - -27 -bo - -lowVue -() const { - -28  - g_v - = -ue -; - -31 - gme - < -tyme - - gTKey -> - -32 -Fr - - gݔ -[](cڡ - gTKey -& - gkey -) const { - -33 i( - g_v - = -ue -) - -34  * -this -; - -36  -Fr -( -_v -[ -key -]); - -39 - give -: - -40 -VCڡRef - -_v -; - -43  - sAowAFr - { - -44 -bo - -low -() const { - -45  - gue -; - -48 -bo - -lowAay -() const { - -49  - gue -; - -52 -bo - -lowObje -() const { - -53  - gue -; - -56 -bo - -lowVue -() const { - -57  - gue -; - -60 - gme - < -tyme - - gTKey -> - -61 -AowAFr - - gݔ -[](cڡ - gTKey -&) const { - -62  -AowAFr -(); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cNegLim - { - -13 - gpublic -: - -14 -NegLim -(: -_vue -( -ARDUINOJSON_DEFAULT_NESTING_LIMIT -) {} - -15 -exic - -NegLim -( -ut8_t - -n -: -_vue -(n) {} - -17 -NegLim - -deemt -() const { - -18 -ARDUINOJSON_ASSERT -( -_vue - > 0); - -19  -NegLim -( -ic_ -< -ut8_t ->( -_vue - - 1)); - -22 -bo - -ached -() const { - -23  - g_vue - == 0; - -26 - give -: - -27 -ut8_t - -_vue -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -tyme - - gTSour -,ym - gEb - = > - -15  - sRd - { - -16 -public -: - -17 -Rd -( -TSour -& -sour -: -_sour -(&source) {} - -19  -ad -() { - -20  -_sour --> -ad -(); - -23 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -24  - g_sour --> -adBys -( -bufr -, -ngth -); - -27 - give -: - -28 -TSour -* -_sour -; - -31 - gme - < -tyme - - gTSour -,ym - gEb - = > - -32  - sBoundedRd - { - -38  - ~ - -39  - ~ - -41 #i -ARDUINOJSON_ENABLE_ARDUINO_STREAM - - -42  - ~ - -45 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -46  - ~ - -49 #i -ARDUINOJSON_ENABLE_PROGMEM - - -50  - ~ - -53 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -54  - ~ - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTSour -> - -12  - gRd -< - gTSour -, - -13 -tyme - - gab_if -< - gis_ba_of -< - gSm -, - gTSour ->:: -vue ->:: -ty -> { - -14 -public -: - -15 -exic - -Rd -( -Sm -& -am -: -_am -(&stream) {} - -17  -ad -() { - -19  -c -; - -20  - g_am --> -adBys -(& -c -, 1? - gic_ -<>( - gc -) : -1; - -23 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -24  - g_am --> -adBys -( -bufr -, -ngth -); - -27 - give -: - -28 -Sm -* -_am -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - < -tyme - - gTSour -> - -10  - gRd -< - gTSour -, - -11 -tyme - - gab_if -< - gis_ba_of -< :: -Sg -, - gTSour ->:: -vue ->:: -ty -> - -12 : -BoundedRd - { - -13 -exic - -Rd -(cڡ :: -Sg -& -s -) - -14 : -BoundedRd -( -s -. -c_r -(), - gs -. -ngth -()) {} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - <> - -10  - gRd - { - -11 cڡ * - g_r -; - -13 - gpublic -: - -14 -exic - -Rd -(cڡ -__FshSgHr -* -r -) - -15 : -_r -( -t_ -( -r -)) {} - -17  -ad -() { - -18  -pgm_ad_by -( -_r -++); - -21 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -22 -memy_P -( -bufr -, -_r -, -ngth -); - -23 - g_r - + -ngth -; - -24  - gngth -; - -28 - gme - <> - -29  - gBoundedRd - { - -30 cڡ * - g_r -; - -31 cڡ * - g_d -; - -33 - gpublic -: - -34 -exic - -BoundedRd -(cڡ -__FshSgHr -* -r -, -size_t - -size -) - -35 : -_r -( -t_ -( -r -)), -_d -(_+ -size -) {} - -37  -ad -() { - -38 i( - g_r - < - g_d -) - -39  -pgm_ad_by -( -_r -++); - -44 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -45 -size_t - - gavaab - = -ic_ -( -_d - - -_r -); - -46 i( - gavaab - < - gngth -) - -47 - gngth - = -avaab -; - -48 -memy_P -( -bufr -, -_r -, -ngth -); - -49 - g_r - + -ngth -; - -50  - gngth -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - < -tyme - - gTIt -> - -10 as - cItRd - { - -11 -TIt - - g_r -, - g_d -; - -13 - gpublic -: - -14 -exic - -ItRd -( -TIt - -beg -, TIt -d -) - -15 : -_r -( -beg -), -_d -( -d -) {} - -17  -ad -() { - -18 i( - g_r - < - g_d -) - -19  - gic_ -<>(* - g_r -++); - -24 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -25 -size_t - - gi - = 0; - -26  - gi - < - gngth - && - g_r - < - g_d - - gbufr -[ -i -++] = * -_r -++; - -27  - gi -; - -31 - gme - < -tyme - - gT -> - -32  - svoid_ - { - -33  - tty -; - -36 - gme - < -tyme - - gTSour -> - -37  - gRd -< - gTSour -, -tyme - - gvoid_ -:: -ty -> - -38 : -ItRd -< -tyme - -TSour -:: -cڡ_ -> { - -39 -exic - -Rd -(cڡ -TSour -& -sour -) - -40 : -ItRd -< -tyme - -TSour -:: -cڡ_ ->( -sour -. -beg -(), - -41 - gsour -. -d -()) {} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12  - sIsChOrVoid - { - -13 cڡ -bo - - gvue - = - -14 -is_me -< -T -, >:: -vue - || is_same::value || - -15 -is_me -< -T -, >:: -vue - || is_same::value; - -18 - gme - < -tyme - - gT -> - -19  - gIsChOrVoid - : -IsChOrVoid -< -T -> {}; - -21 - gme - < -tyme - - gTSour -> - -22  - gRd -< - gTSour -*, - -23 -tyme - - gab_if -< - gIsChOrVoid -< - gTSour ->:: -vue ->:: -ty -> { - -24 cڡ * -_r -; - -26 - gpublic -: - -27 -exic - -Rd -(cڡ * -r -) - -28 : -_r -( -r - ? -t_ -(ptr) : "") {} - -30  -ad -() { - -31  -ic_ -<>(* -_r -++); - -34 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -35  -size_t - - gi - = 0; i < - gngth -; i++ - gbufr -[ -i -] = * -_r -++; - -36  - gngth -; - -40 - gme - < -tyme - - gTSour -> - -41  - gBoundedRd -< - gTSour -*, - -42 -tyme - - gab_if -< - gIsChOrVoid -< - gTSour ->:: -vue ->:: -ty -> - -43 : -public - -ItRd - { - -44 -public -: - -45 -exic - -BoundedRd -(cڡ * -r -, -size_t - -n -) - -46 : -ItRd -( -t_ -( -r -), - -47 - gt_ -( - gr -+ - gn -) {} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTSour -> - -12  - gRd -< - gTSour -, -tyme - - gab_if -< - -13 - gis_ba_of -< - gd -:: -iam -, - gTSour ->:: -vue ->:: -ty -> { - -14 -public -: - -15 -exic - -Rd -( -d -:: -iam -& -am -: -_am -(&stream) {} - -17  -ad -() { - -18  -_am --> -g -(); - -21 -size_t - -adBys -(* -bufr -, size_ -ngth -) { - -22 - g_am --> -ad -( -bufr -, -ic_ -< -d -:: -amsize ->( -ngth -)); - -23  - gic_ -< - gsize_t ->( - g_am --> -gcou -()); - -26 - give -: - -27 -d -:: -iam -* -_am -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - -ass - - gTDerliz -, -tyme - - gTRd -, - -16 -tyme - - gTWr -> - -17 - gTDerliz -< - gTRd -, - gTWr -> -makeDerliz -( -MemyPo - & -po -, - -18 -TRd - -ad -, - -19 -TWr - -wr -) { - -20  - gTDerliz -< - gTRd -, - gTWr ->( - gpo -, - gad -, - gwr -); - -28 - gme - -ass - - gTDerliz -, -tyme - - gTSg -, - -29 -tyme - - gTFr -> - -30 -tyme - - gab_if -:: -vue -, - gDerliziE ->:: -ty - - -31 -derlize -( -JsDocumt - & -doc -, cڡ -TSg - & -put -, -NegLim - -ágLim -, - -32 -TFr - -fr -) { - -33 - gRd -< - gTSg -> -ad -( -put -); - -34 - gdoc -. -r -(); - -35  - gmakeDerliz -< - gTDerliz ->( - -36 - gdoc -. -memyPo -(), - gad -, - -37 -makeSgStage -( -doc -. -memyPo -(), -put -)) - -38 . -r -( -doc -. -da -(), -fr -, -ágLim -); - -44 - gme - -ass - - gTDerliz -, -tyme - - gTCh -, - -45 -tyme - - gTFr -> - -46 -DerliziE - -derlize -( -JsDocumt - & -doc -, -TCh - * -put -, - -47 -size_t - -putSize -, -NegLim - -ágLim -, - -48 -TFr - -fr -) { - -49 - gBoundedRd -< - gTCh - *> -ad -( -put -, -putSize -); - -50 - gdoc -. -r -(); - -51  - gmakeDerliz -< - gTDerliz ->( - -52 - gdoc -. -memyPo -(), - gad -, - -53 -makeSgStage -( -doc -. -memyPo -(), -put -)) - -54 . -r -( -doc -. -da -(), -fr -, -ágLim -); - -59 - gme - -ass - - gTDerliz -, -tyme - - gTSm -, - -60 -tyme - - gTFr -> - -61 -DerliziE - -derlize -( -JsDocumt - & -doc -, -TSm - & -put -, - -62 -NegLim - -ágLim -, -TFr - -fr -) { - -63 - gRd -< - gTSm -> -ad -( -put -); - -64 - gdoc -. -r -(); - -65  - gmakeDerliz -< - gTDerliz ->( - -66 - gdoc -. -memyPo -(), - gad -, - -67 -makeSgStage -( -doc -. -memyPo -(), -put -)) - -68 . -r -( -doc -. -da -(), -fr -, -ágLim -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gTAot -> - -14 as - cAotOwr - { - -15 - gpublic -: - -16 -AotOwr -() {} - -17 -AotOwr -(cڡ AotOwr& -c -: -_lot -(src._allocator) {} - -18 -AotOwr -( -TAot - -a -: -_lot -(a) {} - -20 * -lo -( -size_t - -size -) { - -21  -_lot -. -lo -( -size -); - -24  -do -(* -r -) { - -25 i( - gr -) - -26 - g_lot -. -do -( -r -); - -29 * -lo -(* -r -, -size_t - -w_size -) { - -30  - g_lot -. -lo -( -r -, -w_size -); - -33 - gTAot -& -lot -() { - -34  - g_lot -; - -37 - give -: - -38 -TAot - -_lot -; - -41 - gme - < -tyme - - gTAot -> - -42 -ass - - gBasicJsDocumt - : -AotOwr -< -TAot ->, -public - - gJsDocumt - { - -43 - gpublic -: - -44 -exic - -BasicJsDocumt -( -size_t - - -, -TAot - -loc - = TAllocator()) - -45 : -AotOwr -< -TAot ->( -loc -), -JsDocumt -( -locPo -( - -)) {} - -48 -BasicJsDocumt -(cڡ BasicJsDocumt& -c -) - -49 : -AotOwr -< -TAot ->( -c -), -JsDocumt -() { - -50 -cyAssignFrom -( -c -); - -54 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -55 -BasicJsDocumt -(BasicJsDocumt&& -c -: -AotOwr -< -TAot ->(src) { - -56 -moveAssignFrom -( -c -); - -60 -BasicJsDocumt -(cڡ -JsDocumt -& -c -) { - -61 -cyAssignFrom -( -c -); - -65 - gme - < -tyme - - gT -> - -66 -BasicJsDocumt -( - -67 cڡ -T -& -c -, - -68 -tyme - -ab_if -< - -69 -is_me -< -T -, -VRef ->:: -vue - || is_me::value || - -70 -is_me -< -T -, -AayRef ->:: -vue - || is_me::value || - -71 -is_me -< -T -, -ObjeRef ->:: -vue - || - -72 -is_me -< -T -, -ObjeCڡRef ->:: -vue ->:: -ty -* = 0) - -73 : -JsDocumt -( -locPo -( -c -. -memyUge -())) { - -74 -t -( -c -); - -78 -BasicJsDocumt -( -VRef - -c -) - -79 : -JsDocumt -( -locPo -( -c -. -memyUge -())) { - -80 -t -( -c -); - -83 ~ -BasicJsDocumt -() { - -84 -Po -(); - -87 - gBasicJsDocumt -& - gݔ -=(cڡ -BasicJsDocumt -& -c -) { - -88 -cyAssignFrom -( -c -); - -89  * - gthis -; - -92 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -93 - gBasicJsDocumt -& - gݔ -=( -BasicJsDocumt -&& -c -) { - -94 -moveAssignFrom -( -c -); - -95  * - gthis -; - -99 - gme - < -tyme - - gT -> - -100 - gBasicJsDocumt -& - gݔ -=(cڡ -T -& -c -) { - -101 -locPoIfTooSml -( -c -. -memyUge -()); - -102 -t -( -c -); - -103  * - gthis -; - -106  -shrkToF -() { - -107 -rdiff_t - - gbys_aimed - = -_po -. -squash -(); - -108 i( - gbys_aimed - == 0) - -111 * - gd_r - = -_po -. -bufr -(); - -112 * - gw_r - = -this --> -lo -( -d_r -, -_po -. -cy -()); - -114 -rdiff_t - - gr_offt - = - -115 -ic_ -<*>( -w_r -- stic_<*>( -d_r -); - -117 - g_po -. -movePors -( -r_offt -); - -118 - g_da -. -movePors -( -r_offt -,_off- -bys_aimed -); - -121 -bo - -gbageC -() { - -123 -BasicJsDocumt - -tmp -(* -this -); - -124 i(! - gtmp -. -cy -()) - -125  - gl -; - -126 - gtmp -. -t -(* -this -); - -127 -moveAssignFrom -( -tmp -); - -128  - gue -; - -131 -usg - - gAotOwr -< - gTAot ->:: -lot -; - -133 - give -: - -134 -MemyPo - -locPo -( -size_t - -quedSize -) { - -135 -size_t - - - = -addPaddg -( -quedSize -); - -136  -MemyPo -( -t_ -<*>( -this --> -lo -( - -)), capa); - -139  -locPoIfTooSml -( -size_t - -quedSize -) { - -140 i( - gquedSize - < -cy -()) - -142 -Po -(); - -143 -aPo -( -locPo -( -addPaddg -( -quedSize -))); - -146  -Po -() { - -147 - gthis --> -do -( -memyPo -(). -bufr -()); - -150  -cyAssignFrom -(cڡ -JsDocumt -& -c -) { - -151 -locPoIfTooSml -( -c -. -cy -()); - -152 -t -( -c -); - -155  -moveAssignFrom -( -BasicJsDocumt -& -c -) { - -156 -Po -(); - -157 - g_da - = -c -. -_da -; - -158 - g_po - = -c -. -_po -; - -159 - gc -. - g_da -. -tNu -(); - -160 - gc -. - g_po - = -MemyPo -(0, 0); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13  - sDeuAot - { - -14 * -lo -( -size_t - -size -) { - -15  -mloc -( -size -); - -18  -do -(* -r -) { - -19 - -( -r -); - -22 * -lo -(* -r -, -size_t - -w_size -) { - -23  -loc -( -r -, -w_size -); - -27  - gBasicJsDocumt -< - tDeuAot -> - tDymicJsDocumt -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 as - cJsDocumt - : -public - -Visab - { - -17 -public -: - -18 -me - < -tyme - -Vis -> - -19  -ac -( -Vis -& -vis -) const { - -20  -gV -(). -ac -( -vis -); - -23 - gme - < -tyme - - gT -> - -24 -tyme - - gVAs -< - gT ->:: -ty - -as -() { - -25  -gV -(). -me - -as -< -T ->(); - -28 - gme - < -tyme - - gT -> - -29 -tyme - - gVCڡAs -< - gT ->:: -ty - -as -() const { - -30  -gV -(). -me - -as -< -T ->(); - -33  -r -() { - -34 - g_po -. -r -(); - -35 - g_da -. -tNu -(); - -38 - gme - < -tyme - - gT -> - -39 -bo - -is -() const { - -40  -gV -(). -me - - gis -< - gT ->(); - -43 -bo - -isNu -() const { - -44  -gV -(). -isNu -(); - -47 -size_t - -memyUge -() const { - -48  - g_po -. -size -(); - -51 -size_t - -ág -() const { - -52  - g_da -. -ág -(); - -55 -size_t - -cy -() const { - -56  - g_po -. -cy -(); - -59 -size_t - -size -() const { - -60  - g_da -. -size -(); - -63 -bo - -t -(cڡ -JsDocumt -& -c -) { - -64  - gto -< - gVRef ->(). -t -( -c -. -as -< -VRef ->()); - -67 - gme - < -tyme - - gT -> - -68 -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -t -( - -69 cڡ -T -& -c -) { - -70  -to -< -VRef ->(). -t -( -c -); - -73 - gme - < -tyme - - gT -> - -74 -tyme - - gVTo -< - gT ->:: -ty - -to -() { - -75 -r -(); - -76  -gV -(). -me - - gto -< - gT ->(); - -80 - gMemyPo -& -memyPo -() { - -81  - g_po -; - -84 - gVDa -& -da -() { - -85  - g_da -; - -88 -AayRef - -NeedAay -() { - -89  -addEmt -(). - gto -< - gAayRef ->(); - -95 - gme - < -tyme - - gTCh -> - -96 -AayRef - -NeedAay -( -TCh -* -key -) { - -97  -gOrAddMemb -( -key -). -me - - gto -< - gAayRef ->(); - -102 - gme - < -tyme - - gTSg -> - -103 -AayRef - -NeedAay -(cڡ -TSg -& -key -) { - -104  -gOrAddMemb -( -key -). -me - - gto -< - gAayRef ->(); - -107 -ObjeRef - -NeedObje -() { - -108  -addEmt -(). - gto -< - gObjeRef ->(); - -114 - gme - < -tyme - - gTCh -> - -115 -ObjeRef - -NeedObje -( -TCh -* -key -) { - -116  -gOrAddMemb -( -key -). -me - - gto -< - gObjeRef ->(); - -121 - gme - < -tyme - - gTSg -> - -122 -ObjeRef - -NeedObje -(cڡ -TSg -& -key -) { - -123  -gOrAddMemb -( -key -). -me - - gto -< - gObjeRef ->(); - -129 - gme - < -tyme - - gTCh -> - -130 -bo - -cڏsKey -( -TCh -* -key -) const { - -131  ! -gMemb -( -key -). -isUndefed -(); - -136 - gme - < -tyme - - gTSg -> - -137 -bo - -cڏsKey -(cڡ -TSg -& -key -) const { - -138  ! -gMemb -( -key -). -isUndefed -(); - -143 - gme - < -tyme - - gTSg -> - -144 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - -145 - gMembProxy -< - gJsDocumt -&, - gTSg -> >:: -ty - - -146 -ݔ -[](cڡ -TSg -& -key -) { - -147  -MembProxy -< -JsDocumt -&, - gTSg ->(* - gthis -, - gkey -); - -153 - gme - < -tyme - - gTCh -> - -154 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - -155 - gMembProxy -< - gJsDocumt -&, - gTCh -*> >:: -ty - - -156 -ݔ -[]( -TCh -* -key -) { - -157  -MembProxy -< -JsDocumt -&, - gTCh -*>(* - gthis -, - gkey -); - -162 - gme - < -tyme - - gTSg -> - -163 -FORCE_INLINE - - -164 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -165 -ݔ -[](cڡ -TSg -& -key -) const { - -166  -gMemb -( -key -); - -172 - gme - < -tyme - - gTCh -> - -173 -FORCE_INLINE - - -174 -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - gVCڡRef ->:: -ty - - -175 -ݔ -[]( -TCh -* -key -) const { - -176  -gMemb -( -key -); - -179 -FORCE_INLINE - - gEmtProxy -< - gJsDocumt -&> - gݔ -[]( -size_t - - gdex -) { - -180  - gEmtProxy -< - gJsDocumt -&>(* - gthis -, - gdex -); - -183 -FORCE_INLINE - -VCڡRef - - gݔ -[]( -size_t - - gdex -) const { - -184  -gEmt -( -dex -); - -187 -FORCE_INLINE - -VRef - -gEmt -( -size_t - -dex -) { - -188  -VRef -(& -_po -, -_da -. -gEmt -( -dex -)); - -191 -FORCE_INLINE - -VCڡRef - -gEmt -( -size_t - -dex -) const { - -192  -VCڡRef -( -_da -. -gEmt -( -dex -)); - -195 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t - -dex -) { - -196  -VRef -(& -_po -, -_da -. -gOrAddEmt -( -dex -, &_pool)); - -202 - gme - < -tyme - - gTCh -> - -203 -FORCE_INLINE - -VCڡRef - -gMemb -( -TCh -* -key -) const { - -204  -VCڡRef -( -_da -. -gMemb -( -adtSg -( -key -))); - -209 - gme - < -tyme - - gTSg -> - -210 -FORCE_INLINE - - -211 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -212 -gMemb -(cڡ -TSg -& -key -) const { - -213  -VCڡRef -( -_da -. -gMemb -( -adtSg -( -key -))); - -219 - gme - < -tyme - - gTCh -> - -220 -FORCE_INLINE - -VRef - -gMemb -( -TCh -* -key -) { - -221  -VRef -(& -_po -, -_da -. -gMemb -( -adtSg -( -key -))); - -226 - gme - < -tyme - - gTSg -> - -227 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVRef ->:: -ty - - -228 -gMemb -(cڡ -TSg -& -key -) { - -229  -VRef -(& -_po -, -_da -. -gMemb -( -adtSg -( -key -))); - -235 - gme - < -tyme - - gTCh -> - -236 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh -* -key -) { - -237  -VRef -(& -_po -, -_da -. -gOrAddMemb -( -adtSg -( -key -), &_pool)); - -242 - gme - < -tyme - - gTSg -> - -243 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg -& -key -) { - -244  -VRef -(& -_po -, -_da -. -gOrAddMemb -( -adtSg -( -key -), &_pool)); - -247 -FORCE_INLINE - -VRef - -addEmt -() { - -248  -VRef -(& -_po -, -_da -. -addEmt -(&_pool)); - -251 - gme - < -tyme - - gTVue -> - -252 -FORCE_INLINE - -bo - -add -(cڡ -TVue -& -vue -) { - -253  -addEmt -(). -t -( -vue -); - -259 - gme - < -tyme - - gTCh -> - -260 -FORCE_INLINE - -bo - -add -( -TCh -* -vue -) { - -261  -addEmt -(). -t -( -vue -); - -264 -FORCE_INLINE -  -move -( -size_t - -dex -) { - -265 - g_da -. -move -( -dex -); - -270 - gme - < -tyme - - gTCh -> - -271 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue ->:: -ty - -move -( - -272 -TCh -* -key -) { - -273 -_da -. -move -( -adtSg -( -key -)); - -277 - gme - < -tyme - - gTSg -> - -278 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -279 cڡ -TSg -& -key -) { - -280 -_da -. -move -( -adtSg -( -key -)); - -283 -FORCE_INLINE - -ݔ - -VCڡRef -() const { - -284  -VCڡRef -(& -_da -); - -287 -bo - - gݔ -==( -VCڡRef - -rhs -) const { - -288  -gV -(= -rhs -; - -291 -bo - - gݔ -!=( -VCڡRef - -rhs -) const { - -292  -gV -(! -rhs -; - -295 - geed -: - -296 -JsDocumt -(: -_po -(0, 0) { - -297 - g_da -. -tNu -(); - -300 -JsDocumt -( -MemyPo - -po -: -_po -(pool) { - -301 -_da -. -tNu -(); - -304 -JsDocumt -(* -buf -, -size_t - - -: -_po -(buf, capa) { - -305 - g_da -. -tNu -(); - -308  -aPo -( -MemyPo - -po -) { - -309 - g_po - = -po -; - -312 -VRef - -gV -() { - -313  -VRef -(& -_po -, & -_da -); - -316 -VCڡRef - -gV -() const { - -317  -VCڡRef -(& -_da -); - -320 -MemyPo - - g_po -; - -321 -VDa - - g_da -; - -323 - give -: - -324 -JsDocumt -(const JsonDocument&); - -325 - gJsDocumt -& - gݔ -=(cڡ -JsDocumt -&); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -size_t - - gdesedCacy -> - -12 as - cSticJsDocumt - : -public - -JsDocumt - { - -13 cڡ -size_t - -_cy - = - -14 -AddPaddg -< -Max -<1, - gdesedCacy ->:: -vue ->::value; - -16 - gpublic -: - -17 -SticJsDocumt -(: -JsDocumt -( -_bufr -, -_cy -) {} - -19 -SticJsDocumt -(cڡ SticJsDocumt& -c -) - -20 : -JsDocumt -( -_bufr -, -_cy -) { - -21 -t -( -c -); - -24 - gme - < -tyme - - gT -> - -25 -SticJsDocumt -(cڡ -T -& -c -, - -26 -tyme - -ab_if -< -IsVisab -< -T ->:: -vue ->:: -ty -* = 0) - -27 : -JsDocumt -( -_bufr -, -_cy -) { - -28 -t -( -c -); - -32 -SticJsDocumt -( -VRef - -c -: -JsDocumt -( -_bufr -, -_cy -) { - -33 -t -( -c -); - -36 -SticJsDocumt - - gݔ -=(cڡ SticJsDocumt& -c -) { - -37 -t -( -c -); - -38  * - gthis -; - -41 - gme - < -tyme - - gT -> - -42 -SticJsDocumt - - gݔ -=(cڡ -T -& -c -) { - -43 -t -( -c -); - -44  * - gthis -; - -47  -gbageC -() { - -48 -SticJsDocumt - -tmp -(* -this -); - -49 -t -( -tmp -); - -52 - give -: - -53  -_bufr -[ -_cy -]; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cEsSequ - { - -12 - gpublic -: - -14  -esCh -( -c -) { - -15 cڡ * -p - = -esTab -( -ue -); - -16  - gp -[0] &&[1] ! -c -) { - -17 -p - += 2; - -19  - gp -[0]; - -23  -usCh -( -c -) { - -24 cڡ * - gp - = -esTab -( -l -); - -26 i( - gp -[0] == '\0') - -28 i( - gp -[0] = -c -) - -29  -p -[1]; - -30 - gp - += 2; - -34 - give -: - -35 cڡ * -esTab -( -bo - -exudeSidus -) { - -36  &"//\"\"\\\\b\bf\\\\t"[ -exudeSidus - ? 2 : 0]; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -18 -mea - - gARDUINOJSON_NAMESPACE - { - -20 - gme - < -tyme - - gTRd -,ym - gTSgStage -> - -21 as - cJsDerliz - { - -22  -tyme - - tmove_n -< - tTSgStage ->:: - tty -:: - tSgBud - - -23 - tSgBud -; - -25  - sSgOrE - { - -26 -DerliziE - - gr -; - -27 cڡ * - gvue -; - -29 -SgOrE -( -DerliziE - -e -: -r -(e) {} - -30 -SgOrE -( -DerliziE -:: -Code - -c -: -r -(c) {} - -31 -SgOrE -(cڡ * -s -: -r -( -DerliziE -:: -Ok -), -vue -(s) {} - -34 - gpublic -: - -35 -JsDerliz -( -MemyPo - & -po -, -TRd - -ad -, - -36 -TSgStage - -rgStage -) - -37 : -_po -(& -po -), -_rgStage -( -rgStage -), -_tch -( -ad -) {} - -39 - gme - < -tyme - - gTFr -> - -40 -DerliziE - -r -( -VDa - & -v -, -TFr - -fr -, - -41 -NegLim - -ágLim -) { - -42 -DerliziE - - gr - = -rV -( -v -, -fr -, -ágLim -); - -44 i(! - gr - && - g_tch -. -ϡ -(!0 && ! -v -. -isEnod -()) { - -46 -r - = -DerliziE -:: -InvidIut -; - -49  - gr -; - -52 - give -: - -53 -JsDerliz - & -ݔ -=(const JsonDeserializer &); - -55  -cut -() { - -56  - g_tch -. -cut -(); - -59  -move -() { - -60 - g_tch -. -r -(); - -63 -bo - -t -( -chToSk -) { - -64 i( -cut -(! -chToSk -) - -65  -l -; - -66 -move -(); - -67  - gue -; - -70 - gme - < -tyme - - gTFr -> - -71 -DerliziE - -rV -( -VDa - & -v -, -TFr - -fr -, - -72 -NegLim - -ágLim -) { - -73 -DerliziE - - gr - = -skSsAndCommts -(); - -74 i( - gr -) - -75  - gr -; - -77  -cut -()) { - -79 i( -fr -. -lowAay -()) - -80  -rAay -( -v -. -toAay -(), -fr -, -ágLim -); - -82  -skAay -( -ágLim -); - -85 i( -fr -. -lowObje -()) - -86  -rObje -( -v -. -toObje -(), -fr -, -ágLim -); - -88  -skObje -( -ágLim -); - -92 i( -fr -. -lowVue -()) - -93  -rSgVue -( -v -); - -95  -skSg -(); - -98 i( -fr -. -lowVue -()) - -99  -rNumicVue -( -v -); - -101  -skNumicVue -(); - -105 -DerliziE - -skV -( -NegLim - -ágLim -) { - -106 -DerliziE - - gr - = -skSsAndCommts -(); - -107 i( - gr -) - -108  - gr -; - -110  -cut -()) { - -112  -skAay -( -ágLim -); - -115  -skObje -( -ágLim -); - -119  -skSg -(); - -122  -skNumicVue -(); - -126 - gme - < -tyme - - gTFr -> - -127 -DerliziE - -rAay -( -CiDa - & -y -, -TFr - -fr -, - -128 -NegLim - -ágLim -) { - -129 i( - gágLim -. -ached -()) - -130  - gDerliziE -:: -TooDp -; - -133 -ARDUINOJSON_ASSERT -( -cut -() == '['); - -134 -move -(); - -137 -DerliziE - - gr - = -skSsAndCommts -(); - -138 i( - gr -) - -139  - gr -; - -142 i( -t -(']')) - -143  - gDerliziE -:: -Ok -; - -145 -TFr - - gmembFr - = -fr -[0UL]; - -149 i( - gmembFr -. -low -()) { - -151 -VDa - * - gvue - = -y -. -addEmt -( -_po -); - -152 i(! - gvue -) - -153  - gDerliziE -:: -NoMemy -; - -156 - gr - = -rV -(* -vue -, -membFr -, -ágLim -. -deemt -()); - -157 i( - gr -) - -158  - gr -; - -160 - gr - = -skV -( -ágLim -. -deemt -()); - -161 i( - gr -) - -162  - gr -; - -166 - gr - = -skSsAndCommts -(); - -167 i( - gr -) - -168  - gr -; - -171 i( -t -(']')) - -172  - gDerliziE -:: -Ok -; - -173 i(! -t -(',')) - -174  - gDerliziE -:: -InvidIut -; - -178 -DerliziE - -skAay -( -NegLim - -ágLim -) { - -179 i( - gágLim -. -ached -()) - -180  - gDerliziE -:: -TooDp -; - -183 -ARDUINOJSON_ASSERT -( -cut -() == '['); - -184 -move -(); - -189 -DerliziE - - gr - = -skV -( -ágLim -. -deemt -()); - -190 i( - gr -) - -191  - gr -; - -194 - gr - = -skSsAndCommts -(); - -195 i( - gr -) - -196  - gr -; - -199 i( -t -(']')) - -200  - gDerliziE -:: -Ok -; - -201 i(! -t -(',')) - -202  - gDerliziE -:: -InvidIut -; - -206 - gme - < -tyme - - gTFr -> - -207 -DerliziE - -rObje -( -CiDa - & -obje -, -TFr - -fr -, - -208 -NegLim - -ágLim -) { - -209 i( - gágLim -. -ached -()) - -210  - gDerliziE -:: -TooDp -; - -213 -ARDUINOJSON_ASSERT -( -cut -() == '{'); - -214 -move -(); - -217 -DerliziE - - gr - = -skSsAndCommts -(); - -218 i( - gr -) - -219  - gr -; - -222 i( -t -('}')) - -223  - gDerliziE -:: -Ok -; - -228 -SgOrE - - gkey - = -rKey -(); - -229 - gr - = -key -. -r -; - -230 i( - gr -) - -231  - gr -; - -234 - gr - = -skSsAndCommts -(); - -235 i( - gr -) - -236  - gr -; - -237 i(! -t -(':')) - -238  - gDerliziE -:: -InvidIut -; - -240 -TFr - - gmembFr - = -fr -[ -key -. -vue -]; - -242 i( - gmembFr -. -low -()) { - -243 -VDa - * - gv - = -obje -. -gMemb -( -adtSg -( -key -. -vue -)); - -244 i(! - gv -) { - -246 -VSl - * - g - = -obje -. -addSl -( -_po -); - -247 i(! - g -) - -248  - gDerliziE -:: -NoMemy -; - -250 - g --> -tOwdKey -( -make_n_nu -( -key -. -vue -)); - -252 - gv - = - --> -da -(); - -256 - gr - = -rV -(* -v -, -membFr -, -ágLim -. -deemt -()); - -257 i( - gr -) - -258  - gr -; - -260 - g_rgStage -. -aim -( -key -. -vue -); - -261 - gr - = -skV -( -ágLim -. -deemt -()); - -262 i( - gr -) - -263  - gr -; - -267 - gr - = -skSsAndCommts -(); - -268 i( - gr -) - -269  - gr -; - -272 i( -t -('}')) - -273  - gDerliziE -:: -Ok -; - -274 i(! -t -(',')) - -275  - gDerliziE -:: -InvidIut -; - -278 - gr - = -skSsAndCommts -(); - -279 i( - gr -) - -280  - gr -; - -284 -DerliziE - -skObje -( -NegLim - -ágLim -) { - -285 i( - gágLim -. -ached -()) - -286  - gDerliziE -:: -TooDp -; - -289 -ARDUINOJSON_ASSERT -( -cut -() == '{'); - -290 -move -(); - -293 -DerliziE - - gr - = -skSsAndCommts -(); - -294 i( - gr -) - -295  - gr -; - -298 i( -t -('}')) - -299  - gDerliziE -:: -Ok -; - -304 - gr - = -skV -( -ágLim -. -deemt -()); - -305 i( - gr -) - -306  - gr -; - -309 - gr - = -skSsAndCommts -(); - -310 i( - gr -) - -311  - gr -; - -314 i(! -t -(':')) - -315  - gDerliziE -:: -InvidIut -; - -318 - gr - = -skV -( -ágLim -. -deemt -()); - -319 i( - gr -) - -320  - gr -; - -323 - gr - = -skSsAndCommts -(); - -324 i( - gr -) - -325  - gr -; - -328 i( -t -('}')) - -329  - gDerliziE -:: -Ok -; - -330 i(! -t -(',')) - -331  - gDerliziE -:: -InvidIut -; - -335 -SgOrE - -rKey -() { - -336 i( -isQue -( -cut -())) { - -337  -rQuedSg -(); - -339  -rNQuedSg -(); - -343 -DerliziE - -rSgVue -( -VDa - & -v -) { - -344 -SgOrE - - gsu - = -rQuedSg -(); - -345 i( - gsu -. - gr -) - -346  - gsu -. - gr -; - -347 - gv -. -tOwdSg -( -make_n_nu -( -su -. -vue -)); - -348  - gDerliziE -:: -Ok -; - -351 -SgOrE - -rQuedSg -() { - -352 -SgBud - - gbud - = -_rgStage -. -tSg -(); - -353 #i -ARDUINOJSON_DECODE_UNICODE - - -354 - gUtf16 -:: -Codot - -codot -; - -356 cڡ  - gCh - = -cut -(); - -358 -move -(); - -360  - gc - = -cut -(); - -361 -move -(); - -362 i( - gc - = -Ch -) - -365 i( - gc - == '\0') - -366  -DerliziE -:: -IncomeIut -; - -368 i( - gc - == '\\') { - -369 -c - = -cut -(); - -370 i( - gc - == '\0') - -371  -DerliziE -:: -IncomeIut -; - -372 i( - gc - == 'u') { - -373 #i -ARDUINOJSON_DECODE_UNICODE - - -374 -move -(); - -375 -ut16_t - - gcodeun -; - -376 -DerliziE - - gr - = -rHex4 -( -codeun -); - -377 i( - gr -) - -378  - gr -; - -379 i( - gcodot -. -nd -( -codeun -)) - -380 - gUtf8 -:: -codeCodot -( -codot -. -vue -(), -bud -); - -383  - gDerliziE -:: -NSu܋d -; - -387 - gc - = -EsSequ -:: -usCh -( -c -); - -388 i( - gc - == '\0') - -389  -DerliziE -:: -InvidIut -; - -390 -move -(); - -393 - gbud -. -nd -( -c -); - -396 cڡ * - gsu - = -bud -. -come -(); - -397 i(! - gsu -) - -398  - gDerliziE -:: -NoMemy -; - -399  - gsu -; - -402 -SgOrE - -rNQuedSg -() { - -403 -SgBud - - gbud - = -_rgStage -. -tSg -(); - -405  - gc - = -cut -(); - -406 -ARDUINOJSON_ASSERT -( -c -); - -408 i( -nBeInNQuedSg -( -c -)) { - -410 -move -(); - -411 - gbud -. -nd -( -c -); - -412 - gc - = -cut -(); - -413 }  -nBeInNQuedSg -( -c -)); - -415  - gDerliziE -:: -InvidIut -; - -418 cڡ * - gsu - = -bud -. -come -(); - -419 i(! - gsu -) - -420  - gDerliziE -:: -NoMemy -; - -421  - gsu -; - -424 -DerliziE - -skSg -() { - -425 cڡ  - gCh - = -cut -(); - -427 -move -(); - -429  - gc - = -cut -(); - -430 -move -(); - -431 i( - gc - = -Ch -) - -433 i( - gc - == '\0') - -434  -DerliziE -:: -IncomeIut -; - -435 i( - gc - == '\\') { - -436 i( -cut -() != '\0') - -437 -move -(); - -441  - gDerliziE -:: -Ok -; - -444 -DerliziE - -rNumicVue -( -VDa - & -su -) { - -445  - gbufr -[64]; - -446 -ut8_t - - gn - = 0; - -448  - gc - = -cut -(); - -449  -nBeInNQuedSg -( -c -&& - gn - < 63) { - -450 -move -(); - -451 - gbufr -[ -n -++] = -c -; - -452 - gc - = -cut -(); - -454 - gbufr -[ -n -] = 0; - -456 - gc - = -bufr -[0]; - -457 i( - gc - == 't') { - -458 -su -. -tBoޗn -( -ue -); - -459  - gn - =4 ? -DerliziE -:: -Ok - - -460 : -DerliziE -:: -IncomeIut -; - -462 i( - gc - == 'f') { - -463 -su -. -tBoޗn -( -l -); - -464  - gn - =5 ? -DerliziE -:: -Ok - - -465 : -DerliziE -:: -IncomeIut -; - -467 i( - gc - == 'n') { - -469  -n - =4 ? -DerliziE -:: -Ok - - -470 : -DerliziE -:: -IncomeIut -; - -473 - gPdNumb -< - gFlt -, - gUI -> - gnum - = -rNumb -< -Flt -, UI>( - gbufr -); - -475  - gnum -. -ty -()) { - -476  - gVALUE_IS_NEGATIVE_INTEGER -: - -477 -su -. -tNegiveIeg -( -num -. -utVue -); - -478  - gDerliziE -:: -Ok -; - -480  - gVALUE_IS_POSITIVE_INTEGER -: - -481 -su -. -tPosiveIeg -( -num -. -utVue -); - -482  - gDerliziE -:: -Ok -; - -484  - gVALUE_IS_FLOAT -: - -485 -su -. -tFlt -( -num -. -tVue -); - -486  - gDerliziE -:: -Ok -; - -489  - gDerliziE -:: -InvidIut -; - -492 -DerliziE - -skNumicVue -() { - -493  - gc - = -cut -(); - -494  -nBeInNQuedSg -( -c -)) { - -495 -move -(); - -496 - gc - = -cut -(); - -498  - gDerliziE -:: -Ok -; - -501 -DerliziE - -rHex4 -( -ut16_t - & -su -) { - -502 - gsu - = 0; - -503  -ut8_t - - gi - = 0; i < 4; ++i) { - -504  - gdig - = -cut -(); - -505 i(! - gdig -) - -506  - gDerliziE -:: -IncomeIut -; - -507 -ut8_t - - gvue - = -decodeHex -( -dig -); - -508 i( - gvue - > 0x0F) - -509  - gDerliziE -:: -InvidIut -; - -510 - gsu - = -ut16_t -(( -su - << 4| -vue -); - -511 -move -(); - -513  - gDerliziE -:: -Ok -; - -516  -le - -bo - -isBwn -( -c -,  -m -,  -max -) { - -517  - gm - < -c - && c < -max -; - -520  -le - -bo - -nBeInNQuedSg -( -c -) { - -521  -isBwn -( -c -, '0', '9') || isBetween(c, '_', 'z') || - -522 -isBwn -( -c -, 'A', 'Z'|| - gc - == '+' || c == '-' || c == '.'; - -525  -le - -bo - -isQue -( -c -) { - -526  - gc - ='\'' || -c - == '\"'; - -529  -le - -ut8_t - -decodeHex -( -c -) { - -530 i( - gc - < 'A') - -531  -ut8_t -( -c - - '0'); - -532 - gc - = ( -c - & ~0x20); - -533  -ut8_t -( -c - - 'A' + 10); - -536 -DerliziE - -skSsAndCommts -() { - -538  -cut -()) { - -541  -DerliziE -:: -IncomeIut -; - -548 -move -(); - -551 #i -ARDUINOJSON_ENABLE_COMMENTS - - -554 -move -(); - -555  -cut -()) { - -558 -move -(); - -559 -bo - - gwasSr - = -l -; - -561  - gc - = -cut -(); - -562 i( - gc - == '\0') - -563  -DerliziE -:: -IncomeIut -; - -564 i( - gc - ='/' && -wasSr -) { - -565 -move -(); - -568 - gwasSr - = -c - == '*'; - -569 -move -(); - -578 -move -(); - -579  - gc - = -cut -(); - -580 i( - gc - == '\0') - -581  -DerliziE -:: -IncomeIut -; - -582 i( - gc - == '\n') - -589  -DerliziE -:: -InvidIut -; - -595  -DerliziE -:: -Ok -; - -600 -MemyPo - * - g_po -; - -601 -TSgStage - - g_rgStage -; - -602 - gLch -< - gTRd -> - g_tch -; - -606 - gme - < -tyme - - gTIut -> - -607 -DerliziE - -derlizeJs -( - -608 -JsDocumt - & -doc -, cڡ -TIut - & -put -, - -609 -NegLim - -ágLim - = - $NegLim -()) { - -610  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, - -611 - `AowAFr -()); - -612 - } -} - -613 - gme - < -tyme - - gTIut -> - -614 -DerliziE - -derlizeJs -( - -615 -JsDocumt - & -doc -, cڡ -TIut - & -put -, -Fr - -fr -, - -616 -NegLim - -ágLim - = - $NegLim -()) { - -617  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -618 - } -} - -619 - gme - < -tyme - - gTIut -> - -620 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, cڡ -TIut - & -put -, - -621 -NegLim - -ágLim -, -Fr - -fr -) { - -622  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -623 - } -} - -626 - gme - < -tyme - - gTIut -> - -627 -DerliziE - -derlizeJs -( - -628 -JsDocumt - & -doc -, -TIut - & -put -, - -629 -NegLim - -ágLim - = - $NegLim -()) { - -630  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, - -631 - `AowAFr -()); - -632 - } -} - -633 - gme - < -tyme - - gTIut -> - -634 -DerliziE - -derlizeJs -( - -635 -JsDocumt - & -doc -, -TIut - & -put -, -Fr - -fr -, - -636 -NegLim - -ágLim - = - $NegLim -()) { - -637  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -638 - } -} - -639 - gme - < -tyme - - gTIut -> - -640 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, -TIut - & -put -, - -641 -NegLim - -ágLim -, -Fr - -fr -) { - -642  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -643 - } -} - -646 - gme - < -tyme - - gTCh -> - -647 -DerliziE - -derlizeJs -( - -648 -JsDocumt - & -doc -, -TCh - * -put -, - -649 -NegLim - -ágLim - = - $NegLim -()) { - -650  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, - -651 - `AowAFr -()); - -652 - } -} - -653 - gme - < -tyme - - gTCh -> - -654 -DerliziE - -derlizeJs -( - -655 -JsDocumt - & -doc -, -TCh - * -put -, -Fr - -fr -, - -656 -NegLim - -ágLim - = - $NegLim -()) { - -657  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -658 - } -} - -659 - gme - < -tyme - - gTCh -> - -660 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, -TCh - * -put -, - -661 -NegLim - -ágLim -, -Fr - -fr -) { - -662  -derlize -< -JsDerliz ->( -doc -, -put -, -ágLim -, -fr -); - -663 - } -} - -666 - gme - < -tyme - - gTCh -> - -667 -DerliziE - -derlizeJs -( - -668 -JsDocumt - & -doc -, -TCh - * -put -, -size_t - -putSize -, - -669 -NegLim - -ágLim - = - $NegLim -()) { - -670  -derlize -< -JsDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -671 - `AowAFr -()); - -672 - } -} - -673 - gme - < -tyme - - gTCh -> - -674 -DerliziE - -derlizeJs -( - -675 -JsDocumt - & -doc -, -TCh - * -put -, -size_t - -putSize -, -Fr - -fr -, - -676 -NegLim - -ágLim - = - $NegLim -()) { - -677  -derlize -< -JsDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -678 -fr -); - -679 - } -} - -680 - gme - < -tyme - - gTCh -> - -681 -DerliziE - - $derlizeJs -( -JsDocumt - & -doc -, -TCh - * -put -, - -682 -size_t - -putSize -, - -683 -NegLim - -ágLim -, -Fr - -fr -) { - -684  -derlize -< -JsDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -685 -fr -); - -686 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -tyme - - gTWr -> - -15 as - cJsSliz - { - -16 - gpublic -: - -17 -JsSliz -( -TWr - -wr -: -_fmr -(writer) {} - -19 -FORCE_INLINE -  -visAay -(cڡ -CiDa - & -y -) { - -20 -wre -('['); - -22 -VSl - * - g - = -y -. -hd -(); - -24  - g - != 0) { - -25 - --> -da -()-> -ac -(* -this -); - -27 - g - = - --> -xt -(); - -28 i( - g - == 0) - -31 -wre -(','); - -34 -wre -(']'); - -37  -visObje -(cڡ -CiDa - & -obje -) { - -38 -wre -('{'); - -40 -VSl - * - g - = -obje -. -hd -(); - -42  - g - != 0) { - -43 -_fmr -. -wreSg -( - --> -key -()); - -44 -wre -(':'); - -45 - g --> -da -()-> -ac -(* -this -); - -47 - g - = - --> -xt -(); - -48 i( - g - == 0) - -51 -wre -(','); - -54 -wre -('}'); - -57  -visFlt -( -Flt - -vue -) { - -58 - g_fmr -. -wreFlt -( -vue -); - -61  -visSg -(cڡ * -vue -) { - -62 - g_fmr -. -wreSg -( -vue -); - -65  -visRawJs -(cڡ * -da -, -size_t - -n -) { - -66 - g_fmr -. -wreRaw -( -da -, -n -); - -69  -visNegiveIeg -( -UI - -vue -) { - -70 - g_fmr -. -wreNegiveIeg -( -vue -); - -73  -visPosiveIeg -( -UI - -vue -) { - -74 - g_fmr -. -wrePosiveIeg -( -vue -); - -77  -visBoޗn -( -bo - -vue -) { - -78 - g_fmr -. -wreBoޗn -( -vue -); - -81  -visNu -() { - -82 - g_fmr -. -wreRaw -("null"); - -85 -size_t - -bysWrn -() const { - -86  - g_fmr -. -bysWrn -(); - -89 - geed -: - -90  -wre -( -c -) { - -91 -_fmr -. -wreRaw -( -c -); - -94  -wre -(cڡ * -s -) { - -95 - g_fmr -. -wreRaw -( -s -); - -98 - give -: - -99 -TextFmr -< -TWr -> -_fmr -; - -102 - gme - < -tyme - - gTSour -,ym - gTDei -> - -103 -size_t - - $rlizeJs -(cڡ -TSour - & -sour -, -TDei - & -dei -) { - -104  -rlize -< -JsSliz ->( -sour -, -dei -); - -105 - } -} - -107 - gme - < -tyme - - gTSour -> - -108 -size_t - - $rlizeJs -(cڡ -TSour - & -sour -, * -bufr -, -size_t - -bufrSize -) { - -109  -rlize -< -JsSliz ->( -sour -, -bufr -, -bufrSize -); - -110 - } -} - -112 - gme - < -tyme - - gTSour -> - -113 -size_t - - $msuJs -(cڡ -TSour - & -sour -) { - -114  -msu -< -JsSliz ->( -sour -); - -115 - } -} - -117 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -118 - gme - < -tyme - - gT -> - -119 -le - -tyme - - gab_if -< - gIsVisab -< - gT ->:: -vue -, - gd -:: -oam - &>:: -ty - - -120 -ݔ -<<( -d -:: -oam - & -os -, cڡ - gT - & - gsour -) { - -121 -rlizeJs -( -sour -, -os -); - -122  - gos -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/Latch.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTRd -> - -12 as - cLch - { - -13 - gpublic -: - -14 -Lch -( -TRd - -ad -: -_ad -ԗd), -_lded -( -l -) { - -15 #i -ARDUINOJSON_DEBUG - - -16 - g_ded - = -l -; - -20  -r -() { - -21 - g_lded - = -l -; - -24  -ϡ -() const { - -25  - g_cut -; - -28 -FORCE_INLINE -  -cut -() { - -29 i(! - g_lded -) { - -30 -ld -(); - -32  - g_cut -; - -35 - give -: - -36  -ld -() { - -37 -ARDUINOJSON_ASSERT -(! -_ded -); - -38  - gc - = -_ad -. -ad -(); - -39 #i -ARDUINOJSON_DEBUG - - -40 i( - gc - <= 0) - -41 -_ded - = -ue -; - -43 - g_cut - = -ic_ -<>( -c - > 0 ? c : 0); - -44 - g_lded - = -ue -; - -47 -TRd - - g_ad -; - -48  - g_cut -; - -49 -bo - - g_lded -; - -50 #i -ARDUINOJSON_DEBUG - - -51 -bo - - g_ded -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -tyme - - gTWr -> - -15 -ass - - gPyJsSliz - : -public - -JsSliz -< -TWr -> { - -16  -JsSliz -< - tTWr -> - tba -; - -18 - gpublic -: - -19 -PyJsSliz -( -TWr - & -wr -: -ba -(wr), -_ág -(0) {} - -21  -visAay -(cڡ -CiDa - & -y -) { - -22 -VSl - * - g - = -y -. -hd -(); - -23 i(! - g -) - -24  - gba -:: -wre -("[]"); - -26 - gba -:: -wre -("[\r\n"); - -27 - g_ág -++; - -28  - g - != 0) { - -29 -dt -(); - -30 - g --> -da -()-> -ac -(* -this -); - -32 - g - = - --> -xt -(); - -33 - gba -:: -wre -( - - ? ",\r\n" : "\r\n"); - -35 - g_ág ---; - -36 -dt -(); - -37 - gba -:: -wre -("]"); - -40  -visObje -(cڡ -CiDa - & -obje -) { - -41 -VSl - * - g - = -obje -. -hd -(); - -42 i(! - g -) - -43  - gba -:: -wre -("{}"); - -45 - gba -:: -wre -("{\r\n"); - -46 - g_ág -++; - -47  - g - != 0) { - -48 -dt -(); - -49 - gba -:: -visSg -( - --> -key -()); - -50 - gba -:: -wre -(": "); - -51 - g --> -da -()-> -ac -(* -this -); - -53 - g - = - --> -xt -(); - -54 - gba -:: -wre -( - - ? ",\r\n" : "\r\n"); - -56 - g_ág ---; - -57 -dt -(); - -58 - gba -:: -wre -("}"); - -61 - give -: - -62  -dt -() { - -63  -ut8_t - -i - = 0; - gi - < - g_ág -; i++ - gba -:: -wre -( -ARDUINOJSON_TAB -); - -66 -ut8_t - - g_ág -; - -69 - gme - < -tyme - - gTSour -,ym - gTDei -> - -70 -size_t - -rlizeJsPy -(cڡ -TSour - & -sour -, -TDei - & -dei -) { - -71  - grlize -< - gPyJsSliz ->( - gsour -, - gdei -); - -74 - gme - < -tyme - - gTSour -> - -75 -size_t - -rlizeJsPy -(cڡ -TSour - & -sour -, * -bufr -, - -76 -size_t - -bufrSize -) { - -77  - grlize -< - gPyJsSliz ->( - gsour -, - gbufr -, - gbufrSize -); - -80 - gme - < -tyme - - gTSour -> - -81 -size_t - -msuJsPy -(cڡ -TSour - & -sour -) { - -82  - gmsu -< - gPyJsSliz ->( - gsour -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 - gme - < -tyme - - gTWr -> - -19 as - cTextFmr - { - -20 - gpublic -: - -21 -exic - -TextFmr -( -TWr - -wr -: -_wr -(wr), -_ngth -(0) {} - -24 -size_t - -bysWrn -() const { - -25  - g_ngth -; - -28  -wreBoޗn -( -bo - -vue -) { - -29 i( - gvue -) - -30 -wreRaw -("true"); - -32 -wreRaw -("false"); - -35  -wreSg -(cڡ * -vue -) { - -36 -ARDUINOJSON_ASSERT -( -vue - ! -NULL -); - -37 -wreRaw -('\"'); - -38 * - gvue - -wreCh -(* -vue -++); - -39 -wreRaw -('\"'); - -42  -wreCh -( -c -) { - -43  - geclCh - = -EsSequ -:: -esCh -( -c -); - -44 i( - geclCh -) { - -45 -wreRaw -('\\'); - -46 -wreRaw -( -eclCh -); - -48 -wreRaw -( -c -); - -52 - gme - < -tyme - - gT -> - -53  -wreFlt -( -T - -vue -) { - -54 i( -i -( -vue -)) - -55  -wreRaw -( -ARDUINOJSON_ENABLE_NAN - ? "NaN" : "null"); - -57 #i -ARDUINOJSON_ENABLE_INFINITY - - -58 i( - gvue - < 0.0) { - -59 -wreRaw -('-'); - -60 - gvue - = - -vue -; - -63 i( -isf -( -vue -)) - -64  -wreRaw -("Infinity"); - -66 i( -isf -( -vue -)) - -67  -wreRaw -("null"); - -69 i( - gvue - < 0.0) { - -70 -wreRaw -('-'); - -71 - gvue - = - -vue -; - -75 - gFltPts -< - gT -> -s -( -vue -); - -77 -wrePosiveIeg -( -s -. -gl -); - -78 i( - gs -. - gdecimPs -) - -79 -wreDecims -( -s -. -decim -,ts. -decimPs -); - -81 i( - gs -. - gexpڒt - < 0) { - -82 -wreRaw -("e-"); - -83 -wrePosiveIeg -(- -s -. -expڒt -); - -86 i( - gs -. - gexpڒt - > 0) { - -87 -wreRaw -('e'); - -88 -wrePosiveIeg -( -s -. -expڒt -); - -92  -wreNegiveIeg -( -UI - -vue -) { - -93 -wreRaw -('-'); - -94 -wrePosiveIeg -( -vue -); - -97 - gme - < -tyme - - gT -> - -98  -wrePosiveIeg -( -T - -vue -) { - -99  - gbufr -[22]; - -100 * - gd - = -bufr - + (buffer); - -101 * - gbeg - = -d -; - -105 *-- - gbeg - = ( -vue - % 10 + '0'); - -106 - gvue - = -T -( -vue - / 10); - -107 }  - gvue -); - -110 -wreRaw -( -beg -, -d -); - -113  -wreDecims -( -ut32_t - -vue -, -t8_t - -width -) { - -115  - gbufr -[16]; - -116 * - gd - = -bufr - + (buffer); - -117 * - gbeg - = -d -; - -120  - gwidth ---) { - -121 *-- - gbeg - = ( -vue - % 10 + '0'); - -122 - gvue - /= 10; - -124 *-- - gbeg - = '.'; - -127 -wreRaw -( -beg -, -d -); - -130  -wreRaw -(cڡ * -s -) { - -131 - g_ngth - + -_wr -. -wre -( -t_ -( -s -), - -(s)); - -134  -wreRaw -(cڡ * -s -, -size_t - -n -) { - -135 - g_ngth - + -_wr -. -wre -( -t_ -( -s -), -n -); - -138  -wreRaw -(cڡ * -beg -, cڡ * -d -) { - -139 - g_ngth - + -_wr -. -wre -( -t_ -( -beg -), - -140 -ic_ -< -size_t ->( -d - - -beg -)); - -143 - gme - < -size_t - - gN -> - -144  -wreRaw -(cڡ (& -s -)[ -N -]) { - -145 - g_ngth - + -_wr -. -wre -( -t_ -( -s -), -N - - 1); - -147  -wreRaw -( -c -) { - -148 - g_ngth - + -_wr -. -wre -( -ic_ -< -ut8_t ->( -c -)); - -151 - geed -: - -152 -TWr - -_wr -; - -153 -size_t - - g_ngth -; - -155 - give -: - -156 -TextFmr - & -ݔ -=(const TextFormatter &); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -14 #i -defed -( -__GNUC__ -) - -15 #i -__GNUC__ - >= 7 - -16 #agm -GCC - -dgnoic - -push - - -17 #agm -GCC - -dgnoic - -igned - "-Wmaybe-uninitialized" - -21 -mea - - gARDUINOJSON_NAMESPACE - { - -23 -mea - - gUtf16 - { - -24 -le - -bo - -isHighSuoge -( -ut16_t - -codeun -) { - -25  - gcodeun - >0xD800 && -codeun - < 0xDC00; - -28 -le - -bo - -isLowSuoge -( -ut16_t - -codeun -) { - -29  - gcodeun - >0xDC00 && -codeun - < 0xE000; - -32 as - cCodot - { - -33 - gpublic -: - -34 -bo - -nd -( -ut16_t - -codeun -) { - -35 i( -isHighSuoge -( -codeun -)) { - -36 -_highSuoge - = -codeun - & 0x3FF; - -37  - gl -; - -40 i( -isLowSuoge -( -codeun -)) { - -41 - g_codot - = - -42 -ut32_t -(0x10000 + (( -_highSuoge - << 10| ( -codeun - & 0x3FF))); - -43  - gue -; - -46 - g_codot - = -codeun -; - -47  - gue -; - -50 -ut32_t - -vue -() const { - -51  - g_codot -; - -54 - give -: - -55 -ut16_t - -_highSuoge -; - -56 -ut32_t - - g_codot -; - -61 #i -defed -( -__GNUC__ -) - -62 #i -__GNUC__ - >= 8 - -63 #agm -GCC - -dgnoic - -p - - - @lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -mea - - gUtf8 - { - -12 - gme - < -tyme - - gTSgBud -> - -13 -le -  -codeCodot -( -ut32_t - -codot32 -, -TSgBud -& -r -) { - -17  - gbuf -[5]; - -18 * - gp - = -buf -; - -20 *( - gp -++) = 0; - -21 i( - gcodot32 - < 0x80) { - -22 *( - gp -++(( -codot32 -)); - -24 *( - gp -++(( -codot32 - | 0x80) & 0xBF); - -25 -ut16_t - - gcodot16 - = ut16_t( -codot32 - >> 6); - -26 i( - gcodot16 - < 0x20) { - -27 *( - gp -++( -codot16 - | 0xC0); - -29 *( - gp -++(( -codot16 - | 0x80) & 0xBF); - -30 - gcodot16 - = -ut16_t -( -codot16 - >> 6); - -31 i( - gcodot16 - < 0x10) { - -32 *( - gp -++( -codot16 - | 0xE0); - -34 *( - gp -++(( -codot16 - | 0x80) & 0xBF); - -35 - gcodot16 - = -ut16_t -( -codot16 - >> 6); - -36 *( - gp -++( -codot16 - | 0xF0); - -41 *(-- - gp -)) { - -42 - gr -. -nd -(* -p -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 -le - -bo - -isAligd -(* -r -) { - -14 cڡ -size_t - - gmask - = (*) - 1; - -15 -size_t - - gaddr - = -t_ -( -r -); - -16  ( - gaddr - & - gmask -) == 0; - -19 -le - -size_t - -addPaddg -(size_ -bys -) { - -20 cڡ -size_t - - gmask - = (*) - 1; - -21  ( - gbys - + - gmask -) & ~mask; - -24 - gme - < -tyme - - gT -> - -25 -le - -T - * -addPaddg -(T * -p -) { - -26 -size_t - - gaddss - = -addPaddg -( -t_ -( -p -)); - -27  - gt_ -< - gT - *>( - gaddss -); - -30 - gme - < -size_t - - gbys -> - -31  - sAddPaddg - { - -32 cڡ -size_t - - gmask - = (*) - 1; - -33 cڡ -size_t - - gvue - = ( -bys - + -mask -) & ~mask; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13  - ~ - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -25 as - cMemyPo - { - -26 - gpublic -: - -27 -MemyPo -(* -buf -, -size_t - - -) - -28 : -_beg -( -buf -), - -29 -_ -( -buf -), - -30 -_right -( -buf - ? bu+ - - : 0), - -31 -_d -( -buf - ? bu+ - - : 0) { - -32 -ARDUINOJSON_ASSERT -( -isAligd -( -_beg -)); - -33 -ARDUINOJSON_ASSERT -( -isAligd -( -_right -)); - -34 -ARDUINOJSON_ASSERT -( -isAligd -( -_d -)); - -37 * -bufr -() { - -38  - g_beg -; - -42 -size_t - -cy -() const { - -43  -size_t -( -_d - - -_beg -); - -46 -size_t - -size -() const { - -47  -size_t -( -_ - - -_beg - + -_d - - -_right -); - -50 -VSl -* -locV -() { - -51  - glocRight -< - gVSl ->(); - -54 * -locFrozSg -( -size_t - -n -) { - -55 i(! -nAoc -( -n -)) - -57 * - gs - = -_ -; - -58 - g_ - + -n -; - -59 -checkInvs -(); - -60  - gs -; - -63 -SgSl - -locExndabSg -() { - -64 -SgSl - - gs -; - -65 - gs -. - gvue - = -_ -; - -66 - gs -. - gsize - = -size_t -( -_right - - -_ -); - -67 - g_ - = -_right -; - -68 -checkInvs -(); - -69  - gs -; - -72  -zeSg -( -SgSl -& -s -, -size_t - -wSize -) { - -73 - g_ - -( -s -. -size - - -wSize -); - -74 - gs -. - gsize - = -wSize -; - -75 -checkInvs -(); - -78  -aimLaSg -(cڡ * -s -) { - -79 - g_ - = -cڡ_ -<*>( -s -); - -82  -r -() { - -83 - g_ - = -_beg -; - -84 - g_right - = -_d -; - -87 -bo - -nAoc -( -size_t - -bys -) const { - -88  - g_ - + - gbys - < -_right -; - -91 -bo - -owns -(* -p -) const { - -92  - g_beg - < -p - && < -_d -; - -95 - gme - < -tyme - - gT -> - -96 -T -* -locRight -() { - -97  - gt_ -< - gT -*>( -locRight -(( -T -))); - -100 * -locRight -( -size_t - -bys -) { - -101 i(! -nAoc -( -bys -)) - -103 - g_right - - -bys -; - -104  - g_right -; - -108 * -ݔ - -w -( -size_t -, * -p -) { - -109  - gp -; - -123 -rdiff_t - -squash -() { - -124 * - gw_right - = -addPaddg -( -_ -); - -125 i( - gw_right - > -_right -) - -128 -size_t - - gright_size - = -ic_ -( -_d - - -_right -); - -129 -memmove -( -w_right -, -_right -, -right_size -); - -131 -rdiff_t - - gbys_aimed - = -_right - - -w_right -; - -132 - g_right - = -w_right -; - -133 - g_d - = -w_right - + -right_size -; - -134  - gbys_aimed -; - -139  -movePors -( -rdiff_t - -offt -) { - -140 - g_beg - + -offt -; - -141 - g_ - + -offt -; - -142 - g_right - + -offt -; - -143 - g_d - + -offt -; - -146 - give -: - -147 -SgSl -* -locSgSl -() { - -148  -locRight -< -SgSl ->(); - -151  -checkInvs -() { - -152 -ARDUINOJSON_ASSERT -( -_beg - < -_ -); - -153 -ARDUINOJSON_ASSERT -( -_ - < -_right -); - -154 -ARDUINOJSON_ASSERT -( -_right - < -_d -); - -155 -ARDUINOJSON_ASSERT -( -isAligd -( -_right -)); - -158 * - g_beg -, * - g_ -, * - g_right -, * - g_d -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cSgBud - { - -12 - gpublic -: - -13 -exic - -SgBud -( -MemyPo -* - -: -_ -լt), -_size -(0) { - -14 - g_ - = -_ --> -locExndabSg -(); - -17  -nd -(cڡ * -s -) { - -18 * - gs - -nd -(* -s -++); - -21  -nd -(cڡ * -s -, -size_t - -n -) { - -22  - gn --- > 0 -nd -(* -s -++); - -25  -nd -( -c -) { - -26 i(! - g_ -. - gvue -) - -29 i( - g_size - > -_ -. -size -) { - -30 -_ -. -vue - = 0; - -34 - g_ -. - gvue -[ -_size -++] = -c -; - -37 * -come -() { - -38 -nd -('\0'); - -39 i( - g_ -. - gvue -) { - -40 - g_ --> -zeSg -( -_ -, -_size -); - -42  - g_ -. - gvue -; - -45 - give -: - -46 -MemyPo -* -_ -; - -47 -size_t - - g_size -; - -48 -SgSl - - g_ -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringSlot.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11  - #JSON_STRING_SIZE -( -SIZE -(SIZE) - - ) - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15  - sSgSl - { - -16 * - gvue -; - -17 -size_t - - gsize -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13 as - cSlizedVue - { - -14 - gpublic -: - -15 -exic - -SlizedVue -( -T - -r -: -_r -(str) {} - -16 -ݔ - -T -() const { - -17  -_r -; - -20 cڡ * -da -() const { - -21  - g_r -. -c_r -(); - -24 -size_t - -size -() const { - -26  - g_r -. -ngth -(); - -29 - give -: - -30 -T - -_r -; - -33 - gme - < -tyme - - gTCh -> - -34 -ass - - gSlizedVue -< - gTCh -*> { - -35 - gpublic -: - -36 -exic - -SlizedVue -( -TCh -* -p -, -size_t - -n -: -_da -), -_size -(n) {} - -37 -ݔ - - gTCh -*() const { - -38  - g_da -; - -41 -TCh -* -da -() const { - -42  - g_da -; - -45 -size_t - -size -() const { - -46  - g_size -; - -49 - give -: - -50 -TCh -* -_da -; - -51 -size_t - - g_size -; - -54 - gme - < -tyme - - gT -> - -55 -le - - gSlizedVue -< - gT -> - $rlized -( -T - -r -) { - -56  -SlizedVue -< -T ->( -r -); - -57 - } -} - -59 - gme - < -tyme - - gTCh -> - -60 -le - - gSlizedVue -< - gTCh -*> - $rlized -( -TCh -* -p -) { - -61  -SlizedVue -< -TCh -*>( -p -, - `adtSg -). - `size -()); - -62 - } -} - -64 - gme - < -tyme - - gTCh -> - -65 -le - - gSlizedVue -< - gTCh -*> - $rlized -( -TCh -* -p -, -size_t - -n -) { - -66  -SlizedVue -< -TCh -*>( -p -, -n -); - -67 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11  - sVisab - { - -16 - gme - < -tyme - - gT -> - -17  - gIsVisab - : -is_ba_of -< -Visab -, - gT -> {}; - -19 - gme - < -tyme - - gT -> - -20  - gIsVisab -< - gT -&> : -IsVisab -< -T -> {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 - gme - < -tyme - - gTRd -,ym - gTSgStage -> - -17 as - cMsgPackDerliz - { - -18  -tyme - - tmove_n -< - tTSgStage ->:: - tty -:: - tSgBud - - -19 - tSgBud -; - -21 - gpublic -: - -22 -MsgPackDerliz -( -MemyPo - & -po -, -TRd - -ad -, - -23 -TSgStage - -rgStage -) - -24 : -_po -(& -po -), -_ad -( -ad -), -_rgStage -( -rgStage -) {} - -26 -DerliziE - -r -( -VDa - & -v -, -AowAFr -, - -27 -NegLim - -ágLim -) { - -28  -r -( -v -, -ágLim -); - -31 -DerliziE - -r -( -VDa - & -v -, -NegLim - -ágLim -) { - -32 -ut8_t - - gcode -; - -33 i(! -adBy -( -code -)) - -34  - gDerliziE -:: -IncomeIut -; - -36 i(( - gcode - & 0x80) == 0) { - -37 -v -. -tUnsigdIeg -( -code -); - -38  - gDerliziE -:: -Ok -; - -41 i(( - gcode - & 0xe0) == 0xe0) { - -42 -v -. -tSigdIeg -( -ic_ -< -t8_t ->( -code -)); - -43  - gDerliziE -:: -Ok -; - -46 i(( - gcode - & 0xe0) == 0xa0) { - -47  -adSg -( -v -, -code - & 0x1f); - -50 i(( - gcode - & 0xf0) == 0x90) { - -51  -adAay -( -v -. -toAay -(), -code - & 0x0F, -ágLim -); - -54 i(( - gcode - & 0xf0) == 0x80) { - -55  -adObje -( -v -. -toObje -(), -code - & 0x0F, -ágLim -); - -58  - gcode -) { - -61  -DerliziE -:: -Ok -; - -64 -v -. -tBoޗn -( -l -); - -65  - gDerliziE -:: -Ok -; - -68 -v -. -tBoޗn -( -ue -); - -69  - gDerliziE -:: -Ok -; - -72  -adIeg -< -ut8_t ->( -v -); - -75  -adIeg -< -ut16_t ->( -v -); - -78  -adIeg -< -ut32_t ->( -v -); - -81 #i -ARDUINOJSON_USE_LONG_LONG - - -82  -adIeg -< -ut64_t ->( -v -); - -84  - gDerliziE -:: -NSu܋d -; - -88  -adIeg -< -t8_t ->( -v -); - -91  -adIeg -< -t16_t ->( -v -); - -94  -adIeg -< -t32_t ->( -v -); - -97 #i -ARDUINOJSON_USE_LONG_LONG - - -98  -adIeg -< -t64_t ->( -v -); - -100  - gDerliziE -:: -NSu܋d -; - -104  -adFlt -<>( -v -); - -107  -adDoub -<>( -v -); - -110  -adSg -< -ut8_t ->( -v -); - -113  -adSg -< -ut16_t ->( -v -); - -116  -adSg -< -ut32_t ->( -v -); - -119  -adAay -< -ut16_t ->( -v -. -toAay -(), - gágLim -); - -122  -adAay -< -ut32_t ->( -v -. -toAay -(), - gágLim -); - -125  -adObje -< -ut16_t ->( -v -. -toObje -(), - gágLim -); - -128  -adObje -< -ut32_t ->( -v -. -toObje -(), - gágLim -); - -131  -DerliziE -:: -NSu܋d -; - -135 - give -: - -137 -MsgPackDerliz - & -ݔ -=(const MsgPackDeserializer &); - -139 -bo - -adBy -( -ut8_t - & -vue -) { - -140  - gc - = -_ad -. -ad -(); - -141 i( - gc - < 0) - -142  - gl -; - -143 - gvue - = -ic_ -< -ut8_t ->( -c -); - -144  - gue -; - -147 -bo - -adBys -( -ut8_t - * -p -, -size_t - -n -) { - -148  - g_ad -. -adBys -( -t_ -<*>( -p -), -n -) ==; - -151 - gme - < -tyme - - gT -> - -152 -bo - -adBys -( -T - & -vue -) { - -153  -adBys -( -t_ -< -ut8_t - *>(& -vue -), (value)); - -156 - gme - < -tyme - - gT -> - -157 -T - -adIeg -() { - -158 -T - - gvue -; - -159 -adBys -( -vue -); - -160 -fixEndss -( -vue -); - -161  - gvue -; - -164 - gme - < -tyme - - gT -> - -165 -bo - -adIeg -( -T - & -vue -) { - -166 i(! -adBys -( -vue -)) - -167  - gl -; - -168 -fixEndss -( -vue -); - -169  - gue -; - -172 - gme - < -tyme - - gT -> - -173 -DerliziE - -adIeg -( -VDa - & -v -) { - -174 -T - - gvue -; - -175 i(! -adIeg -( -vue -)) - -176  - gDerliziE -:: -IncomeIut -; - -177 - gv -. -tIeg -( -vue -); - -178  - gDerliziE -:: -Ok -; - -181 - gme - < -tyme - - gT -> - -182 -tyme - - gab_if -<( - gT -=4, - gDerliziE ->:: -ty - -adFlt -( - -183 -VDa - & -v -) { - -184 -T - -vue -; - -185 i(! -adBys -( -vue -)) - -186  - gDerliziE -:: -IncomeIut -; - -187 -fixEndss -( -vue -); - -188 - gv -. -tFlt -( -vue -); - -189  - gDerliziE -:: -Ok -; - -192 - gme - < -tyme - - gT -> - -193 -tyme - - gab_if -<( - gT -=8, - gDerliziE ->:: -ty - -adDoub -( - -194 -VDa - & -v -) { - -195 -T - -vue -; - -196 i(! -adBys -( -vue -)) - -197  - gDerliziE -:: -IncomeIut -; - -198 -fixEndss -( -vue -); - -199 - gv -. -tFlt -( -vue -); - -200  - gDerliziE -:: -Ok -; - -203 - gme - < -tyme - - gT -> - -204 -tyme - - gab_if -<( - gT -=4, - gDerliziE ->:: -ty - -adDoub -( - -205 -VDa - & -v -) { - -206 -ut8_t - -i -[8]; - -207 -T - - gvue -; - -208 -ut8_t - * - go - = -t_ -(& -vue -); - -209 i(! -adBys -( -i -, 8)) - -210  - gDerliziE -:: -IncomeIut -; - -211 -doubToFlt -( -i -, -o -); - -212 -fixEndss -( -vue -); - -213 - gv -. -tFlt -( -vue -); - -214  - gDerliziE -:: -Ok -; - -217 - gme - < -tyme - - gT -> - -218 -DerliziE - -adSg -( -VDa - & -v -) { - -219 -T - - gsize -; - -220 i(! -adIeg -( -size -)) - -221  - gDerliziE -:: -IncomeIut -; - -222  -adSg -( -v -, -size -); - -225 - gme - < -tyme - - gT -> - -226 -DerliziE - -adSg -(cڡ *& -r -) { - -227 -T - - gsize -; - -228 i(! -adIeg -( -size -)) - -229  - gDerliziE -:: -IncomeIut -; - -230  -adSg -( -r -, -size -); - -233 -DerliziE - -adSg -( -VDa - & -v -, -size_t - -n -) { - -234 cڡ * - gs - = 0; - -235 -DerliziE - - gr - = -adSg -( -s -, -n -); - -236 i(! - gr -) - -237 - gv -. -tOwdSg -( -make_n_nu -( -s -)); - -238  - gr -; - -241 -DerliziE - -adSg -(cڡ *& -su -, -size_t - -n -) { - -242 -SgBud - - gbud - = -_rgStage -. -tSg -(); - -243 ; - gn -; --n) { - -244 -ut8_t - - gc -; - -245 i(! -adBys -( -c -)) - -246  - gDerliziE -:: -IncomeIut -; - -247 - gbud -. -nd -( -ic_ -<>( -c -)); - -249 - gsu - = -bud -. -come -(); - -250 i(! - gsu -) - -251  - gDerliziE -:: -NoMemy -; - -252  - gDerliziE -:: -Ok -; - -255 - gme - < -tyme - - gTSize -> - -256 -DerliziE - -adAay -( -CiDa - & -y -, - -257 -NegLim - -ágLim -) { - -258 -TSize - - gsize -; - -259 i(! -adIeg -( -size -)) - -260  - gDerliziE -:: -IncomeIut -; - -261  -adAay -( -y -, -size -, -ágLim -); - -264 -DerliziE - -adAay -( -CiDa - & -y -, -size_t - -n -, - -265 -NegLim - -ágLim -) { - -266 i( - gágLim -. -ached -()) - -267  - gDerliziE -:: -TooDp -; - -269 ; - gn -; --n) { - -270 -VDa - * - gvue - = -y -. -addEmt -( -_po -); - -271 i(! - gvue -) - -272  - gDerliziE -:: -NoMemy -; - -274 -DerliziE - - gr - = -r -(* -vue -, -ágLim -. -deemt -()); - -275 i( - gr -) - -276  - gr -; - -279  - gDerliziE -:: -Ok -; - -282 - gme - < -tyme - - gTSize -> - -283 -DerliziE - -adObje -( -CiDa - & -obje -, - -284 -NegLim - -ágLim -) { - -285 -TSize - - gsize -; - -286 i(! -adIeg -( -size -)) - -287  - gDerliziE -:: -IncomeIut -; - -288  -adObje -( -obje -, -size -, -ágLim -); - -291 -DerliziE - -adObje -( -CiDa - & -obje -, -size_t - -n -, - -292 -NegLim - -ágLim -) { - -293 i( - gágLim -. -ached -()) - -294  - gDerliziE -:: -TooDp -; - -296 ; - gn -; --n) { - -297 -VSl - * - g - = -obje -. -addSl -( -_po -); - -298 i(! - g -) - -299  - gDerliziE -:: -NoMemy -; - -301 cڡ * - gkey - = 0; - -302 -DerliziE - - gr - = -rKey -( -key -); - -303 i( - gr -) - -304  - gr -; - -305 - g --> -tOwdKey -( -make_n_nu -( -key -)); - -307 - gr - = -r -(* - --> -da -(), -ágLim -. -deemt -()); - -308 i( - gr -) - -309  - gr -; - -312  - gDerliziE -:: -Ok -; - -315 -DerliziE - -rKey -(cڡ *& -key -) { - -316 -ut8_t - - gcode -; - -317 i(! -adBy -( -code -)) - -318  - gDerliziE -:: -IncomeIut -; - -320 i(( - gcode - & 0xe0) == 0xa0) - -321  -adSg -( -key -, -code - & 0x1f); - -323  - gcode -) { - -325  -adSg -< -ut8_t ->( -key -); - -328  -adSg -< -ut16_t ->( -key -); - -331  -adSg -< -ut32_t ->( -key -); - -334  -DerliziE -:: -NSu܋d -; - -338 -MemyPo - * - g_po -; - -339 -TRd - - g_ad -; - -340 -TSgStage - - g_rgStage -; - -343 - gme - < -tyme - - gTIut -> - -344 -DerliziE - -derlizeMsgPack -( - -345 -JsDocumt - & -doc -, cڡ -TIut - & -put -, - -346 -NegLim - -ágLim - = - $NegLim -()) { - -347  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, - -348 - `AowAFr -()); - -349 - } -} - -351 - gme - < -tyme - - gTIut -> - -352 -DerliziE - -derlizeMsgPack -( - -353 -JsDocumt - & -doc -, -TIut - * -put -, - -354 -NegLim - -ágLim - = - $NegLim -()) { - -355  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, - -356 - `AowAFr -()); - -357 - } -} - -359 - gme - < -tyme - - gTIut -> - -360 -DerliziE - -derlizeMsgPack -( - -361 -JsDocumt - & -doc -, -TIut - * -put -, -size_t - -putSize -, - -362 -NegLim - -ágLim - = - $NegLim -()) { - -363  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -putSize -, -ágLim -, - -364 - `AowAFr -()); - -365 - } -} - -367 - gme - < -tyme - - gTIut -> - -368 -DerliziE - -derlizeMsgPack -( - -369 -JsDocumt - & -doc -, -TIut - & -put -, - -370 -NegLim - -ágLim - = - $NegLim -()) { - -371  -derlize -< -MsgPackDerliz ->( -doc -, -put -, -ágLim -, - -372 - `AowAFr -()); - -373 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 - gme - < -tyme - - gTWr -> - -17 as - cMsgPackSliz - { - -18 - gpublic -: - -19 -MsgPackSliz -( -TWr - -wr -: -_wr -(wr), -_bysWrn -(0) {} - -21 - gme - < -tyme - - gT -> - -22 -tyme - - gab_if -<( - gT -=4>:: -ty - -visFlt -( -T - -vue32 -) { - -23 -wreBy -(0xCA); - -24 -wreIeg -( -vue32 -); - -27 - gme - < -tyme - - gT -> - -28 -ARDUINOJSON_NO_SANITIZE -("float-cast-overflow") - -29 -tyme - - gab_if -<( - gT -=8>:: -ty - -visFlt -( -T - -vue64 -) { - -30  -vue32 - = ( -vue64 -); - -31 i( - gvue32 - = -vue64 -) { - -32 -wreBy -(0xCA); - -33 -wreIeg -( -vue32 -); - -35 -wreBy -(0xCB); - -36 -wreIeg -( -vue64 -); - -40  -visAay -(cڡ -CiDa -& -y -) { - -41 -size_t - - gn - = -y -. -size -(); - -42 i( - gn - < 0x10) { - -43 -wreBy -( -ut8_t -(0x90 + -y -. -size -())); - -44 } i( - gn - < 0x10000) { - -45 -wreBy -(0xDC); - -46 -wreIeg -( -ut16_t -( -n -)); - -48 -wreBy -(0xDD); - -49 -wreIeg -( -ut32_t -( -n -)); - -51  -VSl -* - g - = -y -. -hd -(); sl; sl = - --> -xt -()) { - -52 - --> -da -()-> -ac -(* -this -); - -56  -visObje -(cڡ -CiDa -& -obje -) { - -57 -size_t - - gn - = -obje -. -size -(); - -58 i( - gn - < 0x10) { - -59 -wreBy -( -ut8_t -(0x80 + -n -)); - -60 } i( - gn - < 0x10000) { - -61 -wreBy -(0xDE); - -62 -wreIeg -( -ut16_t -( -n -)); - -64 -wreBy -(0xDF); - -65 -wreIeg -( -ut32_t -( -n -)); - -67  -VSl -* - g - = -obje -. -hd -(); sl; sl = - --> -xt -()) { - -68 -visSg -( - --> -key -()); - -69 - g --> -da -()-> -ac -(* -this -); - -73  -visSg -(cڡ * -vue -) { - -74 -ARDUINOJSON_ASSERT -( -vue - ! -NULL -); - -76 -size_t - - gn - = - -( -vue -); - -78 i( - gn - < 0x20) { - -79 -wreBy -( -ut8_t -(0xA0 + -n -)); - -80 } i( - gn - < 0x100) { - -81 -wreBy -(0xD9); - -82 -wreIeg -( -ut8_t -( -n -)); - -83 } i( - gn - < 0x10000) { - -84 -wreBy -(0xDA); - -85 -wreIeg -( -ut16_t -( -n -)); - -87 -wreBy -(0xDB); - -88 -wreIeg -( -ut32_t -( -n -)); - -90 -wreBys -( -t_ -( -vue -), -n -); - -93  -visRawJs -(cڡ * -da -, -size_t - -size -) { - -94 -wreBys -( -t_ -( -da -), -size -); - -97  -visNegiveIeg -( -UI - -vue -) { - -98 -UI - - gged - = UI(~ -vue - + 1); - -99 i( - gvue - <= 0x20) { - -100 -wreIeg -( -t8_t -( -ged -)); - -101 } i( - gvue - <= 0x80) { - -102 -wreBy -(0xD0); - -103 -wreIeg -( -t8_t -( -ged -)); - -104 } i( - gvue - <= 0x8000) { - -105 -wreBy -(0xD1); - -106 -wreIeg -( -t16_t -( -ged -)); - -107 } i( - gvue - <= 0x80000000) { - -108 -wreBy -(0xD2); - -109 -wreIeg -( -t32_t -( -ged -)); - -111 #i -ARDUINOJSON_USE_LONG_LONG - - -113 -wreBy -(0xD3); - -114 -wreIeg -( -t64_t -( -ged -)); - -119  -visPosiveIeg -( -UI - -vue -) { - -120 i( - gvue - <= 0x7F) { - -121 -wreIeg -( -ut8_t -( -vue -)); - -122 } i( - gvue - <= 0xFF) { - -123 -wreBy -(0xCC); - -124 -wreIeg -( -ut8_t -( -vue -)); - -125 } i( - gvue - <= 0xFFFF) { - -126 -wreBy -(0xCD); - -127 -wreIeg -( -ut16_t -( -vue -)); - -128 } i( - gvue - <= 0xFFFFFFFF) { - -129 -wreBy -(0xCE); - -130 -wreIeg -( -ut32_t -( -vue -)); - -132 #i -ARDUINOJSON_USE_LONG_LONG - - -134 -wreBy -(0xCF); - -135 -wreIeg -( -ut64_t -( -vue -)); - -140  -visBoޗn -( -bo - -vue -) { - -141 -wreBy -( -vue - ? 0xC3 : 0xC2); - -144  -visNu -() { - -145 -wreBy -(0xC0); - -148 -size_t - -bysWrn -() const { - -149  - g_bysWrn -; - -152 - give -: - -153  -wreBy -( -ut8_t - -c -) { - -154 -_bysWrn - + -_wr -. -wre -( -c -); - -157  -wreBys -(cڡ -ut8_t -* -p -, -size_t - -n -) { - -158 - g_bysWrn - + -_wr -. -wre -( -p -, -n -); - -161 - gme - < -tyme - - gT -> - -162  -wreIeg -( -T - -vue -) { - -163 -fixEndss -( -vue -); - -164 -wreBys -( -t_ -< -ut8_t -*>(& -vue -), (value)); - -167 -TWr - - g_wr -; - -168 -size_t - - g_bysWrn -; - -171 - gme - < -tyme - - gTSour -,ym - gTDei -> - -172 -le - -size_t - - $rlizeMsgPack -(cڡ -TSour -& -sour -, -TDei -& -ouut -) { - -173  -rlize -< -MsgPackSliz ->( -sour -, -ouut -); - -174 - } -} - -176 - gme - < -tyme - - gTSour -> - -177 -le - -size_t - - $rlizeMsgPack -(cڡ -TSour -& -sour -, * -ouut -, - -178 -size_t - -size -) { - -179  -rlize -< -MsgPackSliz ->( -sour -, -ouut -, -size -); - -180 - } -} - -182 - gme - < -tyme - - gTSour -> - -183 -le - -size_t - - $msuMsgPack -(cڡ -TSour -& -sour -) { - -184  -msu -< -MsgPackSliz ->( -sour -); - -185 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 #i -ARDUINOJSON_LITTLE_ENDIAN - - -13 -le -  -fixEndss -( -ut8_t - * -p -, -gl_cڡt -< -size_t -, 8>) { - -14 -sw -( -p -[0],[7]); - -15 -sw -( -p -[1],[6]); - -16 -sw -( -p -[2],[5]); - -17 -sw -( -p -[3],[4]); - -20 -le -  -fixEndss -( -ut8_t - * -p -, -gl_cڡt -< -size_t -, 4>) { - -21 -sw -( -p -[0],[3]); - -22 -sw -( -p -[1],[2]); - -25 -le -  -fixEndss -( -ut8_t - * -p -, -gl_cڡt -< -size_t -, 2>) { - -26 -sw -( -p -[0],[1]); - -29 -le -  -fixEndss -( -ut8_t - *, -gl_cڡt -< -size_t -, 1>) {} - -31 - gme - < -tyme - - gT -> - -32 -le -  -fixEndss -( -T - & -vue -) { - -33 -fixEndss -( -t_ -< -ut8_t - *>(& -vue -), - -34 -gl_cڡt -< -size_t -, ( -T -)>()); - -37 - gme - < -tyme - - gT -> - -38 -le -  -fixEndss -( -T - &) {} - - @lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -le -  -doubToFlt -(cڡ -ut8_t - -d -[8], ut8_ -f -[4]) { - -12 - gf -[0] = -ut8_t -(( -d -[0] & 0xC0) | (d[0] << 3 & 0x3f) | (d[1] >> 5)); - -13 - gf -[1] = -ut8_t -(( -d -[1] << 3) | (d[2] >> 5)); - -14 - gf -[2] = -ut8_t -(( -d -[2] << 3) | (d[3] >> 5)); - -15 - gf -[3] = -ut8_t -(( -d -[3] << 3) | (d[4] >> 5)); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Namespace.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - #ARDUINOJSON_DO_CONCAT -( -A -, -B -A## - ) -B - -11  - #ARDUINOJSON_CONCAT2 -( -A -, -B - - `ARDUINOJSON_DO_CONCAT -(A, B) - - ) - -12  - #ARDUINOJSON_CONCAT4 -( -A -, -B -, -C -, -D -) \ - -13 - `ARDUINOJSON_CONCAT2 -(ARDUINOJSON_CONCAT2( -A -, -B -), ARDUINOJSON_CONCAT2( -C -, -D -)) - - ) - -14  - #ARDUINOJSON_CONCAT8 -( -A -, -B -, -C -, -D -, -E -, -F -, -G -, -H -) \ - -15 - `ARDUINOJSON_CONCAT2 -( - `ARDUINOJSON_CONCAT4 -( -A -, -B -, -C -, -D -), \ - -16 - `ARDUINOJSON_CONCAT4 -( -E -, -F -, -G -, -H -)) - - ) - -17  - #ARDUINOJSON_CONCAT12 -( -A -, -B -, -C -, -D -, -E -, -F -, -G -, -H -, -I -, -J -, -K -, -L -) \ - -18 - `ARDUINOJSON_CONCAT8 -( -A -, -B -, -C -, -D -, -E -, -F -, -G -, \ - -19 - `ARDUINOJSON_CONCAT4 -( -H -, -I -, -J -, - `ARDUINOJSON_CONCAT2 -( -K -, -L -))) - - ) - -21  - #ARDUINOJSON_NAMESPACE - \ - -22 - `ARDUINOJSON_CONCAT12 -( \ - -23 -ArduoJs -, -ARDUINOJSON_VERSION_MAJOR -, -ARDUINOJSON_VERSION_MINOR -, \ - -24 -ARDUINOJSON_VERSION_REVISION -, -_ -, -ARDUINOJSON_USE_LONG_LONG -, \ - -25 -ARDUINOJSON_USE_DOUBLE -, -ARDUINOJSON_DECODE_UNICODE -, \ - -26 -ARDUINOJSON_ENABLE_NAN -, -ARDUINOJSON_ENABLE_INFINITY -, \ - -27 -ARDUINOJSON_ENABLE_PROGMEM -, -ARDUINOJSON_ENABLE_COMMENTS -) - - ) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 #i -ARDUINOJSON_USE_DOUBLE - - -13  - tFlt -; - -15  - tFlt -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gTFlt -> - -14  - sFltPts - { - -15 -ut32_t - - ggl -; - -16 -ut32_t - - gdecim -; - -17 -t16_t - - gexpڒt -; - -18 -t8_t - - gdecimPs -; - -20 -FltPts -( -TFlt - -vue -) { - -21 -ut32_t - - gmaxDecimPt - = ( -TFlt -) >= 8 ? 1000000000 : 1000000; - -22 - gdecimPs - = ( -TFlt -) >= 8 ? 9 : 6; - -24 - gexpڒt - = -nmize -( -vue -); - -26 - ggl - = -ut32_t -( -vue -); - -28  -ut32_t - - gtmp - = -gl -;mp >= 10;mp /= 10) { - -29 -maxDecimPt - /= 10; - -30 - gdecimPs ---; - -33 -TFlt - - gmad - = ( -vue - - TFlt( -gl -)* TFlt( -maxDecimPt -); - -35 - gdecim - = -ut32_t -( -mad -); - -36 - gmad - = -mad - - -TFlt -( -decim -); - -40 - gdecim - + -ut32_t -( -mad - * 2); - -41 i( - gdecim - > -maxDecimPt -) { - -42 -decim - = 0; - -43 - ggl -++; - -44 i( - gexpڒt - && - ggl - >= 10) { - -45 -expڒt -++; - -46 - ggl - = 1; - -51  - gdecim - % 10 =0 && -decimPs - > 0) { - -52 -decim - /= 10; - -53 - gdecimPs ---; - -57  -t16_t - -nmize -( -TFlt -& -vue -) { - -58  - gFltTs -< - tTFlt -> - tas -; - -59 -t16_t - - gpowsOf10 - = 0; - -61 -t8_t - - gdex - = ( -TFlt -) == 8 ? 8 : 5; - -62  - gb - = 1 << -dex -; - -64 i( - gvue - > -ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD -) { - -65 ; - gdex - >= 0; index--) { - -66 i( - gvue - > -as -:: -posiveByPowOfT -( -dex -)) { - -67 -vue - * -as -:: -giveByPowOfT -( -dex -); - -68 - gpowsOf10 - = -t16_t -( -powsOf10 - + -b -); - -70 - gb - >>= 1; - -74 i( - gvue - > 0 && vu< -ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD -) { - -75 ; - gdex - >= 0; index--) { - -76 i( - gvue - < - gas -:: -giveByPowOfTPlusO -( -dex -)) { - -77 -vue - * -as -:: -posiveByPowOfT -( -dex -); - -78 - gpowsOf10 - = -t16_t -( -powsOf10 - - -b -); - -80 - gb - >>= 1; - -84  - gpowsOf10 -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 - gme - < -tyme - - gT -, - gsize_t - = ( -T -)> - -17  - sFltTs - {}; - -19 - gme - < -tyme - - gT -> - -20  - gFltTs -< - gT -, 8 > { - -21  -ut64_t - - tmtis_ty -; - -22 cڡ  - gmtis_bs - = 52; - -23 cڡ -mtis_ty - - gmtis_max - = - -24 ( -mtis_ty -(1<< -mtis_bs -) - 1; - -26  -t16_t - - texpڒt_ty -; - -27 cڡ -expڒt_ty - - gexpڒt_max - = 308; - -29 - gme - < -tyme - - gTExpڒt -> - -30  -T - -make_t -(T -m -, -TExpڒt - -e -) { - -31 i( - ge - > 0) { - -32  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -33 i( - ge - & 1) - -34 - gm - * -posiveByPowOfT -( -dex -); - -35 - ge - >>= 1; - -38 - ge - = -TExpڒt -(- -e -); - -39  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -40 i( - ge - & 1) - -41 - gm - * -giveByPowOfT -( -dex -); - -42 - ge - >>= 1; - -45  - gm -; - -48  -T - -posiveByPowOfT -( -dex -) { - -49  -T - - gs -[] = { - -55 -fge -(0x4693B8B5, 0xB5056E17), - -56 -fge -(0x4D384F03, 0xE93FF9F5), - -57 -fge -(0x5A827748, 0xF9301D32), - -58 -fge -(0x75154FDD, 0x7F73BF3C) - -60  - gs -[ -dex -]; - -63  -T - -giveByPowOfT -( -dex -) { - -64  -T - - gs -[] = { - -65 -fge -(0x3FB99999, 0x9999999A), - -66 -fge -(0x3F847AE1, 0x47AE147B), - -67 -fge -(0x3F1A36E2, 0xEB1C432D), - -68 -fge -(0x3E45798E, 0xE2308C3A), - -69 -fge -(0x3C9CD2B2, 0x97D889BC), - -70 -fge -(0x3949F623, 0xD5A8A733), - -71 -fge -(0x32A50FFD, 0x44F4A73D), - -72 -fge -(0x255BBA08, 0xCF8C979D), - -73 -fge -(0x0AC80628, 0x64AC6F43) - -75  - gs -[ -dex -]; - -78  -T - -giveByPowOfTPlusO -( -dex -) { - -79  -T - - gs -[] = { - -81 -fge -(0x3FB99999, 0x9999999A), - -82 -fge -(0x3F50624D, 0xD2F1A9FC), - -83 -fge -(0x3E7AD7F2, 0x9ABCAF48), - -84 -fge -(0x3CD203AF, 0x9EE75616), - -85 -fge -(0x398039D6, 0x65896880), - -86 -fge -(0x32DA53FC, 0x9631D10D), - -87 -fge -(0x25915445, 0x81B7DEC2), - -88 -fge -(0x0AFE07B2, 0x7DD78B14) - -90  - gs -[ -dex -]; - -93  -T - -n -() { - -94  -fge -(0x7ff80000, 0x00000000); - -97  -T - -f -() { - -98  -fge -(0x7ff00000, 0x00000000); - -101  -T - -highe -() { - -102  -fge -(0x7FEFFFFF, 0xFFFFFFFF); - -105  -T - -lowe -() { - -106  -fge -(0xFFEFFFFF, 0xFFFFFFFF); - -112  -T - -fge -( -ut32_t - -msb -, ut32_ -lsb -) { - -113  - gs_ -< - gT ->(( -ut64_t -( -msb -<< 32| - glsb -); - -117 - gme - < -tyme - - gT -> - -118  - gFltTs -< - gT -, 4 > { - -119  -ut32_t - - tmtis_ty -; - -120 cڡ  - gmtis_bs - = 23; - -121 cڡ -mtis_ty - - gmtis_max - = - -122 ( -mtis_ty -(1<< -mtis_bs -) - 1; - -124  -t8_t - - texpڒt_ty -; - -125 cڡ -expڒt_ty - - gexpڒt_max - = 38; - -127 - gme - < -tyme - - gTExpڒt -> - -128  -T - -make_t -(T -m -, -TExpڒt - -e -) { - -129 i( - ge - > 0) { - -130  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -131 i( - ge - & 1) - -132 - gm - * -posiveByPowOfT -( -dex -); - -133 - ge - >>= 1; - -136 - ge - = - -e -; - -137  -ut8_t - - gdex - = 0; - ge - != 0; index++) { - -138 i( - ge - & 1) - -139 - gm - * -giveByPowOfT -( -dex -); - -140 - ge - >>= 1; - -143  - gm -; - -146  -T - -posiveByPowOfT -( -dex -) { - -147  -T - - gs -[] = {1e1f, 1e2f, 1e4f, 1e8f, 1e16f, 1e32f}; - -148  - gs -[ -dex -]; - -151  -T - -giveByPowOfT -( -dex -) { - -152  -T - - gs -[] = {1e-1f, 1e-2f, 1e-4f, 1e-8f, 1e-16f, 1e-32f}; - -153  - gs -[ -dex -]; - -156  -T - -giveByPowOfTPlusO -( -dex -) { - -157  -T - - gs -[] = {1e0f, 1e-1f, 1e-3f, 1e-7f, 1e-15f, 1e-31f}; - -158  - gs -[ -dex -]; - -161  -T - -fge -( -ut32_t - -bs -) { - -162  - gs_ -< - gT ->( - gbs -); - -165  -T - -n -() { - -166  -fge -(0x7fc00000); - -169  -T - -f -() { - -170  -fge -(0x7f800000); - -173  -T - -highe -() { - -174  -fge -(0x7f7fffff); - -177  -T - -lowe -() { - -178  -fge -(0xFf7fffff); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 #i -ARDUINOJSON_USE_LONG_LONG - - -15  -t64_t - - tIeg -; - -16  -ut64_t - - tUI -; - -18  - tIeg -; - -19  - tUI -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp - -5 #agm - - - -7 #i -defed -( -__g__ -) - -8 #agm -g - -dgnoic - -push - - -9 #agm -g - -dgnoic - -igned - "-Wconversion" - -10 #i -defed -( -__GNUC__ -) - -11 #i -__GNUC__ - > 4 || (__GNUC__ =4 && -__GNUC_MINOR__ - >= 6) - -12 #agm -GCC - -dgnoic - -push - - -14 #agm -GCC - -dgnoic - -igned - "-Wconversion" - -17  - ~ - -18  - ~ - -19  - ~ - -20  - ~ - -22 -mea - - gARDUINOJSON_NAMESPACE - { - -24 - gme - < -tyme - - gTOut -,ym - gTIn -> - -25 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && ( -TOut -<( -TIn -), - -26 - gbo ->:: -ty - - -27 -nStePosiveIeg -( -TIn - -vue -) { - -28  -vue - < -TIn -( -numic_lims -< -TOut ->:: -highe -()); - -31 - gme - < -tyme - - gTOut -,ym - gTIn -> - -32 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && ( -TIn -< ( -TOut -), - -33 - gbo ->:: -ty - - -34 -nStePosiveIeg -( -TIn -) { - -35  -ue -; - -38 - gme - < -tyme - - gTOut -,ym - gTIn -> - -39 -tyme - - gab_if -< - gis_tg_pot -< - gTOut ->:: -vue -, - gbo ->:: -ty - - -40 -nStePosiveIeg -( -TIn -) { - -41  -ue -; - -44 - gme - < -tyme - - gTOut -,ym - gTIn -> - -45 -tyme - - gab_if -< - gis_tg_pot -< - gTOut ->:: -vue -, - gbo ->:: -ty - - -46 -nSteNegiveIeg -( -TIn -) { - -47  -ue -; - -50 - gme - < -tyme - - gTOut -,ym - gTIn -> - -51 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && -is_sigd -< -TOut ->::value && - -52 ( -TOut -<( -TIn -), - -53 - gbo ->:: -ty - - -54 -nSteNegiveIeg -( -TIn - -vue -) { - -55  -vue - < -TIn -( -numic_lims -< -TOut ->:: -highe -()) + 1; - -58 - gme - < -tyme - - gTOut -,ym - gTIn -> - -59 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && -is_sigd -< -TOut ->::value && - -60 ( -TIn -< ( -TOut -), - -61 - gbo ->:: -ty - - -62 -nSteNegiveIeg -( -TIn -) { - -63  -ue -; - -66 - gme - < -tyme - - gTOut -,ym - gTIn -> - -67 -tyme - - gab_if -< - gis_gl -< - gTOut ->:: -vue - && -is_unsigd -< -TOut ->::value, - -68 - gbo ->:: -ty - - -69 -nSteNegiveIeg -( -TIn -) { - -70  -l -; - -73 - gme - < -tyme - - gTOut -,ym - gTIn -> - -74 -TOut - -cvtPosiveIeg -( -TIn - -vue -) { - -75  - gnStePosiveIeg -< - gTOut ->( - gvue -? -TOut -( -vue -) : 0; - -78 - gme - < -tyme - - gTOut -,ym - gTIn -> - -79 -TOut - -cvtNegiveIeg -( -TIn - -vue -) { - -80  - gnSteNegiveIeg -< - gTOut ->( - gvue -? -TOut -(~ -vue - + 1) : 0; - -83 - gme - < -tyme - - gTOut -,ym - gTIn -> - -84 -tyme - - gab_if -< - gis_tg_pot -< - gTOut ->:: -vue -, TOut>:: -ty - -cvtFlt -( - -85 -TIn - -vue -) { - -86  -TOut -( -vue -); - -89 - gme - < -tyme - - gTOut -,ym - gTIn -> - -90 -tyme - - gab_if -:: -vue -, TOut>:: -ty - -cvtFlt -( - -91 -TIn - -vue -) { - -92  -vue - > -numic_lims -< -TOut ->:: -lowe -() && - -93 -vue - < -numic_lims -< -TOut ->:: -highe -() - -94 ? -TOut -( -vue -) - -99 #i -defed -( -__g__ -) - -100 #agm -g - -dgnoic - -p - - -101 #i -defed -( -__GNUC__ -) - -102 #i -__GNUC__ - > 4 || (__GNUC__ =4 && -__GNUC_MINOR__ - >= 6) - -103 #agm -GCC - -dgnoic - -p - - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseFloat.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13 -le - -T - -rFlt -(cڡ * -s -) { - -15  -tyme - - tchoo_rge -< - tFlt -, - tT ->:: - tty - - tTFlt -; - -16  - grNumb -< - gTFlt -, - gUI ->( - gs -). -me - - gas -< - gT ->(); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseInteger.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13 -T - -rIeg -(cڡ * -s -) { - -15  -tyme - - tchoo_rge -< - tUI -, - ttyme - - tmake_unsigd -< - tT ->:: - tty ->::type - -16 - tTUI -; - -17  - grNumb -< - gFlt -, - gTUI ->( - gs -). -me - - gas -< - gT ->(); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gTFlt -,ym - gTUI -> - -18  - sPdNumb - { - -19 -PdNumb -(: -utVue -(0), -tVue -(0), -_ty -( -VALUE_IS_NULL -) {} - -21 -PdNumb -( -TUI - -vue -, -bo - -is_give -) - -22 : -utVue -( -vue -), - -23 -tVue -( -TFlt -( -vue -)), - -24 -_ty -( -ut8_t -( -is_give - ? -VALUE_IS_NEGATIVE_INTEGER - - -25 : -VALUE_IS_POSITIVE_INTEGER -)) {} - -26 -PdNumb -( -TFlt - -vue -: -tVue -(vue), -_ty -( -VALUE_IS_FLOAT -) {} - -28 - gme - < -tyme - - gT -> - -29 -T - -as -() const { - -30  - g_ty -) { - -31  - gVALUE_IS_NEGATIVE_INTEGER -: - -32  -cvtNegiveIeg -< -T ->( -utVue -); - -33  - gVALUE_IS_POSITIVE_INTEGER -: - -34  -cvtPosiveIeg -< -T ->( -utVue -); - -35  - gVALUE_IS_FLOAT -: - -36  -cvtFlt -< -T ->( -tVue -); - -42 -ut8_t - -ty -() const { - -43  - g_ty -; - -46 -TUI - - gutVue -; - -47 -TFlt - - gtVue -; - -48 -ut8_t - - g_ty -; - -51 - gme - < -tyme - - gA -,ym - gB -> - -52  - gchoo_rge - : -cdiڮ -<(( -A -> ( -B -)), - gA -, - gB -> {}; - -54 - gme - < -tyme - - gTFlt -,ym - gTUI -> - -55 -le - - gPdNumb -< - gTFlt -, - gTUI -> -rNumb -(cڡ * -s -) { - -56  - gFltTs -< - tTFlt -> - tas -; - -57  -tyme - - tchoo_rge -< - ttyme - - tas -:: - tmtis_ty -, - tTUI ->:: - tty - - -58 - tmtis_t -; - -59  -tyme - - tas -:: - texpڒt_ty - - texpڒt_t -; - -60  - gPdNumb -< - tTFlt -, - tTUI -> - ttu_ty -; - -62 -ARDUINOJSON_ASSERT -( -s - != 0); - -64 -bo - - gis_give - = -l -; - -65 * - gs -) { - -67 -is_give - = -ue -; - -68 - gs -++; - -71 -s -++; - -75 #i -ARDUINOJSON_ENABLE_NAN - - -76 i(* - gs - ='n' || * -s - == 'N') - -77  -as -:: -n -(); - -80 #i -ARDUINOJSON_ENABLE_INFINITY - - -81 i(* - gs - ='i' || * -s - == 'I') - -82  -is_give - ? - -as -:: -f -() :raits::inf(); - -85 i(! -isdig -(* -s -&& * - gs - != '.') - -86  -tu_ty -(); - -88 -mtis_t - - gmtis - = 0; - -89 -expڒt_t - - gexpڒt_offt - = 0; - -90 cڡ -mtis_t - - gmaxUt - = -TUI -(-1); - -92  -isdig -(* -s -)) { - -93 -ut8_t - - gdig - = ut8_t(* -s - - '0'); - -94 i( - gmtis - > - gmaxUt - / 10) - -96 - gmtis - *= 10; - -97 i( - gmtis - > - gmaxUt - - - gdig -) - -99 - gmtis - + -dig -; - -100 - gs -++; - -103 i(* - gs - == '\0') - -104  -tu_ty -( -TUI -( -mtis -), -is_give -); - -107  - gmtis - > - gas -:: -mtis_max -) { - -108 -mtis - /= 10; - -109 - gexpڒt_offt -++; - -113  -isdig -(* -s -)) { - -114 - gexpڒt_offt -++; - -115 - gs -++; - -118 i(* - gs - == '.') { - -119 -s -++; - -120  -isdig -(* -s -)) { - -121 i( - gmtis - < - gas -:: -mtis_max - / 10) { - -122 -mtis - = mtis * 10 + -ut8_t -(* -s - - '0'); - -123 - gexpڒt_offt ---; - -125 - gs -++; - -129  - gexpڒt - = 0; - -130 i(* - gs - ='e' || * -s - == 'E') { - -131 -s -++; - -132 -bo - - ggive_expڒt - = -l -; - -133 i(* - gs - == '-') { - -134 -give_expڒt - = -ue -; - -135 - gs -++; - -136 } i(* - gs - == '+') { - -137 -s -++; - -140  -isdig -(* -s -)) { - -141 - gexpڒt - = -expڒt - * 10 + (* -s - - '0'); - -142 i( - gexpڒt - + - gexpڒt_offt - > - gas -:: -expڒt_max -) { - -143 i( -give_expڒt -) - -144  -is_give - ? -0.0f : 0.0f; - -146  - gis_give - ? - - gas -:: -f -(: -as -::inf(); - -148 - gs -++; - -150 i( - ggive_expڒt -) - -151 - gexpڒt - = - -expڒt -; - -153 - gexpڒt - + -expڒt_offt -; - -156 i(* - gs - != '\0') - -157  -tu_ty -(); - -159 -TFlt - - gsu - = -as -:: -make_t -( -ic_ -( -mtis -), -expڒt -); - -161  - gis_give - ? - - gsu - : -su -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 #ifde -_MSC_VER - - -12 #agm -wng -( -push -) - -13 #agm -wng -( -dib - : 4522) - -16 -mea - - gARDUINOJSON_NAMESPACE - { - -18 - gme - < -tyme - - gTObje -,ym - gTSgRef -> - -19 -ass - - gMembProxy - : -public - -VOts -< -MembProxy -< -TObje -, - gTSgRef -> >, - -20 -public - - gVisab - { - -21  - gMembProxy -< - tTObje -, - tTSgRef -> - tthis_ty -; - -23 - gpublic -: - -24 -FORCE_INLINE - -MembProxy -( -TObje - -v -, -TSgRef - -key -) - -25 : -_obje -( -v -), -_key -( -key -) {} - -27 -FORCE_INLINE - -MembProxy -(cڡ MembProxy & -c -) - -28 : -_obje -( -c -._obje), -_key -(src._key) {} - -30 -FORCE_INLINE - -ݔ - -VCڡRef -() const { - -31  -gUpamMemb -(); - -34 -FORCE_INLINE - - gthis_ty - & - gݔ -=(cڡ -this_ty - & -c -) { - -35 -gOrAddUpamMemb -(). -t -( -c -); - -36  * - gthis -; - -39 - gme - < -tyme - - gTVue -> - -40 -FORCE_INLINE - -tyme - - gab_if -:: -vue -, - gthis_ty - &>:: -ty - - -41 -ݔ -=(cڡ -TVue - & -c -) { - -42 -gOrAddUpamMemb -(). -t -( -c -); - -43  * - gthis -; - -49 - gme - < -tyme - - gTCh -> - -50 -FORCE_INLINE - - gthis_ty - & - gݔ -=( -TCh - * -c -) { - -51 -gOrAddUpamMemb -(). -t -( -c -); - -52  * - gthis -; - -55 -FORCE_INLINE - -bo - - gݔ -==( -VCڡRef - -rhs -) const { - -56  -ic_ -< -VCڡRef ->( -gUpamMemb -()= -rhs -; - -59 -FORCE_INLINE - -bo - - gݔ -!=( -VCڡRef - -rhs -) const { - -60  -ic_ -< -VCڡRef ->( -gUpamMemb -()! -rhs -; - -63 -FORCE_INLINE -  -r -() const { - -64 -gUpamMemb -(). -r -(); - -67 -FORCE_INLINE - -bo - -isNu -() const { - -68  -gUpamMemb -(). -isNu -(); - -71 - gme - < -tyme - - gTVue -> - -72 -FORCE_INLINE - -tyme - - gVAs -< - gTVue ->:: -ty - -as -() const { - -73  -gUpamMemb -(). -me - -as -< -TVue ->(); - -76 - gme - < -tyme - - gTVue -> - -77 -FORCE_INLINE - -bo - -is -() const { - -78  -gUpamMemb -(). -me - - gis -< - gTVue ->(); - -81 -FORCE_INLINE - -size_t - -size -() const { - -82  -gUpamMemb -(). -size -(); - -85 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -86 -gUpamMemb -(). -move -( -dex -); - -91 - gme - < -tyme - - gTCh -> - -92 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue ->:: -ty - -move -( - -93 -TCh - * -key -) const { - -94 -gUpamMemb -(). -move -( -key -); - -98 - gme - < -tyme - - gTSg -> - -99 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -100 cڡ -TSg - & -key -) const { - -101 -gUpamMemb -(). -move -( -key -); - -104 - gme - < -tyme - - gTVue -> - -105 -FORCE_INLINE - -tyme - - gVTo -< - gTVue ->:: -ty - -to -() { - -106  -gOrAddUpamMemb -(). -me - -to -< -TVue ->(); - -109 - gme - < -tyme - - gTVue -> - -110 -FORCE_INLINE - -bo - -t -(cڡ -TVue - & -vue -) { - -111  -gOrAddUpamMemb -(). -t -( -vue -); - -117 - gme - < -tyme - - gTCh -> - -118 -FORCE_INLINE - -bo - -t -( -TCh - * -vue -) { - -119  -gOrAddUpamMemb -(). -t -( -vue -); - -122 - gme - < -tyme - - gVis -> - -123  -ac -( -Vis - & -vis -) const { - -124  -gUpamMemb -(). -ac -( -vis -); - -127 -FORCE_INLINE - -VRef - -addEmt -() const { - -128  -gOrAddUpamMemb -(). -addEmt -(); - -131 -FORCE_INLINE - -VRef - -gEmt -( -size_t - -dex -) const { - -132  -gUpamMemb -(). -gEmt -( -dex -); - -135 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t - -dex -) const { - -136  -gOrAddUpamMemb -(). -gOrAddEmt -( -dex -); - -142 - gme - < -tyme - - gTCh -> - -143 -FORCE_INLINE - -VRef - -gMemb -( -TCh - * -key -) const { - -144  -gUpamMemb -(). -gMemb -( -key -); - -149 - gme - < -tyme - - gTSg -> - -150 -FORCE_INLINE - -VRef - -gMemb -(cڡ -TSg - & -key -) const { - -151  -gUpamMemb -(). -gMemb -( -key -); - -157 - gme - < -tyme - - gTCh -> - -158 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh - * -key -) const { - -159  -gOrAddUpamMemb -(). -gOrAddMemb -( -key -); - -164 - gme - < -tyme - - gTSg -> - -165 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg - & -key -) const { - -166  -gOrAddUpamMemb -(). -gOrAddMemb -( -key -); - -169 - give -: - -170 -FORCE_INLINE - -VRef - -gUpamMemb -() const { - -171  -_obje -. -gMemb -( -_key -); - -174 -FORCE_INLINE - -VRef - -gOrAddUpamMemb -() const { - -175  - g_obje -. -gOrAddMemb -( -_key -); - -178 -TObje - - g_obje -; - -179 -TSgRef - - g_key -; - -184 #ifde -_MSC_VER - - -185 #agm -wng -( -p -) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gVis -> - -12  -objeAc -(cڡ -CiDa - * -obj -, -Vis - & -vis -) { - -13 i( - gobj -) - -14 - gvis -. -visObje -(* -obj -); - -16 - gvis -. -visNu -(); - -19 -le - -bo - -objeEqus -(cڡ -CiDa - * -lhs -, cڡ CiD* -rhs -) { - -20 i( - glhs - = -rhs -) - -21  -ue -; - -22 i(! - glhs - || ! - grhs -) - -23  - gl -; - -24  - glhs --> -equsObje -(* -rhs -); - -27 - gme - < -tyme - - gTAddSg -> - -28 -le - -VDa - * -objeGMemb -(cڡ -CiDa - * -obj -, - -29 -TAddSg - -key -) { - -30 i(! - gobj -) - -32  - gobj --> -gMemb -( -key -); - -35 - gme - < -tyme - - gTAddSg -> - -36  -objeRemove -( -CiDa - * -obj -, -TAddSg - -key -) { - -37 i(! - gobj -) - -39 - gobj --> -moveMemb -( -key -); - -42 - gme - < -tyme - - gTAddSg -> - -43 -le - -VDa - * -objeGOrAddMemb -( -CiDa - * -obj -, - -44 -TAddSg - -key -, -MemyPo - * -po -) { - -45 i(! - gobj -) - -48  - gobj --> -gOrAddMemb -( -key -, -po -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTObje -> - -13 - gme - < -tyme - - gTSg -> - -14 -le - -AayRef - - gObjeShtcuts -< - gTObje ->:: -NeedAay -( - -15 cڡ -TSg -& -key -) const { - -16  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -AayRef ->(); - -19 - gme - < -tyme - - gTObje -> - -20 - gme - < -tyme - - gTCh -> - -21 -le - -AayRef - - gObjeShtcuts -< - gTObje ->:: -NeedAay -( -TCh -* -key -) const { - -22  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -AayRef ->(); - -25 - gme - < -tyme - - gTObje -> - -26 - gme - < -tyme - - gTSg -> - -27 -le - -ObjeRef - - gObjeShtcuts -< - gTObje ->:: -NeedObje -( - -28 cڡ -TSg -& -key -) const { - -29  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -ObjeRef ->(); - -32 - gme - < -tyme - - gTObje -> - -33 - gme - < -tyme - - gTCh -> - -34 -le - -ObjeRef - - gObjeShtcuts -< - gTObje ->:: -NeedObje -( - -35 -TCh -* -key -) const { - -36  -im -()-> -gOrAddMemb -( -key -). -me - -to -< -ObjeRef ->(); - -39 - gme - < -tyme - - gTObje -> - -40 - gme - < -tyme - - gTSg -> - -41 -le - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gbo ->:: -ty - - -42 -ObjeShtcuts -< -TObje ->:: -cڏsKey -(cڡ -TSg -& -key -) const { - -43  ! -im -()-> -gMemb -( -key -). -isUndefed -(); - -46 - gme - < -tyme - - gTObje -> - -47 - gme - < -tyme - - gTCh -> - -48 -le - -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - gbo ->:: -ty - - -49 -ObjeShtcuts -< -TObje ->:: -cڏsKey -( -TCh -* -key -) const { - -50  ! -im -()-> -gMemb -( -key -). -isUndefed -(); - -53 - gme - < -tyme - - gTObje -> - -54 - gme - < -tyme - - gTSg -> - -55 -le - -tyme - - gab_if -< - gIsSg -< - gTSg -*>:: -vue -, - -56 - gMembProxy -< - gTObje -, - gTSg -*> >:: -ty - - -57 -ObjeShtcuts -< -TObje ->:: -ݔ -[]( -TSg -* -key -) const { - -58  -MembProxy -< -TObje -, - gTSg -*>(* -im -(), - gkey -); - -61 - gme - < -tyme - - gTObje -> - -62 - gme - < -tyme - - gTSg -> - -63 -le - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - -64 - gMembProxy -< - gTObje -, - gTSg -> >:: -ty - - -65 -ObjeShtcuts -< -TObje ->:: -ݔ -[](cڡ -TSg -& -key -) const { - -66  -MembProxy -< -TObje -, - gTSg ->(* -im -(), - gkey -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cPaP - { - -13 - gpublic -: - -14 -PaP -( -MemyPo - * -po -, -VSl - * - -: -_ -(pool, slot) {} - -16 cڡ -Pa - * - gݔ -->() const { - -17  & - g_ -; - -20 cڡ - gPa - & - gݔ -*() const { - -21  - g_ -; - -24 - give -: - -25 -Pa - -_ -; - -28 as - cObjeIt - { - -29 - gpublic -: - -30 -ObjeIt -(: -_ -(0) {} - -32 -exic - -ObjeIt -( -MemyPo - * -po -, -VSl - * - -) - -33 : -_po -( -po -), -_ -( - -) {} - -35 -Pa - - gݔ -*() const { - -36  -Pa -( -_po -, -_ -); - -38 -PaP - - gݔ -->() { - -39  -PaP -( -_po -, -_ -); - -42 -bo - - gݔ -==(cڡ -ObjeIt - & -h -) const { - -43  -_ - = -h -._slot; - -46 -bo - - gݔ -!=(cڡ -ObjeIt - & -h -) const { - -47  -_ - ! -h -._slot; - -50 - gObjeIt - & - gݔ -++() { - -51 - g_ - = -_ --> -xt -(); - -52  * - gthis -; - -55 - gObjeIt - & - gݔ -+=( -size_t - -di -) { - -56 -_ - = _-> -xt -( -di -); - -57  * - gthis -; - -60 -VSl - * - -() { - -61  - g_ -; - -64 - give -: - -65 -MemyPo - * -_po -; - -66 -VSl - * - g_ -; - -69 as - cPaCڡP - { - -70 - gpublic -: - -71 -PaCڡP -(cڡ -VSl - * - -: -_ -(slot) {} - -73 cڡ -PaCڡ - * -ݔ -->() const { - -74  & -_ -; - -77 cڡ - gPaCڡ - & - gݔ -*() const { - -78  - g_ -; - -81 - give -: - -82 -PaCڡ - -_ -; - -85 as - cObjeCڡIt - { - -86 - gpublic -: - -87 -ObjeCڡIt -(: -_ -(0) {} - -89 -exic - -ObjeCڡIt -(cڡ -VSl - * - -: -_ -(slot) {} - -91 -PaCڡ - -ݔ -*() const { - -92  -PaCڡ -( -_ -); - -94 -PaCڡP - - gݔ -->() { - -95  -PaCڡP -( -_ -); - -98 -bo - - gݔ -==(cڡ -ObjeCڡIt - & -h -) const { - -99  -_ - = -h -._slot; - -102 -bo - - gݔ -!=(cڡ -ObjeCڡIt - & -h -) const { - -103  -_ - ! -h -._slot; - -106 - gObjeCڡIt - & - gݔ -++() { - -107 - g_ - = -_ --> -xt -(); - -108  * - gthis -; - -111 - gObjeCڡIt - & - gݔ -+=( -size_t - -di -) { - -112 -_ - = _-> -xt -( -di -); - -113  * - gthis -; - -116 cڡ -VSl - * - -() { - -117  - g_ -; - -120 - give -: - -121 cڡ -VSl - * -_ -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -12  - #JSON_OBJECT_SIZE -( -NUMBER_OF_ELEMENTS -) \ - -13 (( -NUMBER_OF_ELEMENTS -* ( -ARDUINOJSON_NAMESPACE -:: -VSl -)) - - ) - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gTDa -> - -18 as - cObjeRefBa - { - -19 - gpublic -: - -20 -ݔ - -VCڡRef -() const { - -21 cڡ * -da - = -_da -; - -22  -VCڡRef -( -t_ -( -da -)); - -25 - gme - < -tyme - - gVis -> - -26 -FORCE_INLINE -  -ac -( -Vis -& -vis -) const { - -27 -objeAc -( -_da -, -vis -); - -30 -FORCE_INLINE - -bo - -isNu -() const { - -31  - g_da - == 0; - -34 -FORCE_INLINE - -ݔ - -bo -() const { - -35  - g_da - != 0; - -38 -FORCE_INLINE - -size_t - -memyUge -() const { - -39  - g_da - ? _da-> -memyUge -() : 0; - -42 -FORCE_INLINE - -size_t - -ág -() const { - -43  - g_da - ? _da-> -ág -() : 0; - -46 -FORCE_INLINE - -size_t - -size -() const { - -47  - g_da - ? _da-> -size -() : 0; - -50 - geed -: - -51 -ObjeRefBa -( -TDa -* -da -: -_da -(data) {} - -52 -TDa -* -_da -; - -55 -ass - - gObjeCڡRef - : -public - -ObjeRefBa -, - -56 -public - - gVisab - { - -57 -nd - -ass - - gObjeRef -; - -58  - gObjeRefBa - - tba_ty -; - -60 - gpublic -: - -61  -ObjeCڡIt - - t -; - -63 -ObjeCڡRef -(: -ba_ty -(0) {} - -64 -ObjeCڡRef -(cڡ -CiDa -* -da -: -ba_ty -(data) {} - -66 -FORCE_INLINE - - - -beg -() const { - -67 i(! -_da -) - -68  - -(); - -69  - -( -_da --> -hd -()); - -72 -FORCE_INLINE - - - -d -() const { - -73  - -(); - -78 - gme - < -tyme - - gTSg -> - -79 -FORCE_INLINE - -bo - -cڏsKey -(cڡ -TSg -& -key -) const { - -80  ! -gMemb -( -key -). -isUndefed -(); - -86 - gme - < -tyme - - gTCh -> - -87 -FORCE_INLINE - -bo - -cڏsKey -( -TCh -* -key -) const { - -88  ! -gMemb -( -key -). -isUndefed -(); - -93 - gme - < -tyme - - gTSg -> - -94 -FORCE_INLINE - -VCڡRef - -gMemb -(cڡ -TSg -& -key -) const { - -95  -g_im -( -adtSg -( -key -)); - -101 - gme - < -tyme - - gTCh -> - -102 -FORCE_INLINE - -VCڡRef - -gMemb -( -TCh -* -key -) const { - -103  -g_im -( -adtSg -( -key -)); - -108 - gme - < -tyme - - gTSg -> - -109 -FORCE_INLINE - - -110 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -111 -ݔ -[](cڡ -TSg -& -key -) const { - -112  -g_im -( -adtSg -( -key -)); - -118 - gme - < -tyme - - gTCh -> - -119 -FORCE_INLINE - - -120 -tyme - - gab_if -< - gIsSg -< - gTCh -*>:: -vue -, - gVCڡRef ->:: -ty - - -121 -ݔ -[]( -TCh -* -key -) const { - -122  -g_im -( -adtSg -( -key -)); - -125 -FORCE_INLINE - -bo - - gݔ -==( -ObjeCڡRef - -rhs -) const { - -126  -objeEqus -( -_da -, -rhs -._data); - -129 - give -: - -130 -me - < -tyme - -TAddSg -> - -131 -FORCE_INLINE - -VCڡRef - -g_im -( -TAddSg - -key -) const { - -132  -VCڡRef -( -objeGMemb -( -_da -, -key -)); - -136 -ass - - gObjeRef - : -public - -ObjeRefBa -< -CiDa ->, - -137 -public - - gObjeShtcuts -< - gObjeRef ->, - -138 -public - - gVisab - { - -139  - gObjeRefBa -< - tCiDa -> - tba_ty -; - -141 - gpublic -: - -142  -ObjeIt - - t -; - -144 -FORCE_INLINE - -ObjeRef -(: -ba_ty -(0), -_po -(0) {} - -145 -FORCE_INLINE - -ObjeRef -( -MemyPo -* -buf -, -CiDa -* -da -) - -146 : -ba_ty -( -da -), -_po -( -buf -) {} - -148 -ݔ - -VRef -() const { - -149 * - gda - = -_da -; - -150  -VRef -( -_po -, -t_ -< -VDa -*>( -da -)); - -153 -ݔ - -ObjeCڡRef -() const { - -154  -ObjeCڡRef -( -_da -); - -157 -FORCE_INLINE - - - -beg -() const { - -158 i(! - g_da -) - -159  - -(); - -160  - -( -_po -, -_da --> -hd -()); - -163 -FORCE_INLINE - - - -d -() const { - -164  - -(); - -167  -r -() const { - -168 i(! - g_da -) - -170 - g_da --> -r -(); - -173 -FORCE_INLINE - -bo - -t -( -ObjeCڡRef - -c -) { - -174 i(! - g_da - || ! - gc -._data) - -175  - gl -; - -176  - g_da --> -cyFrom -(* -c -. -_da -, -_po -); - -181 - gme - < -tyme - - gTSg -> - -182 -FORCE_INLINE - -VRef - -gMemb -(cڡ -TSg -& -key -) const { - -183  -VRef -( -_po -, -objeGMemb -( -_da -, -adtSg -( -key -))); - -189 - gme - < -tyme - - gTCh -> - -190 -FORCE_INLINE - -VRef - -gMemb -( -TCh -* -key -) const { - -191  -VRef -( -_po -, -objeGMemb -( -_da -, -adtSg -( -key -))); - -196 - gme - < -tyme - - gTSg -> - -197 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg -& -key -) const { - -198  -VRef -( -_po -, - -199 -objeGOrAddMemb -( -_da -, -adtSg -( -key -), -_po -)); - -205 - gme - < -tyme - - gTCh -> - -206 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh -* -key -) const { - -207  -VRef -( -_po -, - -208 -objeGOrAddMemb -( -_da -, -adtSg -( -key -), -_po -)); - -211 -FORCE_INLINE - -bo - - gݔ -==( -ObjeRef - -rhs -) const { - -212  -objeEqus -( -_da -, -rhs -._data); - -215 -FORCE_INLINE -  -move -( - - - -) const { - -216 i(! - g_da -) - -218 - g_da --> -moveSl -( - -. - -()); - -223 - gme - < -tyme - - gTSg -> - -224 -FORCE_INLINE -  -move -(cڡ -TSg -& -key -) const { - -225 -objeRemove -( -_da -, -adtSg -( -key -)); - -231 - gme - < -tyme - - gTCh -> - -232 -FORCE_INLINE -  -move -( -TCh -* -key -) const { - -233 -objeRemove -( -_da -, -adtSg -( -key -)); - -236 - give -: - -237 -MemyPo -* -_po -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTPt -,ym - gTSgRef -> - -13 -ass - - gMembProxy -; - -15 - gme - < -tyme - - gTObje -> - -16 as - cObjeShtcuts - { - -17 - gpublic -: - -20 -me - < -tyme - -TSg -> - -21 -FORCE_INLINE - -tyme - -ab_if -< -IsSg -< -TSg ->:: -vue -, - gbo ->:: -ty - - -22 -cڏsKey -(cڡ -TSg - & -key -) const; - -27 - gme - < -tyme - - gTCh -> - -28 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue -, - gbo ->:: -ty - - -29 -cڏsKey -( -TCh - * -key -) const; - -33 - gme - < -tyme - - gTSg -> - -34 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - -35 - gMembProxy -< - gTObje -, - gTSg -> >:: -ty - - -36 -ݔ -[](cڡ -TSg - & -key -) const; - -41 - gme - < -tyme - - gTCh -> - -42 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue -, - -43 - gMembProxy -< - gTObje -, - gTCh - *> >:: -ty - - -44 -ݔ -[]( -TCh - * -key -) const; - -48 - gme - < -tyme - - gTSg -> - -49 -FORCE_INLINE - -AayRef - -NeedAay -(cڡ -TSg - & -key -) const; - -54 - gme - < -tyme - - gTCh -> - -55 -FORCE_INLINE - -AayRef - -NeedAay -( -TCh - * -key -) const; - -59 - gme - < -tyme - - gTSg -> - -60 -ObjeRef - -NeedObje -(cڡ -TSg - & -key -) const; - -65 - gme - < -tyme - - gTCh -> - -66 -ObjeRef - -NeedObje -( -TCh - * -key -) const; - -68 - give -: - -69 cڡ -TObje - * -im -() const { - -70  -ic_ -( -this -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Object/Pair.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cPa - { - -13 - gpublic -: - -14 -Pa -( -MemyPo -* -po -, -VSl -* - -) { - -15 i( - g -) { - -16 - g_key - = -Sg -( - --> -key -(), !-> -ownsKey -()); - -17 - g_vue - = -VRef -( -po -, - --> -da -()); - -21 -Sg - -key -() const { - -22  - g_key -; - -25 -VRef - -vue -() const { - -26  - g_vue -; - -29 - give -: - -30 -Sg - -_key -; - -31 -VRef - - g_vue -; - -34 as - cPaCڡ - { - -35 - gpublic -: - -36 -PaCڡ -(cڡ -VSl -* - -) { - -37 i( - -) { - -38 -_key - = -Sg -( - --> -key -(), !-> -ownsKey -()); - -39 - g_vue - = -VCڡRef -( - --> -da -()); - -43 -Sg - -key -() const { - -44  - g_key -; - -47 -VCڡRef - -vue -() const { - -48  - g_vue -; - -51 - give -: - -52 -Sg - -_key -; - -53 -VCڡRef - - g_vue -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantCasts.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTIm -> - -12 as - cVCas - { - -13 - gpublic -: - -14 -me - < -tyme - -T -> - -15 -FORCE_INLINE - -ݔ - -T -() const { - -16  -im -()-> -me - -as -< -T ->(); - -19 - give -: - -20 cڡ -TIm - * -im -() const { - -21  -ic_ -( -this -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantComparisons.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -,ym - gEb - = > - -12  -Comr -; - -14 - gme - < -tyme - - gT -> - -15  - gComr -< - gT -, -tyme - - gab_if -< - gIsSg -:: -vue ->:: -ty -> { - -16 -T - -rhs -; - -17  - gsu -; - -19 -exic - -Comr -( -T - -vue -: -rhs -(vue), -su -(1) {} - -21  -visAay -(cڡ -CiDa - &) {} - -22  -visObje -(cڡ -CiDa - &) {} - -23  -visFlt -( -Flt -) {} - -24  -visSg -(cڡ * -lhs -) { - -25 - gsu - = - -adtSg -( -rhs -). -com -( -lhs -); - -27  -visRawJs -(cڡ *, -size_t -) {} - -28  -visNegiveIeg -( -UI -) {} - -29  -visPosiveIeg -( -UI -) {} - -30  -visBoޗn -( -bo -) {} - -31  -visNu -() { - -32 - gsu - = -adtSg -( -rhs -). -com -( -NULL -); - -36 - gme - < -tyme - - gT -> - -37 -tyme - - gab_if -< - gis_sigd -< - gT ->:: -vue -, >:: -ty - -sign -(cڡ -T - &value) { - -38  -vue - < 0 ? -1 : value > 0 ? 1 : 0; - -41 - gme - < -tyme - - gT -> - -42 -tyme - - gab_if -< - gis_unsigd -< - gT ->:: -vue -, >:: -ty - -sign -(cڡ -T - &value) { - -43  -vue - > 0 ? 1 : 0; - -46 - gme - < -tyme - - gT -> - -47  - gComr -< - gT -, -tyme - - gab_if -< - gis_gl -:: -vue - || - -48 -is_tg_pot -< -T ->:: -vue ->:: -ty -> { - -49 -T - -rhs -; - -50  - gsu -; - -52 -exic - -Comr -( -T - -vue -: -rhs -(vue), -su -(1) {} - -54  -visAay -(cڡ -CiDa - &) {} - -55  -visObje -(cڡ -CiDa - &) {} - -56  -visFlt -( -Flt - -lhs -) { - -57 - gsu - = -sign -( -lhs - - -ic_ -< -Flt ->( -rhs -)); - -59  -visSg -(const *) {} - -60  -visRawJs -(cڡ *, -size_t -) {} - -61  -visNegiveIeg -( -UI - -lhs -) { - -62 - gsu - = - -sign -( -ic_ -< -T ->( -lhs -+ -rhs -); - -64  -visPosiveIeg -( -UI - -lhs -) { - -65 - gsu - = -ic_ -< -T ->( -lhs -< -rhs - ? -1 : static_cast(lhs) >hs ? 1 : 0; - -67  -visBoޗn -( -bo -) {} - -68  -visNu -() {} - -71 - gme - <> - -72  - gComr -< - gbo -, > { - -73 -bo - - grhs -; - -74  - gsu -; - -76 -exic - -Comr -( -bo - -vue -: -rhs -(vue), -su -(1) {} - -78  -visAay -(cڡ -CiDa - &) {} - -79  -visObje -(cڡ -CiDa - &) {} - -80  -visFlt -( -Flt -) {} - -81  -visSg -(const *) {} - -82  -visRawJs -(cڡ *, -size_t -) {} - -83  -visNegiveIeg -( -UI -) {} - -84  -visPosiveIeg -( -UI -) {} - -85  -visBoޗn -( -bo - -lhs -) { - -86 - gsu - = -ic_ -<>( -lhs - - -rhs -); - -88  -visNu -() {} - -91 #i -ARDUINOJSON_HAS_NULLPTR - - -92 - gme - <> - -93  - gComr -< -dety -( -nuαr -), > { - -94  - gsu -; - -96 -exic - -Comr -( -dety -( -nuαr -): -su -(1) {} - -98  -visAay -(cڡ -CiDa - &) {} - -99  -visObje -(cڡ -CiDa - &) {} - -100  -visFlt -( -Flt -) {} - -101  -visSg -(const *) {} - -102  -visRawJs -(cڡ *, -size_t -) {} - -103  -visNegiveIeg -( -UI -) {} - -104  -visPosiveIeg -( -UI -) {} - -105  -visBoޗn -( -bo -) {} - -106  -visNu -() { - -107 - gsu - = 0; - -112 - gme - < -tyme - - gTV -> - -113 as - cVComriss - { - -114 - give -: - -115 -me - < -tyme - -T -> - -116  -com -( -TV - -lhs -, cڡ -T - & -rhs -) { - -117 - gComr -< - gT -> -comr -( -rhs -); - -118 - glhs -. -ac -( -comr -); - -119  - gcomr -. - gsu -; - -122 - gpublic -: - -124 -me - < -tyme - -T -> - -125 -nd - -bo - -ݔ -==( -T - * -lhs -, -TV - - grhs -) { - -126  -com -( -rhs -, -lhs -) == 0; - -128 - gme - < -tyme - - gT -> - -129 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -==( - -130 cڡ -T - & -lhs -, -TV - - grhs -) { - -131  -com -( -rhs -, -lhs -) == 0; - -135 - gme - < -tyme - - gT -> - -136 -nd - -bo - - gݔ -==( -TV - -lhs -, -T - * - grhs -) { - -137  -com -( -lhs -, -rhs -) == 0; - -139 - gme - < -tyme - - gT -> - -140 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -==( - -141 -TV - -lhs -, cڡ - gT - & - grhs -) { - -142  -com -( -lhs -, -rhs -) == 0; - -146 - gme - < -tyme - - gT -> - -147 -nd - -bo - - gݔ -!=( -T - * -lhs -, -TV - - grhs -) { - -148  -com -( -rhs -, -lhs -) != 0; - -150 - gme - < -tyme - - gT -> - -151 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -!=( - -152 cڡ -T - & -lhs -, -TV - - grhs -) { - -153  -com -( -rhs -, -lhs -) != 0; - -157 - gme - < -tyme - - gT -> - -158 -nd - -bo - - gݔ -!=( -TV - -lhs -, -T - * - grhs -) { - -159  -com -( -lhs -, -rhs -) != 0; - -161 - gme - < -tyme - - gT -> - -162 -nd - -tyme - - gab_if -:: -vue -, - gbo ->:: -ty - -ݔ -!=( - -163 -TV - -lhs -, cڡ - gT - & - grhs -) { - -164  -com -( -lhs -, -rhs -) != 0; - -168 - gme - < -tyme - - gT -> - -169 -nd - -bo - - gݔ -<( -T - * - glhs -, -TV - - grhs -) { - -170  -com -( -rhs -, -lhs -) > 0; - -172 - gme - < -tyme - - gT -> - -173 -nd - -bo - - gݔ -<(cڡ - gT - & - glhs -, -TV - - grhs -) { - -174  -com -( -rhs -, -lhs -) > 0; - -178 - gme - < -tyme - - gT -> - -179 -nd - -bo - - gݔ -<( -TV - - glhs -, -T - * - grhs -) { - -180  -com -( -lhs -, -rhs -) < 0; - -182 - gme - < -tyme - - gT -> - -183 -nd - -bo - - gݔ -<( -TV - - glhs -, cڡ - gT - & - grhs -) { - -184  -com -( -lhs -, -rhs -) < 0; - -188 - gme - < -tyme - - gT -> - -189 -nd - -bo - - gݔ -<=( -T - * -lhs -, -TV - - grhs -) { - -190  -com -( -rhs -, -lhs -) >= 0; - -192 - gme - < -tyme - - gT -> - -193 -nd - -bo - - gݔ -<=(cڡ -T - & -lhs -, -TV - - grhs -) { - -194  -com -( -rhs -, -lhs -) >= 0; - -198 - gme - < -tyme - - gT -> - -199 -nd - -bo - - gݔ -<=( -TV - -lhs -, -T - * - grhs -) { - -200  -com -( -lhs -, -rhs -) <= 0; - -202 - gme - < -tyme - - gT -> - -203 -nd - -bo - - gݔ -<=( -TV - -lhs -, cڡ - gT - & - grhs -) { - -204  -com -( -lhs -, -rhs -) <= 0; - -208 - gme - < -tyme - - gT -> - -209 -nd - -bo - - gݔ ->( -T - * - glhs -, -TV - - grhs -) { - -210  -com -( -rhs -, -lhs -) < 0; - -212 - gme - < -tyme - - gT -> - -213 -nd - -bo - - gݔ ->(cڡ - gT - & - glhs -, -TV - - grhs -) { - -214  -com -( -rhs -, -lhs -) < 0; - -218 - gme - < -tyme - - gT -> - -219 -nd - -bo - - gݔ ->( -TV - - glhs -, -T - * - grhs -) { - -220  -com -( -lhs -, -rhs -) > 0; - -222 - gme - < -tyme - - gT -> - -223 -nd - -bo - - gݔ ->( -TV - - glhs -, cڡ - gT - & - grhs -) { - -224  -com -( -lhs -, -rhs -) > 0; - -228 - gme - < -tyme - - gT -> - -229 -nd - -bo - - gݔ ->=( -T - * -lhs -, -TV - - grhs -) { - -230  -com -( -rhs -, -lhs -) <= 0; - -232 - gme - < -tyme - - gT -> - -233 -nd - -bo - - gݔ ->=(cڡ -T - & -lhs -, -TV - - grhs -) { - -234  -com -( -rhs -, -lhs -) <= 0; - -238 - gme - < -tyme - - gT -> - -239 -nd - -bo - - gݔ ->=( -TV - -lhs -, -T - * - grhs -) { - -240  -com -( -lhs -, -rhs -) >= 0; - -242 - gme - < -tyme - - gT -> - -243 -nd - -bo - - gݔ ->=( -TV - -lhs -, cڡ - gT - & - grhs -) { - -244  -com -( -lhs -, -rhs -) >= 0; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOperators.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -tyme - - gTIm -> - -15 -ass - - gVOts - : -public - -VCas -< -TIm ->, - -16 -public - - gVComriss -< - gTIm ->, - -17 -public - - gVOr -< - gTIm ->, - -18 -public - - gVShtcuts -< - gTIm -> {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOr.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gTIm -> - -14 as - cVOr - { - -15 - gpublic -: - -17 -me - < -tyme - -T -> - -18 -T - -ݔ -|(cڡ T & -deuVue -) const { - -19 i( -im -()-> -me - -is -< -T ->()) - -20  -im -()-> -me - -as -< -T ->(); - -22  - gdeuVue -; - -27 cڡ * - gݔ -|(cڡ * - gdeuVue -) const { - -28 cڡ * - gvue - = -im -()-> -me - -as -(); - -29  - gvue - ? vu: -deuVue -; - -32 - give -: - -33 cڡ -TIm - * -im -() const { - -34  -ic_ -( -this -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantShortcuts.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTV -> - -13 -ass - - gVShtcuts - : -public - -ObjeShtcuts -< -TV ->, - -14 -public - - gAayShtcuts -< - gTV -> { - -15 - gpublic -: - -16 -usg - -AayShtcuts -< -TV ->:: -NeedAay -; - -17 -usg - - gAayShtcuts -< - gTV ->:: -NeedObje -; - -18 -usg - - gAayShtcuts -< - gTV ->:: -ݔ -[]; - -19 -usg - - gObjeShtcuts -< - gTV ->:: -NeedAay -; - -20 -usg - - gObjeShtcuts -< - gTV ->:: -NeedObje -; - -21 -usg - - gObjeShtcuts -< - gTV ->:: -ݔ -[]; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~"mh.h -" - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - < -tyme - - gT -,ym - gF -> - -16  - ss__t - { - -18 -F - - gw -; - -19 -T - - gda -; - -23 - gme - < -tyme - - gT -,ym - gF -> - -24 -T - -s_ -( -F - -w_da -) { - -25 - gs__t -< - gT -, - gF -> - gac -; - -26 - gac -. - gw - = -w_da -; - -27  - gac -. - gda -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp - -5 #agm - - - -7  - ~ - -9 #i -ARDUINOJSON_DEBUG - - -10  - ~ - -11  - #ARDUINOJSON_ASSERT -( -X - - `as -(X) - - ) - -13  - #ARDUINOJSON_ASSERT -( -X -(()0) - - ) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp - -5 #agm - - - -7 #ifde -_MSC_VER - - -9  - #FORCE_INLINE - - -10  - #NO_INLINE - - `__deec -( -nole -) - - ) - -11  - #DEPRECATED -( -msg - - `__deec -( - `dd -(msg)) - - ) - -13 #i -defed -( -__GNUC__ -) - -15  - #FORCE_INLINE - - `__ibu__ -(( -ways_le -)) - - ) - -16  - #NO_INLINE - - `__ibu__ -(( -nole -)) - - ) - -17 #i -__GNUC__ - > 4 || (__GNUC__ =4 && -__GNUC_MINOR__ - >= 5) - -18  - #DEPRECATED -( -msg - - `__ibu__ -(( - `dd -(msg))) - - ) - -20  - #DEPRECATED -( -msg - - `__ibu__ -(( -dd -)) - - ) - -25  - #FORCE_INLINE - - - ) - -26  - #NO_INLINE - - - ) - -27  - #DEPRECATED -( -msg -) - - ) - -31 #i -__lulus - >= 201103L - -32  - #NOEXCEPT - -nx - - - ) - -34  - #NOEXCEPT - - `throw -() - - ) - -37 #i -defed -( -__has_ibu -) - -38 #i -__has_ibu -( -no_nize -) - -39  - #ARDUINOJSON_NO_SANITIZE -( -check - - `__ibu__ -(( - `no_nize -(check))) - - ) - -41  - #ARDUINOJSON_NO_SANITIZE -( -check -) - - ) - -44  - #ARDUINOJSON_NO_SANITIZE -( -check -) - - ) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -le - -bo - -isdig -( -c -) { - -12  '0' < -c - && c <= '9'; - -15 -le - -bo - -issign -( -c -) { - -16  '-' = -c - || c == '+'; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/gsl/not_null.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13 as - cn_nu - { - -14 - gpublic -: - -15 -exic - -n_nu -( -T - -r -: -_r -(ptr) { - -16 -ARDUINOJSON_ASSERT -( -r - ! -NULL -); - -19 -T - -g -() const { - -20 -ARDUINOJSON_ASSERT -( -_r - ! -NULL -); - -21  - g_r -; - -24 - give -: - -25 -T - -_r -; - -28 - gme - < -tyme - - gT -> - -29 - gn_nu -< - gT -> - $make_n_nu -( -T - -r -) { - -30 - `ARDUINOJSON_ASSERT -( -r - ! -NULL -); - -31  -n_nu -< -T ->( -r -); - -32 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp - -5 #agm - - - -7  - ~"ty_as.h -" - -9 #ifde -_MSC_VER - - -10 #agm -wng -( -push -) - -11 #agm -wng -( -dib - : 4310) - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gT -,ym - gEb - = > - -18  -numic_lims -; - -20 - gme - < -tyme - - gT -> - -21  - gnumic_lims -< - gT -, -tyme - - gab_if -< - gis_unsigd -:: -vue ->:: -ty -> { - -22  -T - -lowe -() { - -25  -T - -highe -() { - -26  -T -(-1); - -30 - gme - < -tyme - - gT -> - -31  - gnumic_lims -< - -32 - gT -, -tyme - - gab_if -< - gis_gl -:: -vue - && -is_sigd -< -T ->::vue>:: -ty -> { - -33  -T - -lowe -() { - -34  -T -(T(1) << ((T) * 8 - 1)); - -36  -T - -highe -() { - -37  -T -(~ -lowe -()); - -43 #ifde -_MSC_VER - - -44 #agm -wng -( -p -) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -14 #ide -i - - -15 - gme - < -tyme - - gT -> - -16 -bo - -i -( -T - -x -) { - -17  - gx - ! -x -; - -21 #ide -isf - - -22 - gme - < -tyme - - gT -> - -23 -bo - -isf -( -T - -x -) { - -24  - gx - !0.0 && -x - * 2 == x; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -size_t - - gX -, size_ - gY -, -bo - - gMaxIsX - = ( -X - > -Y -)> - -15  - sMax - {}; - -17 - gme - < -size_t - - gX -, size_ - gY -> - -18  - gMax -< - gX -, - gY -, - gue -> { - -19 cڡ -size_t - - gvue - = -X -; - -22 - gme - < -size_t - - gX -, size_ - gY -> - -23  - gMax -< - gX -, - gY -, - gl -> { - -24 cڡ -size_t - - gvue - = -Y -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -13  - spgm_p - { - -14 -pgm_p -(cڡ * -p -: -addss -(p) {} - -15 cڡ * -addss -; - -19 #ide -_P - - -20 -le - -size_t - - $_P -( -ARDUINOJSON_NAMESPACE -:: -pgm_p - -s -) { - -21 cڡ * -p - = -s -. -addss -; - -22 - `ARDUINOJSON_ASSERT -( -p - ! -NULL -); - -23  - `pgm_ad_by -( -p -))++; - -24  - `size_t -( -p - - -s -. -addss -); - -25 - } -} - -28 #ide -cmp_P - - -29 -le -  - $cmp_P -(cڡ * -a -, -ARDUINOJSON_NAMESPACE -:: -pgm_p - -b -, -size_t - -n -) { - -30 cڡ * -s1 - = -a -; - -31 cڡ * -s2 - = -b -. -addss -; - -32 - `ARDUINOJSON_ASSERT -( -s1 - ! -NULL -); - -33 - `ARDUINOJSON_ASSERT -( -s2 - ! -NULL -); - -34  -n --- > 0) { - -35  -c1 - = * -s1 -++; - -36  -c2 - = -ic_ -<>( - `pgm_ad_by -( -s2 -++)); - -37 i( -c1 - < -c2 -) - -39 i( -c1 - > -c2 -) - -41 i( -c1 - == 0 ) - -45 - } -} - -48 #ide -rcmp_P - - -49 -le -  - $rcmp_P -(cڡ * -a -, -ARDUINOJSON_NAMESPACE -:: -pgm_p - -b -) { - -50 cڡ * -s1 - = -a -; - -51 cڡ * -s2 - = -b -. -addss -; - -52 - `ARDUINOJSON_ASSERT -( -s1 - ! -NULL -); - -53 - `ARDUINOJSON_ASSERT -( -s2 - ! -NULL -); - -55  -c1 - = * -s1 -++; - -56  -c2 - = -ic_ -<>( - `pgm_ad_by -( -s2 -++)); - -57 i( -c1 - < -c2 -) - -59 i( -c1 - > -c2 -) - -61 i( -c1 - == 0 ) - -64 - } -} - -67 #ide -memy_P - - -68 -le - * - $memy_P -(* -d -, -ARDUINOJSON_NAMESPACE -:: -pgm_p - -c -, -size_t - -n -) { - -69 -ut8_t -* -d - = -t_ -( -d -); - -70 cڡ * -s - = -c -. -addss -; - -71 - `ARDUINOJSON_ASSERT -( -d - ! -NULL -); - -72 - `ARDUINOJSON_ASSERT -( -s - ! -NULL -); - -73  -n --- > 0) { - -74 * -d -++ = - `pgm_ad_by -( -s -++); - -76  -d -; - -77 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 -le -  -_rcmp -(cڡ * -a -, cڡ * -b -) { - -14 i( - ga - = -b -) - -16 i(! - ga -) - -18 i(! - gb -) - -20  -rcmp -( -a -, -b -); - -23 -le -  -_cmp -(cڡ * -a -, cڡ * -b -, -size_t - -n -) { - -24 i( - ga - = -b -) - -26 i(! - ga -) - -28 i(! - gb -) - -30  -cmp -( -a -, -b -, -n -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp - -5 #agm - - - -7  - ~"ty_as/cdiڮ.h -" - -8  - ~"ty_as/ab_if.h -" - -9  - ~"ty_as/gl_cڡt.h -" - -10  - ~"ty_as/is_y.h -" - -11  - ~"ty_as/is_ba_of.h -" - -12  - ~"ty_as/is_ass.h -" - -13  - ~"ty_as/is_cڡ.h -" - -14  - ~"ty_as/is_cvtib.h -" - -15  - ~"ty_as/is_um.h -" - -16  - ~"ty_as/is_tg_pot.h -" - -17  - ~"ty_as/is_gl.h -" - -18  - ~"ty_as/is_me.h -" - -19  - ~"ty_as/is_sigd.h -" - -20  - ~"ty_as/is_unsigd.h -" - -21  - ~"ty_as/make_unsigd.h -" - -22  - ~"ty_as/move_cڡ.h -" - -23  - ~"ty_as/move_n.h -" - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -bo - - gCdi -, -ass - - gTrueTy -, cs - gFTy -> - -12  - scdiڮ - { - -13  -TrueTy - - tty -; - -16 - gme - < -ass - - gTrueTy -, cs - gFTy -> - -17  - gcdiڮ -< - gl -, - gTrueTy -, - gFTy -> { - -18  -FTy - - tty -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12 -T - -dev -(); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -bo - - gCdi -, -tyme - - gT - = > - -13  - sab_if - {}; - -15 - gme - < -tyme - - gT -> - -16  - gab_if -< - gue -, - gT -> { - -17  -T - - tty -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -, -T - - gv -> - -12  - sgl_cڡt - { - -13 cڡ -T - - gvue - = -v -; - -16  - ggl_cڡt -< - tbo -, - tue -> - tue_ty -; - -17  - ggl_cڡt -< - tbo -, - tl -> - tl_ty -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gT -> - -14  - gis_y - : -l_ty - {}; - -16 - gme - < -tyme - - gT -> - -17  - gis_y -< - gT -[]> : -ue_ty - {}; - -19 - gme - < -tyme - - gT -, -size_t - - gN -> - -20  - gis_y -< - gT -[ -N -]> : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gTBa -,ym - gTDived -> - -14 as - cis_ba_of - { - -15 - geed -: - -16  - tYes -[1]; - -17  - tNo -[2]; - -19  - gYes - & -obe -(cڡ -TBa - *); - -20  - gNo - & -obe -(...); - -22 - gpublic -: - -23 cڡ -bo - -vue - = - -24 ( -obe -( -t_ -< -TDived - *>(0))=( -Yes -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp - -5 #agm - - - -7  - ~"dev.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12  - sis_ass - { - -13 - geed -: - -14  - tYes -[1]; - -15  - tNo -[2]; - -17 - gme - < -tyme - - gU -> - -18  - gYes - & -obe -(( -U -::*)()); - -19 - gme - < - gtyme -> - -20  - gNo - & -obe -(...); - -22 - gpublic -: - -23 cڡ -bo - -vue - = ( -obe -< -T ->(0)=( -Yes -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13  - gis_cڡ - : -l_ty - {}; - -15 - gme - < -tyme - - gT -> - -16  - gis_cڡ - : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp - -5 #agm - - - -7  - ~"dev.h -" - -9 #ifde -_MSC_VER - - -10 #agm -wng -( -push -) - -12 #agm -wng -( -dib - : 4244) - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gFrom -,ym - gTo -> - -18  - sis_cvtib - { - -19 - geed -: - -20  - tYes -[1]; - -21  - tNo -[2]; - -23  - gYes - & -obe -( -To -); - -24  - gNo - & -obe -(...); - -26 - gpublic -: - -27 cڡ -bo - -vue - = ( -obe -( -dev -< -From ->())=( -Yes -); - -32 #ifde -_MSC_VER - - -33 #agm -wng -( -p -) - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp - -5 #agm - - - -7  - ~"is_ass.h -" - -8  - ~"is_cvtib.h -" - -9  - ~"is_tg_pot.h -" - -10  - ~"is_gl.h -" - -11  - ~"is_me.h -" - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 - gme - < -tyme - - gT -> - -16  - sis_um - { - -17 cڡ -bo - - gvue - = -is_cvtib -< -T -, >:: -vue - && - -18 ! -is_ass -< -T ->:: -vue - && ! -is_gl -::value && - -19 ! -is_tg_pot -< -T ->:: -vue - && - -20 ! -is_me -< -T -, - gbo ->:: -vue -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < - gtyme -> - -12  - gis_tg_pot - : -l_ty - {}; - -14 - gme - <> - -15  - gis_tg_pot -<> : -ue_ty - {}; - -17 - gme - <> - -18  - gis_tg_pot -<> : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp - -5 #agm - - - -7  - ~ - -8  - ~"is_me.h -" - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gT -> - -14  - sis_gl - { - -15 cڡ -bo - - gvue - = - -16 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -17 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -18 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -19 -is_me -< -T -, sigd >:: -vue - || is_same::value || - -20 #i -ARDUINOJSON_HAS_LONG_LONG - - -21 -is_me -< -T -, sigd >:: -vue - || - -22 -is_me -< -T -, >:: -vue - || - -24 #i -ARDUINOJSON_HAS_INT64 - - -25 -is_me -< -T -, sigd - g__t64 ->:: -vue - || - -26 -is_me -< -T -,  - g__t64 ->:: -vue - || - -28 -is_me -< -T -, >:: -vue -; - -33 - gme - < -tyme - - gT -> - -34  - gis_gl - : -is_gl -< -T -> {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -,ym - gU -> - -13  - gis_me - : -l_ty - {}; - -15 - gme - < -tyme - - gT -> - -16  - gis_me -< - gT -, T> : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -8 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < - gtyme -> - -11  - gis_sigd - : -l_ty - {}; - -13 - gme - <> - -14  - gis_sigd -<> : -ue_ty - {}; - -16 - gme - <> - -17  - gis_sigd - : -ue_ty - {}; - -19 - gme - <> - -20  - gis_sigd - : -ue_ty - {}; - -22 - gme - <> - -23  - gis_sigd - : -ue_ty - {}; - -25 - gme - <> - -26  - gis_sigd - : -ue_ty - {}; - -28 - gme - <> - -29  - gis_sigd -<> : -ue_ty - {}; - -31 - gme - <> - -32  - gis_sigd -<> : -ue_ty - {}; - -34 #i -ARDUINOJSON_HAS_LONG_LONG - - -35 - gme - <> - -36  - gis_sigd - : -ue_ty - {}; - -39 #i -ARDUINOJSON_HAS_INT64 - - -40 - gme - <> - -41  - gis_sigd - : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -8 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < - gtyme -> - -11  - gis_unsigd - : -l_ty - {}; - -13 - gme - <> - -14  - gis_unsigd -< - gbo -> : -ue_ty - {}; - -16 - gme - <> - -17  - gis_unsigd -<> : -ue_ty - {}; - -19 - gme - <> - -20  - gis_unsigd -<> : -ue_ty - {}; - -22 - gme - <> - -23  - gis_unsigd -<> : -ue_ty - {}; - -25 - gme - <> - -26  - gis_unsigd -<> : -ue_ty - {}; - -28 #i -ARDUINOJSON_HAS_INT64 - - -29 - gme - <> - -30  - gis_unsigd -< - g__t64 -> : -ue_ty - {}; - -33 #i -ARDUINOJSON_HAS_LONG_LONG - - -34 - gme - <> - -35  - gis_unsigd -<> : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp - -5 #agm - - - -7  - ~"ty_idty.h -" - -8 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < -tyme - - gT -> - -11  - gmake_unsigd -; - -13 - gme - <> - -14  - gmake_unsigd -<> : -ty_idty -<> {}; - -16 - gme - <> - -17  - gmake_unsigd - : -ty_idty -<> {}; - -18 - gme - <> - -19  - gmake_unsigd -<> : -ty_idty -<> {}; - -21 - gme - <> - -22  - gmake_unsigd - : -ty_idty -<> {}; - -23 - gme - <> - -24  - gmake_unsigd -<> : -ty_idty -<> {}; - -26 - gme - <> - -27  - gmake_unsigd - : -ty_idty -<> {}; - -28 - gme - <> - -29  - gmake_unsigd -<> : -ty_idty -<> {}; - -31 - gme - <> - -32  - gmake_unsigd - : -ty_idty -<> {}; - -33 - gme - <> - -34  - gmake_unsigd -<> : -ty_idty -<> {}; - -36 #i -ARDUINOJSON_HAS_LONG_LONG - - -37 - gme - <> - -38  - gmake_unsigd - : -ty_idty -<> {}; - -39 - gme - <> - -40  - gmake_unsigd -<> : -ty_idty -<> {}; - -43 #i -ARDUINOJSON_HAS_INT64 - - -44 - gme - <> - -45  - gmake_unsigd - : -ty_idty -< -__t64 -> {}; - -46 - gme - <> - -47  - gmake_unsigd -< - g__t64 -> : -ty_idty -< -__t64 -> {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13  - smove_cڡ - { - -14  -T - - tty -; - -16 - gme - < -tyme - - gT -> - -17  - gmove_cڡ - { - -18  -T - - tty -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gT -> - -13  - smove_n - { - -14  -T - - tty -; - -16 - gme - < -tyme - - gT -> - -17  - gmove_n -< - gT -&> { - -18  -T - - tty -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp - -5 #agm - - - -7  - ~"gl_cڡt.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gT -> - -12  - sty_idty - { - -13  -T - - tty -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp - -5 #agm - - - -7  - ~"ty_as.h -" - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < -tyme - - gT -> - -11 -le -  -sw -( -T -& -a -, T& -b -) { - -12 -T - -t -( -a -); - -13 - ga - = -b -; - -14 - gb - = -t -; - -17 #i -ARDUINOJSON_HAS_RVALUE_REFERENCES - - -18 - gme - < -tyme - - gT -> - -19 -tyme - - gmove_n -< - gT ->:: -ty -&& -move -( -T -&& -t -) { - -20  -ic_ -< -tyme - -move_n -< -T ->:: -ty -&&>( -t -); - -23 - gme - < -tyme - - gT -> - -24 - gT -& -move -( -T -& -t -) { - -25  - gt -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTDei -,ym - gEb - = > - -13 as - cWr - { - -14 -public -: - -15 -exic - -Wr -( -TDei -& -de -: -_de -(&dest) {} - -17 -size_t - -wre -( -ut8_t - -c -) { - -18  -_de --> -wre -( -c -); - -21 -size_t - -wre -(cڡ -ut8_t -* -s -, size_ -n -) { - -22  - g_de --> -wre -( -s -, -n -); - -25 - give -: - -26 -TDei -* -_de -; - -31  - ~ - -33 #i -ARDUINOJSON_ENABLE_STD_STRING - - -34  - ~ - -37 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -38  - ~ - -41 #i -ARDUINOJSON_ENABLE_STD_STREAM - - -42  - ~ - -45 #i -ARDUINOJSON_ENABLE_ARDUINO_PRINT - - -46  - ~ - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - <> - -12 -ass - - gWr -< :: -Sg -, > { - -13 cڡ -size_t - - gbufrCacy - = -ARDUINOJSON_STRING_BUFFER_SIZE -; - -15 - gpublic -: - -16 -exic - -Wr -(:: -Sg - & -r -: -_dei -(&str) { - -17 -_size - = 0; - -20 ~ -Wr -() { - -21 -ush -(); - -24 -size_t - -wre -( -ut8_t - -c -) { - -25 -ARDUINOJSON_ASSERT -( -_size - < -bufrCacy -); - -26 - g_bufr -[ -_size -++] = -ic_ -<>( -c -); - -27 i( - g_size - + 1 > -bufrCacy -) - -28 -ush -(); - -32 -size_t - -wre -(cڡ -ut8_t - * -s -, size_ -n -) { - -33  -size_t - - gi - = 0; i < - gn -; i++) { - -34 -wre -( -s -[ -i -]); - -36  - gn -; - -39 - give -: - -40  -ush -() { - -41 -ARDUINOJSON_ASSERT -( -_size - < -bufrCacy -); - -42 - g_bufr -[ -_size -] = 0; - -43 * - g_dei - + -_bufr -; - -44 - g_size - = 0; - -47 :: -Sg - * -_dei -; - -48  - g_bufr -[ -bufrCacy -]; - -49 -size_t - - g_size -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cDummyWr - { - -12 - gpublic -: - -13 -size_t - -wre -( -ut8_t -) { - -17 -size_t - -wre -(cڡ -ut8_t -*, size_ -n -) { - -18  - gn -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 - gme - < -tyme - - gTDei -> - -10 -ass - - gWr -< - -11 - gTDei -, - -12 -tyme - - gab_if -< - gis_ba_of -< :: -Prt -, - gTDei ->:: -vue ->:: -ty -> { - -13 -public -: - -14 -exic - -Wr -(:: -Prt -& -t -: -_t -(&print) {} - -16 -size_t - -wre -( -ut8_t - -c -) { - -17  -_t --> -wre -( -c -); - -20 -size_t - -wre -(cڡ -ut8_t -* -s -, size_ -n -) { - -21  - g_t --> -wre -( -s -, -n -); - -24 - give -: - -25 :: -Prt -* -_t -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cSticSgWr - { - -13 - gpublic -: - -14 -SticSgWr -(* -buf -, -size_t - -size -: -d -(bu+ siz- 1), -p -(buf) { - -15 * - gp - = '\0'; - -18 -size_t - -wre -( -ut8_t - -c -) { - -19 i( - gp - > -d -) - -21 * - gp -++ = -ic_ -<>( -c -); - -22 * - gp - = '\0'; - -26 -size_t - -wre -(cڡ -ut8_t - * -s -, size_ -n -) { - -27 * - gbeg - = -p -; - -28  - gp - < - gd - && - gn - > 0) { - -29 * - gp -++ = -ic_ -<>(* -s -++); - -30 - gn ---; - -32 * - gp - = '\0'; - -33  -size_t -( -p - - -beg -); - -36 - give -: - -37 * -d -; - -38 * - gp -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gTDei -> - -12 -ass - - gWr -< - -13 - gTDei -, - -14 -tyme - - gab_if -< - gis_ba_of -< - gd -:: -oam -, - gTDei ->:: -vue ->:: -ty -> { - -15 -public -: - -16 -exic - -Wr -( -d -:: -oam -& -os -: -_os -(&os) {} - -18 -size_t - -wre -( -ut8_t - -c -) { - -19 -_os --> -put -( -ic_ -<>( -c -)); - -23 -size_t - -wre -(cڡ -ut8_t -* -s -, size_ -n -) { - -24 - g_os --> -wre -( -t_ -( -s -), - -25 -ic_ -< -d -:: -amsize ->( -n -)); - -26  - gn -; - -29 - give -: - -30 -d -:: -oam -* -_os -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 - gme - < -ass - - gT -> - -15  - gis_d_rg - : -l_ty - {}; - -17 - gme - < -ass - - gTChTs -, cs - gTAot -> - -18  - gis_d_rg -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > - -19 : -ue_ty - {}; - -21 - gme - < -tyme - - gTDei -> - -22 -ass - - gWr -< - gTDei -, - -23 -tyme - - gab_if -< - gis_d_rg -< - gTDei ->:: -vue ->:: -ty -> { - -24 -public -: - -25 -Wr -( -TDei - & -r -: -_r -(&str) {} - -27 -size_t - -wre -( -ut8_t - -c -) { - -28 -_r --> -ݔ -+=( -ic_ -<>( -c -)); - -32 -size_t - -wre -(cڡ -ut8_t - * -s -, size_ -n -) { - -33 - g_r --> -nd -( -t_ -( -s -), -n -); - -34  - gn -; - -37 - give -: - -38 -TDei - * -_r -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - -ass - - gTSliz -, -tyme - - gTSour -> - -12 -size_t - -msu -(cڡ -TSour - & -sour -) { - -13 -DummyWr - - gdp -; - -14 - gTSliz -< - gDummyWr -> -rliz -( -dp -); - -15 - gsour -. -ac -( -rliz -); - -16  - grliz -. -bysWrn -(); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - -ass - - gTSliz -, -tyme - - gTSour -, - -12 -tyme - - gTWr -> - -13 -size_t - -doSlize -(cڡ -TSour - & -sour -, -TWr - -wr -) { - -14 - gTSliz -< - gTWr -> -rliz -( -wr -); - -15 - gsour -. -ac -( -rliz -); - -16  - grliz -. -bysWrn -(); - -19 - gme - -ass - - gTSliz -, -tyme - - gTSour -, - -20 -tyme - - gTDei -> - -21 -size_t - -rlize -(cڡ -TSour - & -sour -, -TDei - & -dei -) { - -22 - gWr -< - gTDei -> -wr -( -dei -); - -23  - gdoSlize -< - gTSliz ->( - gsour -, - gwr -); - -26 - gme - -ass - - gTSliz -, -tyme - - gTSour -> - -27 -size_t - -rlize -(cڡ -TSour - & -sour -, * -bufr -, size_ -bufrSize -) { - -28 -SticSgWr - -wr -( -t_ -<*>( -bufr -), -bufrSize -); - -29  - gdoSlize -< - gTSliz ->( - gsour -, - gwr -); - -32 - gme - -ass - - gTSliz -, -tyme - - gTSour -, - -33 -tyme - - gTCh -, -size_t - - gN -> - -34 #i -defed - -_MSC_VER - && _MSC_VER < 1900 - -35 -tyme - - gab_if -<( - gmove_n -< - gTCh ->:: -ty -=1, - gsize_t ->::type - -37 -tyme - -ab_if -<( -TCh -=1, - gsize_t ->:: -ty - - -39 -rlize -(cڡ -TSour - & -sour -, -TCh - (& -bufr -)[ -N -]) { - -40 -SticSgWr - -wr -( -t_ -<*>( -bufr -), -N -); - -41  - gdoSlize -< - gTSliz ->( - gsour -, - gwr -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 as - cSgCݛr - { - -13 - gpublic -: - -14  -ARDUINOJSON_NAMESPACE -:: - tSgBud - StringBuilder; - -16 -SgCݛr -( -MemyPo -* -po -: -_po -(pool) {} - -18 -SgBud - -tSg -() { - -19  -SgBud -( -_po -); - -22  -aim -(cڡ * -s -) { - -23 - g_po --> -aimLaSg -( -s -); - -26 - give -: - -27 -MemyPo -* -_po -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 as - cSgMov - { - -12 - gpublic -: - -13 as - cSgBud - { - -14 -public -: - -15 -SgBud -(** -r -: -_wreP -Ռ), -_tP -(*ptr) {} - -17  -nd -( -c -) { - -18 *(* - g_wreP -)++ = ( -c -); - -21 * -come -() const { - -22 *(* - g_wreP -)++ = 0; - -23  - g_tP -; - -26 - give -: - -27 ** -_wreP -; - -28 * - g_tP -; - -31 -SgMov -(* -r -: -_r -(ptr) {} - -33 -SgBud - -tSg -() { - -34  -SgBud -(& -_r -); - -38  -aim -(cڡ * -r -) { - -39 - g_r - = -cڡ_ -<*>( -r -); - -42 - give -: - -43 * -_r -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTIut -,ym - gEb - = > - -13  - sSgStage - { - -14  -SgCݛr - - tty -; - -16  -ty - - -( -MemyPo -& -po -, -TIut -&) { - -17  -ty -(& -po -); - -21 - gme - < -tyme - - gTCh -> - -22  - gSgStage -< - gTCh -*, - -23 -tyme - - gab_if -:: -vue ->:: -ty -> { - -24  -SgMov - - tty -; - -26  -ty - - -( -MemyPo -&, -TCh -* -put -) { - -27  -ty -( -t_ -<*>( -put -)); - -31 - gme - < -tyme - - gTIut -> - -32 -tyme - - gSgStage -< - gTIut ->:: -ty - -makeSgStage -( -MemyPo -& -po -, - -33 -TIut -& -put -) { - -34  - gSgStage -< - gTIut ->:: - -( -po -, -put -); - -37 - gme - < -tyme - - gTCh -> - -38 -tyme - - gSgStage -< - gTCh -*>:: -ty - -makeSgStage -( -MemyPo -& -po -, - -39 -TCh -* -put -) { - -40  - gSgStage -< - gTCh -*>:: - -( -po -, -put -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 as - cArduoSgAdr - { - -16 - gpublic -: - -17 -ArduoSgAdr -(cڡ :: -Sg -& -r -: -_r -(&str) {} - -19 * -ve -( -MemyPo -* -po -) const { - -20 i( -isNu -()) - -21  -NULL -; - -22 -size_t - - gn - = -_r --> -ngth -() + 1; - -23 * - gdup - = -po --> -locFrozSg -( -n -); - -24 i( - gdup -) - -25 -memy -( -dup -, -_r --> -c_r -(), -n -); - -26  - gdup -; - -29 -bo - -isNu -() const { - -31  ! - g_r --> -c_r -(); - -34  -com -(cڡ * -h -) const { - -36 cڡ * - gme - = -_r --> -c_r -(); - -37  -_rcmp -( -me -, -h -); - -40 -bo - -equs -(cڡ * -exed -) const { - -41  -com -( -exed -) == 0; - -44 -size_t - -size -() const { - -45  - g_r --> -ngth -(); - -48  - gage_picy -:: - te_by_cy - - tage_picy -; - -50 - give -: - -51 cڡ :: -Sg -* -_r -; - -54 - gme - <> - -55  - gIsSg -< :: -Sg -> : -ue_ty - {}; - -57 - gme - <> - -58  - gIsSg -< :: -SgSumHr -> : -ue_ty - {}; - -60 -le - -ArduoSgAdr - - $adtSg -(cڡ :: -Sg -& -r -) { - -61  - `ArduoSgAdr -( -r -); - -62 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 as - cCڡRamSgAdr - { - -17 - gpublic -: - -18 -CڡRamSgAdr -(cڡ * -r - = 0: -_r -(str) {} - -20  -com -(cڡ * -h -) const { - -21  -_rcmp -( -_r -, -h -); - -24 -bo - -equs -(cڡ * -exed -) const { - -25  -com -( -exed -) == 0; - -28 -bo - -isNu -() const { - -29  ! - g_r -; - -32 -size_t - -size -() const { - -33 i(! - g_r -) - -35  - -( -_r -); - -38 cڡ * -da -() const { - -39  - g_r -; - -42  - gage_picy -:: - te_by_addss - - tage_picy -; - -44 - geed -: - -45 cڡ * -_r -; - -48 -le - -CڡRamSgAdr - - $adtSg -(cڡ * -r -) { - -49  - `CڡRamSgAdr -( -r -); - -50 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 as - cFshSgAdr - { - -15 - gpublic -: - -16 -FshSgAdr -(cڡ -__FshSgHr -* -r -: -_r -(str) {} - -18  -com -(cڡ * -h -) const { - -19 i(! -h - && ! -_r -) - -21 i(! - g_r -) - -23 i(! - gh -) - -25  - -rcmp_P -( -h -, -t_ -( -_r -)); - -28 -bo - -equs -(cڡ * -exed -) const { - -29  -com -( -exed -) == 0; - -32 -bo - -isNu -() const { - -33  ! - g_r -; - -36 * -ve -( -MemyPo -* -po -) const { - -37 i(! - g_r -) - -38  - gNULL -; - -39 -size_t - - gn - = -size -() + 1; - -40 * - gdup - = -po --> -locFrozSg -( -n -); - -41 i( - gdup -) - -42 -memy_P -( -dup -, -t_ -( -_r -), -n -); - -43  - gdup -; - -46 -size_t - -size -() const { - -47 i(! - g_r -) - -49  -_P -( -t_ -( -_r -)); - -52  - gage_picy -:: - te_by_cy - - tage_picy -; - -54 - give -: - -55 cڡ -__FshSgHr -* -_r -; - -58 -le - -FshSgAdr - - $adtSg -(cڡ -__FshSgHr -* -r -) { - -59  - `FshSgAdr -( -r -); - -60 - } -} - -62 - gme - <> - -63  - gIsSg - : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -10 - gme - < - gtyme -> - -11  - gIsSg - : -l_ty - {}; - -13 - gme - < -tyme - - gT -> - -14  - gIsSg - : -IsSg -< -T -> {}; - -16 - gme - < -tyme - - gT -> - -17  - gIsSg -< - gT -&> : -IsSg -< -T -> {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -11  - ~ - -14 #i -ARDUINOJSON_ENABLE_STD_STRING - - -15  - ~ - -18 -mea - - gARDUINOJSON_NAMESPACE - { - -20 - gme - < - gtyme -> - -21  - gIsWrbSg - : -l_ty - {}; - -23 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -25 - gme - <> - -26  - gIsWrbSg -< :: -Sg -> : -ue_ty - {}; - -30 #i -ARDUINOJSON_ENABLE_STD_STRING - - -32 - gme - < -tyme - - gTChTs -,ym - gTAot -> - -33  - gIsWrbSg -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > - -34 : -ue_ty - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12 -mea - - gARDUINOJSON_NAMESPACE - { - -14 as - cRamSgAdr - : -public - -CڡRamSgAdr - { - -15 -public -: - -16 -RamSgAdr -(cڡ * -r -: -CڡRamSgAdr -(str) {} - -18 * -ve -( -MemyPo -* -po -) const { - -19 i(! -_r -) - -20  -NULL -; - -21 -size_t - - gn - = -size -() + 1; - -22 * - gdup - = -po --> -locFrozSg -( -n -); - -23 i( - gdup -) - -24 -memy -( -dup -, -_r -, -n -); - -25  - gdup -; - -28  - gARDUINOJSON_NAMESPACE -:: - tage_picy -:: - te_by_cy - storage_policy; - -31 - gme - < -tyme - - gTCh -> - -32 -le - -RamSgAdr - - $adtSg -(cڡ -TCh -* -r -) { - -33  - `RamSgAdr -( -t_ -( -r -)); - -34 - } -} - -36 -le - -RamSgAdr - - $adtSg -(* -r -) { - -37  - `RamSgAdr -( -r -); - -38 - } -} - -40 - gme - < -tyme - - gTCh -> - -41  - gIsSg -< - gTCh -*> { - -42 cڡ -bo - - gvue - = ( -TCh -) == 1; - -45 - gme - <> - -46  - gIsSg -<*> { - -47 cڡ -bo - - gvue - = -l -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 as - cSizedFshSgAdr - { - -14 - gpublic -: - -15 -SizedFshSgAdr -(cڡ -__FshSgHr -* -r -, -size_t - -sz -) - -16 : -_r -( -r -), -_size -( -sz -) {} - -18  -com -(cڡ * -h -) const { - -19 i(! - gh - && ! - g_r -) - -21 i(! - g_r -) - -23 i(! - gh -) - -25  - -cmp_P -( -h -, -t_ -( -_r -), -_size -); - -28 -bo - -equs -(cڡ * -exed -) const { - -29  -com -( -exed -) == 0; - -32 -bo - -isNu -() const { - -33  ! - g_r -; - -36 * -ve -( -MemyPo -* -po -) const { - -37 i(! - g_r -) - -38  - gNULL -; - -39 * - gdup - = -po --> -locFrozSg -( -_size -); - -40 i( - gdup -) - -41 -memy_P -( -dup -, -t_ -( -_r -), -_size -); - -42  - gdup -; - -45 -size_t - -size -() const { - -46  - g_size -; - -49  - gage_picy -:: - te_by_cy - - tage_picy -; - -51 - give -: - -52 cڡ -__FshSgHr -* -_r -; - -53 -size_t - - g_size -; - -56 -le - -SizedFshSgAdr - - $adtSg -(cڡ -__FshSgHr -* -r -, - -57 -size_t - -sz -) { - -58  - `SizedFshSgAdr -( -r -, -sz -); - -59 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15 as - cSizedRamSgAdr - { - -16 - gpublic -: - -17 -SizedRamSgAdr -(cڡ * -r -, -size_t - -n -: -_r -(r), -_size -(n) {} - -19  -com -(cڡ * -h -) const { - -20  -_cmp -( -_r -, -h -, -_size -); - -23 -bo - -equs -(cڡ * -exed -) const { - -24  -com -( -exed -) == 0; - -27 -bo - -isNu -() const { - -28  ! - g_r -; - -31 * -ve -( -MemyPo -* -po -) const { - -32 i(! - g_r -) - -33  - gNULL -; - -34 * - gdup - = -po --> -locFrozSg -( -_size -); - -35 i( - gdup -) - -36 -memy -( -dup -, -_r -, -_size -); - -37  - gdup -; - -40 -size_t - -size -() const { - -41  - g_size -; - -44  - gage_picy -:: - te_by_cy - - tage_picy -; - -46 - give -: - -47 cڡ * -_r -; - -48 -size_t - - g_size -; - -51 - gme - < -tyme - - gTCh -> - -52 -le - -SizedRamSgAdr - - $adtSg -(cڡ -TCh -* -r -, -size_t - -size -) { - -53  - `SizedRamSgAdr -( -t_ -( -r -), -size -); - -54 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StlStringAdapter.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -12  - ~ - -14 -mea - - gARDUINOJSON_NAMESPACE - { - -16 - gme - < -tyme - - gTSg -> - -17 as - cSSgAdr - { - -18 - gpublic -: - -19 -SSgAdr -(cڡ -TSg -& -r -: -_r -(&str) {} - -21 * -ve -( -MemyPo -* -po -) const { - -22 -size_t - -n - = -_r --> -ngth -() + 1; - -23 * - gdup - = -po --> -locFrozSg -( -n -); - -24 i( - gdup -) - -25 -memy -( -dup -, -_r --> -c_r -(), -n -); - -26  - gdup -; - -29 -bo - -isNu -() const { - -30  - gl -; - -33  -com -(cڡ * -h -) const { - -34 i(! - gh -) - -36  - g_r --> -com -( -h -); - -39 -bo - -equs -(cڡ * -exed -) const { - -40 i(! - gexed -) - -41  - gl -; - -42  * - g_r - = -exed -; - -45 -size_t - -size -() const { - -46  - g_r --> -size -(); - -49  - gage_picy -:: - te_by_cy - - tage_picy -; - -51 - give -: - -52 cڡ -TSg -* -_r -; - -55 - gme - < -tyme - - gTChTs -,ym - gTAot -> - -56  - gIsSg -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > : -ue_ty - { - -59 - gme - < -tyme - - gTChTs -,ym - gTAot -> - -60 -le - - gSSgAdr -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> > - -61 -adtSg -(cڡ -d -:: -basic_rg -<, -TChTs -, -TAot ->& -r -) { - -62  - gSSgAdr -< - gd -:: -basic_rg -<, - gTChTs -, - gTAot -> >( - -63 - gr -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp - -5 #agm - - - -7 -mea - - gARDUINOJSON_NAMESPACE - { - -9 -mea - - gage_picy - { - -10  - se_by_addss - {}; - -11  - se_by_cy - {}; - -12  - sdecide__ruime - {}; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/String.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 as - cSg - { - -14 - gpublic -: - -15 -Sg -(: -_da -(0), -_isStic -( -ue -) {} - -16 -Sg -(cڡ * -da -, -bo - -isSticDa - = -ue -) - -17 : -_da -( -da -), -_isStic -( -isSticDa -) {} - -19 cڡ * -c_r -() const { - -20  - g_da -; - -23 -bo - -isNu -() const { - -24  ! - g_da -; - -27 -bo - -isStic -() const { - -28  - g_isStic -; - -31 -nd - -bo - - gݔ -==( -Sg - -lhs -, Sg - grhs -) { - -32 i( - glhs -. - g_da - = -rhs -. -_da -) - -33  -ue -; - -34 i(! - glhs -. - g_da -) - -35  - gl -; - -36 i(! - grhs -. - g_da -) - -37  - gl -; - -38  -rcmp -( -lhs -. -_da -, -rhs -._data) == 0; - -41  - gage_picy -:: - tdecide__ruime - - tage_picy -; - -43 - give -: - -44 cڡ * -_da -; - -45 -bo - - g_isStic -; - -48 as - cSgAdr - : -public - -RamSgAdr - { - -49 -public -: - -50 -SgAdr -(cڡ -Sg -& -r -) - -51 : -RamSgAdr -( -r -. -c_r -()), -_isStic -(r. -isStic -()) {} - -53 -bo - -isStic -() const { - -54  - g_isStic -; - -57 cڡ * -ve -( -MemyPo -* -po -) const { - -58 i( - g_isStic -) - -59  -da -(); - -60  - gRamSgAdr -:: -ve -( -po -); - -63 - give -: - -64 -bo - -_isStic -; - -67 - gme - <> - -68  - gIsSg -< - gSg -> : -ue_ty - {}; - -70 -le - -SgAdr - - $adtSg -(cڡ -Sg -& -r -) { - -71  - `SgAdr -( -r -); - -72 - } -} - - @lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 #i -ARDUINOJSON_ENABLE_STD_STRING - - -12  - ~ - -15 #i -ARDUINOJSON_ENABLE_ARDUINO_STRING - - -16  - ~ - -19 #i -ARDUINOJSON_ENABLE_PROGMEM - - -20  - ~ - -21  - ~ - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10 -mea - - gARDUINOJSON_NAMESPACE - { - -12 - gme - < -tyme - - gTAddSg -> - -13 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -* -po -) { - -14 i(! - gv -) - -15  - gl -; - -16  -SKey -( -v -, -key -, -po -, -tyme - -TAddSg -:: -age_picy -()); - -19 - gme - < -tyme - - gTAddSg -> - -20 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -* -po -, - -21 -age_picy -:: -decide__ruime -) { - -22 i( -key -. -isStic -()) { - -23  -SKey -( -v -, -key -, -po -, -age_picy -:: -e_by_addss -()); - -25  -SKey -( -v -, -key -, -po -, -age_picy -:: -e_by_cy -()); - -27  - gue -; - -30 - gme - < -tyme - - gTAddSg -> - -31 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -*, - -32 -age_picy -:: -e_by_addss -) { - -33 -ARDUINOJSON_ASSERT -( -v -); - -34 - gv --> -tLkedKey -( -make_n_nu -( -key -. -da -())); - -35  - gue -; - -38 - gme - < -tyme - - gTAddSg -> - -39 -le - -bo - -SKey -( -VSl -* -v -, -TAddSg - -key -, -MemyPo -* -po -, - -40 -age_picy -:: -e_by_cy -) { - -41 cڡ * -dup - = -key -. -ve -( -po -); - -42 i(! - gdup -) - -43  - gl -; - -44 -ARDUINOJSON_ASSERT -( -v -); - -45 - gv --> -tOwdKey -( -make_n_nu -( -dup -)); - -46  - gue -; - -49 -le - -size_t - -Size -(cڡ -VSl -* -v -) { - -50 -size_t - - gn - = 0; - -51  - gv -) { - -52 - gn -++; - -53 - gv - = -v --> -xt -(); - -55  - gn -; - -58 -le - -VDa -* -Da -( -VSl -* - -) { - -59  - gt_ -< - gVDa -*>( - g -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 -ass - - gAayRef -; - -12 -ass - - gAayCڡRef -; - -13 -ass - - gObjeRef -; - -14 -ass - - gObjeCڡRef -; - -15 -ass - - gVRef -; - -16 -ass - - gVCڡRef -; - -20 - gme - < -tyme - - gT -> - -21  - sVAs - { - -22  -T - - tty -; - -25 - gme - <> - -26  - gVAs -<*> { - -27 cڡ * - tty -; - -32 - gme - < -tyme - - gT -> - -33  - sVCڡAs - { - -34  -tyme - - tVAs -< - tT ->:: - tty -ype; - -37 - gme - <> - -38  - gVCڡAs -< - gVRef -> { - -39  -VCڡRef - - tty -; - -42 - gme - <> - -43  - gVCڡAs -< - gObjeRef -> { - -44  -ObjeCڡRef - - tty -; - -47 - gme - <> - -48  - gVCڡAs -< - gAayRef -> { - -49  -AayCڡRef - - tty -; - -54 - gme - < -tyme - - gT -> - -55 -le - -tyme - - gab_if -< - gis_gl -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -56 cڡ -VDa -* -_da -) { - -57  -_da - !0 ? _da-> -asIegl -< -T ->() : T(0); - -60 - gme - < -tyme - - gT -> - -61 -le - -tyme - - gab_if -< - gis_me -< - gT -, - gbo ->:: -vue -, T>:: -ty - -vAs -( - -62 cڡ -VDa -* -_da -) { - -63  -_da - !0 ? _da-> -asBoޗn -(: -l -; - -66 - gme - < -tyme - - gT -> - -67 -le - -tyme - - gab_if -< - gis_tg_pot -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -68 cڡ -VDa -* -_da -) { - -69  -_da - !0 ? _da-> -asFlt -< -T ->() : T(0); - -72 - gme - < -tyme - - gT -> - -73 -le - -tyme - - gab_if -< - gis_me -< - gT -, cڡ *>:: -vue - || - -74 -is_me -< -T -, *>:: -vue -, - -75 cڡ *>:: -ty - - -76 -vAs -(cڡ -VDa -* -_da -) { - -77  -_da - !0 ? _da-> -asSg -() : 0; - -80 - gme - < -tyme - - gT -> - -81 -le - -tyme - - gab_if -< - gis_me -< - gAayCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -82 cڡ -VDa -* -_da -); - -84 - gme - < -tyme - - gT -> - -85 -le - -tyme - - gab_if -< - gis_me -< - gObjeCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -86 cڡ -VDa -* -_da -); - -88 - gme - < -tyme - - gT -> - -89 -le - -tyme - - gab_if -< - gis_me -< - gVCڡRef -, - gT ->:: -vue -, T>:: -ty - - -90 -vAs -(cڡ -VDa -* -_da -); - -92 - gme - < -tyme - - gT -> - -93 -le - -tyme - - gab_if -< - gIsWrbSg -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -94 cڡ -VDa -* -_da -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11 -mea - - gARDUINOJSON_NAMESPACE - { - -13 - gme - < -tyme - - gT -> - -14 -le - -tyme - - gab_if -< - gis_me -< - gAayCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -15 cڡ -VDa -* -_da -) { - -16  -AayCڡRef -( -vAsAay -( -_da -)); - -19 - gme - < -tyme - - gT -> - -20 -le - -tyme - - gab_if -< - gis_me -< - gObjeCڡRef -, - gT ->:: -vue -, T>:: -ty - -vAs -( - -21 cڡ -VDa -* -_da -) { - -22  -ObjeCڡRef -( -vAsObje -( -_da -)); - -25 - gme - < -tyme - - gT -> - -26 -le - -tyme - - gab_if -< - gis_me -< - gVCڡRef -, - gT ->:: -vue -, T>:: -ty - - -27 -vAs -(cڡ -VDa -* -_da -) { - -28  -VCڡRef -( -_da -); - -31 - gme - < -tyme - - gT -> - -32 -le - -tyme - - gab_if -< - gIsWrbSg -< - gT ->:: -vue -, T>:: -ty - -vAs -( - -33 cڡ -VDa -* -_da -) { - -34 cڡ * -cr - = -_da - !0 ? _da-> -asSg -() : 0; - -35 i( - gcr -) - -36  -T -( -cr -); - -37 -T - - gs -; - -38 -rlizeJs -( -VCڡRef -( -_da -), -s -); - -39  - gs -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp - -5 #agm - - - -7  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gVALUE_MASK - = 0x7F, - -19 - gVALUE_IS_OWNED - = 0x01, - -20 - gVALUE_IS_NULL - = 0, - -21 - gVALUE_IS_LINKED_RAW - = 0x02, - -22 - gVALUE_IS_OWNED_RAW - = 0x03, - -23 - gVALUE_IS_LINKED_STRING - = 0x04, - -24 - gVALUE_IS_OWNED_STRING - = 0x05, - -27 - gVALUE_IS_BOOLEAN - = 0x06, - -28 - gVALUE_IS_POSITIVE_INTEGER - = 0x08, - -29 - gVALUE_IS_NEGATIVE_INTEGER - = 0x0A, - -30 - gVALUE_IS_FLOAT - = 0x0C, - -32 - gCOLLECTION_MASK - = 0x60, - -33 - gVALUE_IS_OBJECT - = 0x20, - -34 - gVALUE_IS_ARRAY - = 0x40, - -36 - gKEY_IS_OWNED - = 0x80 - -39  - sRawDa - { - -40 cڡ * - gda -; - -41 -size_t - - gsize -; - -44  - uVCڋ - { - -45 -Flt - - gasFlt -; - -46 -UI - - gasIeg -; - -47 -CiDa - - gasCi -; - -48 cڡ * - gasSg -; - -50 cڡ * - gda -; - -51 -size_t - - gsize -; - -52 } - gasRaw -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -15 #i -defed -( -__GNUC__ -) - -16 #i -__GNUC__ - >= 7 - -17 #agm -GCC - -dgnoic - -push - - -18 #agm -GCC - -dgnoic - -igned - "-Wmaybe-uninitialized" - -19 #agm -GCC - -dgnoic - -igned - "-Wuninitialized" - -23 -mea - - gARDUINOJSON_NAMESPACE - { - -25 as - cVDa - { - -26 -VCڋ - - g_cڋ -; - -27 -ut8_t - - g_ags -; - -29 - gpublic -: - -36 -me - < -tyme - -Vis -> - -37  -ac -( -Vis - & -vis -) const { - -38  -ty -()) { - -39  -VALUE_IS_FLOAT -: - -40  -vis -. -visFlt -( -_cڋ -. -asFlt -); - -42  - gVALUE_IS_ARRAY -: - -43  -vis -. -visAay -( -_cڋ -. -asCi -); - -45  - gVALUE_IS_OBJECT -: - -46  -vis -. -visObje -( -_cڋ -. -asCi -); - -48  - gVALUE_IS_LINKED_STRING -: - -49  -VALUE_IS_OWNED_STRING -: - -50  -vis -. -visSg -( -_cڋ -. -asSg -); - -52  - gVALUE_IS_OWNED_RAW -: - -53  -VALUE_IS_LINKED_RAW -: - -54  -vis -. -visRawJs -( -_cڋ -. -asRaw -. -da -, _cڋ.asRaw. -size -); - -56  - gVALUE_IS_NEGATIVE_INTEGER -: - -57  -vis -. -visNegiveIeg -( -_cڋ -. -asIeg -); - -59  - gVALUE_IS_POSITIVE_INTEGER -: - -60  -vis -. -visPosiveIeg -( -_cڋ -. -asIeg -); - -62  - gVALUE_IS_BOOLEAN -: - -63  -vis -. -visBoޗn -( -_cڋ -. -asIeg - != 0); - -66  -vis -. -visNu -(); - -70 - gme - < -tyme - - gT -> - -71 -T - -asIegl -() const; - -73 - gme - < -tyme - - gT -> - -74 -T - -asFlt -() const; - -76 cڡ * -asSg -() const; - -78 -bo - -asBoޗn -() const; - -80 -CiDa - * -asAay -() { - -81  -isAay -(? & - g_cڋ -. - gasCi - : 0; - -84 cڡ -CiDa - * -asAay -() const { - -85  - gcڡ_ -< - gVDa - *>( - gthis -)-> -asAay -(); - -88 -CiDa - * -asObje -() { - -89  -isObje -(? & - g_cڋ -. - gasCi - : 0; - -92 cڡ -CiDa - * -asObje -() const { - -93  - gcڡ_ -< - gVDa - *>( - gthis -)-> -asObje -(); - -96 -bo - -cyFrom -(cڡ -VDa - & -c -, -MemyPo - * -po -) { - -97  - gc -. -ty -()) { - -98  - gVALUE_IS_ARRAY -: - -99  -toAay -(). -cyFrom -( -c -. -_cڋ -. -asCi -, -po -); - -100  - gVALUE_IS_OBJECT -: - -101  -toObje -(). -cyFrom -( -c -. -_cڋ -. -asCi -, -po -); - -102  - gVALUE_IS_OWNED_STRING -: - -103  -tOwdSg -( -RamSgAdr -( -c -. -_cڋ -. -asSg -), -po -); - -104  - gVALUE_IS_OWNED_RAW -: - -105  -tOwdRaw -( - -106 -rlized -( -c -. -_cڋ -. -asRaw -. -da -, src._cڋ.asRaw. -size -), -po -); - -108 -tTy -( -c -. -ty -()); - -109 - g_cڋ - = -c -. -_cڋ -; - -110  - gue -; - -114 -bo - -equs -(cڡ -VDa - & -h -) const { - -116 i(( -ty -(| - gVALUE_IS_OWNED -!( -h -.ty(| -VALUE_IS_OWNED -)) - -117  -l -; - -119  -ty -()) { - -120  - gVALUE_IS_LINKED_STRING -: - -121  -VALUE_IS_OWNED_STRING -: - -122  ! -rcmp -( -_cڋ -. -asSg -, -h -._content.asString); - -124  - gVALUE_IS_LINKED_RAW -: - -125  -VALUE_IS_OWNED_RAW -: - -126  -_cڋ -. -asRaw -. -size - = -h -._content.asRaw.size && - -127 ! -memcmp -( -_cڋ -. -asRaw -. -da -, -h -._content.asRaw.data, - -128 -_cڋ -. -asRaw -. -size -); - -130  - gVALUE_IS_BOOLEAN -: - -131  -VALUE_IS_POSITIVE_INTEGER -: - -132  -VALUE_IS_NEGATIVE_INTEGER -: - -133  -_cڋ -. -asIeg - = -h -._content.asInteger; - -135  - gVALUE_IS_ARRAY -: - -136  -_cڋ -. -asCi -. -equsAay -( -h -._content.asCollection); - -138  - gVALUE_IS_OBJECT -: - -139  -_cڋ -. -asCi -. -equsObje -( -h -._content.asCollection); - -141  - gVALUE_IS_FLOAT -: - -142  -_cڋ -. -asFlt - = -h -._content.asFloat; - -144  - gVALUE_IS_NULL -: - -146  -ue -; - -150 -bo - -isAay -() const { - -151  ( - g_ags - & - gVALUE_IS_ARRAY -) != 0; - -154 -bo - -isBoޗn -() const { - -155  -ty -(= -VALUE_IS_BOOLEAN -; - -158 -bo - -isCi -() const { - -159  ( - g_ags - & - gCOLLECTION_MASK -) != 0; - -162 - gme - < -tyme - - gT -> - -163 -bo - -isIeg -() const { - -164  -ty -()) { - -165  - gVALUE_IS_POSITIVE_INTEGER -: - -166  -nStePosiveIeg -< -T ->( -_cڋ -. -asIeg -); - -168  - gVALUE_IS_NEGATIVE_INTEGER -: - -169  -nSteNegiveIeg -< -T ->( -_cڋ -. -asIeg -); - -172  -l -; - -176 -bo - -isFlt -() const { - -177  -ty -(= -VALUE_IS_FLOAT - ||y(= -VALUE_IS_POSITIVE_INTEGER - || - -178 -ty -(= -VALUE_IS_NEGATIVE_INTEGER -; - -181 -bo - -isSg -() const { - -182  -ty -(= -VALUE_IS_LINKED_STRING - ||y(= -VALUE_IS_OWNED_STRING -; - -185 -bo - -isObje -() const { - -186  ( - g_ags - & - gVALUE_IS_OBJECT -) != 0; - -189 -bo - -isNu -() const { - -190  -ty -(= -VALUE_IS_NULL -; - -193 -bo - -isEnod -() const { - -194  ! -isFlt -(); - -197  -move -( -size_t - -dex -) { - -198 i( -isAay -()) - -199 - g_cڋ -. - gasCi -. -moveEmt -( -dex -); - -202 - gme - < -tyme - - gTAddSg -> - -203  -move -( -TAddSg - -key -) { - -204 i( -isObje -()) - -205 - g_cڋ -. - gasCi -. -moveMemb -( -key -); - -208  -tBoޗn -( -bo - -vue -) { - -209 -tTy -( -VALUE_IS_BOOLEAN -); - -210 - g_cڋ -. - gasIeg - = -ic_ -< -UI ->( -vue -); - -213  -tFlt -( -Flt - -vue -) { - -214 -tTy -( -VALUE_IS_FLOAT -); - -215 - g_cڋ -. - gasFlt - = -vue -; - -218  -tLkedRaw -( -SlizedVue - -vue -) { - -219 i( - gvue -. -da -()) { - -220 -tTy -( -VALUE_IS_LINKED_RAW -); - -221 - g_cڋ -. - gasRaw -. - gda - = -vue -. -da -(); - -222 - g_cڋ -. - gasRaw -. - gsize - = -vue -. -size -(); - -224 -tTy -( -VALUE_IS_NULL -); - -228 - gme - < -tyme - - gT -> - -229 -bo - -tOwdRaw -( -SlizedVue -< -T -> -vue -, -MemyPo - * -po -) { - -230 * - gdup - = -adtSg -( -vue -. -da -(), vue. -size -()). -ve -( -po -); - -231 i( - gdup -) { - -232 -tTy -( -VALUE_IS_OWNED_RAW -); - -233 - g_cڋ -. - gasRaw -. - gda - = -dup -; - -234 - g_cڋ -. - gasRaw -. - gsize - = -vue -. -size -(); - -235  - gue -; - -237 -tTy -( -VALUE_IS_NULL -); - -238  - gl -; - -242 - gme - < -tyme - - gT -> - -243 -tyme - - gab_if -< - gis_unsigd -< - gT ->:: -vue ->:: -ty - -tIeg -( -T - value) { - -244 -tUnsigdIeg -( -vue -); - -247 - gme - < -tyme - - gT -> - -248 -tyme - - gab_if -< - gis_sigd -< - gT ->:: -vue ->:: -ty - -tIeg -( -T - value) { - -249 -tSigdIeg -( -vue -); - -252 - gme - < -tyme - - gT -> - -253  -tSigdIeg -( -T - -vue -) { - -254 i( - gvue - >= 0) { - -255 -tPosiveIeg -( -ic_ -< -UI ->( -vue -)); - -257 -tNegiveIeg -(~ -ic_ -< -UI ->( -vue -) + 1); - -261  -tPosiveIeg -( -UI - -vue -) { - -262 -tTy -( -VALUE_IS_POSITIVE_INTEGER -); - -263 - g_cڋ -. - gasIeg - = -vue -; - -266  -tNegiveIeg -( -UI - -vue -) { - -267 -tTy -( -VALUE_IS_NEGATIVE_INTEGER -); - -268 - g_cڋ -. - gasIeg - = -vue -; - -271  -tLkedSg -(cڡ * -vue -) { - -272 i( - gvue -) { - -273 -tTy -( -VALUE_IS_LINKED_STRING -); - -274 - g_cڋ -. - gasSg - = -vue -; - -276 -tTy -( -VALUE_IS_NULL -); - -280  -tNu -() { - -281 -tTy -( -VALUE_IS_NULL -); - -284  -tOwdSg -( -n_nu - -s -) { - -285 -tTy -( -VALUE_IS_OWNED_STRING -); - -286 - g_cڋ -. - gasSg - = -s -. -g -(); - -289 -bo - -tOwdSg -(cڡ * -s -) { - -290 i( - gs -) { - -291 -tOwdSg -( -make_n_nu -( -s -)); - -292  - gue -; - -294 -tTy -( -VALUE_IS_NULL -); - -295  - gl -; - -299 - gme - < -tyme - - gT -> - -300 -bo - -tOwdSg -( -T - -vue -, -MemyPo - * -po -) { - -301  -tOwdSg -( -vue -. -ve -( -po -)); - -304  -tUnsigdIeg -( -UI - -vue -) { - -305 -tTy -( -VALUE_IS_POSITIVE_INTEGER -); - -306 - g_cڋ -. - gasIeg - = -ic_ -< -UI ->( -vue -); - -309 - gCiDa - & -toAay -() { - -310 -tTy -( -VALUE_IS_ARRAY -); - -311 - g_cڋ -. - gasCi -. -r -(); - -312  - g_cڋ -. - gasCi -; - -315 - gCiDa - & -toObje -() { - -316 -tTy -( -VALUE_IS_OBJECT -); - -317 - g_cڋ -. - gasCi -. -r -(); - -318  - g_cڋ -. - gasCi -; - -321 -size_t - -memyUge -() const { - -322  -ty -()) { - -323  - gVALUE_IS_OWNED_STRING -: - -324  - -( -_cڋ -. -asSg -) + 1; - -325  - gVALUE_IS_OWNED_RAW -: - -326  -_cڋ -. -asRaw -. -size -; - -327  - gVALUE_IS_OBJECT -: - -328  -VALUE_IS_ARRAY -: - -329  -_cڋ -. -asCi -. -memyUge -(); - -335 -size_t - -ág -() const { - -336  -isCi -(? - g_cڋ -. - gasCi -. -ág -() : 0; - -339 -size_t - -size -() const { - -340  -isCi -(? - g_cڋ -. - gasCi -. -size -() : 0; - -343 -VDa - * -addEmt -( -MemyPo - * -po -) { - -344 i( -isNu -()) - -345 -toAay -(); - -346 i(! -isAay -()) - -348  - g_cڋ -. - gasCi -. -addEmt -( -po -); - -351 -VDa - * -gEmt -( -size_t - -dex -) const { - -352  -isAay -(? - g_cڋ -. - gasCi -. -gEmt -( -dex -) : 0; - -355 -VDa - * -gOrAddEmt -( -size_t - -dex -, -MemyPo - * -po -) { - -356 i( -isNu -()) - -357 -toAay -(); - -358 i(! -isAay -()) - -360  - g_cڋ -. - gasCi -. -gOrAddEmt -( -dex -, -po -); - -363 - gme - < -tyme - - gTAddSg -> - -364 -VDa - * -gMemb -( -TAddSg - -key -) const { - -365  -isObje -(? - g_cڋ -. - gasCi -. -gMemb -( -key -) : 0; - -368 - gme - < -tyme - - gTAddSg -> - -369 -VDa - * -gOrAddMemb -( -TAddSg - -key -, -MemyPo - * -po -) { - -370 i( -isNu -()) - -371 -toObje -(); - -372 i(! -isObje -()) - -374  - g_cڋ -. - gasCi -. -gOrAddMemb -( -key -, -po -); - -377  -movePors -( -rdiff_t - -rgDi -,diff_ -vDi -) { - -378 i( - g_ags - & - gVALUE_IS_OWNED -) - -379 - g_cڋ -. - gasSg - + -rgDi -; - -380 i( - g_ags - & - gCOLLECTION_MASK -) - -381 - g_cڋ -. - gasCi -. -movePors -( -rgDi -, -vDi -); - -384 - give -: - -385 -ut8_t - -ty -() const { - -386  -_ags - & -VALUE_MASK -; - -389  -tTy -( -ut8_t - -t -) { - -390 - g_ags - & -KEY_IS_OWNED -; - -391 - g_ags - | -t -; - -397 #i -defed -( -__GNUC__ -) - -398 #i -__GNUC__ - >= 8 - -399 #agm -GCC - -dgnoic - -p - - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -11 - gme - < -tyme - - gVis -> - -12 -le -  -vAc -(cڡ -VDa - * -v -, -Vis - & -vis -) { - -13 i( - gv - != 0) - -14 -v --> -ac -( -vis -); - -16 - gvis -. -visNu -(); - -19 -le - cڡ -CiDa - * -vAsAay -(cڡ -VDa - * -v -) { - -20  - gv - !0 ? -v --> -asAay -() : 0; - -23 -le - cڡ -CiDa - * -vAsObje -(cڡ -VDa - * -v -) { - -24  - gv - !0 ? -v --> -asObje -() : 0; - -27 -le - -CiDa - * -vAsObje -( -VDa - * -v -) { - -28  - gv - !0 ? -v --> -asObje -() : 0; - -31 -le - -bo - -vCyFrom -( -VDa - * -d -, cڡ VD* -c -, - -32 -MemyPo - * -po -) { - -33 i(! - gd -) - -34  - gl -; - -35 i(! - gc -) { - -36 - gd --> -tNu -(); - -37  - gue -; - -39  - gd --> -cyFrom -(* -c -, -po -); - -42 -le - -bo - -vEqus -(cڡ -VDa - * -a -, cڡ VD* -b -) { - -43 i( - ga - = -b -) - -44  -ue -; - -45 i(! - ga - || ! - gb -) - -46  - gl -; - -47  - ga --> -equs -(* -b -); - -50 -le - -bo - -vIsAay -(cڡ -VDa - * -v -) { - -51  - gv - && v-> -isAay -(); - -54 -le - -bo - -vIsBoޗn -(cڡ -VDa - * -v -) { - -55  - gv - && v-> -isBoޗn -(); - -58 - gme - < -tyme - - gT -> - -59 -le - -bo - -vIsIeg -(cڡ -VDa - * -v -) { - -60  - gv - && v-> - gisIeg -< - gT ->(); - -63 -le - -bo - -vIsFlt -(cڡ -VDa - * -v -) { - -64  - gv - && v-> -isFlt -(); - -67 -le - -bo - -vIsSg -(cڡ -VDa - * -v -) { - -68  - gv - && v-> -isSg -(); - -71 -le - -bo - -vIsObje -(cڡ -VDa - * -v -) { - -72  - gv - && v-> -isObje -(); - -75 -le - -bo - -vIsNu -(cڡ -VDa - * -v -) { - -76  - gv - =0 || -v --> -isNu -(); - -79 -le - -bo - -vSBoޗn -( -VDa - * -v -, bo -vue -) { - -80 i(! - gv -) - -81  - gl -; - -82 - gv --> -tBoޗn -( -vue -); - -83  - gue -; - -86 -le - -bo - -vSFlt -( -VDa - * -v -, -Flt - -vue -) { - -87 i(! - gv -) - -88  - gl -; - -89 - gv --> -tFlt -( -vue -); - -90  - gue -; - -93 -le - -bo - -vSLkedRaw -( -VDa - * -v -, - -94 -SlizedVue - -vue -) { - -95 i(! - gv -) - -96  - gl -; - -97 - gv --> -tLkedRaw -( -vue -); - -98  - gue -; - -101 - gme - < -tyme - - gT -> - -102 -le - -bo - -vSOwdRaw -( -VDa - * -v -, -SlizedVue -< -T -> -vue -, - -103 -MemyPo - * -po -) { - -104  - gv - !0 && -v --> -tOwdRaw -( -vue -, -po -); - -107 - gme - < -tyme - - gT -> - -108 -le - -bo - -vSSigdIeg -( -VDa - * -v -, -T - -vue -) { - -109 i(! - gv -) - -110  - gl -; - -111 - gv --> -tSigdIeg -( -vue -); - -112  - gue -; - -115 -le - -bo - -vSLkedSg -( -VDa - * -v -, cڡ * -vue -) { - -116 i(! - gv -) - -117  - gl -; - -118 - gv --> -tLkedSg -( -vue -); - -119  - gue -; - -122 -le -  -vSNu -( -VDa - * -v -) { - -123 i(! - gv -) - -125 - gv --> -tNu -(); - -128 -le - -bo - -vSOwdSg -( -VDa - * -v -, * -vue -) { - -129 i(! - gv -) - -130  - gl -; - -131 - gv --> -tOwdSg -( -vue -); - -132  - gue -; - -135 - gme - < -tyme - - gT -> - -136 -le - -bo - -vSOwdSg -( -VDa - * -v -, -T - -vue -, -MemyPo - * -po -) { - -137  - gv - !0 && -v --> -tOwdSg -( -vue -, -po -); - -140 -le - -bo - -vSUnsigdIeg -( -VDa - * -v -, -UI - -vue -) { - -141 i(! - gv -) - -142  - gl -; - -143 - gv --> -tUnsigdIeg -( -vue -); - -144  - gue -; - -147 -le - -size_t - -vSize -(cڡ -VDa - * -v -) { - -148  - gv - !0 ? -v --> -size -() : 0; - -151 -le - -CiDa - * -vToAay -( -VDa - * -v -) { - -152 i(! - gv -) - -154  & - gv --> -toAay -(); - -157 -le - -CiDa - * -vToObje -( -VDa - * -v -) { - -158 i(! - gv -) - -160  & - gv --> -toObje -(); - -163 -le - -NO_INLINE - -VDa - * -vAddEmt -(VD* -v -, - -164 -MemyPo - * -po -) { - -165  - gv - !0 ? -v --> -addEmt -( -po -) : 0; - -168 -le - -NO_INLINE - -VDa - * -vGOrAddEmt -(VD* -v -, - -169 -size_t - -dex -, - -170 -MemyPo - * -po -) { - -171  - gv - !0 ? -v --> -gOrAddEmt -( -dex -, -po -) : 0; - -174 - gme - < -tyme - - gTCh -> - -175 -NO_INLINE - -VDa - * -vGOrAddMemb -(VD* -v -, -TCh - * -key -, - -176 -MemyPo - * -po -) { - -177  - gv - !0 ? -v --> -gOrAddMemb -( -adtSg -( -key -), -po -) : 0; - -180 - gme - < -tyme - - gTSg -> - -181 -NO_INLINE - -VDa - * -vGOrAddMemb -(VD* -v -, - -182 cڡ -TSg - & -key -, - -183 -MemyPo - * -po -) { - -184  - gv - !0 ? -v --> -gOrAddMemb -( -adtSg -( -key -), -po -) : 0; - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -13  - ~ - -15 -mea - - gARDUINOJSON_NAMESPACE - { - -17 - gme - < -tyme - - gT -> - -18 -le - -T - - gVDa -:: -asIegl -() const { - -19  -ty -()) { - -20  -VALUE_IS_POSITIVE_INTEGER -: - -21  -VALUE_IS_BOOLEAN -: - -22  -cvtPosiveIeg -< -T ->( -_cڋ -. -asIeg -); - -23  - gVALUE_IS_NEGATIVE_INTEGER -: - -24  -cvtNegiveIeg -< -T ->( -_cڋ -. -asIeg -); - -25  - gVALUE_IS_LINKED_STRING -: - -26  -VALUE_IS_OWNED_STRING -: - -27  -rIeg -< -T ->( -_cڋ -. -asSg -); - -28  - gVALUE_IS_FLOAT -: - -29  -cvtFlt -< -T ->( -_cڋ -. -asFlt -); - -35 -le - -bo - - gVDa -:: -asBoޗn -() const { - -36  -ty -()) { - -37  -VALUE_IS_POSITIVE_INTEGER -: - -38  -VALUE_IS_BOOLEAN -: - -39  -VALUE_IS_NEGATIVE_INTEGER -: - -40  -_cڋ -. -asIeg - != 0; - -41  - gVALUE_IS_FLOAT -: - -42  -_cڋ -. -asFlt - != 0; - -43  - gVALUE_IS_NULL -: - -44  -l -; - -46  -ue -; - -51 - gme - < -tyme - - gT -> - -52 -le - -T - - gVDa -:: -asFlt -() const { - -53  -ty -()) { - -54  -VALUE_IS_POSITIVE_INTEGER -: - -55  -VALUE_IS_BOOLEAN -: - -56  -ic_ -< -T ->( -_cڋ -. -asIeg -); - -57  - gVALUE_IS_NEGATIVE_INTEGER -: - -58  - -ic_ -< -T ->( -_cڋ -. -asIeg -); - -59  - gVALUE_IS_LINKED_STRING -: - -60  -VALUE_IS_OWNED_STRING -: - -61  -rFlt -< -T ->( -_cڋ -. -asSg -); - -62  - gVALUE_IS_FLOAT -: - -63  -ic_ -< -T ->( -_cڋ -. -asFlt -); - -69 -le - cڡ * - gVDa -:: -asSg -() const { - -70  -ty -()) { - -71  -VALUE_IS_LINKED_STRING -: - -72  -VALUE_IS_OWNED_STRING -: - -73  -_cڋ -. -asSg -; - -79 - gme - < -tyme - - gTV -> - -80 -tyme - - gab_if -< - gIsVisab -< - gTV ->:: -vue -, - gbo ->:: -ty - -VRef -:: -t -( - -81 cڡ -TV - & -vue -) const { - -82 -VCڡRef - -v - = -vue -; - -83  -vCyFrom -( -_da -, -v -._da, -_po -); - -86 - gme - < -tyme - - gT -> - -87 -le - -tyme - - gab_if -< - gis_me -< - gT -, - gAayRef ->:: -vue -, T>:: -ty - -VRef -:: -as -() - -89  -AayRef -( -_po -, -_da - !0 ? _da-> -asAay -() : 0); - -92 - gme - < -tyme - - gT -> - -93 -le - -tyme - - gab_if -< - gis_me -< - gT -, - gObjeRef ->:: -vue -, T>:: -ty - - -94 -VRef -:: -as -() const { - -95  -ObjeRef -( -_po -, -vAsObje -( -_da -)); - -98 - gme - < -tyme - - gT -> - -99 -le - -tyme - - gab_if -< - gis_me -< - gT -, - gAayRef ->:: -vue -, AayRef>:: -ty - - -100 -VRef -:: -to -() const { - -101  -AayRef -( -_po -, -vToAay -( -_da -)); - -104 - gme - < -tyme - - gT -> - -105 -tyme - - gab_if -< - gis_me -< - gT -, - gObjeRef ->:: -vue -, ObjeRef>:: -ty - - -106 -VRef -:: -to -() const { - -107  -ObjeRef -( -_po -, -vToObje -( -_da -)); - -110 - gme - < -tyme - - gT -> - -111 -tyme - - gab_if -< - gis_me -< - gT -, - gVRef ->:: -vue -, VRef>:: -ty - - -112 -VRef -:: -to -() const { - -113 -vSNu -( -_da -); - -114  * - gthis -; - -117 -le - -VCڡRef - - gVCڡRef -:: -gEmt -( -size_t - -dex -) const { - -118  -AayCڡRef -( -_da - !0 ? _da-> -asAay -(: 0)[ -dex -]; - -121 -le - -VRef - - gVRef -:: -addEmt -() const { - -122  -VRef -( -_po -, -vAddEmt -( -_da -, _pool)); - -125 -le - -VRef - - gVRef -:: -gEmt -( -size_t - -dex -) const { - -126  -VRef -( -_po -, -_da - !0 ? _da-> -gEmt -( -dex -) : 0); - -129 -le - -VRef - - gVRef -:: -gOrAddEmt -( -size_t - -dex -) const { - -130  -VRef -( -_po -, -vGOrAddEmt -( -_da -, -dex -, _pool)); - -133 - gme - < -tyme - - gTCh -> - -134 -le - -VRef - - gVRef -:: -gMemb -( -TCh - * -key -) const { - -135  -VRef -( -_po -, -_da - !0 ? _da-> -gMemb -( -adtSg -( -key -)) : 0); - -138 - gme - < -tyme - - gTSg -> - -139 -le - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVRef ->:: -ty - - -140 -VRef -:: -gMemb -(cڡ -TSg - & -key -) const { - -141  -VRef -( -_po -, -_da - !0 ? _da-> -gMemb -( -adtSg -( -key -)) : 0); - -144 - gme - < -tyme - - gTCh -> - -145 -le - -VRef - - gVRef -:: -gOrAddMemb -( -TCh - * -key -) const { - -146  -VRef -( -_po -, -vGOrAddMemb -( -_da -, -key -, _pool)); - -149 - gme - < -tyme - - gTSg -> - -150 -le - -VRef - - gVRef -:: -gOrAddMemb -(cڡ -TSg - & -key -) const { - -151  -VRef -( -_po -, -vGOrAddMemb -( -_da -, -key -, _pool)); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -13  - ~ - -14  - ~ - -15  - ~ - -16  - ~ - -18 -mea - - gARDUINOJSON_NAMESPACE - { - -21 -ass - - gAayRef -; - -22 -ass - - gObjeRef -; - -24 - gme - < - gtyme -,ypename> - -25 -ass - - gMembProxy -; - -28 - gme - < -tyme - - gTDa -> - -29 as - cVRefBa - { - -30 - gpublic -: - -43 -me - < -tyme - -T -> - -44 -FORCE_INLINE - -tyme - -ab_if -< -is_gl -< -T ->:: -vue -, - gbo ->:: -ty - -is -() - -46  -vIsIeg -< -T ->( -_da -); - -51 - gme - < -tyme - - gT -> - -52 -FORCE_INLINE - -tyme - - gab_if -< - gis_tg_pot -< - gT ->:: -vue -, - gbo ->:: -ty - -is -() - -54  -vIsFlt -( -_da -); - -58 - gme - < -tyme - - gT -> - -59 -FORCE_INLINE - -tyme - - gab_if -< - gis_me -< - gT -, - gbo ->:: -vue -, bo>:: -ty - -is -() - -61  -vIsBoޗn -( -_da -); - -68 - gme - < -tyme - - gT -> - -69 -FORCE_INLINE - -tyme - - gab_if -< - gis_me -< - gT -, cڡ *>:: -vue - || - -70 -is_me -< -T -, *>:: -vue - || - -71 -IsWrbSg -< -T ->:: -vue -, - -72 - gbo ->:: -ty - - -73 -is -() const { - -74  -vIsSg -( -_da -); - -79 - gme - < -tyme - - gT -> - -80 -FORCE_INLINE - -tyme - - gab_if -< - -81 - gis_me -< -tyme - - gmove_cڡ -< - gT ->:: -ty -, - gAayRef ->:: -vue -, - gbo ->::type - -82 -is -() const { - -83  -vIsAay -( -_da -); - -88 - gme - < -tyme - - gT -> - -89 -FORCE_INLINE - -tyme - - gab_if -< - -90 - gis_me -< -tyme - - gmove_cڡ -< - gT ->:: -ty -, - gObjeRef ->:: -vue -, - gbo ->::type - -91 -is -() const { - -92  -vIsObje -( -_da -); - -94 #i -ARDUINOJSON_HAS_NULLPTR - - -97 - gme - < -tyme - - gT -> - -98 -FORCE_INLINE - - -99 -tyme - - gab_if -< - gis_me -< - gT -, -dety -( -nuαr -)>:: -vue -, - gbo ->:: -ty - - -100 -is -() const { - -101  -vIsNu -( -_da -); - -105 -FORCE_INLINE - -bo - -isNu -() const { - -106  -vIsNu -( -_da -); - -109 -FORCE_INLINE - -bo - -isUndefed -() const { - -110  ! - g_da -; - -113 -FORCE_INLINE - -size_t - -memyUge -() const { - -114  - g_da - ? _da-> -memyUge -() : 0; - -117 -FORCE_INLINE - -size_t - -ág -() const { - -118  - g_da - ? _da-> -ág -() : 0; - -121 -size_t - -size -() const { - -122  -vSize -( -_da -); - -125 - geed -: - -126 -VRefBa -( -TDa - * -da -: -_da -(data) {} - -127 -TDa - * -_da -; - -137 -ass - - gVRef - : -public - -VRefBa -< -VDa ->, - -138 -public - - gVOts -< - gVRef ->, - -139 -public - - gVisab - { - -140  - gVRefBa -< - tVDa -> - tba_ty -; - -141 -nd - -ass - - gVCڡRef -; - -143 - gpublic -: - -145 -FORCE_INLINE - -VRef -( -MemyPo - * -po -, -VDa - * -da -) - -146 : -ba_ty -( -da -), -_po -( -po -) {} - -149 -FORCE_INLINE - -VRef -(: -ba_ty -(0), -_po -(0) {} - -151 -FORCE_INLINE -  -r -() const { - -152  -vSNu -( -_da -); - -156 - gme - < -tyme - - gT -> - -157 -FORCE_INLINE - -bo - -t -( - -158 -T - -vue -, -tyme - -ab_if -< -is_me -::vue>:: -ty - * = 0) const { - -159  -vSBoޗn -( -_da -, -vue -); - -164 - gme - < -tyme - - gT -> - -165 -FORCE_INLINE - -bo - -t -( - -166 -T - -vue -, - -167 -tyme - -ab_if -< -is_tg_pot -< -T ->:: -vue ->:: -ty - * = 0) const { - -168  -vSFlt -( -_da -, -ic_ -< -Flt ->( -vue -)); - -176 - gme - < -tyme - - gT -> - -177 -FORCE_INLINE - -bo - -t -( - -178 -T - -vue -, - -179 -tyme - -ab_if -< -is_gl -< -T ->:: -vue - && -is_sigd -::vue>:: -ty - * = - -181  -vSSigdIeg -( -_da -, -vue -); - -187 - gme - < -tyme - - gT -> - -188 -FORCE_INLINE - -bo - -t -( - -189 -T - -vue -, -tyme - -ab_if -< -is_gl -::value && - -190 -is_unsigd -< -T ->:: -vue ->:: -ty - * = 0) const { - -191  -vSUnsigdIeg -( -_da -, -ic_ -< -UI ->( -vue -)); - -195 -FORCE_INLINE - -bo - -t -( -SlizedVue - -vue -) const { - -196  -vSLkedRaw -( -_da -, -vue -); - -202 - gme - < -tyme - - gT -> - -203 -FORCE_INLINE - -bo - -t -( - -204 -SlizedVue -< -T -> -vue -, - -205 -tyme - -ab_if -:: -vue ->:: -ty - * = 0) const { - -206  -vSOwdRaw -( -_da -, -vue -, -_po -); - -211 - gme - < -tyme - - gT -> - -212 -FORCE_INLINE - -bo - -t -( - -213 cڡ -T - & -vue -, - -214 -tyme - -ab_if -< -IsSg -< -T ->:: -vue ->:: -ty - * = 0) const { - -215  -vSOwdSg -( -_da -, -adtSg -( -vue -), -_po -); - -220 - gme - < -tyme - - gT -> - -221 -FORCE_INLINE - -bo - -t -( - -222 -T - * -vue -, -tyme - -ab_if -< -IsSg -::vue>:: -ty - * = 0) const { - -223  -vSOwdSg -( -_da -, -adtSg -( -vue -), -_po -); - -227 -FORCE_INLINE - -bo - -t -(cڡ * -vue -) const { - -228  -vSLkedSg -( -_da -, -vue -); - -238 - gme - < -tyme - - gTV -> - -239 -tyme - - gab_if -< - gIsVisab -< - gTV ->:: -vue -, - gbo ->:: -ty - -t -( - -240 cڡ -TV - & -vue -) const; - -243 - gme - < -tyme - - gT -> - -244 -FORCE_INLINE - -bo - -t -( - -245 -T - -vue -, -tyme - -ab_if -< -is_um -::vue>:: -ty - * = 0) const { - -246  -vSSigdIeg -( -_da -, -ic_ -< -Ieg ->( -vue -)); - -253 - gme - < -tyme - - gT -> - -254 -FORCE_INLINE - -tyme - - gab_if -:: -vue - && - -255 ! -is_me -< -T -, - gObjeRef ->:: -vue - && - -256 ! -is_me -< -T -, - gVRef ->:: -vue -, - -257 -tyme - - gVAs -< - gT ->:: -ty ->::type - -258 -as -() const { - -259  -vAs -< -T ->( -_da -); - -264 - gme - < -tyme - - gT -> - -265 -FORCE_INLINE - -tyme - - gab_if -< - gis_me -< - gT -, - gAayRef ->:: -vue -, T>:: -ty - -as -() - -270 - gme - < -tyme - - gT -> - -271 -FORCE_INLINE - -tyme - - gab_if -< - gis_me -< - gT -, - gObjeRef ->:: -vue -, T>:: -ty - -as -() - -275 - gme - < -tyme - - gT -> - -276 -FORCE_INLINE - -tyme - - gab_if -< - gis_me -< - gT -, - gVRef ->:: -vue -, T>:: -ty - -as -() - -278  * -this -; - -281 - gme - < -tyme - - gVis -> - -282  -ac -( -Vis - & -vis -) const { - -283 -vAc -( -_da -, -vis -); - -286 -FORCE_INLINE - -bo - - gݔ -==( -VRef - -lhs -) const { - -287  -vEqus -( -_da -, -lhs -._data); - -290 -FORCE_INLINE - -bo - - gݔ -!=( -VRef - -lhs -) const { - -291  ! -vEqus -( -_da -, -lhs -._data); - -297 - gme - < -tyme - - gT -> - -298 -tyme - - gab_if -< - gis_me -< - gT -, - gAayRef ->:: -vue -, AayRef>:: -ty - -to -() const; - -301 - gme - < -tyme - - gT -> - -302 -tyme - - gab_if -< - gis_me -< - gT -, - gObjeRef ->:: -vue -, ObjeRef>:: -ty - -to -() const; - -305 - gme - < -tyme - - gT -> - -306 -tyme - - gab_if -< - gis_me -< - gT -, - gVRef ->:: -vue -, VRef>:: -ty - -to -() - -309 -VRef - -addEmt -() const; - -311 -FORCE_INLINE - -VRef - -gEmt -( -size_t -) const; - -313 -FORCE_INLINE - -VRef - -gOrAddEmt -( -size_t -) const; - -317 - gme - < -tyme - - gTCh -> - -318 -FORCE_INLINE - -VRef - -gMemb -( -TCh - *) const; - -322 - gme - < -tyme - - gTSg -> - -323 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVRef ->:: -ty - - -324 -gMemb -(cڡ -TSg - &) const; - -329 - gme - < -tyme - - gTCh -> - -330 -FORCE_INLINE - -VRef - -gOrAddMemb -( -TCh - *) const; - -334 - gme - < -tyme - - gTSg -> - -335 -FORCE_INLINE - -VRef - -gOrAddMemb -(cڡ -TSg - &) const; - -337 -FORCE_INLINE -  -move -( -size_t - -dex -) const { - -338 i( - g_da -) - -339 - g_da --> -move -( -dex -); - -344 - gme - < -tyme - - gTCh -> - -345 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue ->:: -ty - -move -( - -346 -TCh - * -key -) const { - -347 i( -_da -) - -348 -_da --> -move -( -adtSg -( -key -)); - -352 - gme - < -tyme - - gTSg -> - -353 -FORCE_INLINE - -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue ->:: -ty - -move -( - -354 cڡ -TSg - & -key -) const { - -355 i( -_da -) - -356 -_da --> -move -( -adtSg -( -key -)); - -359 - give -: - -360 -MemyPo - * -_po -; - -363 -ass - - gVCڡRef - : -public - -VRefBa -, - -364 -public - - gVOts -< - gVCڡRef ->, - -365 -public - - gVisab - { - -366  - gVRefBa - - tba_ty -; - -367 -nd - -ass - - gVRef -; - -369 - gpublic -: - -370 -VCڡRef -(: -ba_ty -(0) {} - -371 -VCڡRef -(cڡ -VDa - * -da -: -ba_ty -(data) {} - -372 -VCڡRef -( -VRef - -v -: -ba_ty -(v. -_da -) {} - -374 -me - < -tyme - -Vis -> - -375  -ac -( -Vis - & -vis -) const { - -376 -vAc -( -_da -, -vis -); - -381 - gme - < -tyme - - gT -> - -382 -FORCE_INLINE - -tyme - - gVCڡAs -< - gT ->:: -ty - -as -() const { - -383  -vAs -< -tyme - -VCڡAs -< -T ->:: -ty ->( -_da -); - -386 -FORCE_INLINE - -VCڡRef - -gEmt -( -size_t -) const; - -388 -FORCE_INLINE - -VCڡRef - - gݔ -[]( -size_t - - gdex -) const { - -389  -gEmt -( -dex -); - -394 - gme - < -tyme - - gTSg -> - -395 -FORCE_INLINE - -VCڡRef - -gMemb -(cڡ -TSg - & -key -) const { - -396  -VCڡRef -( - -397 -objeGMemb -( -vAsObje -( -_da -), -adtSg -( -key -))); - -403 - gme - < -tyme - - gTCh -> - -404 -FORCE_INLINE - -VCڡRef - -gMemb -( -TCh - * -key -) const { - -405 cڡ -CiDa - * - gobj - = -vAsObje -( -_da -); - -406  -VCڡRef -( -obj - ? obj-> -gMemb -( -adtSg -( -key -)) : 0); - -411 - gme - < -tyme - - gTSg -> - -412 -FORCE_INLINE - - -413 -tyme - - gab_if -< - gIsSg -< - gTSg ->:: -vue -, - gVCڡRef ->:: -ty - - -414 -ݔ -[](cڡ -TSg - & -key -) const { - -415  -gMemb -( -key -); - -421 - gme - < -tyme - - gTCh -> - -422 -FORCE_INLINE - - -423 -tyme - - gab_if -< - gIsSg -< - gTCh - *>:: -vue -, - gVCڡRef ->:: -ty - - -424 -ݔ -[]( -TCh - * -key -) const { - -425  -gMemb -( -key -); - -428 -FORCE_INLINE - -bo - - gݔ -==( -VCڡRef - -lhs -) const { - -429  -vEqus -( -_da -, -lhs -._data); - -432 -FORCE_INLINE - -bo - - gݔ -!=( -VCڡRef - -lhs -) const { - -433  ! -vEqus -( -_da -, -lhs -._data); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp - -5 #agm - - - -7  - ~ - -8  - ~ - -9  - ~ - -11  - ~ - -13 -mea - - gARDUINOJSON_NAMESPACE - { - -15  - gcdiڮ -<(*<2, - tt8_t -, - tt16_t ->:: - tty - - tVSlDiff -; - -17 as - cVSl - { - -21 -VCڋ - - g_cڋ -; - -22 -ut8_t - - g_ags -; - -23 -VSlDiff - - g_xt -; - -24 cڡ * - g_key -; - -26 - gpublic -: - -33 -VDa -* -da -() { - -34  -t_ -< -VDa -*>(& -_cڋ -); - -37 cڡ -VDa -* -da -() const { - -38  - gt_ -(& - g_cڋ -); - -41 -VSl -* -xt -() { - -42  - g_xt - ? - gthis - + _next : 0; - -45 cڡ -VSl -* -xt -() const { - -46  - gcڡ_ -< - gVSl -*>( - gthis -)-> -xt -(); - -49 -VSl -* -xt -( -size_t - -di -) { - -50 -VSl -* - g - = -this -; - -51  - gdi ---) { - -52 i(! - g --> - g_xt -) - -54 - g - + - --> -_xt -; - -56  - g -; - -59 cڡ -VSl -* -xt -( -size_t - -di -) const { - -60  - gcڡ_ -< - gVSl -*>( - gthis -)-> -xt -( -di -); - -63  -tNext -( -VSl -* - -) { - -64 - g_xt - = -VSlDiff -( - - ? sl - -this - : 0); - -67  -tNextNNu -( -VSl -* - -) { - -68 -ARDUINOJSON_ASSERT -( - - != 0); - -69 - g_xt - = -VSlDiff -( - - - -this -); - -72  -tOwdKey -( -n_nu - -k -) { - -73 - g_ags - | -KEY_IS_OWNED -; - -74 - g_key - = -k -. -g -(); - -77  -tLkedKey -( -n_nu - -k -) { - -78 - g_ags - & -VALUE_MASK -; - -79 - g_key - = -k -. -g -(); - -82 cڡ * -key -() const { - -83  - g_key -; - -86 -bo - -ownsKey -() const { - -87  ( - g_ags - & - gKEY_IS_OWNED -) != 0; - -90  -r -() { - -91 - g_xt - = 0; - -92 - g_ags - = 0; - -93 - g_key - = 0; - -96  -movePors -( -rdiff_t - -rgDi -,diff_ -vDi -) { - -97 i( - g_ags - & - gKEY_IS_OWNED -) - -98 - g_key - + -rgDi -; - -99 i( - g_ags - & - gVALUE_IS_OWNED -) - -100 - g_cڋ -. - gasSg - + -rgDi -; - -101 i( - g_ags - & - gCOLLECTION_MASK -) - -102 - g_cڋ -. - gasCi -. -movePors -( -rgDi -, -vDi -); - - @lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp - -5 #agm - - - -7  - ~ - -9 -mea - - gARDUINOJSON_NAMESPACE - { - -10 -ass - - gAayRef -; - -11 -ass - - gObjeRef -; - -12 -ass - - gVRef -; - -16 - gme - < -tyme - - gT -> - -17  - sVTo - {}; - -19 - gme - <> - -20  - gVTo -< - gAayRef -> { - -21  -AayRef - - tty -; - -23 - gme - <> - -24  - gVTo -< - gObjeRef -> { - -25  -ObjeRef - - tty -; - -27 - gme - <> - -28  - gVTo -< - gVRef -> { - -29  -VRef - - tty -; - - @lib_standalone/ArduinoJson/src/ArduinoJson/compatibility.hpp - -7 #ifde -__GNUC__ - - -9  - #ARDUINOJSON_PRAGMA -( -x - - `_Pgma -(#x) - - ) - -11  - #ARDUINOJSON_COMPILE_ERROR -( -msg - - `ARDUINOJSON_PRAGMA -( -GCC - -r - msg) - - ) - -13  - #ARDUINOJSON_STRINGIFY -( -S -#S - - ) - -15  - #ARDUINOJSON_DEPRECATION_ERROR -( -X -, -Y -) \ - -16 - `ARDUINOJSON_COMPILE_ERROR -( - `ARDUINOJSON_STRINGIFY -( -X - -is - -a - -Y - -om - -ArduoJs - 5. -Pa - -e - -duojs -. -g -/ -upgde - -to - -ˬn - -how -upgd -your - -ogm -ArduoJs -vsi - 6)) - - ) - -18  - #SticJsBufr - - `ARDUINOJSON_DEPRECATION_ERROR -( -SticJsBufr -, -ass -) - - ) - -19  - #DymicJsBufr - - `ARDUINOJSON_DEPRECATION_ERROR -( -DymicJsBufr -, -ass -) - - ) - -20  - #JsBufr - - `ARDUINOJSON_DEPRECATION_ERROR -( -JsBufr -, -ass -) - - ) - -21  - #RawJs - - `ARDUINOJSON_DEPRECATION_ERROR -( -RawJs -, -funi -) - - ) - - @lib_standalone/ArduinoJson/src/ArduinoJson/version.hpp - -5 #agm - - - -7  - #ARDUINOJSON_VERSION - "6.15.0" - - ) - -8  - #ARDUINOJSON_VERSION_MAJOR - 6 - - ) - -9  - #ARDUINOJSON_VERSION_MINOR - 15 - - ) - -10  - #ARDUINOJSON_VERSION_REVISION - 0 - - ) - - @lib_standalone/AsyncJson.h - -2 #ide -ASYNC_JSON_H_ - - -3  - #ASYNC_JSON_H_ - - - ) - -4  - ~ - -5  - ~ - -7  - #DYNAMIC_JSON_DOCUMENT_SIZE - 1024 - - ) - -9 -cڡex - cڡ * - gJSON_MIMETYPE - = "application/json"; - -11 as - cChunkPrt - : -public - -Prt - { - -12 -ive -: - -13 -ut8_t - * -_dei -; - -14 -size_t - - m_to_sk -; - -15 -size_t - - m_to_wre -; - -16 -size_t - - m_pos -; - -18 - mpublic -: - -19 - $ChunkPrt -( -ut8_t - * -dei -, -size_t - -om -, size_ -n -) - -20 : - `_dei -( -dei -) - -21 , - `_to_sk -( -om -) - -22 , - `_to_wre -( -n -) - -23 , -_pos -{0} { - -24 - } -} - -25 - gvtu - ~ - $ChunkPrt -() { - -26 - } -} - -27 -size_t - - $wre -( -ut8_t - -c -) { - -28 i( -_to_sk - > 0) { - -29 -_to_sk ---; - -31 } i( -_to_wre - > 0) { - -32 -_to_wre ---; - -33 -_dei -[ -_pos -++] = -c -; - -37 - } -} - -38 -size_t - - $wre -(cڡ -ut8_t - * -bufr -, -size_t - -size -) { - -39  -this --> -Prt -:: - `wre -( -bufr -, -size -); - -40 - } -} - -43 as - cAsyncJsReڣ - { - -44 - meed -: - -45 -DymicJsDocumt - -_jsBufr -; - -47 -JsV - - m_ro -; - -48 -bo - - m_isVid -; - -50 - mpublic -: - -51 - $AsyncJsReڣ -( -bo - -isAay - = -l -, -size_t - -maxJsBufrSize - = -DYNAMIC_JSON_DOCUMENT_SIZE -) - -52 : - `_jsBufr -( -maxJsBufrSize -) - -53 , -_isVid -{ -l -} { - -54 i( -isAay -) - -55 -_ro - = -_jsBufr -. - `NeedAay -(); - -57 -_ro - = -_jsBufr -. - `NeedObje -(); - -58 - } -} - -59 ~ - $AsyncJsReڣ -() { - -60 - } -} - -61 - gJsV - & - $gRo -() { - -62  -_ro -; - -63 - } -} - -64 -bo - - $_sourVid -() const { - -65  -_isVid -; - -66 - } -} - -67 -size_t - - $tLgth -() { - -69 - } -} - -71 -size_t - - $gSize -() { - -72  -_jsBufr -. - `size -(); - -73 - } -} - -75 -size_t - - $_flBufr -( -ut8_t - * -da -, -size_t - -n -) { - -76  -n -; - -77 - } -} - -80  - gd -:: - tfuni -<( - tAsyncWebSvReque - * - tque -, - tJsV - & - tjs -)> - tArJsRequeHdrFuni -; - -82 as - cAsyncClbackJsWebHdr - : -public - -AsyncWebHdr - { - -83 -ive -: - -84 -eed -: - -85 cڡ -Sg - -_uri -; - -86 -WebRequeMhodCompose - - m_mhod -; - -87 -ArJsRequeHdrFuni - - m_Reque -; - -88 -size_t - - m_cڋLgth -; - -89 -size_t - - m_maxCڋLgth -; - -91 - mpublic -: - -92 - $AsyncClbackJsWebHdr -(cڡ -Sg - & -uri -, -ArJsRequeHdrFuni - -Reque -, -size_t - -maxJsBufrSize - = -DYNAMIC_JSON_DOCUMENT_SIZE -) - -93 : - `_uri -( -uri -) - -94 , - `_mhod -( -HTTP_POST - | -HTTP_PUT - | -HTTP_PATCH -) - -95 , - `_Reque -( -Reque -) - -96 , - $_maxCڋLgth -(16384) { - -99  - $tMhod -( -WebRequeMhodCompose - -mhod -) { - -100 -_mhod - = -mhod -; - -101 - } -} - -102  - $tMaxCڋLgth -( -maxCڋLgth -) { - -103 -_maxCڋLgth - = -maxCڋLgth -; - -104 - } -} - -105  - $Reque -( -ArJsRequeHdrFuni - - -) { - -106 -_Reque - = - -; - -107 - } -} - -109 -vtu - -bo - - $nHd -( -AsyncWebSvReque - * -que - -ovride - -f - { - -110 i(! -_Reque -) - -111  -l -; - -113 i(!( -_mhod - & -que --> - `mhod -())) - -114  -l -; - -116 -que --> - `addIegHd -("ANY"); - -117  -ue -; - -118 - } -} - -120 -vtu -  - $hdReque -( -AsyncWebSvReque - * -que - -ovride - -f - { - -121 i( -_Reque -) { - -122 i( -que --> -_mpObje - ! -NULL -) { - -123 -DymicJsDocumt - - `jsBufr -(1024); - -124 -DerliziE - -r - = - `derlizeJs -( -jsBufr -, ( -ut8_t - *)( -que --> -_mpObje -)); - -125 i(! -r -) { - -126 -JsV - -js - = -jsBufr -. -as -(); - -128 - `_Reque -( -que -, -js -); - -132 -que --> - `nd -( -_cڋLgth - > -_maxCڋLgth - ? 413 : 400); - -134 -que --> - `nd -(500); - -136 - } -} - -137 -vtu -  - $hdUd -( -AsyncWebSvReque - * -que -, cڡ -Sg - & -fame -, -size_t - -dex -, -ut8_t - * -da -, size_ -n -, -bo - -f - -ovride - final { - -138 - } -} - -139 -vtu -  - $hdBody -( -AsyncWebSvReque - * -que -, -ut8_t - * -da -, -size_t - -n -, size_ -dex -, size_ -tٮ - -ovride - -f - { - -140 i( -_Reque -) { - -141 -_cڋLgth - = -tٮ -; - -142 i( -tٮ - > 0 && -que --> -_mpObje - = -NULL - &&ٮ < -_maxCڋLgth -) { - -143 -que --> -_mpObje - = - `mloc -( -tٮ -); - -145 i( -que --> -_mpObje - ! -NULL -) { - -146 - `memy -(( -ut8_t - *)( -que --> -_mpObje -+ -dex -, -da -, -n -); - -149 - } -} - -150 -vtu - -bo - - $isRequeHdrTrivl -( -ovride - -f - { - -151  -_Reque - ? -l - : -ue -; - -152 - } -} - - @lib_standalone/AsyncMqttClient.h - -1 #ide -ASYNCMQTTCLIENT_H_ - - -2  - #ASYNCMQTTCLIENT_H_ - - - ) - -4  - ~"Arduo.h -" - -5  - ~ - -7 as - cAsyncMqClDiscRs - : -t8_t - { - -8 -TCP_DISCONNECTED - = 0, - -10 - mMQTT_UNACCEPTABLE_PROTOCOL_VERSION - = 1, - -11 - mMQTT_IDENTIFIER_REJECTED - = 2, - -12 - mMQTT_SERVER_UNAVAILABLE - = 3, - -13 - mMQTT_MALFORMED_CREDENTIALS - = 4, - -14 - mMQTT_NOT_AUTHORIZED - = 5, - -16 - mESP8266_NOT_ENOUGH_SPACE - = 6, - -18 - mTLS_BAD_FINGERPRINT - = 7 - -21  - sAsyncMqClMesgePrݔts - { - -22 -ut8_t - - mqos -; - -23 -bo - - mdup -; - -24 -bo - - m -; - -27 -mea - - gAsyncMqClIls - { - -29  - gd -:: - tfuni -<( - tbo - - tssiP -)> - tOnCUrClback -; - -30  - gd -:: - tfuni -<( - tAsyncMqClDiscRs - - tas -)> - tOnDiscUrClback -; - -31  - gd -:: - tfuni -<( - tut16_t - - tckId -, - tut8_t - - tqos -)> - tOnSubsibeUrClback -; - -32  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnUnsubsibeUrClback -; - -33  - gd -:: - tfuni -<(* - ttic -, * - tyld -, - tAsyncMqClMesgePrݔts - - tݔts -, - tsize_t - - tn -, size_ - tdex -, size_ - ttٮ -)> - tOnMesgeUrClback -; - -34  - gd -:: - tfuni -<( - tut16_t - - tckId -)> - tOnPublishUrClback -; - -37 as - cAsyncMqCl - { - -38 - mpublic -: - -39 -AsyncMqCl -(); - -40 ~ -AsyncMqCl -(); - -42 - mAsyncMqCl - & -tKpAlive -( -ut16_t - -kpAlive -); - -43 - mAsyncMqCl - & -tClId -(cڡ * -Id -); - -44 - mAsyncMqCl - & -tC˪Sessi -( -bo - -nSessi -); - -45 - mAsyncMqCl - & -tMaxTicLgth -( -ut16_t - -maxTicLgth -); - -46 - mAsyncMqCl - & -tCdtls -(cڡ * -uame -, cڡ * -sswd - = -nuαr -); - -47 - mAsyncMqCl - & - $tWl -(cڡ * -tic -, -ut8_t - -qos -, -bo - - -, cڡ * -yld - = -nuαr -, -size_t - -ngth - = 0) { - -48  * -this -; - -50 -AsyncMqCl - & - `tSv -( -IPAddss - - -, -ut16_t - -pt -); - -51 -AsyncMqCl - & - `tSv -(cڡ * -ho -, -ut16_t - -pt -); - -53 -AsyncMqCl - & - $C -( -AsyncMqClIls -:: -OnCUrClback - -back -) { - -54  * -this -; - -55 - } -} - -56 - gAsyncMqCl - & - $Disc -( -AsyncMqClIls -:: -OnDiscUrClback - -back -) { - -57  * -this -; - -58 - } -} - -59 - gAsyncMqCl - & - $Subsibe -( -AsyncMqClIls -:: -OnSubsibeUrClback - -back -) { - -60  * -this -; - -61 - } -} - -62 - gAsyncMqCl - & - $Unsubsibe -( -AsyncMqClIls -:: -OnUnsubsibeUrClback - -back -) { - -63  * -this -; - -64 - } -} - -65 - gAsyncMqCl - & - $Mesge -( -AsyncMqClIls -:: -OnMesgeUrClback - -back -) { - -66  * -this -; - -67 - } -} - -68 - gAsyncMqCl - & - $Publish -( -AsyncMqClIls -:: -OnPublishUrClback - -back -) { - -69  * -this -; - -70 - } -} - -72 -bo - - $ced -() const { - -73  -l -; - -74 - } -} - -75  - $c -() { - -76 - } -} - -77  - $disc -( -bo - -f - = -l -) { - -78 - } -} - -79 -ut16_t - - $subsibe -(cڡ * -tic -, -ut8_t - -qos -) { - -81 - } -} - -82 -ut16_t - - $unsubsibe -(cڡ * -tic -) { - -84 - } -} - -85 -ut16_t - - $publish -(cڡ * -tic -, -ut8_t - -qos -, -bo - - -, cڡ * -yld - = -nuαr -, -size_t - -ngth - = 0, bo -dup - = -l -, -ut16_t - -mesge_id - = 0) { - -87 - } -} - -89 cڡ * - $gClId -() { - -91 - } -} - -93 - give -: - -94 -bo - -_ced -; - -95 -bo - - g_cPackNEnoughS -; - -96 -bo - - g_discOnPl -; - -97 -bo - - g_sBadFgt -; - -98 -ut32_t - - g_ϡClAivy -; - -99 -ut32_t - - g_ϡSvAivy -; - -100 -ut32_t - - g_ϡPgRequeTime -; - -101  - g_gedClId -[18 + 1]; - -102 -IPAddss - - g_ -; - -103 cڡ * - g_ho -; - -104 -bo - - g_uIp -; - -105 -ut16_t - - g_pt -; - -106 -ut16_t - - g_kpAlive -; - -107 -bo - - g_nSessi -; - -108 cڡ * - g_Id -; - -109 cڡ * - g_uame -; - -110 cڡ * - g_sswd -; - -111 cڡ * - g_wlTic -; - -112 cڡ * - g_wlPayld -; - -113 -ut16_t - - g_wlPayldLgth -; - -114 -ut8_t - - g_wlQos -; - -115 -bo - - g_wlRa -; - - @lib_standalone/AsyncTCP.h - -1 #ide -ASYNCTCP_H_ - - -2  - #ASYNCTCP_H_ - - - ) - -4  - ~"Arduo.h -" - -5  - ~ - -7 -ass - - gAsyncCl -; - -9  - gt_pcb -; - -10  - g_addr -; - -12 as - cAsyncCl - { - -13 - mpublic -: - -14 -AsyncCl -( -t_pcb - * -pcb - = 0); - -15 ~ -AsyncCl -(); - -18 as - cAsyncSv - { - -19 - mpublic -: - -20 - $AsyncSv -( -ut16_t - -pt -) - -21 : - $_pt -( -pt -){}; - -22 ~ - $AsyncSv -(){ - } -}; - -24 - geed -: - -25 -ut16_t - -_pt -; - - @lib_standalone/ESP8266React.h - -1 #ide -ESP8266R_h - - -2  - #ESP8266R_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -8  - ~ - -9  - ~ - -10  - ~ - -11  - ~ - -12  - ~ - -14 as - cDummyStgs - { - -15 - mpublic -: - -16 -ut8_t - -tx_mode - = 1; - -17 -ut8_t - - mems_bus_id - = 0x0B; - -18 -bo - - msyem_hbt - = -l -; - -19 -t8_t - - msyog_v - = 1; - -20 -ut32_t - - msyog_mk_rv - = 0; - -21 -Sg - - msyog_ho - = "192.168.1.4"; - -22 -ut8_t - - mma_thmo - = 0; - -23 -bo - - mshow_tim - = -l -; - -24 -bo - - mshow_t - = -l -; - -25 -bo - - mhide_d - = -l -; - -26 -ut16_t - - mpublish_time - = 10; - -27 -ut8_t - - mmq_fm - = 3; - -28 -ut8_t - - mmq_qos - = 0; - -29 -Sg - - mhome - = "ems-esp"; - -30 -Sg - - mjwtSe - = "ems-esp"; - -31 -Sg - - mssid - = "ems-esp"; - -32 -Sg - - msswd - = "ems-esp"; - -33 -ut16_t - - mpublish_time_bo -; - -34 -ut16_t - - mpublish_time_thmo -; - -35 -ut16_t - - mpublish_time_sެ -; - -36 -ut16_t - - mpublish_time_mixg -; - -37 -ut16_t - - mpublish_time_h -; - -38 -ut16_t - - mpublish_time_ns -; - -40  - $ad -( -DummyStgs - & -gs -, -JsObje - & -ro -){}; - -41  - $ad -( -DummyStgs - & -gs -){ - } -}; - -43  -SUpdeResu - - $upde -( -JsObje - & -ro -, -DummyStgs - & -gs -) { - -44  -SUpdeResu -:: -CHANGED -; - -45 - } -} - -48 -ass - - gDummyStgsSvi - : -public - -SfulSvi -< -DummyStgs -> { - -49 -public -: - -50 -DummyStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -){}; - -52  -beg -(); - -53  -lo -(); - -55 - give -: - -58  - #WiFiStgs - -DummyStgs - - - ) - -59  - #SecuryStgs - -DummyStgs - - - ) - -60  - #MqStgs - -DummyStgs - - - ) - -62 as - cESP8266R - { - -63 - mpublic -: - -64 - $ESP8266R -( -AsyncWebSv - * -rv -, -FS - * -fs -) - -65 : - `_gs -( -rv -, -fs -, -nuαr -) - -66 , - $_curyStgsSvi -( -rv -, -fs -){}; - -68  - $beg -(){ - } -}; - -69  - $lo -(){ - } -}; - -71 -SecuryMag - * - $gSecuryMag -() { - -72  & -_curyStgsSvi -; - -73 - } -} - -75 -AsyncMqCl - * - $gMqCl -() { - -76  -_mqCl -; - -77 - } -} - -79 - gSfulSvi -< - gDummyStgs -> * - $gWiFiStgsSvi -() { - -80  & -_gs -; - -81 - } -} - -83 - gSfulSvi -< - gDummyStgs -> * - $gSecuryStgsSvi -() { - -84  & -_gs -; - -85 - } -} - -87 - gSfulSvi -< - gDummyStgs -> * - $gMqStgsSvi -() { - -88  & -_gs -; - -89 - } -} - -91 - give -: - -92 -DummyStgsSvi - -_gs -; - -93 -SecuryStgsSvi - - g_curyStgsSvi -; - -95 -AsyncMqCl - * - g_mqCl -; - -98 as - cEMSESPStgsSvi - { - -99 - mpublic -: - -100 -EMSESPStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -); - -102  -beg -(); - -104 - mive -: - - @lib_standalone/ESPAsyncWebServer.h - -1 #ide -_ESPAsyncWebSv_H_ - - -2  - #_ESPAsyncWebSv_H_ - - - ) - -4  - ~"Arduo.h -" - -6  - ~ - -7  - ~ - -8  - ~ - -10 -ass - - gAsyncWebSv -; - -11 -ass - - gAsyncWebSvReque -; - -12 -ass - - gAsyncWebSvReڣ -; - -13 -ass - - gAsyncJsReڣ -; - -16 - mHTTP_GET - = 0b00000001, - -17 - mHTTP_POST - = 0b00000010, - -18 - mHTTP_DELETE - = 0b00000100, - -19 - mHTTP_PUT - = 0b00001000, - -20 - mHTTP_PATCH - = 0b00010000, - -21 - mHTTP_HEAD - = 0b00100000, - -22 - mHTTP_OPTIONS - = 0b01000000, - -23 - mHTTP_ANY - = 0b01111111, - -24 } - tWebRequeMhod -; - -26  -ut8_t - - tWebRequeMhodCompose -; - -27  - gd -:: - tfuni -<()> - tArDiscHdr -; - -29 as - cAsyncWebSvReque - { - -30 -nd - -ass - - mAsyncWebSv -; - -31 -nd - -ass - - mAsyncClbackWebHdr -; - -33 - mive -: - -34 -AsyncCl - * -_ -; - -35 -AsyncWebSv - * - m_rv -; - -36 -WebRequeMhodCompose - - m_mhod -; - -38 - mpublic -: - -39 * -_mpObje -; - -41 -AsyncWebSvReque -( -AsyncWebSv - *, -AsyncCl - *); - -42 ~ -AsyncWebSvReque -(); - -44 -AsyncCl - * - $ -() { - -45  -_ -; - -48 -WebRequeMhodCompose - - $mhod -() const { - -49  -_mhod -; - -50 - } -} - -52  - $addIegHd -(cڡ -Sg - & -me -){ - } -}; - -54  - $nd -( -AsyncWebSvReڣ - * -ڣ -){ - } -}; - -55  - $nd -( -AsyncJsReڣ - * -ڣ -){ - } -}; - -56  -nd -( -code -, cڡ -Sg - & -cڋTy - = Sg(), cڡ Sg & -cڋ - = - $Sg -()){ - } -}; - -58 -AsyncWebSvReڣ - * -begReڣ -( -code -, cڡ -Sg - & -cڋTy - = Sg(), cڡ Sg & -cڋ - = - $Sg -()) { - -60  -nuαr -; - -61 - } -} - -63 -size_t - - $hds -() const; - -64 -size_t - - $ms -() const; - -65 - } -}; - -67  - gd -:: - tfuni -< - tbo -( - tAsyncWebSvReque - * - tque -)> - tArRequeFrFuni -; - -69 as - cAsyncWebHdr - { - -70 - meed -: - -71 -Sg - -_uame -; - -72 -Sg - - m_sswd -; - -74 - mpublic -: - -75 - $AsyncWebHdr -() - -76 : - `_uame -("") - -77 , - `_sswd -("") { - -80 -vtu - ~ - $AsyncWebHdr -() { - -81 - } -} - -82 -vtu - -bo - -nHd -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -))) { - -83  - gl -; - -85 -vtu -  -hdReque -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -))) { - -87 -vtu -  -hdUd -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -)), - -88 cڡ -Sg - & -fame - -__ibu__ -(( -unud -)), - -89 -size_t - -dex - -__ibu__ -(( -unud -)), - -90 -ut8_t - * -da - -__ibu__ -(( -unud -)), - -91 -size_t - -n - -__ibu__ -(( -unud -)), - -92 -bo - -f - -__ibu__ -(( -unud -))) { - -94 -vtu -  -hdBody -( -AsyncWebSvReque - * -que - -__ibu__ -(( -unud -)), - -95 -ut8_t - * -da - -__ibu__ -(( -unud -)), - -96 -size_t - -n - -__ibu__ -(( -unud -)), - -97 -size_t - -dex - -__ibu__ -(( -unud -)), - -98 -size_t - -tٮ - -__ibu__ -(( -unud -))) { - -101 -vtu - -bo - - $isRequeHdrTrivl -() { - -102  -ue -; - -103 - } -} - -106 as - cAsyncWebSvReڣ - { - -107 - mpublic -: - -108 -AsyncWebSvReڣ -(); - -109 - mvtu - ~ -AsyncWebSvReڣ -(); - -112  - gd -:: - tfuni -<( - tAsyncWebSvReque - * - tque -)> - tArRequeHdrFuni -; - -113  - gd -:: - tfuni -<( - tAsyncWebSvReque - * - tque -, cڡ - tSg - & - tfame -, - tsize_t - - tdex -, - tut8_t - * - tda -, size_ - tn -, - tbo - - tf -)> - tArUdHdrFuni -; - -114  - gd -:: - tfuni -<( - tAsyncWebSvReque - * - tque -, - tut8_t - * - tda -, - tsize_t - - tn -, size_ - tdex -, size_ - ttٮ -)> - tArBodyHdrFuni -; - -116 as - cAsyncWebSv - { - -117 - meed -: - -118 -AsyncSv - -_rv -; - -120 - mpublic -: - -121 - $AsyncWebSv -( -ut16_t - -pt -) - -122 : - $_rv -( -pt -){}; - -124 ~ - $AsyncWebSv -(){ - } -}; - -126  - $beg -(){ - } -}; - -127  -d -(); - -129 - gAsyncWebHdr - & - $addHdr -( -AsyncWebHdr - * -hdr -) { - -130  * -hdr -; - -131 - } -} - -133  - $ -(cڡ * -uri -, -WebRequeMhodCompose - -mhod -, -ArRequeHdrFuni - -Reque -){ - } -}; - - @lib_standalone/FS.h - -1 #ide -FS_h - - -2  - #FS_h - - - ) - -4 as - cFS - { - -5 -bo - - $ݒ -() { - -6  -ue -; - -8 - } -}; - - @lib_standalone/FSPersistence.h - -1 #ide -FSPsi_h - - -2  - #FSPsi_h - - - ) - -4  - ~ - -5  - ~ - -7 - gme - < -ass - - gT -> - -8 as - cFSPsi - { - -9 - mpublic -: - -10 -FSPsi -( -JsSRd -< -T -> -eRd -, - -11 -JsSUpd -< -T -> -eUpd -, - -12 -SfulSvi -< -T -> * -efulSvi -, - -13 -FS - * -fs -, - -14 cڡ * -fePh -, - -15 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) - -16 : -_eRd -( -eRd -) - -17 , -_eUpd -( -eUpd -) - -18 , -_efulSvi -( -efulSvi -) - -19 , -_fs -( -fs -) - -20 , -_fePh -( -fePh -) - -21 , -_bufrSize -( -bufrSize -) - -22 , - $_updeHdrId -(0) { - -23 - `abUpdeHdr -(); - -26  - $adFromFS -() { - -27 - `yDeus -(); - -28 - } -} - -30 -bo - - $wreToFS -() { - -31 -DymicJsDocumt - -jsDocumt - = - `DymicJsDocumt -( -_bufrSize -); - -32 -JsObje - -jsObje - = -jsDocumt -. -to -(); - -33 -_efulSvi --> - `ad -( -jsObje -, -_eRd -); - -34  -ue -; - -35 - } -} - -37  - $dibUpdeHdr -() { - -38 i( -_updeHdrId -) { - -39 -_efulSvi --> - `moveUpdeHdr -( -_updeHdrId -); - -40 -_updeHdrId - = 0; - -42 - } -} - -44  - $abUpdeHdr -() { - -45 i(! -_updeHdrId -) { - -46 -_updeHdrId - = -_efulSvi --> - `addUpdeHdr -([&](cڡ -Sg - & -igId -{ - `wreToFS -(); }); - -48 - } -} - -50 - give -: - -51 -JsSRd -< -T -> -_eRd -; - -52 - gJsSUpd -< - gT -> - g_eUpd -; - -53 - gSfulSvi -< - gT -> * - g_efulSvi -; - -54 -FS - * - g_fs -; - -55 cڡ * - g_fePh -; - -56 -size_t - - g_bufrSize -; - -57 -upde_hdr_id_t - - g_updeHdrId -; - -59 - geed -: - -60 -vtu -  - $yDeus -() { - -61 -DymicJsDocumt - -jsDocumt - = - `DymicJsDocumt -( -_bufrSize -); - -62 -JsObje - -jsObje - = -jsDocumt -. -as -(); - -63 -_efulSvi --> - `updeWhoutPragi -( -jsObje -, -_eUpd -); - -64 - } -} - - @lib_standalone/Features.h - -1 #ide -Ftus_h - - -2  - #Ftus_h - - - ) - -4  - #FT_ENABLED -( -u - - ) -feature - -7 #ide -FT_PROJECT - - -8  - #FT_PROJECT - 0 - - ) - -12 #ide -FT_SECURITY - - -13  - #FT_SECURITY - 0 - - ) - -17 #ide -FT_MQTT - - -18  - #FT_MQTT - 0 - - ) - -22 #ide -FT_NTP - - -23  - #FT_NTP - 0 - - ) - -27 #ide -FT_OTA - - -28  - #FT_OTA - 0 - - ) - -32 #ide -FT_UPLOAD_FIRMWARE - - -33  - #FT_UPLOAD_FIRMWARE - 0 - - ) - - @lib_standalone/HttpEndpoint.h - -1 #ide -HpEndpot_h - - -2  - #HpEndpot_h - - - ) - -4  - ~ - -6  - ~ - -7  - ~ - -9  - ~ - -10  - ~ - -12  - #HTTP_ENDPOINT_ORIGIN_ID - "hp" - - ) - -14 - gme - < -ass - - gT -> - -15 as - cHpGEndpot - { - -16 - mpublic -: - -17 -HpGEndpot -( -JsSRd -< -T -> -eRd -, - -18 -SfulSvi -< -T ->* -efulSvi -, - -19 -AsyncWebSv -* -rv -, - -20 cڡ -Sg -& -rviPh -, - -21 -SecuryMag -* -curyMag -, - -22 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -23 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -24 -_eRd -( -eRd -), -_efulSvi -( -efulSvi -), - $_bufrSize -( -bufrSize -) { - -27 - `HpGEndpot -( -JsSRd -< -T -> -eRd -, - -28 -SfulSvi -< -T ->* -efulSvi -, - -29 -AsyncWebSv -* -rv -, - -30 cڡ -Sg -& -rviPh -, - -31 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -32 - `_eRd -( -eRd -), - `_efulSvi -( -efulSvi -), - $_bufrSize -( -bufrSize -) { - -33 - } -} - -35 - geed -: - -36 -JsSRd -< -T -> -_eRd -; - -37 - gSfulSvi -< - gT ->* - g_efulSvi -; - -38 -size_t - - g_bufrSize -; - -40  - $tchStgs -( -AsyncWebSvReque -* -que -) { - -41 - } -} - -44 - gme - < -ass - - gT -> - -45 as - cHpPoEndpot - { - -46 - mpublic -: - -47 -HpPoEndpot -( -JsSRd -< -T -> -eRd -, - -48 -JsSUpd -< -T -> -eUpd -, - -49 -SfulSvi -< -T ->* -efulSvi -, - -50 -AsyncWebSv -* -rv -, - -51 cڡ -Sg -& -rviPh -, - -52 -SecuryMag -* -curyMag -, - -53 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -54 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -55 -_eRd -( -eRd -), - -56 -_eUpd -( -eUpd -), - -57 -_efulSvi -( -efulSvi -), - -58 - $_bufrSize -( -bufrSize -) { - -61 - `HpPoEndpot -( -JsSRd -< -T -> -eRd -, - -62 -JsSUpd -< -T -> -eUpd -, - -63 -SfulSvi -< -T ->* -efulSvi -, - -64 -AsyncWebSv -* -rv -, - -65 cڡ -Sg -& -rviPh -, - -66 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -67 - `_eRd -( -eRd -), - -68 - `_eUpd -( -eUpd -), - -69 - `_efulSvi -( -efulSvi -), - -70 - $_bufrSize -( -bufrSize -) { - -71 - } -} - -73 - geed -: - -74 -JsSRd -< -T -> -_eRd -; - -75 - gJsSUpd -< - gT -> - g_eUpd -; - -76 - gSfulSvi -< - gT ->* - g_efulSvi -; - -77 -size_t - - g_bufrSize -; - -79  - $updeStgs -( -AsyncWebSvReque -* -que -, -JsV -& -js -) { - -80 i(! -js -. -is -< -JsObje ->()) { - -83 -JsObje - -jsObje - = -js -. -as -(); - -84 -SUpdeResu - -outcome - = -_efulSvi --> - `updeWhoutPragi -( -jsObje -, -_eUpd -); - -85 i( -outcome - = -SUpdeResu -:: -ERROR -) { - -88 i( -outcome - = -SUpdeResu -:: -CHANGED -) { - -90 - } -} - -93 - gme - < -ass - - gT -> - -94 -ass - - gHpEndpot - : -public - -HpGEndpot -< -T ->,ubli - gHpPoEndpot -< - gT -> { - -95 - gpublic -: - -96 -HpEndpot -( -JsSRd -< -T -> -eRd -, - -97 -JsSUpd -< -T -> -eUpd -, - -98 -SfulSvi -< -T ->* -efulSvi -, - -99 -AsyncWebSv -* -rv -, - -100 cڡ -Sg -& -rviPh -, - -101 -SecuryMag -* -curyMag -, - -102 -AuthtitiPdi - -authtitiPdi - = -AuthtitiPdis -:: -IS_ADMIN -, - -103 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -104 -HpGEndpot -< -T ->( -eRd -, - -105 - gefulSvi -, - -106 - grv -, - -107 - grviPh -, - -108 - gcuryMag -, - -109 - gauthtitiPdi -, - -110 - gbufrSize -), - -111 - gHpPoEndpot -< - gT ->( - geRd -, - -112 - geUpd -, - -113 - gefulSvi -, - -114 - grv -, - -115 - grviPh -, - -116 - gcuryMag -, - -117 - gauthtitiPdi -, - -118 - gbufrSize -) { - -121 -HpEndpot -( -JsSRd -< -T -> -eRd -, - -122 -JsSUpd -< -T -> -eUpd -, - -123 -SfulSvi -< -T ->* -efulSvi -, - -124 -AsyncWebSv -* -rv -, - -125 cڡ -Sg -& -rviPh -, - -126 -size_t - -bufrSize - = -DEFAULT_BUFFER_SIZE -) : - -127 -HpGEndpot -< -T ->( -eRd -, - gefulSvi -, - grv -, - grviPh -, - gbufrSize -), - -128 - gHpPoEndpot -< - gT ->( - geRd -, - geUpd -, - gefulSvi -, - grv -, - grviPh -, - gbufrSize -) { - - @lib_standalone/MqttPubSub.h - - @lib_standalone/SecurityManager.h - -1 #ide -SecuryMag_h - - -2  - #SecuryMag_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -8  - ~
  • - -10 #ide -FACTORY_JWT_SECRET - - -11  - #FACTORY_JWT_SECRET - -ESPUts -:: - `deuDeviVue -() - - ) - -14  - #ACCESS_TOKEN_PARAMATER - "acss_tok" - - ) - -16  - #AUTHORIZATION_HEADER - "Authizi" - - ) - -17  - #AUTHORIZATION_HEADER_PREFIX - "B" - - ) - -18  - #AUTHORIZATION_HEADER_PREFIX_LEN - 7 - - ) - -20  - #MAX_JWT_SIZE - 128 - - ) - -22 as - cUr - { - -23 - mpublic -: - -24 -Sg - -uame -; - -25 -Sg - - msswd -; - -26 -bo - - madm -; - -28 - mpublic -: - -29 - $Ur -( -Sg - -uame -, Sg -sswd -, -bo - -adm -) - -30 : - `uame -( -uame -) - -31 , - `sswd -( -sswd -) - -32 , - $adm -( -adm -) { - -34 - } -}; - -36 as - cAuthtiti - { - -37 - mpublic -: - -38 -Ur - * -ur -; - -39 -boޗn - - mauthtid -; - -41 - mpublic -: - -42 - $Authtiti -( -Ur - & -ur -) - -43 : - `ur -( -w - - `Ur -( -ur -)) - -44 , - $authtid -( -ue -) { - -46 - $Authtiti -() - -47 : - `ur -( -nuαr -) - -48 , - $authtid -( -l -) { - -49 - } -} - -50 ~ - $Authtiti -() { - -51 - `de - ( -ur -); - -52 - } -} - -55  - gd -:: - tfuni -< - tboޗn -( - tAuthtiti - & - tauthtiti -)> - tAuthtitiPdi -; - -57 as - cAuthtitiPdis - { - -58 - mpublic -: - -59  -bo - - $NONE_REQUIRED -( -Authtiti - & -authtiti -) { - -60  -ue -; - -62  -bo - - $IS_AUTHENTICATED -( -Authtiti - & -authtiti -) { - -63  -authtiti -. -authtid -; - -64 - } -}; - -65  -bo - - $IS_ADMIN -( -Authtiti - & -authtiti -) { - -66  -authtiti -. -authtid - &&uthtiti. -ur --> -adm -; - -67 - } -}; - -70 as - cSecuryMag - { - -71 - mpublic -: - -72 #i - $FT_ENABLED -( -FT_SECURITY -) - -73 -vtu - -Authtiti - - `authti -(cڡ -Sg - & -uame -, cڡ Sg & -sswd -) = 0; - -74 -vtu - -Sg - - `geJWT -( -Ur - * -ur -) = 0; - -77 -vtu - -Authtiti - - `authtiReque -( -AsyncWebSvReque - * -que -) = 0; - -78 -vtu - -ArRequeFrFuni - - `frReque -( -AuthtitiPdi - -edi -) = 0; - -79 -vtu - -ArRequeHdrFuni - - `wpReque -(ArRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -) = 0; - -80 -vtu - -ArJsRequeHdrFuni - - `wpClback -(ArJsRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -) = 0; - - @lib_standalone/SecuritySettingsService.cpp - -1  - ~ - -3 #i -FT_ENABLED -( -FT_SECURITY -) - -5 - gSecuryStgsSvi -:: - $SecuryStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -) : - -6 - `_hpEndpot -( -SecuryStgs -:: -ad -, SecuryStgs:: -upde -, -this -, -rv -, -SECURITY_SETTINGS_PATH -,his), - -7 - `_fsPsi -( -SecuryStgs -:: -ad -, SecuryStgs:: -upde -, -this -, -fs -, -SECURITY_SETTINGS_FILE -), - -8 - $_jwtHdr -( -FACTORY_JWT_SECRET -) { - -9 - `addUpdeHdr -([&](cڡ -Sg -& -igId -{ - `cfiguJWTHdr -(); }, -l -); - -10 - } -} - -12  - gSecuryStgsSvi -:: - $beg -() { - -13 -_fsPsi -. - `adFromFS -(); - -14 - `cfiguJWTHdr -(); - -15 - } -} - -17 -Authtiti - - gSecuryStgsSvi -:: - $authtiReque -( -AsyncWebSvReque -* -que -) { - -18 -AsyncWebHd -* -authiziHd - = -que --> - `gHd -( -AUTHORIZATION_HEADER -); - -19 i( -authiziHd -) { - -20 -Sg - -vue - = -authiziHd --> - `vue -(); - -21 i( -vue -. - `tsWh -( -AUTHORIZATION_HEADER_PREFIX -)) { - -22 -vue - = vue. - `subrg -( -AUTHORIZATION_HEADER_PREFIX_LEN -); - -23  - `authtiJWT -( -vue -); - -25 } i( -que --> - `hasPam -( -ACCESS_TOKEN_PARAMATER -)) { - -26 -AsyncWebPam -* -tokPam - = -que --> - `gPam -( -ACCESS_TOKEN_PARAMATER -); - -27 -Sg - -vue - = -tokPam --> - `vue -(); - -28  - `authtiJWT -( -vue -); - -30  - `Authtiti -(); - -31 - } -} - -33  - gSecuryStgsSvi -:: - $cfiguJWTHdr -() { - -34 -_jwtHdr -. - `tSe -( -_e -. -jwtSe -); - -35 - } -} - -37 -Authtiti - - gSecuryStgsSvi -:: - $authtiJWT -( -Sg -& -jwt -) { - -38 -DymicJsDocumt - - `yldDocumt -( -MAX_JWT_SIZE -); - -39 -_jwtHdr -. - `rJWT -( -jwt -, -yldDocumt -); - -40 i( -yldDocumt -. -is -< -JsObje ->()) { - -41 -JsObje - -rdPayld - = -yldDocumt -. -as -(); - -42 -Sg - -uame - = -rdPayld -["username"]; - -43  -Ur - -_ur - : -_e -. -urs -) { - -44 i( -_ur -. -uame - =uam&& - `videPayld -( -rdPayld -, &_user)) { - -45  - `Authtiti -( -_ur -); - -49  - `Authtiti -(); - -50 - } -} - -52 -Authtiti - - gSecuryStgsSvi -:: - $authti -(cڡ -Sg -& -uame -, cڡ Sg& -sswd -) { - -53  -Ur - -_ur - : -_e -. -urs -) { - -54 i( -_ur -. -uame - =uam&& _ur. -sswd - ==assword) { - -55  - `Authtiti -( -_ur -); - -58  - `Authtiti -(); - -59 - } -} - -61 -le -  - $puϋJWTPayld -( -JsObje -& -yld -, -Ur -* -ur -) { - -62 -yld -["uame"] = -ur --> -uame -; - -63 -yld -["adm"] = -ur --> -adm -; - -64 -yld -["vsi"] = -EMSESP_APP_VERSION -; - -65 - } -} - -67 -boޗn - - gSecuryStgsSvi -:: - $videPayld -( -JsObje -& -rdPayld -, -Ur -* -ur -) { - -68 -DymicJsDocumt - - `jsDocumt -( -MAX_JWT_SIZE -); - -69 -JsObje - -yld - = -jsDocumt -. -to -(); - -70 - `puϋJWTPayld -( -yld -, -ur -); - -71  -yld - = -rdPayld -; - -72 - } -} - -74 -Sg - - gSecuryStgsSvi -:: - $geJWT -( -Ur -* -ur -) { - -75 -DymicJsDocumt - - `jsDocumt -( -MAX_JWT_SIZE -); - -76 -JsObje - -yld - = -jsDocumt -. -to -(); - -77 - `puϋJWTPayld -( -yld -, -ur -); - -78  -_jwtHdr -. - `budJWT -( -yld -); - -79 - } -} - -81 -ArRequeFrFuni - - gSecuryStgsSvi -:: - $frReque -( -AuthtitiPdi - -edi -) { - -82  [ -this -, -edi -]( -AsyncWebSvReque -* -que -) { - -83 -Authtiti - -authtiti - = - `authtiReque -( -que -); - -84  - `edi -( -authtiti -); - -86 - } -} - -88 -ArRequeHdrFuni - - gSecuryStgsSvi -:: - $wpReque -( -ArRequeHdrFuni - -Reque -, - -89 -AuthtitiPdi - -edi -) { - -90  [ -this -, -Reque -, -edi -]( -AsyncWebSvReque -* -que -) { - -91 -Authtiti - -authtiti - = - `authtiReque -( -que -); - -92 i(! - `edi -( -authtiti -)) { - -93 -que --> - `nd -(401); - -96 - `Reque -( -que -); - -98 - } -} - -100 -ArJsRequeHdrFuni - - gSecuryStgsSvi -:: - $wpClback -( -ArJsRequeHdrFuni - -Reque -, - -101 -AuthtitiPdi - -edi -) { - -102  [ -this -, -Reque -, -edi -]( -AsyncWebSvReque -* -que -, -JsV -& -js -) { - -103 -Authtiti - -authtiti - = - `authtiReque -( -que -); - -104 i(! - `edi -( -authtiti -)) { - -105 -que --> - `nd -(401); - -108 - `Reque -( -que -, -js -); - -110 - } -} - -114 -Ur - - gADMIN_USER - = Ur( -FACTORY_ADMIN_USERNAME -, -FACTORY_ADMIN_PASSWORD -, -ue -); - -116 - gSecuryStgsSvi -:: - $SecuryStgsSvi -( -AsyncWebSv -* -rv -, -FS -* -fs -: - $SecuryMag -() { - -117 - } -} - -118 -SecuryStgsSvi -::~ - $SecuryStgsSvi -() { - -119 - } -} - -121 -ArRequeFrFuni - -SecuryStgsSvi -:: - $frReque -( -AuthtitiPdi - -edi -) { - -122  [ -this -, -edi -]( -AsyncWebSvReque -* -que -{  -ue -; }; - -123 - } -} - -126 -Authtiti - - gSecuryStgsSvi -:: - $authtiReque -( -AsyncWebSvReque -* -que -) { - -127  - `Authtiti -( -ADMIN_USER -); - -128 - } -} - -131 -ArRequeHdrFuni - - gSecuryStgsSvi -:: - $wpReque -( -ArRequeHdrFuni - -Reque -, - -132 -AuthtitiPdi - -edi -) { - -133  -Reque -; - -134 - } -} - -136 -ArJsRequeHdrFuni - - gSecuryStgsSvi -:: - $wpClback -( -ArJsRequeHdrFuni - -Reque -, - -137 -AuthtitiPdi - -edi -) { - -138  -Reque -; - -139 - } -} - - @lib_standalone/SecuritySettingsService.h - -1 #ide -SecuryStgsSvi_h - - -2  - #SecuryStgsSvi_h - - - ) - -4  - ~ - -5  - ~ - -6  - ~ - -7  - ~ - -9  - ~"../../c/vsi.h -" - -11 #ide -FACTORY_ADMIN_USERNAME - - -12  - #FACTORY_ADMIN_USERNAME - "adm" - - ) - -15 #ide -FACTORY_ADMIN_PASSWORD - - -16  - #FACTORY_ADMIN_PASSWORD - "adm" - - ) - -19 #ide -FACTORY_GUEST_USERNAME - - -20  - #FACTORY_GUEST_USERNAME - "gue" - - ) - -23 #ide -FACTORY_GUEST_PASSWORD - - -24  - #FACTORY_GUEST_PASSWORD - "gue" - - ) - -27  - #SECURITY_SETTINGS_FILE - "/cfig/curyStgs.js" - - ) - -28  - #SECURITY_SETTINGS_PATH - "//curyStgs" - - ) - -30 #i -FT_ENABLED -( -FT_SECURITY -) - -32 as - cSecuryStgs - { - -33 - mpublic -: - -34 -Sg - -jwtSe -; - -35 - md -:: -li -< -Ur -> -urs -; - -37  - $ad -( -SecuryStgs - & -gs -, -JsObje - & -ro -) { - -39 -ro -["jwt_"] = -gs -. -jwtSe -; - -42 -JsAay - -urs - = -ro -. - `NeedAay -("users"); - -43  -Ur - -ur - : -gs -. -urs -) { - -44 -JsObje - -urRo - = -urs -. - `NeedObje -(); - -45 -urRo -["uame"] = -ur -. -uame -; - -46 -urRo -["sswd"] = -ur -. -sswd -; - -47 -urRo -["adm"] = -ur -. -adm -; - -51  -SUpdeResu - - $upde -( -JsObje - & -ro -, -SecuryStgs - & -gs -) { - -53 -gs -. -jwtSe - = -ro -["jwt_"] | -FACTORY_JWT_SECRET -; - -56 -gs -. -urs -. - `r -(); - -57 i( -ro -["urs"]. -is -< -JsAay ->()) { - -58  -JsV - -ur - : -ro -["urs"]. -as -< -JsAay ->()) { - -59 -gs -. -urs -. - `push_back -( - `Ur -( -ur -["username"], user["password"], user["admin"])); - -62 -gs -. -urs -. - `push_back -( - `Ur -( -FACTORY_ADMIN_USERNAME -, -FACTORY_ADMIN_PASSWORD -, -ue -)); - -63 -gs -. -urs -. - `push_back -( - `Ur -( -FACTORY_GUEST_USERNAME -, -FACTORY_GUEST_PASSWORD -, -l -)); - -65  -SUpdeResu -:: -CHANGED -; - -66 - } -} - -69 -ass - - gSecuryStgsSvi - : -public - -SfulSvi -< -SecuryStgs ->,ubli - gSecuryMag - { - -70 - gpublic -: - -71 -SecuryStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -); - -73  -beg -(); - -76 -Authtiti - -authti -(cڡ -Sg - & -uame -, cڡ Sg & -sswd -); - -77 -Authtiti - -authtiReque -( -AsyncWebSvReque - * -que -); - -78 -Sg - -geJWT -( -Ur - * -ur -); - -79 -ArRequeFrFuni - -frReque -( -AuthtitiPdi - -edi -); - -80 -ArRequeHdrFuni - -wpReque -(ArRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -); - -81 -ArJsRequeHdrFuni - -wpClback -(ArJsRequeHdrFuni -back -, -AuthtitiPdi - -edi -); - -83 - give -: - -84 -HpEndpot -< -SecuryStgs -> -_hpEndpot -; - -85 - gFSPsi -< - gSecuryStgs -> - g_fsPsi -; - -86 -ArduoJsJWT - - g_jwtHdr -; - -88  -cfiguJWTHdr -(); - -89 -Authtiti - -authtiJWT -( -Sg - & -jwt -); - -90 -boޗn - -videPayld -( -JsObje - & -rdPayld -, -Ur - * -ur -); - -95 as - cSecuryStgsSvi - : -public - -SecuryMag - { - -96 -public -: - -97 -SecuryStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -); - -98 ~ -SecuryStgsSvi -(); - -101 -Authtiti - -authtiReque -( -AsyncWebSvReque - * -que -); - -102 -ArRequeFrFuni - -frReque -( -AuthtitiPdi - -edi -); - -103 -ArRequeHdrFuni - -wpReque -(ArRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -); - -104 -ArJsRequeHdrFuni - -wpClback -(ArJsRequeHdrFuni -Reque -, -AuthtitiPdi - -edi -); - - @lib_standalone/StatefulService.cpp - -1  - ~ - -3 -upde_hdr_id_t - - gSUpdeHdrInfo -:: -cutUpdedHdrId - = 0; - - @lib_standalone/StatefulService.h - -1 #ide -SfulSvi_h - - -2  - #SfulSvi_h - - - ) - -4  - ~ - -5  - ~ - -7  - ~
  • - -8  - ~ - -10 #ide -DEFAULT_BUFFER_SIZE - - -11  - #DEFAULT_BUFFER_SIZE - 1024 - - ) - -14 as - cSUpdeResu - { - -15 - mCHANGED - = 0, - -16 - mUNCHANGED -, - -17 - mERROR - - -20 - gme - < -tyme - - gT -> - -21 -usg - - gJsSUpd - = -d -:: -funi -< -SUpdeResu -( -JsObje - & -ro -, -T - & -gs -)>; - -23 - gme - < -tyme - - gT -> - -24 -usg - - gJsSRd - = -d -:: -funi -<( -T - & -gs -, - gJsObje - & - gro -)>; - -26  -size_t - - tupde_hdr_id_t -; - -27  - gd -:: - tfuni -<(cڡ - tSg - & - tigId -)> - tSUpdeClback -; - -29  - sSUpdeHdrInfo - { - -30  -upde_hdr_id_t - - mcutUpdedHdrId -; - -31 -upde_hdr_id_t - - m_id -; - -32 -SUpdeClback - - m_cb -; - -33 -bo - - m_lowRemove -; - -34 -SUpdeHdrInfo -( -SUpdeClback - -cb -, -bo - -lowRemove -) - -35 : -_id -(++ -cutUpdedHdrId -) - -36 , -_cb -( -cb -) - -37 , -_lowRemove -( -lowRemove -){}; - -38 } - tSUpdeHdrInfo_t -; - -40 - gme - < -ass - - gT -> - -41 as - cSfulSvi - { - -42 - mpublic -: - -43 -me - < -tyme -... -Args -> - -44 #ifde -ESP32 - - -45 - $SfulSvi -( -Args - &&... -gs -) - -46 : - `_e -( -d -:: -fwd -< -Args ->( -gs -)...) - -47 , - `_acssMux -( - $xSemheCeRecursiveMux -()) { - -50 - $SfulSvi -( -Args - &&... -gs -) - -51 : - `_e -( -d -:: -fwd -< -Args ->( -gs -)...) { - -52 - } -} - -55 -upde_hdr_id_t - - $addUpdeHdr -( -SUpdeClback - -cb -, -bo - -lowRemove - = -ue -) { - -56 i(! -cb -) { - -59 -SUpdeHdrInfo_t - - `updeHdr -( -cb -, -lowRemove -); - -60 -_updeHdrs -. - `push_back -( -updeHdr -); - -61  -updeHdr -. -_id -; - -62 - } -} - -64  - $moveUpdeHdr -( -upde_hdr_id_t - -id -) { - -65 aut -i - = -_updeHdrs -. - `beg -(); i !_updeHdrs. - `d -();) { - -66 i((* -i -). -_lowRemove - && (*i). -_id - = -id -) { - -67 -i - = -_updeHdrs -. - `a -(i); - -69 ++ -i -; - -72 - } -} - -74 -SUpdeResu - -upde -( -d -:: -funi - -eUpd -, cڡ -Sg - & -igId -) { - -75 -begTni -(); - -76 -SUpdeResu - - gsu - = -eUpd -( -_e -); - -77 -dTni -(); - -78 i( - gsu - = -SUpdeResu -:: -CHANGED -) { - -79 -UpdeHdrs -( -igId -); - -81  - gsu -; - -84 -SUpdeResu - -updeWhoutPragi -( -d -:: -funi - -eUpd -) { - -85 -begTni -(); - -86 -SUpdeResu - - gsu - = -eUpd -( -_e -); - -87 -dTni -(); - -88  - gsu -; - -91 -SUpdeResu - -upde -( -JsObje - & -jsObje -, -JsSUpd -< -T -> -eUpd -, cڡ -Sg - & -igId -) { - -92 -begTni -(); - -93 -SUpdeResu - - gsu - = -eUpd -( -jsObje -, -_e -); - -94 -dTni -(); - -95 i( - gsu - = -SUpdeResu -:: -CHANGED -) { - -96 -UpdeHdrs -( -igId -); - -98  - gsu -; - -101 -SUpdeResu - -updeWhoutPragi -( -JsObje - & -jsObje -, -JsSUpd -< -T -> -eUpd -) { - -102 -begTni -(); - -103 -SUpdeResu - - gsu - = -eUpd -( -jsObje -, -_e -); - -104 -dTni -(); - -105  - gsu -; - -108  -ad -( -d -:: -funi -<( -T - &)> -eRd -) { - -109 -begTni -(); - -110 -eRd -( -_e -); - -111 -dTni -(); - -114  -ad -( -JsObje - & -jsObje -, -JsSRd -< -T -> -eRd -) { - -115 -begTni -(); - -116 -eRd -( -_e -, -jsObje -); - -117 -dTni -(); - -120  - $UpdeHdrs -(cڡ -Sg - & -igId -) { - -121 cڡ -SUpdeHdrInfo_t - & -updeHdr - : -_updeHdrs -) { - -122 -updeHdr -. - `_cb -( -igId -); - -124 - } -} - -126 - geed -: - -127 -T - -_e -; - -129 -le -  - $begTni -() { - -130 #ifde -ESP32 - - -131 - `xSemheTakeRecursive -( -_acssMux -, -ptMAX_DELAY -); - -133 - } -} - -135 -le -  - $dTni -() { - -136 #ifde -ESP32 - - -137 - `xSemheGiveRecursive -( -_acssMux -); - -139 - } -} - -141 - give -: - -142 #ifde -ESP32 - - -143 -SemheHd_t - -_acssMux -; - -145 - gd -:: -li -< -SUpdeHdrInfo_t -> -_updeHdrs -; - - @lib_standalone/WString.cpp - -2  - ~ - -3  - ~"WSg.h -" - -12 -size_t - - $y -(* -__ri - -d -, cڡ * __ri -c -, -size_t - -dsize -) { - -13 cڡ * -oc - = -c -; - -14 -size_t - -e - = -dsize -; - -17 i( -e - != 0) { - -18 -- -e - != 0) { - -19 i((* -d -++ = * -c -++) == '\0') - -25 i( -e - == 0) { - -26 i( -dsize - != 0) - -27 * -d - = '\0'; - -28 * -c -++) - -32  ( -c - - -oc - - 1); - -33 - } -} - -44 -size_t - - $t -(* -d -, cڡ * -c -, -size_t - -siz -) { - -45 * -d - = -d -; - -46 cڡ * -s - = -c -; - -47 -size_t - -n - = -siz -; - -48 -size_t - -dn -; - -51  -n --- !0 && * -d - != '\0') - -52 -d -++; - -53 -dn - = -d - - -d -; - -54 -n - = -siz - - -dn -; - -56 i( -n - == 0) - -57  ( -dn - + - ` -( -s -)); - -58 * -s - != '\0') { - -59 i( -n - != 1) { - -60 * -d -++ = * -s -; - -61 -n ---; - -63 -s -++; - -65 * -d - = '\0'; - -67  ( -dn - + ( -s - - -c -)); - -68 - } -} - - @lib_standalone/WString.h - -2 #ide -WSTRING_H - - -3  - #WSTRING_H - - - ) - -5  - ~ - -8 as - cSg - { - -9 - mpublic -: - -10 -Sg - & -ݔ -+=(cڡ * -rhs -) { - -11 -_r - + -rhs -; - -12  * - mthis -; - -15 -size_t - - $ngth -() const { - -16  -_r -. - `size -(); - -17 - } -} - -19 -Sg -(cڡ * -r - = "") - -20 : - $_r -( -r -) { - -21 - } -} - -23 cڡ * - $c_r -() const { - -24  -_r -. - `c_r -(); - -25 - } -} - -27 -bo - - gݔ -==(cڡ * -s -) const { - -28  -_r - = -s -; - -31 -nd - - gd -:: -oam - & -ݔ -<<( -d -::oam & -lhs -, cڡ :: -Sg - & -rhs -) { - -32 -lhs - << -rhs -. -_r -; - -33  - glhs -; - -37 -bo - - $isEmy -() { - -38  -_r -. - `emy -(); - -39 - } -} - -45 -bo - - $equs -(cڡ * -s -) { - -46  -_r - = -s -; - -47 - } -} - -50 - give -: - -51 -d -:: -rg - -_r -; - -54 -ass - - gSgSumHr -; - -56 -le - -bo - - gݔ -==(cڡ -d -:: -rg - & -lhs -, cڡ :: -Sg - & -rhs -) { - -57  -lhs - = -rhs -. -c_r -(); - -61 -size_t - -y -(* -__ri - -d -, cڡ * __ri -c -, size_ -dsize -); - -62 -size_t - -t -(* -d -, cڡ * -c -, size_ -siz -); - -64  - #_P - - - - - ) - -65  - #y_P - -y - - - ) - -66  - #rcmp_P - -rcmp - - - ) - -67  - #ry_P - -ry - - - ) - - @lib_standalone/WebSocketTxRx.h - - @lib_standalone/emsuart_standalone.cpp - -19  - ~"emsut_de.h -" - -21 #agm -GCC - -dgnoic - -push - - -22 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -24 -mea - - gem - { - -29  - gEMSut -:: -t -( -ut8_t - -tx_mode -, ut8_ -rx_gpio -, ut8_ -tx_gpio -) { - -36  - gEMSut -:: - -() { - -42  -EMSut -:: -t -() { - -49  -EMSut -:: -nd_pl -( -ut8_t - -da -) { - -57 -ut16_t - -EMSut -:: -sm -( -ut8_t - * -buf -, ut8_ -n -) { - -58 i( - gn - == 0) { - -59  -EMS_TX_STATUS_OK -; - -64 - gSl -. -t -("UART SENDING: "); - -65  - gs -[5]; - -66  -ut8_t - - gi - = 0; i < - gn -; i++) { - -67 - gSl -. -t -( -hext -( -s -, -buf -[ -i -])); - -68 - gSl -. -t -(" "); - -70 - gSl -. -n -(); - -72  - gEMS_TX_STATUS_OK -; - -76 * - gEMSut -:: -hext -(* -su -, cڡ -ut8_t - -vue -) { - -77 * - gp - = -su -; - -78 -ut8_t - - gnib1 - = ( -vue - >> 4) & 0x0F; - -79 -ut8_t - - gnib2 - = ( -vue - >> 0) & 0x0F; - -80 * - gp -++ = -nib1 - < 0xA ? '0' +ib1 : 'A' +ib1 - 0xA; - -81 * - gp -++ = -nib2 - < 0xA ? '0' +ib2 : 'A' +ib2 - 0xA; - -82 * - gp - = '\0'; - -83  - gsu -; - -88 #agm -GCC - -dgnoic - -p - - - @lib_standalone/emsuart_standalone.h - -19 #ide -EMSESP_EMSUART_H - - -20  - #EMSESP_EMSUART_H - - - ) - -22  - ~ - -24 -mea - - gem - { - -26  - #EMS_TX_STATUS_ERR - 0 - - ) - -27  - #EMS_TX_STATUS_OK - 1 - - ) - -29 as - cEMSut - { - -30 - gpublic -: - -31 -EMSut -() = ; - -32 ~ -EMSut -() = ; - -34  -t -( -ut8_t - -tx_mode -, ut8_ -rx_gpio -, ut8_ -tx_gpio -); - -35  - -(); - -36  -t -(); - -37  -nd_pl -( -ut8_t - -da -); - -38  -ut16_t - -sm -( -ut8_t - * -buf -, ut8_ -n -); - -40 - give -: - -41 * -hext -(* -su -, cڡ -ut8_t - -vue -); - - @src/EMSESPDevicesService.cpp - -19  - ~"EMSESPDevisSvi.h -" - -20  - ~"em.h -" - -21  - ~"mq.h -" - -23 -mea - - gem - { - -25 -usg - -mea - - gd -:: -ahds -; - -27 - gEMSESPDevisSvi -:: -EMSESPDevisSvi -( -AsyncWebSv - * -rv -, -SecuryMag - * -curyMag -) - -28 : -_devi_daHdr -( -DEVICE_DATA_SERVICE_PATH -, - -29 -curyMag --> -wpClback -( -d -:: -bd -(& -EMSESPDevisSvi -:: -devi_da -, -this -, -_1 -, -_2 -), -AuthtitiPdis -:: -IS_AUTHENTICATED -)) { - -30 -rv --> - -( -EMSESP_DEVICES_SERVICE_PATH -, - -31 -HTTP_GET -, - -32 -curyMag --> -wpReque -( -d -:: -bd -(& -EMSESPDevisSvi -:: -l_devis -, -this -, -_1 -), -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -34 - grv --> - -( -SCAN_DEVICES_SERVICE_PATH -, - -35 -HTTP_GET -, - -36 -curyMag --> -wpReque -( -d -:: -bd -(& -EMSESPDevisSvi -:: -sn_devis -, -this -, -_1 -), -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -38 - g_devi_daHdr -. -tMhod -( -HTTP_POST -); - -39 - g_devi_daHdr -. -tMaxCڋLgth -(256); - -40 - grv --> -addHdr -(& -_devi_daHdr -); - -43  - gEMSESPDevisSvi -:: -sn_devis -( -AsyncWebSvReque - * -que -) { - -44 -EMSESP -:: -sn_devis -(); - -45 - gque --> -nd -(200); - -48  - gEMSESPDevisSvi -:: -l_devis -( -AsyncWebSvReque - * -que -) { - -49 -AsyncJsReڣ - * -ڣ - = -w - AsyncJsReڣ( -l -, -MAX_EMSESP_DEVICE_SIZE -); - -50 -JsObje - - gro - = -ڣ --> -gRo -(); - -52 -JsAay - - gdevis - = -ro -. -NeedAay -("devices"); - -53 cڡut& - gemsdevi - : -EMSESP -:: -emsdevis -) { - -54 i( -emsdevi -) { - -55 -JsObje - -obj - = -devis -. -NeedObje -(); - -56 - gobj -["id"] = -emsdevi --> -unique_id -(); - -57 - gobj -["ty"] = -emsdevi --> -devi_ty_me -(); - -58 - gobj -["bnd"] = -emsdevi --> -bnd_to_rg -(); - -59 - gobj -["me"] = -emsdevi --> -me -(); - -60 - gobj -["deviid"] = -emsdevi --> -g_devi_id -(); - -61 - gobj -["oduid"] = -emsdevi --> -odu_id -(); - -62 - gobj -["vsi"] = -emsdevi --> -vsi -(); - -66 -JsAay - - gnss - = -ro -. -NeedAay -("sensors"); - -67 i(! - gEMSESP -:: -ns_devis -(). -emy -()) { - -68 cڡut& -ns - : -EMSESP -:: -ns_devis -()) { - -69 -JsObje - -obj - = -nss -. -NeedObje -(); - -70 - gobj -["id"] = -ns -. -to_rg -(); - -71 - gobj -["mp"] = -ns -. -mtu_c -; - -75 - gڣ --> -tLgth -(); - -76 - gque --> -nd -( -ڣ -); - -79  - gEMSESPDevisSvi -:: -devi_da -( -AsyncWebSvReque - * -que -, -JsV - & -js -) { - -80 i( - gjs -. - gis -< - gJsObje ->()) { - -81 -AsyncJsReڣ - * - gڣ - = -w - AsyncJsReڣ( -l -, -MAX_EMSESP_DEVICE_SIZE -); - -82 #ide -EMSESP_STANDALONE - - -83 -ut8_t - - gid - = -js -["id"]; - -84 - gEMSESP -:: -devi_fo_web -( -id -, ( -JsObje - &) -ڣ --> -gRo -()); - -86 - gڣ --> -tLgth -(); - -87 - gque --> -nd -( -ڣ -); - -89 -AsyncWebSvReڣ - * - gڣ - = -que --> -begReڣ -(200); - -90 - gque --> -nd -( -ڣ -); - - @src/EMSESPDevicesService.h - -19 #ide -EMSESPDevisSvi_h - - -20  - #EMSESPDevisSvi_h - - - ) - -22  - ~ - -23  - ~ - -24  - ~ - -25  - ~ - -27  - #MAX_EMSESP_DEVICE_SIZE - 1700 - - ) - -29  - #EMSESP_DEVICES_SERVICE_PATH - "//lDevis" - - ) - -30  - #SCAN_DEVICES_SERVICE_PATH - "//snDevis" - - ) - -31  - #DEVICE_DATA_SERVICE_PATH - "//deviDa" - - ) - -33 -mea - - gem - { - -35 as - cEMSESPDevisSvi - { - -36 - gpublic -: - -37 -EMSESPDevisSvi -( -AsyncWebSv - * -rv -, -SecuryMag - * -curyMag -); - -39 - give -: - -40  -l_devis -( -AsyncWebSvReque - * -que -); - -41  -sn_devis -( -AsyncWebSvReque - * -que -); - -42  -devi_da -( -AsyncWebSvReque - * -que -, -JsV - & -js -); - -44 -AsyncClbackJsWebHdr - - g_devi_daHdr -; - - @src/EMSESPSettingsService.cpp - -19  - ~"EMSESPStgsSvi.h -" - -20  - ~"em.h -" - -22 -mea - - gem - { - -24 - gEMSESPStgsSvi -:: -EMSESPStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -) - -25 : -_hpEndpot -( -EMSESPStgs -:: -ad -, EMSESPStgs:: -upde -, -this -, -rv -, -EMSESP_SETTINGS_SERVICE_PATH -, -curyMag -) - -26 , -_fsPsi -( -EMSESPStgs -:: -ad -, EMSESPStgs:: -upde -, -this -, -fs -, -EMSESP_SETTINGS_FILE -) { - -27 -addUpdeHdr -([&](cڡ -Sg - & -igId -{ -Upde -(); }, -l -); - -30  - gEMSESPStgs -:: -ad -( -EMSESPStgs - & -gs -, -JsObje - & -ro -) { - -31 - gro -["tx_mode"] = -gs -. -tx_mode -; - -32 - gro -["ems_bus_id"] = -gs -. -ems_bus_id -; - -33 - gro -["syog_v"] = -gs -. -syog_v -; - -34 - gro -["syog_mk_rv"] = -gs -. -syog_mk_rv -; - -35 - gro -["syog_ho"] = -gs -. -syog_ho -; - -36 - gro -["ma_thmo"] = -gs -. -ma_thmo -; - -37 - gro -["show_tim"] = -gs -. -show_tim -; - -38 - gro -["show_t"] = -gs -. -show_t -; - -39 - gro -["rx_gpio"] = -gs -. -rx_gpio -; - -40 - gro -["tx_gpio"] = -gs -. -tx_gpio -; - -41 - gro -["ds_gpio"] = -gs -. -ds_gpio -; - -42 - gro -["ds_se"] = -gs -. -ds_se -; - -43 - gro -["d_gpio"] = -gs -. -d_gpio -; - -44 - gro -["hide_d"] = -gs -. -hide_d -; - -47 -SUpdeResu - - gEMSESPStgs -:: -upde -( -JsObje - & -ro -, -EMSESPStgs - & -gs -) { - -48 - ggs -. - gtx_mode - = -ro -["tx_mode"] | -EMSESP_DEFAULT_TX_MODE -; - -49 - ggs -. - gems_bus_id - = -ro -["ems_bus_id"] | -EMSESP_DEFAULT_EMS_BUS_ID -; - -50 - ggs -. - gsyog_v - = -ro -["syog_v"] | -EMSESP_DEFAULT_SYSLOG_LEVEL -; - -51 - ggs -. - gsyog_mk_rv - = -ro -["syog_mk_rv"] | -EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL -; - -52 - ggs -. - gsyog_ho - = -ro -["syog_ho"] | -EMSESP_DEFAULT_SYSLOG_HOST -; - -53 - ggs -. - gma_thmo - = -ro -["ma_thmo"] | -EMSESP_DEFAULT_MASTER_THERMOSTAT -; - -54 - ggs -. - gshow_tim - = -ro -["show_tim"] | -EMSESP_DEFAULT_SHOWER_TIMER -; - -55 - ggs -. - gshow_t - = -ro -["show_t"] | -EMSESP_DEFAULT_SHOWER_ALERT -; - -56 - ggs -. - grx_gpio - = -ro -["rx_gpio"] | -EMSESP_DEFAULT_RX_GPIO -; - -57 - ggs -. - gtx_gpio - = -ro -["tx_gpio"] | -EMSESP_DEFAULT_TX_GPIO -; - -58 - ggs -. - gds_gpio - = -ro -["ds_gpio"] | -EMSESP_DEFAULT_DALLAS_GPIO -; - -59 - ggs -. - gds_se - = -ro -["ds_se"] | -EMSESP_DEFAULT_DALLAS_PARASITE -; - -60 - ggs -. - gd_gpio - = -ro -["d_gpio"] | -EMSESP_DEFAULT_LED_GPIO -; - -61 - ggs -. - ghide_d - = -ro -["hide_d"] | -EMSESP_DEFAULT_HIDE_LED -; - -63  - gSUpdeResu -:: -CHANGED -; - -68  - gEMSESPStgsSvi -:: -Upde -() { - -69 -EMSESP -:: -show_ -. -t -(); - -71 - gEMSESP -:: -_tx -(); - -72 - gSyem -:: -t_d -(); - -73 -Sss - - gnss_ -; - -74 - gnss_ -. -t -(); - -77  - gEMSESPStgsSvi -:: -beg -() { - -78 -_fsPsi -. -adFromFS -(); - -81  - gEMSESPStgsSvi -:: -ve -() { - -82 -_fsPsi -. -wreToFS -(); - - @src/EMSESPSettingsService.h - -19 #ide -EMSESPStgsCfig_h - - -20  - #EMSESPStgsCfig_h - - - ) - -22  - ~ - -23  - ~ - -25  - #EMSESP_SETTINGS_FILE - "/cfig/emStgs.js" - - ) - -26  - #EMSESP_SETTINGS_SERVICE_PATH - "//emStgs" - - ) - -28  - #EMSESP_DEFAULT_TX_MODE - 1 - -29  - #EMSESP_DEFAULT_EMS_BUS_ID - 0x0B - -30  - #EMSESP_DEFAULT_SYSLOG_LEVEL - -1 - -31  - #EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL - 0 - - ) - -32  - #EMSESP_DEFAULT_SYSLOG_HOST - "" - - ) - -33  - #EMSESP_DEFAULT_MASTER_THERMOSTAT - 0 - -34  - #EMSESP_DEFAULT_SHOWER_TIMER - -l - - - ) - -35  - #EMSESP_DEFAULT_SHOWER_ALERT - -l - - - ) - -36  - #EMSESP_DEFAULT_HIDE_LED - -l - - - ) - -37  - #EMSESP_DEFAULT_DALLAS_PARASITE - -l - - - ) - -40 #i -defed -( -ESP8266 -) - -41  - #EMSESP_DEFAULT_RX_GPIO - 13 - -42  - #EMSESP_DEFAULT_TX_GPIO - 15 - -43  - #EMSESP_DEFAULT_DALLAS_GPIO - 14 - -44  - #EMSESP_DEFAULT_LED_GPIO - 2 - -45 #i - `defed -( -ESP32 -) - - ) - -46  - #EMSESP_DEFAULT_RX_GPIO - 23 - -47  - #EMSESP_DEFAULT_TX_GPIO - 5 - -48  - #EMSESP_DEFAULT_DALLAS_GPIO - 18 - -49  - #EMSESP_DEFAULT_LED_GPIO - 2 - -50 # - - ) - -52  - #EMSESP_DEFAULT_RX_GPIO - 0 - - ) - -53  - #EMSESP_DEFAULT_TX_GPIO - 0 - - ) - -54  - #EMSESP_DEFAULT_DALLAS_GPIO - 0 - - ) - -55  - #EMSESP_DEFAULT_LED_GPIO - 0 - - ) - -58 -mea - - gem - { - -60 - gMQTT_fm - : -ut8_t - { -SINGLE - = 1, - gNESTED -, - gHA -, - gCUSTOM - }; - -62 as - cEMSESPStgs - { - -63 - gpublic -: - -64 -ut8_t - -tx_mode -; - -65 -ut8_t - - gems_bus_id -; - -66 -ut8_t - - gma_thmo -; - -67 -bo - - gshow_tim -; - -68 -bo - - gshow_t -; - -69 -t8_t - - gsyog_v -; - -70 -ut32_t - - gsyog_mk_rv -; - -71 -Sg - - gsyog_ho -; - -72 -ut8_t - - grx_gpio -; - -73 -ut8_t - - gtx_gpio -; - -74 -ut8_t - - gds_gpio -; - -75 -bo - - gds_se -; - -76 -ut8_t - - gd_gpio -; - -77 -bo - - ghide_d -; - -79  -ad -( -EMSESPStgs - & -gs -, -JsObje - & -ro -); - -80  -SUpdeResu - -upde -( -JsObje - & -ro -, -EMSESPStgs - & -gs -); - -83 -ass - - gEMSESPStgsSvi - : -public - -SfulSvi -< -EMSESPStgs -> { - -84 -public -: - -85 -EMSESPStgsSvi -( -AsyncWebSv - * -rv -, -FS - * -fs -, -SecuryMag - * -curyMag -); - -87  -beg -(); - -88  -ve -(); - -90 - give -: - -91 -HpEndpot -< -EMSESPStgs -> -_hpEndpot -; - -92 - gFSPsi -< - gEMSESPStgs -> - g_fsPsi -; - -94  -Upde -(); - - @src/EMSESPStatusService.cpp - -19  - ~"EMSESPStusSvi.h -" - -20  - ~"em.h -" - -21  - ~"mq.h -" - -22  - ~"vsi.h -" - -24 -mea - - gem - { - -26 - gEMSESPStusSvi -:: -EMSESPStusSvi -( -AsyncWebSv - * -rv -, -SecuryMag - * -curyMag -) { - -28 - grv --> - -( -EMSESP_STATUS_SERVICE_PATH -, - -29 -HTTP_GET -, - -30 -curyMag --> -wpReque -( -d -:: -bd -(& -EMSESPStusSvi -:: -emStusSvi -, -this -, std:: -ahds -:: -_1 -), - -31 -AuthtitiPdis -:: -IS_AUTHENTICATED -)); - -34 #ifde -ESP32 - - -35 - gWiFi -. -Evt -( -StiModeDisced -, -WiFiEvt_t -:: -SYSTEM_EVENT_STA_DISCONNECTED -); - -36 - gWiFi -. -Evt -( -StiModeGIP -, -WiFiEvt_t -:: -SYSTEM_EVENT_STA_GOT_IP -); - -37 #i -defed -( -ESP8266 -) - -38 - g_StiModeDiscedHdr - = -WiFi -. -StiModeDisced -(onStationModeDisconnected); - -39 - g_StiModeGIPHdr - = -WiFi -. -StiModeGIP -(onStationModeGotIP); - -43 #ifde -ESP32 - - -44  - gEMSESPStusSvi -:: -StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -45 - gEMSESP -:: -logg -(). -debug -( -F -("WiFDisced. Rs code=%d"), -fo -. -disced -. -as -); - -47  - gEMSESPStusSvi -:: -StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -) { - -48 - gEMSESP -:: -logg -(). -debug -( -F -("WiFCed wh IP=%s, home=%s"), -WiFi -. -lolIP -(). -toSg -(). -c_r -(), WiFi. -gHome -()); - -49 - gEMSESP -:: -syem_ -. -nd_hbt -(); - -51 #i -defed -( -ESP8266 -) - -52  - gEMSESPStusSvi -:: -StiModeDisced -(cڡ -WiFiEvtStiModeDisced - & -evt -) { - -53 -EMSESP -:: -logg -(). -debug -( -F -("WiFDisced. Rs code=%d"), -evt -. -as -); - -55  - gEMSESPStusSvi -:: -StiModeGIP -(cڡ -WiFiEvtStiModeGIP - & -evt -) { - -56 -EMSESP -:: -logg -(). -debug -( -F -("WiFCed wh IP=%s, home=%s"), -evt -. - -. -toSg -(). -c_r -(), -WiFi -. -home -().c_str()); - -57 - gEMSESP -:: -syem_ -. -nd_hbt -(); - -61  - gEMSESPStusSvi -:: -emStusSvi -( -AsyncWebSvReque - * -que -) { - -62 -AsyncJsReڣ - * -ڣ - = -w - AsyncJsReڣ( -l -, -MAX_EMSESP_STATUS_SIZE -); - -63 -JsObje - - gro - = -ڣ --> -gRo -(); - -65 - gro -["us"] = -EMSESP -:: -bus_us -(); - -66 - gro -["rx_ived"] = -EMSESP -:: -rxrvi_ -. -gm_cou -(); - -67 - gro -["tx_"] = -EMSESP -:: -txrvi_ -. -gm_ad_cou -(+ EMSESP::txrvi_. -gm_wre_cou -(); - -68 - gro -["c_rs"] = -EMSESP -:: -rxrvi_ -. -gm_r_cou -(); - -69 - gro -["tx_rs"] = -EMSESP -:: -txrvi_ -. -gm__cou -(); - -71 - gڣ --> -tLgth -(); - -72 - gque --> -nd -( -ڣ -); - - @src/EMSESPStatusService.h - -19 #ide -EMSESPStusSvi_h - - -20  - #EMSESPStusSvi_h - - - ) - -22  - ~ - -23  - ~ - -24  - ~ - -25  - ~ - -26  - ~ - -28  - #MAX_EMSESP_STATUS_SIZE - 1024 - - ) - -29  - #EMSESP_STATUS_SERVICE_PATH - "//emStus" - - ) - -31 -mea - - gem - { - -33 as - cEMSESPStusSvi - { - -34 - gpublic -: - -35 -EMSESPStusSvi -( -AsyncWebSv - * -rv -, -SecuryMag - * -curyMag -); - -37 - give -: - -38  -emStusSvi -( -AsyncWebSvReque - * -que -); - -40 #ifde -ESP32 - - -41  -StiModeDisced -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -42  -StiModeGIP -( -WiFiEvt_t - -evt -, -WiFiEvtInfo_t - -fo -); - -43 #i -defed -( -ESP8266 -) - -44 -WiFiEvtHdr - - g_StiModeDiscedHdr -; - -45 -WiFiEvtHdr - - g_StiModeGIPHdr -; - -46  -StiModeDisced -(cڡ -WiFiEvtStiModeDisced - & -evt -); - -47  -StiModeGIP -(cڡ -WiFiEvtStiModeGIP - & -evt -); - - @src/console.cpp - -19  - ~"cse.h -" - -20  - ~"em.h -" - -21  - ~"vsi.h -" - -23 #i -defed -( -EMSESP_DEBUG -) - -24  - ~"/.h -" - -27 -mea - - gem - { - -29 - gd -:: -shed_r -< -Commds -> -EMSESPShl -:: -commds - = [] { - -30 -d -:: -shed_r -< -Commds -> -commds - = std:: -make_shed -(); - -31  - gcommds -; - -34  - gd -:: -shed_r -< -EMSESPShl -> -shl -; - -36 - gd -:: -ve -< -bo -> -EMSESPSmCse -:: -ys_ -; - -38 #ide -EMSESP_STANDALONE - - -39 - guuid -:: -ʑ -:: -TtSvi - -ʑ_ -([]( -Sm - & -am -, cڡ -IPAddss - & -addr -, -ut16_t - -pt --> -d -:: -shed_r -< -uuid -:: -cse -:: -Shl -> { - -40  -d -:: -make_shed -< -EMSESPSmCse ->( -am -, -addr -, -pt -); - -44 - gEMSESPShl -:: -EMSESPShl -() - -45 : -Shl -() { - -48  -EMSESPShl -:: -d -() { - -49 -logg -(). -log -( -LogLev -:: -INFO -, -LogFacy -:: -CONSOLE -, -F -("Ussi od ocsސ%s"), -cse_me -(). -c_r -()); - -52  - gEMSESPShl -:: -ݳd -() { - -53 i( -has_ags -( -CommdFgs -:: -ADMIN -)) { - -54 -logg -(). -log -( -LogLev -:: -INFO -, -LogFacy -:: -AUTH -, -F -("Adm sessi clod ocsސ%s"), -cse_me -(). -c_r -()); - -56 -logg -(). -log -( -LogLev -:: -INFO -, -LogFacy -:: -CONSOLE -, -F -("Ussi clod ocsސ%s"), -cse_me -(). -c_r -()); - -59 - gcommds --> -move_l_commds -(); - -61 - gcse_commds_lded_ - = -l -; - -66  - gEMSESPShl -:: -diy_br -() { - -67 -n -(); - -68 -tn -( -F -("┌──────────────────────────────────────────┐")); - -69 -tn -( -F -("│ %sEMS-ESP vsi %-10s% │"), -COLOR_BOLD_ON -, -EMSESP_APP_VERSION -, -COLOR_BOLD_OFF -); - -70 -tn -( -F -("│ %s%shps://ghub.com/oddy/EMS-ESP% │"), -COLOR_BRIGHT_GREEN -, -COLOR_UNDERLINE -, -COLOR_RESET -); - -71 -tn -( -F -("│ │")); - -72 -tn -( -F -("│y %shp%tshowvaab commd │"), -COLOR_UNDERLINE -, -COLOR_RESET -); - -73 -tn -( -F -("└──────────────────────────────────────────┘")); - -74 -n -(); - -77 - gEMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -ad -([&]( -WiFiStgs - & -wifiStgs -{ -cse_home_ - = wifiStgs. -home -. -c_r -(); }); - -79 i( - gcse_home_ -. -emy -()) { - -80 - gcse_home_ -. -size -(16, '\0'); - -81 #i -defed -( -ESP8266 -) - -82 -tf_P -(& -cse_home_ -[0], cse_home_. -cy -(+ 1, -PSTR -("esp8266")); - -84 -tf_P -(& -cse_home_ -[0], cse_home_. -cy -(+ 1, -PSTR -("esp32")); - -89 -add_cse_commds -(); - -92 - gem -:: -EMSESP -:: -wch_id -( -WATCH_ID_NONE -); - -93 #i -defed -( -EMSESP_STANDALONE -) - -94 - gem -:: -EMSESP -:: -wch -(EMSESP:: -WATCH_ON -); - -96 - gem -:: -EMSESP -:: -wch -(EMSESP:: -WATCH_OFF -); - -102  - gEMSESPShl -:: -add_cse_commds -() { - -105 i( -cse_commds_lded_ -) { - -111 - gcommds --> -move_l_commds -(); - -113 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -114 -CommdFgs -:: -USER -, - -115 -ash_rg_ve -{ -F_ -( -tch -)}, - -116 [&]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -117 -shl -. -tn -( -F -("Requesting data from EMS devices")); - -118 -EMSESP -:: -tch_devi_vues -(); - -121 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -122 -CommdFgs -:: -USER -, - -123 -ash_rg_ve -{ -F_ -( -show -)}, - -124 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -125 -shl -. -tn -( -F -("%s%sEMS-ESP vsi %s%s"), -COLOR_BRIGHT_GREEN -, -COLOR_BOLD_ON -, -EMSESP_APP_VERSION -, -COLOR_RESET -); - -126 -shl -. -n -(); - -127 -EMSESP -:: -show_devi_vues -( -shl -); - -128 -EMSESP -:: -show_ns_vues -( -shl -); - -131 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -132 -CommdFgs -:: -USER -, - -133 -ash_rg_ve -{ -F_ -( -show -), F_( -devis -)}, - -134 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -)){ -EMSESP -:: -show_devis -(shell); }); - -137 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -138 -CommdFgs -:: -USER -, - -139 -ash_rg_ve -{ -F_ -( -show -), F_( -ems -)}, - -140 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -)){ -EMSESP -:: -show_ems -(shell); }); - -142 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -143 -CommdFgs -:: -USER -, - -144 -ash_rg_ve -{ -F_ -( -show -), F_( -vues -)}, - -145 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -)){ -EMSESP -:: -show_devi_vues -(shell); }); - -147 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -148 -CommdFgs -:: -USER -, - -149 -ash_rg_ve -{ -F_ -( -show -), F_( -mq -)}, - -150 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -)){ -Mq -:: -show_mq -(shell); }); - -152 - gcommds --> -add_commd -( - -153 -ShlCڋxt -:: -MAIN -, - -154 -CommdFgs -:: -ADMIN -, - -155 -ash_rg_ve -{ -F_ -( -t -), F_( -bus_id -)}, - -156 -ash_rg_ve -{ -F_ -( -deviid_mdy -)}, - -157 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -158 -ut8_t - -devi_id - = -Hrs -:: -hextot -( -gumts -. -t -(). -c_r -()); - -159 i(( -devi_id - == 0x0B) || (device_id == 0x0D) || (device_id == 0x0A) || (device_id == 0x0F) || (device_id == 0x12)) { - -160 -EMSESP -:: -emStgsSvi -. -upde -( - -161 [&]( -EMSESPStgs - & -gs -) { - -162 -gs -. -ems_bus_id - = -devi_id -; - -163 -shl -. -tn -( -F_ -( -bus_id_fmt -), -gs -. -ems_bus_id -); - -164  -SUpdeResu -:: -CHANGED -; - -168 -shl -. -n -( -F -("Must be 0B, 0D, 0A, 0F or 12")); - -171 []( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts - __attribute__((unused))) -> const std::vector { - -172  -d -:: -ve -{ - -173 -ad_ash_rg -( -F -("0B")), - -174 -ad_ash_rg -( -F -("0D")), - -175 -ad_ash_rg -( -F -("0A")), - -176 -ad_ash_rg -( -F -("0F")), - -177 -ad_ash_rg -( -F -("12")), - -182 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -183 -CommdFgs -:: -ADMIN -, - -184 -ash_rg_ve -{ -F_ -( -t -), F_( -tx_mode -)}, - -185 -ash_rg_ve -{ -F_ -( -n_mdy -)}, - -186 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -187 -ut8_t - -tx_mode - = -d -:: - -( -gumts -[0]. -c_r -(), -nuαr -, 10); - -189 -EMSESP -:: -emStgsSvi -. -upde -( - -190 [&]( -EMSESPStgs - & -gs -) { - -191 -gs -. -tx_mode - =x_mode; - -192 -shl -. -tn -( -F_ -( -tx_mode_fmt -), -gs -. -tx_mode -); - -193  -SUpdeResu -:: -CHANGED -; - -198 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -199 -CommdFgs -:: -ADMIN -, - -200 -ash_rg_ve -{ -F_ -( -sn -), F_( -devis -)}, - -201 -ash_rg_ve -{ -F_ -( -dp_tiڮ -)}, - -202 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -203 i( -gumts -. -size -() == 0) { - -204 -EMSESP -:: -sn_devis -(); - -206 -shl -. -tn -( -F -("Performing deep scan...")); - -207 -EMSESP -:: -r_l_devis -(); - -208 -d -:: -ve -< -ut8_t -> -Devi_Ids -; - -210 -Devi_Ids -. -push_back -(0x08); - -211 -Devi_Ids -. -push_back -(0x38); - -212 -Devi_Ids -. -push_back -(0x30); - -213 -Devi_Ids -. -push_back -(0x09); - -214 -Devi_Ids -. -push_back -(0x02); - -215 -Devi_Ids -. -push_back -(0x48); - -216 -Devi_Ids -. -push_back -(0x20); - -217 -Devi_Ids -. -push_back -(0x21); - -218 -Devi_Ids -. -push_back -(0x22); - -219 -Devi_Ids -. -push_back -(0x23); - -220 -Devi_Ids -. -push_back -(0x28); - -221 -Devi_Ids -. -push_back -(0x29); - -222 -Devi_Ids -. -push_back -(0x10); - -223 -Devi_Ids -. -push_back -(0x17); - -224 -Devi_Ids -. -push_back -(0x18); - -225 -Devi_Ids -. -push_back -(0x19); - -226 -Devi_Ids -. -push_back -(0x1A); - -227 -Devi_Ids -. -push_back -(0x1B); - -228 -Devi_Ids -. -push_back -(0x11); - -231 cڡ -ut8_t - -devi_id - : -Devi_Ids -) { - -232 -EMSESP -:: -nd_ad_que -( -EMSdevi -:: -EMS_TYPE_VERSION -, -devi_id -); - -237 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -238 -CommdFgs -:: -USER -, - -239 -ash_rg_ve -{ -F_ -( -t -)}, - -240 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -241 -EMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -242 -shl -. -tn -( -F_ -( -tx_mode_fmt -), -gs -. -tx_mode -); - -243 -shl -. -tn -( -F_ -( -bus_id_fmt -), -gs -. -ems_bus_id -); - -247 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -248 -CommdFgs -:: -ADMIN -, - -249 -ash_rg_ve -{ -F_ -( -ad -)}, - -250 -ash_rg_ve -{ -F_ -( -deviid_mdy -), F_( -tyid_mdy -)}, - -251 [=]( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts -) { - -252 -ut8_t - -devi_id - = -Hrs -:: -hextot -( -gumts -. -t -(). -c_r -()); - -253 -ut16_t - -ty_id - = -Hrs -:: -hextot -( -gumts -. -back -(). -c_r -()); - -254 -EMSESP -:: -t_ad_id -( -ty_id -); - -255 -EMSESP -:: -nd_ad_que -( -ty_id -, -devi_id -); - -263 - gcommds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -264 -CommdFgs -:: -USER -, - -265 -ash_rg_ve -{ -F_ -( -syem -)}, - -266 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -267 -Syem -:: -cse_commds -( -shl -, -ShlCڋxt -:: -SYSTEM -); - -272 - gEMSESP -:: -add_cڋxt_mus -(); - -274 - gCse -:: -ld_dd_commds -( -ShlCڋxt -:: -MAIN -); - -276 - gcse_commds_lded_ - = -ue -; - -279 - gd -:: -rg - -EMSESPShl -:: -home_xt -() { - -280  -cse_home_ -; - -284 -bo - - gEMSESPShl -:: -ex_cڋxt -() { - -285  -cut_cڋxt - = -cڋxt -(); - -286 - gcommds --> -move_cڋxt_commds -( -cut_cڋxt -); - -288 i( - gcut_cڋxt - = -ShlCڋxt -:: -MAIN -) { - -289 -Shl -:: - -(); - -290  - gue -; - -292  - gShl -:: -ex_cڋxt -(); - -296  - gCse -:: -r_cuom_cڋxt -( -Shl - & -shl -,  -cڋxt -) { - -297 -ld_dd_commds -( -cڋxt -); - -300 i( - gcڋxt - ! -ShlCڋxt -:: -MAIN -) { - -301 -shl -. -r_cڋxt -( -cڋxt -); - -306  - gCse -:: -ld_dd_commds -( -cڋxt -) { - -307 #i -defed -( -EMSESP_DEBUG -) - -308 -EMSESPShl -:: -commds --> -add_commd -( -cڋxt -, - -309 -CommdFgs -:: -USER -, - -310 -ash_rg_ve -{ -F_ -( - -)}, - -311 -ash_rg_ve -{ -F_ -( -me_tiڮ -)}, - -312 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -313 i( -gumts -. -size -() == 0) { - -314 -Te -:: -run_ -( -shl -, "default"); - -316 -Te -:: -run_ -( -shl -, -gumts -. -t -()); - -321 - gEMSESPShl -:: -commds --> -add_commd -( - -322 -cڋxt -, - -323 -CommdFgs -:: -USER -, - -324 -ash_rg_ve -{ -F_ -( -log -)}, - -325 -ash_rg_ve -{ -F_ -( -log_v_tiڮ -)}, - -326 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -327 i(! -gumts -. -emy -()) { - -328 -uuid -:: -log -:: -Lev - -v -; - -329 i( -uuid -:: -log -:: -r_v_low -( -gumts -[0], -v -)) { - -330 -shl -. -log_v -( -v -); - -332 -shl -. -tn -( -F_ -( -vid_log_v -)); - -336 -shl -. -t -( -F -("levels: ")); - -337 -d -:: -ve - -v - = -uuid -:: -log -:: -vs_low -(); - -338 -size_t - -i - = -v -. -size -(); - -339  -i ---) { - -340 -shl -. -tf -( -v -[ -i -]. -c_r -()); - -341 -shl -. -t -(' '); - -343 -shl -. -n -(); - -345 -shl -. -tn -( -F_ -( -log_v_fmt -), -uuid -:: -log -:: -fm_v_low -(shl. -log_v -())); - -347 []( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts - __attribute__((unused))) -> std::vector { - -348  -uuid -:: -log -:: -vs_low -(); - -351 - gEMSESPShl -:: -commds --> -add_commd -( -cڋxt -, - -352 -CommdFgs -:: -USER -, - -353 -ash_rg_ve -{ -F_ -( -hp -)}, - -354 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -355 -shl -. -t_l_avaab_commds -(); - -358 - gEMSESPShl -:: -commds --> -add_commd -( -cڋxt -, - -359 -CommdFgs -:: -USER -, - -360 -ash_rg_ve -{ -F_ -( -ex -)}, - -361 [=]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -363 -EMSESPShl -:: -commds --> -move_cڋxt_commds -( -cڋxt -); - -364 -shl -. -ex_cڋxt -(); - -367 - gEMSESPShl -:: -commds --> -add_commd -( -cڋxt -, - -368 -CommdFgs -:: -USER -, - -369 -ash_rg_ve -{ -F_ -( -su -)}, - -370 [=]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -371 aut -become_adm - = []( -Shl - & -shl -) { - -372 -shl -. -logg -(). -log -( -LogLev -:: -NOTICE -, -LogFacy -:: -AUTH -, -F -("Admin session opened on console")); - -373 -shl -. -add_ags -( -CommdFgs -:: -ADMIN -); - -376 i( -shl -. -has_ags -( -CommdFgs -:: -LOCAL -)) { - -377 -become_adm -( -shl -); - -379 -shl -. -r_sswd -( -F_ -( -sswd_om -), [=]( -Shl - & shl, -bo - -comed -, cڡ -d -:: -rg - & -sswd -) { - -380 i( -comed -) { - -381 -ut64_t - -now - = -uuid -:: -g_uime_ms -(); - -383 -EMSESP -:: -e8266R -. -gSecuryStgsSvi -()-> -ad -([&]( -SecuryStgs - & -curyStgs -) { - -384 i( -curyStgs -. -jwtSe -. -equs -( -sswd -. -c_r -())) { - -385 -become_adm -( -shl -); - -387 -shl -. -day_u -( -now - + -INVALID_PASSWORD_DELAY_MS -, []( -Shl - & shell) { - -388 -shl -. -logg -(). -log -( -LogLev -:: -NOTICE -, -LogFacy -:: -AUTH -, -F -("Invaliddminassword on console")); - -389 -shl -. -n -( -F -("su: incorrectassword")); - -398 - gEMSESPShl -:: -commds --> -add_commd -( -cڋxt -, - -399 -CommdFgs -:: -ADMIN -, - -400 -ash_rg_ve -{ -F_ -( -nd -), F_( -gm -)}, - -401 -ash_rg_ve -{ -F_ -( -da_mdy -)}, - -402 []( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts -) { - -403 -EMSESP -:: -nd_w_gm -( -gumts -. -t -(). -c_r -()); - -406 - gEMSESPShl -:: -commds --> -add_commd -( -cڋxt -, - -407 -CommdFgs -:: -USER -, - -408 -ash_rg_ve -{ -F_ -( -wch -)}, - -409 -ash_rg_ve -{ -F_ -( -wch_fm_tiڮ -), F_( -wchid_tiڮ -)}, - -410 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -411 -ut16_t - -wch_id - = -WATCH_ID_NONE -; - -413 i(! -gumts -. -emy -()) { - -415 i( -gumts -[0] = -ad_ash_rg -( -F_ -( -w -))) { - -416 -em -:: -EMSESP -:: -wch -(EMSESP:: -WATCH_RAW -); - -417 } i( -gumts -[0] = -ad_ash_rg -( -F_ -( - -))) { - -418 -em -:: -EMSESP -:: -wch -(EMSESP:: -WATCH_ON -); - -419 } i( -gumts -[0] = -ad_ash_rg -( -F_ -( -off -))) { - -420 -em -:: -EMSESP -:: -wch -(EMSESP:: -WATCH_OFF -); - -421 } i( -em -:: -EMSESP -:: -wch -(=EMSESP:: -WATCH_OFF -) { - -422 -shl -. -tn -( -F_ -( -vid_wch -)); - -425 -wch_id - = -Hrs -:: -hextot -( -gumts -[0]. -c_r -()); - -428 i( -gumts -. -size -() == 2) { - -430 -wch_id - = -Hrs -:: -hextot -( -gumts -[1]. -c_r -()); - -433 -em -:: -EMSESP -:: -wch_id -(watch_id); - -436 -ut8_t - -wch - = -em -:: -EMSESP -::watch(); - -437 i( -wch - = -EMSESP -:: -WATCH_OFF -) { - -438 -shl -. -tn -( -F -("Watchingelegrams is off")); - -443 i(! -shl -. -logg -(). -abd -( -Lev -:: -NOTICE -)) { - -444 -shl -. -log_v -( -Lev -:: -NOTICE -); - -447 i( -wch - = -EMSESP -:: -WATCH_ON -) { - -448 -shl -. -tn -( -F -("Watching incomingelegrams, displayed in decoded format")); - -450 -shl -. -tn -( -F -("Watching incomingelegrams, displayedsaw bytes")); - -453 -wch_id - = -em -:: -EMSESP -::watch_id(); - -454 i( -wch_id - > 0x80) { - -455 -shl -. -tn -( -F -("Frg oyegmth mchegmy o0x%02X"), -wch_id -); - -456 } i( -wch_id - ! -WATCH_ID_NONE -) { - -457 -shl -. -tn -( -F -("Frg oyegmth mch devi ID ogmy o0x%02X"), -wch_id -); - -463 - gd -:: -rg - -EMSESPShl -:: -cڋxt_xt -() { - -464  -ic_ -< -ShlCڋxt ->( -cڋxt -())) { - -465  -ShlCڋxt -:: -MAIN -: - -466  -d -:: -rg -{'/'}; - -468  - gShlCڋxt -:: -BOILER -: - -469  -d -:: -rg -{"/boiler"}; - -471  - gShlCڋxt -:: -SYSTEM -: - -472  -d -:: -rg -{"/system"}; - -474  - gShlCڋxt -:: -THERMOSTAT -: - -475  -d -:: -rg -{"/thermostat"}; - -478  -d -:: -rg -{}; - -483 - gd -:: -rg - -EMSESPShl -:: -om_suffix -() { - -484 i( -has_ags -( -CommdFgs -:: -ADMIN -)) { - -485  -d -:: -rg -{'#'}; - -487  - gd -:: -rg -{'$'}; - -491  - gEMSESPShl -:: -d_of_smissi -() { - -492 -voke_commd -( -uuid -:: -ad_ash_rg -( -F_ -( -ex -))); - -495 - gEMSESPSmCse -:: -EMSESPSmCse -( -Sm - & -am -, -bo - -lol -) - -496 : -uuid -:: -cse -:: -Shl -( -commds -, -ShlCڋxt -:: -MAIN -, -lol - ? ( -CommdFgs -:: -USER - | CommdFgs:: -LOCAL -) : CommandFlags::USER) - -497 , - guuid -:: -cse -:: -SmCse -( -am -) - -498 , -EMSESPShl -() - -499 , -me_ -( -uuid -:: -ad_ash_rg -( -F -("Serial"))) - -500 , -y_ -( -d -:: -numic_lims -< -size_t ->:: -max -()) - -501 , -addr_ -() - -502 , -pt_ -(0) { - -505 - gEMSESPSmCse -:: -EMSESPSmCse -( -Sm - & -am -, cڡ -IPAddss - & -addr -, -ut16_t - -pt -) - -506 : -uuid -:: -cse -:: -Shl -( -commds -, -ShlCڋxt -:: -MAIN -, -CommdFgs -:: -USER -) - -507 , - guuid -:: -cse -:: -SmCse -( -am -) - -508 , -EMSESPShl -() - -509 , -addr_ -( -addr -) - -510 , -pt_ -( -pt -) { - -511 - gd -:: -ve -<> -xt -(16); - -513 - gy_ - = 0; - -514  - gy_ - < - gys_ -. -size -(&&tys_[ -y_ -]) - -515 - gy_ -++; - -516 i( - gy_ - = -ys_ -. -size -()) { - -517 -ys_ -. -push_back -( -ue -); - -519 - gys_ -[ -y_ -] = -ue -; - -522 -tf_P -( -xt -. -da -(),ext. -size -(), -PSTR -("y%u"), -y_ -); - -523 - gme_ - = -xt -. -da -(); - -524 #ide -EMSESP_STANDALONE - - -525 -logg -(). -fo -( -F -("Aod csސ%f ci from [%s]:%u"), -me_ -. -c_r -(), -uuid -:: -b_to_rg -( -addr_ -).c_r(), -pt_ -); - -529 - gEMSESPSmCse -::~ -EMSESPSmCse -() { - -530 i( -y_ - ! -SIZE_MAX -) { - -531 #ide -EMSESP_STANDALONE - - -532 -logg -(). -fo -( -F -("Shutdowcsސ%f ci from [%s]:%u"), -me_ -. -c_r -(), -uuid -:: -b_to_rg -( -addr_ -).c_r(), -pt_ -); - -534 - gys_ -[ -y_ -] = -l -; - -535 - gys_ -. -shrk_to_f -(); - -537 - gEMSESPShl -:: -commds --> -move_l_commds -(); - -541 - gd -:: -rg - -EMSESPSmCse -:: -cse_me -() { - -542  -me_ -; - -547  - gCse -:: -t -() { - -550 #i -defed -( -ESP32 -|| defed( -EMSESP_STANDALONE -|| defed( -EMSESP_FORCE_SERIAL -) - -551 -rl_cse_ -. -beg -( -SERIAL_CONSOLE_BAUD_RATE -); - -552 - grl_cse_ -. -n -(); - -554 - gshl - = -d -:: -make_shed -< -EMSESPSmCse ->( -rl_cse_ -, - gue -); - -555 - gshl --> -maximum_log_mesges -(100); - -556 - gshl --> -t -(); - -559 #ide -ESP8266 - - -560 #i -defed -( -EMSESP_DEBUG -) - -561 - gshl --> -log_v -( -uuid -:: -log -:: -Lev -:: -DEBUG -); - -565 #i -defed -( -EMSESP_FORCE_SERIAL -) - -566 - gshl --> -log_v -( -uuid -:: -log -:: -Lev -:: -DEBUG -); - -570 #i -defed -( -EMSESP_STANDALONE -) - -572 - gshl --> -add_ags -( -CommdFgs -:: -ADMIN -); - -578 #ide -EMSESP_STANDALONE - - -579 - gʑ_ -. -t -(); - -580 - gʑ_ -. -deu_wre_timeout -(1000); - -588  - gCse -:: -lo -() { - -589 -uuid -:: -lo -(); - -591 #ide -EMSESP_STANDALONE - - -592 - gʑ_ -. -lo -(); - -595 #i -defed -( -ESP8266 -) - -596 i(! - gEMSut -:: -ndg -()) { - -597 -Shl -:: -lo_l -(); - -600 - gShl -:: -lo_l -(); - - @src/console.h - -19 #ide -EMSESP_CONSOLE_H - - -20  - #EMSESP_CONSOLE_H - - - ) - -22  - ~ - -24  - ~ - -25  - ~ - -27  - ~ - -28  - ~ - -30  - ~"hrs.h -" - -31  - ~"syem.h -" - -32  - ~"mq.h -" - -34 -usg - - guuid -:: -ash_rg_ve -; - -35 -usg - - guuid -:: -ad_ash_rg -; - -36 -usg - - guuid -:: -cse -:: -Commds -; - -37 -usg - - guuid -:: -cse -:: -Shl -; - -38 -usg - - guuid -:: -log -:: -Lev -; - -40  - #LOG_DEBUG -(... -logg_ -. - `debug -( -__VA_ARGS__ -) - - ) - -41  - #LOG_INFO -(... -logg_ -. - `fo -( -__VA_ARGS__ -) - - ) - -42  - #LOG_TRACE -(... -logg_ -. - `a -( -__VA_ARGS__ -) - - ) - -43  - #LOG_NOTICE -(... -logg_ -. - `ni -( -__VA_ARGS__ -) - - ) - -44  - #LOG_WARNING -(... -logg_ -. - `wng -( -__VA_ARGS__ -) - - ) - -45  - #LOG_ERROR -(... -logg_ -. - `r -( -__VA_ARGS__ -) - - ) - -48  - #MAKE_PSTR -( -rg_me -, -rg_l -cڡ  -__pr__ -##rg_me[] - `__ibu__ -(( - `__igd__ -(())) -PROGMEM - = sg_l; - - ) - -49  - #MAKE_PSTR_WORD -( -rg_me - - `MAKE_PSTR -(rg_me, #rg_me) - - ) - -50  - #F_ -( -rg_me - - `FPSTR -( -__pr__ -##rg_me) - - ) - -54  - ~"lo_EN.h -" - -56 #ifde -LOCAL - - -57 #unde -LOCAL - - -60  -cڡex - -ut32_t - - gINVALID_PASSWORD_DELAY_MS - = 3000; - -62 -mea - - gem - { - -64 -usg - - gLogLev - = :: -uuid -:: -log -:: -Lev -; - -65 -usg - - gLogFacy - = :: -uuid -:: -log -:: -Facy -; - -67 - gCommdFgs - : -ut8_t - { - -69 -USER - = 0, - -70 - gADMIN - = (1 << 0), - -71 - gLOCAL - = (1 << 1) - -75 - gShlCڋxt - : -ut8_t - { - -77 -MAIN - = 0, - -78 - gSYSTEM -, - -79 - gBOILER -, - -80 - gTHERMOSTAT -, - -81 - gSOLAR -, - -82 - gMIXING - - -86 as - cEMSESPShl - : -vtu - -public - -uuid -:: -cse -:: -Shl - { - -87 -public -: - -88 ~ -EMSESPShl -( -ovride - = ; - -90 -vtu - - gd -:: -rg - -cse_me -() = 0; - -92  - gd -:: -shed_r -< -uuid -:: -cse -:: -Commds -> -commds -; - -93  - gd -:: -shed_r -< -EMSESPShl -> -shl -; - -95 - geed -: - -96 -EMSESPShl -(); - -99  -d -( - govride -; - -100  -ݳd -( - govride -; - -101  -diy_br -( - govride -; - -102 - gd -:: -rg - -home_xt -( -ovride -; - -103 - gd -:: -rg - -cڋxt_xt -( -ovride -; - -104 - gd -:: -rg - -om_suffix -( -ovride -; - -105  -d_of_smissi -( - govride -; - -106 -bo - -ex_cڋxt -( - govride -; - -108 - give -: - -109  -add_cse_commds -(); - -110 -bo - - gcse_commds_lded_ - = -l -; - -111 - gd -:: -rg - -cse_home_ -; - -114 -ass - - gEMSESPSmCse - : -public - -uuid -:: -cse -:: -SmCse -,ubli - gEMSESPShl - { - -115 - gpublic -: - -116 -EMSESPSmCse -( -Sm - & -am -, -bo - -lol -); - -117 -EMSESPSmCse -( -Sm - & -am -, cڡ -IPAddss - & -addr -, -ut16_t - -pt -); - -118 ~ -EMSESPSmCse -( - govride -; - -120 - gd -:: -rg - -cse_me -( -ovride -; - -122 - give -: - -123  -d -:: -ve -< -bo -> -ys_ -; - -125 - gd -:: -rg - -me_ -; - -126 -size_t - - gy_ -; - -127 -IPAddss - - gaddr_ -; - -128 -ut16_t - - gpt_ -; - -131 as - cCse - { - -132 - gpublic -: - -133  -lo -(); - -134  -t -(); - -136 - guuid -:: -log -:: -Lev - -log_v -(); - -138  -r_cuom_cڋxt -( -Shl - & -shl -,  -cڋxt -); - -139  -ld_dd_commds -( -cڋxt -); - -141 - give -: - -142  -cڡex -  -SERIAL_CONSOLE_BAUD_RATE - = 115200; - -143  -cڡex -ut& - grl_cse_ - = -Sl -; - - @src/device_library.h - -27 { 64, - gDeviTy -:: -BOILER -, -F -("BK13/BK15/Sme/GB1x2"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -28 { 72, - gDeviTy -:: -BOILER -, -F -("GB125/MC10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -29 { 84, - gDeviTy -:: -BOILER -, -F -("Logamax PluGB022"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -30 { 95, - gDeviTy -:: -BOILER -, -F -("Cd2500/Logamax/Logomic/CuT/G/GiHT3"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -31 {115, - gDeviTy -:: -BOILER -, -F -("Tle/GB162"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -32 {122, - gDeviTy -:: -BOILER -, -F -("Prޚe"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -33 {123, - gDeviTy -:: -BOILER -, -F -("GBx72/Tndle/Cur/G Si/27i"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -34 {131, - gDeviTy -:: -BOILER -, -F -("GB212"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -35 {133, - gDeviTy -:: -BOILER -, -F -("GB125/LogamiMC110"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -36 {170, - gDeviTy -:: -BOILER -, -F -("LogGB212"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -37 {172, - gDeviTy -:: -BOILER -, -F -("Enve/Comes6000AW"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -38 {195, - gDeviTy -:: -BOILER -, -F -("Cd5000i"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -39 {203, - gDeviTy -:: -BOILER -, -F -("Logamax U122/Cur"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -40 {208, - gDeviTy -:: -BOILER -, -F -("Logamax Plus/GB192/CdGC9000"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -41 {234, - gDeviTy -:: -BOILER -, -F -("Logamax PluGB122"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -44 { 68, - gDeviTy -:: -CONTROLLER -, -F -("BC10/RFM20"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -45 { 89, - gDeviTy -:: -CONTROLLER -, -F -("BC10 GB142"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -46 { 95, - gDeviTy -:: -CONTROLLER -, -F -("HT3"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -47 {114, - gDeviTy -:: -CONTROLLER -, -F -("BC10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -48 {125, - gDeviTy -:: -CONTROLLER -, -F -("BC25"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -49 {152, - gDeviTy -:: -CONTROLLER -, -F -("Cڌr"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -50 {169, - gDeviTy -:: -CONTROLLER -, -F -("BC40"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -51 {190, - gDeviTy -:: -CONTROLLER -, -F -("BC10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -52 {194, - gDeviTy -:: -CONTROLLER -, -F -("BC10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -53 {207, - gDeviTy -:: -CONTROLLER -, -F -("S II/CS200"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -54 {209, - gDeviTy -:: -CONTROLLER -, -F -("ErP"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -55 {218, - gDeviTy -:: -CONTROLLER -, -F -("M200/RFM200"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -56 {224, - gDeviTy -:: -CONTROLLER -, -F -("9000i"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -57 {230, - gDeviTy -:: -CONTROLLER -, -F -("BC Ba"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -58 {241, - gDeviTy -:: -CONTROLLER -, -F -("Cd5000i"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -61 {202, - gDeviTy -:: -THERMOSTAT -, -F -("LogamiTC100/ModulEasy"), - gDeviFgs -:: -EMS_DEVICE_FLAG_EASY - | -DeviFgs -:: -EMS_DEVICE_FLAG_NO_WRITE -}, - -62 {203, - gDeviTy -:: -THERMOSTAT -, -F -("EasyCڌ CT200"), - gDeviFgs -:: -EMS_DEVICE_FLAG_EASY - | -DeviFgs -:: -EMS_DEVICE_FLAG_NO_WRITE -}, - -65 { 67, - gDeviTy -:: -THERMOSTAT -, -F -("RC30"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC30_1 -}, - -66 { 77, - gDeviTy -:: -THERMOSTAT -, -F -("RC20/Modul300"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC20 -}, - -67 { 78, - gDeviTy -:: -THERMOSTAT -, -F -("Modul400"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC30 -}, - -68 { 79, - gDeviTy -:: -THERMOSTAT -, -F -("RC10/Modul100"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC10 -}, - -69 { 80, - gDeviTy -:: -THERMOSTAT -, -F -("Modul200"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC10 -}, - -70 { 86, - gDeviTy -:: -THERMOSTAT -, -F -("RC35"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC35 -}, - -71 { 93, - gDeviTy -:: -THERMOSTAT -, -F -("RC20RF"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC20 -}, - -72 { 94, - gDeviTy -:: -THERMOSTAT -, -F -("RFM20 Reme"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -73 {157, - gDeviTy -:: -THERMOSTAT -, -F -("RC200/CW100"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC100 -}, - -74 {158, - gDeviTy -:: -THERMOSTAT -, -F -("RC300/RC310/Modul3000/CW400/S II"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC300 -}, - -75 {165, - gDeviTy -:: -THERMOSTAT -, -F -("RC100/Modul1000/1010"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC100 -}, - -78 { 76, - gDeviTy -:: -THERMOSTAT -, -F -("ES73"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC35 -}, - -79 {113, - gDeviTy -:: -THERMOSTAT -, -F -("ES72/RC20"), - gDeviFgs -:: -EMS_DEVICE_FLAG_RC20_2 -}, - -82 {105, - gDeviTy -:: -THERMOSTAT -, -F -("FW100"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS -}, - -83 {106, - gDeviTy -:: -THERMOSTAT -, -F -("FW200"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS -}, - -84 {107, - gDeviTy -:: -THERMOSTAT -, -F -("FR100"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS - | -DeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS_2 -}, - -85 {108, - gDeviTy -:: -THERMOSTAT -, -F -("FR110"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS - | -DeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS_2 -}, - -86 {111, - gDeviTy -:: -THERMOSTAT -, -F -("FR10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS -}, - -87 {147, - gDeviTy -:: -THERMOSTAT -, -F -("FR50"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS -}, - -88 {191, - gDeviTy -:: -THERMOSTAT -, -F -("FR120"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS -}, - -89 {192, - gDeviTy -:: -THERMOSTAT -, -F -("FW120"), - gDeviFgs -:: -EMS_DEVICE_FLAG_JUNKERS -}, - -92 { 73, - gDeviTy -:: -SOLAR -, -F -("SM10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_SM10 -}, - -93 {101, - gDeviTy -:: -SOLAR -, -F -("ISM1"), - gDeviFgs -:: -EMS_DEVICE_FLAG_ISM -}, - -94 {162, - gDeviTy -:: -SOLAR -, -F -("SM50"), - gDeviFgs -:: -EMS_DEVICE_FLAG_SM100 -}, - -95 {163, - gDeviTy -:: -SOLAR -, -F -("SM100/MS100"), - gDeviFgs -:: -EMS_DEVICE_FLAG_SM100 -}, - -96 {164, - gDeviTy -:: -SOLAR -, -F -("SM200/MS200"), - gDeviFgs -:: -EMS_DEVICE_FLAG_SM100 -}, - -99 { 69, - gDeviTy -:: -MIXING -, -F -("MM10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_MM10 -}, - -100 {102, - gDeviTy -:: -MIXING -, -F -("IPM"), - gDeviFgs -:: -EMS_DEVICE_FLAG_IPM -}, - -101 {159, - gDeviTy -:: -MIXING -, -F -("MM50"), - gDeviFgs -:: -EMS_DEVICE_FLAG_MMPLUS -}, - -102 {160, - gDeviTy -:: -MIXING -, -F -("MM100"), - gDeviFgs -:: -EMS_DEVICE_FLAG_MMPLUS -}, - -103 {161, - gDeviTy -:: -MIXING -, -F -("MM200"), - gDeviFgs -:: -EMS_DEVICE_FLAG_MMPLUS -}, - -106 {200, - gDeviTy -:: -HEATPUMP -, -F -("HP Modu"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -107 {252, - gDeviTy -:: -HEATPUMP -, -F -("HP Modu"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -110 {171, - gDeviTy -:: -CONNECT -, -F -("OnThm Cvr"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -111 {205, - gDeviTy -:: -CONNECT -, -F -("ModulEasy C"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -112 {206, - gDeviTy -:: -CONNECT -, -F -("Easy C"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -115 { 71, - gDeviTy -:: -SWITCH -, -F -("WM10"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -}, - -118 {189, - gDeviTy -:: -GATEWAY -, -F -("KM200/MB LAN 2"), - gDeviFgs -:: -EMS_DEVICE_FLAG_NONE -} - - @src/devices/boiler.cpp - -19  - ~"bo.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Bo -, -EMSdevi -:: -DeviTy -:: -BOILER -) - -25 -uuid -:: -log -:: -Logg - -Bo -:: -logg_ -{ -F_ -( -bo -), - guuid -::log:: -Facy -:: -CONSOLE -}; - -27 - gBo -:: -Bo -( -ut8_t - -devi_ty -, -t8_t - -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -29 - gthis --> -rve_mem -(20); - -31 -LOG_DEBUG -( -F -("Addgew Bo wh devi ID 0x%02X"), -devi_id -); - -34 -gi_gm_ty -(0x10, -F -("UBAEMesge1"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAEMesge -(t); }); - -35 -gi_gm_ty -(0x11, -F -("UBAEMesge2"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAEMesge -(t); }); - -36 -gi_gm_ty -(0x18, -F -("UBAMڙFa"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAMڙFa -(t); }); - -37 -gi_gm_ty -(0x19, -F -("UBAMڙSlow"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_UBAMڙSlow -(t); }); - -38 -gi_gm_ty -(0x34, -F -("UBAMڙWW"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAMڙWW -(t); }); - -39 -gi_gm_ty -(0x1C, -F -("UBAManStus"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAManStus -(t); }); - -40 -gi_gm_ty -(0x2A, -F -("MC10Stus"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_MC10Stus -(t); }); - -41 -gi_gm_ty -(0x33, -F -("UBAPamWW"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_UBAPamWW -(t); }); - -42 -gi_gm_ty -(0x14, -F -("UBATٮUime"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_UBATٮUime -(t); }); - -43 -gi_gm_ty -(0x35, -F -("UBAFgs"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAFgs -(t); }); - -44 -gi_gm_ty -(0x15, -F -("UBAManDa"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAManDa -(t); }); - -45 -gi_gm_ty -(0x16, -F -("UBAPams"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_UBAPams -(t); }); - -46 -gi_gm_ty -(0x1A, -F -("UBASPots"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBASPots -(t); }); - -47 -gi_gm_ty -(0xD1, -F -("UBAOutdoTemp"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAOutdoTemp -(t); }); - -48 -gi_gm_ty -(0xE3, -F -("UBAMڙSlowPlus"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAMڙSlowPlus2 -(t); }); - -49 -gi_gm_ty -(0xE4, -F -("UBAMڙFaPlus"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAMڙFaPlus -(t); }); - -50 -gi_gm_ty -(0xE5, -F -("UBAMڙSlowPlus"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBAMڙSlowPlus -(t); }); - -51 -gi_gm_ty -(0xE9, -F -("UBADHWStus"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_UBADHWStus -(t); }); - -54 -gi_mq_cmd -( -F -("comft"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_wmw_mode -(value, id); }); - -55 -gi_mq_cmd -( -F -("wwaived"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_wmw_aived -(value, id); }); - -56 -gi_mq_cmd -( -F -("wwived"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_pwmw_aived -(value, id); }); - -57 -gi_mq_cmd -( -F -("wwڑime"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_wmw_ڑime -(value, id); }); - -58 -gi_mq_cmd -( -F -("wwccuti"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_wmw_ccuti -(value, id); }); - -59 -gi_mq_cmd -( -F -("owmp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_ow_mp -(value, id); }); - -60 -gi_mq_cmd -( -F -("wwmp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_wmw_mp -(value, id); }); - -61 -gi_mq_cmd -( -F -("bumaxpow"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_max_pow -(value, id); }); - -62 -gi_mq_cmd -( -F -("bumpow"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_m_pow -(value, id); }); - -63 -gi_mq_cmd -( -F -("bohy"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_hy_ -(value, id); }); - -64 -gi_mq_cmd -( -F -("bohyoff"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_hy_off -(value, id); }); - -65 -gi_mq_cmd -( -F -("buriod"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_bu_riod -(value, id); }); - -66 -gi_mq_cmd -( -F -("pumpday"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_pump_day -(value, id); }); - -68 - gEMSESP -:: -e8266R -. -gMqStgsSvi -()-> -ad -([&]( -MqStgs - & -gs -) { - -69 -mq_fm_ - = -gs -. -mq_fm -; - -71 i( -mq_fm_ - = -MQTT_fm -:: -HA -) { - -72 -gi_mq_ha_cfig -(); - -78  - gBo -:: -add_cڋxt_mu -() { - -79 -EMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -80 -CommdFgs -:: -USER -, - -81 -ash_rg_ve -{ -F_ -( -bo -)}, - -82 [&]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -83 -Bo -:: -cse_commds -( -shl -, -ShlCڋxt -:: -BOILER -); - -84 -add_cڋxt_commds -( -ShlCڋxt -:: -BOILER -); - -92  - gBo -:: -gi_mq_ha_cfig -() { - -93 -SticJsDocumt -< -EMSESP_MAX_JSON_SIZE_MEDIUM -> -doc -; - -107  - gBo -:: -devi_fo_web -( -JsAay - & -ro -) { - -108 -JsObje - -daEmt -; - -110 i( - grviCodeCh_ -[0] && - gHrs -:: -hasVue -( -rviCode_ -)) { - -111 -daEmt - = -ro -. -NeedObje -(); - -112 - gdaEmt -["me"] = -F -("Service Code"); - -113  - gs -[12]; - -114 -tf_P -( -s -, 12, -PSTR -("%(%d)"), -rviCodeCh_ -, -rviCode_ -); - -115 - gdaEmt -["vue"] = -s -; - -118 i( - gHrs -:: -hasVue -( -p_w_aive_ -, -EMS_VALUE_BOOL -)) { - -119 - gdaEmt - = -ro -. -NeedObje -(); - -120 - gdaEmt -["me"] = -F -("Hotap water"); - -121 - gdaEmt -["vue"] = -p_w_aive_ - ? -F -("running") : F("off"); - -124 i( - gHrs -:: -hasVue -( -htg_aive_ -, -EMS_VALUE_BOOL -)) { - -125 - gdaEmt - = -ro -. -NeedObje -(); - -126 - gdaEmt -["me"] = -F -("Central heating"); - -127 - gdaEmt -["vue"] = -htg_aive_ - ? -F -("active") : F("off"); - -130 -nd_vue_js -( -ro -, "", -F -("Seed flowemtu"), -lFlowTemp_ -, -F_ -( -deges -)); - -131 -nd_vue_js -( -ro -, "", -F -("Cuowemtu"), -curFlowTemp_ -, -F_ -( -deges -), 10); - -132 -nd_vue_js -( -ro -, "", -F -("Wm W seedemtu"), -wWSTemp_ -, -F_ -( -deges -)); - -133 -nd_vue_js -( -ro -, "", -F -("Wm W semtu"), -wWSTmp_ -, -F_ -( -deges -)); - -134 -nd_vue_js -( -ro -, "", -F -("Wm W cumtu ()"), -wWCurTmp_ -, -F_ -( -deges -), 10); - -135 -nd_vue_js -( -ro -, "", -F -("Wm W cumtu (ex)"), -wWCurTmp2_ -, -F_ -( -deges -), 10); - -136 -nd_vue_js -( -ro -, "", -F -("Pummoduti"), -pumpMod_ -, -F_ -( -r -)); - -137 -nd_vue_js -( -ro -, "", -F -("HPummoduti"), -pumpMod2_ -, -F_ -( -r -)); - -141  - gBo -:: -publish_vues -() { - -144 -SticJsDocumt -< -EMSESP_MAX_JSON_SIZE_LARGE -> -doc -; - -146  - gs -[10]; - -148 i( - gHrs -:: -hasVue -( -wWComft_ -)) { - -149 i( -wWComft_ - == 0x00) { - -150 -doc -["wWComfort"] = "Hot"; - -151 } i( - gwWComft_ - == 0xD8) { - -152 -doc -["wWComfort"] = "Eco"; - -153 } i( - gwWComft_ - == 0xEC) { - -154 -doc -["wWComfort"] = "Intelligent"; - -158 i( - gHrs -:: -hasVue -( -wWSTemp_ -)) { - -159 -doc -["wWSTemp"] = -wWSTemp_ -; - -161 i( - gHrs -:: -hasVue -( -wWSTmp_ -)) { - -162 -doc -["wWSTemp"] = -wWSTmp_ -; - -164 i( - gHrs -:: -hasVue -( -wWDisTemp_ -)) { - -165 -doc -["wWDisiTemp"] = -wWDisTemp_ -; - -167 i( - gHrs -:: -hasVue -( -lFlowTemp_ -)) { - -168 -doc -["lFlowTemp"] = -lFlowTemp_ -; - -170 i( - gHrs -:: -hasVue -( -lBuPow_ -)) { - -171 -doc -["lBuPow"] = -lBuPow_ -; - -173 i( - gHrs -:: -hasVue -( -curBuPow_ -)) { - -174 -doc -["curBuPow"] = -curBuPow_ -; - -176 i( - gHrs -:: -hasVue -( -pumpMod_ -)) { - -177 -doc -["pumpMod"] = -pumpMod_ -; - -179 i( - gHrs -:: -hasVue -( -pumpMod2_ -)) { - -180 -doc -["pumpMod2"] = -pumpMod2_ -; - -182 i( - gHrs -:: -hasVue -( -wWCcPump_ -, -EMS_VALUE_BOOL -)) { - -183 - gdoc -["wWCcPump"] = -Hrs -:: -nd_vue -( -s -, -wWCcPump_ -, -EMS_VALUE_BOOL -); - -185 i( - gHrs -:: -hasVue -( -wWCcPumpTy_ -, -EMS_VALUE_BOOL -)) { - -186 - gdoc -["wWCiPuTy"] = -wWCcPumpTy_ - ? "valve" : "pump"; - -188 i( - gHrs -:: -hasVue -( -wWCcPumpMode_ -)) { - -189 -doc -["wWCiPuMode"] = -wWCcPumpMode_ -; - -191 i( - gHrs -:: -hasVue -( -wWCc_ -, -EMS_VALUE_BOOL -)) { - -192 - gdoc -["wWCc"] = -Hrs -:: -nd_vue -( -s -, -wWCc_ -, -EMS_VALUE_BOOL -); - -194 i( - gHrs -:: -hasVue -( -extTemp_ -)) { - -195 -doc -["outdoTemp"] = () -extTemp_ - / 10; - -197 i( - gHrs -:: -hasVue -( -wWCurTmp_ -)) { - -198 -doc -["wWCurTmp"] = () -wWCurTmp_ - / 10; - -200 i( - gHrs -:: -hasVue -( -wWCurTmp2_ -)) { - -201 -doc -["wWCurTmp2"] = () -wWCurTmp2_ - / 10; - -203 i( - gHrs -:: -hasVue -( -wWCurFlow_ -)) { - -204 -doc -["wWCurFlow"] = () -wWCurFlow_ - / 10; - -206 i( - gHrs -:: -hasVue -( -curFlowTemp_ -)) { - -207 -doc -["curFlowTemp"] = () -curFlowTemp_ - / 10; - -209 i( - gHrs -:: -hasVue -( -tTemp_ -)) { - -210 -doc -["tTemp"] = () -tTemp_ - / 10; - -212 i( - gHrs -:: -hasVue -( -swchTemp_ -)) { - -213 -doc -["swchTemp"] = () -swchTemp_ - / 10; - -215 i( - gHrs -:: -hasVue -( -sysPss_ -)) { - -216 -doc -["sysPss"] = () -sysPss_ - / 10; - -218 i( - gHrs -:: -hasVue -( -boTemp_ -)) { - -219 -doc -["boTemp"] = () -boTemp_ - / 10; - -221 i( - gHrs -:: -hasVue -( -wwStageTemp1_ -)) { - -222 -doc -["wwStageTemp1"] = () -wwStageTemp1_ - / 10; - -224 i( - gHrs -:: -hasVue -( -wwStageTemp2_ -)) { - -225 -doc -["wwStageTemp2"] = () -wwStageTemp2_ - / 10; - -227 i( - gHrs -:: -hasVue -( -exhauTemp_ -)) { - -228 -doc -["exhauTemp"] = () -exhauTemp_ - / 10; - -230 i( - gHrs -:: -hasVue -( -wWAived_ -, -EMS_VALUE_BOOL -)) { - -231 - gdoc -["wWAived"] = -Hrs -:: -nd_vue -( -s -, -wWAived_ -, -EMS_VALUE_BOOL -); - -233 i( - gHrs -:: -hasVue -( -wWOTime_ -, -EMS_VALUE_BOOL -)) { - -234 - gdoc -["wWOtime"] = -Hrs -:: -nd_vue -( -s -, -wWOTime_ -, -EMS_VALUE_BOOL -); - -236 i( - gHrs -:: -hasVue -( -wWDisg_ -, -EMS_VALUE_BOOL -)) { - -237 - gdoc -["wWDisg"] = -Hrs -:: -nd_vue -( -s -, -wWDisg_ -, -EMS_VALUE_BOOL -); - -239 i( - gHrs -:: -hasVue -( -wWRdess_ -, -EMS_VALUE_BOOL -)) { - -240 - gdoc -["wWRdy"] = -Hrs -:: -nd_vue -( -s -, -wWRdess_ -, -EMS_VALUE_BOOL -); - -242 i( - gHrs -:: -hasVue -( -wWRechgg_ -, -EMS_VALUE_BOOL -)) { - -243 - gdoc -["wWRechge"] = -Hrs -:: -nd_vue -( -s -, -wWRechgg_ -, -EMS_VALUE_BOOL -); - -245 i( - gHrs -:: -hasVue -( -wWTemtuOK_ -, -EMS_VALUE_BOOL -)) { - -246 - gdoc -["wWTempOK"] = -Hrs -:: -nd_vue -( -s -, -wWTemtuOK_ -, -EMS_VALUE_BOOL -); - -248 i( - gHrs -:: -hasVue -( -wWCc_ -, -EMS_VALUE_BOOL -)) { - -249 - gdoc -["wWCc"] = -Hrs -:: -nd_vue -( -s -, -wWCc_ -, -EMS_VALUE_BOOL -); - -251 i( - gHrs -:: -hasVue -( -buGas_ -, -EMS_VALUE_BOOL -)) { - -252 - gdoc -["buGas"] = -Hrs -:: -nd_vue -( -s -, -buGas_ -, -EMS_VALUE_BOOL -); - -254 i( - gHrs -:: -hasVue -( -ameCu_ -)) { - -255 -doc -["ameCu"] = ()( -t16_t -) -ameCu_ - / 10; - -257 i( - gHrs -:: -hasVue -( -htPmp_ -, -EMS_VALUE_BOOL -)) { - -258 - gdoc -["htPump"] = -Hrs -:: -nd_vue -( -s -, -htPmp_ -, -EMS_VALUE_BOOL -); - -260 i( - gHrs -:: -hasVue -( -nWk_ -, -EMS_VALUE_BOOL -)) { - -261 - gdoc -["nWk"] = -Hrs -:: -nd_vue -( -s -, -nWk_ -, -EMS_VALUE_BOOL -); - -263 i( - gHrs -:: -hasVue -( -ignWk_ -, -EMS_VALUE_BOOL -)) { - -264 - gdoc -["ignWk"] = -Hrs -:: -nd_vue -( -s -, -ignWk_ -, -EMS_VALUE_BOOL -); - -266 i( - gHrs -:: -hasVue -( -wWHt_ -, -EMS_VALUE_BOOL -)) { - -267 - gdoc -["wWHt"] = -Hrs -:: -nd_vue -( -s -, -wWHt_ -, -EMS_VALUE_BOOL -); - -269 i( - gHrs -:: -hasVue -( -htg_mp_ -)) { - -270 -doc -["htgTemp"] = -htg_mp_ -; - -272 i( - gHrs -:: -hasVue -( -pump_mod_max_ -)) { - -273 -doc -["pumpModMax"] = -pump_mod_max_ -; - -275 i( - gHrs -:: -hasVue -( -pump_mod_m_ -)) { - -276 -doc -["pumpModM"] = -pump_mod_m_ -; - -278 i( - gHrs -:: -hasVue -( -pumpDay_ -)) { - -279 -doc -["pumpDay"] = -pumpDay_ -; - -281 i( - gHrs -:: -hasVue -( -buPiod_ -)) { - -282 -doc -["buMPiod"] = -buPiod_ -; - -284 i( - gHrs -:: -hasVue -( -buPowm_ -)) { - -285 -doc -["buMPow"] = -buPowm_ -; - -287 i( - gHrs -:: -hasVue -( -buPowmax_ -)) { - -288 -doc -["buMaxPow"] = -buPowmax_ -; - -290 i( - gHrs -:: -hasVue -( -boTemp__ -)) { - -291 -doc -["boHyOn"] = -boTemp__ -; - -293 i( - gHrs -:: -hasVue -( -boTemp_off_ -)) { - -294 -doc -["boHyOff"] = -boTemp_off_ -; - -296 i( - gHrs -:: -hasVue -( -tFlowTemp_ -)) { - -297 -doc -["tFlowTemp"] = -tFlowTemp_ -; - -299 i( - gHrs -:: -hasVue -( -tWWPumpPow_ -)) { - -300 -doc -["wWSPumpPow"] = -tWWPumpPow_ -; - -302 i( - gHrs -:: -hasVue -( -wWSs_ -)) { - -303 -doc -["wWSs"] = -wWSs_ -; - -305 i( - gHrs -:: -hasVue -( -wWWkM_ -)) { - -306 -doc -["wWWkM"] = -wWWkM_ -; - -308 i( - gHrs -:: -hasVue -( -UBAuime_ -)) { - -309 -doc -["UBAuime"] = -UBAuime_ -; - -311 i( - gHrs -:: -hasVue -( -buSs_ -)) { - -312 -doc -["buSs"] = -buSs_ -; - -314 i( - gHrs -:: -hasVue -( -buWkM_ -)) { - -315 -doc -["buWkM"] = -buWkM_ -; - -317 i( - gHrs -:: -hasVue -( -htWkM_ -)) { - -318 -doc -["htWkM"] = -htWkM_ -; - -320 i( - gHrs -:: -hasVue -( -rviCode_ -)) { - -321 -doc -["rviCode"] = -rviCodeCh_ -; - -322 - gdoc -["rviCodeNumb"] = -rviCode_ -; - -326 i(! - gdoc -. -isNu -()) { - -327 - gMq -:: -publish -( -F -("bo_da"), -doc -); - -332 -bo - - gBo -:: -upded_vues -() { - -333 i( -chged_ -) { - -334 -chged_ - = -l -; - -335  - gue -; - -337  - gl -; - -341  - gBo -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -342 -EMSdevi -:: -show_vues -( -shl -); - -344 i( - gHrs -:: -hasVue -( -p_w_aive_ -, -EMS_VALUE_BOOL -)) { - -345 -t_vue -( -shl -, 2, -F -("Hف w"), -p_w_aive_ - ? F("running") : F("off")); - -348 i( - gHrs -:: -hasVue -( -htg_aive_ -, -EMS_VALUE_BOOL -)) { - -349 -t_vue -( -shl -, 2, -F -("C htg"), -htg_aive_ - ? F("active") : F("off")); - -352 -t_vue -( -shl -, 2, -F -("Wm Wived"), -wWAived_ -, -nuαr -, -EMS_VALUE_BOOL -); - -353 i( - gHrs -:: -hasVue -( -wWCcPumpTy_ -, -EMS_VALUE_BOOL -)) { - -354 -t_vue -( -shl -, 2, -F -("Wm W chggy"), -wWCcPumpTy_ - ? F("3-way valve") : F("chargeump")); - -356 -t_vue -( -shl -, 2, -F -("Wm W ccutiڅumavaab"), -wWCcPump_ -, -nuαr -, -EMS_VALUE_BOOL -); - -358 i( - gHrs -:: -hasVue -( -wWCcPumpMode_ -)) { - -359 i( -wWCcPumpMode_ - == 7) { - -360 -t_vue -( -shl -, 2, -F -("Warm Water circulationump freq"), F("continuous")); - -362  - gs -[7]; - -363  - gbufr -[2]; - -364 - gbufr -[0] = ( -wWCcPumpMode_ - % 10) + '0'; - -365 - gbufr -[1] = '\0'; - -366 -y -( -s -, -bufr -, 7); - -367 -t -( -s -, "x3min", 7); - -368 -t_vue -( -shl -, 2, -F -("Wm W ccutiڅumeq"), -s -); - -372 -t_vue -( -shl -, 2, -F -("Wm W ccutiڇive"), -wWCc_ -, -nuαr -, -EMS_VALUE_BOOL -); - -374 i( - gwWComft_ - == 0x00) { - -375 -t_vue -( -shl -, 2, -F -("Warm Water comfort setting"), F("Hot")); - -376 } i( - gwWComft_ - == 0xD8) { - -377 -t_vue -( -shl -, 2, -F -("Warm Water comfort setting"), F("Eco")); - -378 } i( - gwWComft_ - == 0xEC) { - -379 -t_vue -( -shl -, 2, -F -("Warm Water comfort setting"), F("Intelligent")); - -382 -t_vue -( -shl -, 2, -F -("Wm w mixemtu"), -wwMixTemtu_ -, -F_ -( -deges -), 10); - -383 -t_vue -( -shl -, 2, -F -("Wm w bufboemtu"), -wwBufrBoTemtu_ -, -F_ -( -deges -), 10); - -384 -t_vue -( -shl -, 2, -F -("Wm W disiځemtu"), -wWDisTemp_ -, -F_ -( -deges -)); - -385 -t_vue -( -shl -, 2, -F -("Wm W seedemtu"), -wWSTemp_ -, -F_ -( -deges -)); - -386 -t_vue -( -shl -, 2, -F -("Wm W semtu"), -wWSTmp_ -, -F_ -( -deges -)); - -387 -t_vue -( -shl -, 2, -F -("Wm W cumtu ()"), -wWCurTmp_ -, -F_ -( -deges -), 10); - -388 -t_vue -( -shl -, 2, -F -("Wm w stagmtu ()"), -wwStageTemp1_ -, -F_ -( -deges -), 10); - -389 -t_vue -( -shl -, 2, -F -("Wm W cumtu (ex)"), -wWCurTmp2_ -, -F_ -( -deges -), 10); - -390 -t_vue -( -shl -, 2, -F -("Wm w stagmtu (ex)"), -wwStageTemp2_ -, -F_ -( -deges -), 10); - -391 -t_vue -( -shl -, 2, -F -("Wm W cuw flow"), -wWCurFlow_ -, F("l/min"), 10); - -392 -t_vue -( -shl -, 2, -F -("Wm W # ss"), -wWSs_ -, -nuαr -); - -393 i( - gHrs -:: -hasVue -( -wWWkM_ -)) { - -394 -shl -. -tn -( -F -(" Wm Wivtime: %d day%d hour%d mus"), -wWWkM_ - / 1440, (wWWorkM_ % 1440) / 60, wWWorkM_ % 60); - -396 -t_vue -( -shl -, 2, -F -("Wm W chgg"), -wWHt_ -, -nuαr -, -EMS_VALUE_BOOL -); - -397 -t_vue -( -shl -, 2, -F -("Wm W disg"), -wWDisg_ -, -nuαr -, -EMS_VALUE_BOOL -); - -398 -t_vue -( -shl -, 2, -F -("Seed flowemtu"), -lFlowTemp_ -, -F_ -( -deges -)); - -399 -t_vue -( -shl -, 2, -F -("Cuowemtu"), -curFlowTemp_ -, -F_ -( -deges -), 10); - -400 -t_vue -( -shl -, 2, -F -("Max boemtu"), -boTemp_ -, -F_ -( -deges -), 10); - -401 -t_vue -( -shl -, 2, -F -("Ruemtu"), -tTemp_ -, -F_ -( -deges -), 10); - -402 -t_vue -( -shl -, 2, -F -("Gas"), -buGas_ -, -nuαr -, -EMS_VALUE_BOOL -); - -403 -t_vue -( -shl -, 2, -F -("Boump"), -htPmp_ -, -nuαr -, -EMS_VALUE_BOOL -); - -404 -t_vue -( -shl -, 2, -F -("F"), -nWk_ -, -nuαr -, -EMS_VALUE_BOOL -); - -405 -t_vue -( -shl -, 2, -F -("Igni"), -ignWk_ -, -nuαr -, -EMS_VALUE_BOOL -); - -407 -t_vue -( -shl -, 2, -F -("Bu seed maxow"), -lBuPow_ -, -F_ -( -r -)); - -408 -t_vue -( -shl -, 2, -F -("Bu cupow"), -curBuPow_ -, -F_ -( -r -)); - -409 -t_vue -( -shl -, 2, -F -("Fmcut"), -ameCu_ -, F("uA"), 10); - -410 -t_vue -( -shl -, 2, -F -("Syemssu"), -sysPss_ -, F("bar"), 10); - -411 i( - gHrs -:: -hasVue -( -rviCode_ -)) { - -412 -shl -. -tn -( -F -(" Syem svi code: %(%d)"), -rviCodeCh_ -, -rviCode_ -); - -413 } i( - grviCodeCh_ -[0] != '\0') { - -414 -t_vue -( -shl -, 2, -F -("Syem svi code"), -rviCodeCh_ -); - -418 -t_vue -( -shl -, 2, -F -("Htgemtu stg othbo"), -htg_mp_ -, -F_ -( -deges -)); - -419 -t_vue -( -shl -, 2, -F -("Bo ccuummoduti maxow"), -pump_mod_max_ -, -F_ -( -r -)); - -420 -t_vue -( -shl -, 2, -F -("Bo ccuummoduti mow"), -pump_mod_m_ -, -F_ -( -r -)); - -421 -t_vue -( -shl -, 2, -F -("Bo ccuumdayime"), -pumpDay_ -, F("min")); - -422 -t_vue -( -shl -, 2, -F -("Boemhyesi"), -boTemp__ -, -F_ -( -deges -)); - -423 -t_vue -( -shl -, 2, -F -("Boemhyesioff"), -boTemp_off_ -, -F_ -( -deges -)); - -424 -t_vue -( -shl -, 2, -F -("Bo bu miod"), -buPiod_ -, F("min")); - -425 -t_vue -( -shl -, 2, -F -("Bo bu mow"), -buPowm_ -, -F_ -( -r -)); - -426 -t_vue -( -shl -, 2, -F -("Bo bu maxow"), -buPowmax_ -, -F_ -( -r -)); - -429 -t_vue -( -shl -, 2, -F -("S Flowemtu"), -tFlowTemp_ -, -F_ -( -deges -)); - -430 -t_vue -( -shl -, 2, -F -("Bo bu sow"), -tBuPow_ -, -F_ -( -r -)); - -431 -t_vue -( -shl -, 2, -F -("Wm Wumpow"), -tWWPumpPow_ -, -F_ -( -r -)); - -434 i( - gHrs -:: -hasVue -( -extTemp_ -)) { - -435 -t_vue -( -shl -, 2, -F -("Outsidmtu"), -extTemp_ -, -F_ -( -deges -), 10); - -438 -t_vue -( -shl -, 2, -F -("Exhauemtu"), -exhauTemp_ -, -F_ -( -deges -), 10); - -439 -t_vue -( -shl -, 2, -F -("Pummoduti"), -pumpMod_ -, -F_ -( -r -)); - -440 -t_vue -( -shl -, 2, -F -("HPummoduti"), -pumpMod2_ -, -F_ -( -r -)); - -441 -t_vue -( -shl -, 2, -F -("Bu # ss"), -buSs_ -, -nuαr -); - -442 i( - gHrs -:: -hasVue -( -buWkM_ -)) { - -443 -shl -. -tn -( -F -(" Tٮ bu otgime: %d day%d hour%d mus"), -buWkM_ - / 1440, (burnWorkMin_ % 1440) / 60, burnWorkMin_ % 60); - -445 i( - gHrs -:: -hasVue -( -htWkM_ -)) { - -446 -shl -. -tn -( -F -(" Tٮ hݔgime: %d day%d hour%d mus"), -htWkM_ - / 1440, (heatWorkMin_ % 1440) / 60, heatWorkMin_ % 60); - -448 i( - gHrs -:: -hasVue -( -UBAuime_ -)) { - -449 -shl -. -tn -( -F -(" Tٮ UBA wkgime: %d day%d hour%d mus"), -UBAuime_ - / 1440, (UBAuptime_ % 1440) / 60, UBAuptime_ % 60); - -452 - gshl -. -n -(); - -459  - gBo -:: -check_aive -() { - -462 i( -Hrs -:: -hasVue -( -wWCurFlow_ -&& Hrs::hasVue( -buGas_ -)) { - -463 -p_w_aive_ - = (( -wWCurFlow_ - !0&& ( -buGas_ - ! -EMS_VALUE_BOOL_OFF -)); - -464 - gEMSESP -:: -p_w_aive -( -p_w_aive_ -); - -469 i( - gHrs -:: -hasVue -( -lFlowTemp_ -&& -Hrs -::hasVue( -buGas_ -)) { - -470 -htg_aive_ - = (! -p_w_aive_ - && (( -lFlowTemp_ - > -EMS_BOILER_SELFLOWTEMP_HEATING -&& ( -buGas_ - ! -EMS_VALUE_BOOL_OFF -))); - -475 i( - gHrs -:: -hasVue -( -p_w_aive_ -, -EMS_VALUE_BOOL -&& Hrs::hasVue( -htg_aive_ -, EMS_VALUE_BOOL)) { - -476 -ut8_t - - gϋ_boS - = ( -p_w_aive_ - << 1+ -htg_aive_ -; - -477 i( - gϋ_boS - ! -ϡ_boS -) { - -478 -ϡ_boS - = -ϋ_boS -; - -479 - gMq -:: -publish -( -F -("pw_aive"), -p_w_aive_ -); - -480 - gMq -:: -publish -( -F -("htg_aive"), -htg_aive_ -); - -486  - gBo -:: -oss_UBAPamWW -( -d -:: -shed_r - -gm -) { - -487 -chged_ - | -gm --> -ad_vue -( -wWAived_ -, 1); - -488 - gchged_ - | -gm --> -ad_vue -( -wWCcPump_ -, 6); - -489 - gchged_ - | -gm --> -ad_vue -( -wWCcPumpMode_ -, 7); - -490 - gchged_ - | -gm --> -ad_vue -( -wWCcPumpTy_ -, 10); - -491 - gchged_ - | -gm --> -ad_vue -( -wWSTemp_ -, 2); - -492 - gchged_ - | -gm --> -ad_vue -( -wWDisTemp_ -, 8); - -493 - gchged_ - | -gm --> -ad_vue -( -wWComft_ -, 9); - -497  - gBo -:: -oss_UBAMڙFa -( -d -:: -shed_r - -gm -) { - -498 -chged_ - | -gm --> -ad_vue -( -lFlowTemp_ -, 0); - -499 - gchged_ - | -gm --> -ad_vue -( -curFlowTemp_ -, 1); - -500 - gchged_ - | -gm --> -ad_vue -( -lBuPow_ -, 3); - -501 - gchged_ - | -gm --> -ad_vue -( -curBuPow_ -, 4); - -503 - gchged_ - | -gm --> -ad_bvue -( -buGas_ -, 7, 0); - -504 - gchged_ - | -gm --> -ad_bvue -( -nWk_ -, 7, 2); - -505 - gchged_ - | -gm --> -ad_bvue -( -ignWk_ -, 7, 3); - -506 - gchged_ - | -gm --> -ad_bvue -( -htPmp_ -, 7, 5); - -507 - gchged_ - | -gm --> -ad_bvue -( -wWHt_ -, 7, 6); - -508 - gchged_ - | -gm --> -ad_bvue -( -wWCc_ -, 7, 7); - -512 - gchged_ - | -gm --> -ad_vue -( -wwStageTemp1_ -, 9); - -513 - gchged_ - | -gm --> -ad_vue -( -wwStageTemp2_ -, 11); - -515 - gchged_ - | -gm --> -ad_vue -( -tTemp_ -, 13); - -516 - gchged_ - | -gm --> -ad_vue -( -ameCu_ -, 15); - -517 - gchged_ - | -gm --> -ad_vue -( -rviCode_ -, 20); - -520 - gchged_ - | -gm --> -ad_vue -( -sysPss_ -, 17); - -523 i(( - ggm --> - gmesge_ngth - > 18&& (gm-> - gofft - == 0)) { - -524 -chged_ - | -gm --> -ad_vue -( -rviCodeCh_ -[0], 18); - -525 - gchged_ - | -gm --> -ad_vue -( -rviCodeCh_ -[1], 19); - -526 - grviCodeCh_ -[2] = '\0'; - -530 -check_aive -(); - -537  - gBo -:: -oss_UBATٮUime -( -d -:: -shed_r - -gm -) { - -538 -chged_ - | -gm --> -ad_vue -( -UBAuime_ -, 0, 3); - -544  - gBo -:: -oss_UBAPams -( -d -:: -shed_r - -gm -) { - -545 -chged_ - | -gm --> -ad_vue -( -htg_mp_ -, 1); - -546 - gchged_ - | -gm --> -ad_vue -( -buPowmax_ -, 2); - -547 - gchged_ - | -gm --> -ad_vue -( -buPowm_ -, 3); - -548 - gchged_ - | -gm --> -ad_vue -( -boTemp_off_ -, 4); - -549 - gchged_ - | -gm --> -ad_vue -( -boTemp__ -, 5); - -550 - gchged_ - | -gm --> -ad_vue -( -buPiod_ -, 6); - -551 - gchged_ - | -gm --> -ad_vue -( -pumpDay_ -, 8); - -552 - gchged_ - | -gm --> -ad_vue -( -pump_mod_max_ -, 9); - -553 - gchged_ - | -gm --> -ad_vue -( -pump_mod_m_ -, 10); - -560  - gBo -:: -oss_UBAMڙWW -( -d -:: -shed_r - -gm -) { - -561 -chged_ - | -gm --> -ad_vue -( -wWSTmp_ -, 0); - -562 - gchged_ - | -gm --> -ad_vue -( -wWCurTmp_ -, 1); - -563 - gchged_ - | -gm --> -ad_vue -( -wWCurTmp2_ -, 3); - -564 - gchged_ - | -gm --> -ad_vue -( -wWCurFlow_ -, 9); - -566 - gchged_ - | -gm --> -ad_vue -( -wWWkM_ -, 10, 3); - -567 - gchged_ - | -gm --> -ad_vue -( -wWSs_ -, 13, 3); - -569 - gchged_ - | -gm --> -ad_bvue -( -wWOTime_ -, 5, 1); - -570 - gchged_ - | -gm --> -ad_bvue -( -wWDisg_ -, 5, 2); - -571 - gchged_ - | -gm --> -ad_bvue -( -wWRdess_ -, 5, 3); - -572 - gchged_ - | -gm --> -ad_bvue -( -wWRechgg_ -, 5, 4); - -573 - gchged_ - | -gm --> -ad_bvue -( -wWTemtuOK_ -, 5, 5); - -580  - gBo -:: -oss_UBAMڙFaPlus -( -d -:: -shed_r - -gm -) { - -581 -chged_ - | -gm --> -ad_vue -( -lFlowTemp_ -, 6); - -582 - gchged_ - | -gm --> -ad_bvue -( -buGas_ -, 11, 0); - -583 - gchged_ - | -gm --> -ad_bvue -( -wWHt_ -, 11, 2); - -584 - gchged_ - | -gm --> -ad_vue -( -curBuPow_ -, 10); - -585 - gchged_ - | -gm --> -ad_vue -( -lBuPow_ -, 9); - -586 - gchged_ - | -gm --> -ad_vue -( -curFlowTemp_ -, 7); - -587 - gchged_ - | -gm --> -ad_vue -( -ameCu_ -, 19); - -590 i(( - ggm --> - gmesge_ngth - > 4&& (gm-> - gofft - == 0)) { - -591 -chged_ - | -gm --> -ad_vue -( -rviCodeCh_ -[0], 4); - -592 - gchged_ - | -gm --> -ad_vue -( -rviCodeCh_ -[1], 5); - -593 - grviCodeCh_ -[2] = '\0'; - -597 -check_aive -(); - -607  - gBo -:: -oss_UBAMڙSlow -( -d -:: -shed_r - -gm -) { - -608 -chged_ - | -gm --> -ad_vue -( -extTemp_ -, 0); - -609 - gchged_ - | -gm --> -ad_vue -( -boTemp_ -, 2); - -610 - gchged_ - | -gm --> -ad_vue -( -exhauTemp_ -, 4); - -611 - gchged_ - | -gm --> -ad_vue -( -swchTemp_ -, 25); - -612 - gchged_ - | -gm --> -ad_vue -( -pumpMod_ -, 9); - -613 - gchged_ - | -gm --> -ad_vue -( -buSs_ -, 10, 3); - -614 - gchged_ - | -gm --> -ad_vue -( -buWkM_ -, 13, 3); - -615 - gchged_ - | -gm --> -ad_vue -( -htWkM_ -, 19, 3); - -621  - gBo -:: -oss_UBAMڙSlowPlus2 -( -d -:: -shed_r - -gm -) { - -622 -chged_ - | -gm --> -ad_vue -( -pumpMod2_ -, 13); - -628  - gBo -:: -oss_UBAMڙSlowPlus -( -d -:: -shed_r - -gm -) { - -629 -chged_ - | -gm --> -ad_bvue -( -nWk_ -, 2, 2); - -630 - gchged_ - | -gm --> -ad_bvue -( -ignWk_ -, 2, 3); - -631 - gchged_ - | -gm --> -ad_bvue -( -htPmp_ -, 2, 5); - -632 - gchged_ - | -gm --> -ad_bvue -( -wWCc_ -, 2, 7); - -633 - gchged_ - | -gm --> -ad_vue -( -buSs_ -, 10, 3); - -634 - gchged_ - | -gm --> -ad_vue -( -buWkM_ -, 13, 3); - -635 - gchged_ - | -gm --> -ad_vue -( -htWkM_ -, 19, 3); - -636 - gchged_ - | -gm --> -ad_vue -( -pumpMod_ -, 25); - -641  - gBo -:: -oss_UBADHWStus -( -d -:: -shed_r - -gm -) { - -642 -chged_ - | -gm --> -ad_vue -( -wWSTmp_ -, 0); - -643 - gchged_ - | -gm --> -ad_vue -( -wWCurTmp_ -, 1); - -644 - gchged_ - | -gm --> -ad_vue -( -wWCurTmp2_ -, 3); - -646 - gchged_ - | -gm --> -ad_vue -( -wWWkM_ -, 17, 3); - -647 - gchged_ - | -gm --> -ad_vue -( -wWSs_ -, 14, 3); - -649 - gchged_ - | -gm --> -ad_bvue -( -wWOTime_ -, 12, 2); - -650 - gchged_ - | -gm --> -ad_bvue -( -wWDisg_ -, 12, 3); - -651 - gchged_ - | -gm --> -ad_bvue -( -wWRdess_ -, 12, 4); - -652 - gchged_ - | -gm --> -ad_bvue -( -wWRechgg_ -, 13, 4); - -653 - gchged_ - | -gm --> -ad_bvue -( -wWTemtuOK_ -, 13, 5); - -654 - gchged_ - | -gm --> -ad_bvue -( -wWCcPump_ -, 13, 2); - -656 - gchged_ - | -gm --> -ad_vue -( -wWAived_ -, 20); - -657 - gchged_ - | -gm --> -ad_vue -( -wWSTemp_ -, 10); - -658 - gchged_ - | -gm --> -ad_vue -( -wWDisTemp_ -, 9); - -664  - gBo -:: -oss_MC10Stus -( -d -:: -shed_r - -gm -) { - -665 -chged_ - | -gm --> -ad_vue -( -wwMixTemtu_ -, 14); - -666 - gchged_ - | -gm --> -ad_vue -( -wwBufrBoTemtu_ -, 18); - -672  - gBo -:: -oss_UBAOutdoTemp -( -d -:: -shed_r - -gm -) { - -673 -chged_ - | -gm --> -ad_vue -( -extTemp_ -, 0); - -677  - gBo -:: -oss_UBASPots -( -d -:: -shed_r - -gm -) { - -678 -chged_ - | -gm --> -ad_vue -( -tFlowTemp_ -, 0); - -679 - gchged_ - | -gm --> -ad_vue -( -tBuPow_ -, 1); - -680 - gchged_ - | -gm --> -ad_vue -( -tWWPumpPow_ -, 2); - -683 #agm -GCC - -dgnoic - -push - - -684 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -688  - gBo -:: -oss_UBAFgs -( -d -:: -shed_r - -gm -) { - -693  -Bo -:: -oss_UBAManStus -( -d -:: -shed_r - -gm -) { - -699  -Bo -:: -oss_UBAEMesge -( -d -:: -shed_r - -gm -) { - -703 #agm -GCC - -dgnoic - -p - - -706  -Bo -:: -oss_UBAManDa -( -d -:: -shed_r - -gm -) { - -709 i( -gm --> -mesge_da -[0] == 3) { - -710 -LOG_WARNING -( -F -("Boiler has booted.")); - -720  - gBo -:: -t_wmw_mp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -721  - gv - = 0; - -722 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -726 -LOG_INFO -( -F -("Stg bo wm wemtu%d C"), -v -); - -727 -wre_commd -( -EMS_TYPE_UBAPamWW -, 2, -v -, EMS_TYPE_UBAParameterWW); - -728 -wre_commd -( -EMS_TYPE_UBAFgs -, 3, -v -, -EMS_TYPE_UBAPamWW -); - -732  - gBo -:: -t_ow_mp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -733  - gv - = 0; - -734 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -738 -LOG_INFO -( -F -("Stg bo flowemtu%d C"), -v -); - -739 -wre_commd -( -EMS_TYPE_UBASPots -, 0, -v -, EMS_TYPE_UBASetPoints); - -743  - gBo -:: -t_m_pow -(cڡ * -vue -, cڡ -t8_t - -id -) { - -744  - gv - = 0; - -745 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -748 -LOG_INFO -( -F -("Stg bo mow"), -v -); - -749 -wre_commd -( -EMS_TYPE_UBAPams -, 3, -v -, EMS_TYPE_UBAParameters); - -753  - gBo -:: -t_max_pow -(cڡ * -vue -, cڡ -t8_t - -id -) { - -754  - gv - = 0; - -755 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -759 -LOG_INFO -( -F -("Stg bo maxow%d C"), -v -); - -760 -wre_commd -( -EMS_TYPE_UBAPams -, 2, -v -, EMS_TYPE_UBAParameters); - -764  - gBo -:: -t_hy_ -(cڡ * -vue -, cڡ -t8_t - -id -) { - -765  - gv - = 0; - -766 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -770 -LOG_INFO -( -F -("Stg bo hyesiځ%d C"), -v -); - -771 -wre_commd -( -EMS_TYPE_UBAPams -, 5, -v -, EMS_TYPE_UBAParameters); - -775  - gBo -:: -t_hy_off -(cڡ * -vue -, cڡ -t8_t - -id -) { - -776  - gv - = 0; - -777 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -781 -LOG_INFO -( -F -("Stg bo hyesioft%d C"), -v -); - -782 -wre_commd -( -EMS_TYPE_UBAPams -, 4, -v -, EMS_TYPE_UBAParameters); - -786  - gBo -:: -t_bu_riod -(cڡ * -vue -, cڡ -t8_t - -id -) { - -787  - gv - = 0; - -788 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -792 -LOG_INFO -( -F -("Stg bu m.iod%d m"), -v -); - -793 -wre_commd -( -EMS_TYPE_UBAPams -, 6, -v -, EMS_TYPE_UBAParameters); - -797  - gBo -:: -t_pump_day -(cڡ * -vue -, cڡ -t8_t - -id -) { - -798  - gv - = 0; - -799 i(! - gHrs -:: -vue2numb -( -vue -, -v -)) { - -803 -LOG_INFO -( -F -("Stg boumday%d m"), -v -); - -804 -wre_commd -( -EMS_TYPE_UBAPams -, 8, -v -, EMS_TYPE_UBAParameters); - -809  - gBo -:: -t_wmw_mode -(cڡ * -vue -, cڡ -t8_t - -id -) { - -810 i( - gvue - = -nuαr -) { - -813 -ut8_t - - gt -; - -814 i( -rcmp -( -vue -, "hot") == 0) { - -815 -LOG_INFO -( -F -("Setting boiler warm watero Hot")); - -816 - gt - = 0x00; - -817 } i( -rcmp -( -vue -, "eco") == 0) { - -818 -LOG_INFO -( -F -("Setting boiler warm watero Eco")); - -819 - gt - = 0xD8; - -820 } i( -rcmp -( -vue -, "intelligent") == 0) { - -821 -LOG_INFO -( -F -("Setting boiler warm watero Intelligent")); - -822 - gt - = 0xEC; - -826 -wre_commd -( -EMS_TYPE_UBAPamWW -, 9, -t -, EMS_TYPE_UBAParameterWW); - -830  - gBo -:: -t_wmw_aived -(cڡ * -vue -, cڡ -t8_t - -id -) { - -831 -bo - - gv - = -l -; - -832 i(! - gHrs -:: -vue2bo -( -vue -, -v -)) { - -836 -LOG_INFO -( -F -("Stg bo wm w %s"), -v - ? "on" : "off"); - -839 -ut8_t - - gn -; - -840 i( - gEMSbus -:: -is_ht3 -()) { - -841 -n - = ( -v - ? 0x08 : 0x00); - -843 - gn - = ( -v - ? 0xFF : 0x00); - -845 -wre_commd -( -EMS_TYPE_UBAPamWW -, 1, -n -, EMS_TYPE_UBAParameterWW); - -850  - gBo -:: -t_pwmw_aived -(cڡ * -vue -, cڡ -t8_t - -id -) { - -851 -bo - - gv - = -l -; - -852 i(! - gHrs -:: -vue2bo -( -vue -, -v -)) { - -856 -LOG_INFO -( -F -("Stg wm w %s"), -v - ? "on" : "off"); - -857 -ut8_t - - gmesge_da -[ -EMS_MAX_TELEGRAM_MESSAGE_LENGTH -]; - -858  -ut8_t - - gi - = 0; i < ( - gmesge_da -); i++) { - -859 - gmesge_da -[ -i -] = 0x00; - -865 i(! - gv -) { - -867 - gmesge_da -[0] = 0x5A; - -868 - gmesge_da -[1] = 0x00; - -869 - gmesge_da -[3] = 0x64; - -870 - gmesge_da -[4] = 0xFF; - -874 - gmesge_da -[4] = 0x00; - -877 -wre_commd -( -EMS_TYPE_UBAFuniTe -, 0, -mesge_da -, (message_data), 0); - -883  - gBo -:: -t_wmw_ڑime -(cڡ * -vue -, cڡ -t8_t - -id -) { - -884 -bo - - gv - = -l -; - -885 i(! - gHrs -:: -vue2bo -( -vue -, -v -)) { - -889 -LOG_INFO -( -F -("Stg bo wm w OTimldg %s"), -v - ? "on" : "off"); - -890 -wre_commd -( -EMS_TYPE_UBAFgs -, 0, ( -v - ? 0x22 : 0x02), 0x18); - -895  - gBo -:: -t_wmw_ccuti -(cڡ * -vue -, cڡ -t8_t - -id -) { - -896 -bo - - gv - = -l -; - -897 i(! - gHrs -:: -vue2bo -( -vue -, -v -)) { - -901 -LOG_INFO -( -F -("Stg bo wm w ccuti %s"), -v - ? "on" : "off"); - -902 -wre_commd -( -EMS_TYPE_UBAFgs -, 1, ( -v - ? 0x22 : 0x02), 0x18); - -906  - gBo -:: -cse_commds -( -Shl - & -shl -,  -cڋxt -) { - -907 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -BOILER -, - -908 -CommdFgs -:: -ADMIN -, - -909 -ash_rg_ve -{ -F_ -( -ad -)}, - -910 -ash_rg_ve -{ -F_ -( -tyid_mdy -)}, - -911 [=]( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts -) { - -912 -ut16_t - -ty_id - = -Hrs -:: -hextot -( -gumts -. -t -(). -c_r -()); - -913 -EMSESP -:: -t_ad_id -( -ty_id -); - -914 -EMSESP -:: -nd_ad_que -( -ty_id -, -g_devi_id -()); - -917 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -BOILER -, - -918 -CommdFgs -:: -USER -, - -919 -ash_rg_ve -{ -F_ -( -show -)}, - -920 [&]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -)){ -show_vues -(shell); }); - -923 - gCse -:: -r_cuom_cڋxt -( -shl -, -cڋxt -); - - @src/devices/boiler.h - -19 #ide -EMSESP_BOILER_H - - -20  - #EMSESP_BOILER_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~ - -29  - ~"emsdevi.h -" - -30  - ~"gm.h -" - -31  - ~"em.h -" - -32  - ~"hrs.h -" - -33  - ~"mq.h -" - -35 -mea - - gem - { - -37 as - cBo - : -public - -EMSdevi - { - -38 -public -: - -39 -Bo -( -ut8_t - -devi_ty -, -t8_t - -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -41 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -42 -vtu -  -publish_vues -(); - -43 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -44 -vtu - -bo - -upded_vues -(); - -45 -vtu -  -add_cڋxt_mu -(); - -47 - give -: - -48  -uuid -:: -log -:: -Logg - -logg_ -; - -50  -cse_commds -( -Shl - & -shl -,  -cڋxt -); - -51  -gi_mq_ha_cfig -(); - -52  -check_aive -(); - -54 -ut8_t - - gϡ_boS - = 0xFF; - -55 -ut8_t - - gmq_fm_ -; - -56 -bo - - gchged_ - = -l -; - -58  -cڡex - -ut8_t - - gEMS_TYPE_UBAPamWW - = 0x33; - -59  -cڡex - -ut8_t - - gEMS_TYPE_UBAFuniTe - = 0x1D; - -60  -cڡex - -ut8_t - - gEMS_TYPE_UBAFgs - = 0x35; - -61  -cڡex - -ut8_t - - gEMS_TYPE_UBASPots - = 0x1A; - -62  -cڡex - -ut8_t - - gEMS_TYPE_UBAPams - = 0x16; - -64  -cڡex - -ut8_t - - gEMS_BOILER_SELFLOWTEMP_HEATING - = 20; - -67 -ut8_t - - gwWAived_ - = -EMS_VALUE_BOOL_NOTSET -; - -68 -ut8_t - - gwWSTemp_ - = -EMS_VALUE_UINT_NOTSET -; - -69 -ut8_t - - gwWCcPump_ - = -EMS_VALUE_BOOL_NOTSET -; - -70 -ut8_t - - gwWCcPumpMode_ - = -EMS_VALUE_UINT_NOTSET -; - -71 -ut8_t - - gwWCcPumpTy_ - = -EMS_VALUE_BOOL_NOTSET -; - -72 -ut8_t - - gwWDisTemp_ - = -EMS_VALUE_UINT_NOTSET -; - -73 -ut8_t - - gwWComft_ - = -EMS_VALUE_UINT_NOTSET -; - -76 -ut16_t - - gwwMixTemtu_ - = -EMS_VALUE_USHORT_NOTSET -; - -77 -ut16_t - - gwwBufrBoTemtu_ - = -EMS_VALUE_USHORT_NOTSET -; - -80 -ut8_t - - glFlowTemp_ - = -EMS_VALUE_UINT_NOTSET -; - -81 -ut16_t - - gcurFlowTemp_ - = -EMS_VALUE_USHORT_NOTSET -; - -82 -ut16_t - - gwwStageTemp1_ - = -EMS_VALUE_USHORT_NOTSET -; - -83 -ut16_t - - gwwStageTemp2_ - = -EMS_VALUE_USHORT_NOTSET -; - -84 -ut16_t - - gtTemp_ - = -EMS_VALUE_USHORT_NOTSET -; - -85 -ut8_t - - gbuGas_ - = -EMS_VALUE_BOOL_NOTSET -; - -86 -ut8_t - - gnWk_ - = -EMS_VALUE_BOOL_NOTSET -; - -87 -ut8_t - - gignWk_ - = -EMS_VALUE_BOOL_NOTSET -; - -88 -ut8_t - - ghtPmp_ - = -EMS_VALUE_BOOL_NOTSET -; - -89 -ut8_t - - gwWHt_ - = -EMS_VALUE_BOOL_NOTSET -; - -90 -ut8_t - - gwWCc_ - = -EMS_VALUE_BOOL_NOTSET -; - -91 -ut8_t - - glBuPow_ - = -EMS_VALUE_UINT_NOTSET -; - -92 -ut8_t - - gcurBuPow_ - = -EMS_VALUE_UINT_NOTSET -; - -93 -ut16_t - - gameCu_ - = -EMS_VALUE_USHORT_NOTSET -; - -94 -ut8_t - - gsysPss_ - = -EMS_VALUE_UINT_NOTSET -; - -95  - grviCodeCh_ -[3] = {'\0'}; - -96 -ut16_t - - grviCode_ - = -EMS_VALUE_USHORT_NOTSET -; - -99 -t16_t - - gextTemp_ - = -EMS_VALUE_SHORT_NOTSET -; - -100 -ut16_t - - gboTemp_ - = -EMS_VALUE_USHORT_NOTSET -; - -101 -ut16_t - - gexhauTemp_ - = -EMS_VALUE_USHORT_NOTSET -; - -102 -ut8_t - - gpumpMod_ - = -EMS_VALUE_UINT_NOTSET -; - -103 -ut32_t - - gbuSs_ - = -EMS_VALUE_ULONG_NOTSET -; - -104 -ut32_t - - gbuWkM_ - = -EMS_VALUE_ULONG_NOTSET -; - -105 -ut32_t - - ghtWkM_ - = -EMS_VALUE_ULONG_NOTSET -; - -106 -ut16_t - - gswchTemp_ - = -EMS_VALUE_USHORT_NOTSET -; - -109 -ut8_t - - gwWSTmp_ - = -EMS_VALUE_UINT_NOTSET -; - -110 -ut16_t - - gwWCurTmp_ - = -EMS_VALUE_USHORT_NOTSET -; - -111 -ut16_t - - gwWCurTmp2_ - = -EMS_VALUE_USHORT_NOTSET -; - -112 -ut32_t - - gwWSs_ - = -EMS_VALUE_ULONG_NOTSET -; - -113 -ut32_t - - gwWWkM_ - = -EMS_VALUE_ULONG_NOTSET -; - -114 -ut8_t - - gwWOTime_ - = -EMS_VALUE_BOOL_NOTSET -; - -115 -ut8_t - - gwWDisg_ - = -EMS_VALUE_BOOL_NOTSET -; - -116 -ut8_t - - gwWRdess_ - = -EMS_VALUE_BOOL_NOTSET -; - -117 -ut8_t - - gwWRechgg_ - = -EMS_VALUE_BOOL_NOTSET -; - -118 -ut8_t - - gwWTemtuOK_ - = -EMS_VALUE_BOOL_NOTSET -; - -119 -ut8_t - - gwWCurFlow_ - = -EMS_VALUE_UINT_NOTSET -; - -122 -ut32_t - - gUBAuime_ - = -EMS_VALUE_ULONG_NOTSET -; - -125 -ut8_t - - ghtg_mp_ - = -EMS_VALUE_UINT_NOTSET -; - -126 -ut8_t - - gpump_mod_max_ - = -EMS_VALUE_UINT_NOTSET -; - -127 -ut8_t - - gpump_mod_m_ - = -EMS_VALUE_UINT_NOTSET -; - -128 -ut8_t - - gbuPowm_ - = -EMS_VALUE_UINT_NOTSET -; - -129 -ut8_t - - gbuPowmax_ - = -EMS_VALUE_UINT_NOTSET -; - -130 -t8_t - - gboTemp_off_ - = -EMS_VALUE_INT_NOTSET -; - -131 -t8_t - - gboTemp__ - = -EMS_VALUE_INT_NOTSET -; - -132 -ut8_t - - gbuPiod_ - = -EMS_VALUE_UINT_NOTSET -; - -133 -ut8_t - - gpumpDay_ - = -EMS_VALUE_UINT_NOTSET -; - -136 -ut8_t - - gtFlowTemp_ - = -EMS_VALUE_UINT_NOTSET -; - -137 -ut8_t - - gtBuPow_ - = -EMS_VALUE_UINT_NOTSET -; - -138 -ut8_t - - gtWWPumpPow_ - = -EMS_VALUE_UINT_NOTSET -; - -141 -ut8_t - - gp_w_aive_ - = -EMS_VALUE_BOOL_NOTSET -; - -142 -ut8_t - - ghtg_aive_ - = -EMS_VALUE_BOOL_NOTSET -; - -143 -ut8_t - - gpumpMod2_ - = -EMS_VALUE_UINT_NOTSET -; - -145  -oss_UBAPamWW -( -d -:: -shed_r - -gm -); - -146  -oss_UBAMڙFa -( -d -:: -shed_r - -gm -); - -147  -oss_UBATٮUime -( -d -:: -shed_r - -gm -); - -148  -oss_UBAPams -( -d -:: -shed_r - -gm -); - -149  -oss_UBAMڙWW -( -d -:: -shed_r - -gm -); - -150  -oss_UBAMڙFaPlus -( -d -:: -shed_r - -gm -); - -151  -oss_UBAMڙSlow -( -d -:: -shed_r - -gm -); - -152  -oss_UBAMڙSlowPlus -( -d -:: -shed_r - -gm -); - -153  -oss_UBAMڙSlowPlus2 -( -d -:: -shed_r - -gm -); - -154  -oss_UBAOutdoTemp -( -d -:: -shed_r - -gm -); - -155  -oss_UBASPots -( -d -:: -shed_r - -gm -); - -156  -oss_UBAFgs -( -d -:: -shed_r - -gm -); - -157  -oss_MC10Stus -( -d -:: -shed_r - -gm -); - -158  -oss_UBAManStus -( -d -:: -shed_r - -gm -); - -159  -oss_UBAManDa -( -d -:: -shed_r - -gm -); - -160  -oss_UBAEMesge -( -d -:: -shed_r - -gm -); - -161  -oss_UBADHWStus -( -d -:: -shed_r - -gm -); - -164  -t_wmw_mode -(cڡ * -vue -, cڡ -t8_t - -id -); - -165  -t_wmw_aived -(cڡ * -vue -, cڡ -t8_t - -id -); - -166  -t_pwmw_aived -(cڡ * -vue -, cڡ -t8_t - -id -); - -167  -t_wmw_ڑime -(cڡ * -vue -, cڡ -t8_t - -id -); - -168  -t_wmw_ccuti -(cڡ * -vue -, cڡ -t8_t - -id -); - -169  -t_wmw_mp -(cڡ * -vue -, cڡ -t8_t - -id -); - -170  -t_ow_mp -(cڡ * -vue -, cڡ -t8_t - -id -); - -171  -t_m_pow -(cڡ * -vue -, cڡ -t8_t - -id -); - -172  -t_max_pow -(cڡ * -vue -, cڡ -t8_t - -id -); - -173  -t_hy_ -(cڡ * -vue -, cڡ -t8_t - -id -); - -174  -t_hy_off -(cڡ * -vue -, cڡ -t8_t - -id -); - -175  -t_bu_riod -(cڡ * -vue -, cڡ -t8_t - -id -); - -176  -t_pump_day -(cڡ * -vue -, cڡ -t8_t - -id -); - - @src/devices/connect.cpp - -19  - ~"c.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -C -, -EMSdevi -:: -DeviTy -:: -CONNECT -); - -25 - guuid -:: -log -:: -Logg - -C -:: -logg_ -{ -F_ -( -c -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gC -:: -C -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -31  - gC -:: -devi_fo_web -( -JsAay - & -ro -) { - -34  -C -:: -add_cڋxt_mu -() { - -38  -C -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -43  -C -:: -publish_vues -() { - -47 -bo - -C -:: -upded_vues -() { - -48  -l -; - -52  - gC -:: -cse_commds -() { - - @src/devices/connect.h - -19 #ide -EMSESP_CONNECT_H - - -20  - #EMSESP_CONNECT_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"hrs.h -" - -30  - ~"mq.h -" - -32 -mea - - gem - { - -34 as - cC - : -public - -EMSdevi - { - -35 -public -: - -36 -C -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -38 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -39 -vtu -  -publish_vues -(); - -40 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -41 -vtu - -bo - -upded_vues -(); - -42 -vtu -  -add_cڋxt_mu -(); - -44 - give -: - -45  -uuid -:: -log -:: -Logg - -logg_ -; - -47  -cse_commds -(); - - @src/devices/controller.cpp - -19  - ~"cڌr.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Cڌr -, -EMSdevi -:: -DeviTy -:: -CONTROLLER -); - -25 - guuid -:: -log -:: -Logg - -Cڌr -:: -logg_ -{ -F_ -( -cڌr -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gCڌr -:: -Cڌr -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -31  - gCڌr -:: -add_cڋxt_mu -() { - -34  -Cڌr -:: -devi_fo_web -( -JsAay - & -ro -) { - -38  -Cڌr -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -43  -Cڌr -:: -publish_vues -() { - -47 -bo - -Cڌr -:: -upded_vues -() { - -48  -l -; - -52  - gCڌr -:: -cse_commds -() { - - @src/devices/controller.h - -19 #ide -EMSESP_CONTROLLER_H - - -20  - #EMSESP_CONTROLLER_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"hrs.h -" - -30  - ~"mq.h -" - -32 -mea - - gem - { - -34 as - cCڌr - : -public - -EMSdevi - { - -35 -public -: - -36 -Cڌr -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -38 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -39 -vtu -  -publish_vues -(); - -40 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -41 -vtu - -bo - -upded_vues -(); - -42 -vtu -  -add_cڋxt_mu -(); - -44 - give -: - -45  -uuid -:: -log -:: -Logg - -logg_ -; - -47  -cse_commds -(); - - @src/devices/gateway.cpp - -19  - ~"geway.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Geway -, -EMSdevi -:: -DeviTy -:: -GATEWAY -); - -25 - guuid -:: -log -:: -Logg - -Geway -:: -logg_ -{ -F_ -( -geway -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gGeway -:: -Geway -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -31  - gGeway -:: -add_cڋxt_mu -() { - -34  -Geway -:: -devi_fo_web -( -JsAay - & -ro -) { - -38  -Geway -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -39 -EMSdevi -:: -show_vues -( -shl -); - -43  - gGeway -:: -publish_vues -() { - -47 -bo - -Geway -:: -upded_vues -() { - -48  -l -; - -52  - gGeway -:: -cse_commds -() { - - @src/devices/gateway.h - -19 #ide -EMSESP_GATEWAY_H - - -20  - #EMSESP_GATEWAY_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"hrs.h -" - -30  - ~"mq.h -" - -32 -mea - - gem - { - -34 as - cGeway - : -public - -EMSdevi - { - -35 -public -: - -36 -Geway -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -38 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -39 -vtu -  -publish_vues -(); - -40 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -41 -vtu - -bo - -upded_vues -(); - -42 -vtu -  -add_cڋxt_mu -(); - -44 - give -: - -45  -uuid -:: -log -:: -Logg - -logg_ -; - -47  -cse_commds -(); - - @src/devices/heatpump.cpp - -19  - ~"hump.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Hump -, -EMSdevi -:: -DeviTy -:: -HEATPUMP -); - -25 - guuid -:: -log -:: -Logg - -Hump -:: -logg_ -{ -F_ -( -hump -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gHump -:: -Hump -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -29 -LOG_DEBUG -( -F -("Addgew HPummodu wh devi ID 0x%02X"), -devi_id -); - -32 -gi_gm_ty -(0x047B, -F -("HP1"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_HPMڙ1 -(t); }); - -33 -gi_gm_ty -(0x042B, -F -("HP2"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_HPMڙ2 -(t); }); - -37  - gHump -:: -add_cڋxt_mu -() { - -40  -Hump -:: -devi_fo_web -( -JsAay - & -ro -) { - -44  -Hump -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -49  -Hump -:: -publish_vues -() { - -53 -bo - -Hump -:: -upded_vues -() { - -54  -l -; - -58  - gHump -:: -cse_commds -() { - -61 #agm -GCC - -dgnoic - -push - - -62 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -68  -Hump -:: -oss_HPMڙ1 -( -d -:: -shed_r - -gm -) { - -76  -Hump -:: -oss_HPMڙ2 -( -d -:: -shed_r - -gm -) { - -80 #agm -GCC - -dgnoic - -p - - - @src/devices/heatpump.h - -19 #ide -EMSESP_HEATPUMP_H - - -20  - #EMSESP_HEATPUMP_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"hrs.h -" - -30  - ~"mq.h -" - -32 -mea - - gem - { - -34 as - cHump - : -public - -EMSdevi - { - -35 -public -: - -36 -Hump -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -38 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -39 -vtu -  -publish_vues -(); - -40 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -41 -vtu - -bo - -upded_vues -(); - -42 -vtu -  -add_cڋxt_mu -(); - -44 - give -: - -45  -uuid -:: -log -:: -Logg - -logg_ -; - -47  -cse_commds -(); - -49  -oss_HPMڙ1 -( -d -:: -shed_r - -gm -); - -50  -oss_HPMڙ2 -( -d -:: -shed_r - -gm -); - - @src/devices/mixing.cpp - -19  - ~"mixg.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Mixg -, -EMSdevi -:: -DeviTy -:: -MIXING -); - -25 - guuid -:: -log -:: -Logg - -Mixg -:: -logg_ -{ -F_ -( -mixg -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gMixg -:: -Mixg -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -29 -LOG_DEBUG -( -F -("Addgew Mixg modu wh devi ID 0x%02X"), -devi_id -); - -31 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_MMPLUS -) { - -32 i( -devi_id - <= 0x27) { - -34 -gi_gm_ty -( -devi_id - - 0x20 + 0x02D7, -F -("MMPLUSStusMesge_HC"), -ue -, [&]( -d -:: -shed_r - -t -) { - -35 -oss_MMPLUSStusMesge_HC -( -t -); - -39 -gi_gm_ty -( -devi_id - - 0x28 + 0x0331, -F -("MMPLUSStusMesge_WWC"), -ue -, [&]( -d -:: -shed_r - -t -) { - -40 -oss_MMPLUSStusMesge_WWC -( -t -); - -46 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_MM10 -) { - -47 -gi_gm_ty -(0x00AA, -F -("MMCfigMesge"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_MMCfigMesge -(t); }); - -48 -gi_gm_ty -(0x00AB, -F -("MMStusMesge"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_MMStusMesge -(t); }); - -49 -gi_gm_ty -(0x00AC, -F -("MMSMesge"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_MMSMesge -(t); }); - -53 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_IPM -) { - -54 -gi_gm_ty -(0x010C, -F -("IPMSMesge"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_IPMStusMesge -(t); }); - -59  - gMixg -:: -add_cڋxt_mu -() { - -63  -Mixg -:: -devi_fo_web -( -JsAay - & -ro -) { - -64 i( -ty_ - = -Ty -:: -NONE -) { - -68 i( - gty_ - = -Ty -:: -WWC -) { - -69 -nd_vue_js -( -ro -, "", -F -("Wm W Ccu"), -hc_ -, -nuαr -); - -70 -nd_vue_js -( -ro -, "", -F -("Cuwm wemtu"), -owTemp_ -, -F_ -( -deges -), 10); - -71 -nd_vue_js -( -ro -, "", -F -("Cupumus"), -pump_ -, -nuαr -); - -72 -nd_vue_js -( -ro -, "", -F -("Cumtu stus"), -us_ -, -nuαr -); - -74 -nd_vue_js -( -ro -, "", -F -("Htg Ccu"), -hc_ -, -nuαr -); - -75 -nd_vue_js -( -ro -, "", -F -("Cuowemtu"), -owTemp_ -, -F_ -( -deges -), 10); - -76 -nd_vue_js -( -ro -, "", -F -("Spoowemtu"), -owSTemp_ -, -F_ -( -deges -)); - -77 -nd_vue_js -( -ro -, "", -F -("Cupumus"), -pump_ -, -nuαr -, -EMS_VALUE_BOOL -); - -78 -nd_vue_js -( -ro -, "", -F -("Cuvvus"), -us_ -, -F_ -( -r -)); - -83 -bo - - gMixg -:: -upded_vues -() { - -84 i( -chged_ -) { - -85 -chged_ - = -l -; - -86  - gue -; - -88  - gl -; - -92  - gMixg -:: -cse_commds -() { - -96  -Mixg -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -97 -EMSdevi -:: -show_vues -( -shl -); - -99 i( - gty_ - = -Ty -:: -NONE -) { - -103 i( - gty_ - = -Ty -:: -WWC -) { - -104 -t_vue -( -shl -, 2, -F -("Wm W Ccu"), -hc_ -, -nuαr -); - -105 -t_vue -( -shl -, 4, -F -("Cuwm wemtu"), -owTemp_ -, -F_ -( -deges -), 10); - -106 -t_vue -( -shl -, 4, -F -("Cupumus"), -pump_ -, -nuαr -); - -107 -t_vue -( -shl -, 4, -F -("Cumtu stus"), -us_ -, -nuαr -); - -109 -t_vue -( -shl -, 2, -F -("Htg Ccu"), -hc_ -, -nuαr -); - -110 -t_vue -( -shl -, 4, -F -("Cuowemtu"), -owTemp_ -, -F_ -( -deges -), 10); - -111 -t_vue -( -shl -, 4, -F -("Spoowemtu"), -owSTemp_ -, -F_ -( -deges -)); - -112 -t_vue -( -shl -, 4, -F -("Cupumus"), -pump_ -, -nuαr -, -EMS_VALUE_BOOL -); - -113 -t_vue -( -shl -, 4, -F -("Cuvvus"), -us_ -, -F_ -( -r -)); - -117 - gshl -. -n -(); - -122  - gMixg -:: -publish_vues -() { - -123 -SticJsDocumt -< -EMSESP_MAX_JSON_SIZE_SMALL -> -doc -; - -124  - gs -[5]; - -126  - gty_ -) { - -127  - gTy -:: -HC -: - -128 -doc -["type"] = "hc"; - -129 i( - gHrs -:: -hasVue -( -owTemp_ -)) { - -130 -doc -["owTemp"] = () -owTemp_ - / 10; - -132 i( - gHrs -:: -hasVue -( -owSTemp_ -)) { - -133 -doc -["owSTemp"] = -owSTemp_ -; - -135 i( - gHrs -:: -hasVue -( -pump_ -)) { - -136 -doc -["pumpStus"] = -Hrs -:: -nd_vue -( -s -, -pump_ -, -EMS_VALUE_BOOL -); - -138 i( - gHrs -:: -hasVue -( -us_ -)) { - -139 -doc -["vveStus"] = -us_ -; - -142  - gTy -:: -WWC -: - -143 -doc -["type"] = "wwc"; - -144 i( - gHrs -:: -hasVue -( -owTemp_ -)) { - -145 -doc -["wwTemp"] = () -owTemp_ - / 10; - -147 i( - gHrs -:: -hasVue -( -pump_ -)) { - -148 -doc -["pumpStus"] = -pump_ -; - -150 i( - gHrs -:: -hasVue -( -us_ -)) { - -151 -doc -["mpStus"] = -us_ -; - -154  - gTy -:: -NONE -: - -159  - gtic -[30]; - -160 -y -( -tic -, "mixing_data", 30); - -161 -t -( -tic -, -Hrs -:: - -( -s -, -g_devi_id -() - 0x20 + 1), 30); - -162 - gMq -:: -publish -( -tic -, -doc -); - -168  - gMixg -:: -oss_MMPLUSStusMesge_HC -( -d -:: -shed_r - -gm -) { - -169 -ty_ - = -Ty -:: -HC -; - -170 - ghc_ - = -gm --> -ty_id - - 0x02D7 + 1; - -171 - gchged_ - | -gm --> -ad_vue -( -owTemp_ -, 3); - -172 - gchged_ - | -gm --> -ad_vue -( -owSTemp_ -, 5); - -173 - gchged_ - | -gm --> -ad_vue -( -pump_ -, 0); - -174 - gchged_ - | -gm --> -ad_vue -( -us_ -, 2); - -180  - gMixg -:: -oss_MMPLUSStusMesge_WWC -( -d -:: -shed_r - -gm -) { - -181 -ty_ - = -Ty -:: -WWC -; - -182 - ghc_ - = -gm --> -ty_id - - 0x0331 + 1; - -183 - gchged_ - | -gm --> -ad_vue -( -owTemp_ -, 0); - -184 - gchged_ - | -gm --> -ad_vue -( -pump_ -, 2); - -185 - gchged_ - | -gm --> -ad_vue -( -us_ -, 11); - -191  - gMixg -:: -oss_IPMStusMesge -( -d -:: -shed_r - -gm -) { - -192 -ty_ - = -Ty -:: -HC -; - -193 - ghc_ - = -g_devi_id -() - 0x20 + 1; - -194 -ut8_t - - gismixed - = 0; - -195 - gchged_ - | -gm --> -ad_vue -( -ismixed -, 0); - -196 i( - gismixed - == 0) { - -199 i( - gismixed - == 2) { - -200 -chged_ - | -gm --> -ad_vue -( -owTemp_ -, 3); - -201 - gchged_ - | -gm --> -ad_vue -( -owSTemp_ -, 5); - -202 - gchged_ - | -gm --> -ad_vue -( -us_ -, 2); - -204 - gchged_ - | -gm --> -ad_bvue -( -pump_ -, 1, 0); - -210  - gMixg -:: -oss_MMStusMesge -( -d -:: -shed_r - -gm -) { - -211 -ty_ - = -Ty -:: -HC -; - -216 - ghc_ - = -g_devi_id -() - 0x20 + 1; - -217 - gchged_ - | -gm --> -ad_vue -( -owTemp_ -, 1); - -218 - gchged_ - | -gm --> -ad_vue -( -pump_ -, 3); - -219 - gchged_ - | -gm --> -ad_vue -( -owSTemp_ -, 0); - -220 - gchged_ - | -gm --> -ad_vue -( -us_ -, 4); - -223 #agm -GCC - -dgnoic - -push - - -224 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -228  - gMixg -:: -oss_MMCfigMesge -( -d -:: -shed_r - -gm -) { - -229 -hc_ - = -g_devi_id -() - 0x20 + 1; - -236  - gMixg -:: -oss_MMSMesge -( -d -:: -shed_r - -gm -) { - -237 -hc_ - = -g_devi_id -() - 0x20 + 1; - -242 #agm -GCC - -dgnoic - -p - - - @src/devices/mixing.h - -19 #ide -EMSESP_MIXING_H - - -20  - #EMSESP_MIXING_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"hrs.h -" - -30  - ~"mq.h -" - -32 -mea - - gem - { - -34 as - cMixg - : -public - -EMSdevi - { - -35 -public -: - -36 -Mixg -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -38 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -39 -vtu -  -publish_vues -(); - -40 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -41 -vtu - -bo - -upded_vues -(); - -42 -vtu -  -add_cڋxt_mu -(); - -44 - give -: - -45  -uuid -:: -log -:: -Logg - -logg_ -; - -47  -cse_commds -(); - -49  -oss_MMPLUSStusMesge_HC -( -d -:: -shed_r - -gm -); - -50  -oss_MMPLUSStusMesge_WWC -( -d -:: -shed_r - -gm -); - -51  -oss_IPMStusMesge -( -d -:: -shed_r - -gm -); - -52  -oss_MMStusMesge -( -d -:: -shed_r - -gm -); - -53  -oss_MMCfigMesge -( -d -:: -shed_r - -gm -); - -54  -oss_MMSMesge -( -d -:: -shed_r - -gm -); - -56 as - cTy - { - -57 - gNONE -, - -58 - gHC -, - -59 - gWWC - - -62 - give -: - -63 -ut16_t - -hc_ - = -EMS_VALUE_USHORT_NOTSET -; - -64 -ut16_t - - gowTemp_ - = -EMS_VALUE_USHORT_NOTSET -; - -65 -ut8_t - - gpump_ - = -EMS_VALUE_UINT_NOTSET -; - -66 -t8_t - - gus_ - = -EMS_VALUE_UINT_NOTSET -; - -67 -ut8_t - - gowSTemp_ - = -EMS_VALUE_UINT_NOTSET -; - -68 -Ty - - gty_ - = Ty:: -NONE -; - -69 -bo - - gchged_ - = -l -; - - @src/devices/solar.cpp - -19  - ~"sެ.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Sެ -, -EMSdevi -:: -DeviTy -:: -SOLAR -); - -25 - guuid -:: -log -:: -Logg - -Sެ -:: -logg_ -{ -F_ -( -sެ -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gSެ -:: -Sެ -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -29 -LOG_DEBUG -( -F -("Addgew Sެ modu wh devi ID 0x%02X"), -devi_id -); - -32 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_SM10 -) { - -33 -gi_gm_ty -(0x0097, -F -("SM10Mڙ"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_SM10Mڙ -(t); }); - -36 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_SM100 -) { - -37 -gi_gm_ty -(0x0362, -F -("SM100Mڙ"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_SM100Mڙ -(t); }); - -38 -gi_gm_ty -(0x0363, -F -("SM100Mڙ2"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_SM100Mڙ2 -(t); }); - -39 -gi_gm_ty -(0x0366, -F -("SM100Cfig"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_SM100Cfig -(t); }); - -41 -gi_gm_ty -(0x0364, -F -("SM100Stus"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_SM100Stus -(t); }); - -42 -gi_gm_ty -(0x036A, -F -("SM100Stus2"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_SM100Stus2 -(t); }); - -43 -gi_gm_ty -(0x038E, -F -("SM100Ergy"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_SM100Ergy -(t); }); - -46 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_ISM -) { - -47 -gi_gm_ty -(0x0103, -F -("ISM1StusMesge"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_ISM1StusMesge -(t); }); - -48 -gi_gm_ty -(0x0101, -F -("ISM1S"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_ISM1S -(t); }); - -53  - gSެ -:: -add_cڋxt_mu -() { - -57  -Sެ -:: -devi_fo_web -( -JsAay - & -ro -) { - -58 -nd_vue_js -( -ro -, "", -F -("C܁emtu (TS1)"), -cTemp_ -, -F_ -( -deges -), 10); - -59 -nd_vue_js -( -ro -, "", -F -("Tk btomemtu (TS2)"), -nkBtomTemp_ -, -F_ -( -deges -), 10); - -60 -nd_vue_js -( -ro -, "", -F -("Tk btomemtu (TS5)"), -nkBtomTemp2_ -, -F_ -( -deges -), 10); - -61 -nd_vue_js -( -ro -, "", -F -("Hexchgemtu (TS6)"), -htExchgTemp_ -, -F_ -( -deges -), 10); - -62 -nd_vue_js -( -ro -, "", -F -("Sެummoduti (PS1)"), -sެPumpModuti_ -, -F_ -( -r -)); - -63 -nd_vue_js -( -ro -, "", -F -("Cyldummoduti (PS5)"), -cyldPumpModuti_ -, -F_ -( -r -)); - -64 -nd_vue_js -( -ro -, "", -F -("Vv(VS2衩us"), -vveStus_ -, -nuαr -, -EMS_VALUE_BOOL -); - -65 -nd_vue_js -( -ro -, "", -F -("Sެ Pum(PS1aive"), -sެPump_ -, -nuαr -, -EMS_VALUE_BOOL -); - -67 i( - gHrs -:: -hasVue -( -pumpWkM_ -)) { - -68 -JsObje - -daEmt -; - -69 - gdaEmt - = -ro -. -NeedObje -(); - -70 - gdaEmt -["me"] = -F -("Pump workingime"); - -71 - gd -:: -rg - -time_r -(60, '\0'); - -72 -tf_P -(& -time_r -[0],ime_r. -cy -(+ 1, -PSTR -("%d day%d hour%d mus"), -pumpWkM_ - / 1440, (pumpWorkMin_ % 1440) / 60,umpWorkMin_ % 60); - -73 - gdaEmt -["vue"] = -time_r -; - -76 -nd_vue_js -( -ro -, "", -F -("Tk Hd"), -nkHd_ -, -nuαr -, -EMS_VALUE_BOOL -); - -77 -nd_vue_js -( -ro -, "", -F -("C shutdown"), -cShutdown_ -, -nuαr -, -EMS_VALUE_BOOL -); - -79 -nd_vue_js -( -ro -, "", -F -("Ergya hour"), -gyLaHour_ -, -F_ -( -wh -), 10); - -80 -nd_vue_js -( -ro -, "", -F -("Ergyoday"), -gyToday_ -, -F_ -( -wh -)); - -81 -nd_vue_js -( -ro -, "", -F -("Ergyٮ"), -gyTٮ_ -, -F_ -( -kwh -), 10); - -85  - gSެ -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -86 -EMSdevi -:: -show_vues -( -shl -); - -88 -t_vue -( -shl -, 2, -F -("C܁emtu (TS1)"), -cTemp_ -, -F_ -( -deges -), 10); - -89 -t_vue -( -shl -, 2, -F -("Btomemtu (TS2)"), -nkBtomTemp_ -, -F_ -( -deges -), 10); - -90 -t_vue -( -shl -, 2, -F -("Btomemtu (TS5)"), -nkBtomTemp2_ -, -F_ -( -deges -), 10); - -91 -t_vue -( -shl -, 2, -F -("Hexchgemtu (TS6)"), -htExchgTemp_ -, -F_ -( -deges -), 10); - -92 -t_vue -( -shl -, 2, -F -("Sެummoduti (PS1)"), -sެPumpModuti_ -, -F_ -( -r -)); - -93 -t_vue -( -shl -, 2, -F -("Cyldummoduti (PS5)"), -cyldPumpModuti_ -, -F_ -( -r -)); - -94 -t_vue -( -shl -, 2, -F -("Vv(VS2衩us"), -vveStus_ -, -nuαr -, -EMS_VALUE_BOOL -); - -95 -t_vue -( -shl -, 2, -F -("Sެ Pum(PS1aive"), -sެPump_ -, -nuαr -, -EMS_VALUE_BOOL -); - -97 i( - gHrs -:: -hasVue -( -pumpWkM_ -)) { - -98 -shl -. -tn -( -F -(" Pumwkgime: %d day%d hour%d mus"), -pumpWkM_ - / 1440, (pumpWorkMin_ % 1440) / 60,umpWorkMin_ % 60); - -101 -t_vue -( -shl -, 2, -F -("Tk Hd"), -nkHd_ -, -nuαr -, -EMS_VALUE_BOOL -); - -102 -t_vue -( -shl -, 2, -F -("C shutdown"), -cShutdown_ -, -nuαr -, -EMS_VALUE_BOOL -); - -104 -t_vue -( -shl -, 2, -F -("Ergya hour"), -gyLaHour_ -, -F_ -( -wh -), 10); - -105 -t_vue -( -shl -, 2, -F -("Ergyoday"), -gyToday_ -, -F_ -( -wh -)); - -106 -t_vue -( -shl -, 2, -F -("Ergyٮ"), -gyTٮ_ -, -F_ -( -kwh -), 10); - -110  - gSެ -:: -publish_vues -() { - -111 -SticJsDocumt -< -EMSESP_MAX_JSON_SIZE_MEDIUM -> -doc -; - -113  - gs -[10]; - -115 i( - gHrs -:: -hasVue -( -cTemp_ -)) { - -116 -doc -["cTemp"] = () -cTemp_ - / 10; - -119 i( - gHrs -:: -hasVue -( -nkBtomTemp_ -)) { - -120 -doc -["nkBtomTemp"] = () -nkBtomTemp_ - / 10; - -123 i( - gHrs -:: -hasVue -( -nkBtomTemp2_ -)) { - -124 -doc -["nkBtomTemp2"] = () -nkBtomTemp2_ - / 10; - -127 i( - gHrs -:: -hasVue -( -htExchgTemp_ -)) { - -128 -doc -["htExchgTemp"] = () -htExchgTemp_ - / 10; - -131 i( - gHrs -:: -hasVue -( -sެPumpModuti_ -)) { - -132 -doc -["sެPumpModuti"] = -sެPumpModuti_ -; - -135 i( - gHrs -:: -hasVue -( -cyldPumpModuti_ -)) { - -136 -doc -["cyldPumpModuti"] = -cyldPumpModuti_ -; - -139 i( - gHrs -:: -hasVue -( -sެPump_ -, -EMS_VALUE_BOOL -)) { - -140 - gdoc -["sެPump"] = -Hrs -:: -nd_vue -( -s -, -sެPump_ -, -EMS_VALUE_BOOL -); - -143 i( - gHrs -:: -hasVue -( -vveStus_ -, -EMS_VALUE_BOOL -)) { - -144 - gdoc -["vveStus"] = -Hrs -:: -nd_vue -( -s -, -vveStus_ -, -EMS_VALUE_BOOL -); - -147 i( - gHrs -:: -hasVue -( -pumpWkM_ -)) { - -148 -doc -["pumpWkM"] = -pumpWkM_ -; - -151 i( - gHrs -:: -hasVue -( -nkHd_ -, -EMS_VALUE_BOOL -)) { - -152 - gdoc -["nkHd"] = -Hrs -:: -nd_vue -( -s -, -nkHd_ -, -EMS_VALUE_BOOL -); - -155 i( - gHrs -:: -hasVue -( -cShutdown_ -, -EMS_VALUE_BOOL -)) { - -156 - gdoc -["cShutdown"] = -Hrs -:: -nd_vue -( -s -, -cShutdown_ -, -EMS_VALUE_BOOL -); - -159 i( - gHrs -:: -hasVue -( -gyLaHour_ -)) { - -160 -doc -["gyLaHour"] = () -gyLaHour_ - / 10; - -163 i( - gHrs -:: -hasVue -( -gyToday_ -)) { - -164 -doc -["gyToday"] = -gyToday_ -; - -167 i( - gHrs -:: -hasVue -( -gyTٮ_ -)) { - -168 -doc -["gyTٮ"] = () -gyTٮ_ - / 10; - -172 i(! - gdoc -. -isNu -()) { - -173 - gMq -:: -publish -( -F -("sm_da"), -doc -); - -178 -bo - - gSެ -:: -upded_vues -() { - -179 i( -chged_ -) { - -180 -chged_ - = -l -; - -181  - gue -; - -183  - gl -; - -187  - gSެ -:: -cse_commds -() { - -191  -Sެ -:: -oss_SM10Mڙ -( -d -:: -shed_r - -gm -) { - -192 -chged_ - | -gm --> -ad_vue -( -cTemp_ -, 2); - -193 - gchged_ - | -gm --> -ad_vue -( -nkBtomTemp_ -, 5); - -194 - gchged_ - | -gm --> -ad_vue -( -sެPumpModuti_ -, 4); - -195 - gchged_ - | -gm --> -ad_bvue -( -sެPump_ -, 7, 1); - -196 - gchged_ - | -gm --> -ad_vue -( -pumpWkM_ -, 8); - -210  - gSެ -:: -oss_SM100Mڙ -( -d -:: -shed_r - -gm -) { - -211 -chged_ - | -gm --> -ad_vue -( -cTemp_ -, 0); - -212 - gchged_ - | -gm --> -ad_vue -( -nkBtomTemp_ -, 2); - -213 - gchged_ - | -gm --> -ad_vue -( -nkBtomTemp2_ -, 16); - -214 - gchged_ - | -gm --> -ad_vue -( -htExchgTemp_ -, 20); - -217 #agm -GCC - -dgnoic - -push - - -218 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -222  - gSެ -:: -oss_SM100Mڙ2 -( -d -:: -shed_r - -gm -) { - -226 #agm -GCC - -dgnoic - -p - - -230  -Sެ -:: -oss_SM100Cfig -( -d -:: -shed_r - -gm -) { - -231 -chged_ - | -gm --> -ad_vue -( -avaabyFg_ -, 0); - -232 - gchged_ - | -gm --> -ad_vue -( -cfigFg_ -, 1); - -233 - gchged_ - | -gm --> -ad_vue -( -urFg_ -, 2); - -242  - gSެ -:: -oss_SM100Stus -( -d -:: -shed_r - -gm -) { - -243 -ut8_t - -sެpumpmod - = -sެPumpModuti_ -; - -244 -ut8_t - - gcyldpumpmod - = -cyldPumpModuti_ -; - -245 - gchged_ - | -gm --> -ad_vue -( -cyldPumpModuti_ -, 8); - -246 - gchged_ - | -gm --> -ad_vue -( -sެPumpModuti_ -, 9); - -248 i( - gsެpumpmod - =0 && -sެPumpModuti_ - == 100) { - -249 -sެPumpModuti_ - = 15; - -252 i( - gcyldpumpmod - =0 && -cyldPumpModuti_ - == 100) { - -253 -cyldPumpModuti_ - = 15; - -255 - gchged_ - | -gm --> -ad_bvue -( -nkHd_ -, 3, 1); - -256 - gchged_ - | -gm --> -ad_bvue -( -cShutdown_ -, 3, 0); - -265  - gSެ -:: -oss_SM100Stus2 -( -d -:: -shed_r - -gm -) { - -266 -chged_ - | -gm --> -ad_bvue -( -vveStus_ -, 4, 2); - -267 - gchged_ - | -gm --> -ad_bvue -( -sެPump_ -, 10, 2); - -274  - gSެ -:: -oss_SM100Ergy -( -d -:: -shed_r - -gm -) { - -275 -chged_ - | -gm --> -ad_vue -( -gyLaHour_ -, 0); - -276 - gchged_ - | -gm --> -ad_vue -( -gyToday_ -, 4); - -277 - gchged_ - | -gm --> -ad_vue -( -gyTٮ_ -, 8); - -284  - gSެ -:: -oss_ISM1StusMesge -( -d -:: -shed_r - -gm -) { - -285 -chged_ - | -gm --> -ad_vue -( -cTemp_ -, 4); - -286 - gchged_ - | -gm --> -ad_vue -( -nkBtomTemp_ -, 6); - -287 -ut16_t - - gWh - = 0xFFFF; - -288 - gchged_ - | -gm --> -ad_vue -( -Wh -, 2); - -290 i( - gWh - != 0xFFFF) { - -291 -gyLaHour_ - = -Wh - * 10; - -294 - gchged_ - | -gm --> -ad_bvue -( -sެPump_ -, 8, 0); - -295 - gchged_ - | -gm --> -ad_vue -( -pumpWkM_ -, 10, 3); - -296 - gchged_ - | -gm --> -ad_bvue -( -cShutdown_ -, 9, 0); - -297 - gchged_ - | -gm --> -ad_bvue -( -nkHd_ -, 9, 2); - -303  - gSެ -:: -oss_ISM1S -( -d -:: -shed_r - -gm -) { - -304 -chged_ - | -gm --> -ad_vue -( -ot_maxBtomTemp_ -, 6); - - @src/devices/solar.h - -19 #ide -EMSESP_SOLAR_H - - -20  - #EMSESP_SOLAR_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"hrs.h -" - -30  - ~"mq.h -" - -32 -mea - - gem - { - -34 as - cSެ - : -public - -EMSdevi - { - -35 -public -: - -36 -Sެ -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -38 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -39 -vtu -  -publish_vues -(); - -40 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -41 -vtu - -bo - -upded_vues -(); - -42 -vtu -  -add_cڋxt_mu -(); - -44 - give -: - -45  -uuid -:: -log -:: -Logg - -logg_ -; - -47  -cse_commds -(); - -49 -t16_t - - gcTemp_ - = -EMS_VALUE_SHORT_NOTSET -; - -50 -t16_t - - gnkBtomTemp_ - = -EMS_VALUE_SHORT_NOTSET -; - -51 -t16_t - - gnkBtomTemp2_ - = -EMS_VALUE_SHORT_NOTSET -; - -52 -t16_t - - ghtExchgTemp_ - = -EMS_VALUE_SHORT_NOTSET -; - -53 -ut8_t - - gsެPumpModuti_ - = -EMS_VALUE_UINT_NOTSET -; - -54 -ut8_t - - gcyldPumpModuti_ - = -EMS_VALUE_UINT_NOTSET -; - -55 -ut8_t - - gsެPump_ - = -EMS_VALUE_BOOL_NOTSET -; - -56 -ut8_t - - gvveStus_ - = -EMS_VALUE_BOOL_NOTSET -; - -57 -t16_t - - got_maxBtomTemp_ - = -EMS_VALUE_SHORT_NOTSET -; - -58 -ut32_t - - ggyLaHour_ - = -EMS_VALUE_ULONG_NOTSET -; - -59 -ut32_t - - ggyToday_ - = -EMS_VALUE_ULONG_NOTSET -; - -60 -ut32_t - - ggyTٮ_ - = -EMS_VALUE_ULONG_NOTSET -; - -61 -ut32_t - - gpumpWkM_ - = -EMS_VALUE_ULONG_NOTSET -; - -62 -ut8_t - - gnkHd_ - = -EMS_VALUE_BOOL_NOTSET -; - -63 -ut8_t - - gcShutdown_ - = -EMS_VALUE_BOOL_NOTSET -; - -65 -ut8_t - - gavaabyFg_ - = -EMS_VALUE_BOOL_NOTSET -; - -66 -ut8_t - - gcfigFg_ - = -EMS_VALUE_BOOL_NOTSET -; - -67 -ut8_t - - gurFg_ - = -EMS_VALUE_BOOL_NOTSET -; - -68 -bo - - gchged_ - = -l -; - -70  -oss_SM10Mڙ -( -d -:: -shed_r - -gm -); - -71  -oss_SM100Mڙ -( -d -:: -shed_r - -gm -); - -72  -oss_SM100Mڙ2 -( -d -:: -shed_r - -gm -); - -74  -oss_SM100Cfig -( -d -:: -shed_r - -gm -); - -76  -oss_SM100Stus -( -d -:: -shed_r - -gm -); - -77  -oss_SM100Stus2 -( -d -:: -shed_r - -gm -); - -78  -oss_SM100Ergy -( -d -:: -shed_r - -gm -); - -80  -oss_ISM1StusMesge -( -d -:: -shed_r - -gm -); - -81  -oss_ISM1S -( -d -:: -shed_r - -gm -); - - @src/devices/switch.cpp - -19  - ~"swch.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Swch -, -EMSdevi -:: -DeviTy -:: -SWITCH -); - -25 - guuid -:: -log -:: -Logg - -Swch -:: -logg_ -{ -F_ -(), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gSwch -:: -Swch -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -31  - gSwch -:: -add_cڋxt_mu -() { - -34  -Swch -:: -devi_fo_web -( -JsAay - & -ro -) { - -38  -Swch -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -43  -Swch -:: -publish_vues -() { - -47 -bo - -Swch -:: -upded_vues -() { - -48  -l -; - -52  - gSwch -:: -cse_commds -() { - - @src/devices/switch.h - -19 #ide -EMSESP_SWITCH_H - - -20  - #EMSESP_SWITCH_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"hrs.h -" - -30  - ~"mq.h -" - -32 -mea - - gem - { - -34 as - cSwch - : -public - -EMSdevi - { - -35 -public -: - -36 -Swch -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -38 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -39 -vtu -  -publish_vues -(); - -40 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -41 -vtu - -bo - -upded_vues -(); - -42 -vtu -  -add_cڋxt_mu -(); - -44 - give -: - -45  -uuid -:: -log -:: -Logg - -logg_ -; - -47  -cse_commds -(); - - @src/devices/thermostat.cpp - -19  - ~"thmo.h -" - -21 -mea - - gem - { - -23 -REGISTER_FACTORY -( -Thmo -, -EMSdevi -:: -DeviTy -:: -THERMOSTAT -); - -25 - guuid -:: -log -:: -Logg - -Thmo -:: -logg_ -{ -F_ -( -thmo -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gThmo -:: -Thmo -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -28 : -EMSdevi -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -) { - -29 -ut8_t - - gau_ma_thmo - = -EMSESP -:: -au_ma_thmo -(); - -30 -ut8_t - - gma_thmo - = -EMSESP_DEFAULT_MASTER_THERMOSTAT -; - -31 - gEMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -32 -ma_thmo - = -gs -.master_thermostat; - -35 -ut8_t - - gmod - = -this --> -mod -(); - -40 i(( - gma_thmo - = -devi_id -) - -41 || (( -ma_thmo - = -EMSESP_DEFAULT_MASTER_THERMOSTAT -&& ( -devi_id - < 0x19) - -42 && (( -au_ma_thmo - = -EMSESP_DEFAULT_MASTER_THERMOSTAT -|| ( -devi_id - -rve_mem -(25); - -48 -gi_gm_ty -( -EMS_TYPE_RCOutdoTemp -, -F -("RCOutdoTemp"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RCOutdoTemp -(t); }); - -49 -gi_gm_ty -( -EMS_TYPE_RCTime -, -F -("RCTime"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RCTime -(t); }); - -52 i( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC10 -) { - -53 -mڙ_tyids - = {0xB1}; - -54 - gt_tyids - = {0xB0}; - -55  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -56 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("RC10Mڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC10Mڙ -(t); }); - -57 -gi_gm_ty -( -t_tyids -[ -i -], -F -("RC10S"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC10S -(t); }); - -61 } i(( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC35 -|| ( -mod - =EMSdevi:: -EMS_DEVICE_FLAG_RC30_1 -)) { - -62 -mڙ_tyids - = {0x3E, 0x48, 0x52, 0x5C}; - -63 - gt_tyids - = {0x3D, 0x47, 0x51, 0x5B}; - -64 - gtim_tyids - = {0x3F, 0x49, 0x53, 0x5D}; - -65  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -66 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("RC35Mڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC35Mڙ -(t); }); - -67 -gi_gm_ty -( -t_tyids -[ -i -], -F -("RC35S"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC35S -(t); }); - -69 -gi_gm_ty -( -EMS_TYPE_IBAStgs -, -F -("IBAStgs"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_IBAStgs -(t); }); - -70 -gi_gm_ty -( -EMS_TYPE_wwStgs -, -F -("WWStgs"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_RC35wwStgs -(t); }); - -73 } i( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC20 -) { - -74 -mڙ_tyids - = {0x91}; - -75 - gt_tyids - = {0xA8}; - -76 i( - gau_ma_thmo - = -devi_id -) { - -77  -ut8_t - -i - = 0; - gi - < - gmڙ_tyids -. -size -(); i++) { - -78 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("RC20Mڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC20Mڙ -(t); }); - -79 -gi_gm_ty -( -t_tyids -[ -i -], -F -("RC20S"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC20S -(t); }); - -82 -gi_gm_ty -(0xAF, -F -("RC20Reme"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC20Reme -(t); }); - -85 } i( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC20_2 -) { - -86 -mڙ_tyids - = {0xAE}; - -87 - gt_tyids - = {0xAD}; - -88 i( - gau_ma_thmo - = -devi_id -) { - -89  -ut8_t - -i - = 0; - gi - < - gmڙ_tyids -. -size -(); i++) { - -90 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("RC20Mڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC20Mڙ_2 -(t); }); - -91 -gi_gm_ty -( -t_tyids -[ -i -], -F -("RC20S"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC20S_2 -(t); }); - -94 -gi_gm_ty -(0xAF, -F -("RC20Reme"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC20Reme -(t); }); - -97 } i( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC30 -) { - -98 -mڙ_tyids - = {0x41}; - -99 - gt_tyids - = {0xA7}; - -100  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -101 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("RC30Mڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC30Mڙ -(t); }); - -102 -gi_gm_ty -( -t_tyids -[ -i -], -F -("RC30S"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC30S -(t); }); - -106 } i( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_EASY -) { - -107 -mڙ_tyids - = {0x0A}; - -108 - gt_tyids - = {}; - -109 -gi_gm_ty -( -mڙ_tyids -[0], -F -("EasyMڙ"), -ue -, [&]( -d -:: -shed_r - -t -{ -oss_EasyMڙ -(t); }); - -112 } i(( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC300 -|| ( -mod - =EMSdevi:: -EMS_DEVICE_FLAG_RC100 -)) { - -113 -mڙ_tyids - = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; - -114 - gt_tyids - = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; - -115  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -116 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("RC300Mڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC300Mڙ -(t); }); - -117 -gi_gm_ty -( -t_tyids -[ -i -], -F -("RC300S"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC300S -(t); }); - -119 -gi_gm_ty -(0x31D, -F -("RC300WWmode"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC300WWmode -(t); }); - -120 -gi_gm_ty -(0x31E, -F -("RC300WWmode"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_RC300WWmode -(t); }); - -123 } i( - gmod - = -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -) { - -124 -mڙ_tyids - = {0x016F, 0x0170, 0x0171, 0x0172}; - -125 - gt_tyids - = {0x0165, 0x0166, 0x0167, 0x0168}; - -126  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -127 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("JunksMڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_JunksMڙ -(t); }); - -128 -gi_gm_ty -( -t_tyids -[ -i -], -F -("JunksS"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_JunksS -(t); }); - -131 } i( - gmod - =( -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS - | EMSdevi:: -EMS_DEVICE_FLAG_JUNKERS_2 -)) { - -132 -mڙ_tyids - = {0x016F, 0x0170, 0x0171, 0x0172}; - -133 - gt_tyids - = {0x0179, 0x017A, 0x017B, 0x017C}; - -134  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -135 -gi_gm_ty -( -mڙ_tyids -[ -i -], -F -("JunksMڙ"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_JunksMڙ -(t); }); - -136 -gi_gm_ty -( -t_tyids -[ -i -], -F -("JunksS"), -l -, [&]( -d -:: -shed_r - -t -{ -oss_JunksS2 -(t); }); - -140 - gEMSESP -:: -e8266R -. -gMqStgsSvi -()-> -ad -([&]( -MqStgs - & -gs -) { - -141 -mq_fm_ - = -gs -. -mq_fm -; - -144 i( - gau_ma_thmo - ! -devi_id -) { - -145 -LOG_DEBUG -( -F -("Addgewhmo wh devi ID 0x%02X"), -devi_id -); - -148 -LOG_DEBUG -( -F -("Addgewhmo wh devi ID 0x%02X (ama)"), -devi_id -); - -149 -add_commds -(); - -152 - ghtg_ccus_ -. -rve -(4); - -156  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -157 - gEMSESP -:: -nd_ad_que -( -mڙ_tyids -[ -i -], -devi_id -); - -160  -ut8_t - - gi - = 0; i < - gt_tyids -. -size -(); i++) { - -161 - gEMSESP -:: -nd_ad_que -( -t_tyids -[ -i -], -devi_id -); - -166  - gThmo -:: -devi_fo_web -( -JsAay - & -ro -) { - -167 -ut8_t - -ags - = -this --> -mod -(); - -169 cڡut& - ghc - : -htg_ccus_ -) { - -170 i(! -Hrs -:: -hasVue -( -hc --> -ot_roomTemp -)) { - -175 -ut8_t - - gfm_ot -, - gfm_cu -; - -176  - gags -) { - -177  - gEMS_DEVICE_FLAG_EASY -: - -178 -fm_ot - = 100; - -179 - gfm_cu - = 100; - -181  - gEMS_DEVICE_FLAG_JUNKERS -: - -182 -fm_ot - = 10; - -183 - gfm_cu - = 10; - -186 -fm_ot - = 2; - -187 - gfm_cu - = 10; - -192 - gd -:: -rg - -hc_r -(5, '\0'); - -193 -tf_P -(& -hc_r -[0], hc_r. -cy -(+ 1, -PSTR -("hc%d: "), -hc --> -hc_num -()); - -195 -nd_vue_js -( -ro -, -hc_r -, -F -("Curoomemtu"), -hc --> -cu_roomTemp -, -F_ -( -deges -), -fm_cu -); - -196 -nd_vue_js -( -ro -, -hc_r -, -F -("Sporoomemtu"), -hc --> -ot_roomTemp -, -F_ -( -deges -), -fm_ot -); - -197 i( - gHrs -:: -hasVue -( -hc --> -mode -)) { - -198 -JsObje - -daEmt -; - -199 - gdaEmt - = -ro -. -NeedObje -(); - -200 - gd -:: -rg - -mode_r -(15, '\0'); - -201 -tf_P -(& -mode_r -[0], mode_r. -cy -(+ 1, -PSTR -("%sMode"), -hc_r -. -c_r -()); - -202 - gdaEmt -["me"] = -mode_r -; - -203 - gd -:: -rg - -mody_r -(20, '\0'); - -204 i( - gHrs -:: -hasVue -( -hc --> -summ_mode -) && hc->summer_mode) { - -205 -tf_P -(& -mody_r -[0], mody_r. -cy -(+ 1, -PSTR -("%- summ"), -mode_torg -( -hc --> -g_mode -( -ags -)). -c_r -()); - -206 } i( - gHrs -:: -hasVue -( -hc --> -hiday_mode -) && hc->holiday_mode) { - -207 -tf_P -(& -mody_r -[0], mody_r. -cy -(+ 1, -PSTR -("%- hiday"), -mode_torg -( -hc --> -g_mode -( -ags -)). -c_r -()); - -208 } i( - gHrs -:: -hasVue -( -hc --> -mode_ty -)) { - -209 -tf_P -(& -mody_r -[0], - -210 -mody_r -. -cy -() + 1, - -211 -PSTR -("%s - %s"), - -212 -mode_torg -( -hc --> -g_mode -( -ags -)). -c_r -(), - -213 -mode_torg -( -hc --> -g_mode_ty -( -ags -)). -c_r -()); - -215 -tf_P -(& -mody_r -[0], mody_r. -cy -(+ 1, -mode_torg -( -hc --> -g_mode -( -ags -)). -c_r -()); - -217 - gdaEmt -["vue"] = -mody_r -; - -223  - gThmo -:: -add_cڋxt_mu -() { - -225 i( -this --> -g_devi_id -(! -EMSESP -:: -au_ma_thmo -()) { - -229 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -MAIN -, - -230 -CommdFgs -:: -USER -, - -231 -ash_rg_ve -{ -F_ -( -thmo -)}, - -232 [&]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -233 -Thmo -:: -cse_commds -( -shl -, -ShlCڋxt -:: -THERMOSTAT -); - -234 -add_cڋxt_commds -( -ShlCڋxt -:: -THERMOSTAT -); - -240 -bo - - gThmo -:: -upded_vues -() { - -242 i( -EMSESP -:: -au_ma_thmo -(! -this --> -g_devi_id -()) { - -243  -l -; - -245 i( - gchged_ -) { - -246 - gchged_ - = -l -; - -247  - gue -; - -249  - gl -; - -253  - gThmo -:: -publish_vues -() { - -255 i( -EMSESP -:: -au_ma_thmo -(! -this --> -g_devi_id -()) { - -259 -ut8_t - - gags - = -this --> -mod -(); - -261 - gSticJsDocumt -< - gEMSESP_MAX_JSON_SIZE_MEDIUM -> - gdoc -; - -262 -JsObje - - groThmo - = -doc -. -to -(); - -263 -JsObje - - gdaThmo -; - -267 i( - gags - = -EMS_DEVICE_FLAG_RC35 - || -ags - = -EMS_DEVICE_FLAG_RC30_1 -) { - -268 i( -dime_ -. -size -()) { - -269 -roThmo -["time"] = -dime_ -. -c_r -(); - -271 i( - gHrs -:: -hasVue -( -damdoutdo܋mp_ -)) { - -272 -roThmo -["damdmp"] = -damdoutdo܋mp_ -; - -274 i( - gHrs -:: -hasVue -( -mpns1_ -)) { - -275 -roThmo -["emp1"] = () -mpns1_ - / 10; - -277 i( - gHrs -:: -hasVue -( -mpns2_ -)) { - -278 -roThmo -["emp2"] = () -mpns2_ - / 10; - -280 i( - gHrs -:: -hasVue -( -ibaCITemtu_ -)) { - -281 -roThmo -["tofft"] = () -ibaCITemtu_ - / 2; - -283 i( - gHrs -:: -hasVue -( -ibaMExtTemtu_ -)) { - -284 -roThmo -["mexemp"] = () -ibaMExtTemtu_ -; - -286 i( - gHrs -:: -hasVue -( -ibaBudgTy_ -)) { - -287 i( -ibaBudgTy_ - == 0) { - -288 -roThmo -["building"] = "light"; - -289 } i( - gibaBudgTy_ - == 1) { - -290 -roThmo -["building"] = "medium"; - -291 } i( - gibaBudgTy_ - == 2) { - -292 -roThmo -["building"] = "heavy"; - -295 i( - gHrs -:: -hasVue -( -wwMode_ -)) { - -296 i( -wwMode_ - == 0) { - -297 -roThmo -["wwmode"] = "off"; - -298 } i( - gwwMode_ - == 1) { - -299 -roThmo -["wwmode"] = "on"; - -300 } i( - gwwMode_ - == 2) { - -301 -roThmo -["wwmode"] = "auto"; - -306 i( - gmq_fm_ - ! -MQTT_fm -:: -NESTED -) { - -307 -Mq -:: -publish -( -F -("thmo_da"), -doc -); - -308 - groThmo - = -doc -. -to -< -JsObje ->(); - -313 -bo - - ghas_da - = -l -; - -314 cڡut& - ghc - : -htg_ccus_ -) { - -315 i( -hc --> -is_aive -()) { - -316 -has_da - = -ue -; - -320 i(( - gmq_fm_ - = -MQTT_fm -:: -NESTED -|| ( -mq_fm_ - =MQTT_fm:: -HA -)) { - -321  -hc_me -[10]; - -322 -y -( -hc_me -, "hc", 10); - -323  - gs -[3]; - -324 -t -( -hc_me -, -Hrs -:: - -( -s -, -hc --> -hc_num -()), 10); - -325 - gdaThmo - = -roThmo -. -NeedObje -( -hc_me -); - -327 - gdaThmo - = -roThmo -; - -331 -ut8_t - - got_mp_divid -; - -332 -ut8_t - - gcu_mp_divid -; - -333 i( - gags - = -EMS_DEVICE_FLAG_EASY -) { - -334 -ot_mp_divid - = 100; - -335 - gcu_mp_divid - = 100; - -336 } i( - gags - = -EMS_DEVICE_FLAG_JUNKERS -) { - -337 -ot_mp_divid - = 10; - -338 - gcu_mp_divid - = 10; - -340 - got_mp_divid - = 2; - -341 - gcu_mp_divid - = 10; - -344 i( - gHrs -:: -hasVue -( -hc --> -ot_roomTemp -)) { - -345 -daThmo -["emp"] = -Hrs -:: -round2 -(() -hc --> -ot_roomTemp - / -ot_mp_divid -); - -348 i( - gHrs -:: -hasVue -( -hc --> -cu_roomTemp -)) { - -349 -daThmo -["cump"] = -Hrs -:: -round2 -(() -hc --> -cu_roomTemp - / -cu_mp_divid -); - -352 i( - gHrs -:: -hasVue -( -hc --> -daymp -)) { - -353 i( -ags - = -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -) { - -354 -daThmo -["hemp"] = () -hc --> -daymp - / 2; - -356 - gdaThmo -["daymp"] = () -hc --> -daymp - / 2; - -359 i( - gHrs -:: -hasVue -( -hc --> -nighemp -)) { - -360 i( -ags - = -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -) { - -361 -daThmo -["ecemp"] = () -hc --> -nighemp - / 2; - -363 - gdaThmo -["nighemp"] = () -hc --> -nighemp - / 2; - -366 i( - gHrs -:: -hasVue -( -hc --> -hidaymp -)) { - -367 -daThmo -["hidaymp"] = () -hc --> -hidaymp - / 2; - -370 i( - gHrs -:: -hasVue -( -hc --> -noomp -)) { - -371 -daThmo -["noomp"] = () -hc --> -noomp - / 2; - -374 i( - gHrs -:: -hasVue -( -hc --> -htgty -)) { - -375 -daThmo -["htgty"] = -hc --> -htgty -; - -378 i( - gHrs -:: -hasVue -( -hc --> -rgowmp -)) { - -379 -daThmo -["rgowmp"] = -hc --> -rgowmp -; - -382 i( - gHrs -:: -hasVue -( -hc --> -offemp -)) { - -383 -daThmo -["offemp"] = -hc --> -offemp - / 2; - -386 i( - gHrs -:: -hasVue -( -hc --> -desigemp -)) { - -387 -daThmo -["desigemp"] = -hc --> -desigemp -; - -389 i( - gHrs -:: -hasVue -( -hc --> -summmp -)) { - -390 -daThmo -["summmp"] = -hc --> -summmp -; - -394 i(( - gHrs -:: -hasVue -( -hc --> -mode -)|| ( -mq_fm_ - = -MQTT_fm -:: -HA -)) { - -395 -ut8_t - -hc_mode - = -hc --> -g_mode -( -ags -); - -397 i( - gmq_fm_ - = -MQTT_fm -:: -HA -) { - -398 i(( -hc_mode - = -HtgCcu -:: -Mode -:: -MANUAL -|| (hc_mod=HtgCcu::Mode:: -DAY -)) { - -399 -hc_mode - = -HtgCcu -:: -Mode -:: -HEAT -; - -400 } i(( - ghc_mode - = -HtgCcu -:: -Mode -:: -NIGHT -|| ( -hc_mode - =HtgCcu::Mode:: -OFF -)) { - -401 -hc_mode - = -HtgCcu -:: -Mode -:: -OFF -; - -403 - ghc_mode - = -HtgCcu -:: -Mode -:: -AUTO -; - -406 - gdaThmo -["mode"] = -mode_torg -( -hc_mode -); - -411 i( - gHrs -:: -hasVue -( -hc --> -summ_mode -) && hc->summer_mode) { - -412 -daThmo -["mody"] = -F -("summer"); - -413 } i( - gHrs -:: -hasVue -( -hc --> -hiday_mode -) && hc->holiday_mode) { - -414 -daThmo -["mody"] = -F -("holiday"); - -415 } i( - gHrs -:: -hasVue -( -hc --> -mode_ty -)) { - -416 -daThmo -["mody"] = -mode_torg -( -hc --> -g_mode_ty -( -ags -)); - -422 i(( - gmq_fm_ - = -MQTT_fm -:: -SINGLE -|| ( -mq_fm_ - =MQTT_fm:: -CUSTOM -)) { - -423  -tic -[30]; - -424  - gs -[3]; - -425 -y -( -tic -, "thermostat_data", 30); - -426 -t -( -tic -, -Hrs -:: - -( -s -, -hc --> -hc_num -()), 30); - -427 - gMq -:: -publish -( -tic -, -doc -); - -428 - groThmo - = -doc -. -to -< -JsObje ->(); - -429 } i( - gmq_fm_ - = -MQTT_fm -:: -HA -) { - -431 i(! -hc --> -ha_gied -()) { - -432 -gi_mq_ha_cfig -( -hc --> -hc_num -()); - -433 - ghc --> -ha_gied -( -ue -); - -436 - gd -:: -rg - -tic -(100, '\0'); - -437 -tf_P -(& -tic -[0],ic. -cy -(+ 1, -PSTR -("homssit/ime/ems-e/hc%d/e"), -hc --> -hc_num -()); - -438 - gMq -:: -publish -( -tic -, -doc -); - -443 i(! - ghas_da -) { - -448 i( - gmq_fm_ - = -MQTT_fm -:: -NESTED -) { - -449 -Mq -:: -publish -( -F -("thmo_da"), -doc -); - -455 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> Thmo:: -htg_ccu -(cڡ -ut8_t - -hc_num -) { - -457 i( -hc_num - = -AUTO_HEATING_CIRCUIT -) { - -458 cڡut& -htg_ccu - : -htg_ccus_ -) { - -459  -htg_ccu -; - -464 cڡut& - ghtg_ccu - : -htg_ccus_ -) { - -465 i( -htg_ccu --> -hc_num -() == hc_num) { - -466  -htg_ccu -; - -470  - gnuαr -; - -476 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> Thmo:: -htg_ccu -( -d -::shed_r -gm -) { - -478 -ut8_t - -hc_num - = 0; - -479 -bo - - gtogg_ - = -l -; - -481  -ut8_t - - gi - = 0; i < - gmڙ_tyids -. -size -(); i++) { - -482 i( - gmڙ_tyids -[ -i -] = -gm --> -ty_id -) { - -483 -hc_num - = -i - + 1; - -484 - gtogg_ - = -ue -; - -490 i( - ghc_num - == 0) { - -491  -ut8_t - -i - = 0; - gi - < - gt_tyids -. -size -(); i++) { - -492 i( - gt_tyids -[ -i -] = -gm --> -ty_id -) { - -493 -hc_num - = -i - + 1; - -500 i( - ggm --> - gc - >0x18 && -gm --> -c - <= 0x1B) { - -501 -hc_num - = -gm --> -c - - 0x17; - -505 i( - ghc_num - == 0) { - -506  -nuαr -; - -511 cڡut& - ghtg_ccu - : -htg_ccus_ -) { - -512 i( -htg_ccu --> -hc_num -() == hc_num) { - -513  -htg_ccu -; - -518 aut - gw_hc - = -d -:: -make_shed -< -Thmo -:: -HtgCcu ->( -hc_num -); - -519 - ghtg_ccus_ -. -push_back -( -w_hc -); - -521 - gd -:: -st -( -htg_ccus_ -. -beg -(), htg_ccus_. -d -()); - -524 -togg_tch -( -mڙ_tyids -[ -hc_num - - 1], -togg_ -); - -526 i( - gt_tyids -. -size -()) { - -527 -togg_tch -( -t_tyids -[ -hc_num - - 1], -togg_ -); - -530  - ghtg_ccus_ -. -back -(); - -537  - gThmo -:: -gi_mq_ha_cfig -( -ut8_t - -hc_num -) { - -538 -SticJsDocumt -< -EMSESP_MAX_JSON_SIZE_MEDIUM -> -doc -; - -540 - gd -:: -rg - -hc_xt -(10, '\0'); - -541 -tf_P -(& -hc_xt -[0], hc_xt. -cy -(+ 1, -PSTR -("hc%d"), -hc_num -); - -542 - gdoc -["me"] = -hc_xt -; - -543 - gdoc -["uniq_id"] = -hc_xt -; - -546 - gd -:: -rg - -ro -(100, '\0'); - -547 -tf_P -(& -ro -[0],o. -cy -(+ 1, -PSTR -("homssit/ime/ems-e/hc%d"), -hc_num -); - -548 - gdoc -["~"] = -ro -; - -550 - gdoc -["mode_cmd_t"] = "~/cmd_mode"; - -551 - gdoc -["mode_stat_t"] = "~/state"; - -552 - gdoc -["temp_cmd_t"] = "~/cmd_temp"; - -553 - gdoc -["temp_stat_t"] = "~/state"; - -554 - gdoc -["curr_temp_t"] = "~/state"; - -556 - gd -:: -rg - -mode_r -(30, '\0'); - -557 -tf_P -(& -mode_r -[0], 30, -PSTR -("{{vue_js.hc%d.mode}}"), -hc_num -); - -558 - gdoc -["mode__l"] = -mode_r -; - -560 - gd -:: -rg - -emp_r -(30, '\0'); - -561 -tf_P -(& -emp_r -[0], 30, -PSTR -("{{vue_js.hc%d.emp}}"), -hc_num -); - -562 - gdoc -["mp__l"] = -emp_r -; - -564 - gd -:: -rg - -cump_r -(30, '\0'); - -565 -tf_P -(& -cump_r -[0], 30, -PSTR -("{{vue_js.hc%d.cump}}"), -hc_num -); - -566 - gdoc -["cu_mp_l"] = -cump_r -; - -568 - gdoc -["min_temp"] = "5"; - -569 - gdoc -["max_temp"] = "40"; - -570 - gdoc -["temp_step"] = "0.5"; - -572 -JsAay - - gmodes - = -doc -. -NeedAay -("modes"); - -573 -ut8_t - - gags - = -this --> -mod -(); - -574 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC20_2 -) { - -575 -modes -. -add -("night"); - -576 - gmodes -. -add -("day"); - -577 } i(( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC300 -|| ( -ags - =EMSdevi:: -EMS_DEVICE_FLAG_RC100 -)) { - -578 -modes -. -add -("eco"); - -579 - gmodes -. -add -("comfort"); - -580 - gmodes -. -add -("auto"); - -581 } i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -) { - -582 -modes -. -add -("nofrost"); - -583 - gmodes -. -add -("eco"); - -584 - gmodes -. -add -("heat"); - -585 - gmodes -. -add -("auto"); - -587 - gmodes -. -add -("night"); - -588 - gmodes -. -add -("day"); - -589 - gmodes -. -add -("auto"); - -592 - gd -:: -rg - -tic -(100, '\0'); - -593 -tf_P -(& -tic -[0],ic. -cy -(+ 1, -PSTR -("homssit/ime/ems-e/hc%d/cfig"), -hc_num -); - -595 - gMq -:: -publish -( -tic -, -doc -, -ue -); - -598 -tf_P -(& -tic -[0],ic. -cy -(+ 1, -PSTR -("homssit/ime/ems-e/hc%d/cmd_mp"), -hc_num -); - -599 -gi_mq_tic -( -tic -, [&](cڡ * -m -{ -thmo_cmd_mp -(m); }); - -600 -tf_P -(& -tic -[0],ic. -cy -(+ 1, -PSTR -("homssit/ime/ems-e/hc%d/cmd_mode"), -hc_num -); - -601 -gi_mq_tic -( -tic -, [&](cڡ * -m -{ -thmo_cmd_mode -(m); }); - -606 -ut8_t - - gThmo -:: -HtgCcu -:: -g_mode -(ut8_ -ags -) const { - -607 i(! -Hrs -:: -hasVue -( -mode -)) { - -608  -HtgCcu -:: -Mode -:: -UNKNOWN -; - -611 - gags - &= 0x0F; - -613 i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC20 -) { - -614 i( -mode - == 0) { - -615  -HtgCcu -:: -Mode -:: -OFF -; - -616 } i( - gmode - == 1) { - -617  -HtgCcu -:: -Mode -:: -MANUAL -; - -618 } i( - gmode - == 2) { - -619  -HtgCcu -:: -Mode -:: -AUTO -; - -621 } i(( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_RC300 -|| ( -ags - =EMSdevi:: -EMS_DEVICE_FLAG_RC100 -)) { - -622 i( -mode - == 0) { - -623  -HtgCcu -:: -Mode -:: -MANUAL -; - -624 } i( - gmode - == 1) { - -625  -HtgCcu -:: -Mode -:: -AUTO -; - -627 } i( - gags - = -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -) { - -628 i( -mode - == 1) { - -629  -HtgCcu -:: -Mode -:: -MANUAL -; - -630 } i( - gmode - == 2) { - -631  -HtgCcu -:: -Mode -:: -AUTO -; - -632 } i( - gmode - == 3) { - -633  -HtgCcu -:: -Mode -:: -HOLIDAY -; - -636 i( - gmode - == 0) { - -637  -HtgCcu -:: -Mode -:: -NIGHT -; - -638 } i( - gmode - == 1) { - -639  -HtgCcu -:: -Mode -:: -DAY -; - -640 } i( - gmode - == 2) { - -641  -HtgCcu -:: -Mode -:: -AUTO -; - -645  - gHtgCcu -:: -Mode -:: -UNKNOWN -; - -650 -ut8_t - - gThmo -:: -HtgCcu -:: -g_mode_ty -(ut8_ -ags -) const { - -651 -ags - &= 0x0F; - -653 i( - gags - = -EMS_DEVICE_FLAG_JUNKERS -) { - -654 i( -mode_ty - == 3) { - -655  -HtgCcu -:: -Mode -:: -HEAT -; - -656 } i( - gmode_ty - == 2) { - -657  -HtgCcu -:: -Mode -:: -ECO -; - -658 } i( - gmode_ty - == 1) { - -659  -HtgCcu -:: -Mode -:: -NOFROST -; - -661 } i(( - gags - = -EMS_DEVICE_FLAG_RC35 -|| ( -ags - = -EMS_DEVICE_FLAG_RC30_1 -)) { - -662 i( -mode_ty - == 0) { - -663  -HtgCcu -:: -Mode -:: -NIGHT -; - -664 } i( - gmode_ty - == 1) { - -665  -HtgCcu -:: -Mode -:: -DAY -; - -667 } i( - gags - = -EMS_DEVICE_FLAG_RC300 -) { - -668 i( -mode_ty - == 0) { - -669  -HtgCcu -:: -Mode -:: -ECO -; - -670 } i( - gmode_ty - == 1) { - -671  -HtgCcu -:: -Mode -:: -COMFORT -; - -673 } i( - gags - = -EMS_DEVICE_FLAG_RC100 -) { - -674  -HtgCcu -:: -Mode -:: -DAY -; - -677  - gHtgCcu -:: -Mode -:: -DAY -; - -682 - gd -:: -rg - -Thmo -:: -mode_torg -( -ut8_t - -mode -) { - -683  -mode -) { - -684  -HtgCcu -:: -Mode -:: -OFF -: - -685  -ad_ash_rg -( -F -("off")); - -687  - gHtgCcu -:: -Mode -:: -MANUAL -: - -688  -ad_ash_rg -( -F -("manual")); - -690  - gHtgCcu -:: -Mode -:: -DAY -: - -691  -ad_ash_rg -( -F -("day")); - -693  - gHtgCcu -:: -Mode -:: -NIGHT -: - -694  -ad_ash_rg -( -F -("night")); - -696  - gHtgCcu -:: -Mode -:: -ECO -: - -697  -ad_ash_rg -( -F -("eco")); - -699  - gHtgCcu -:: -Mode -:: -COMFORT -: - -700  -ad_ash_rg -( -F -("comfort")); - -702  - gHtgCcu -:: -Mode -:: -HEAT -: - -703  -ad_ash_rg -( -F -("heat")); - -705  - gHtgCcu -:: -Mode -:: -HOLIDAY -: - -706  -ad_ash_rg -( -F -("holiday")); - -708  - gHtgCcu -:: -Mode -:: -NOFROST -: - -709  -ad_ash_rg -( -F -("nofrost")); - -711  - gHtgCcu -:: -Mode -:: -AUTO -: - -712  -ad_ash_rg -( -F -("auto")); - -714  - gHtgCcu -:: -Mode -:: -SUMMER -: - -715  -ad_ash_rg -( -F -("summer")); - -717  - gHtgCcu -:: -Mode -:: -OFFSET -: - -718  -ad_ash_rg -( -F -("offset")); - -720  - gHtgCcu -:: -Mode -:: -DESIGN -: - -721  -ad_ash_rg -( -F -("design")); - -724  -HtgCcu -:: -Mode -:: -UNKNOWN -: - -725  -ad_ash_rg -( -F -("unknown")); - -731  - gThmo -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -732 -EMSdevi -:: -show_vues -( -shl -); - -734 -ut8_t - - gags - = -this --> -mod -(); - -736 i( - gdime_ -. -size -()) { - -737 - gshl -. -tn -( -F -(" Clock: %s"), -dime_ -. -c_r -()); - -738 i( - gHrs -:: -hasVue -( -ibaClockOfft_ -&& -ags - = -EMS_DEVICE_FLAG_RC30_1 -) { - -739 -t_vue -( -shl -, 2, -F -("Offock"), -ibaClockOfft_ -, -nuαr -); - -742 i( - gHrs -:: -hasVue -( -wwMode_ -)) { - -743 i( -wwMode_ - == 0) { - -744 -shl -. -tn -( -F -(" Warm Water mode: off")); - -745 } i( - gwwMode_ - == 1) { - -746 -shl -. -tn -( -F -(" Warm Water mode: on")); - -747 } i( - gwwMode_ - == 2) { - -748 -shl -. -tn -( -F -(" Warm Water mode:uto")); - -751 i( - gags - = -EMS_DEVICE_FLAG_RC35 -) { - -752 -t_vue -( -shl -, 2, -F -("Damd Outdo܁emtu"), -damdoutdo܋mp_ -, -F_ -( -deges -)); - -753 -t_vue -( -shl -, 2, -F -("Temns 1"), -mpns1_ -, -F_ -( -deges -), 10); - -754 -t_vue -( -shl -, 2, -F -("Temns 2"), -mpns2_ -, -F_ -( -deges -), 10); - -756 i( - gags - = -EMS_DEVICE_FLAG_RC30_1 -) { - -758 i( -Hrs -:: -hasVue -( -ibaMaDiy_ -)) { - -759 i( -ibaMaDiy_ - == 0) { - -760 -shl -. -tn -( -F -(" Display: internalemperature")); - -761 } i( - gibaMaDiy_ - == 1) { - -762 -shl -. -tn -( -F -(" Display: internal setpoint")); - -763 } i( - gibaMaDiy_ - == 2) { - -764 -shl -. -tn -( -F -(" Display:xternalemperature")); - -765 } i( - gibaMaDiy_ - == 3) { - -766 -shl -. -tn -( -F -(" Display: burneremperature")); - -767 } i( - gibaMaDiy_ - == 4) { - -768 -shl -. -tn -( -F -(" Display: WWemperature")); - -769 } i( - gibaMaDiy_ - == 5) { - -770 -shl -. -tn -( -F -(" Display: functioning mode")); - -771 } i( - gibaMaDiy_ - == 6) { - -772 -shl -. -tn -( -F -(" Display:ime")); - -773 } i( - gibaMaDiy_ - == 7) { - -774 -shl -. -tn -( -F -(" Display: date")); - -775 } i( - gibaMaDiy_ - == 8) { - -776 -shl -. -tn -( -F -(" Display: smokeemperature")); - -780 i( - gHrs -:: -hasVue -( -ibaLguage_ -)) { - -781 i( -ibaLguage_ - == 0) { - -782 -shl -. -tn -( -F -(" Language: German")); - -783 } i( - gibaLguage_ - == 1) { - -784 -shl -. -tn -( -F -(" Language: Dutch")); - -785 } i( - gibaLguage_ - == 2) { - -786 -shl -. -tn -( -F -(" Language: French")); - -787 } i( - gibaLguage_ - == 3) { - -788 -shl -. -tn -( -F -(" Language: Italian")); - -792 i( - gags - = -EMS_DEVICE_FLAG_RC35 - || -ags - = -EMS_DEVICE_FLAG_RC30_1 -) { - -793 i( -Hrs -:: -hasVue -( -ibaCITemtu_ -)) { - -794 -t_vue -( -shl -, 2, -F -("Offt.emtu"), -ibaCITemtu_ -, -F_ -( -deges -), 2); - -797 i( - gHrs -:: -hasVue -( -ibaMExtTemtu_ -)) { - -798 -t_vue -( -shl -, 2, -F -("Mxt.emtu"), -ibaMExtTemtu_ -, -F_ -( -deges -)); - -801 i( - gHrs -:: -hasVue -( -ibaBudgTy_ -)) { - -802 i( -ibaBudgTy_ - == 0) { - -803 -shl -. -tn -( -F -(" Building:ight")); - -804 } i( - gibaBudgTy_ - == 1) { - -805 -shl -. -tn -( -F -(" Building: medium")); - -806 } i( - gibaBudgTy_ - == 2) { - -807 -shl -. -tn -( -F -(" Building: heavy")); - -812 cڡut& - ghc - : -htg_ccus_ -) { - -813 i(! -hc --> -is_aive -()) { - -817 - gshl -. -tn -( -F -(" Htg Ccu %d:"), -hc --> -hc_num -()); - -820 -ut8_t - - gfm_ot -, - gfm_cu -; - -821  - gags -) { - -822  - gEMS_DEVICE_FLAG_EASY -: - -823 -fm_ot - = 100; - -824 - gfm_cu - = 100; - -826  - gEMS_DEVICE_FLAG_JUNKERS -: - -827 -fm_ot - = 10; - -828 - gfm_cu - = 10; - -831 -fm_ot - = 2; - -832 - gfm_cu - = 10; - -836 -t_vue -( -shl -, 4, -F -("Curoomemtu"), -hc --> -cu_roomTemp -, -F_ -( -deges -), -fm_cu -); - -837 -t_vue -( -shl -, 4, -F -("Sporoomemtu"), -hc --> -ot_roomTemp -, -F_ -( -deges -), -fm_ot -); - -838 i( - gHrs -:: -hasVue -( -hc --> -mode -)) { - -839 -t_vue -( -shl -, 4, -F -("Mode"), -mode_torg -( -hc --> -g_mode -( -ags -)). -c_r -()); - -841 i( - gHrs -:: -hasVue -( -hc --> -mode_ty -)) { - -842 -t_vue -( -shl -, 4, -F -("ModTy"), -mode_torg -( -hc --> -g_mode_ty -( -ags -)). -c_r -()); - -845 i( - gHrs -:: -hasVue -( -hc --> -summ_mode -) && hc->summer_mode) { - -846 -shl -. -tn -( -F -(" Program is seto Summer mode")); - -847 } i( - gHrs -:: -hasVue -( -hc --> -hiday_mode -) && hc->holiday_mode) { - -848 -shl -. -tn -( -F -(" Program is seto Holiday mode")); - -851 i( - gHrs -:: -hasVue -( -hc --> -daymp -)) { - -852 i( -ags - = -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -) { - -853 -t_vue -( -shl -, 4, -F -("Hmtu"), -hc --> -daymp -, -F_ -( -deges -), 2); - -855 -t_vue -( -shl -, 4, -F -("Dayemtu"), -hc --> -daymp -, -F_ -( -deges -), 2); - -858 i( - gHrs -:: -hasVue -( -hc --> -nighemp -)) { - -859 i( -ags - = -EMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -) { - -860 -t_vue -( -shl -, 4, -F -("Ec؋mtu"), -hc --> -nighemp -, -F_ -( -deges -), 2); - -862 -t_vue -( -shl -, 4, -F -("Nighmtu"), -hc --> -nighemp -, -F_ -( -deges -), 2); - -865 i( - gHrs -:: -hasVue -( -hc --> -noomp -)) { - -866 -t_vue -( -shl -, 4, -F -("Nooemtu"), -hc --> -noomp -, -F_ -( -deges -), 2); - -868 i( - gHrs -:: -hasVue -( -hc --> -hidaymp -)) { - -869 -t_vue -( -shl -, 4, -F -("Hidayemtu"), -hc --> -hidaymp -, -F_ -( -deges -), 2); - -871 i( - gHrs -:: -hasVue -( -hc --> -offemp -)) { - -872 -t_vue -( -shl -, 4, -F -("Offmtu"), -hc --> -offemp -, -F_ -( -deges -), 2); - -874 i( - gHrs -:: -hasVue -( -hc --> -desigemp -)) { - -875 -t_vue -( -shl -, 4, -F -("Desigmtu"), -hc --> -desigemp -, -F_ -( -deges -)); - -877 i( - gHrs -:: -hasVue -( -hc --> -summmp -)) { - -878 -t_vue -( -shl -, 4, -F -("Summemtu"), -hc --> -summmp -, -F_ -( -deges -)); - -880 i( - gHrs -:: -hasVue -( -hc --> -rgowmp -)) { - -881 -t_vue -( -shl -, 4, -F -("Tg flowemtu"), -hc --> -rgowmp -, -F_ -( -deges -)); - -885 - gshl -. -n -(); - -889  - gThmo -:: -oss_RC20S -( -d -:: -shed_r - -gm -) { - -890 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -892 - gchged_ - | -gm --> -ad_vue -( -hc --> -mode -, 23); - -896  - gThmo -:: -oss_RC20Mڙ_2 -( -d -:: -shed_r - -gm -) { - -897 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -899 - gchged_ - | -gm --> -ad_bvue -( -hc --> -mode_ty -, 0, 7); - -900 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 2, 1); - -901 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 3); - -906  - gThmo -:: -oss_RC20S_2 -( -d -:: -shed_r - -gm -) { - -907 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -909 - gchged_ - | -gm --> -ad_vue -( -hc --> -mode -, 3); - -913  - gThmo -:: -oss_RC20Reme -( -d -:: -shed_r - -gm -) { - -914 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -915 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 0); - -919  - gThmo -:: -oss_RC10Mڙ -( -d -:: -shed_r - -gm -) { - -920 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -922 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 1, 1); - -923 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 2); - -926 #agm -GCC - -dgnoic - -push - - -927 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -930  - gThmo -:: -oss_RC10S -( -d -:: -shed_r - -gm -) { - -933 #agm -GCC - -dgnoic - -p - - -936  -Thmo -:: -oss_JunksS -( -d -:: -shed_r - -gm -) { - -937 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -938 - gchged_ - | -gm --> -ad_vue -( -hc --> -daymp -, 17); - -939 - gchged_ - | -gm --> -ad_vue -( -hc --> -nighemp -, 16); - -940 - gchged_ - | -gm --> -ad_vue -( -hc --> -noomp -, 15); - -943  - gThmo -:: -oss_JunksS2 -( -d -:: -shed_r - -gm -) { - -944 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -945 - gchged_ - | -gm --> -ad_vue -( -hc --> -daymp -, 7); - -946 - gchged_ - | -gm --> -ad_vue -( -hc --> -nighemp -, 6); - -947 - gchged_ - | -gm --> -ad_vue -( -hc --> -noomp -, 5); - -951  - gThmo -:: -oss_RCOutdoTemp -( -d -:: -shed_r - -gm -) { - -952 -chged_ - | -gm --> -ad_vue -( -damdoutdo܋mp_ -, 0); - -953 - gchged_ - | -gm --> -ad_vue -( -mpns1_ -, 3); - -954 - gchged_ - | -gm --> -ad_vue -( -mpns2_ -, 5); - -958  - gThmo -:: -oss_RC20Mڙ -( -d -:: -shed_r - -gm -) { - -959 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -961 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 1, 1); - -962 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 2); - -966  - gThmo -:: -oss_EasyMڙ -( -d -:: -shed_r - -gm -) { - -967 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -969 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 8); - -970 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 10); - -974  - gThmo -:: -oss_IBAStgs -( -d -:: -shed_r - -gm -) { - -976 -chged_ - |= - -977 -gm --> -ad_vue -( -ibaMaDiy_ -, - -979 - gchged_ - | -gm --> -ad_vue -( -ibaLguage_ -, 1); - -980 - gchged_ - | -gm --> -ad_vue -( -ibaCITemtu_ -, 2); - -981 - gchged_ - | -gm --> -ad_vue -( -ibaBudgTy_ -, 6); - -982 - gchged_ - | -gm --> -ad_vue -( -ibaMExtTemtu_ -, 5); - -983 - gchged_ - | -gm --> -ad_vue -( -ibaClockOfft_ -, 12); - -987  - gThmo -:: -oss_RC35wwStgs -( -d -:: -shed_r - -gm -) { - -988 -chged_ - | -gm --> -ad_vue -( -wwMode_ -, 2); - -992  - gThmo -:: -oss_JunksMڙ -( -d -:: -shed_r - -gm -) { - -994 i( -gm --> -mesge_ngth - <= 1) { - -998 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -1000 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 4); - -1001 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 2); - -1003 - gchged_ - | -gm --> -ad_vue -( -hc --> -mode_ty -, 0); - -1004 - gchged_ - | -gm --> -ad_vue -( -hc --> -mode -, 1); - -1008  - gThmo -:: -oss_RC300Mڙ -( -d -:: -shed_r - -gm -) { - -1009 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -1011 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 0); - -1013 - gchged_ - | -gm --> -ad_bvue -( -hc --> -mode_ty -, 10, 1); - -1014 - gchged_ - | -gm --> -ad_bvue -( -hc --> -mode -, 10, 0); - -1023 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 3, 1); - -1024 - gchged_ - | -gm --> -ad_bvue -( -hc --> -summ_mode -, 2, 4); - -1025 - gchged_ - | -gm --> -ad_vue -( -hc --> -rgowmp -, 4); - -1029  - gThmo -:: -oss_RC300S -( -d -:: -shed_r - -gm -) { - -1030 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -1043 - gchged_ - | -gm --> -ad_vue -( -hc --> -daymp -, 2); - -1044 - gchged_ - | -gm --> -ad_vue -( -hc --> -nighemp -, 4); - -1048  - gThmo -:: -oss_RC300WWmode -( -d -:: -shed_r - -gm -) { - -1050 -wwSyem_ - = -gm --> -ty_id - - 0x31D + 1; - -1051 - gchged_ - | -gm --> -ad_vue -( -wwExa_ -, 0); - -1058  - gThmo -:: -oss_RC30Mڙ -( -d -:: -shed_r - -gm -) { - -1059 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -1061 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 1, 1); - -1062 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 2); - -1066  - gThmo -:: -oss_RC30S -( -d -:: -shed_r - -gm -) { - -1067 -d -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -1069 - gchged_ - | -gm --> -ad_vue -( -hc --> -mode -, 23); - -1073  - gThmo -:: -oss_RC35Mڙ -( -d -:: -shed_r - -gm -) { - -1077 i( -gm --> -mesge_da -[14] == 0x00) { - -1081 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -1083 - gchged_ - | -gm --> -ad_vue -( -hc --> -ot_roomTemp -, 2, 1); - -1084 - gchged_ - | -gm --> -ad_vue -( -hc --> -cu_roomTemp -, 3); - -1086 - gchged_ - | -gm --> -ad_bvue -( -hc --> -mode_ty -, 1, 1); - -1087 - gchged_ - | -gm --> -ad_bvue -( -hc --> -summ_mode -, 1, 0); - -1088 - gchged_ - | -gm --> -ad_bvue -( -hc --> -hiday_mode -, 0, 5); - -1090 - gchged_ - | -gm --> -ad_vue -( -hc --> -rgowmp -, 14); - -1094  - gThmo -:: -oss_RC35S -( -d -:: -shed_r - -gm -) { - -1096 i( -gm --> -mesge_da -[0] == 0x00) { - -1100 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -gm -); - -1102 - gchged_ - | -gm --> -ad_vue -( -hc --> -mode -, 7); - -1103 - gchged_ - | -gm --> -ad_vue -( -hc --> -daymp -, 2); - -1104 - gchged_ - | -gm --> -ad_vue -( -hc --> -nighemp -, 1); - -1105 - gchged_ - | -gm --> -ad_vue -( -hc --> -hidaymp -, 3); - -1106 - gchged_ - | -gm --> -ad_vue -( -hc --> -htgty -, 0); - -1108 - gchged_ - | -gm --> -ad_vue -( -hc --> -summmp -, 22); - -1109 - gchged_ - | -gm --> -ad_vue -( -hc --> -noomp -, 23); - -1110 - gchged_ - | -gm --> -ad_vue -( -hc --> -desigemp -, 17); - -1111 - gchged_ - | -gm --> -ad_vue -( -hc --> -offemp -, 6); - -1115  - gThmo -:: -oss_RCTime -( -d -:: -shed_r - -gm -) { - -1116 i( -this --> -ags -(= -EMS_DEVICE_FLAG_EASY -) { - -1119 i( - ggm --> - gmesge_ngth - < 7) { - -1122 i( - ggm --> - gmesge_da -[7] & 0x0C) { - -1123 -t_dime -("ntp", -1); - -1126 i( - gdime_ -. -emy -()) { - -1127 - gdime_ -. -size -(25, '\0'); - -1129 aut - gtimed - = -dime_ -; - -1132  - gbuf1 -[6]; - -1133  - gbuf2 -[6]; - -1134  - gbuf3 -[6]; - -1135  - gbuf4 -[6]; - -1136  - gbuf5 -[6]; - -1137  - gbuf6 -[6]; - -1138 -tf_P -(& -dime_ -[0], - -1139 -dime_ -. -cy -() + 1, - -1140 -PSTR -("%s:%s:%s %s/%s/%s"), - -1141 -Hrs -:: -sml -( -buf1 -, -gm --> -mesge_da -[2]), - -1142 -Hrs -:: -sml -( -buf2 -, -gm --> -mesge_da -[4]), - -1143 -Hrs -:: -sml -( -buf3 -, -gm --> -mesge_da -[5]), - -1144 -Hrs -:: -sml -( -buf4 -, -gm --> -mesge_da -[3]), - -1145 -Hrs -:: -sml -( -buf5 -, -gm --> -mesge_da -[1]), - -1146 -Hrs -:: - -( -buf6 -, -gm --> -mesge_da -[0] + 2000, 10) - -1148 i( - gtimed - ! -dime_ -) { - -1149 -chged_ - = -ue -; - -1154  - gThmo -:: -cse_commds -( -Shl - & -shl -,  -cڋxt -) { - -1155 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -THERMOSTAT -, - -1156 -CommdFgs -:: -ADMIN -, - -1157 -ash_rg_ve -{ -F_ -( -t -), F_( -ma -)}, - -1158 -ash_rg_ve -{ -F_ -( -deviid_mdy -)}, - -1159 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -1160 -ut8_t - -vue - = -Hrs -:: -hextot -( -gumts -. -t -(). -c_r -()); - -1161 -EMSESP -:: -emStgsSvi -. -upde -( - -1162 [&]( -EMSESPStgs - & -gs -) { - -1163 -gs -. -ma_thmo - = -vue -; - -1164 -EMSESP -:: -au_ma_thmo -( -vue -); - -1165  -bufr -[5]; - -1166 -shl -. -tn -( -F_ -( -ma_thmo_fmt -), - -1167 ! -vue - ? -uuid -:: -ad_ash_rg -( -F_ -uto)). -c_r -(: -Hrs -:: -hext -( -bufr -, value)); - -1168  -SUpdeResu -:: -CHANGED -; - -1173 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -THERMOSTAT -, - -1174 -CommdFgs -:: -ADMIN -, - -1175 -ash_rg_ve -{ -F_ -( -ad -)}, - -1176 -ash_rg_ve -{ -F_ -( -tyid_mdy -)}, - -1177 [=]( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts -) { - -1178 -ut16_t - -ty_id - = -Hrs -:: -hextot -( -gumts -. -t -(). -c_r -()); - -1179 -EMSESP -:: -t_ad_id -( -ty_id -); - -1180 -EMSESP -:: -nd_ad_que -( -ty_id -, -this --> -g_devi_id -()); - -1183 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -THERMOSTAT -, - -1184 -CommdFgs -:: -USER -, - -1185 -ash_rg_ve -{ -F_ -( -show -)}, - -1186 [&]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -)){ -show_vues -(shell); }); - -1188 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -THERMOSTAT -, - -1189 -CommdFgs -:: -USER -, - -1190 -ash_rg_ve -{ -F_ -( -t -)}, - -1191 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -1192 -EMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -1193  -bufr -[4]; - -1194 -shl -. -tn -( -F_ -( -ma_thmo_fmt -), - -1195 -gs -. -ma_thmo - =0 ? -uuid -:: -ad_ash_rg -( -F_ -uto)). -c_r -() - -1196 : -Hrs -:: -hext -( -bufr -, -gs -. -ma_thmo -)); - -1197 -shl -. -n -(); - -1202 - gCse -:: -r_cuom_cڋxt -( -shl -, -cڋxt -); - -1206  - gThmo -:: -t_mexemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1207  - gmt - = 0; - -1208 i(! - gHrs -:: -vue2numb -( -vue -, -mt -)) { - -1211 -LOG_INFO -( -F -("Stg mxemtu%d"), -mt -); - -1212 -wre_commd -( -EMS_TYPE_IBAStgs -, 5, -mt -, EMS_TYPE_IBASettings); - -1216  - gThmo -:: -t_ockofft -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1217  - gco - = 0; - -1218 i(! - gHrs -:: -vue2numb -( -vue -, -co -)) { - -1221 -LOG_INFO -( -F -("Stg clock offt%d"), -co -); - -1222 -wre_commd -( -EMS_TYPE_IBAStgs -, 12, -co -, EMS_TYPE_IBASettings); - -1226  - gThmo -:: -t_lemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1227  - g - = 0; - -1228 i(! - gHrs -:: -vue2numb -( -vue -, - -)) { - -1232 -LOG_INFO -( -F -("Cibtg iȋmtu%d.%d"), - - / 10, ct < 0 ? -ct % 10 : ct % 10); - -1233 -wre_commd -( -EMS_TYPE_IBAStgs -, 2, - -, EMS_TYPE_IBASettings); - -1237  - gThmo -:: -t_diy -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1238  - gds - = 0; - -1239 i(! - gHrs -:: -vue2numb -( -vue -, -ds -)) { - -1242 -LOG_INFO -( -F -("Stg diy%d"), -ds -); - -1243 -wre_commd -( -EMS_TYPE_IBAStgs -, 0, -ds -, EMS_TYPE_IBASettings); - -1246  - gThmo -:: -t_mّemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1247  - gf - = 0; - -1248 i(! - gHrs -:: -vue2t -( -vue -, -f -)) { - -1252 -ut8_t - - ghc_num - = ( -id - =-1? -AUTO_HEATING_CIRCUIT - : id; - -1254 i( - gf - > 100 || f < 0) { - -1255 - gRoom -:: -t_mّemp -( -hc_num - - 1, -EMS_VALUE_SHORT_NOTSET -); - -1257 - gRoom -:: -t_mّemp -( -hc_num - - 1, ( -t16_t -)( -f - * 10)); - -1262  - gThmo -:: -t_budg -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1263 - gd -:: -rg - -bd -(20, '\0'); - -1264 i(! - gHrs -:: -vue2rg -( -vue -, -bd -)) { - -1268 -ut8_t - - gbg - = 0; - -1269 i( - gbd - == "light") { - -1270 -bg - = 0; - -1271 } i( - gbd - == "medium") { - -1272 -bg - = 1; - -1273 } i( - gbd - == "heavy") { - -1274 -bg - = 2; - -1279 -LOG_INFO -( -F -("Stg budg%d"), -bg -); - -1280 -wre_commd -( -EMS_TYPE_IBAStgs -, 6, -bg -, EMS_TYPE_IBASettings); - -1284  - gThmo -:: -t_nguage -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1285  - glg - = 0; - -1286 i(! - gHrs -:: -vue2numb -( -vue -, -lg -)) { - -1289 -LOG_INFO -( -F -("Stgguagt%d"), -lg -); - -1290 -wre_commd -( -EMS_TYPE_IBAStgs -, 1, -lg -, EMS_TYPE_IBASettings); - -1294  - gThmo -:: -t_cڌ -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1295  - g - = 0; - -1296 i(! - gHrs -:: -vue2numb -( -vue -, - -)) { - -1300 -ut8_t - - ghc_num - = ( -id - =-1? -AUTO_HEATING_CIRCUIT - : id; - -1302 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -hc_num -); - -1303 i( - ghc - = -nuαr -) { - -1304 -LOG_WARNING -( -F -("S cڌ: Htg Ccu %d found oaived"), -hc_num -); - -1308 i( - g - > 2) { - -1309 -LOG_WARNING -( -F -("S cڌ: Invid cڌ mode: %d"), - -); - -1313 -LOG_INFO -( -F -("Stg ccu-cڌ f hc%d%d"), -hc_num -, - -); - -1314 -wre_commd -( -t_tyids -[ -hc --> -hc_num -(- 1], 26, - -); - -1318  - gThmo -:: -t_wwmode -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1319 - gd -:: -rg - -v -(10, '\0'); - -1320 i(! - gHrs -:: -vue2rg -( -vue -, -v -)) { - -1324 -ut8_t - - gt - = 0xFF; - -1325 i( - gv - == "off") { - -1326 -t - = 0; - -1327 } i( - gv - == "on") { - -1328 -t - = 1; - -1329 } i( - gv - == "auto") { - -1330 -t - = 2; - -1333 i( - gt - != 0xFF) { - -1334 -LOG_INFO -( -F -("Stghmo wm w modt%s"), -v -. -c_r -()); - -1335 -wre_commd -( -EMS_TYPE_wwStgs -, 2, -t -, EMS_TYPE_wwSettings); - -1337 -LOG_WARNING -( -F -("Shmo wm w mode: Invid mode: %s"), -v -. -c_r -()); - -1342  - gThmo -:: -t_hiday -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1343 - gd -:: -rg - -hd -(30, '\0'); - -1344 i(! - gHrs -:: -vue2rg -( -vue -, -hd -)) { - -1347 -ut8_t - - ghc_num - = ( -id - =-1? -AUTO_HEATING_CIRCUIT - : id; - -1349 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -hc_num -); - -1350 i( - ghc - = -nuαr -) { - -1351 -LOG_WARNING -( -F -("S hiday: Htg Ccu %d found oaived f devi ID 0x%02X"), -hc_num -, -this --> -g_devi_id -()); - -1354 -ut8_t - - gda -[6]; - -1355 - gda -[0] = ( -hd -[0] - '0') * 10 + (hd[1] - '0'); - -1356 - gda -[1] = ( -hd -[3] - '0') * 10 + (hd[4] - '0'); - -1357 - gda -[2] = ( -hd -[7] - '0') * 100 + (hd[8] - '0') * 10 + (hd[9] - '0'); - -1358 - gda -[3] = ( -hd -[11] - '0') * 10 + (hd[11] - '0'); - -1359 - gda -[4] = ( -hd -[14] - '0') * 10 + (hd[15] - '0'); - -1360 - gda -[5] = ( -hd -[18] - '0') * 100 + (hd[19] - '0') * 10 + (hd[20] - '0'); - -1362 -LOG_INFO -( -F -("Stg hiday f h%d"), -hc --> -hc_num -()); - -1363 -wre_commd -( -tim_tyids -[ -hc --> -hc_num -(- 1], 87, -da -, 6, 0); - -1367  - gThmo -:: -t_u -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1368  - ghrs - = 0; - -1369 i(! - gHrs -:: -vue2numb -( -vue -, -hrs -)) { - -1372 -ut8_t - - ghc_num - = ( -id - =-1? -AUTO_HEATING_CIRCUIT - : id; - -1374 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -hc_num -); - -1375 i( - ghc - = -nuαr -) { - -1376 -LOG_WARNING -( -F -("Sau: Htg Ccu %d found oaived f devi ID 0x%02X"), -hc_num -, -this --> -g_devi_id -()); - -1379 -LOG_INFO -( -F -("Stgau: %d hours, hc: %d"), -hrs -, -hc --> -hc_num -()); - -1380 -wre_commd -( -tim_tyids -[ -hc --> -hc_num -(- 1], 85, -hrs -); - -1384  - gThmo -:: -t_y -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1385  - ghrs - = 0; - -1386 i(! - gHrs -:: -vue2numb -( -vue -, -hrs -)) { - -1389 -ut8_t - - ghc_num - = ( -id - =-1? -AUTO_HEATING_CIRCUIT - : id; - -1391 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -hc_num -); - -1392 i( - ghc - = -nuαr -) { - -1393 -LOG_WARNING -( -F -("Sty: Htg Ccu %d found oaived f devi ID 0x%02X"), -hc_num -, -this --> -g_devi_id -()); - -1396 -LOG_INFO -( -F -("Stgty: %d hours, hc: %d"), -hrs -, -hc --> -hc_num -()); - -1397 -wre_commd -( -tim_tyids -[ -hc --> -hc_num -(- 1], 86, -hrs -); - -1403  - gThmo -:: -t_dime -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1404 - gd -:: -rg - -dt -(30, '\0'); - -1405 i(! - gHrs -:: -vue2rg -( -vue -, -dt -)) { - -1409 -ut8_t - - gda -[9]; - -1410 i( - gdt - == "ntp") { - -1411 -time_t - -now - = -time -( -nuαr -); - -1412 -tm - * - gtm_ - = -loime -(& -now -); - -1413 i( - gtm_ --> - gtm_yr - < 110) { - -1414 -LOG_WARNING -( -F -("No NTPime. Cannot set RCtime")); - -1417 - gda -[0] = -tm_ --> -tm_yr - - 100; - -1418 - gda -[1] = -tm_ --> -tm_m -; - -1419 - gda -[2] = -tm_ --> -tm_hour -; - -1420 - gda -[3] = -tm_ --> -tm_mday -; - -1421 - gda -[4] = -tm_ --> -tm_m -; - -1422 - gda -[5] = -tm_ --> -tm_c -; - -1423 - gda -[6] = ( -tm_ --> -tm_wday - + 6) % 7; - -1424 - gda -[7] = -tm_ --> -tm_isd - + 2; - -1425  - gtime_rg -[25]; - -1426 -rime -( -time_rg -, 25, "%FT%T%z", -tm_ -); - -1427 -LOG_INFO -( -F -("Ddime: %s"), -time_rg -); - -1429 - gda -[0] = ( -dt -[16] - '0') * 100 + (dt[17] - '0') * 10 + (dt[18] - '0'); - -1430 - gda -[1] = ( -dt -[12] - '0') * 10 + (dt[13] - '0'); - -1431 - gda -[2] = ( -dt -[0] - '0') * 10 + (dt[1] - '0'); - -1432 - gda -[3] = ( -dt -[9] - '0') * 10 + (dt[10] - '0'); - -1433 - gda -[4] = ( -dt -[3] - '0') * 10 + (dt[4] - '0'); - -1434 - gda -[5] = ( -dt -[6] - '0') * 10 + (dt[7] - '0'); - -1435 - gda -[6] = ( -dt -[20] - '0'); - -1436 - gda -[7] = ( -dt -[22] - '0') + 2; - -1438 -LOG_INFO -( -F -("Setting datendime")); - -1439 -wre_commd -( -EMS_TYPE_time -, 0, -da -, 8, EMS_TYPE_time); - -1444  - gThmo -:: -t_mode -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1445 - gd -:: -rg - -mode -(10, '\0'); - -1446 i(! - gHrs -:: -vue2rg -( -vue -, -mode -)) { - -1450 -ut8_t - - ghc_num - = ( -id - =-1? -AUTO_HEATING_CIRCUIT - : id; - -1452 i( -mode_torg -( -HtgCcu -:: -Mode -:: -OFF -= -mode -) { - -1453 -t_mode_n -( -HtgCcu -:: -Mode -:: -OFF -, -hc_num -); - -1454 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -MANUAL -= -mode -) { - -1455 -t_mode_n -( -HtgCcu -:: -Mode -:: -MANUAL -, -hc_num -); - -1456 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -AUTO -= -mode -) { - -1457 -t_mode_n -( -HtgCcu -:: -Mode -:: -AUTO -, -hc_num -); - -1458 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -DAY -= -mode -) { - -1459 -t_mode_n -( -HtgCcu -:: -Mode -:: -DAY -, -hc_num -); - -1460 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -NIGHT -= -mode -) { - -1461 -t_mode_n -( -HtgCcu -:: -Mode -:: -NIGHT -, -hc_num -); - -1462 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -HEAT -= -mode -) { - -1463 -t_mode_n -( -HtgCcu -:: -Mode -:: -HEAT -, -hc_num -); - -1464 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -NOFROST -= -mode -) { - -1465 -t_mode_n -( -HtgCcu -:: -Mode -:: -NOFROST -, -hc_num -); - -1466 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -ECO -= -mode -) { - -1467 -t_mode_n -( -HtgCcu -:: -Mode -:: -ECO -, -hc_num -); - -1468 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -HOLIDAY -= -mode -) { - -1469 -t_mode_n -( -HtgCcu -:: -Mode -:: -HOLIDAY -, -hc_num -); - -1470 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -COMFORT -= -mode -) { - -1471 -t_mode_n -( -HtgCcu -:: -Mode -:: -COMFORT -, -hc_num -); - -1473 -LOG_WARNING -( -F -("Invid mod%s. Cn s"), -mode -. -c_r -()); - -1479  - gThmo -:: -t_mode_n -(cڡ -ut8_t - -mode -, cڡ ut8_ -hc_num -) { - -1481 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -hc_num -); - -1482 i( - ghc - = -nuαr -) { - -1483 -LOG_WARNING -( -F -("mode: Htg Ccu %d found oaived"), -hc_num -); - -1487 -ut8_t - - gt_mode_vue -, - gofft -; - -1488 -ut16_t - - gvide_tyid - = 0; - -1489 -ut8_t - - ghc_p - = -hc --> -hc_num -() - 1; - -1492  - gmode -) { - -1493  - gHtgCcu -:: -Mode -:: -NIGHT -: - -1494  -HtgCcu -:: -Mode -:: -OFF -: - -1495 -t_mode_vue - = 0; - -1498  - gHtgCcu -:: -Mode -:: -DAY -: - -1499  -HtgCcu -:: -Mode -:: -HEAT -: - -1500  -HtgCcu -:: -Mode -:: -MANUAL -: - -1501  -HtgCcu -:: -Mode -:: -NOFROST -: - -1502 -t_mode_vue - = 1; - -1506  -HtgCcu -:: -Mode -:: -AUTO -: - -1507  -HtgCcu -:: -Mode -:: -ECO -: - -1508 -t_mode_vue - = 2; - -1512  - gthis --> -mod -()) { - -1513  - gEMSdevi -:: -EMS_DEVICE_FLAG_RC20 -: - -1514 -offt - = -EMS_OFFSET_RC20S_mode -; - -1515 - gvide_tyid - = -t_tyids -[ -hc_p -]; - -1517  - gEMSdevi -:: -EMS_DEVICE_FLAG_RC20_2 -: - -1518 -offt - = -EMS_OFFSET_RC20_2_S_mode -; - -1519 - gvide_tyid - = -t_tyids -[ -hc_p -]; - -1521  - gEMSdevi -:: -EMS_DEVICE_FLAG_RC30 -: - -1522 -offt - = -EMS_OFFSET_RC30S_mode -; - -1523 - gvide_tyid - = -t_tyids -[ -hc_p -]; - -1525  - gEMSdevi -:: -EMS_DEVICE_FLAG_RC35 -: - -1526  -EMSdevi -:: -EMS_DEVICE_FLAG_RC30_1 -: - -1527 -offt - = -EMS_OFFSET_RC35S_mode -; - -1528 - gvide_tyid - = -t_tyids -[ -hc_p -]; - -1530  - gEMSdevi -:: -EMS_DEVICE_FLAG_RC300 -: - -1531  -EMSdevi -:: -EMS_DEVICE_FLAG_RC100 -: - -1532 -offt - = -EMS_OFFSET_RCPLUSS_mode -; - -1533 - gvide_tyid - = -mڙ_tyids -[ -hc_p -]; - -1534 i( - gmode - = -HtgCcu -:: -Mode -:: -AUTO -) { - -1535 -t_mode_vue - = 0xFF; - -1537 - gt_mode_vue - = 0; - -1540  - gEMSdevi -:: -EMS_DEVICE_FLAG_JUNKERS -: - -1541 i(( -this --> -ags -(& -EMS_DEVICE_FLAG_JUNKERS_2 -) == EMS_DEVICE_FLAG_JUNKERS_2) { - -1542 -offt - = -EMS_OFFSET_JunksSMesge2_t_mode -; - -1544 - gofft - = -EMS_OFFSET_JunksSMesge_t_mode -; - -1546 - gvide_tyid - = -mڙ_tyids -[ -hc_p -]; - -1547 i( - gmode - = -HtgCcu -:: -Mode -:: -NOFROST -) { - -1548 -t_mode_vue - = 0x01; - -1549 } i( - gmode - = -HtgCcu -:: -Mode -:: -ECO - || ( -mode - =HtgCcu::Mode:: -NIGHT -)) { - -1550 -t_mode_vue - = 0x02; - -1551 } i(( - gmode - = -HtgCcu -:: -Mode -:: -DAY -|| ( -mode - =HtgCcu::Mode:: -HEAT -)) { - -1552 -t_mode_vue - = 0x03; - -1553 } i( - gmode - = -HtgCcu -:: -Mode -:: -AUTO -) { - -1554 -t_mode_vue - = 0x04; - -1558 -offt - = 0; - -1562 -LOG_INFO -( -F -("Stghmo modt%f htg ccu %d"), -mode_torg -( -mode -). -c_r -(), -hc --> -hc_num -()); - -1566 -wre_commd -( -t_tyids -[ -hc --> -hc_num -(- 1], -offt -, -t_mode_vue -, -vide_tyid -); - -1570  - gThmo -:: -t_mtu -(cڡ  -mtu -, cڡ -d -:: -rg - & -mode -, cڡ -ut8_t - -hc_num -) { - -1571 i( -mode_torg -( -HtgCcu -:: -Mode -:: -MANUAL -= -mode -) { - -1572 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -MANUAL -, -hc_num -); - -1573 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -AUTO -= -mode -) { - -1574 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -AUTO -, -hc_num -); - -1575 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -DAY -= -mode -) { - -1576 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -DAY -, -hc_num -); - -1577 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -NIGHT -= -mode -) { - -1578 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -NIGHT -, -hc_num -); - -1579 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -COMFORT -= -mode -) { - -1580 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -COMFORT -, -hc_num -); - -1581 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -HEAT -= -mode -) { - -1582 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -HEAT -, -hc_num -); - -1583 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -NOFROST -= -mode -) { - -1584 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -NOFROST -, -hc_num -); - -1585 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -SUMMER -= -mode -) { - -1586 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -SUMMER -, -hc_num -); - -1587 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -HOLIDAY -= -mode -) { - -1588 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -HOLIDAY -, -hc_num -); - -1589 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -OFFSET -= -mode -) { - -1590 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -OFFSET -, -hc_num -); - -1591 } i( -mode_torg -( -HtgCcu -:: -Mode -:: -DESIGN -= -mode -) { - -1592 -t_mtu -( -mtu -, -HtgCcu -:: -Mode -:: -DESIGN -, -hc_num -); - -1594 -LOG_WARNING -( -F -("Invid mod%s."), -mode -. -c_r -()); - -1600  - gThmo -:: -t_mtu -(cڡ  -mtu -, cڡ -ut8_t - -mode -, cڡ ut8_ -hc_num -) { - -1602 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -hc - = -htg_ccu -( -hc_num -); - -1603 i( - ghc - = -nuαr -) { - -1604 -LOG_WARNING -( -F -("Semtu: Htg Ccu %d found oaived f devi ID 0x%02X"), -hc_num -, -this --> -g_devi_id -()); - -1608 -ut8_t - - gmod - = -this --> -mod -(); - -1609 -t8_t - - gofft - = -1; - -1610 -ut8_t - - g - = 2; - -1611 -ut16_t - - gvide_tyid - = -mڙ_tyids -[ -hc --> -hc_num -() - 1]; - -1613 i( - gmod - = -EMS_DEVICE_FLAG_RC10 -) { - -1614 -offt - = -EMS_OFFSET_RC10S_mp -; - -1616 } i( - gmod - = -EMS_DEVICE_FLAG_RC20 -) { - -1617 -offt - = -EMS_OFFSET_RC20S_mp -; - -1619 } i( - gmod - = -EMS_DEVICE_FLAG_RC30 -) { - -1620 -offt - = -EMS_OFFSET_RC30S_mp -; - -1622 } i(( - gmod - = -EMS_DEVICE_FLAG_RC300 -|| ( -mod - = -EMS_DEVICE_FLAG_RC100 -)) { - -1623 -vide_tyid - = -t_tyids -[ -hc --> -hc_num -() - 1]; - -1624  - gmode -) { - -1625  - gHtgCcu -:: -Mode -:: -MANUAL -: - -1626 -offt - = 0x0A; - -1628  - gHtgCcu -:: -Mode -:: -COMFORT -: - -1629 -offt - = 0x02; - -1632  -HtgCcu -:: -Mode -:: -AUTO -: - -1633 -offt - = 0x08; - -1634 - gvide_tyid - = -mڙ_tyids -[ -hc --> -hc_num -() - 1]; - -1638 } i( - gmod - = -EMS_DEVICE_FLAG_RC20_2 -) { - -1639  -mode -) { - -1640  -HtgCcu -:: -Mode -:: -NIGHT -: - -1641 -offt - = -EMS_OFFSET_RC20_2_S_mp_night -; - -1643  - gHtgCcu -:: -Mode -:: -DAY -: - -1644 -offt - = -EMS_OFFSET_RC20_2_S_mp_day -; - -1647  -HtgCcu -:: -Mode -:: -AUTO -: - -1648 -ut8_t - -mode_ty - = -hc --> -g_mode_ty -( -this --> -ags -()); - -1649 - gofft - = ( -mode_ty - = -HtgCcu -:: -Mode -:: -NIGHT -? -EMS_OFFSET_RC20_2_S_mp_night - : -EMS_OFFSET_RC20_2_S_mp_day -; - -1653 } i(( - gmod - = -EMS_DEVICE_FLAG_RC35 -|| ( -mod - = -EMS_DEVICE_FLAG_RC30_1 -)) { - -1654 -vide_tyid - = -t_tyids -[ -hc --> -hc_num -() - 1]; - -1655  - gmode -) { - -1656  - gHtgCcu -:: -Mode -:: -NIGHT -: - -1657 -offt - = -EMS_OFFSET_RC35S_mp_night -; - -1659  - gHtgCcu -:: -Mode -:: -DAY -: - -1660 -offt - = -EMS_OFFSET_RC35S_mp_day -; - -1662  - gHtgCcu -:: -Mode -:: -HOLIDAY -: - -1663 -offt - = -EMS_OFFSET_RC35S_mp_hiday -; - -1665  - gHtgCcu -:: -Mode -:: -OFFSET -: - -1666 -offt - = -EMS_OFFSET_RC35S_mp_offt -; - -1668  - gHtgCcu -:: -Mode -:: -DESIGN -: - -1669 -offt - = -EMS_OFFSET_RC35S_mp_design -; - -1670 - g - = 1; - -1672  - gHtgCcu -:: -Mode -:: -SUMMER -: - -1673 -offt - = -EMS_OFFSET_RC35S_mp_summ -; - -1674 - g - = 1; - -1676  - gHtgCcu -:: -Mode -:: -NOFROST -: - -1677 -offt - = -EMS_OFFSET_RC35S_mp_noo -; - -1678 - g - = 1; - -1681  -HtgCcu -:: -Mode -:: -AUTO -: - -1682 -vide_tyid - = -mڙ_tyids -[ -hc --> -hc_num -() - 1]; - -1683 i( - gmod - = -EMS_DEVICE_FLAG_RC35 -) { - -1684 -ut8_t - -mode_ - = -hc --> -g_mode -( -this --> -ags -()); - -1685 i( - gmode_ - = -HtgCcu -:: -Mode -:: -NIGHT -) { - -1686 -offt - = -EMS_OFFSET_RC35S_mp_night -; - -1687 } i( - gmode_ - = -HtgCcu -:: -Mode -:: -DAY -) { - -1688 -offt - = -EMS_OFFSET_RC35S_mp_day -; - -1690 - gofft - = -EMS_OFFSET_RC35S_emp -; - -1693 -ut8_t - - gmode_ty - = -hc --> -g_mode_ty -( -this --> -ags -()); - -1694 - gofft - = ( -mode_ty - = -HtgCcu -:: -Mode -:: -NIGHT -? -EMS_OFFSET_RC35S_mp_night - : -EMS_OFFSET_RC35S_mp_day -; - -1699 } i( - gmod - = -EMS_DEVICE_FLAG_JUNKERS -) { - -1702 -bo - -d_junks - = (( -this --> -ags -(& -EMS_DEVICE_FLAG_JUNKERS_2 -) == EMS_DEVICE_FLAG_JUNKERS_2); - -1703 i(! - gd_junks -) { - -1704  - gmode -) { - -1705  - gHtgCcu -:: -Mode -:: -NOFROST -: - -1706 -offt - = -EMS_OFFSET_JunksSMesge_no_o_mp -; - -1708  - gHtgCcu -:: -Mode -:: -NIGHT -: - -1709  -HtgCcu -:: -Mode -:: -ECO -: - -1710 -offt - = -EMS_OFFSET_JunksSMesge_night_mp -; - -1712  - gHtgCcu -:: -Mode -:: -HEAT -: - -1713  -HtgCcu -:: -Mode -:: -DAY -: - -1714 -offt - = -EMS_OFFSET_JunksSMesge_day_mp -; - -1717  -HtgCcu -:: -Mode -:: -AUTO -: - -1718 -ut8_t - -mode_ty - = -hc --> -g_mode_ty -( -this --> -ags -()); - -1719 i( - gmode_ty - = -HtgCcu -:: -Mode -:: -NIGHT - || -mode_ty - =HtgCcu::Mode:: -ECO -) { - -1720 -offt - = -EMS_OFFSET_JunksSMesge_night_mp -; - -1721 } i( - gmode_ty - = -HtgCcu -:: -Mode -:: -DAY - || -mode_ty - =HtgCcu::Mode:: -HEAT -) { - -1722 -offt - = -EMS_OFFSET_JunksSMesge_day_mp -; - -1724 - gofft - = -EMS_OFFSET_JunksSMesge_no_o_mp -; - -1731  - gmode -) { - -1732  - gHtgCcu -:: -Mode -:: -NOFROST -: - -1733 -offt - = -EMS_OFFSET_JunksSMesge2_no_o_mp -; - -1735  - gHtgCcu -:: -Mode -:: -ECO -: - -1736  -HtgCcu -:: -Mode -:: -NIGHT -: - -1737 -offt - = -EMS_OFFSET_JunksSMesge2_eco_mp -; - -1739  - gHtgCcu -:: -Mode -:: -HEAT -: - -1740  -HtgCcu -:: -Mode -:: -DAY -: - -1741 -offt - = -EMS_OFFSET_JunksSMesge2_ht_mp -; - -1744  -HtgCcu -:: -Mode -:: -AUTO -: - -1745 -ut8_t - -mode_ty - = -hc --> -g_mode_ty -( -this --> -ags -()); - -1746 i( - gmode_ty - = -HtgCcu -:: -Mode -:: -NIGHT - || -mode_ty - =HtgCcu::Mode:: -ECO -) { - -1747 -offt - = -EMS_OFFSET_JunksSMesge2_eco_mp -; - -1748 } i( - gmode_ty - = -HtgCcu -:: -Mode -:: -DAY - || -mode_ty - =HtgCcu::Mode:: -HEAT -) { - -1749 -offt - = -EMS_OFFSET_JunksSMesge2_ht_mp -; - -1751 - gofft - = -EMS_OFFSET_JunksSMesge2_no_o_mp -; - -1759 i( - gofft - != -1) { - -1760  -s -[10]; - -1761 -LOG_INFO -( -F -("Settinghermostatemperatureo %s for heating circuit %d, mode %s"), - -1762 -Hrs -:: -nd_vue -( -s -, -mtu -, 2), - -1763 -hc --> -hc_num -(), - -1764 -mode_torg -( -mode -). -c_r -()); - -1768 -wre_commd -( -t_tyids -[ -hc --> -hc_num -(- 1], -offt -, ( -ut8_t -)(() -mtu - * () - -), -vide_tyid -); - -1773  - gThmo -:: -thmo_cmd_mp -(cڡ * -mesge -) { - -1774  -f - = -of -((*) -mesge -, 0); - -1775 -t_mtu -( -f -, -HtgCcu -:: -Mode -:: -AUTO -, -AUTO_HEATING_CIRCUIT -); - -1780  - gThmo -:: -thmo_cmd_mode -(cڡ * -mesge -) { - -1781 -t_mode -( -mesge -, -AUTO_HEATING_CIRCUIT -); - -1784  - gThmo -:: -t_mtu_vue -(cڡ * -vue -, cڡ -t8_t - -id -, cڡ -ut8_t - -mode -) { - -1785  - gf - = 0; - -1786 -ut8_t - - ghc_num - = ( -id - =-1? -AUTO_HEATING_CIRCUIT - : id; - -1787 i( - gHrs -:: -vue2t -( -vue -, -f -)) { - -1788 -t_mtu -( -f -, -mode -, -hc_num -); - -1792  - gThmo -:: -t_mp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1793 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -AUTO -); - -1796  - gThmo -:: -t_nighemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1797 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -NIGHT -); - -1800  - gThmo -:: -t_daymp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1801 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -DAY -); - -1804  - gThmo -:: -t_noomp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1805 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -NOFROST -); - -1808  - gThmo -:: -t_ecemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1809 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -ECO -); - -1812  - gThmo -:: -t_hemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1813 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -HEAT -); - -1816  - gThmo -:: -t_summmp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1817 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -SUMMER -); - -1820  - gThmo -:: -t_desigemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1821 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -DESIGN -); - -1824  - gThmo -:: -t_offemp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1825 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -OFFSET -); - -1828  - gThmo -:: -t_hidaymp -(cڡ * -vue -, cڡ -t8_t - -id -) { - -1829 -t_mtu_vue -( -vue -, -id -, -HtgCcu -:: -Mode -:: -HOLIDAY -); - -1833  - gThmo -:: -add_commds -() { - -1835 i(( -this --> -ags -(& -EMSdevi -:: -EMS_DEVICE_FLAG_NO_WRITE -) == EMSdevice::EMS_DEVICE_FLAG_NO_WRITE) { - -1840 -gi_mq_cmd -( -F -("wwmode"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_wwmode -(value, id); }); - -1841 -gi_mq_cmd -( -F -("mp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_mp -(value, id); }); - -1842 -gi_mq_cmd -( -F -("mode"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_mode -(value, id); }); - -1844 -ut8_t - - gmod - = -this --> -mod -(); - -1845  - gmod -) { - -1846  - gEMS_DEVICE_FLAG_RC20_2 -: - -1847 -gi_mq_cmd -( -F -("nighemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_nighemp -(value, id); }); - -1848 -gi_mq_cmd -( -F -("daymp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_daymp -(value, id); }); - -1850  - gEMS_DEVICE_FLAG_RC30_1 -: - -1851 -gi_mq_cmd -( -F -("ockofft"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_ockofft -(value, id); }); - -1852 -gi_mq_cmd -( -F -("nguage"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_nguage -(value, id); }); - -1853 -gi_mq_cmd -( -F -("diy"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_diy -(value, id); }); - -1854  - gEMS_DEVICE_FLAG_RC35 -: - -1855 -gi_mq_cmd -( -F -("nighemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_nighemp -(value, id); }); - -1856 -gi_mq_cmd -( -F -("daymp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_daymp -(value, id); }); - -1857 -gi_mq_cmd -( -F -("noomp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_noomp -(value, id); }); - -1858 -gi_mq_cmd -( -F -("mّemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_mّemp -(value, id); }); - -1859 -gi_mq_cmd -( -F -("dime"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_dime -(value, id); }); - -1860 -gi_mq_cmd -( -F -("mexemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_mexemp -(value, id); }); - -1861 -gi_mq_cmd -( -F -("lemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_lemp -(value, id); }); - -1862 -gi_mq_cmd -( -F -("budg"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_budg -(value, id); }); - -1863 -gi_mq_cmd -( -F -("cڌ"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_cڌ -(value, id); }); - -1864 -gi_mq_cmd -( -F -("u"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_u -(value, id); }); - -1865 -gi_mq_cmd -( -F -("y"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_y -(value, id); }); - -1866 -gi_mq_cmd -( -F -("hiday"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_hiday -(value, id); }); - -1867 -gi_mq_cmd -( -F -("summmp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_summmp -(value, id); }); - -1868 -gi_mq_cmd -( -F -("desigemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_desigemp -(value, id); }); - -1869 -gi_mq_cmd -( -F -("offemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_offemp -(value, id); }); - -1870 -gi_mq_cmd -( -F -("hidaymp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_hidaymp -(value, id); }); - -1872  - gEMS_DEVICE_FLAG_JUNKERS -: - -1873 -gi_mq_cmd -( -F -("noomp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_noomp -(value, id); }); - -1874 -gi_mq_cmd -( -F -("ecemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_ecemp -(value, id); }); - -1875 -gi_mq_cmd -( -F -("hemp"), [&](cڡ * -vue -, cڡ -t8_t - -id -{ -t_hemp -(value, id); }); - - @src/devices/thermostat.h - -19 #ide -EMSESP_THERMOSTAT_H - - -20  - #EMSESP_THERMOSTAT_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -27  - ~"emsdevi.h -" - -28  - ~"gm.h -" - -29  - ~"em.h -" - -30  - ~"hrs.h -" - -31  - ~"mq.h -" - -33  - ~ - -34  - ~ - -36 -mea - - gem - { - -38 as - cThmo - : -public - -EMSdevi - { - -39 -public -: - -40 -Thmo -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -); - -41 as - cHtgCcu - { - -42 - gpublic -: - -43 -HtgCcu -(cڡ -ut8_t - -hc_num -) - -44 : -hc_num_ -( -hc_num -) - -45 , -ha_gied_ -( -l -) { - -47 ~ -HtgCcu -() = ; - -49 -t16_t - - got_roomTemp - = -EMS_VALUE_SHORT_NOTSET -; - -50 -t16_t - - gcu_roomTemp - = -EMS_VALUE_SHORT_NOTSET -; - -51 -ut8_t - - gmode - = -EMS_VALUE_UINT_NOTSET -; - -52 -ut8_t - - gmode_ty - = -EMS_VALUE_UINT_NOTSET -; - -53 -ut8_t - - gsumm_mode - = -EMS_VALUE_UINT_NOTSET -; - -54 -ut8_t - - ghiday_mode - = -EMS_VALUE_UINT_NOTSET -; - -55 -ut8_t - - gdaymp - = -EMS_VALUE_UINT_NOTSET -; - -56 -ut8_t - - gnighemp - = -EMS_VALUE_UINT_NOTSET -; - -57 -ut8_t - - ghidaymp - = -EMS_VALUE_UINT_NOTSET -; - -58 -ut8_t - - ghtgty - = -EMS_VALUE_UINT_NOTSET -; - -59 -ut8_t - - grgowmp - = -EMS_VALUE_UINT_NOTSET -; - -60 -ut8_t - - gsummmp - = -EMS_VALUE_UINT_NOTSET -; - -61 -ut8_t - - gnoomp - = -EMS_VALUE_UINT_NOTSET -; - -62 -ut8_t - - gdesigemp - = -EMS_VALUE_UINT_NOTSET -; - -63 -t8_t - - goffemp - = -EMS_VALUE_INT_NOTSET -; - -65 -ut8_t - -hc_num -() const { - -66  - ghc_num_ -; - -69 -bo - -ha_gied -() const { - -70  - gha_gied_ -; - -73  -ha_gied -( -bo - -b -) { - -74 - gha_gied_ - = -b -; - -78 -bo - -is_aive -() { - -79  - gHrs -:: -hasVue -( -ot_roomTemp -); - -82 -ut8_t - -g_mode -(ut8_ -ags -) const; - -83 -ut8_t - -g_mode_ty -(ut8_ -ags -) const; - -85 - gMode - : -ut8_t - { -UNKNOWN -, - gOFF -, - gMANUAL -, - gAUTO -, - gDAY -, - gNIGHT -, - gHEAT -, - gNOFROST -, - gECO -, - gHOLIDAY -, - gCOMFORT -, - gOFFSET -, - gDESIGN -, - gSUMMER - }; - -88 -nd - -le - -bo - - gݔ -<(cڡ - gd -:: -shed_r -< -HtgCcu -> & -lhs -, cڡ std::shed_r & -rhs -) { - -89  ( -lhs --> -hc_num_ - < -rhs -->hc_num_); - -92 - give -: - -93 -ut8_t - -hc_num_ -; - -94 -bo - - gha_gied_ -; - -97  - gd -:: -rg - -mode_torg -( -ut8_t - -mode -); - -99 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -100 -vtu -  -publish_vues -(); - -101 -vtu -  -devi_fo_web -( -JsAay - & -ro -); - -102 -vtu - -bo - -upded_vues -(); - -103 -vtu -  -add_cڋxt_mu -(); - -105 - give -: - -106  -uuid -:: -log -:: -Logg - -logg_ -; - -108  -cse_commds -( -Shl - & -shl -,  -cڋxt -); - -109  -add_commds -(); - -112 -le - -ut8_t - -mod -() const { - -113  ( - gthis --> -ags -() & 0x0F); - -117 - gd -:: -ve -< -ut16_t -> -mڙ_tyids -; - -118 - gd -:: -ve -< -ut16_t -> -t_tyids -; - -119 - gd -:: -ve -< -ut16_t -> -tim_tyids -; - -121 - gd -:: -rg - -dime_ -; - -123 -ut8_t - - gmq_fm_ -; - -124 -bo - - gchged_ - = -l -; - -127 -ut8_t - - gibaMaDiy_ - = - -128 -EMS_VALUE_UINT_NOTSET -; - -129 -ut8_t - - gibaLguage_ - = -EMS_VALUE_UINT_NOTSET -; - -130 -t8_t - - gibaCITemtu_ - = -EMS_VALUE_INT_NOTSET -; - -131 -t8_t - - gibaMExtTemtu_ - = -EMS_VALUE_INT_NOTSET -; - -132 -ut8_t - - gibaBudgTy_ - = -EMS_VALUE_UINT_NOTSET -; - -133 -ut8_t - - gibaClockOfft_ - = -EMS_VALUE_UINT_NOTSET -; - -135 -t8_t - - gdamdoutdo܋mp_ - = -EMS_VALUE_INT_NOTSET -; - -136 -ut16_t - - gmpns1_ - = -EMS_VALUE_USHORT_NOTSET -; - -137 -ut16_t - - gmpns2_ - = -EMS_VALUE_USHORT_NOTSET -; - -139 -ut8_t - - gwwSyem_ - = -EMS_VALUE_UINT_NOTSET -; - -140 -ut8_t - - gwwExa_ - = -EMS_VALUE_UINT_NOTSET -; - -141 -ut8_t - - gwwMode_ - = -EMS_VALUE_UINT_NOTSET -; - -143 - gd -:: -ve -< -d -:: -shed_r -< -HtgCcu ->> -htg_ccus_ -; - -146  -cڡex - -ut16_t - - gEMS_TYPE_RCTime - = 0x06; - -147  -cڡex - -ut16_t - - gEMS_TYPE_RCOutdoTemp - = 0xA3; - -150  -cڡex - -ut8_t - - gEMS_OFFSET_RC10StusMesge_ot - = 1; - -151  -cڡex - -ut8_t - - gEMS_OFFSET_RC10StusMesge_cu - = 2; - -152  -cڡex - -ut8_t - - gEMS_OFFSET_RC10S_mp - = 4; - -154  -cڡex - -ut8_t - - gEMS_OFFSET_RC20StusMesge_ot - = 1; - -155  -cڡex - -ut8_t - - gEMS_OFFSET_RC20StusMesge_cu - = 2; - -156  -cڡex - -ut8_t - - gEMS_OFFSET_RC20S_mode - = 23; - -157  -cڡex - -ut8_t - - gEMS_OFFSET_RC20S_mp - = 28; - -159  -cڡex - -ut8_t - - gEMS_OFFSET_RC20_2_S_mode - = 3; - -160  -cڡex - -ut8_t - - gEMS_OFFSET_RC20_2_S_mp_night - = 1; - -161  -cڡex - -ut8_t - - gEMS_OFFSET_RC20_2_S_mp_day - = 2; - -163  -cڡex - -ut8_t - - gEMS_OFFSET_RC30StusMesge_ot - = 1; - -164  -cڡex - -ut8_t - - gEMS_OFFSET_RC30StusMesge_cu - = 2; - -165  -cڡex - -ut8_t - - gEMS_OFFSET_RC30S_mode - = 23; - -166  -cڡex - -ut8_t - - gEMS_OFFSET_RC30S_mp - = 28; - -168  -cڡex - -ut8_t - - gEMS_OFFSET_RC35StusMesge_ot - = 2; - -169  -cڡex - -ut8_t - - gEMS_OFFSET_RC35StusMesge_cu - = 3; - -170  -cڡex - -ut8_t - - gEMS_OFFSET_RC35StusMesge_mode - = 1; - -171  -cڡex - -ut8_t - - gEMS_OFFSET_RC35StusMesge_mode1 - = 0; - -172  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mode - = 7; - -173  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mp_day - = 2; - -174  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mp_night - = 1; - -175  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mp_hiday - = 3; - -176  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_htgty - = 0; - -177  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_rgowmp - = 14; - -178  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_emp - = 37; - -179  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mp_offt - = 6; - -180  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mp_design - = 17; - -181  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mp_summ - = 22; - -182  -cڡex - -ut8_t - - gEMS_OFFSET_RC35S_mp_noo - = 23; - -184  -cڡex - -ut8_t - - gEMS_OFFSET_EasyStusMesge_ot - = 10; - -185  -cڡex - -ut8_t - - gEMS_OFFSET_EasyStusMesge_cu - = 8; - -187  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSStusMesge_mode - = 10; - -188  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSStusMesge_ot - = 3; - -189  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSStusMesge_cu - = 0; - -190  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSStusMesge_cuot - = 6; - -191  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSS_mode - = 0; - -192  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSS_mp_comft3 - = 1; - -193  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSS_mp_comft2 - = 2; - -194  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSS_mp_comft1 - = 3; - -195  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSS_mp_eco - = 4; - -196  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSS_mp_ot - = 8; - -197  -cڡex - -ut8_t - - gEMS_OFFSET_RCPLUSS_mu_ot - = 10; - -199  -cڡex - -ut8_t - - gEMS_OFFSET_JunksStusMesge_daymode - = 0; - -200  -cڡex - -ut8_t - - gEMS_OFFSET_JunksStusMesge_mode - = 1; - -201  -cڡex - -ut8_t - - gEMS_OFFSET_JunksStusMesge_ot - = 2; - -202  -cڡex - -ut8_t - - gEMS_OFFSET_JunksStusMesge_cu - = 4; - -203  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge_day_mp - = 17; - -204  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge_night_mp - = 16; - -205  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge_no_o_mp - = 15; - -206  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge_t_mode - = 14; - -207  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge2_t_mode - = 4; - -208  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge2_no_o_mp - = 5; - -209  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge2_eco_mp - = 6; - -210  -cڡex - -ut8_t - - gEMS_OFFSET_JunksSMesge2_ht_mp - = 7; - -212  -cڡex - -ut8_t - - gAUTO_HEATING_CIRCUIT - = 0; - -215  -cڡex - -ut8_t - - gEMS_TYPE_IBAStgs - = 0xA5; - -216  -cڡex - -ut8_t - - gEMS_TYPE_wwStgs - = 0x37; - -217  -cڡex - -ut8_t - - gEMS_TYPE_time - = 0x06; - -219 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -htg_ccu -( -d -::shed_r -gm -); - -220 - gd -:: -shed_r -< -Thmo -:: -HtgCcu -> -htg_ccu -(cڡ -ut8_t - -hc_num -); - -222  -gi_mq_ha_cfig -( -ut8_t - -hc_num -); - -224  -oss_RCOutdoTemp -( -d -:: -shed_r - -gm -); - -225  -oss_IBAStgs -( -d -:: -shed_r - -gm -); - -226  -oss_RCTime -( -d -:: -shed_r - -gm -); - -227  -oss_RC35wwStgs -( -d -:: -shed_r - -gm -); - -228  -oss_RC35Mڙ -( -d -:: -shed_r - -gm -); - -229  -oss_RC35S -( -d -:: -shed_r - -gm -); - -230  -oss_RC30Mڙ -( -d -:: -shed_r - -gm -); - -231  -oss_RC30S -( -d -:: -shed_r - -gm -); - -232  -oss_RC20Mڙ -( -d -:: -shed_r - -gm -); - -233  -oss_RC20S -( -d -:: -shed_r - -gm -); - -234  -oss_RC20Reme -( -d -:: -shed_r - -gm -); - -235  -oss_RC20Mڙ_2 -( -d -:: -shed_r - -gm -); - -236  -oss_RC20S_2 -( -d -:: -shed_r - -gm -); - -237  -oss_RC10Mڙ -( -d -:: -shed_r - -gm -); - -238  -oss_RC10S -( -d -:: -shed_r - -gm -); - -239  -oss_RC300Mڙ -( -d -:: -shed_r - -gm -); - -240  -oss_RC300S -( -d -:: -shed_r - -gm -); - -241  -oss_JunksMڙ -( -d -:: -shed_r - -gm -); - -242  -oss_JunksS -( -d -:: -shed_r - -gm -); - -243  -oss_JunksS2 -( -d -:: -shed_r - -gm -); - -244  -oss_EasyMڙ -( -d -:: -shed_r - -gm -); - -245  -oss_RC300WWmode -( -d -:: -shed_r - -gm -); - -248  -t_mode_n -(cڡ -ut8_t - -mode -, cڡ ut8_ -hc_num -); - -250  -t_mtu_vue -(cڡ * -vue -, cڡ -t8_t - -id -, cڡ -ut8_t - -mode -); - -251  -t_mtu -(cڡ  -mtu -, cڡ -d -:: -rg - & -mode -, cڡ -ut8_t - -hc_num -); - -252  -t_mtu -(cڡ  -mtu -, cڡ -ut8_t - -mode -, cڡ ut8_ -hc_num -); - -255  -thmo_cmd_mp -(cڡ * -mesge -); - -256  -thmo_cmd_mode -(cڡ * -mesge -); - -259  -t_mode -(cڡ * -vue -, cڡ -t8_t - -id -); - -260  -t_cڌ -(cڡ * -vue -, cڡ -t8_t - -id -); - -261  -t_hiday -(cڡ * -vue -, cڡ -t8_t - -id -); - -262  -t_u -(cڡ * -vue -, cڡ -t8_t - -id -); - -263  -t_y -(cڡ * -vue -, cڡ -t8_t - -id -); - -265  -t_mp -(cڡ * -vue -, cڡ -t8_t - -id -); - -266  -t_nighemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -267  -t_daymp -(cڡ * -vue -, cڡ -t8_t - -id -); - -268  -t_noomp -(cڡ * -vue -, cڡ -t8_t - -id -); - -269  -t_ecemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -270  -t_hemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -271  -t_summmp -(cڡ * -vue -, cڡ -t8_t - -id -); - -272  -t_desigemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -273  -t_offemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -274  -t_hidaymp -(cڡ * -vue -, cڡ -t8_t - -id -); - -276  -t_mّemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -279  -t_wwmode -(cڡ * -vue -, cڡ -t8_t - -id -); - -280  -t_dime -(cڡ * -vue -, cڡ -t8_t - -id -); - -281  -t_mexemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -282  -t_ockofft -(cڡ * -vue -, cڡ -t8_t - -id -); - -283  -t_lemp -(cڡ * -vue -, cڡ -t8_t - -id -); - -284  -t_diy -(cڡ * -vue -, cڡ -t8_t - -id -); - -285  -t_budg -(cڡ * -vue -, cڡ -t8_t - -id -); - -286  -t_nguage -(cڡ * -vue -, cڡ -t8_t - -id -); - - @src/emsdevice.cpp - -19  - ~"emsdevi.h -" - -20  - ~"em.h -" - -21  - ~"mq.h -" - -23 -mea - - gem - { - -25 - guuid -:: -log -:: -Logg - -EMSdevi -:: -logg_ -{ -F_ -( -em -), uuid::log:: -Facy -:: -CONSOLE -}; - -27 - gd -:: -rg - -EMSdevi -:: -bnd_to_rg -() const { - -28  -bnd_ -) { - -29  -EMSdevi -:: -Bnd -:: -BOSCH -: - -30  -ad_ash_rg -( -F -("Bosch")); - -32  - gEMSdevi -:: -Bnd -:: -JUNKERS -: - -33  -ad_ash_rg -( -F -("Junkers")); - -35  - gEMSdevi -:: -Bnd -:: -BUDERUS -: - -36  -ad_ash_rg -( -F -("Buderus")); - -38  - gEMSdevi -:: -Bnd -:: -NEFIT -: - -39  -ad_ash_rg -( -F -("Nefit")); - -41  - gEMSdevi -:: -Bnd -:: -SIEGER -: - -42  -ad_ash_rg -( -F -("Sieger")); - -44  - gEMSdevi -:: -Bnd -:: -WORCESTER -: - -45  -ad_ash_rg -( -F -("Worcester")); - -47  - gEMSdevi -:: -Bnd -:: -NO_BRAND -: - -49  -ad_ash_rg -( -F -("---")); - -53  - gd -:: -rg -{}; - -57 - gd -:: -rg - -EMSdevi -:: -devi_ty_tic_me -(cڡ -ut8_t - -devi_ty -) { - -58  -devi_ty -) { - -59  -DeviTy -:: -SERVICEKEY -: - -60  -ad_ash_rg -( -F -("system_cmd")); - -63  - gDeviTy -:: -BOILER -: - -64  -ad_ash_rg -( -F -("boiler_cmd")); - -67  - gDeviTy -:: -THERMOSTAT -: - -68  -ad_ash_rg -( -F -("thermostat_cmd")); - -71  - gDeviTy -:: -HEATPUMP -: - -72  -ad_ash_rg -( -F -("heatpump_cmd")); - -75  - gDeviTy -:: -SOLAR -: - -76  -ad_ash_rg -( -F -("solar_cmd")); - -79  - gDeviTy -:: -MIXING -: - -80  -ad_ash_rg -( -F -("mixing_cmd")); - -84  -d -:: -rg -{}; - -89 - gd -:: -rg - -EMSdevi -:: -devi_ty_me -() const { - -90  -devi_ty_ -) { - -91  -DeviTy -:: -BOILER -: - -92  -ad_ash_rg -( -F -("Boiler")); - -95  - gDeviTy -:: -THERMOSTAT -: - -96  -ad_ash_rg -( -F -("Thermostat")); - -99  - gDeviTy -:: -HEATPUMP -: - -100  -ad_ash_rg -( -F -("Heat Pump")); - -103  - gDeviTy -:: -SOLAR -: - -104  -ad_ash_rg -( -F -("Solar Module")); - -107  - gDeviTy -:: -CONNECT -: - -108  -ad_ash_rg -( -F -("Connect Module")); - -111  - gDeviTy -:: -CONTROLLER -: - -112  -ad_ash_rg -( -F -("Controller")); - -115  - gDeviTy -:: -MIXING -: - -116  -ad_ash_rg -( -F -("Mixing Module")); - -119  - gDeviTy -:: -SWITCH -: - -120  -ad_ash_rg -( -F -("Switching Module")); - -123  - gDeviTy -:: -GATEWAY -: - -124  -ad_ash_rg -( -F -("Gateway Module")); - -128  -ad_ash_rg -( -F -("Unknown")); - -134 -ut8_t - - gEMSdevi -:: -decode_bnd -(ut8_ -vue -) { - -135  -vue -) { - -137  -EMSdevi -:: -Bnd -:: -BOSCH -; - -140  -EMSdevi -:: -Bnd -:: -JUNKERS -; - -143  -EMSdevi -:: -Bnd -:: -BUDERUS -; - -146  -EMSdevi -:: -Bnd -:: -NEFIT -; - -149  -EMSdevi -:: -Bnd -:: -SIEGER -; - -152  -EMSdevi -:: -Bnd -:: -WORCESTER -; - -156  -EMSdevi -:: -Bnd -:: -NO_BRAND -; - -162 - gd -:: -rg - -EMSdevi -:: -to_rg -() const { - -163 -d -:: -rg - -r -(160, '\0'); - -166 i( - godu_id_ - == 0) { - -167 -tf_P -(& -r -[0], s. -cy -(+ 1, -PSTR -("%(DeviID:0x%02X)"), -me_ -. -c_r -(), -devi_id_ -); - -168  - gr -; - -171 i( - gbnd_ - = -Bnd -:: -NO_BRAND -) { - -172 -tf_P -(& -r -[0], s. -cy -(+ 1, -PSTR -("%(DeviID:0x%02X, ProduID:%d, Vsi:%s)"), -me_ -. -c_r -(), -devi_id_ -, -odu_id_ -, -vsi_ -.c_str()); - -174 -tf_P -(& -r -[0], - -175 -r -. -cy -() + 1, - -176 -PSTR -("%s %s (DeviceID:0x%02X ProductID:%d, Version:%s)"), - -177 -bnd_to_rg -(). -c_r -(), - -178 -me_ -. -c_r -(), - -179 -devi_id_ -, - -180 -odu_id_ -, - -181 -vsi_ -. -c_r -()); - -184  - gr -; - -188 - gd -:: -rg - -EMSdevi -:: -to_rg_sht -() const { - -189 -d -:: -rg - -r -(160, '\0'); - -190 i( - gbnd_ - = -Bnd -:: -NO_BRAND -) { - -191 -tf_P -(& -r -[0], s. -cy -(+ 1, -PSTR -("%s: %s"), -devi_ty_me -(). -c_r -(), -me_ -.c_str()); - -193 -tf_P -(& -r -[0], s. -cy -(+ 1, -PSTR -("%s: %%s"), -devi_ty_me -(). -c_r -(), -bnd_to_rg -().c_r(), -me_ -.c_str()); - -195  - gr -; - -199  - gEMSdevi -:: -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -200 -shl -. -tn -( -F -("%s: %s"), -devi_ty_me -(). -c_r -(), -to_rg -().c_str()); - -204  - gEMSdevi -:: -tch_vues -() { - -205 -LOG_DEBUG -( -F -("Fchg vuef devi ID 0x%02X"), -g_devi_id -()); - -207 cڡut& - gtf - : -gm_funis_ -) { - -208 i( -tf -. -tch_ -) { - -209 -ad_commd -( -tf -. -gm_ty_id_ -); - -215  - gEMSdevi -:: -togg_tch -( -ut16_t - -gm_id -, -bo - -togg -) { - -216 -LOG_DEBUG -( -F -("Togglg fch f devi ID 0x%02X,egm ID 0x%02X%d"), -g_devi_id -(), -gm_id -, -togg -); - -218 aut& - gtf - : -gm_funis_ -) { - -219 i( -tf -. -gm_ty_id_ - = -gm_id -) { - -220 -tf -. -tch_ - = -togg -; - -226  - gEMSdevi -:: -show_gm_hdrs -( -uuid -:: -cse -:: -Shl - & -shl -) { - -227 i( -gm_funis_ -. -size -() == 0) { - -231 - gshl -. -tf -( -F -(" Thi%wȻd؋gmy IDs: "), -devi_ty_me -(). -c_r -()); - -232 cڡut& - gtf - : -gm_funis_ -) { - -233 -shl -. -tf -( -F -("0x%02X "), -tf -. -gm_ty_id_ -); - -235 - gshl -. -n -(); - -239  - gEMSdevi -:: -show_mq_hdrs -( -uuid -:: -cse -:: -Shl - & -shl -) { - -240 -Mq -:: -show_tic_hdrs -( -shl -, -this --> -devi_ty_ -); - -243  - gEMSdevi -:: -gi_mq_tic -(cڡ -d -:: -rg - & -tic -, -mq_subfuni_p - -f -) { - -244 -LOG_DEBUG -( -F -("Regig MQTTi%f devi ID %02Xndy %s"), -tic -. -c_r -(), -this --> -devi_id_ -,his-> -devi_ty_me -().c_str()); - -245 - gMq -:: -subsibe -( -this --> -devi_ty_ -, -tic -, -f -); - -248  - gEMSdevi -:: -gi_mq_cmd -(cڡ -__FshSgHr - * -cmd -, -mq_cmdfuni_p - -f -) { - -249 - gMq -:: -add_commd -( -this --> -devi_ty_ -,his-> -devi_id_ -, -cmd -, -f -); - -253  - gEMSdevi -:: -gi_gm_ty -(cڡ -ut16_t - -gm_ty_id -, cڡ -__FshSgHr - * -gm_ty_me -, -bo - -tch -, -oss_funi_p - -f -) { - -254 - ggm_funis_ -. -ema_back -( -gm_ty_id -, -gm_ty_me -, -tch -, -f -); - -258 - gd -:: -rg - -EMSdevi -:: -gm_ty_me -( -d -:: -shed_r - -gm -) { - -260 i( -gm --> -ty_id - = -EMS_TYPE_VERSION -) { - -261  -ad_ash_rg -( -F -("Version")); - -262 } i( - ggm --> - gty_id - = -EMS_TYPE_UBADevis -) { - -263  -ad_ash_rg -( -F -("UBADevices")); - -266 cڡut& - gtf - : -gm_funis_ -) { - -267 i(( -tf -. -gm_ty_id_ - = -gm --> -ty_id -) && ((telegram->type_id & 0xF0) != 0xF0)) { - -268  -uuid -:: -ad_ash_rg -( -tf -. -gm_ty_me_ -); - -272  - gd -:: -rg -{}; - -277 -bo - - gEMSdevi -:: -hd_gm -( -d -:: -shed_r - -gm -) { - -278 cڡut& -tf - : -gm_funis_ -) { - -279 i( -tf -. -gm_ty_id_ - = -gm --> -ty_id -) { - -282 i( -gm --> -mesge_ngth - == 0) { - -283 -LOG_DEBUG -( -F -("Thigm (%sinلecognized byhEMS bus"), -uuid -:: -ad_ash_rg -( -tf -. -gm_ty_me_ -). -c_r -()); - -284 -togg_tch -( -tf -. -gm_ty_id_ -, -l -); - -285  - gl -; - -288 -LOG_DEBUG -( -F -("Reived %s"), -uuid -:: -ad_ash_rg -( -tf -. -gm_ty_me_ -). -c_r -()); - -289 - gtf -. -oss_funi_ -( -gm -); - -290  - gue -; - -293  - gl -; - -297  - gEMSdevi -:: -wre_commd -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -offt -, ut8_* -mesge_da -, cڡ ut8_ -mesge_ngth -, cڡ ut16_ -vide_tyid -) { - -298 - gEMSESP -:: -nd_wre_que -( -ty_id -, -this --> -g_devi_id -(), -offt -, -mesge_da -, -mesge_ngth -, -vide_tyid -); - -302  - gEMSdevi -:: -wre_commd -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -offt -, cڡ ut8_ -vue -, cڡ ut16_ -vide_tyid -) { - -303 - gEMSESP -:: -nd_wre_que -( -ty_id -, -this --> -g_devi_id -(), -offt -, -vue -, -vide_tyid -); - -307  - gEMSdevi -:: -wre_commd -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -offt -, cڡ ut8_ -vue -) { - -308 - gEMSESP -:: -nd_wre_que -( -ty_id -, -this --> -g_devi_id -(), -offt -, -vue -, 0); - -312  - gEMSdevi -:: -ad_commd -(cڡ -ut16_t - -ty_id -) { - -313 -EMSESP -:: -nd_ad_que -( -ty_id -, -g_devi_id -()); - -317  - gEMSdevi -:: -t_vue -( -uuid -:: -cse -:: -Shl - & -shl -, -ut8_t - -ddg -, cڡ -__FshSgHr - * -me -, cڡ __FshSgH* -vue -) { - -318 -t_vue -( -shl -, -ddg -, -me -, -uuid -:: -ad_ash_rg -( -vue -). -c_r -()); - -322  - gEMSdevi -:: -t_vue -( -uuid -:: -cse -:: -Shl - & -shl -, -ut8_t - -ddg -, cڡ -__FshSgHr - * -me -, cڡ * -vue -) { - -323 -ut8_t - - gi - = -ddg -; - -324  - gi --- > 0) { - -325 - gshl -. -t -( -F -(" ")); - -328 - gshl -. -tn -( -PSTR -("%s: %s"), -uuid -:: -ad_ash_rg -( -me -). -c_r -(), -vue -); - -332  - gEMSdevi -:: -add_cڋxt_commds -( -cڋxt -) { - -334 -ash_rg_ve - -ms -; - -335 i(( - gcڋxt - = -ShlCڋxt -:: -THERMOSTAT -|| ( -cڋxt - =ShlCڋxt:: -MIXING -)) { - -336 -ms - = -ash_rg_ve -{ -F_ -( -cmd_tiڮ -), F_( -da_tiڮ -), F_( -hc_tiڮ -)}; - -338 - gms - = -ash_rg_ve -{ -F_ -( -cmd_tiڮ -), F_( -da_tiڮ -)}; - -341 - gEMSESPShl -:: -commds --> -add_commd -( - -342 -cڋxt -, - -343 -CommdFgs -:: -ADMIN -, - -344 -ash_rg_ve -{ -F_ -( - -)}, - -345 -ms -, - -346 [&]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -347 -ut8_t - -devi_ty_ - = -devi_ty -(); - -348 i( -gumts -. -emy -()) { - -350 -shl -. -t -("Available commands:"); - -351 cڡut& -cf - : -Mq -:: -commds -()) { - -352 i( -cf -. -devi_ty_ - == device_type_) { - -353 -shl -. -tf -(" %s", -uuid -:: -ad_ash_rg -( -cf -. -cmd_ -). -c_r -()); - -356 -shl -. -n -(); - -360 cڡ * -cmd - = -gumts -[0]. -c_r -(); - -361 i( -gumts -. -size -() == 1) { - -363 -Mq -:: -_commd -( -devi_ty_ -, -cmd -, -nuαr -, -1); - -364 } i( -gumts -. -size -() == 2) { - -366 -Mq -:: -_commd -( -devi_ty_ -, -cmd -, -gumts -. -back -(). -c_r -(), -1); - -369 -Mq -:: -_commd -( -devi_ty_ -, -cmd -, -gumts -[1]. -c_r -(), -oi -(arguments[2].c_str())); - -372 [&]( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts -) -> std::vector { - -373 i( -gumts -. -size -() > 0) { - -376 -d -:: -ve - -commds -; - -377 cڡut& -cf - : -Mq -:: -commds -()) { - -378 i( -cf -. -devi_ty_ - = -devi_ty -()) { - -379 -commds -. -ema_back -( -uuid -:: -ad_ash_rg -( -cf -. -cmd_ -)); - -382  -commds -; - - @src/emsdevice.h - -19 #ide -EMSESP_EMSDEVICE_H_ - - -20  - #EMSESP_EMSDEVICE_H_ - - - ) - -22  - ~ - -23  - ~ - -24  - ~ - -26  - ~"emsy.h -" - -27  - ~"gm.h -" - -28  - ~"mq.h -" - -29  - ~"hrs.h -" - -31 -mea - - gem - { - -33 as - cEMSdevi - { - -34 - gpublic -: - -35  -cڡex - -ut8_t - -EMS_DEVICES_MAX_TELEGRAMS - = 20; - -38 -EMSdevi -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, cڡ -d -:: -rg - & -vsi -, cڡ std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -39 : -devi_ty_ -( -devi_ty -) - -40 , -devi_id_ -( -devi_id -) - -41 , -odu_id_ -( -odu_id -) - -42 , -vsi_ -( -vsi -) - -43 , -me_ -( -me -) - -44 , -ags_ -( -ags -) - -45 , -bnd_ -( -bnd -) { - -48 - gvtu - ~ -EMSdevi -() = ; - -50 -le - -ut8_t - -g_devi_id -() const { - -51  - gdevi_id_ -; - -54 - gd -:: -rg - -devi_ty_me -() const; - -55  - gd -:: -rg - -devi_ty_tic_me -(cڡ -ut8_t - -devi_ty -); - -57 -le - -ut8_t - -odu_id -() const { - -58  - godu_id_ -; - -61  -odu_id -( -ut8_t -roduct_id) { - -62 - godu_id_ - = -odu_id -; - -65 -le - -bo - -is_devi_id -( -ut8_t - -devi_id -) { - -66  (( - gdevi_id - & 0x7F=( -devi_id_ - & 0x7F)); - -69 -le - -ut8_t - -ags -() const { - -70  - gags_ -; - -73 -le -  -ags -( -ut8_t - flags) { - -74 - gags_ - = -ags -; - -78 -le - -ut8_t - -devi_ty -() const { - -79  - gdevi_ty_ -; - -82 -le -  -vsi -( -d -:: -rg - & version) { - -83 -vsi_ - = -vsi -; - -86 -le - - gd -:: -rg - -vsi -() const { - -87  -vsi_ -; - -90 -le -  -bnd -( -ut8_t - brand) { - -91 - gbnd_ - = -bnd -; - -94 -le - -ut8_t - -bnd -() const { - -95  - gbnd_ -; - -98 -le -  -me -(cڡ -d -:: -rg - &ame) { - -99 -me_ - = -me -; - -102 -le - - gd -:: -rg - -me -() const { - -103  -me_ -; - -106 -le - -ut8_t - -unique_id -() const { - -107  - gunique_id_ -; - -110 -le -  -unique_id -( -ut8_t - unique_id) { - -111 - gunique_id_ - = -unique_id -; - -114 - gd -:: -rg - -bnd_to_rg -() const; - -115  -ut8_t - -decode_bnd -(ut8_ -vue -); - -117 - gd -:: -rg - -to_rg -() const; - -118 - gd -:: -rg - -to_rg_sht -() const; - -120  -show_gm_hdrs -( -uuid -:: -cse -:: -Shl - & -shl -); - -121  -show_mq_hdrs -( -uuid -:: -cse -:: -Shl - & -shl -); - -123 -usg - - goss_funi_p - = -d -:: -funi -<(d:: -shed_r -)>; - -124  -gi_gm_ty -(cڡ -ut16_t - -gm_ty_id -, cڡ -__FshSgHr - * -gm_ty_me -, -bo - -tch -, -oss_funi_p - -cb -); - -125 -bo - -hd_gm -( -d -:: -shed_r - -gm -); - -127  -wre_commd -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -offt -, ut8_* -mesge_da -, cڡ ut8_ -mesge_ngth -, cڡ ut16_ -vide_tyid -); - -128  -wre_commd -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -offt -, cڡ ut8_ -vue -, cڡ ut16_ -vide_tyid -); - -129  -wre_commd -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -offt -, cڡ ut8_ -vue -); - -131  -ad_commd -(cڡ -ut16_t - -ty_id -); - -133  -add_cڋxt_commds -( -cڋxt -); - -135  -gi_mq_tic -(cڡ -d -:: -rg - & -tic -, -mq_subfuni_p - -f -); - -136  -gi_mq_cmd -(cڡ -__FshSgHr - * -cmd -, -mq_cmdfuni_p - -f -); - -139 -vtu -  -show_vues -( -uuid -:: -cse -:: -Shl - & -shl -) = 0; - -140 -vtu -  -publish_vues -() = 0; - -141 -vtu - -bo - -upded_vues -() = 0; - -142 -vtu -  -add_cڋxt_mu -() = 0; - -143 -vtu -  -devi_fo_web -( -JsAay - & -ro -) = 0; - -145 - gd -:: -rg - -gm_ty_me -( -d -:: -shed_r - -gm -); - -147  -tch_vues -(); - -148  -togg_tch -( -ut16_t - -gm_id -, -bo - -togg -); - -150  -rve_mem -( -size_t - -n -) { - -151 - ggm_funis_ -. -rve -( -n -); - -161 - gme - < -tyme - - gVue -> - -162  -t_vue -( -uuid -:: -cse -:: -Shl - & -shl -, - -163 -ut8_t - -ddg -, - -164 cڡ -__FshSgHr - * -me -, - -165 -Vue - & -vue -, - -166 cڡ -__FshSgHr - * -suffix -, - -167 cڡ -ut8_t - -fm - = 0) { - -168  -bufr -[15]; - -169 i( - gHrs -:: -nd_vue -( -bufr -, -vue -, -fm -= -nuαr -) { - -173 -ut8_t - - gi - = -ddg -; - -174  - gi --- > 0) { - -175 - gshl -. -t -( -F -(" ")); - -178 - gshl -. -tf -( -PSTR -("%s: %s"), -uuid -:: -ad_ash_rg -( -me -). -c_r -(), -bufr -); - -180 i( - gsuffix - ! -nuαr -) { - -181 -shl -. -n -( -uuid -:: -ad_ash_rg -( -suffix -). -c_r -()); - -183 - gshl -. -n -(); - -189 - gme - < -tyme - - gVue -> - -190  -nd_vue_js -( -JsAay - & -js -, - -191 cڡ -d -:: -rg - & -efix -, - -192 cڡ -__FshSgHr - * -me -, - -193 -Vue - & -vue -, - -194 cڡ -__FshSgHr - * -suffix -, - -195 cڡ -ut8_t - -fm - = 0) { - -196  -bufr -[15]; - -197 i( - gHrs -:: -nd_vue -( -bufr -, -vue -, -fm -= -nuαr -) { - -201 -JsObje - - gdaEmt - = -js -. -NeedObje -(); - -205 i( - gsuffix - ! -nuαr -) { - -206 -d -:: -rg - -xt -(20, '\0'); - -207 -tf_P -(& -xt -[0],ext. -cy -(+ 1, -PSTR -("%s%s"), -bufr -, -uuid -:: -ad_ash_rg -( -suffix -). -c_r -()); - -208 - gdaEmt -["vue"] = -xt -; - -210 - gdaEmt -["vue"] = -bufr -; - -213 - gd -:: -rg - -xt2 -(100, '\0'); - -214 -tf_P -(& -xt2 -[0],ext2. -cy -(+ 1, -PSTR -("%s%s"), -efix -. -c_r -(), -uuid -:: -ad_ash_rg -( -me -).c_str()); - -215 - gdaEmt -["me"] = -xt2 -; - -218  -t_vue -( -uuid -:: -cse -:: -Shl - & -shl -, -ut8_t - -ddg -, cڡ -__FshSgHr - * -me -, cڡ __FshSgH* -vue -); - -219  -t_vue -( -uuid -:: -cse -:: -Shl - & -shl -, -ut8_t - -ddg -, cڡ -__FshSgHr - * -me -, cڡ * -vue -); - -221 - gBnd - : -ut8_t - { - -222 -NO_BRAND -, - -223 - gBOSCH -, - -224 - gJUNKERS -, - -225 - gBUDERUS -, - -226 - gNEFIT -, - -227 - gSIEGER -, - -228 - gWORCESTER - - -231 - gDeviTy - : -ut8_t - { - -232 -SERVICEKEY - = 0, - -233 - gBOILER -, - -234 - gTHERMOSTAT -, - -235 - gMIXING -, - -236 - gSOLAR -, - -237 - gHEATPUMP -, - -238 - gGATEWAY -, - -239 - gSWITCH -, - -240 - gCONTROLLER -, - -241 - gCONNECT - - -246  -cڡex - -ut8_t - - gEMS_DEVICE_ID_BOILER - = 0x08; - -247  -cڡex - -ut8_t - - gEMS_DEVICE_ID_MODEM - = 0x48; - -250  -cڡex - -ut16_t - - gEMS_TYPE_VERSION - = 0x02; - -251  -cڡex - -ut16_t - - gEMS_TYPE_UBADevis - = 0x07; - -254  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_NONE - = 0; - -257  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_SM10 - = 1; - -258  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_SM100 - = 2; - -259  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_ISM - = 3; - -262  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_MMPLUS - = 1; - -263  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_MM10 - = 2; - -264  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_IPM - = 3; - -267  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_NO_WRITE - = (1 << 7); - -268  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_EASY - = 1; - -269  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC10 - = 2; - -270  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC20 - = 3; - -271  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC20_2 - = 4; - -272  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC30_1 - = 5; - -273  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC30 - = 6; - -274  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC35 - = 7; - -275  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC300 - = 8; - -276  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_RC100 - = 9; - -277  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_JUNKERS - = 10; - -278  -cڡex - -ut8_t - - gEMS_DEVICE_FLAG_JUNKERS_2 - = (1 << 6); - -280 - give -: - -281 -ut8_t - -unique_id_ -; - -282 -ut8_t - - gdevi_ty_ - = -DeviTy -:: -SERVICEKEY -; - -283 -ut8_t - - gdevi_id_ - = 0; - -284 -ut8_t - - godu_id_ - = 0; - -285 - gd -:: -rg - -vsi_ -; - -286 - gd -:: -rg - -me_ -; - -287 -ut8_t - - gags_ - = 0; - -288 -ut8_t - - gbnd_ - = -Bnd -:: -NO_BRAND -; - -290  - guuid -:: -log -:: -Logg - -logg_ -; - -292  - sTegmFuni - { - -293 -ut16_t - - ggm_ty_id_ -; - -294 cڡ -__FshSgHr - * - ggm_ty_me_ -; - -295 -bo - - gtch_ -; - -297 -oss_funi_p - - goss_funi_ -; - -299 -TegmFuni -( -ut16_t - -gm_ty_id -, cڡ -__FshSgHr - * -gm_ty_me -, -bo - -tch -, -oss_funi_p - -oss_funi -) - -300 : -gm_ty_id_ -( -gm_ty_id -) - -301 , -gm_ty_me_ -( -gm_ty_me -) - -302 , -tch_ -( -tch -) - -303 , -oss_funi_ -( -oss_funi -) { - -306 - gd -:: -ve -< -TegmFuni -> -gm_funis_ -; - - @src/emsesp.cpp - -19  - ~"em.h -" - -21 -mea - - gem - { - -23 -AsyncWebSv - -webSv -(80); - -25 #i -defed -( -ESP32 -) - -26 -ESP8266R - - gEMSESP -:: -e8266R -(& -webSv -, & -SPIFFS -); - -27 -EMSESPStgsSvi - - gEMSESP -:: -emStgsSvi - = EMSESPStgsSvi(& -webSv -, & -SPIFFS -, -EMSESP -:: -e8266R -. -gSecuryMag -()); - -28 #i -defed -( -ESP8266 -) - -29 -ESP8266R - - gEMSESP -:: -e8266R -(& -webSv -, & -LeFS -); - -30 -EMSESPStgsSvi - - gEMSESP -:: -emStgsSvi - = EMSESPStgsSvi(& -webSv -, & -LeFS -, -EMSESP -:: -e8266R -. -gSecuryMag -()); - -31 #i -defed -( -EMSESP_STANDALONE -) - -32 -FS - - gdummyFS -; - -33 -ESP8266R - - gEMSESP -:: -e8266R -(& -webSv -, & -dummyFS -); - -34 -EMSESPStgsSvi - - gEMSESP -:: -emStgsSvi - = EMSESPStgsSvi(& -webSv -, & -dummyFS -, -EMSESP -:: -e8266R -. -gSecuryMag -()); - -37 -EMSESPStusSvi - - gEMSESP -:: -emStusSvi - = EMSESPStusSvi(& -webSv -, -EMSESP -:: -e8266R -. -gSecuryMag -()); - -38 -EMSESPDevisSvi - - gEMSESP -:: -emDevisSvi - = EMSESPDevisSvi(& -webSv -, -EMSESP -:: -e8266R -. -gSecuryMag -()); - -40 -usg - - gDeviFgs - = -em -:: -EMSdevi -; - -41 -usg - - gDeviTy - = -em -:: -EMSdevi -:: -DeviTy -; - -42 - gd -:: -ve -< -d -:: -unique_r -< -EMSdevi ->> -EMSESP -:: -emsdevis -; - -43 - gd -:: -ve -< -em -:: -EMSESP -:: -Devi_cd -> EMSESP:: -devi_libry_ -; - -45 - guuid -:: -log -:: -Logg - -EMSESP -:: -logg_ -{ -F_ -( -em -), uuid::log:: -Facy -:: -KERN -}; - -48 -RxSvi - - gEMSESP -:: -rxrvi_ -; - -49 -TxSvi - - gEMSESP -:: -txrvi_ -; - -50 -Mq - - gEMSESP -:: -mq_ -; - -51 -Syem - - gEMSESP -:: -syem_ -; - -52 -Cse - - gEMSESP -:: -cse_ -; - -53 -Sss - - gEMSESP -:: -nss_ -; - -54 -Show - - gEMSESP -:: -show_ -; - -57 -ut8_t - - gEMSESP -:: -au_ma_thmo_ - = -EMSESP_DEFAULT_MASTER_THERMOSTAT -; - -58 -ut16_t - - gEMSESP -:: -wch_id_ - = -WATCH_ID_NONE -; - -59 -ut8_t - - gEMSESP -:: -wch_ - = 0; - -60 -ut16_t - - gEMSESP -:: -ad_id_ - = -WATCH_ID_NONE -; - -61 -ut16_t - - gEMSESP -:: -publish_id_ - = 0; - -62 -bo - - gEMSESP -:: -p_w_aive_ - = -l -; - -63 -ut32_t - - gEMSESP -:: -ϡ_tch_ - = 0; - -64 -ut8_t - - gEMSESP -:: -unique_id_cou_ - = 0; - -68  - gEMSESP -:: -tch_devi_vues -(cڡ -ut8_t - -devi_id -) { - -69 cڡut& -emsdevi - : -emsdevis -) { - -70 i( -emsdevi -) { - -71 i(( -devi_id - =0|| -emsdevi --> -is_devi_id -(device_id)) { - -72 -emsdevi --> -tch_vues -(); - -73 i( - gdevi_id - != 0) { - -82  - gEMSESP -:: -r_l_devis -() { - -83 -emsdevis -. -r -(); - -87 -ut8_t - - gEMSESP -:: -cou_devis -(cڡ ut8_ -devi_ty -) { - -88 -ut8_t - -cou - = 0; - -89 cڡut& - gemsdevi - : -emsdevis -) { - -90 i( -emsdevi -) { - -91 -cou - +( -emsdevi --> -devi_ty -() == device_type); - -94  - gcou -; - -98  - gEMSESP -:: -sn_devis -() { - -99 -EMSESP -:: -r_l_devis -(); - -100 - gEMSESP -:: -nd_ad_que -( -EMSdevi -:: -EMS_TYPE_UBADevis -, EMSdevi:: -EMS_DEVICE_ID_BOILER -); - -107 -ut8_t - - gEMSESP -:: -check_ma_devi -(cڡ ut8_ -devi_id -, cڡ -ut16_t - -ty_id -, cڡ -bo - -ad -) { - -108 -ut16_t - - gm_id -[4] = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; - -109 -ut16_t - - gt_id -[4] = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; - -110 i( - gau_ma_thmo_ - == 0x18) { - -111  -ut8_t - -i - = 0; - gi - < 4; i++) { - -112 i( - gty_id - = -m_id -[ -i -] || -ty_id - = -t_id -[i]) { - -113 i( -ad -) { - -116  0x18 + - gi -; - -121  - gdevi_id -; - -124  - gEMSESP -:: -au_ma_thmo -(cڡ -ut8_t - -devi_id -) { - -125 -au_ma_thmo_ - = -devi_id -; - -128 -ut8_t - - gEMSESP -:: -au_ma_thmo -() { - -129  -au_ma_thmo_ -; - -133  - gEMSESP -:: -wch_id -( -ut16_t - watch_id) { - -134 -wch_id_ - = -wch_id -; - -140  - gEMSESP -:: -_tx -() { - -141 -ut8_t - -tx_mode -; - -142 - gEMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -143 -tx_mode - = -gs -.tx_mode; - -145 #ide -EMSESP_FORCE_SERIAL - - -146 -EMSut -:: - -(); - -147 -EMSut -:: -t -( -tx_mode -, -gs -. -rx_gpio -, stgs. -tx_gpio -); - -151 - gtxrvi_ -. -t -(); - -154 i( - gtx_mode - != 0) { - -155 -EMSESP -:: -tch_devi_vues -(); - -160 -ut8_t - - gEMSESP -:: -bus_us -() { - -161 i(! -rxrvi_ -. -bus_ced -()) { - -162  -BUS_STATUS_OFFLINE -; - -166 -ut32_t - - gtٮ_ - = -txrvi_ -. -gm_ad_cou -(+xrvi_. -gm_wre_cou -(); - -169 i(( - gtٮ_ - =0&& ( -txrvi_ -. -gm__cou -() == 0)) { - -170  -BUS_STATUS_CONNECTED -; - -174 i(( - gtٮ_ - =0&& ( -txrvi_ -. -gm__cou -() != 0)) { - -175  -BUS_STATUS_TX_ERRORS -; - -179 i((( - gtxrvi_ -. -gm__cou -(* 100/ - gtٮ_ -> - gEMSbus -:: -EMS_TX_ERROR_LIMIT -) { - -180  -BUS_STATUS_TX_ERRORS -; - -183  - gBUS_STATUS_CONNECTED -; - -187  - gEMSESP -:: -show_ems -( -uuid -:: -cse -:: -Shl - & -shl -) { - -189  -bus_us -()) { - -190  -BUS_STATUS_OFFLINE -: - -191 -shl -. -tn -( -F -("EMS Bus is disconnected.")); - -193  - gBUS_STATUS_TX_ERRORS -: - -194 -shl -. -tn -( -F -("EMS Bus is connected, but Tx isot stable.")); - -196  - gBUS_STATUS_CONNECTED -: - -198 -shl -. -tn -( -F -("EMS Bus is connected.")); - -202 - gshl -. -n -(); - -204 i( -bus_us -(! -BUS_STATUS_OFFLINE -) { - -205 -ut8_t - -sucss_ - = 0; - -206 i( - grxrvi_ -. -gm_r_cou -()) { - -207 - gsucss_ - = (() -rxrvi_ -. -gm_r_cou -(/ (xrvi_. -gm_cou -()) * 100; - -210 - gshl -. -tn -( -F -("EMS Bus info:")); - -211 - gEMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -{ -shl -. -tn -( -F -(" Tx mode: %d"), stgs. -tx_mode -); }); - -212 - gshl -. -tn -( -F -(" Buoc: %s"), -EMSbus -:: -is_ht3 -() ? F("HT3") : F("Buderus")); - -213 - gshl -. -tn -( -F -(" #gmived: %d"), -rxrvi_ -. -gm_cou -()); - -214 - gshl -. -tn -( -F -(" #adeque: %d"), -txrvi_ -. -gm_ad_cou -()); - -215 - gshl -. -tn -( -F -(" #wrque: %d"), -txrvi_ -. -gm_wre_cou -()); - -216 - gshl -. -tn -( -F -(" #comgms: %d (%d%%)"), -rxrvi_ -. -gm_r_cou -(), -sucss_ -); - -217 - gshl -. -tn -( -F -(" #tx fa %drs): %d"), -TxSvi -:: -MAXIMUM_TX_RETRIES -, -txrvi_ -. -gm__cou -()); - -220 - gshl -. -n -(); - -223 aut - grx_gms - = -rxrvi_ -. -queue -(); - -224 i( - grx_gms -. -emy -()) { - -225 - gshl -. -tn -( -F -("Rx Queue ismpty")); - -227 - gshl -. -tn -( -F -("Rx Queu(%ldegm%s):"), -rx_gms -. -size -(),x_telegrams.size() == 1 ? "" : "s"); - -228 cڡut& - g - : -rx_gms -) { - -229 -shl -. -tn -( -F -(" [%02d] %s"), - -. -id_ -, -ty_gm -(. -gm_ -). -c_r -()); - -233 - gshl -. -n -(); - -236 aut - gtx_gms - = -txrvi_ -. -queue -(); - -237 i( - gtx_gms -. -emy -()) { - -238 - gshl -. -tn -( -F -("Tx Queue ismpty")); - -240 - gshl -. -tn -( -F -("Tx Queu(%ldegm%s):"), -tx_gms -. -size -(),x_telegrams.size() == 1 ? "" : "s"); - -242 - gd -:: -rg - - -(10, '\0'); - -243 cڡut& - g - : -tx_gms -) { - -244 i(( - -. -gm_ --> -ݔi -= -Tegm -:: -Oti -:: -TX_RAW -) { - -245 - - = -ad_ash_rg -( -F -("RAW ")); - -246 } i(( - g -. - ggm_ --> - gݔi -= -Tegm -:: -Oti -:: -TX_READ -) { - -247 - - = -ad_ash_rg -( -F -("READ ")); - -248 } i(( - g -. - ggm_ --> - gݔi -= -Tegm -:: -Oti -:: -TX_WRITE -) { - -249 - - = -ad_ash_rg -( -F -("WRITE")); - -251 - gshl -. -tn -( -F -(" [%02d%c] %%s"), - -. -id_ -, ((. -y_ -? '*' : ' '), - -. -c_r -(), -ty_gm -(. -gm_ -).c_str()); - -255 - gshl -. -n -(); - -259  - gEMSESP -:: -show_devi_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -260 i( -emsdevis -. -emy -()) { - -261 -shl -. -tn -( -F -("No EMS devices detected. Try using 'scan devices' fromhems menu.")); - -262 - gshl -. -n -(); - -267 cڡut& - gdevi_ass - : -EMSFay -:: -devi_hdrs -()) { - -268 cڡut& -emsdevi - : -emsdevis -) { - -269 i(( -emsdevi -&& (emsdevi-> -devi_ty -(= -devi_ass -. -f -)) { - -270 -emsdevi --> -show_vues -( -shl -); - -277  - gEMSESP -:: -show_ns_vues -( -uuid -:: -cse -:: -Shl - & -shl -) { - -278 i( -ns_devis -(). -emy -()) { - -282  - gvuer -[8] = {0}; - -283 - gshl -. -tn -( -F -("Dallasemperature sensors:")); - -284 cڡut& - gdevi - : -ns_devis -()) { - -285 -shl -. -tn -( -F -(" ID: %s, Temtu: %s°C"), -devi -. -to_rg -(). -c_r -(), -Hrs -:: -nd_vue -( -vuer -, devi. -mtu_c -, 1)); - -287 - gshl -. -n -(); - -290  - gEMSESP -:: -publish_devi_vues -( -ut8_t - -devi_ty -) { - -291 i( -Mq -:: -ced -()) { - -292 cڡut& -emsdevi - : -emsdevis -) { - -293 i( -emsdevi - && (emsdevi-> -devi_ty -() == device_type)) { - -294 -emsdevi --> -publish_vues -(); - -300  - gEMSESP -:: -publish_h_vues -() { - -301 i( -Mq -:: -ced -()) { - -302 cڡut& -emsdevi - : -emsdevis -) { - -303 i( -emsdevi - && (emsdevi-> -devi_ty -(! -EMSdevi -:: -DeviTy -:: -BOILER -&& (emsdevi->devi_ty(!EMSdevi::DeviTy:: -THERMOSTAT -) - -304 && ( -emsdevi --> -devi_ty -(! -EMSdevi -:: -DeviTy -:: -SOLAR -&& (emsdevi->devi_ty(!EMSdevi::DeviTy:: -MIXING -)) { - -305 -emsdevi --> -publish_vues -(); - -311  - gEMSESP -:: -publish_ns_vues -(cڡ -bo - -f -) { - -312 i( -Mq -:: -ced -()) { - -313 i( -nss_ -. -upded_vues -(|| -f -) { - -314 -nss_ -. -publish_vues -(); - -320  - gEMSESP -:: -publish_ڣ -( -d -:: -shed_r - -gm -) { - -321 -SticJsDocumt -< -EMSESP_MAX_JSON_SIZE_SMALL -> -doc -; - -323  - gbufr -[100]; - -324 - gdoc -["c"] = -Hrs -:: -hext -( -bufr -, -gm --> -c -); - -325 - gdoc -["de"] = -Hrs -:: -hext -( -bufr -, -gm --> -de -); - -326 - gdoc -["ty"] = -Hrs -:: -hext -( -bufr -, -gm --> -ty_id -); - -327 - gdoc -["offt"] = -Hrs -:: -hext -( -bufr -, -gm --> -offt -); - -328 -ry -( -bufr -, -Hrs -:: -da_to_hex -( -gm --> -mesge_da -,egm-> -mesge_ngth -). -c_r -()); - -329 - gdoc -["da"] = -bufr -; - -331 i( - ggm --> - gmesge_ngth - <= 4) { - -332 -ut32_t - -vue - = 0; - -333  -ut8_t - - gi - = 0; i < - ggm --> - gmesge_ngth -; i++) { - -334 - gvue - = ( -vue - << 8+ -gm --> -mesge_da -[ -i -]; - -336 - gdoc -["vue"] = -vue -; - -339 - gMq -:: -publish -( -F -("ڣ"), -doc -); - -343 - gd -:: -rg - -EMSESP -:: -devi_torg -(cڡ -ut8_t - -devi_id -) { - -344 i(( -devi_id - & 0x7F= -rxrvi_ -. -ems_bus_id -()) { - -345  -ad_ash_rg -( -F -("Me")); - -346 } i( - gdevi_id - == 0x00) { - -347  -ad_ash_rg -( -F -("All")); - -349  - gbufr -[5]; - -350  - gHrs -:: -hext -( -bufr -, -devi_id -); - -356 - gd -:: -rg - -EMSESP -:: -ty_gm -( -d -:: -shed_r - -gm -) { - -357 -ut8_t - -c - = -gm -->src & 0x7F; - -358 -ut8_t - - gde - = -gm --> -de - & 0x7F; - -359 -ut8_t - - gofft - = -gm --> -offt -; - -362 - gd -:: -rg - -c_me -(20, '\0'); - -363 - gd -:: -rg - -de_me -(20, '\0'); - -364 - gd -:: -rg - -ty_me -(20, '\0'); - -365 cڡut& - gemsdevi - : -emsdevis -) { - -366 i( -emsdevi -) { - -368 i( -emsdevi --> -is_devi_id -( -c -)) { - -369 -c_me - = -emsdevi --> -devi_ty_me -(); - -370 } i( - gemsdevi --> -is_devi_id -( -de -)) { - -371 - gde_me - = -emsdevi --> -devi_ty_me -(); - -374 i( - gty_me -. -emy -()) { - -375 - gty_me - = -emsdevi --> -gm_ty_me -( -gm -); - -381 i( - gc_me -. -emy -()) { - -382 - gc_me - = -devi_torg -( -c -); - -385 i( - gde_me -. -emy -()) { - -386 - gde_me - = -devi_torg -( -de -); - -390 i( - ggm --> - gty_id - = -EMSdevi -:: -EMS_TYPE_VERSION -) { - -391 -ty_me - = -ad_ash_rg -( -F -("Version")); - -395 i( - gty_me -. -emy -()) { - -396 - gty_me - = -ad_ash_rg -( -F -("?")); - -399 - gd -:: -rg - -r -(200, '\0'); - -401 i( - gofft -) { - -402 -tf_P -(& -r -[0], - -403 -r -. -cy -() + 1, - -404 -PSTR -("%s(0x%02X) -> %s(0x%02X), %s(0x%02X), data: %s (offset %d)"), - -405 -c_me -. -c_r -(), - -406 -c -, - -407 -de_me -. -c_r -(), - -408 -de -, - -409 -ty_me -. -c_r -(), - -410 -gm --> -ty_id -, - -411 -gm --> -to_rg_mesge -(). -c_r -(), - -412 -offt -); - -414 -tf_P -(& -r -[0], - -415 -r -. -cy -() + 1, - -416 -PSTR -("%s(0x%02X) -> %s(0x%02X), %s(0x%02X), data: %s"), - -417 -c_me -. -c_r -(), - -418 -c -, - -419 -de_me -. -c_r -(), - -420 -de -, - -421 -ty_me -. -c_r -(), - -422 -gm --> -ty_id -, - -423 -gm --> -to_rg_mesge -(). -c_r -()); - -426  - gr -; - -436  - gEMSESP -:: -oss_UBADevis -( -d -:: -shed_r - -gm -) { - -438 i( -gm --> -mesge_ngth - > 15) { - -443  -ut8_t - - gda_by - = 0; da_by < - ggm --> - gmesge_ngth -; data_byte++) { - -444 -ut8_t - - gxt_by - = -gm --> -mesge_da -[ -da_by -]; - -446 i( - gxt_by -) { - -447  -ut8_t - - gb - = 0; bit < 8; bit++) { - -448 i( - gxt_by - & 0x01) { - -449 -ut8_t - - gdevi_id - = (( -da_by - + 1* 8+ -b -; - -452 i(( - gdevi_id - ! -EMSbus -:: -ems_bus_id -()&& !( -EMSESP -:: -devi_exis -( -devi_id -))) { - -453 -LOG_DEBUG -( -F -("New EMS devi deed wh ID 0x%02X. Requeg vsi infmi."), -devi_id -); - -454 -nd_ad_que -( -EMSdevi -:: -EMS_TYPE_VERSION -, -devi_id -); - -457 - gxt_by - = -xt_by - >> 1; - -465  - gEMSESP -:: -oss_vsi -( -d -:: -shed_r - -gm -) { - -467 i( -gm --> -mesge_ngth - < 3) { - -472 -ut8_t - - gofft - = 0; - -473 i( - ggm --> - gmesge_da -[0] == 0x00) { - -475 i( -gm --> -mesge_da -[3] != 0x00) { - -476 -offt - = 3; - -483 -ut8_t - - gdevi_id - = -gm --> -c -; - -484 -ut8_t - - godu_id - = -gm --> -mesge_da -[ -offt -]; - -487 - gd -:: -rg - -vsi -(5, '\0'); - -488 -tf_P -(& -vsi -[0], vsi. -cy -(+ 1, -PSTR -("%02d.%02d"), -gm --> -mesge_da -[ -offt - + 1],elegram->message_data[offset + 2]); - -491 -ut8_t - - gbnd -; - -492 i( - ggm --> - gmesge_ngth - >= 10) { - -493 -bnd - = -EMSdevi -:: -decode_bnd -( -gm --> -mesge_da -[9]); - -495 - gbnd - = -EMSdevi -:: -Bnd -:: -NO_BRAND -; - -499 () -add_devi -( -devi_id -, -odu_id -, -vsi -, -bnd -); - -506 -bo - - gEMSESP -:: -oss_gm -( -d -:: -shed_r - -gm -) { - -508 i( -gm --> -ty_id - = -ad_id_ -) { - -509 -LOG_NOTICE -( -ty_gm -( -gm -). -c_r -()); - -510 -publish_ڣ -( -gm -); - -511 - gad_id_ - = -WATCH_ID_NONE -; - -512 } i( -wch -(= -WATCH_ON -) { - -513 i(( -wch_id_ - = -WATCH_ID_NONE -|| ( -gm --> -ty_id - == watch_id_) - -514 || (( -wch_id_ - < 0x80&& (( -gm --> -c - =wch_id_|| (gm-> -de - == watch_id_)))) { - -515 -LOG_NOTICE -( -ty_gm -( -gm -). -c_r -()); - -520 i(( - ggm --> - gde - !0x00&& ( -gm --> -de - ! -rxrvi_ -. -ems_bus_id -())) { - -521  -l -; - -525 i( - ggm --> - gty_id - = -EMSdevi -:: -EMS_TYPE_VERSION -) { - -526 -oss_vsi -( -gm -); - -527  - gue -; - -528 } i( - ggm --> - gty_id - = -EMSdevi -:: -EMS_TYPE_UBADevis -) { - -529 -oss_UBADevis -( -gm -); - -530  - gue -; - -537 -bo - - gfound - = -l -; - -538 cڡut& - gemsdevi - : -emsdevis -) { - -539 i( -emsdevi -) { - -540 i( -emsdevi --> -is_devi_id -( -gm --> -c -)) { - -541 -found - = -emsdevi --> -hd_gm -( -gm -); - -543 i( - gfound -) { - -544 i(( - gmq_ -. -g_publish_chge -( -emsdevi --> -devi_ty -()&& - gemsdevi --> -upded_vues -()|| - ggm --> - gty_id - = -publish_id_ -) { - -545 i( -gm --> -ty_id - = -publish_id_ -) { - -546 -publish_id_ - = 0; - -548 - gemsdevi --> -publish_vues -(); - -556 i(! - gfound -) { - -557 -LOG_DEBUG -( -F -("N؋gmy hd˸found f ID 0x%02X (0x%02X)"), -gm --> -ty_id -,egm-> -c -); - -560  - gfound -; - -565  - gEMSESP -:: -devi_fo_web -(cڡ -ut8_t - -unique_id -, -JsObje - & -ro -) { - -566 cڡut& - gemsdevi - : -emsdevis -) { - -567 i( -emsdevi -) { - -568 i( -emsdevi --> -unique_id -() == unique_id) { - -569 -ro -["deviName"] = -emsdevi --> -to_rg_sht -(); - -570 -JsAay - - gda - = -ro -. -NeedAay -("deviceData"); - -571 - gemsdevi --> -devi_fo_web -( -da -); - -579 -bo - - gEMSESP -:: -devi_exis -(cڡ -ut8_t - -devi_id -) { - -580 cڡut& -emsdevi - : -emsdevis -) { - -581 i( -emsdevi -) { - -582 i( -emsdevi --> -is_devi_id -( -devi_id -)) { - -583  -ue -; - -588  - gl -; - -592  - gEMSESP -:: -add_cڋxt_mus -() { - -593 cڡut& -emsdevi - : -emsdevis -) { - -594 i( -emsdevi -) { - -595 -emsdevi --> -add_cڋxt_mu -(); - -601  - gEMSESP -:: -show_devis -( -uuid -:: -cse -:: -Shl - & -shl -) { - -602 i( -emsdevis -. -emy -()) { - -603 -shl -. -tn -( -F -("No EMS devices detected. Try using 'scan devices' fromhems menu.")); - -604 - gshl -. -n -(); - -608 - gshl -. -tn -( -F -("These EMS devicesre currentlyctive:")); - -609 - gshl -. -n -(); - -613 cڡut& - gdevi_ass - : -EMSFay -:: -devi_hdrs -()) { - -615 cڡut& -emsdevi - : -emsdevis -) { - -616 i(( -emsdevi -&& (emsdevi-> -devi_ty -(= -devi_ass -. -f -)) { - -617 -shl -. -tf -( -F -("%s: %s"), -emsdevi --> -devi_ty_me -(). -c_r -(),msdevi-> -to_rg -().c_str()); - -618 i(( - gemsdevi --> -devi_ty -(= -EMSdevi -:: -DeviTy -:: -THERMOSTAT -&& ( -emsdevi --> -g_devi_id -(= -au_ma_thmo -())) { - -619 -shl -. -tf -( -F -(" ** master device **")); - -621 - gshl -. -n -(); - -622 - gemsdevi --> -show_gm_hdrs -( -shl -); - -624 - gshl -. -n -(); - -632 -bo - - gEMSESP -:: -add_devi -(cڡ -ut8_t - -devi_id -, cڡ ut8_ -odu_id -, -d -:: -rg - & -vsi -, cڡ ut8_ -bnd -) { - -634 i( - gdevi_id - = -rxrvi_ -. -ems_bus_id -()) { - -635  -l -; - -640 cڡut& - gemsdevi - : -emsdevis -) { - -641 i( -emsdevi -) { - -642 i( -emsdevi --> -is_devi_id -( -devi_id -)) { - -643 -LOG_DEBUG -( -F -("Updg daڇ̗dyxig devi ID 0x%02X"), -devi_id -); - -644 - gemsdevi --> -odu_id -(product_id); - -645 - gemsdevi --> -vsi -(version); - -647 i( - gemsdevi --> -bnd -(= -EMSdevi -:: -Bnd -:: -NO_BRAND -) { - -648 -emsdevi --> -bnd -(brand); - -651 cڡut& - gdevi - : -devi_libry_ -) { - -652 i( -devi -. -odu_id - ==roduct_id) { - -653 -emsdevi --> -me -( -uuid -:: -ad_ash_rg -( -devi -.name)); - -654 - gemsdevi --> -ags -( -devi -.flags); - -658  - gue -; - -665 -Devi_cd - * - gdevi_p - = -nuαr -; - -666 aut& - gdevi - : -devi_libry_ -) { - -667 i( -devi -. -odu_id - ==roduct_id) { - -670 i( -devi -. -devi_ty - = -DeviTy -:: -BOILER -) { - -671 i( -devi_id - = -EMSdevi -:: -EMS_DEVICE_ID_BOILER -) { - -672 -devi_p - = & -devi -; - -677 - gdevi_p - = & -devi -; - -684 i( - gdevi_p - = -nuαr -) { - -685 -LOG_NOTICE -( -F -("Uecognized EMS devi wh devi ID 0x%02X whrodu ID %d. Pa܈ GHub."), -devi_id -, -odu_id -); - -686  - gl -; - -688 - gd -:: -rg - -me - = -uuid -:: -ad_ash_rg -( -devi_p -->name); - -689 - gemsdevis -. -push_back -( -EMSFay -:: -add -( -devi_p --> -devi_ty -, -devi_id -, devi_p-> -odu_id -, -vsi -, -me -, devi_p-> -ags -, -bnd -)); - -690 - gemsdevis -. -back -()-> -unique_id -(++ -unique_id_cou_ -); - -691 -LOG_DEBUG -( -F -("Addgew devi wh devi ID 0x%02X whrodu ID %dnd vsi %s"), -devi_id -, -odu_id -, -vsi -. -c_r -()); - -692 -tch_devi_vues -( -devi_id -); - -695  - gue -; - -699  - gEMSESP -:: -nd_ad_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -) { - -700 - gtxrvi_ -. -ad_que -( -ty_id -, -de -, 0); - -704  - gEMSESP -:: -nd_wre_que -(cڡ -ut16_t - -ty_id -, - -705 cڡ -ut8_t - -de -, - -706 cڡ -ut8_t - -offt -, - -707 -ut8_t - * -mesge_da -, - -708 cڡ -ut8_t - -mesge_ngth -, - -709 cڡ -ut16_t - -vide_tyid -) { - -710 - gtxrvi_ -. -add -( -Tegm -:: -Oti -:: -TX_WRITE -, -de -, -ty_id -, -offt -, -mesge_da -, -mesge_ngth -); - -712 - gtxrvi_ -. -t_po_nd_quy -( -vide_tyid -); - -715  - gEMSESP -:: -nd_wre_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -, cڡ ut8_ -offt -, cڡ ut8_ -vue -) { - -716 -nd_wre_que -( -ty_id -, -de -, -offt -, -vue -, 0); - -720  - gEMSESP -:: -nd_wre_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -, cڡ ut8_ -offt -, cڡ ut8_ -vue -, cڡ ut16_ -vide_tyid -) { - -721 -ut8_t - - gmesge_da -[1]; - -722 - gmesge_da -[0] = -vue -; - -723 - gEMSESP -:: -nd_wre_que -( -ty_id -, -de -, -offt -, -mesge_da -, 1, -vide_tyid -); - -729  - gEMSESP -:: -comg_gm -( -ut8_t - * -da -, cڡ ut8_ -ngth -) { - -730 #ifde -EMSESP_DEBUG - - -731  -ut32_t - - grx_time_ - = 0; - -734 -ut8_t - - gf_vue - = -da -[0]; - -735 i((( - gf_vue - & 0x7F= -txrvi_ -. -ems_bus_id -()&& ( -ngth - > 1)) { - -737 -Room -:: -check -(( -da -[1] ^ 0x80 ^ -rxrvi_ -. -ems_mask -()), data); - -738 #ifde -EMSESP_DEBUG - - -740 -LOG_TRACE -( -F -("[DEBUG] Echa %d ms: %s"), :: -mlis -(- -rx_time_ -, -Hrs -:: -da_to_hex -( -da -, -ngth -). -c_r -()); - -746 -ut8_t - - gtx_e - = -EMSbus -:: -tx_e -(); - -747 i( - gtx_e - ! -Tegm -:: -Oti -:: -NONE -) { - -748 -bo - -tx_sucssful - = -l -; - -749 - gEMSbus -:: -tx_e -( -Tegm -:: -Oti -:: -NONE -); - -752 i(( - gtx_e - = -Tegm -:: -Oti -:: -TX_WRITE -&& ( -ngth - == 1)) { - -753 i( -f_vue - = -TxSvi -:: -TX_WRITE_SUCCESS -) { - -754 -LOG_DEBUG -( -F -("Last Tx write successful")); - -755 - gtxrvi_ -. -emt_gm_wre_cou -(); - -756 - gtxrvi_ -. -nd_pl -(); - -757 - gpublish_id_ - = -txrvi_ -. -po_nd_quy -(); - -758 - gtxrvi_ -. -t_y_cou -(); - -759 - gtx_sucssful - = -ue -; - -760 } i( - gf_vue - = -TxSvi -:: -TX_WRITE_FAIL -) { - -761 -LOG_ERROR -( -F -("Last Tx writeejected by host")); - -762 - gtxrvi_ -. -nd_pl -(); - -763 - gtxrvi_ -. -t_y_cou -(); - -765 } i( - gtx_e - = -Tegm -:: -Oti -:: -TX_READ -) { - -767 -ut8_t - -c - = -da -[0]; - -768 -ut8_t - - gde - = -da -[1]; - -769 i( - gtxrvi_ -. -is_ϡ_tx -( -c -, -de -)) { - -770 -LOG_DEBUG -( -F -("Last Txead successful")); - -771 - gtxrvi_ -. -emt_gm_ad_cou -(); - -772 - gtxrvi_ -. -nd_pl -(); - -773 - gtxrvi_ -. -t_y_cou -(); - -774 - gtx_sucssful - = -ue -; - -779 i(! - gtx_sucssful -) { - -780 - gtxrvi_ -. -y_tx -( -tx_e -, -da -, -ngth -); - -786 i( - gngth - == 1) { - -787 -EMSbus -:: -ϡ_bus_aivy -( -uuid -:: -g_uime -()); - -789 #ifde -EMSESP_DEBUG - - -790  - gs -[4]; - -791 i( - gf_vue - & 0x80) { - -792 -LOG_TRACE -( -F -("[DEBUG]exP%a %d ms"), -Hrs -:: -hext -( -s -, -f_vue -), :: -mlis -(- -rx_time_ -); - -794 - grx_time_ - = :: -mlis -(); - -796 -LOG_TRACE -( -F -("[DEBUG] Pack %a %d ms"), -Hrs -:: -hext -( -s -, -f_vue -), :: -mlis -(- -rx_time_ -); - -801 i(( - gf_vue - ^ 0x80 ^ - grxrvi_ -. -ems_mask -()= -txrvi_ -. -ems_bus_id -()) { - -802 -txrvi_ -. -nd -(); - -805 - gRoom -:: -nd -( -f_vue - ^ 0x80 ^ -rxrvi_ -. -ems_mask -()); - -808 #ifde -EMSESP_DEBUG - - -809 -LOG_TRACE -( -F -("[DEBUG] Rly %d ms: %s"), :: -mlis -(- -rx_time_ -, -Hrs -:: -da_to_hex -( -da -, -ngth -). -c_r -()); - -811 - gRoom -:: -check -(( -da -[1] ^ 0x80 ^ -rxrvi_ -. -ems_mask -()), data); - -813 - grxrvi_ -. -add -( -da -, -ngth -); - -818  - gEMSESP -:: -nd_w_gm -(cڡ * -da -) { - -819 -txrvi_ -. -nd_w -( -da -); - -824  - gEMSESP -:: -t -() { - -826 i(! -syem_ -. -check_upgde -()) { - -827 #ifde -ESP32 - - -828 -SPIFFS -. -beg -( -ue -); - -829 #i -defed -( -ESP8266 -) - -830 - gLeFS -. -beg -(); - -833 - ge8266R -. -beg -(); - -834 - gemStgsSvi -. -beg -(); - -838 - gdevi_libry_ -. -rve -(80); - -839 - gdevi_libry_ - = { - -840  - ~"devi_libry.h -" - -843 - gcse_ -. -t -(); - -844 - gmq_ -. -t -(); - -845 - gsyem_ -. -t -(); - -846 - gshow_ -. -t -(); - -847 - gnss_ -. -t -(); - -848 - gwebSv -. -beg -(); - -850 - gemsdevis -. -rve -(5); - -852 -LOG_INFO -("EMS Deviibryded wh %decds", -devi_libry_ -. -size -()); - -854 #i -defed -( -EMSESP_STANDALONE -) - -855 - gmq_ -. -_c -(); - -860  - gEMSESP -:: -lo -() { - -861 -e8266R -. -lo -(); - -864 i( - gsyem_ -. -ud_us -()) { - -868 - gsyem_ -. -lo -(); - -869 - gshow_ -. -lo -(); - -870 - gnss_ -. -lo -(); - -871 - gmq_ -. -lo -(); - -872 - gcse_ -. -lo -(); - -873 - grxrvi_ -. -lo -(); - -876 i(( - guuid -:: -g_uime -(- -ϡ_tch_ - > -EMS_FETCH_FREQUENCY -)) { - -877 -ϡ_tch_ - = -uuid -:: -g_uime -(); - -878 -tch_devi_vues -(); - -881 -day -(1); - - @src/emsesp.h - -19 #ide -EMSESP_EMSESP_H - - -20  - #EMSESP_EMSESP_H - - - ) - -22  - ~ - -24  - ~ - -25  - ~ - -26  - ~ - -28  - ~ - -29  - ~ - -30  - ~ - -32 #ide -EMSESP_STANDALONE - - -33  - ~ - -36  - ~ - -37  - ~"EMSESPStusSvi.h -" - -38  - ~"EMSESPDevisSvi.h -" - -39  - ~"EMSESPStgsSvi.h -" - -41  - ~"emsdevi.h -" - -42  - ~"emsy.h -" - -43  - ~"gm.h -" - -44  - ~"mq.h -" - -45  - ~"syem.h -" - -46  - ~"nss.h -" - -47  - ~"cse.h -" - -48  - ~"show.h -" - -49  - ~"roomcڌ.h -" - -51  - #WATCH_ID_NONE - 0 - -52 - - ) - -53 -mea - - gem - { - -55 -ass - - gShow -; - -57 as - cEMSESP - { - -58 - gpublic -: - -59  -t -(); - -60  -lo -(); - -62  -publish_devi_vues -( -ut8_t - -devi_ty -); - -63  -publish_h_vues -(); - -64  -publish_ns_vues -(cڡ -bo - -f - = -l -); - -66 #ifde -EMSESP_STANDALONE - - -67  -run_ -( -uuid -:: -cse -:: -Shl - & -shl -, cڡ -d -:: -rg - & -commd -); - -68  -dummy_mq_commds -(cڡ * -mesge -); - -69  -rx_gm -(cڡ -d -:: -ve -< -ut8_t -> & -da -); - -70  -ut_gm -(cڡ -d -:: -ve -< -ut8_t -> & -rx_da -); - -73  -bo - -oss_gm -( -d -:: -shed_r - -gm -); - -74  - gd -:: -rg - -ty_gm -( -d -:: -shed_r - -gm -); - -76  -nd_ad_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -); - -77  -nd_wre_que -(cڡ -ut16_t - -ty_id -, - -78 cڡ -ut8_t - -de -, - -79 cڡ -ut8_t - -offt -, - -80 -ut8_t - * -mesge_da -, - -81 cڡ -ut8_t - -mesge_ngth -, - -82 cڡ -ut16_t - -vide_tyid -); - -83  -nd_wre_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -, cڡ ut8_ -offt -, cڡ ut8_ -vue -); - -84  -nd_wre_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -, cڡ ut8_ -offt -, cڡ ut8_ -vue -, cڡ ut16_ -vide_tyid -); - -86  -nd_w_gm -(cڡ * -da -); - -87  -bo - -devi_exis -(cڡ -ut8_t - -devi_id -); - -89  -devi_fo_web -(cڡ -ut8_t - -unique_id -, -JsObje - & -ro -); - -91  -ut8_t - -cou_devis -(cڡ ut8_ -devi_ty -); - -93  -ut8_t - -au_ma_thmo -(); - -94  -au_ma_thmo -(cڡ -ut8_t - -devi_id -); - -95  -ut8_t - -check_ma_devi -(cڡ ut8_ -devi_id -, cڡ -ut16_t - -ty_id -, cڡ -bo - -ad -); - -97  -show_devi_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -98  -show_ns_vues -( -uuid -:: -cse -:: -Shl - & -shl -); - -100  -show_devis -( -uuid -:: -cse -:: -Shl - & -shl -); - -101  -show_ems -( -uuid -:: -cse -:: -Shl - & -shl -); - -103  -add_cڋxt_mus -(); - -105  -_tx -(); - -107  -comg_gm -( -ut8_t - * -da -, cڡ ut8_ -ngth -); - -109 cڡ - gd -:: -ve -< -Sss -:: -Devi -> -ns_devis -() { - -110  -nss_ -. -devis -(); - -113 - gWch - : -ut8_t - { -WATCH_OFF -, - gWATCH_ON -, - gWATCH_RAW - }; - -114  -wch_id -( -ut16_t - -id -); - -115  -ut16_t - -wch_id -() { - -116  - gwch_id_ -; - -119  -wch -( -ut8_t - watch) { - -120 - gwch_ - = -wch -; - -121 i( - gwch - = -WATCH_OFF -) { - -122 -wch_id_ - = 0; - -125  -ut8_t - -wch -() { - -126  - gwch_ -; - -128  -t_ad_id -( -ut16_t - -id -) { - -129 - gad_id_ - = -id -; - -132 - gBus_us - : -ut8_t - { -BUS_STATUS_CONNECTED - = 0, - gBUS_STATUS_TX_ERRORS -, - gBUS_STATUS_OFFLINE - }; - -133  -ut8_t - -bus_us -(); - -135  -bo - -p_w_aive -() { - -136  - gp_w_aive_ -; - -139  -p_w_aive -(cڡ -bo -ap_water_active) { - -140 - gp_w_aive_ - = -p_w_aive -; - -143  -tch_devi_vues -(cڡ -ut8_t - -devi_id - = 0); - -145  -bo - -add_devi -(cڡ -ut8_t - -devi_id -, cڡ ut8_ -odu_id -, -d -:: -rg - & -vsi -, cڡ ut8_ -bnd -); - -146  -sn_devis -(); - -147  -r_l_devis -(); - -149  - gd -:: -ve -< -d -:: -unique_r -< -EMSdevi ->> -emsdevis -; - -152  -Mq - - gmq_ -; - -153  -Syem - - gsyem_ -; - -154  -Sss - - gnss_ -; - -155  -Cse - - gcse_ -; - -156  -Show - - gshow_ -; - -157  -RxSvi - - grxrvi_ -; - -158  -TxSvi - - gtxrvi_ -; - -161  -ESP8266R - - ge8266R -; - -162  -EMSESPStgsSvi - - gemStgsSvi -; - -163  -EMSESPStusSvi - - gemStusSvi -; - -164  -EMSESPDevisSvi - - gemDevisSvi -; - -166  - guuid -:: -log -:: -Logg - -logg -() { - -167  -logg_ -; - -170 - give -: - -171 -EMSESP -( -de -; - -173  - guuid -:: -log -:: -Logg - -logg_ -; - -175  - gd -:: -rg - -devi_torg -(cڡ -ut8_t - -devi_id -); - -177  -oss_UBADevis -( -d -:: -shed_r - -gm -); - -178  -oss_vsi -( -d -:: -shed_r - -gm -); - -179  -publish_ڣ -( -d -:: -shed_r - -gm -); - -181  -cڡex - -ut32_t - - gEMS_FETCH_FREQUENCY - = 60000; - -182  -ut32_t - - gϡ_tch_ -; - -184  - sDevi_cd - { - -185 -ut8_t - - godu_id -; - -186 - gEMSdevi -:: -DeviTy - -devi_ty -; - -187 cڡ -__FshSgHr - * - gme -; - -188 -ut8_t - - gags -; - -191  - gd -:: -ve -< -Devi_cd -> -devi_libry_ -; - -193  -ut8_t - - gau_ma_thmo_ -; - -194  -ut16_t - - gwch_id_ -; - -195  -ut8_t - - gwch_ -; - -196  -ut16_t - - gad_id_ -; - -197  -ut16_t - - gpublish_id_ -; - -198  -bo - - gp_w_aive_ -; - -200  -ut8_t - - gunique_id_cou_ -; - - @src/emsfactory.h - -19 #ide -EMSESP_EMSFACTORY_H_ - - -20  - #EMSESP_EMSFACTORY_H_ - - - ) - -22  - ~ - -23  - ~ - -25  - ~"emsdevi.h -" - -30  - #REGISTER_FACTORY -( -divedCss -, -devi_ty -) \ - -31 -mea - { \ - -32 aut -giry_ -## -divedCss - = -CeEMSFay -( -devi_ty -); \ - -33 } - - ) - -35 -mea - - gem - { - -37 -ass - - gEMSdevi -; - -39 as - cEMSFay - { - -40 - gpublic -: - -41 -vtu - ~ -EMSFay -() = ; - -45 aut -giFay -(cڡ -ut8_t - -devi_ty -, -EMSFay - * -y -) -> { - -46 aut& - gg - = -EMSFay -:: -gRegi -(); - -47 - gg -[ -devi_ty -] = -y -; - -50 -usg - - gFayM - = -d -:: -m -< -ut8_t -, - gEMSFay - *>; - -53 aut -devi_hdrs -(-> - gFayM - { - -54  - gEMSFay -:: -gRegi -(); - -58 aut -add -(cڡ -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, -d -:: -rg - & -vsi -, std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -59 -> - gd -:: -unique_r -< -EMSdevi -> { - -60  -d -:: -unique_r -< -EMSdevi ->( -EMSFay -:: -makeRaw -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -)); - -63 -vtu -ut -cڡru -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, -d -:: -rg - & -vsi -, std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) const - -64 -> - gEMSdevi - * = 0; - -66 - give -: - -68 aut -gRegi -(-> -FayM - & { - -69  -FayM - -assRegi -{}; - -70  - gassRegi -; - -75 aut -makeRaw -(cڡ -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, -d -:: -rg - & -vsi -, std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) - -76 -> - gEMSdevi - * { - -77 aut - g - = -EMSFay -:: -gRegi -(). -fd -( -devi_ty -); - -78 i( - g - ! -EMSFay -:: -gRegi -(). -d -()) { - -79  - --> -cd --> -cڡru -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -); - -81  - gnuαr -; - -85 - gme - < -tyme - - gDivedCss -> - -86 as - cCeEMSFay - : -EMSFay - { - -87 -public -: - -89 -CeEMSFay -(cڡ -ut8_t - -devi_ty -) { - -90 -EMSFay -:: -giFay -( -devi_ty -, -this -); - -93 aut -cڡru -( -ut8_t - -devi_ty -, ut8_ -devi_id -, ut8_ -odu_id -, -d -:: -rg - & -vsi -, std::rg & -me -, ut8_ -ags -, ut8_ -bnd -) const - -94 -> - gEMSdevi - * { - -95  -w - -DivedCss -( -devi_ty -, -devi_id -, -odu_id -, -vsi -, -me -, -ags -, -bnd -); - - @src/helpers.cpp - -19  - ~"hrs.h -" - -21 -mea - - gem - { - -24 * - gHrs -:: -hext -(* -su -, cڡ -ut8_t - -vue -) { - -25 * - gp - = -su -; - -26 -ut8_t - - gnib1 - = ( -vue - >> 4) & 0x0F; - -27 -ut8_t - - gnib2 - = ( -vue - >> 0) & 0x0F; - -28 * - gp -++ = -nib1 - < 0xA ? '0' +ib1 : 'A' +ib1 - 0xA; - -29 * - gp -++ = -nib2 - < 0xA ? '0' +ib2 : 'A' +ib2 - 0xA; - -30 * - gp - = '\0'; - -31  - gsu -; - -34 #ifde -EMSESP_STANDALONE - - -36 * - gHrs -:: -uor -(* -r -, -ut32_t - -vue -, cڡ -ut8_t - -ba -) { - -37  - gt - = 0, - gs - = 0; - -38  - gtmp - = -vue -; - -39  - gcou - = 0; - -41 i( - gNULL - = -r -) { - -42  -NULL -; - -45 i( - gtmp - == 0) { - -46 -cou -++; - -49  - gtmp - > 0) { - -50 - gtmp - = -tmp - / -ba -; - -51 - gcou -++; - -54 - gr - + -cou -; - -56 * - gr - = '\0'; - -59 - gs - = -vue - - -ba - * ( -t - = value / base); - -60 i( - gs - < 10) { - -61 *-- - gr - = '0' + -s -; - -62 } i(( - gs - >10&& ( -s - < 16)) { - -63 *-- -r - = 'A' - 10 + -s -; - -65 } ( - gvue - = -t -) != 0); - -67  ( - gr -); - -75 * - gHrs -:: - -(* -su -, -t16_t - -vue -, cڡ -ut8_t - -ba -) { - -77 i( - gba - < 2 || base > 36) { - -78 * - gsu - = '\0'; - -79  - gsu -; - -82 * - gr - = -su -, * - gr1 - =esu, - gtmp_ch -; - -83 -t16_t - - gtmp_vue -; - -86 - gtmp_vue - = -vue -; - -87 - gvue - / -ba -; - -88 * - gr -++ = "zyxwvutqpmlkjihgdcba9876543210123456789abcdefghijklmnqruvwxyz"[35 + ( -tmp_vue - - -vue - * -ba -)]; - -89 }  - gvue -); - -92 i( - gtmp_vue - < 0) { - -93 * - gr -++ = '-'; - -96 * - gr --- = '\0'; - -97  - gr1 - < - gr -) { - -98 - gtmp_ch - = * -r -; - -99 * - gr --- = * -r1 -; - -100 * - gr1 -++ = -tmp_ch -; - -103  - gsu -; - -107 * - gHrs -:: -sml -(* -su -, cڡ -ut8_t - -vue -) { - -108 - gsu -[0] = (( -vue - / 10) == 0) ? '0' : (value / 10) + '0'; - -109 - gsu -[1] = ( -vue - % 10) + '0'; - -110 - gsu -[2] = '\0'; - -111  - gsu -; - -115 * - gHrs -:: -sml -(* -su -, cڡ -ut16_t - -vue -) { - -116 - gsu -[0] = (( -vue - / 100) == 0) ? '0' : (value / 100) + '0'; - -117 - gsu -[1] = ((( -vue - % 100) / 10) == 0) ? '0' : ((value % 100) / 10) + '0'; - -118 - gsu -[2] = ( -vue - % 10) + '0'; - -119 - gsu -[3] = '\0'; - -120  - gsu -; - -125 * - gHrs -:: -nd_vue -(* -su -, -ut8_t - -vue -, ut8_ -fm -) { - -127 i( - gfm - = -EMS_VALUE_BOOL -) { - -128 i( -vue - = -EMS_VALUE_BOOL_OFF -) { - -129 -y -( -su -, "off", 5); - -130 } i( - gvue - = -EMS_VALUE_BOOL_NOTSET -) { - -131  -nuαr -; - -133 -y -( -su -, "on", 5); - -135  - gsu -; - -138 i(! -hasVue -( -vue -)) { - -139  - gnuαr -; - -142 i(! - gfm -) { - -143 - -( -su -, -vue -, 10); - -144  - gsu -; - -147  - gs2 -[5]; - -150 i( - gfm - == 2) { - -151 -y -( -su -, - -( -s2 -, -vue - >> 1, 10), 5); - -152 -t -( -su -, ".", 5); - -153 -t -( -su -, (( -vue - & 0x01) ? "5" : "0"), 5); - -154  - gsu -; - -157 -y -( -su -, - -( -s2 -, -vue - / -fm -, 10), 5); - -158 -t -( -su -, ".", 5); - -159 -t -( -su -, - -( -s2 -, -vue - % -fm -, 10), 5); - -161  - gsu -; - -166 * - gHrs -:: -nd_vue -(* -su -, cڡ  -vue -, cڡ -ut8_t - -fm -) { - -167  - gp -[] = {0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000}; - -169 * - gt - = -su -; - -170  - gwhe - = () -vue -; - -171 - gHrs -:: - -( -su -, -whe -, 10); - -172 * - gsu - != '\0') { - -173 -su -++; - -175 * - gsu -++ = '.'; - -176  - gdecim - = -abs -(()(( -vue - - -whe -* -p -[ -fm -])); - -177 - -( -su -, -decim -, 10); - -179  - gt -; - -184 * - gHrs -:: -nd_vue -(* -su -, cڡ -t16_t - -vue -, cڡ -ut8_t - -fm -) { - -185 i(! -hasVue -( -vue -)) { - -186  - gnuαr -; - -190 i(! - gfm -) { - -191 - -( -su -, -vue -, 10); - -192  - gsu -; - -195 -t16_t - - gw_vue - = -vue -; - -196 - gsu -[0] = '\0'; - -199 i( - gw_vue - < 0) { - -200 -y -( -su -, "-", 10); - -201 - gw_vue - *= -1; - -203 -y -( -su -, "", 10); - -207  - gs2 -[10] = {0}; - -208 i( - gfm - == 2) { - -210 -t -( -su -, - -( -s2 -, -w_vue - / 2, 10), 10); - -211 -t -( -su -, ".", 10); - -212 -t -( -su -, (( -w_vue - & 0x01) ? "5" : "0"), 10); - -214 -t -( -su -, - -( -s2 -, -w_vue - / -fm -, 10), 10); - -215 -t -( -su -, ".", 10); - -216 -t -( -su -, - -( -s2 -, -w_vue - % -fm -, 10), 10); - -219  - gsu -; - -223 * - gHrs -:: -nd_vue -(* -su -, cڡ -ut16_t - -vue -, cڡ -ut8_t - -fm -) { - -224 i(! -hasVue -( -vue -)) { - -225  - gnuαr -; - -227  ( -nd_vue -( -su -, ( -t16_t -) -vue -, -fm -)); - -231 * - gHrs -:: -nd_vue -(* -su -, cڡ -t8_t - -vue -, cڡ -ut8_t - -fm -) { - -232 i(! -hasVue -( -vue -)) { - -233  - gnuαr -; - -235  ( -nd_vue -( -su -, ( -t16_t -) -vue -, -fm -)); - -239 * - gHrs -:: -nd_vue -(* -su -, cڡ -ut32_t - -vue -, cڡ -ut8_t - -fm -) { - -240 i(! -hasVue -( -vue -)) { - -241  - gnuαr -; - -244  - gs -[20]; - -245 - gsu -[0] = '\0'; - -247 #ide -EMSESP_STANDALONE - - -248 i(! - gfm -) { - -249 -t -( -su -, - -( -vue -, -s -, 10), 20); - -251 -t -( -su -, - -( -vue - / -fm -, -s -, 10), 20); - -252 -t -( -su -, ".", 20); - -253 -t -( -su -, - -( -vue - % -fm -, -s -, 10), 20); - -257 i(! - gfm -) { - -258 -t -( -su -, -uor -( -s -, -vue -, 10), 20); - -260 -t -( -su -, -uor -( -s -, -vue - / -fm -, 10), 20); - -261 -t -( -su -, ".", 20); - -262 -t -( -su -, -uor -( -s -, -vue - % -fm -, 10), 20); - -266  - gsu -; - -270 - gd -:: -rg - -Hrs -:: -da_to_hex -(cڡ -ut8_t - * -da -, cڡ ut8_ -ngth -) { - -271 i( - gngth - == 0) { - -272  -uuid -:: -ad_ash_rg -( -F -("")); - -275 - gd -:: -rg - -r -(160, '\0'); - -276  - gbufr -[4]; - -277 * - gp - = & -r -[0]; - -278  -ut8_t - - gi - = 0; i < - gngth -; i++) { - -279 - gHrs -:: -hext -( -bufr -, -da -[ -i -]); - -280 * - gp -++ = -bufr -[0]; - -281 * - gp -++ = -bufr -[1]; - -282 * - gp -++ = ' '; - -284 *-- - gp - = '\0'; - -286  - gr -; - -291 -ut32_t - - gHrs -:: -hextot -(cڡ * -hex -) { - -292 -ut32_t - -v - = 0; - -293 * - ghex -) { - -295  - gby - = * -hex -++; - -297 i( - gby - >'0' && -by - <= '9') - -298 -by - = byte - '0'; - -299 i( - gby - >'a' && -by - <= 'f') - -300 -by - = byte - 'a' + 10; - -301 i( - gby - >'A' && -by - <= 'F') - -302 -by - = byte - 'A' + 10; - -306 - gv - = ( -v - << 4| ( -by - & 0xF); - -308  - gv -; - -312 -ut16_t - - gHrs -:: -ot -(cڡ * -vue -) { - -313  -x - = 0; - -314 * - gvue - != '\0') { - -315 -x - = (x * 10+ (* -vue - - '0'); - -316 ++ - gvue -; - -318  - gx -; - -323  - gHrs -:: -round2 -( -vue -) { - -324  ()( -vue - * 100 + 0.5) / 100.0; - -327 -bo - - gHrs -:: -check_abs -(cڡ -t32_t - -i -) { - -328  (( -i - < 0 ? -i : i) != 0xFFFFFF); - -332 -bo - - gHrs -:: -hasVue -(cڡ -ut8_t - & -v -, cڡ ut8_ -isBo -) { - -333 i( - gisBo - = -EMS_VALUE_BOOL -) { - -334  ( -v - ! -EMS_VALUE_BOOL_NOTSET -); - -336  ( - gv - ! -EMS_VALUE_UINT_NOTSET -); - -339 -bo - - gHrs -:: -hasVue -(cڡ -t8_t - & -v -) { - -340  ( -v - ! -EMS_VALUE_INT_NOTSET -); - -344 -bo - - gHrs -:: -hasVue -(cڡ -t16_t - & -v -) { - -345  ( -abs -( -v -< -EMS_VALUE_USHORT_NOTSET -); - -348 -bo - - gHrs -:: -hasVue -(cڡ -ut16_t - & -v -) { - -349  ( -v - < -EMS_VALUE_USHORT_NOTSET -); - -352 -bo - - gHrs -:: -hasVue -(cڡ -ut32_t - & -v -) { - -353  ( -v - ! -EMS_VALUE_ULONG_NOTSET -); - -357 -bo - - gHrs -:: -vue2numb -(cڡ * -v -, & -vue -) { - -358 i(( - gv - = -nuαr -|| ( - -( -v -) == 0)) { - -359 -vue - = 0; - -360  - gl -; - -362 - gvue - = -oi -((*) -v -); - -363  - gue -; - -367 -bo - - gHrs -:: -vue2t -(cڡ * -v -, & -vue -) { - -368 i(( - gv - = -nuαr -|| ( - -( -v -) == 0)) { - -369 -vue - = 0; - -370  - gl -; - -372 - gvue - = -of -((*) -v -); - -373  - gue -; - -377 - gd -:: -rg - -Hrs -:: -toLow -( -d -::rg cڡ & -s -) { - -378 -d -:: -rg - -lc - = -s -; - -379 - gd -:: -sfm -( -lc -. -beg -(),c. -d -(),c.beg(), []( -c -{  -d -:: -tow -(c); }); - -380  - glc -; - -384 -bo - - gHrs -:: -vue2rg -(cڡ * -v -, -d -:: -rg - & -vue -) { - -385 i(( -v - = -nuαr -|| ( - -(v) == 0)) { - -386 -vue - = {}; - -387  - gl -; - -389 - gvue - = -toLow -( -v -); - -390  - gue -; - -395 -bo - - gHrs -:: -vue2bo -(cڡ * -v -, bo & -vue -) { - -396 i(( - gv - = -nuαr -|| ( - -( -v -) == 0)) { - -397  -l -; - -400 - gd -:: -rg - -bo_r - = -toLow -( -v -); - -402 i(( - gbo_r - =""|| ( -bo_r - ="1" - - (bool_str == "true")) { - -403 -vue - = -ue -; - -404  - gue -; - -407 i(( - gbo_r - ="off"|| ( -bo_r - ="0" - - (bool_str == "false")) { - -408 -vue - = -l -; - -409  - gue -; - -412  - gl -; - - @src/helpers.h - -19 #ide -EMSESP_HELPERS_H - - -20  - #EMSESP_HELPERS_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~"gm.h -" - -27 -mea - - gem - { - -29 as - cHrs - { - -30 - gpublic -: - -31 * -hext -(* -su -, cڡ -ut8_t - -vue -); - -32  - gd -:: -rg - -da_to_hex -(cڡ -ut8_t - * -da -, cڡ ut8_ -ngth -); - -34 * -nd_vue -(* -su -, cڡ  -vue -, cڡ -ut8_t - -fm -); - -35 * -nd_vue -(* -su -, cڡ -ut8_t - -vue -, cڡ ut8_ -fm -); - -36 * -nd_vue -(* -su -, cڡ -t8_t - -vue -, cڡ -ut8_t - -fm -); - -37 * -nd_vue -(* -su -, cڡ -ut16_t - -vue -, cڡ -ut8_t - -fm -); - -38 * -nd_vue -(* -su -, cڡ -ut32_t - -vue -, cڡ -ut8_t - -fm -); - -39 * -nd_vue -(* -su -, cڡ -t16_t - -vue -, cڡ -ut8_t - -fm -); - -41 * -sml -(* -su -, cڡ -ut8_t - -vue -); - -42 * -sml -(* -su -, cڡ -ut16_t - -vue -); - -43 * - -(* -su -, -t16_t - -vue -, cڡ -ut8_t - -ba - = 10); - -44  -ut32_t - -hextot -(cڡ * -hex -); - -45  -ut16_t - -ot -(cڡ * -vue -); - -46  -bo - -check_abs -(cڡ -t32_t - -i -); - -47  -round2 -( -vue -); - -49 #ifde -EMSESP_STANDALONE - - -50 * -uor -(* -r -, -ut32_t - -vue -, cڡ -ut8_t - -ba -); - -53  -bo - -hasVue -(cڡ -ut8_t - & -v -, cڡ ut8_ -isBo - = 0); - -54  -bo - -hasVue -(cڡ -t8_t - & -v -); - -55  -bo - -hasVue -(cڡ -t16_t - & -v -); - -56  -bo - -hasVue -(cڡ -ut16_t - & -v -); - -57  -bo - -hasVue -(cڡ -ut32_t - & -v -); - -59  - gd -:: -rg - -toLow -( -d -::rg cڡ & -s -); - -61  -bo - -vue2numb -(cڡ * -v -, & -vue -); - -62  -bo - -vue2t -(cڡ * -v -, & -vue -); - -63  -bo - -vue2bo -(cڡ * -v -, bo & -vue -); - -64  -bo - -vue2rg -(cڡ * -v -, -d -:: -rg - & -vue -); - - @src/locale_EN.h - -20 - $MAKE_PSTR_WORD -( -ex -) - -21 - $MAKE_PSTR_WORD -( -hp -) - -22 - $MAKE_PSTR_WORD -( -gs -) - -23 - $MAKE_PSTR_WORD -( -log -) - -24 - $MAKE_PSTR_WORD -( -logout -) - -25 - $MAKE_PSTR_WORD -( -abd -) - -26 - $MAKE_PSTR_WORD -( -dibd -) - -27 - $MAKE_PSTR_WORD -( -t -) - -28 - $MAKE_PSTR_WORD -( -show -) - -29 - $MAKE_PSTR_WORD -( - -) - -30 - $MAKE_PSTR_WORD -( -off -) - -31 - $MAKE_PSTR_WORD -( -su -) - -32 - $MAKE_PSTR_WORD -( -me -) - -33 - $MAKE_PSTR_WORD -(auto) - -34 - $MAKE_PSTR_WORD -( -sn -) - -35 - $MAKE_PSTR_WORD -( -sswd -) - -36 - $MAKE_PSTR_WORD -( -ad -) - -37 - $MAKE_PSTR_WORD -( -vsi -) - -38 - $MAKE_PSTR_WORD -( -vues -) - -39 - $MAKE_PSTR_WORD -( -syem -) - -40 - $MAKE_PSTR_WORD -( -tch -) - -41 - $MAKE_PSTR_WORD -( -t -) - -42 - $MAKE_PSTR_WORD -( -fm -) - -43 - $MAKE_PSTR_WORD -( -w -) - -44 - $MAKE_PSTR_WORD -( -wch -) - -45 - $MAKE_PSTR_WORD -( -nd -) - -46 - $MAKE_PSTR_WORD -( -gm -) - -47 - $MAKE_PSTR_WORD -( -bus_id -) - -48 - $MAKE_PSTR_WORD -( -tx_mode -) - -49 - $MAKE_PSTR_WORD -( -ems -) - -50 - $MAKE_PSTR_WORD -( -devis -) - -51 - $MAKE_PSTR_WORD -( -show -) - -52 - $MAKE_PSTR_WORD -( -mq -) - -53 - $MAKE_PSTR_WORD -( -em -) - -54 - $MAKE_PSTR_WORD -( -ced -) - -55 - $MAKE_PSTR_WORD -( -disced -) - -56 - $MAKE_PSTR_WORD -( -sswd -) - -57 - $MAKE_PSTR_WORD -( -home -) - -58 - $MAKE_PSTR_WORD -( -wifi -) - -59 - $MAKE_PSTR_WORD -( -c -) - -60 - $MAKE_PSTR_WORD -( -ssid -) - -61 - $MAKE_PSTR_WORD -( -hbt -) - -62 - $MAKE_PSTR_WORD -( -urs -) - -63 - $MAKE_PSTR_WORD -( -ma -) - -64 - $MAKE_PSTR_WORD -( - -) - -65 - $MAKE_PSTR_WORD -( -p -) - -68 - $MAKE_PSTR_WORD -( - -) - -71 - $MAKE_PSTR_WORD -( -bo -) - -72 - $MAKE_PSTR_WORD -( -thmo -) - -73 - $MAKE_PSTR_WORD -() - -74 - $MAKE_PSTR_WORD -( -sެ -) - -75 - $MAKE_PSTR_WORD -( -mixg -) - -76 - $MAKE_PSTR_WORD -( -geway -) - -77 - $MAKE_PSTR_WORD -( -cڌr -) - -78 - $MAKE_PSTR_WORD -( -c -) - -79 - $MAKE_PSTR_WORD -( -hump -) - -82 - $MAKE_PSTR_WORD -( -nss -) - -84 - `MAKE_PSTR -( -kwh -, "kWh") - -85 - `MAKE_PSTR -( -wh -, "Wh") - -86 - `MAKE_PSTR -( -hc_tiڮ -, "[heating circuit]") - -87 - `MAKE_PSTR -( -ma_thmo_fmt -, "Master Thermostat Device ID = %s") - -88 - `MAKE_PSTR -( -ho_fmt -, "Host = %s") - -89 - `MAKE_PSTR -( -home_fmt -, "WiFi Hostname = %s") - -90 - `MAKE_PSTR -( -mk_rv_fmt -, "Mark interval = %lus") - -91 - `MAKE_PSTR -( -wifi_ssid_fmt -, "WiFi SSID = %s") - -92 - `MAKE_PSTR -( -wifi_sswd_fmt -, "WiFi Password = %S") - -93 - `MAKE_PSTR -( -syem_hbt_fmt -, "MQTT Heartbeat is %s") - -94 - `MAKE_PSTR -( -cmd_tiڮ -, "[cmd]") - -95 - `MAKE_PSTR -( -dp_tiڮ -, "[deep]") - -96 - `MAKE_PSTR -( -tx_mode_fmt -, "Tx mode = %d") - -97 - `MAKE_PSTR -( -bus_id_fmt -, "Bus ID = %02X") - -98 - `MAKE_PSTR -( -wchid_tiڮ -, "[ID]") - -99 - `MAKE_PSTR -( -wch_fm_tiڮ -, "[off | on |aw]") - -100 - `MAKE_PSTR -( -vid_wch -, "Invalid watchype") - -101 - `MAKE_PSTR -( -da_mdy -, "<\"XX XX ...\">") - -102 - `MAKE_PSTR -( -r -, "%") - -103 - `MAKE_PSTR -( -deges -, "°C") - -104 - `MAKE_PSTR -( -aisks -, "********") - -105 - `MAKE_PSTR -( -n_mdy -, "") - -106 - `MAKE_PSTR -( -n_tiڮ -, "[n]") - -107 - `MAKE_PSTR -( -gpio_mdy -, "") - -108 - `MAKE_PSTR -( -da_tiڮ -, "[data]") - -109 - `MAKE_PSTR -( -tyid_mdy -, "") - -110 - `MAKE_PSTR -( -deviid_mdy -, "") - -111 - `MAKE_PSTR -( -vid_log_v -, "Invalidogevel") - -112 - `MAKE_PSTR -( -log_v_fmt -, "Logevel = %s") - -113 - `MAKE_PSTR -( -log_v_tiڮ -, "[level]") - -114 - `MAKE_PSTR -( -me_mdy -, "") - -115 - `MAKE_PSTR -( -me_tiڮ -, "[name]") - -116 - `MAKE_PSTR -( -w_sswd_om1 -, "Enterewassword: ") - -117 - `MAKE_PSTR -( -w_sswd_om2 -, "Retypeewassword: ") - -118 - `MAKE_PSTR -( -sswd_om -, "Password: ") - -119 - `MAKE_PSTR -( -unt -, "") - - @src/main.cpp - -19  - ~"em.h -" - -21  - $tup -() { - -22 -em -:: -EMSESP -:: - `t -(); - -23 - } -} - -25  - $lo -() { - -26 -em -:: -EMSESP -:: - `lo -(); - -27 - } -} - - @src/mqtt.cpp - -19  - ~"mq.h -" - -20  - ~"em.h -" - -21  - ~"vsi.h -" - -23 -mea - - gem - { - -25 -AsyncMqCl - * - gMq -:: -mqCl_ -; - -28 - gd -:: -rg - -Mq -:: -home_ -; - -29 -ut8_t - - gMq -:: -mq_qos_ -; - -30 -ut8_t - - gMq -:: -bus_id_ -; - -31 -ut32_t - - gMq -:: -publish_time_bo_ -; - -32 -ut32_t - - gMq -:: -publish_time_thmo_ -; - -33 -ut32_t - - gMq -:: -publish_time_sެ_ -; - -34 -ut32_t - - gMq -:: -publish_time_mixg_ -; - -35 -ut32_t - - gMq -:: -publish_time_h_ -; - -36 -ut32_t - - gMq -:: -publish_time_ns_ -; - -38 - gd -:: -ve -< -Mq -:: -MQTTSubFuni -> Mq:: -mq_subfunis_ -; - -39 - gd -:: -ve -< -Mq -:: -MQTTCmdFuni -> Mq:: -mq_cmdfunis_ -; - -41 -ut16_t - - gMq -:: -mq_publish_s_ - = 0; - -42 -size_t - - gMq -:: -maximum_mq_mesges_ - = -Mq -:: -MAX_MQTT_MESSAGES -; - -43 -ut16_t - - gMq -:: -mq_mesge_id_ - = 0; - -44 - gd -:: -li -< -Mq -:: -QueuedMqMesge -> Mq:: -mq_mesges_ -; - -45  - gwl_tic_ -[ -Mq -:: -MQTT_TOPIC_MAX_SIZE -]; - -47 - guuid -:: -log -:: -Logg - -Mq -:: -logg_ -{ -F_ -( -mq -), uuid::log:: -Facy -:: -DAEMON -}; - -51  - gMq -:: -subsibe -(cڡ -ut8_t - -devi_ty -, cڡ -d -:: -rg - & -tic -, -mq_subfuni_p - -cb -) { - -53 i(! - gmq_subfunis_ -. -emy -()) { - -54 cڡut& - gmq_subfuni - : -mq_subfunis_ -) { - -55 i(( -mq_subfuni -. -devi_ty_ - = -devi_ty -&& ( -rcmp -(mq_subfuni. -tic_ -. -c_r -(), -tic -.c_str()) == 0)) { - -62 aut - gmesge - = -queue_subsibe_mesge -( -tic -); - -66 - gmq_subfunis_ -. -ema_back -( -devi_ty -, -d -:: -move -( -tic -), std::move( -mesge -->tic), std::move( -cb -)); - -70  - gMq -:: -add_commd -(cڡ -ut8_t - -devi_ty -, cڡ ut8_ -devi_id -, cڡ -__FshSgHr - * -cmd -, -mq_cmdfuni_p - -cb -) { - -72 - gd -:: -rg - -cmd_tic - = -EMSdevi -:: -devi_ty_tic_me -( -devi_ty -); - -74 -bo - - gexis - = -l -; - -75 i(! - gmq_subfunis_ -. -emy -()) { - -76 cڡut& - gmq_subfuni - : -mq_subfunis_ -) { - -77 i(( -mq_subfuni -. -devi_ty_ - = -devi_ty -&& ( -rcmp -(mq_subfuni. -tic_ -. -c_r -(), -cmd_tic -.c_str()) == 0)) { - -78 -exis - = -ue -; - -82 i(! - gexis -) { - -83 - gMq -:: -subsibe -( -devi_ty -, -cmd_tic -, -nuαr -); - -86 -LOG_DEBUG -( -F -("Regig MQTT cmd %whi%s"), -uuid -:: -ad_ash_rg -( -cmd -). -c_r -(), -EMSdevi -:: -devi_ty_tic_me -( -devi_ty -).c_str()); - -88 - gmq_cmdfunis_ -. -ema_back -( -devi_ty -, -devi_id -, -cmd -, -cb -); - -92  - gMq -:: -subsibe -(cڡ -d -:: -rg - & -tic -, -mq_subfuni_p - -cb -) { - -93 -subsibe -(0, -tic -, -cb -); - -97  - gMq -:: -subsibe -() { - -98 i( -mq_subfunis_ -. -emy -()) { - -102 cڡut& - gmq_subfuni - : -mq_subfunis_ -) { - -103 -queue_subsibe_mesge -( -mq_subfuni -. -tic_ -); - -110  - gMq -:: -lo -() { - -112 i(! -ced -()) { - -116 -ut32_t - - gcutMlis - = -uuid -:: -g_uime -(); - -119 i( - gpublish_time_bo_ - && ( - gcutMlis - - - gϡ_publish_bo_ - >ublish_time_boiler_)) { - -120 - gϡ_publish_bo_ - = -cutMlis -; - -121 - gEMSESP -:: -publish_devi_vues -( -EMSdevi -:: -DeviTy -:: -BOILER -); - -123 i( - gpublish_time_thmo_ - && ( - gcutMlis - - - gϡ_publish_thmo_ - >ublish_time_thermostat_)) { - -124 - gϡ_publish_thmo_ - = -cutMlis -; - -125 - gEMSESP -:: -publish_devi_vues -( -EMSdevi -:: -DeviTy -:: -THERMOSTAT -); - -127 i( - gpublish_time_sެ_ - && ( - gcutMlis - - - gϡ_publish_sެ_ - >ublish_time_solar_)) { - -128 - gϡ_publish_sެ_ - = -cutMlis -; - -129 - gEMSESP -:: -publish_devi_vues -( -EMSdevi -:: -DeviTy -:: -SOLAR -); - -131 i( - gpublish_time_mixg_ - && ( - gcutMlis - - - gϡ_publish_mixg_ - >ublish_time_mixing_)) { - -132 - gϡ_publish_mixg_ - = -cutMlis -; - -133 - gEMSESP -:: -publish_devi_vues -( -EMSdevi -:: -DeviTy -:: -MIXING -); - -135 i( - gpublish_time_h_ - && ( - gcutMlis - - - gϡ_publish_h_ - >ublish_time_other_)) { - -136 - gϡ_publish_h_ - = -cutMlis -; - -137 - gEMSESP -:: -publish_h_vues -(); - -139 i( - gcutMlis - - - gϡ_publish_ns_ - > - gpublish_time_ns_ -) { - -140 - gϡ_publish_ns_ - = -cutMlis -; - -141 - gEMSESP -:: -publish_ns_vues -( -publish_time_ns_ - != 0); - -144 i(( - gut32_t -)( - gcutMlis - - - gϡ_mq_pl_ -> - gMQTT_PUBLISH_WAIT -) { - -145 - gϡ_mq_pl_ - = -cutMlis -; - -146 -oss_queue -(); - -151  - gMq -:: -show_mq -( -uuid -:: -cse -:: -Shl - & -shl -) { - -152 -shl -. -tn -( -F -("MQTT i%s"), -ced -(? -uuid -:: -ad_ash_rg -( -F_ -(ced)). -c_r -(: uuid::ad_ash_rg(F_( -disced -)).c_str()); - -154 -bo - - gsyem_hbt -; - -155 - gEMSESP -:: -e8266R -. -gMqStgsSvi -()-> -ad -([&]( -MqStgs - & -gs -{ -syem_hbt - = settings.system_heartbeat; }); - -156 - gshl -. -tn -( -F_ -( -syem_hbt_fmt -), -syem_hbt - ? F_( -abd -: F_( -dibd -)); - -158 - gshl -. -tn -( -F -("MQTTublish fas: %lu"), -mq_publish_s_ -); - -159 - gshl -. -n -(); - -162 - gshl -. -tn -( -F -("MQTT subscriptions:")); - -163 cڡut& - gmq_subfuni - : -mq_subfunis_ -) { - -165 i(( -cmp -( -mq_subfuni -. -fu_tic_ -. -c_r -(), "homeassistant/", 13) == 0)) { - -166 -shl -. -tf -( -F -("ic: %s"), -mq_subfuni -. -fu_tic_ -. -c_r -()); - -169 - gshl -. -tf -( -F -("ic: %s, [cmd]:"), -mq_subfuni -. -fu_tic_ -. -c_r -()); - -170 cڡut& - gmq_cmdfuni - : -mq_cmdfunis_ -) { - -171 i( -EMSdevi -:: -devi_ty_tic_me -( -mq_cmdfuni -. -devi_ty_ -= -mq_subfuni -. -tic_ -) { - -172 -shl -. -tf -( -F -(" %s"), -uuid -:: -ad_ash_rg -( -mq_cmdfuni -. -cmd_ -). -c_r -()); - -176 - gshl -. -n -(); - -178 - gshl -. -n -(); - -181 i( - gmq_mesges_ -. -emy -()) { - -182 - gshl -. -tn -( -F -("MQTT queue ismpty")); - -183 - gshl -. -n -(); - -187 - gshl -. -tn -( -F -("MQTT queu(%d mesges):"), -mq_mesges_ -. -size -()); - -189 cڡut& - gmesge - : -mq_mesges_ -) { - -190 aut -cڋ - = -mesge -. -cڋ_ -; - -191 i( - gcڋ --> - gݔi - = -Oti -:: -PUBLISH -) { - -193 i( -mesge -. -y_cou_ - == 0) { - -194 i( -mesge -. -ck_id_ - == 0) { - -195 -shl -. -tn -( -F -(" [%02d] (Pubtic=%yld=%s"), -mesge -. -id_ -, -cڋ --> -tic -. -c_r -(), cڋ-> -yld -.c_str()); - -197 - gshl -. -tn -( -F -(" [%02d] (Pub)opic=%sayload=%s (pid %d)"), - -198 -mesge -. -id_ -, - -199 -cڋ --> -tic -. -c_r -(), - -200 -cڋ --> -yld -. -c_r -(), - -201 -mesge -. -ck_id_ -); - -204 - gshl -. -tn -( -F -(" [%02d] (Pub)opic=%sayload=%s (pid %d,etry #%d)"), - -205 -mesge -. -id_ -, - -206 -cڋ --> -tic -. -c_r -(), - -207 -cڋ --> -yld -. -c_r -(), - -208 -mesge -. -ck_id_ -, - -209 -mesge -. -y_cou_ -); - -213 - gshl -. -tn -( -F -(" [%02d] (Subtic=%s"), -mesge -. -id_ -, -cڋ --> -tic -. -c_r -()); - -216 - gshl -. -n -(); - -219 #i -defed -( -EMSESP_DEBUG -) - -221  - gMq -:: -comg -(cڡ * -tic -, cڡ * -yld -) { - -222 -_mesge -( -tic -, -yld -, - -(payload)); - -228 -bo - - gMq -:: -_commd -(cڡ -ut8_t - -devi_ty -, cڡ * -cmd -, cڡ * -vue -, cڡ -t8_t - -id -) { - -229 #ifde -EMSESP_DEBUG - - -230 i( - gid - == -1) { - -231 -LOG_DEBUG -( -F -("[DEBUG] Clg commd %s, vu%s, id ideu"), -cmd -, -vue -); - -233 -LOG_DEBUG -( -F -("[DEBUG] Clg commd %s, vu%s, id i%d"), -cmd -, -vue -, -id -); - -237 i(! - gmq_cmdfunis_ -. -emy -()) { - -238 cڡut& - gcf - : -mq_cmdfunis_ -) { - -239 i( -cf -. -devi_ty_ - = -devi_ty -) { - -240 cڡ * -cf_cmd - = -uuid -:: -ad_ash_rg -( -cf -. -cmd_ -). -c_r -(); - -241 i( -rcmp -( -cf_cmd -, -cmd -) == 0) { - -242 ( -cf -. -mq_cmdfuni_ -)( -vue -, -id -); - -243  - gue -; - -248  - gl -; - -252  - gMq -:: -_mesge -(cڡ * -tic -, cڡ * -yld -, -size_t - -n -) { - -253 i( - gn - == 0) { - -258  - gmesge -[ -n - + 2]; - -259 -y -( -mesge -, -yld -, -n - + 1); - -261 #ifde -EMSESP_DEBUG - - -262 -LOG_DEBUG -( -F -("[DEBUG] Reived %=> %֒gth %d)"), -tic -, -mesge -, -n -); - -266 cڡut& - gmf - : -mq_subfunis_ -) { - -267 i( -rcmp -( -tic -, -mf -. -fu_tic_ -. -c_r -()) == 0) { - -268 i( -mf -. -mq_subfuni_ -) { - -269 ( -mf -. -mq_subfuni_ -)( -mesge -); - -273 - gSticJsDocumt -< - gEMSESP_MAX_JSON_SIZE_SMALL -> - gdoc -; - -274 -DerliziE - - gr - = -derlizeJs -( -doc -, -mesge -); - -275 i( - gr -) { - -276 -LOG_ERROR -( -F -("MQTT:ayld %s, %s"), -mesge -, -r -. -c_r -()); - -280 cڡ * - gcommd - = -doc -["cmd"]; - -281 i( - gcommd - = -nuαr -) { - -282 -LOG_ERROR -( -F -("MQTT: invidayld cmd fm. mesge=%s"), -mesge -); - -287 -t8_t - - gn - = -1; - -288 i( - gdoc -. -cڏsKey -("hc")) { - -289 - gn - = -doc -["hc"]; - -290 } i( - gdoc -. -cڏsKey -("id")) { - -291 - gn - = -doc -["id"]; - -294 -bo - - gcmd_known - = -l -; - -295 -JsV - - gda - = -doc -["data"]; - -296 i( - gda -. - gis -<*>()) { - -297 - gcmd_known - = -_commd -( -mf -. -devi_ty_ -, -commd -, -da -. -as -<*>(), -n -); - -298 } i( - gda -. - gis -<>()) { - -299  - gda_r -[10]; - -300 - gcmd_known - = -_commd -( -mf -. -devi_ty_ -, -commd -, -Hrs -:: - -( -da_r -, ( -t16_t -) -da -. -as -<>()), -n -); - -301 } i( - gda -. - gis -<>()) { - -302  - gda_r -[10]; - -303 - gcmd_known - = -_commd -( -mf -. -devi_ty_ -, -commd -, -Hrs -:: -nd_vue -( -da_r -, () -da -. -as -<>(), 2), -n -); - -306 i(! - gcmd_known -) { - -307 -LOG_ERROR -( -F -("MQTT:mchg cmd ovid da: %s"), -mesge -); - -315 -LOG_ERROR -( -F -("NMQTT hd˸found f܁i%dayld %s"), -tic -, -mesge -); - -319  - gMq -:: -show_tic_hdrs -( -uuid -:: -cse -:: -Shl - & -shl -, cڡ -ut8_t - -devi_ty -) { - -320 i( - gd -:: -cou_if -( -mq_subfunis_ -. -cbeg -(), - -321 -mq_subfunis_ -. -nd -(), - -322 [=]( -MQTTSubFuni - cڡ & -mq_subfuni -{  -devi_ty - =mq_subfuni. -devi_ty_ -; }) - -327 - gshl -. -t -( -F -(" Subscribed MQTTopics: ")); - -328 cڡut& - gmq_subfuni - : -mq_subfunis_ -) { - -329 i( -mq_subfuni -. -devi_ty_ - = -devi_ty -) { - -330 -shl -. -tf -( -F -("%"), -mq_subfuni -. -tic_ -. -c_r -()); - -333 - gshl -. -n -(); - -340  - gMq -:: -_publish -( -ut16_t - -ckId -) { - -342 i( -mq_mesges_ -. -emy -()) { - -346 aut - gmq_mesge - = -mq_mesges_ -. -t -(); - -349 i( - gmq_mesge -. - gck_id_ - == 0) { - -353 i( - gmq_mesge -. - gck_id_ - ! -ckId -) { - -354 -LOG_DEBUG -( -F -("Mismch,xg PID %d, g %d"), -mq_mesge -. -ck_id_ -, -ckId -); - -355 - gmq_publish_s_ -++; - -358 - gmq_mesges_ -. -p_t -(); - -361  - gMq -:: -t -() { - -362 -mqCl_ - = -EMSESP -:: -e8266R -. -gMqCl -(); - -365 - gEMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -ad -([&]( -WiFiStgs - & -wifiStgs -{ -home_ - = wifiStgs. -home -. -c_r -(); }); - -368 - gEMSESP -:: -e8266R -. -gMqStgsSvi -()-> -ad -([&]( -MqStgs - & -mqStgs -) { - -369 -publish_time_bo_ - = -mqStgs -. -publish_time_bo - * 1000; - -370 -publish_time_thmo_ - = -mqStgs -. -publish_time_thmo - * 1000; - -371 -publish_time_sެ_ - = -mqStgs -. -publish_time_sެ - * 1000; - -372 -publish_time_mixg_ - = -mqStgs -. -publish_time_mixg - * 1000; - -373 -publish_time_h_ - = -mqStgs -. -publish_time_h - * 1000; - -374 -publish_time_ns_ - = -mqStgs -. -publish_time_ns - * 1000; - -375 -mq_qos_ - = -mqStgs -. -mq_qos -; - -378 - gEMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -{ -bus_id_ - = stgs. -ems_bus_id -; }); - -380 - gmqCl_ --> -C -([ -this -]( -bo - -ssiP -{ -_c -(); }); - -382 - gmqCl_ --> -Disc -([ -this -]( -AsyncMqClDiscRs - -as -) { - -383 i( -as - = -AsyncMqClDiscRs -:: -TCP_DISCONNECTED -) { - -384 -LOG_INFO -( -F -("MQTT disconnected: TCP")); - -386 i( -as - = -AsyncMqClDiscRs -:: -MQTT_IDENTIFIER_REJECTED -) { - -387 -LOG_INFO -( -F -("MQTT disconnected: Identifier Rejected")); - -389 i( -as - = -AsyncMqClDiscRs -:: -MQTT_SERVER_UNAVAILABLE -) { - -390 -LOG_INFO -( -F -("MQTT disconnected: Server unavailable")); - -392 i( -as - = -AsyncMqClDiscRs -:: -MQTT_MALFORMED_CREDENTIALS -) { - -393 -LOG_INFO -( -F -("MQTT disconnected: Malformed credentials")); - -395 i( -as - = -AsyncMqClDiscRs -:: -MQTT_NOT_AUTHORIZED -) { - -396 -LOG_INFO -( -F -("MQTT disconnected: Notuthorized")); - -401  - gwl_tic -[ -MQTT_TOPIC_MAX_SIZE -]; - -402 -y -( -wl_tic -, -home_ -. -c_r -(), -MQTT_TOPIC_MAX_SIZE -); - -403 -t -( -wl_tic -, "/", -MQTT_TOPIC_MAX_SIZE -); - -404 -t -( -wl_tic -, "us", -MQTT_TOPIC_MAX_SIZE -); - -405 - gmqCl_ --> -tWl -( -wl_tic -, 1, -ue -, "offline"); - -407 - gmqCl_ --> -Mesge -([ -this -](* -tic -, * -yld -, -AsyncMqClMesgePrݔts - -ݔts -, -size_t - -n -, size_ -dex -, size_ -tٮ -) { - -409 -_mesge -( -tic -, -yld -, -n -); - -412 - gmqCl_ --> -Publish -([ -this -]( -ut16_t - -ckId -) { - -414 -_publish -( -ckId -); - -418 - gmq_cmdfunis_ -. -rve -(40); - -419 - gmq_subfunis_ -. -rve -(10); - -422  - gMq -:: -t_publish_time_bo -( -ut16_t - -publish_time -) { - -423 -publish_time_bo_ - = -publish_time - * 1000; - -426  - gMq -:: -t_publish_time_thmo -( -ut16_t - -publish_time -) { - -427 -publish_time_thmo_ - = -publish_time - * 1000; - -430  - gMq -:: -t_publish_time_sެ -( -ut16_t - -publish_time -) { - -431 -publish_time_sެ_ - = -publish_time - * 1000; - -434  - gMq -:: -t_publish_time_mixg -( -ut16_t - -publish_time -) { - -435 -publish_time_mixg_ - = -publish_time - * 1000; - -438  - gMq -:: -t_publish_time_h -( -ut16_t - -publish_time -) { - -439 -publish_time_h_ - = -publish_time - * 1000; - -442  - gMq -:: -t_publish_time_ns -( -ut16_t - -publish_time -) { - -443 -publish_time_ns_ - = -publish_time - * 1000; - -446 -bo - - gMq -:: -g_publish_chge -( -ut8_t - -devi_ty -) { - -447 i( -devi_ty - = -EMSdevi -:: -DeviTy -:: -BOILER -) { - -448 i(! -publish_time_bo_ -) { - -449  -ue -; - -451 } i( - gdevi_ty - = -EMSdevi -:: -DeviTy -:: -THERMOSTAT -) { - -452 i(! -publish_time_thmo_ -) { - -453  -ue -; - -455 } i( - gdevi_ty - = -EMSdevi -:: -DeviTy -:: -SOLAR -) { - -456 i(! -publish_time_sެ_ -) { - -457  -ue -; - -459 } i( - gdevi_ty - = -EMSdevi -:: -DeviTy -:: -MIXING -) { - -460 i(! -publish_time_mixg_ -) { - -461  -ue -; - -463 } i(! - gpublish_time_h_ -) { - -464  - gue -; - -466  - gl -; - -469  - gMq -:: -t_qos -( -ut8_t - -mq_qos -) { - -470 -mq_qos_ - = -mq_qos -; - -474  - gMq -:: -_c -() { - -476 -SticJsDocumt -<90> -doc -; - -477 - gdoc -["event"] = "start"; - -478 - gdoc -["vsi"] = -EMSESP_APP_VERSION -; - -479 #ide -EMSESP_STANDALONE - - -480 - gdoc -[""] = -WiFi -. -lolIP -(). -toSg -(); - -482 -publish -( -F -("fo"), -doc -, -l -); - -484 -publish -( -F -("us"), "le", -ue -); - -486 -t_publish_s -(); - -488 -subsibe -(); - -491 -add_commd -( -EMSdevi -:: -DeviTy -:: -SERVICEKEY -, -bus_id_ -, -F -("p"), -Syem -:: -mq_commd_p -); - -492 -add_commd -( -EMSdevi -:: -DeviTy -:: -SERVICEKEY -, -bus_id_ -, -F -("nd"), -Syem -:: -mq_commd_nd -); - -494 -LOG_INFO -( -F -("MQTT connected")); - -500 - gd -:: -shed_r - -Mq -:: -queue_mesge -(cڡ -ut8_t - -ݔi -, cڡ -d -:: -rg - & -tic -, cڡ std::rg & -yld -, cڡ -bo - - -) { - -501 i( - gtic -. -emy -()) { - -502  - gnuαr -; - -506 - gd -:: -shed_r -< -MqMesge -> -mesge -; - -507 i(( -cmp -( -tic -. -c_r -(), "homeassistant/", 13) == 0)) { - -509 -mesge - = -d -:: -make_shed -< -MqMesge ->( -ݔi -, - gtic -, - gd -:: -move -( -yld -), - g -); - -512 - gd -:: -rg - -fu_tic -(50, '\0'); - -513 -tf_P -(& -fu_tic -[0], fu_tic. -cy -(+ 1, -PSTR -("%s/%s"), -Mq -:: -home_ -. -c_r -(), -tic -.c_str()); - -514 - gmesge - = -d -:: -make_shed -< -MqMesge ->( -ݔi -, - gfu_tic -, - gd -:: -move -( -yld -), - g -); - -518 i( - gmq_mesges_ -. -size -(> -maximum_mq_mesges_ -) { - -519 -mq_mesges_ -. -p_t -(); - -521 - gmq_mesges_ -. -ema_back -( -mq_mesge_id_ -++, -d -:: -move -( -mesge -)); - -523  - gmq_mesges_ -. -back -(). - gcڋ_ -; - -527 - gd -:: -shed_r - -Mq -:: -queue_publish_mesge -(cڡ -d -:: -rg - & -tic -, cڡ std::rg & -yld -, cڡ -bo - - -) { - -528  -queue_mesge -( -Oti -:: -PUBLISH -, -tic -, -yld -, - -); - -532 - gd -:: -shed_r - -Mq -:: -queue_subsibe_mesge -(cڡ -d -:: -rg - & -tic -) { - -533  -queue_mesge -( -Oti -:: -SUBSCRIBE -, -tic -, "", -l -); - -537  - gMq -:: -publish -(cڡ -d -:: -rg - & -tic -, cڡ std::rg & -yld -, -bo - - -) { - -538 -queue_publish_mesge -( -tic -, -yld -, - -); - -542  - gMq -:: -publish -(cڡ -__FshSgHr - * -tic -, cڡ -d -:: -rg - & -yld -, -bo - - -) { - -543 -queue_publish_mesge -( -uuid -:: -ad_ash_rg -( -tic -), -yld -, - -); - -546  - gMq -:: -publish -(cڡ -__FshSgHr - * -tic -, cڡ -JsDocumt - & -yld -, -bo - - -) { - -547 -publish -( -uuid -:: -ad_ash_rg -( -tic -), -yld -, - -); - -550  - gMq -:: -publish -(cڡ -d -:: -rg - & -tic -, cڡ -JsDocumt - & -yld -, -bo - - -) { - -551 - gd -:: -rg - -yld_xt -; - -552 -rlizeJs -( -yld -, -yld_xt -); - -553 -queue_publish_mesge -( -tic -, -yld_xt -, - -); - -557  - gMq -:: -publish -(cڡ -d -:: -rg - & -tic -, cڡ -bo - -vue -) { - -558 -queue_publish_mesge -( -tic -, -vue - ? "1" : "0", -l -); - -560  - gMq -:: -publish -(cڡ -__FshSgHr - * -tic -, cڡ -bo - -vue -) { - -561 -queue_publish_mesge -( -uuid -:: -ad_ash_rg -( -tic -), -vue - ? "1" : "0", -l -); - -565  - gMq -:: -publish -(cڡ -d -:: -rg - & -tic -) { - -566 -queue_publish_mesge -( -tic -, "", -l -); - -571  - gMq -:: -oss_queue -() { - -572 i( -mq_mesges_ -. -emy -()) { - -597 aut - gmq_mesge - = -mq_mesges_ -. -t -(); - -598 aut - gmesge - = -mq_mesge -. -cڋ_ -; - -601 i( - gmesge --> - gݔi - = -Oti -:: -SUBSCRIBE -) { - -602 -LOG_DEBUG -( -F -("Subsibgtic: %s"), -mesge --> -tic -. -c_r -()); - -603 -ut16_t - - gck_id - = -mqCl_ --> -subsibe -( -mesge --> -tic -. -c_r -(), -mq_qos_ -); - -604 i(! - gck_id -) { - -605 -LOG_DEBUG -( -F -("E subsibg%s, %d"), -mesge --> -tic -. -c_r -(), -ck_id -); - -608 - gmq_mesges_ -. -p_t -(); - -615 i( - gmq_mesge -. - gck_id_ - > 0) { - -620 -ut16_t - - gck_id - = - -621 -mqCl_ --> -publish -( -mesge --> -tic -. -c_r -(), -mq_qos_ -, mesge-> - -, mesge-> -yld -.c_r(), mesge->yld. -size -(), -l -, -mq_mesge -. -id_ -); - -622 -LOG_DEBUG -( -F -("Publishgi%(#%02d,em #%d,id %d)"), -mesge --> -tic -. -c_r -(), -mq_mesge -. -id_ -, mq_mesge. -y_cou_ - + 1, -ck_id -); - -624 i( - gck_id - == 0) { - -626 i( -mq_mesge -. -y_cou_ - =( -MQTT_PUBLISH_MAX_RETRY - - 1)) { - -627 -LOG_ERROR -( -F -("Faedpublish%a %dems"), -mesge --> -tic -. -c_r -(), -mq_mesge -. -y_cou_ - + 1); - -628 - gmq_publish_s_ -++; - -629 - gmq_mesges_ -. -p_t -(); - -632 - gmq_mesges_ -. -t -(). - gy_cou_ -++; - -633 -LOG_DEBUG -( -F -("Faedpublish%s. Trygga, #%d"), -mesge --> -tic -. -c_r -(), -mq_mesge -. -y_cou_ - + 1); - -640 i( - gmq_qos_ - != 0) { - -641 -mq_mesges_ -. -t -(). -ck_id_ - = -ck_id -; - -646 - gmq_mesges_ -. -p_t -(); - - @src/mqtt.h - -19 #ide -EMSESP_MQTT_H_ - - -20  - #EMSESP_MQTT_H_ - - - ) - -22  - ~ - -23  - ~ - -25  - ~ - -26  - ~ - -27  - ~
  • - -28  - ~ - -30  - ~ - -32  - ~"hrs.h -" - -33  - ~"syem.h -" - -34  - ~"cse.h -" - -36  - ~ - -38 -usg - - guuid -:: -cse -:: -Shl -; - -40  - #EMSESP_MAX_JSON_SIZE_SMALL - 200 - -41  - #EMSESP_MAX_JSON_SIZE_MEDIUM - 800 - -42  - #EMSESP_MAX_JSON_SIZE_LARGE - 1500 - -43 - - ) - -44 -mea - - gem - { - -46 -usg - - gmq_subfuni_p - = -d -:: -funi -<(cڡ * -mesge -)>; - -47 -usg - - gmq_cmdfuni_p - = -d -:: -funi -<(cڡ * -da -, cڡ -t8_t - - gid -)>; - -49  - sMqMesge - { - -50 ~ -MqMesge -() = ; - -52 cڡ -ut8_t - - gݔi -; - -53 cڡ - gd -:: -rg - -tic -; - -54 cڡ - gd -:: -rg - -yld -; - -55 cڡ -bo - - g -; - -57 -MqMesge -(cڡ -ut8_t - -ݔi -, cڡ -d -:: -rg - & -tic -, cڡ std::rg && -yld -, -bo - - -) - -58 : -ݔi -(operation) - -59 , -tic -(topic) - -60 , -yld -(payload) - -61 , - -(retain) { - -65 as - cMq - { - -66 - gpublic -: - -67  -lo -(); - -68  -t -(); - -70  -t_publish_time_bo -( -ut16_t - -publish_time -); - -71  -t_publish_time_thmo -( -ut16_t - -publish_time -); - -72  -t_publish_time_sެ -( -ut16_t - -publish_time -); - -73  -t_publish_time_mixg -( -ut16_t - -publish_time -); - -74  -t_publish_time_h -( -ut16_t - -publish_time -); - -75  -t_publish_time_ns -( -ut16_t - -publish_time -); - -76  -t_qos -( -ut8_t - -mq_qos -); - -77 -bo - -g_publish_chge -( -ut8_t - -devi_ty -); - -79 - eOti - { - gPUBLISH -, - gSUBSCRIBE - }; - -81  -cڡex - -ut8_t - - gMQTT_TOPIC_MAX_SIZE - = 100; - -83  -subsibe -(cڡ -ut8_t - -devi_ty -, cڡ -d -:: -rg - & -tic -, -mq_subfuni_p - -cb -); - -84  -subsibe -(cڡ -d -:: -rg - & -tic -, -mq_subfuni_p - -cb -); - -85  -subsibe -(); - -87  -add_commd -(cڡ -ut8_t - -devi_ty -, cڡ ut8_ -devi_id -, cڡ -__FshSgHr - * -cmd -, -mq_cmdfuni_p - -cb -); - -89  -publish -(cڡ -d -:: -rg - & -tic -, cڡ std::rg & -yld -, -bo - - - = -l -); - -90  -publish -(cڡ -d -:: -rg - & -tic -, cڡ -JsDocumt - & -yld -, -bo - - - = -l -); - -91  -publish -(cڡ -__FshSgHr - * -tic -, cڡ -JsDocumt - & -yld -, -bo - - - = -l -); - -92  -publish -(cڡ -__FshSgHr - * -tic -, cڡ -d -:: -rg - & -yld -, -bo - - - = -l -); - -93  -publish -(cڡ -d -:: -rg - & -tic -, cڡ -bo - -vue -); - -94  -publish -(cڡ -__FshSgHr - * -ti -, cڡ -bo - -vue -); - -95  -publish -(cڡ -d -:: -rg - & -tic -); - -97  -show_tic_hdrs -( -uuid -:: -cse -:: -Shl - & -shl -, cڡ -ut8_t - -devi_ty -); - -98  -show_mq -( -uuid -:: -cse -:: -Shl - & -shl -); - -100  -_c -(); - -102  -bo - -_commd -(cڡ -ut8_t - -devi_ty -, cڡ * -cmd -, cڡ * -vue -, cڡ -t8_t - -id -); - -104  -disc -() { - -105 - gmqCl_ --> -disc -(); - -108 #i -defed -( -EMSESP_DEBUG -) - -109  -comg -(cڡ * -tic -, cڡ * -yld -); - -112  -bo - -ced -() { - -113  - gmqCl_ --> -ced -(); - -116  -ut32_t - -publish_s -() { - -117  - gmq_publish_s_ -; - -120  -t_publish_s -() { - -121 - gmq_publish_s_ - = 0; - -124  - sMQTTCmdFuni - { - -125 -ut8_t - - gdevi_ty_ -; - -126 -ut8_t - - gdevi_id_ -; - -127 cڡ -__FshSgHr - * - gcmd_ -; - -128 -mq_cmdfuni_p - - gmq_cmdfuni_ -; - -130 -MQTTCmdFuni -( -ut8_t - -devi_ty -, ut8_ -devi_id -, cڡ -__FshSgHr - * -cmd -, -mq_cmdfuni_p - -mq_cmdfuni -) - -131 : -devi_ty_ -( -devi_ty -) - -132 , -devi_id_ -( -devi_id -) - -133 , -cmd_ -( -cmd -) - -134 , -mq_cmdfuni_ -( -mq_cmdfuni -) { - -138  - gd -:: -ve -< -MQTTCmdFuni -> -commds -() { - -139  -mq_cmdfunis_ -; - -142 - give -: - -143  -uuid -:: -log -:: -Logg - -logg_ -; - -145 as - cQueuedMqMesge - { - -146 - gpublic -: - -147 cڡ -ut16_t - -id_ -; - -148 cڡ - gd -:: -shed_r - -cڋ_ -; - -149 -ut8_t - - gy_cou_ -; - -150 -ut16_t - - gck_id_ -; - -152 ~ -QueuedMqMesge -() = ; - -153 -QueuedMqMesge -( -ut16_t - -id -, -d -:: -shed_r -< -MqMesge -> && -cڋ -) - -154 : -id_ -( -id -) - -155 , -cڋ_ -( -d -:: -move -( -cڋ -)) { - -156 -y_cou_ - = 0; - -157 - gck_id_ - = 0; - -160  - gd -:: -li -< -QueuedMqMesge -> -mq_mesges_ -; - -162  -AsyncMqCl - * - gmqCl_ -; - -164  -size_t - - gmaximum_mq_mesges_ -; - -165  -ut16_t - - gmq_mesge_id_ -; - -166  -bo - - gmq__ -; - -168  -cڡex - -size_t - - gMAX_MQTT_MESSAGES - = 20; - -169  -cڡex - -ut32_t - - gMQTT_PUBLISH_WAIT - = 200; - -170  -cڡex - -ut8_t - - gMQTT_PUBLISH_MAX_RETRY - = 3; - -172  - gd -:: -shed_r - -queue_mesge -(cڡ -ut8_t - -ݔi -, cڡ -d -:: -rg - & -tic -, cڡ std::rg & -yld -, cڡ -bo - - -); - -173  - gd -:: -shed_r - -queue_publish_mesge -(cڡ -d -:: -rg - & -tic -, cڡ std::rg & -yld -, cڡ -bo - - -); - -174  - gd -:: -shed_r - -queue_subsibe_mesge -(cڡ -d -:: -rg - & -tic -); - -176  -_publish -( -ut16_t - -ckId -); - -177  -_mesge -(cڡ * -tic -, cڡ * -yld -, -size_t - -n -); - -178  -oss_queue -(); - -180  -ut16_t - - gmq_publish_s_ -; - -183  - sMQTTSubFuni - { - -184 -ut8_t - - gdevi_ty_ -; - -185 cڡ - gd -:: -rg - -tic_ -; - -186 cڡ - gd -:: -rg - -fu_tic_ -; - -187 -mq_subfuni_p - - gmq_subfuni_ -; - -189 -MQTTSubFuni -( -ut8_t - -devi_ty -, cڡ -d -:: -rg - && -tic -, cڡ std::rg && -fu_tic -, -mq_subfuni_p - -mq_subfuni -) - -190 : -devi_ty_ -( -devi_ty -) - -191 , -tic_ -( -tic -) - -192 , -fu_tic_ -( -fu_tic -) - -193 , -mq_subfuni_ -( -mq_subfuni -) { - -197  - gd -:: -ve -< -MQTTSubFuni -> -mq_subfunis_ -; - -198  - gd -:: -ve -< -MQTTCmdFuni -> -mq_cmdfunis_ -; - -200 -ut32_t - - gϡ_mq_pl_ - = 0; - -201 -ut32_t - - gϡ_publish_bo_ - = 0; - -202 -ut32_t - - gϡ_publish_thmo_ - = 0; - -203 -ut32_t - - gϡ_publish_sެ_ - = 0; - -204 -ut32_t - - gϡ_publish_mixg_ - = 0; - -205 -ut32_t - - gϡ_publish_h_ - = 0; - -206 -ut32_t - - gϡ_publish_ns_ - = 0; - -209  - gd -:: -rg - -home_ -; - -210  -ut8_t - - gmq_qos_ -; - -211  -ut32_t - - gpublish_time_ -; - -212  -ut8_t - - gbus_id_ -; - -213  -ut32_t - - gpublish_time_bo_ -; - -214  -ut32_t - - gpublish_time_thmo_ -; - -215  -ut32_t - - gpublish_time_sެ_ -; - -216  -ut32_t - - gpublish_time_mixg_ -; - -217  -ut32_t - - gpublish_time_h_ -; - -218  -ut32_t - - gpublish_time_ns_ -; - - @src/roomcontrol.cpp - -19  - ~"roomcڌ.h -" - -21 -mea - - gem - { - -23  -ut32_t - - grc_time_ - = 0; - -24  -t16_t - - gmّemp -[4] = { -EMS_VALUE_SHORT_NOTSET -, EMS_VALUE_SHORT_NOTSET, EMS_VALUE_SHORT_NOTSET, EMS_VALUE_SHORT_NOTSET}; - -29  - gRoom -:: -t_mّemp -(cڡ -ut8_t - -hc -, cڡ -t16_t - -mp -) { - -30 i( - ghc - > 3) { - -33 - gmّemp -[ -hc -] = -mp -; - -39  - gRoom -:: -nd -(cڡ -ut8_t - -addr -) { - -40 -ut8_t - -hc_ - = -addr - - -ADDR -; - -42 i( - ghc_ - > 3) { - -46 i( - gmّemp -[ -hc_ -] = -EMS_VALUE_SHORT_NOTSET -) { - -49 i( - guuid -:: -g_uime -(- -rc_time_ - > -SEND_INTERVAL -) { - -50 -rc_time_ - = -uuid -:: -g_uime -(); - -51 -mtu -( -addr -, 0x00); - -54 - gEMSut -:: -nd_pl -( -addr -); - -61  - gRoom -:: -check -(cڡ -ut8_t - -addr -, cڡ ut8_* -da -) { - -62 -ut8_t - - ghc_ - = ( -addr - & 0x7F- -ADDR -; - -65 i( - ghc_ - > 3) { - -69 i( - gmّemp -[ -hc_ -] = -EMS_VALUE_SHORT_NOTSET -) { - -73 i( - gaddr - & 0x80) { - -74 -ck_wre -(); - -79 i( - gda -[2] == 0x02) { - -80 -vsi -( -addr -, -da -[0]); - -81 } i( - gmّemp -[ -hc_ -] = -EMS_VALUE_SHORT_NOTSET -) { - -82 -unknown -( -addr -, -da -[0], data[2], data[3]); - -83 } i( - gda -[2] =0xAF && -da -[3] == 0) { - -84 -mtu -( -addr -, -da -[0]); - -86 -unknown -( -addr -, -da -[0], data[2], data[3]); - -93  - gRoom -:: -vsi -( -ut8_t - -addr -, ut8_ -d -) { - -94 -ut8_t - - gda -[10]; - -95 - gda -[0] = -addr -; - -96 - gda -[1] = -d -; - -97 - gda -[2] = 0x02; - -98 - gda -[3] = 0; - -99 - gda -[4] = 113; - -100 - gda -[5] = 0x02; - -101 - gda -[6] = 0x01; - -102 - gda -[7] = -EMSbus -:: -lcuϋ_c -( -da -, 7); - -103 - gEMSut -:: -sm -( -da -, 8); - -109  - gRoom -:: -unknown -( -ut8_t - -addr -, ut8_ -d -, ut8_ -ty -, ut8_ -offt -) { - -110 -ut8_t - - gda -[10]; - -111 - gda -[0] = -addr -; - -112 - gda -[1] = -d -; - -113 - gda -[2] = -ty -; - -114 - gda -[3] = -offt -; - -115 - gda -[4] = -EMSbus -:: -lcuϋ_c -( -da -, 4); - -116 - gEMSut -:: -sm -( -da -, 5); - -122  - gRoom -:: -mtu -( -ut8_t - -addr -, ut8_ -d -) { - -123 -ut8_t - - gda -[10]; - -124 -ut8_t - - ghc_ - = -addr - - -ADDR -; - -125 - gda -[0] = -addr -; - -126 - gda -[1] = -d -; - -127 - gda -[2] = 0xAF; - -128 - gda -[3] = 0; - -129 - gda -[4] = ( -ut8_t -)( -mّemp -[ -hc_ -] >> 8); - -130 - gda -[5] = ( -ut8_t -)( -mّemp -[ -hc_ -] & 0xFF); - -131 - gda -[6] = 0; - -132 - gda -[7] = -EMSbus -:: -lcuϋ_c -( -da -, 7); - -133 - gEMSut -:: -sm -( -da -, 8); - -138  - gRoom -:: -ck_wre -() { - -139 -ut8_t - -da -[1]; - -140 - gda -[0] = -TxSvi -:: -TX_WRITE_FAIL -; - -141 - gEMSut -:: -sm -( -da -, 1); - - @src/roomcontrol.h - -19 #ide -EMSESP_ROOMCONTROL_H - - -20  - #EMSESP_ROOMCONTROL_H - - - ) - -22  - ~"em.h -" - -24 -mea - - gem - { - -26 as - cRoom - { - -27 - gpublic -: - -28  -nd -(cڡ -ut8_t - -addr -); - -29  -check -(cڡ -ut8_t - -addr -, cڡ ut8_* -da -); - -30  -t_mّemp -(cڡ -ut8_t - -hc -, cڡ -t16_t - -mp -); - -32 - give -: - -33  -cڡex - -ut8_t - -ADDR - = 0x18; - -34  -cڡex - -ut32_t - - gSEND_INTERVAL - = 60000; - -36  -vsi -( -ut8_t - -addr -, ut8_ -d -); - -37  -unknown -( -ut8_t - -addr -, ut8_ -d -, ut8_ -ty -, ut8_ -offt -); - -38  -mtu -( -ut8_t - -addr -, ut8_ -d -); - -39  -ck_wre -(); - - @src/sensors.cpp - -21  - ~"nss.h -" - -22  - ~"em.h -" - -24 #ifde -ESP32 - - -25  - #YIELD - - - ) - -27  - #YIELD - - `yld -() - - ) - -30 -mea - - gem - { - -32 - guuid -:: -log -:: -Logg - -Sss -:: -logg_ -{ -F_ -( -nss -), uuid::log:: -Facy -:: -DAEMON -}; - -35  - gSss -:: -t -() { - -36 -ld -(); - -38 #ide -EMSESP_STANDALONE - - -39 i( - gds_gpio_ -) { - -40 - gbus_ -. -beg -( -ds_gpio_ -); - -46  - gSss -:: -ld -() { - -48 -EMSESP -:: -e8266R -. -gMqStgsSvi -()-> -ad -([&]( -MqStgs - & -gs -) { - -49 -mq_fm_ - = -gs -. -mq_fm -; - -52 - gEMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -53 -ds_gpio_ - = -gs -. -ds_gpio -; - -54 -se_ - = -gs -. -ds_se -; - -57 i( - gmq_fm_ - = -MQTT_fm -:: -HA -) { - -58  -ut8_t - -i - = 0; - gi - < - gMAX_SENSORS -; - ggied_ha_ -[i++] = -l -) - -63  - gSss -:: -lo -() { - -64 #ide -EMSESP_STANDALONE - - -65 -ut32_t - -time_now - = -uuid -:: -g_uime -(); - -67 i( - ge_ - = -S -:: -IDLE -) { - -68 i( -time_now - - -ϡ_aivy_ - > -READ_INTERVAL_MS -) { - -70 i( -bus_ -. -t -(|| -se_ -) { - -71 -YIELD -; - -72 - gbus_ -. -sk -(); - -73 - gbus_ -. -wre -( -CMD_CONVERT_TEMP -, -se_ - ? 1 : 0); - -74 - ge_ - = -S -:: -READING -; - -78 - gdevis_ -. -r -(); - -80 - gϡ_aivy_ - = -time_now -; - -82 } i( - ge_ - = -S -:: -READING -) { - -83 i( -mtu_cvt_come -(&& ( -time_now - - -ϡ_aivy_ - > -CONVERSION_MS -)) { - -85 -bus_ -. -t_ch -(); - -86 - gfound_ -. -r -(); - -87 - ge_ - = -S -:: -SCANNING -; - -88 } i( - gtime_now - - - gϡ_aivy_ - > - gREAD_TIMEOUT_MS -) { - -89 -LOG_ERROR -( -F -("Sensoreadimeout")); - -90 - ge_ - = -S -:: -IDLE -; - -92 } i( - ge_ - = -S -:: -SCANNING -) { - -93 i( -time_now - - -ϡ_aivy_ - > -SCAN_TIMEOUT_MS -) { - -94 -LOG_ERROR -( -F -("Sensor scanimeout")); - -95 - ge_ - = -S -:: -IDLE -; - -97 -ut8_t - - gaddr -[ -ADDR_LEN -] = {0}; - -99 i( - gbus_ -. -ch -( -addr -)) { - -100 i(! - gse_ -) { - -101 - gbus_ -. -dow -(); - -103 i( - gbus_ -. -c8 -( -addr -, -ADDR_LEN - - 1) ==ddr[ADDR_LEN - 1]) { - -104  -addr -[0]) { - -105  -TYPE_DS18B20 -: - -106  -TYPE_DS18S20 -: - -107  -TYPE_DS1822 -: - -108  -TYPE_DS1825 -: - -109  -f -; - -110 - gf - = -g_mtu_c -( -addr -); - -111 i(( - gf - ! -NAN -&& ( -f - >= -55) && (f <= 125)) { - -112 -found_ -. -ema_back -( -addr -); - -113 - gfound_ -. -back -(). - gmtu_c - = -f -; - -126 -LOG_ERROR -( -F -("Unknowns %s"), -Devi -( -addr -). -to_rg -(). -c_r -()); - -130 -LOG_ERROR -( -F -("Invid ss %s"), -Devi -( -addr -). -to_rg -(). -c_r -()); - -133 i(! - gse_ -) { - -134 - gbus_ -. -dow -(); - -136 i(( - gfound_ -. -size -(> -devis_ -.size()|| ( -yt_ - > 5)) { - -137 i( -found_ -. -size -(= -devis_ -.size()) { - -138  -ut8_t - -i - = 0; - gi - < - gdevis_ -. -size -(); i++) { - -139 i( - gfound_ -[ -i -]. - gmtu_c - ! -devis_ -[i]. -mtu_c -) { - -140 -chged_ - = -ue -; - -144 - gchged_ - = -ue -; - -146 - gdevis_ - = -d -:: -move -( -found_ -); - -147 - gyt_ - = 0; - -149 - gyt_ -++; - -151 - gfound_ -. -r -(); - -153 - ge_ - = -S -:: -IDLE -; - -160 -bo - - gSss -:: -mtu_cvt_come -() { - -161 #ide -EMSESP_STANDALONE - - -162 i( -se_ -) { - -163  -ue -; - -165  - gbus_ -. -ad_b -() == 1; - -167  - gue -; - -171 #agm -GCC - -dgnoic - -push - - -172 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -174  - gSss -:: -g_mtu_c -(cڡ -ut8_t - -addr -[]) { - -175 #ide -EMSESP_STANDALONE - - -176 i(! -bus_ -. -t -()) { - -177 -LOG_ERROR -( -F -("Bued befܐadg schd from %s"), -Devi -( -addr -). -to_rg -(). -c_r -()); - -178  - gNAN -; - -180 - gYIELD -; - -181 -ut8_t - - gschd -[ -SCRATCHPAD_LEN -] = {0}; - -182 - gbus_ -. - -( -addr -); - -183 - gbus_ -. -wre -( -CMD_READ_SCRATCHPAD -); - -184 - gbus_ -. -ad_bys -( -schd -, -SCRATCHPAD_LEN -); - -185 - gYIELD -; - -186 i(! - gbus_ -. -t -()) { - -187 -LOG_ERROR -( -F -("Buedᔄdg schd from %s"), -Devi -( -addr -). -to_rg -(). -c_r -()); - -188  - gNAN -; - -190 - gYIELD -; - -191 i( - gbus_ -. -c8 -( -schd -, -SCRATCHPAD_LEN - - 1) != scratchpad[SCRATCHPAD_LEN - 1]) { - -192 -LOG_WARNING -( -F -("Invalid scratchpad CRC: %02X%02X%02X%02X%02X%02X%02X%02X%02X from device %s"), - -193 -schd -[0], - -194 -schd -[1], - -195 -schd -[2], - -196 -schd -[3], - -197 -schd -[4], - -198 -schd -[5], - -199 -schd -[6], - -200 -schd -[7], - -201 -schd -[8], - -202 -Devi -( -addr -). -to_rg -(). -c_r -()); - -203  - gNAN -; - -206 -t16_t - - gw_vue - = ((t16_t) -schd -[ -SCRATCHPAD_TEMP_MSB -] << 8| schd[ -SCRATCHPAD_TEMP_LSB -]; - -208 i( - gaddr -[0] = -TYPE_DS18S20 -) { - -209 -w_vue - = (w_vu<< 3+ 12 - -schd -[ -SCRATCHPAD_CNT_REM -]; - -212  - gsuti - = 9 + (( -schd -[ -SCRATCHPAD_CONFIG -] >> 5) & 0x3); - -213  - gsuti -) { - -215 -w_vue - &= ~0x7; - -218 -w_vue - &= ~0x3; - -221 -w_vue - &= ~0x1; - -227 -ut32_t - - gw - = ((ut32_t) -w_vue - * 625 + 500) / 1000; - -228  () - gw - / 10; - -230  - gNAN -; - -234 #agm -GCC - -dgnoic - -p - - -236 cڡ - gd -:: -ve -< -Sss -:: -Devi -> Sss:: -devis -() const { - -237  -devis_ -; - -240 - gSss -:: -Devi -::Devi(cڡ -ut8_t - -addr -[]) - -241 : -id_ -((( -ut64_t -) -addr -[0] << 56) | ((uint64_t)addr[1] << 48) | ((uint64_t)addr[2] << 40) | ((uint64_t)addr[3] << 32) | ((uint64_t)addr[4] << 24) - -242 | (( -ut64_t -) -addr -[5] << 16) | ((uint64_t)addr[6] << 8) | (uint64_t)addr[7]) { - -245 -ut64_t - -Sss -:: -Devi -:: -id -() const { - -246  -id_ -; - -249 - gd -:: -rg - -Sss -:: -Devi -:: -to_rg -() const { - -250 -d -:: -rg - -r -(20, '\0'); - -251 -tf_P -(& -r -[0], - -252 -r -. -cy -() + 1, - -253 -PSTR -("%02X-%04X-%04X-%04X-%02X"), - -254 ()( -id_ - >> 56) & 0xFF, - -255 ()( -id_ - >> 40) & 0xFFFF, - -256 ()( -id_ - >> 24) & 0xFFFF, - -257 ()( -id_ - >> 8) & 0xFFFF, - -258 ()( -id_ -)&0xFF); - -259  - gr -; - -263 -bo - - gSss -:: -upded_vues -() { - -264 i( -chged_ -) { - -265 -chged_ - = -l -; - -266  - gue -; - -268  - gl -; - -273  - gSss -:: -publish_vues -() { - -274 -ut8_t - -num_devis - = -devis_ -. -size -(); - -276 i( - gnum_devis - == 0) { - -283 i( - gmq_fm_ - = -MQTT_fm -:: -SINGLE -) { - -284 -SticJsDocumt -<100> -doc -; - -285 cڡut& - gdevi - : -devis_ -) { - -286  -s -[7]; - -287 - gdoc -["mp"] = -Hrs -:: -nd_vue -( -s -, -devi -. -mtu_c -, 1); - -288  - gtic -[60]; - -289 -y -( -tic -, "sensor_", 50); - -290 -t -( -tic -, -devi -. -to_rg -(). -c_r -(), 60); - -291 - gMq -:: -publish -( -tic -, -doc -); - -292 - gdoc -. -r -(); - -297 -DymicJsDocumt - -doc -(100 * -num_devis -); - -298 -ut8_t - - gi - = 1; - -299 cڡut& - gdevi - : -devis_ -) { - -300  -s -[7]; - -302 i( - gmq_fm_ - = -MQTT_fm -:: -CUSTOM -) { - -304 -doc -[ -devi -. -to_rg -()] = -Hrs -:: -nd_vue -( -s -, devi. -mtu_c -, 1); - -305 } i(( - gmq_fm_ - = -MQTT_fm -:: -NESTED -|| ( -mq_fm_ - =MQTT_fm:: -HA -)) { - -307  -nsID -[10]; - -308 -y -( -nsID -, "sensor", 10); - -309 -t -( -nsID -, -Hrs -:: - -( -s -, -i -), 10); - -310 -JsObje - - gdaSs - = -doc -. -NeedObje -( -nsID -); - -311 - gdaSs -["id"] = -devi -. -to_rg -(); - -312 - gdaSs -["mp"] = -Hrs -:: -nd_vue -( -s -, -devi -. -mtu_c -, 1); - -316 i( - gmq_fm_ - = -MQTT_fm -:: -HA -) { - -317 -d -:: -rg - -tic -(100, '\0'); - -330 i(!( - ggied_ha_ -[ -i -])) { - -331 - gSticJsDocumt -< - gEMSESP_MAX_JSON_SIZE_MEDIUM -> - gcfig -; - -332 - gcfig -["dev_cla"] = "temperature"; - -333 - gcfig -["stat_t"] = "homeassistant/sensor/ems-esp/state"; - -334 - gcfig -["unit_of_meas"] = "°C"; - -336 - gd -:: -rg - -r -(50, '\0'); - -337 -tf_P -(& -r -[0], 50, -PSTR -("{{vue_js.ns%d.mp}}"), -i -); - -338 - gcfig -["v_l"] = -r -; - -340 -tf_P -(& -r -[0], 50, -PSTR -("ems-e-ns%d"), -i -); - -341 - gcfig -["me"] = -r -; - -342 - gcfig -["uniq_id"] = -r -; - -344 -tf_P -(& -tic -[0], 50, -PSTR -("homssit/ns/ems-e/ns%d/cfig"), -i -); - -345 - gMq -:: -publish -( -tic -, -cfig -, -l -); - -347 - ggied_ha_ -[ -i -] = -ue -; - -350 - gi -++; - -353 i(( - gmq_fm_ - = -MQTT_fm -:: -NESTED -|| ( -mq_fm_ - =MQTT_fm:: -CUSTOM -)) { - -354 -Mq -:: -publish -( -F -("nss"), -doc -); - -355 } i( - gmq_fm_ - = -MQTT_fm -:: -HA -) { - -356 -Mq -:: -publish -( -F -("homssit/ns/ems-e/e"), -doc -); - - @src/sensors.h - -21 #ide -EMSESP_SENSORS_H - - -22  - #EMSESP_SENSORS_H - - - ) - -24  - ~ - -25  - ~ - -27  - ~"hrs.h -" - -28  - ~"mq.h -" - -29  - ~"cse.h -" - -31  - ~ - -33 #ide -EMSESP_STANDALONE - - -34  - ~ - -37 -mea - - gem - { - -39 as - cSss - { - -40 - gpublic -: - -41 as - cDevi - { - -42 -public -: - -43 -Devi -(cڡ -ut8_t - -addr -[]); - -44 ~ -Devi -() = ; - -46 -ut64_t - -id -() const; - -47 - gd -:: -rg - -to_rg -() const; - -49  - gmtu_c - = -NAN -; - -51 - give -: - -52 cڡ -ut64_t - -id_ -; - -53 -bo - - ggied_ - = -l -; - -56 -Sss -() = ; - -57 ~ -Sss -() = ; - -59  -t -(); - -60  -lo -(); - -61  -publish_vues -(); - -62  -ld -(); - -63 -bo - -upded_vues -(); - -65 cڡ - gd -:: -ve -< -Devi -> -devis -() const; - -67 - give -: - -68  -cڡex - -ut8_t - -MAX_SENSORS - = 20; - -70 as - cS - { - gIDLE -, - gREADING -, - gSCANNING - }; - -72  -cڡex - -size_t - - gADDR_LEN - = 8; - -74  -cڡex - -size_t - - gSCRATCHPAD_LEN - = 9; - -75  -cڡex - -size_t - - gSCRATCHPAD_TEMP_MSB - = 1; - -76  -cڡex - -size_t - - gSCRATCHPAD_TEMP_LSB - = 0; - -77  -cڡex - -size_t - - gSCRATCHPAD_CONFIG - = 4; - -78  -cڡex - -size_t - - gSCRATCHPAD_CNT_REM - = 6; - -81  -cڡex - -ut8_t - - gTYPE_DS18B20 - = 0x28; - -82  -cڡex - -ut8_t - - gTYPE_DS18S20 - = 0x10; - -83  -cڡex - -ut8_t - - gTYPE_DS1822 - = 0x22; - -84  -cڡex - -ut8_t - - gTYPE_DS1825 - = 0x3B; - -86  -cڡex - -ut32_t - - gREAD_INTERVAL_MS - = 5000; - -87  -cڡex - -ut32_t - - gCONVERSION_MS - = 1000; - -88  -cڡex - -ut32_t - - gREAD_TIMEOUT_MS - = 2000; - -89  -cڡex - -ut32_t - - gSCAN_TIMEOUT_MS - = 3000; - -91  -cڡex - -ut8_t - - gCMD_CONVERT_TEMP - = 0x44; - -92  -cڡex - -ut8_t - - gCMD_READ_SCRATCHPAD - = 0xBE; - -94  - guuid -:: -log -:: -Logg - -logg_ -; - -96 #ide -EMSESP_STANDALONE - - -97 -OWe - - gbus_ -; - -100 -bo - -mtu_cvt_come -(); - -101  -g_mtu_c -(cڡ -ut8_t - -addr -[]); - -103 -ut32_t - - gϡ_aivy_ - = -uuid -:: -g_uime -(); - -104 -ut32_t - - gϡ_publish_ - = -uuid -:: -g_uime -(); - -105 -S - - ge_ - = S:: -IDLE -; - -106 - gd -:: -ve -< -Devi -> -found_ -; - -107 - gd -:: -ve -< -Devi -> -devis_ -; - -109 -bo - - ggied_ha_ -[ -MAX_SENSORS -]; - -111 -ut8_t - - gmq_fm_ -; - -112 -ut8_t - - gyt_ - = 0; - -113 -ut8_t - - gds_gpio_ - = 0; - -114 -bo - - gse_ - = -l -; - -115 -bo - - gchged_ - = -l -; - - @src/shower.cpp - -19  - ~"show.h -" - -21 -mea - - gem - { - -23 - guuid -:: -log -:: -Logg - -Show -:: -logg_ -{ -F_ -( -show -), uuid::log:: -Facy -:: -CONSOLE -}; - -25  - gShow -:: -t -() { - -26 -EMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -27 -show_tim_ - = -gs -. -show_tim -; - -28 -show_t_ - = -gs -. -show_t -; - -32  - gShow -:: -lo -() { - -33 i(! -show_tim_ -) { - -37 -ut32_t - - gtime_now - = -uuid -:: -g_uime -(); - -40 i(! - gdog_cd_sh_ -) { - -42 i( - gEMSESP -:: -p_w_aive -()) { - -44 i( -tim_t_ - == 0) { - -46 -tim_t_ - = -time_now -; - -47 - gtim_u_ - = 0; - -48 - gdog_cd_sh_ - = -l -; - -49 - gduti_ - = 0; - -50 - gshow__ - = -l -; - -54 i(! - gshow__ - && ( - gtime_now - - - gtim_t_ -> - gSHOWER_MIN_DURATION -) { - -55 - gshow__ - = -ue -; - -56 - gMq -:: -publish -( -F -("show_aive"), ( -bo -) -ue -); - -57 -LOG_DEBUG -( -F -("[Shower] hot water stillunning, starting showerimer")); - -60 i(((( - gtime_now - - - gtim_t_ -> - gSHOWER_MAX_DURATION -&& ! - gdog_cd_sh_ -&& - gshow_t_ -) { - -61 -show_t_t -(); - -66 i(( - gtim_t_ -&& ( - gtim_u_ - == 0)) { - -67 -tim_u_ - = -time_now -; - -71 i(( - gtim_u_ -&& (( - gtime_now - -im_u_> - gSHOWER_PAUSE_TIME -)) { - -74 i(( - gtim_u_ - - - gtim_t_ -> - gSHOWER_OFFSET_TIME -) { - -75 - gduti_ - = ( -tim_u_ - - -tim_t_ - - -SHOWER_OFFSET_TIME -); - -76 i( - gduti_ - > - gSHOWER_MIN_DURATION -) { - -77 - gMq -:: -publish -( -F -("show_aive"), ( -bo -) -l -); - -78 -LOG_DEBUG -( -F -("[Show] fished wh duti %d"), -duti_ -); - -79 -publish_vues -(); - -84 - gtim_t_ - = 0; - -85 - gtim_u_ - = 0; - -86 - gshow__ - = -l -; - -87 -show_t_ -(); - -94  - gShow -:: -show_t_ -() { - -95 i( -dog_cd_sh_ -) { - -96 -LOG_DEBUG -( -F -("Shower Alert stopped")); - -98 - gdog_cd_sh_ - = -l -; - -104  - gShow -:: -show_t_t -() { - -105 i( -show_t_ -) { - -106 -LOG_DEBUG -( -F -("Shower Alert started!")); - -108 - gdog_cd_sh_ - = -ue -; - -116  - gShow -:: -publish_vues -() { - -117 -SticJsDocumt -<90> -doc -; - -118 - gdoc -["show_tim"] = -show_tim_ - ? "1" : "0"; - -119 - gdoc -["show_t"] = -show_t_ - ? "1" : "0"; - -122  - gs -[50]; - -123 i( - gduti_ - > - gSHOWER_MIN_DURATION -) { - -124  - gbufr -[16] = {0}; - -125 -y -( -s -, -Hrs -:: - -( -bufr -, ( -ut8_t -)(( -duti_ - / (1000 * 60)) % 60), 10), 50); - -126 -t -( -s -, " minutesnd ", 50); - -127 -t -( -s -, -Hrs -:: - -( -bufr -, ( -ut8_t -)(( -duti_ - / 1000) % 60), 10), 50); - -128 -t -( -s -, " seconds", 50); - -129 - gdoc -["duti"] = -s -; - -132 - gMq -:: -publish -( -F -("show_da"), -doc -); - - @src/shower.h - -19 #ide -EMSESP_SHOWER_H - - -20  - #EMSESP_SHOWER_H - - - ) - -22  - ~ - -23  - ~ - -25  - ~"hrs.h -" - -26  - ~"cse.h -" - -27  - ~"mq.h -" - -28  - ~"gm.h -" - -29  - ~"em.h -" - -31  - ~ - -33 -mea - - gem - { - -35 as - cShow - { - -36 - gpublic -: - -37  -t -(); - -38  -lo -(); - -40 -bo - -show_t -() const { - -41  - gshow_t_ -; - -44  -show_t -(cڡ -bo - shower_alert) { - -45 - gshow_t_ - = -show_t -; - -48 -bo - -show_tim -() const { - -49  - gshow_tim_ -; - -52  -show_tim -(cڡ -bo - shower_timer) { - -53 - gshow_tim_ - = -show_tim -; - -56 - give -: - -57  -uuid -:: -log -:: -Logg - -logg_ -; - -59  -cڡex - -ut32_t - - gSHOWER_PAUSE_TIME - = 15000; - -60  -cڡex - -ut32_t - - gSHOWER_MIN_DURATION - = 120000; - -61  -cڡex - -ut32_t - - gSHOWER_OFFSET_TIME - = 5000; - -62  -cڡex - -ut32_t - - gSHOWER_COLDSHOT_DURATION - = 10; - -63  -cڡex - -ut32_t - - gSHOWER_MAX_DURATION - = 420000; - -65  -cse_commds -(); - -67  -publish_vues -(); - -68  -show_t_t -(); - -69  -show_t_ -(); - -71 -bo - - gshow_tim_ -; - -72 -bo - - gshow_t_ -; - -74 -bo - - gshow__ -; - -75 -ut32_t - - gtim_t_ -; - -76 -ut32_t - - gtim_u_ -; - -77 -ut32_t - - gduti_ -; - -78 -bo - - gdog_cd_sh_ -; - - @src/system.cpp - -19  - ~"syem.h -" - -20  - ~"em.h -" - -22  - ~"vsi.h -" - -24 -mea - - gem - { - -26 - guuid -:: -log -:: -Logg - -Syem -:: -logg_ -{ -F_ -( -syem -), uuid::log:: -Facy -:: -KERN -}; - -28 #ide -EMSESP_STANDALONE - - -29 - guuid -:: -syog -:: -SyogSvi - -Syem -:: -syog_ -; - -33 -ut32_t - - gSyem -:: -hp_t_ - = 0; - -34  - gSyem -:: -t_cou_ - = 0; - -35 -bo - - gSyem -:: -ud_us_ - = -l -; - -36 -bo - - gSyem -:: -hide_d_ - = -l -; - -37 -ut8_t - - gSyem -:: -d_gpio_ - = 0; - -38 -ut16_t - - gSyem -:: -og_ - = 0; - -42  - gSyem -:: -mq_commd_p -(cڡ * -vue -, cڡ -t8_t - -id -) { - -43 -bo - - gv - = -l -; - -44 i( - gHrs -:: -vue2bo -( -vue -, -v -)) { - -45 -pMode -( -id -, -OUTPUT -); - -46 -digWre -( -id -, -v -); - -47 -LOG_INFO -( -F -("GPIO %d s%s"), -id -, -v - ? "HIGH" : "LOW"); - -52  - gSyem -:: -mq_commd_nd -(cڡ * -vue -, cڡ -t8_t - -id -) { - -53 - gEMSESP -:: -nd_w_gm -( -vue -); - -57  - gSyem -:: -t -() { - -58 -LOG_NOTICE -("Restarting system..."); - -59 - gShl -:: -lo_l -(); - -60 -day -(1000); - -61 #i -defed -( -ESP8266 -) - -62 - gESP -. -t -(); - -63 #i -defed -( -ESP32 -) - -64 - gESP -. -t -(); - -69  - gSyem -:: -wifi_c -() { - -70 -LOG_NOTICE -("The wifi willeconnect..."); - -71 - gShl -:: -lo_l -(); - -72 -day -(1000); - -73 - gEMSESP -:: -emStgsSvi -. -ve -(); - -74 - gEMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -UpdeHdrs -("local"); - -79  - gSyem -:: -fm -( -uuid -:: -cse -:: -Shl - & -shl -) { - -80 aut -msg - = -F -("Formatting file system. This willesetll settingsoheir defaults"); - -81 - gshl -. -logg -(). -wng -( -msg -); - -82 - gshl -. -ush -(); - -84 - gEMSut -:: - -(); - -86 #i -defed -( -ESP8266 -) - -87 - gLeFS -. -fm -(); - -88 #i -defed -( -ESP32 -) - -89 - gSPIFFS -. -fm -(); - -92 - gSyem -:: -t -(); - -96 -ut8_t - - gSyem -:: -_mem -() { - -97 #ide -EMSESP_STANDALONE - - -98 -ut32_t - -_memy - = -ESP -. -gFeHp -(); - -100 -ut32_t - - g_memy - = 1000; - -103  (100 * - g_memy - / - ghp_t_ -); - -106  - gSyem -:: -syog_ -() { - -108 -EMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -109 -syog_v_ - = -gs -. -syog_v -; - -110 -syog_mk_rv_ - = -gs -. -syog_mk_rv -; - -111 -syog_ho_ - = -gs -. -syog_ho -; - -114 #ide -EMSESP_STANDALONE - - -115 - gsyog_ -. -t -(); - -118 -IPAddss - - gaddr -; - -119 i(! - gaddr -. -omSg -( -syog_ho_ -. -c_r -())) { - -120 - gaddr - = ( -ut32_t -)0; - -122 - gsyog_ -. -log_v -(( -uuid -:: -log -:: -Lev -) -syog_v_ -); - -123 - gsyog_ -. -mk_rv -( -syog_mk_rv_ -); - -124 - gsyog_ -. -dei -( -addr -); - -125 - gEMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -ad -([&]( -WiFiStgs - & -wifiStgs -{ -syog_ -. -home -(wifiStgs.home. -c_r -()); }); - -129  - gSyem -:: -t_hbt -( -bo - -syem_hbt -) { - -130 -syem_hbt_ - = -syem_hbt -; - -134  - gSyem -:: -t -() { - -136 i( -hp_t_ - == 0) { - -137 #ide -EMSESP_STANDALONE - - -138 -hp_t_ - = -ESP -. -gFeHp -(); - -140 - ghp_t_ - = 2000; - -145 - gEMSESP -:: -e8266R -. -gMqStgsSvi -()-> -ad -([&]( -MqStgs - & -gs -{ -syem_hbt_ - = stgs. -syem_hbt -; }); - -148 - gEMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -ad -( - -149 [&]( -WiFiStgs - & -wifiStgs -{ -LOG_INFO -( -F -("Syem %boed (EMS-ESP vsi %s)"), wifiStgs. -home -. -c_r -(), -EMSESP_APP_VERSION -); }); - -151 -syog_ -(); - -152 -t_d -(); - -153 - gEMSESP -:: -_tx -(); - -157  - gSyem -:: -t_d -() { - -158 -EMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -159 -hide_d_ - = -gs -. -hide_d -; - -160 -d_gpio_ - = -gs -. -d_gpio -; - -161 i( -d_gpio_ -) { - -162 -pMode -( -d_gpio_ -, -OUTPUT -); - -163 -digWre -( -d_gpio_ -, -hide_d_ - ? ! -LED_ON - : LED_ON); - -169 -bo - - gSyem -:: -ud_us -() { - -170 #i -defed -( -EMSESP_STANDALONE -) - -171  -l -; - -173  - gud_us_ - || - gUpde -. -isRušg -(); - -177  - gSyem -:: -ud_us -( -bo - -_ogss -) { - -179 i((! -ud_us_ -&& ( -_ogss -)) { - -180 -EMSut -:: - -(); - -182 - gud_us_ - = -_ogss -; - -186  - gSyem -:: -lo -() { - -187 #ide -EMSESP_STANDALONE - - -188 -syog_ -. -lo -(); - -190 -d_mڙ -(); - -191 -syem_check -(); - -192 -msu_og -(); - -195 -ut32_t - - gcutMlis - = -uuid -:: -g_uime -(); - -196 i(! - gϡ_hbt_ - || ( - gcutMlis - -a_hbt_ > - gSYSTEM_HEARTBEAT_INTERVAL -)) { - -197 - gϡ_hbt_ - = -cutMlis -; - -198 i( - gsyem_hbt_ -) { - -199 -nd_hbt -(); - -203 #i -defed -( -ESP8266 -) - -204 #i -defed -( -EMSESP_DEBUG -) - -205  -ut32_t - - gϡ_memcheck_ - = 0; - -206 i( - gcutMlis - - - gϡ_memcheck_ - > 10000) { - -207 - gϡ_memcheck_ - = -cutMlis -; - -208 -show_mem -("core"); - -214  - gSyem -:: -show_mem -(cڡ * -ne -) { - -215 #i -defed -( -ESP8266 -) - -216 #i -defed -( -EMSESP_DEBUG -) - -217 -LOG_INFO -( -F -("(%sFhp: %d%% (%lu), fg:%u%%"), -ne -, -_mem -(), () -ESP -. -gFeHp -(), ESP. -gHpFgmti -()); - -223  - gSyem -:: -nd_hbt -() { - -225  -rssid - = -wifi_quy -(); - -226 i( - grssid - == -1) { - -230 - gSticJsDocumt -< - gEMSESP_MAX_JSON_SIZE_SMALL -> - gdoc -; - -231 - gdoc -["rssid"] = -rssid -; - -232 - gdoc -["uime"] = -uuid -:: -log -:: -fm_timeamp_ms -(uuid:: -g_uime_ms -(), 3); - -233 - gdoc -["uime_c"] = -uuid -:: -g_uime_c -(); - -234 - gdoc -["mem"] = -_mem -(); - -235 - gdoc -["mqpublishs"] = -Mq -:: -publish_s -(); - -236 - gdoc -["txs"] = -EMSESP -:: -txrvi_ -. -gm__cou -(); - -237 - gdoc -["rxs"] = -EMSESP -:: -rxrvi_ -. -gm_r_cou -(); - -238 - gdoc -["adc"] = -og_ -; - -240 - gMq -:: -publish -( -F -("hbt"), -doc -, -l -); - -244  - gSyem -:: -msu_og -() { - -245  -ut32_t - -msu_ϡ_ - = 0; - -247 i(! - gmsu_ϡ_ - || ( - gut32_t -)( - guuid -:: -g_uime -(- -msu_ϡ_ -> -SYSTEM_MEASURE_ANALOG_INTERVAL -) { - -248 -msu_ϡ_ - = -uuid -:: -g_uime -(); - -249 #i -defed -( -ESP8266 -) - -250 -ut16_t - - ga - = -ogRd -( -A0 -); - -251 #i -defed -( -ESP32 -) - -252 -ut16_t - - ga - = -ogRd -(36); - -254 -ut16_t - - ga - = 0; - -256  -ut32_t - - gsum_ - = 0; - -258 i(! - gog_ -) { - -259 - gog_ - = -a -; - -260 - gsum_ - = -a - * 256; - -262 - gsum_ - = -sum_ - * 255 / 256 + -a -; - -263 - gog_ - = -sum_ - / 256; - -269  - gSyem -:: -t_d_d -( -ut32_t - -d -) { - -270 -d_ash_d_ - = -d -; - -271 -d_mڙ -(); - -275  - gSyem -:: -syem_check -() { - -276  -ut32_t - -ϡ_syem_check_ - = 0; - -278 i(! - gϡ_syem_check_ - || (( - gut32_t -)( - guuid -:: -g_uime -(- -ϡ_syem_check_ -> -SYSTEM_CHECK_FREQUENCY -)) { - -279 -ϡ_syem_check_ - = -uuid -:: -g_uime -(); - -281 #ide -EMSESP_STANDALONE - - -282 i( - gWiFi -. -us -(! -WL_CONNECTED -) { - -283 -t_d_d -( -LED_WARNING_BLINK_FAST -); - -284 - gsyem_hhy_ - = -l -; - -290 i(! - gEMSbus -:: -bus_ced -()) { - -291 -syem_hhy_ - = -l -; - -292 -t_d_d -( -LED_WARNING_BLINK -); - -296 i(! - gsyem_hhy_ -) { - -297 - gsyem_hhy_ - = -ue -; - -298 i( - gd_gpio_ -) { - -299 -digWre -( -d_gpio_ -, -hide_d_ - ? ! -LED_ON - : LED_ON); - -307  - gSyem -:: -d_mڙ -() { - -308 i(! -d_gpio_ -) { - -312  -ut32_t - - gd_ϡ_blk_ - = 0; - -314 i(! - gd_ϡ_blk_ - || ( - gut32_t -)( - guuid -:: -g_uime -(- -d_ϡ_blk_ -> -d_ash_d_ -) { - -315 -d_ϡ_blk_ - = -uuid -:: -g_uime -(); - -318 i(! - gsyem_hhy_ -) { - -319 -digWre -( -d_gpio_ -, ! -digRd -(led_gpio_)); - -329 -t8_t - - gSyem -:: -wifi_quy -() { - -330 #ide -EMSESP_STANDALONE - - -331 i( -WiFi -. -us -(! -WL_CONNECTED -) { - -334  - gdBm - = -WiFi -. -RSSI -(); - -336 -t8_t - - gdBm - = -70; - -338 i( - gdBm - <= -100) { - -341 i( - gdBm - >= -50) { - -344  2 * ( - gdBm - + 100); - -348  - gSyem -:: -show_urs -( -uuid -:: -cse -:: -Shl - & -shl -) { - -349 -shl -. -tn -( -F -("Users:")); - -351 #ide -EMSESP_STANDALONE - - -352 - gEMSESP -:: -e8266R -. -gSecuryStgsSvi -()-> -ad -([&]( -SecuryStgs - & -curyStgs -) { - -353  -Ur - -ur - : -curyStgs -. -urs -) { - -354 -shl -. -tn -( -F -(" uame: %s,asswd: %s, is_adm: %s"), -ur -. -uame -. -c_r -(), ur. -sswd -.c_r(), ur. -adm - ? F("yes") : F("no")); - -359 - gshl -. -n -(); - -362  - gSyem -:: -show_syem -( -uuid -:: -cse -:: -Shl - & -shl -) { - -363 -shl -. -tn -( -F -("Uime: %s"), -uuid -:: -log -:: -fm_timeamp_ms -(uuid:: -g_uime_ms -(), 3). -c_r -()); - -365 #ide -EMSESP_STANDALONE - - -366 #i -defed -( -ESP8266 -) - -367 - gshl -. -tn -( -F -("Ch ID: 0x%08x"), -ESP -. -gChId -()); - -368 - gshl -. -tn -( -F -("SDK vsi: %s"), -ESP -. -gSdkVsi -()); - -369 - gshl -. -tn -( -F -("Cܐvsi: %s"), -ESP -. -gCeVsi -(). -c_r -()); - -370 - gshl -. -tn -( -F -("Fu vsi: %s"), -ESP -. -gFuVsi -(). -c_r -()); - -371 - gshl -. -tn -( -F -("Bo vsi: %u"), -ESP -. -gBoVsi -()); - -372 - gshl -. -tn -( -F -("Bo mode: %u"), -ESP -. -gBoMode -()); - -373 - gshl -. -tn -( -F -("CPU fqucy: %u MHz"), -ESP -. -gCpuFqMHz -()); - -374 - gshl -. -tn -( -F -("Fsh ch: 0x%08X (%u bys)"), -ESP -. -gFshChId -(), ESP. -gFshChRlSize -()); - -375 - gshl -. -tn -( -F -("Reas: %s"), -ESP -. -gRetRs -(). -c_r -()); - -376 - gshl -. -tn -( -F -("Refo: %s"), -ESP -. -gRetInfo -(). -c_r -()); - -377 - gshl -. -tn -( -F -("Fhp: %lu bys"), () -ESP -. -gFeHp -()); - -378 - gshl -. -tn -( -F -("Fmem: %d %%"), -_mem -()); - -379 - gshl -. -tn -( -F -("Maximum fblock size: %lu bys"), () -ESP -. -gMaxFeBlockSize -()); - -380 - gshl -. -tn -( -F -("Hagmti: %u %%"), -ESP -. -gHpFgmti -()); - -381 - gshl -. -tn -( -F -("Fctuiڠack: %lu bys"), () -ESP -. -gFeCtSck -()); - -382 #i -defed -( -ESP32 -) - -383 - gshl -. -tn -( -F -("SDK vsi: %s"), -ESP -. -gSdkVsi -()); - -384 - gshl -. -tn -( -F -("CPU fqucy: %u MHz"), -ESP -. -gCpuFqMHz -()); - -386 - gshl -. -tn -( -F -("Skch size: %u by(%u by)"), -ESP -. -gSkchSize -(), ESP. -gFeSkchS -()); - -387 - gshl -. -tn -( -F -("Fhp: %lu bys"), () -ESP -. -gFeHp -()); - -388 - gshl -. -tn -( -F -("Fmem: %d %%"), -_mem -()); - -389 - gshl -. -n -(); - -391  - gWiFi -. -us -()) { - -392  - gWL_IDLE_STATUS -: - -393 -shl -. -tn -( -F -("WiFi: Idle")); - -396  - gWL_NO_SSID_AVAIL -: - -397 -shl -. -tn -( -F -("WiFi: Networkot found")); - -400  - gWL_SCAN_COMPLETED -: - -401 -shl -. -tn -( -F -("WiFi: Network scan complete")); - -404  - gWL_CONNECTED -: { - -405 -shl -. -tn -( -F -("WiFi: Connected")); - -406 - gshl -. -tn -( -F -("SSID: %s"), -WiFi -. -SSID -(). -c_r -()); - -407 - gshl -. -tn -( -F -("BSSID: %s"), -WiFi -. -BSSIDr -(). -c_r -()); - -408 - gshl -. -tn -( -F -("RSSI: %d dBm (%d %%)"), -WiFi -. -RSSI -(), -wifi_quy -()); - -409 - gshl -. -tn -( -F -("MACddss: %s"), -WiFi -. -macAddss -(). -c_r -()); - -411 #i -defed -( -ESP8266 -) - -412 - gshl -. -tn -( -F -("Home: %s"), -WiFi -. -home -(). -c_r -()); - -413 #i -defed -( -ESP32 -) - -414 - gshl -. -tn -( -F -("Home: %s"), -WiFi -. -gHome -()); - -416 - gshl -. -tn -( -F -("IPv4ddss: %s/%s"), -uuid -:: -b_to_rg -( -WiFi -. -lolIP -()). -c_r -(), uuid::b_to_rg(WiFi. -subtMask -()).c_str()); - -417 - gshl -. -tn -( -F -("IPv4 geway: %s"), -uuid -:: -b_to_rg -( -WiFi -. -gewayIP -()). -c_r -()); - -418 - gshl -. -tn -( -F -("IPv4amerv: %s"), -uuid -:: -b_to_rg -( -WiFi -. -dnsIP -()). -c_r -()); - -421  - gWL_CONNECT_FAILED -: - -422 -shl -. -tn -( -F -("WiFi: Connection failed")); - -425  - gWL_CONNECTION_LOST -: - -426 -shl -. -tn -( -F -("WiFi: Connectionost")); - -429  - gWL_DISCONNECTED -: - -430 -shl -. -tn -( -F -("WiFi: Disconnected")); - -433  - gWL_NO_SHIELD -: - -435 -shl -. -tn -( -F -("WiFi: Unknown")); - -439 - gEMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -440 -shl -. -n -(); - -441 -shl -. -tn -( -F -("Syslog:")); - -442 -shl -. -t -(" "); - -443 -shl -. -tn -( -F_ -( -ho_fmt -), ! -gs -. -syog_ho -. -isEmy -(? stgs.syog_ho. -c_r -(: -uuid -:: -ad_ash_rg -(F_( -unt -)).c_str()); - -444 -shl -. -t -(" "); - -445 -shl -. -tn -( -F_ -( -log_v_fmt -), -uuid -:: -log -:: -fm_v_low -( -ic_ -( -gs -. -syog_v -))); - -446 -shl -. -t -(" "); - -447 -shl -. -tn -( -F_ -( -mk_rv_fmt -), -gs -. -syog_mk_rv -); - -454  - gSyem -:: -cse_commds -( -Shl - & -shl -,  -cڋxt -) { - -455 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -456 -CommdFgs -:: -ADMIN -, - -457 -ash_rg_ve -{ -F_ -( -t -)}, - -458 []( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts - __attribute__((unused))) { - -459 -t -(); - -462 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -463 -CommdFgs -:: -ADMIN -, - -464 -ash_rg_ve -{ -F_ -( -wifi -), F_( -c -)}, - -465 []( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts - __attribute__((unused))) { - -466 -wifi_c -(); - -469 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -470 -CommdFgs -:: -ADMIN -, - -471 -ash_rg_ve -{ -F_ -( -fm -)}, - -472 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -473 -shl -. -r_sswd -( -F_ -( -sswd_om -), [=]( -Shl - & shl, -bo - -comed -, cڡ -d -:: -rg - & -sswd -) { - -474 i( -comed -) { - -475 -EMSESP -:: -e8266R -. -gSecuryStgsSvi -()-> -ad -([&]( -SecuryStgs - & -curyStgs -) { - -476 i( -curyStgs -. -jwtSe -. -equs -( -sswd -. -c_r -())) { - -477 -fm -( -shl -); - -479 -shl -. -n -( -F -("incorrectassword")); - -486 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -487 -CommdFgs -:: -ADMIN -, - -488 -ash_rg_ve -{ -F_ -( -sswd -)}, - -489 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -490 -shl -. -r_sswd -( -F_ -( -w_sswd_om1 -), []( -Shl - & shl, -bo - -comed -, cڡ -d -:: -rg - & -sswd1 -) { - -491 i( -comed -) { - -492 -shl -. -r_sswd -( -F_ -( -w_sswd_om2 -), - -493 [ -sswd1 -]( -Shl - & -shl -, -bo - -comed -, cڡ -d -:: -rg - & -sswd2 -) { - -494 i( -comed -) { - -495 i( -sswd1 - = -sswd2 -) { - -496 -EMSESP -:: -e8266R -. -gSecuryStgsSvi -()-> -upde -( - -497 [&]( -SecuryStgs - & -curyStgs -) { - -498 -curyStgs -. -jwtSe - = -sswd2 -. -c_r -(); - -499  -SUpdeResu -:: -CHANGED -; - -502 -shl -. -n -( -F -("Adminassword updated")); - -504 -shl -. -n -( -F -("Passwords doot match")); - -512 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -513 -CommdFgs -:: -USER -, - -514 -ash_rg_ve -{ -F_ -( -show -)}, - -515 [=]( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -516 -show_syem -( -shl -); - -517 -shl -. -n -(); - -520 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -521 -CommdFgs -:: -ADMIN -, - -522 -ash_rg_ve -{ -F_ -( -t -), F_( -wifi -), F_( -home -)}, - -523 -ash_rg_ve -{ -F_ -( -me_mdy -)}, - -524 []( -Shl - & -shl - -__ibu__ -(( -unud -)), cڡ -d -:: -ve - & -gumts -) { - -525 -shl -. -n -("The wifi connection will beeset..."); - -526 -Shl -:: -lo_l -(); - -527 -day -(1000); - -528 -EMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -upde -( - -529 [&]( -WiFiStgs - & -wifiStgs -) { - -530 -wifiStgs -. -home - = -gumts -. -t -(). -c_r -(); - -531  -SUpdeResu -:: -CHANGED -; - -536 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -537 -CommdFgs -:: -ADMIN -, - -538 -ash_rg_ve -{ -F_ -( -t -), F_( -wifi -), F_( -ssid -)}, - -539 -ash_rg_ve -{ -F_ -( -me_mdy -)}, - -540 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -541 -EMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -updeWhoutPragi -([&]( -WiFiStgs - & -wifiStgs -) { - -542 -wifiStgs -. -ssid - = -gumts -. -t -(). -c_r -(); - -543  -SUpdeResu -:: -CHANGED -; - -545 -shl -. -n -("Use `wifieconnect`opplyheew settings"); - -548 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -549 -CommdFgs -:: -ADMIN -, - -550 -ash_rg_ve -{ -F_ -( -t -), F_( -wifi -), F_( -sswd -)}, - -551 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -552 -shl -. -r_sswd -( -F_ -( -w_sswd_om1 -), []( -Shl - & shl, -bo - -comed -, cڡ -d -:: -rg - & -sswd1 -) { - -553 i( -comed -) { - -554 -shl -. -r_sswd -( -F_ -( -w_sswd_om2 -), - -555 [ -sswd1 -]( -Shl - & -shl -, -bo - -comed -, cڡ -d -:: -rg - & -sswd2 -) { - -556 i( -comed -) { - -557 i( -sswd1 - = -sswd2 -) { - -558 -EMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -updeWhoutPragi -( - -559 [&]( -WiFiStgs - & -wifiStgs -) { - -560 -wifiStgs -. -sswd - = -sswd2 -. -c_r -(); - -561  -SUpdeResu -:: -CHANGED -; - -563 -shl -. -n -("Use `wifieconnect`opplyheew settings"); - -565 -shl -. -n -( -F -("Passwords doot match")); - -573 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -574 -CommdFgs -:: -USER -, - -575 -ash_rg_ve -{ -F_ -( -t -)}, - -576 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -))) { - -577 -EMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -ad -([&]( -WiFiStgs - & -wifiStgs -) { - -578 -shl -. -t -(" "); - -579 -shl -. -tn -( -F_ -( -home_fmt -), - -580 -wifiStgs -. -home -. -isEmy -(? -uuid -:: -ad_ash_rg -( -F_ -( -unt -)). -c_r -() - -581 : -wifiStgs -. -home -. -c_r -()); - -584 -EMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -ad -([&]( -WiFiStgs - & -wifiStgs -) { - -585 -shl -. -t -(" "); - -586 -shl -. -tn -( -F_ -( -wifi_ssid_fmt -), - -587 -wifiStgs -. -ssid -. -isEmy -(? -uuid -:: -ad_ash_rg -( -F_ -( -unt -)). -c_r -() - -588 : -wifiStgs -. -ssid -. -c_r -()); - -589 -shl -. -t -(" "); - -590 -shl -. -tn -( -F_ -( -wifi_sswd_fmt -), -wifiStgs -. -ssid -. -isEmy -(? F_( -unt -: F_( -aisks -)); - -599 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -600 -CommdFgs -:: -ADMIN -, - -601 -ash_rg_ve -{ -F_ -( -show -), F_( -urs -)}, - -602 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts - -__ibu__ -(( -unud -)){ -Syem -:: -show_urs -(shell); }); - -604 - gEMSESPShl -:: -commds --> -add_commd -( -ShlCڋxt -:: -SYSTEM -, - -605 -CommdFgs -:: -ADMIN -, - -606 -ash_rg_ve -{ -F_ -( -p -)}, - -607 -ash_rg_ve -{ -F_ -( -gpio_mdy -), F_( -da_tiڮ -)}, - -608 []( -Shl - & -shl -, cڡ -d -:: -ve - & -gumts -) { - -609 i( -gumts -. -size -() == 1) { - -610 -shl -. -tn -( -F -("use on/off, 1/0 orrue/false")); - -613  -p - = 0; - -614 i( -Hrs -:: -vue2numb -( -gumts -[0]. -c_r -(), -p -)) { - -615 -Syem -:: -mq_commd_p -( -gumts -[1]. -c_r -(), -p -); - -620 - gCse -:: -r_cuom_cڋxt -( -shl -, -cڋxt -); - -626 -bo - - gSyem -:: -check_upgde -() { - -627 #i -defed -( -ESP8266 -) - -629 -LeFSCfig - -l_cfg -; - -630 - gl_cfg -. -tAutoFm -( -l -); - -631 - gLeFS -. -tCfig -( -l_cfg -); - -632 i( - gLeFS -. -beg -()) { - -633 #i -defed -( -EMSESP_DEBUG -) - -634 - gSl -. -beg -(115200); - -635 - gSl -. -n -( -F -("FS is Littlefs")); - -636 - gSl -. -d -(); - -638  - gl -; - -641 #agm -GCC - -dgnoic - -push - - -642 #agm -GCC - -dgnoic - -igned - "-Wdeprecated-declarations" - -644 -SPIFFSCfig - - gcfg -; - -645 - gcfg -. -tAutoFm -( -l -); - -646 - gSPIFFS -. -tCfig -( -cfg -); - -647 i(! - gSPIFFS -. -beg -()) { - -648 #i -defed -( -EMSESP_DEBUG -) - -649 - gSl -. -beg -(115200); - -650 - gSl -. -n -( -F -("No old SPIFFS found!")); - -651 - gSl -. -d -(); - -654 - gl_cfg -. -tAutoFm -( -ue -); - -655 - gLeFS -. -tCfig -( -l_cfg -); - -656  - gl -; - -659 - gSl -. -beg -(115200); - -661 -bo - - ged - = -l -; - -662 -Fe - - gfe -; - -663 -JsObje - - gtwk -, - gg -, - gmq -, - gcuom_gs -; - -664 - gSticJsDocumt -<1024> - gdoc -; - -674 - gfe - = -SPIFFS -. -ݒ -("/myesp.json", "r"); - -675 i(! - gfe -) { - -676 - gSl -. -n -( -F -("Unableoeadhe system config file")); - -677 - ged - = -ue -; - -679 -DerliziE - - gr - = -derlizeJs -( -doc -, -fe -); - -680 i( - gr -) { - -681 - gSl -. -tf -( -PSTR -("E. Faedderlizsyem js, %s\n"), -r -. -c_r -()); - -682 - ged - = -ue -; - -684 - gSl -. -n -( -F -("Migrating settings from EMS-ESP v1.9...")); - -685 #i -defed -( -EMSESP_DEBUG -) - -686 -rlizeJs -( -doc -, -Sl -); - -687 - gSl -. -n -(); - -689 - gtwk - = -doc -["network"]; - -690 - gg - = -doc -["general"]; - -691 - gmq - = -doc -["mqtt"]; - -694 - gl_cfg -. -tAutoFm -( -ue -); - -695 - gLeFS -. -tCfig -( -l_cfg -); - -696 - gLeFS -. -beg -(); - -697 - gEMSESP -:: -e8266R -. -beg -(); - -698 - gEMSESP -:: -emStgsSvi -. -beg -(); - -700 - gEMSESP -:: -e8266R -. -gWiFiStgsSvi -()-> -upde -( - -701 [&]( -WiFiStgs - & -wifiStgs -) { - -702 -wifiStgs -. -home - = -g -["home"] | -FACTORY_WIFI_HOSTNAME -; - -703 -wifiStgs -. -ssid - = -twk -["ssid"] | -FACTORY_WIFI_SSID -; - -704 -wifiStgs -. -sswd - = -twk -["sswd"] | -FACTORY_WIFI_PASSWORD -; - -706 -wifiStgs -. -icIPCfig - = -l -; - -707 -JsUts -:: -adIP -( -twk -, "ic", -wifiStgs -. -lolIP -); - -708 -JsUts -:: -adIP -( -twk -, "dns", -wifiStgs -. -dnsIP1 -); - -709 -JsUts -:: -adIP -( -twk -, "geway", -wifiStgs -. -gewayIP -); - -710 -JsUts -:: -adIP -( -twk -, "nmask", -wifiStgs -. -subtMask -); - -712  -SUpdeResu -:: -CHANGED -; - -716 - gEMSESP -:: -e8266R -. -gSecuryStgsSvi -()-> -upde -( - -717 [&]( -SecuryStgs - & -curyStgs -) { - -718 -curyStgs -. -jwtSe - = -g -["sswd"] | -FACTORY_JWT_SECRET -; - -720  -SUpdeResu -:: -CHANGED -; - -724 - gEMSESP -:: -e8266R -. -gMqStgsSvi -()-> -upde -( - -725 [&]( -MqStgs - & -mqStgs -) { - -726 -mqStgs -. -ho - = -mq -[""] | -FACTORY_MQTT_HOST -; - -727 -mqStgs -. -mq_fm - = ( -mq -["áedjs"] ? -MQTT_fm -:: -NESTED - : MQTT_fm:: -SINGLE -); - -728 -mqStgs -. -mq_qos - = -mq -["qos"] | 0; - -729 -mqStgs -. -uame - = -mq -["user"] | ""; - -730 -mqStgs -. -sswd - = -mq -["password"] | ""; - -731 -mqStgs -. -pt - = -mq -["pt"] | -FACTORY_MQTT_PORT -; - -732 -mqStgs -. -Id - = -FACTORY_MQTT_CLIENT_ID -; - -733 -mqStgs -. -abd - = -mq -["enabled"]; - -734 -mqStgs -. -syem_hbt - = -mq -["heartbeat"]; - -735 -mqStgs -. -kpAlive - = -FACTORY_MQTT_KEEP_ALIVE -; - -736 -mqStgs -. -nSessi - = -FACTORY_MQTT_CLEAN_SESSION -; - -737 -mqStgs -. -maxTicLgth - = -FACTORY_MQTT_MAX_TOPIC_LENGTH -; - -739  -SUpdeResu -:: -CHANGED -; - -744 - gfe -. -o -(); - -746 i( - ged -) { - -747 #i -defed -( -EMSESP_DEBUG -) - -748 - gSl -. -n -( -F -("Failedoead system config. Quitting.")); - -750 - gSPIFFS -. -d -(); - -751 - gSl -. -d -(); - -752  - gl -; - -760 - gdoc -. -r -(); - -761 - ged - = -l -; - -762 - gfe - = -SPIFFS -. -ݒ -("/customconfig.json", "r"); - -763 i(! - gfe -) { - -764 - gSl -. -n -( -F -("Unableoead custom config file")); - -765 - ged - = -ue -; - -767 -DerliziE - - gr - = -derlizeJs -( -doc -, -fe -); - -768 i( - gr -) { - -769 - gSl -. -tf -( -PSTR -("E. Faedderlizcuom js, %s\n"), -r -. -c_r -()); - -770 - ged - = -ue -; - -772 #i -defed -( -EMSESP_DEBUG -) - -773 -rlizeJs -( -doc -, -Sl -); - -774 - gSl -. -n -(); - -776 - gcuom_gs - = -doc -["settings"]; - -777 - gEMSESP -:: -emStgsSvi -. -upde -( - -778 [&]( -EMSESPStgs - & -gs -) { - -779 -gs -. -tx_mode - = -cuom_gs -["tx_mode"] | -EMSESP_DEFAULT_TX_MODE -; - -780 -gs -. -show_t - = -cuom_gs -["show_t"] | -EMSESP_DEFAULT_SHOWER_ALERT -; - -781 -gs -. -show_tim - = -cuom_gs -["show_tim"] | -EMSESP_DEFAULT_SHOWER_TIMER -; - -782 -gs -. -ma_thmo - = -cuom_gs -["ma_thmo"] | -EMSESP_DEFAULT_MASTER_THERMOSTAT -; - -783 -gs -. -ems_bus_id - = -cuom_gs -["bus_id"] | -EMSESP_DEFAULT_EMS_BUS_ID -; - -784 -gs -. -syog_ho - = -EMSESP_DEFAULT_SYSLOG_HOST -; - -785 -gs -. -syog_v - = -EMSESP_DEFAULT_SYSLOG_LEVEL -; - -786 -gs -. -syog_mk_rv - = -EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL -; - -787 -gs -. -ds_gpio - = -cuom_gs -["ds_gpio"] | -EMSESP_DEFAULT_DALLAS_GPIO -; - -788 -gs -. -ds_se - = -cuom_gs -["ds_se"] | -EMSESP_DEFAULT_DALLAS_PARASITE -; - -789 -gs -. -d_gpio - = -cuom_gs -["d_gpio"] | -EMSESP_DEFAULT_LED_GPIO -; - -791  -SUpdeResu -:: -CHANGED -; - -796 - gfe -. -o -(); - -798 - gSPIFFS -. -d -(); - -800 i( - ged -) { - -801 #i -defed -( -EMSESP_DEBUG -) - -802 - gSl -. -n -( -F -("Failedoead custom config. Quitting.")); - -804 - gSl -. -d -(); - -805  - gl -; - -808 #agm -GCC - -dgnoic - -p - - -810 - gSl -. -n -( -F -("Restarting...")); - -811 - gSl -. -ush -(); - -812 -day -(1000); - -813 - gSl -. -d -(); - -814 -day -(1000); - -815 -t -(); - -816  - gue -; - -818  - gl -; - - @src/system.h - -19 #ide -EMSESP_SYSTEM_H_ - - -20  - #EMSESP_SYSTEM_H_ - - - ) - -22  - ~ - -23  - ~ - -25  - ~"hrs.h -" - -26  - ~"cse.h -" - -27  - ~"mq.h -" - -28  - ~"gm.h -" - -30 #ide -EMSESP_STANDALONE - - -31  - ~ - -34  - ~ - -36 -usg - - guuid -:: -cse -:: -Shl -; - -38 -mea - - gem - { - -40 as - cSyem - { - -41 - gpublic -: - -42  -t -(); - -43  -lo -(); - -46  -t -(); - -47  -fm -( -uuid -:: -cse -:: -Shl - & -shl -); - -49  -cse_commds -( -Shl - & -shl -,  -cڋxt -); - -51  -mq_commd_p -(cڡ * -vue -, cڡ -t8_t - -id -); - -52  -mq_commd_nd -(cڡ * -vue -, cڡ -t8_t - -id -); - -54  -ut8_t - -_mem -(); - -55  -ud_us -( -bo - -_ogss -); - -56  -bo - -ud_us -(); - -57  -syog_ -(); - -58  -t_hbt -( -bo - -syem_hbt -); - -59  -nd_hbt -(); - -60  -show_mem -(cڡ * -ne -); - -61  -t_d -(); - -62 -bo - -check_upgde -(); - -64 - give -: - -65  -uuid -:: -log -:: -Logg - -logg_ -; - -67 #ide -EMSESP_STANDALONE - - -68  - guuid -:: -syog -:: -SyogSvi - -syog_ -; - -71  -cڡex - -ut32_t - - gSYSTEM_CHECK_FREQUENCY - = 5000; - -72  -cڡex - -ut32_t - - gLED_WARNING_BLINK - = 1000; - -73  -cڡex - -ut32_t - - gLED_WARNING_BLINK_FAST - = 100; - -74  -cڡex - -ut32_t - - gSYSTEM_HEARTBEAT_INTERVAL - = 60000; - -75  -cڡex - -ut32_t - - gSYSTEM_MEASURE_ANALOG_INTERVAL - = 1100; - -78  -cڡex - -ut8_t - - gLED_ON - = -LOW -; - -80  -d_mڙ -(); - -81  -t_d_d -( -ut32_t - -d -); - -82  -syem_check -(); - -83  -msu_og -(); - -85  -show_syem -( -uuid -:: -cse -:: -Shl - & -shl -); - -86  -show_urs -( -uuid -:: -cse -:: -Shl - & -shl -); - -87  -wifi_c -(); - -88  -t8_t - -wifi_quy -(); - -90 -bo - - gsyem_hhy_ - = -l -; - -91 -ut32_t - - gd_ash_d_ - = -LED_WARNING_BLINK_FAST -; - -92  -ut32_t - - ghp_t_ -; - -93  - gt_cou_ -; - -94 -ut32_t - - gϡ_hbt_ - = 0; - -95  -bo - - gud_us_ -; - -96  -ut16_t - - gog_ -; - -99 -bo - - gsyem_hbt_ -; - -100  -bo - - ghide_d_ -; - -101 -ut8_t - - gsyog_v_ -; - -102 -ut32_t - - gsyog_mk_rv_ -; - -103 -Sg - - gsyog_ho_ -; - -104  -ut8_t - - gd_gpio_ -; - - @src/telegram.cpp - -19  - ~"gm.h -" - -20  - ~"em.h -" - -22 -mea - - gem - { - -25 cڡ -ut8_t - - gems_c_b -[] = {0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E, 0x20, 0x22, 0x24, 0x26, - -39 -ut32_t - - gEMSbus -:: -ϡ_bus_aivy_ - = 0; - -40 -bo - - gEMSbus -:: -bus_ced_ - = -l -; - -41 -ut8_t - - gEMSbus -:: -ems_mask_ - = -EMS_MASK_UNSET -; - -42 -ut8_t - - gEMSbus -:: -ems_bus_id_ - = -EMSESP_DEFAULT_EMS_BUS_ID -; - -43 -ut8_t - - gEMSbus -:: -tx_mode_ - = -EMSESP_DEFAULT_TX_MODE -; - -44 -ut8_t - - gEMSbus -:: -tx_e_ - = -Tegm -:: -Oti -:: -NONE -; - -46 - guuid -:: -log -:: -Logg - -EMSbus -:: -logg_ -{ -F_ -( -gm -), uuid::log:: -Facy -:: -CONSOLE -}; - -50 -ut8_t - - gEMSbus -:: -lcuϋ_c -(cڡ ut8_* -da -, cڡ ut8_ -ngth -) { - -51 -ut8_t - - gi - = 0; - -52 -ut8_t - - gc - = 0; - -53  - gi - < - gngth -) { - -54 - gc - = -ems_c_b -[ -c -]; - -55 - gc - ^ -da -[ -i -++]; - -57  - gc -; - -62 - gTegm -:: -Tegm -(cڡ -ut8_t - -ݔi -, - -63 cڡ -ut8_t - -c -, - -64 cڡ -ut8_t - -de -, - -65 cڡ -ut16_t - -ty_id -, - -66 cڡ -ut8_t - -offt -, - -67 cڡ -ut8_t - * -da -, - -68 cڡ -ut8_t - -mesge_ngth -) - -69 : -ݔi -(operation) - -70 , -c -(src) - -71 , -de -(dest) - -72 , -ty_id -(type_id) - -73 , -offt -(offset) - -74 , -mesge_ngth -(message_length) { - -76  -ut8_t - - gi - = 0; ((< - gmesge_ngth -&& (< - gEMS_MAX_TELEGRAM_MESSAGE_LENGTH -)); i++) { - -77 - gmesge_da -[ -i -] = -da -[i]; - -82 - gd -:: -rg - -Tegm -:: -to_rg -() const { - -83 -ut8_t - -da -[ -EMS_MAX_TELEGRAM_LENGTH -]; - -84 -ut8_t - - gngth - = 0; - -85 - gda -[0] = -this --> -c - ^ -RxSvi -:: -ems_mask -(); - -86 i( - gthis --> - gݔi - = -Tegm -:: -Oti -:: -TX_READ -) { - -87 -da -[1] = -this --> -de - | 0x80; - -88 - gda -[4] = -this --> -mesge_da -[0]; - -89 i( - gthis --> - gty_id - > 0xFF) { - -90 - gda -[2] = 0xFF; - -91 - gda -[5] = ( -this --> -ty_id - >> 8) - 1; - -92 - gda -[6] = -this --> -ty_id - & 0xFF; - -93 - gngth - = 7; - -95 - gda -[2] = -this --> -ty_id -; - -96 - gngth - = 5; - -99 - gda -[1] = -this --> -de -; - -100 i( - gthis --> - gty_id - > 0xFF) { - -101 - gda -[2] = 0xFF; - -102 - gda -[4] = ( -this --> -ty_id - >> 8) - 1; - -103 - gda -[5] = -this --> -ty_id - & 0xFF; - -104 - gngth - = 6; - -106 - gda -[2] = -this --> -ty_id -; - -107 - gngth - = 4; - -109  -ut8_t - - gi - = 0; i < - gthis --> - gmesge_ngth -; i++) { - -110 - gda -[ -ngth -++] = -this --> -mesge_da -[ -i -]; - -114  - gHrs -:: -da_to_hex -( -da -, -ngth -); - -118 - gd -:: -rg - -Tegm -:: -to_rg_mesge -() const { - -119 i( -this --> -mesge_ngth - == 0) { - -120  -ad_ash_rg -( -F -("")); - -123  - gHrs -:: -da_to_hex -( -this --> -mesge_da -,his-> -mesge_ngth -); - -127  - gRxSvi -:: -lo -() { - -128 ! -rx_gms_ -. -emy -()) { - -129 aut -gm - = -rx_gms_ -. -t -(). -gm_ -; - -130 () - gEMSESP -:: -oss_gm -( -gm -); - -131 -emt_gm_cou -(); - -132 - grx_gms_ -. -p_t -(); - -140  - gRxSvi -:: -add -( -ut8_t - * -da -, ut8_ -ngth -) { - -141 i( - gngth - < 2) { - -146 -ut8_t - - gc - = -lcuϋ_c -( -da -, -ngth - - 1); - -147 i( - gda -[ -ngth - - 1] ! -c -) { - -148 -emt_gm_r_cou -(); - -149 -LOG_ERROR -( -F -("Rx: %(CRC %02X !%02X)"), -Hrs -:: -da_to_hex -( -da -, -ngth -). -c_r -(), da[ngth - 1], -c -); - -157 i( -ems_mask -(= -EMS_MASK_UNSET -) { - -158 -ems_mask -( -da -[0]); - -162 -ut8_t - - gc - = -da -[0] & 0x7F; - -163 -ut8_t - - gde - = -da -[1] & 0x7F; - -164 -ut8_t - - gofft - = -da -[3]; - -166 -ut16_t - - gty_id -; - -167 -ut8_t - * - gmesge_da -; - -168 -ut8_t - - gmesge_ngth -; - -174 i( - gda -[2] < 0xF0 || - gngth - < 6) { - -176 - gty_id - = -da -[2]; - -177 - gmesge_da - = -da - + 4; - -178 - gmesge_ngth - = -ngth - - 5; - -181 -ut8_t - - gshi - = 0; - -182 i( - gda -[2] != 0xFF) { - -184 -shi - = ( -da -[4] != 0xFF) ? 2 : 1; - -186 - gty_id - = ( -da -[4 + -shi -] << 8) + data[5 + shift] + 256; - -187 - gmesge_da - = -da - + 6 + -shi -; - -188 - gmesge_ngth - = -ngth - - 7 - -shi -; - -192 i( - gEMSESP -:: -wch -(= -EMSESP -:: -Wch -:: -WATCH_RAW -) { - -193 -ut16_t - -a_wch_id - = -EMSESP -:: -wch_id -(); - -194 i(( - ga_wch_id - = -WATCH_ID_NONE -|| ( -ty_id - = -a_wch_id -) - -195 || (( -a_wch_id - < 0x80&& (( -c - =a_wch_id|| ( -de - ==race_watch_id)))) { - -196 -LOG_NOTICE -( -F -("Rx: %s"), -Hrs -:: -da_to_hex -( -da -, -ngth -). -c_r -()); - -200 #ifde -EMSESP_DEBUG - - -201 -LOG_DEBUG -( -F -("[DEBUG] New Rxegm, mesgngth %d"), -mesge_ngth -); - -206 i( - gty_id - == 0) { - -211 - gc - = -EMSESP -:: -check_ma_devi -( -c -, -ty_id -, -ue -); - -214 aut - ggm - = -d -:: -make_shed -< -Tegm ->(Tegm:: -Oti -:: -RX -, - gc -, - gde -, - gty_id -, - gofft -, - gmesge_da -, - gmesge_ngth -); - -217 i( - grx_gms_ -. -size -(> -MAX_RX_TELEGRAMS -) { - -218 -rx_gms_ -. -p_t -(); - -219 -emt_gm_r_cou -(); - -222 - grx_gms_ -. -ema_back -( -rx_gm_id_ -++, -d -:: -move -( -gm -)); - -230  - gTxSvi -:: -ush_tx_queue -() { - -231 -tx_gms_ -. -r -(); - -232 - gtx_gm_id_ - = 0; - -237  - gTxSvi -:: -t -() { - -239 -EMSESP -:: -emStgsSvi -. -ad -([&]( -EMSESPStgs - & -gs -) { - -240 -ems_bus_id -( -gs -.ems_bus_id); - -241 -tx_mode -( -gs -.tx_mode); - -245 -gm_ad_cou -(0); - -246 -gm_wre_cou -(0); - -247 -gm__cou -(0); - -251 -ad_que -( -EMSdevi -:: -EMS_TYPE_UBADevis -, EMSdevi:: -EMS_DEVICE_ID_BOILER -); - -255  - gTxSvi -:: -nd_pl -() { - -257 i( -tx_mode -()) { - -258 -EMSut -:: -nd_pl -( -ems_bus_id -(^ -ems_mask -()); - -264  - gTxSvi -:: -nd -() { - -266 i(! -bus_ced -()) { - -271 i( - gtx_gms_ -. -emy -()) { - -272 -nd_pl -(); - -277 i( -tx_mode -() != 0) { - -278 -nd_gm -( -tx_gms_ -. -t -()); - -282 - gtx_gms_ -. -p_t -(); - -286  - gTxSvi -:: -nd_gm -(cڡ -QueuedTxTegm - & -tx_gm -) { - -287  -ut8_t - -gm_w -[ -EMS_MAX_TELEGRAM_LENGTH -]; - -290 aut - ggm - = -tx_gm -. -gm_ -; - -293 -ut8_t - - gc - = -gm --> -c -; - -294 i( -ems_mask -(! -EMS_MASK_UNSET -) { - -295 -c - ^ -ems_mask -(); - -297 - ggm_w -[0] = -c -; - -301 -ut8_t - - gde - = -gm --> -de -; - -304 - gde - = -EMSESP -:: -check_ma_devi -( -de -, -gm --> -ty_id -, -l -); - -306 i( - ggm --> - gݔi - = -Tegm -:: -Oti -:: -TX_READ -) { - -307 -de - |= 0x80; - -309 - ggm_w -[1] = -de -; - -311 -ut8_t - - gmesge_p - = 0; - -312 -bo - - gcy_da - = -ue -; - -314 i( - ggm --> - gty_id - > 0xFF) { - -316 - ggm_w -[2] = 0xFF; - -317 - ggm_w -[3] = -gm --> -offt -; - -320 i( - ggm --> - gݔi - = -Tegm -:: -Oti -:: -TX_WRITE -) { - -322 -gm_w -[4] = ( -gm --> -ty_id - >> 8) - 1; - -323 - ggm_w -[5] = -gm --> -ty_id - & 0xFF; - -324 - gmesge_p - = 6; - -327 - ggm_w -[4] = -gm --> -mesge_da -[0]; - -328 - ggm_w -[5] = ( -gm --> -ty_id - >> 8) - 1; - -329 - ggm_w -[6] = -gm --> -ty_id - & 0xFF; - -330 - gmesge_p - = 7; - -331 - gcy_da - = -l -; - -335 - ggm_w -[2] = -gm --> -ty_id -; - -336 - ggm_w -[3] = -gm --> -offt -; - -337 - gmesge_p - = 4; - -340 i( - gcy_da -) { - -341 i( - ggm --> - gmesge_ngth - > - gEMS_MAX_TELEGRAM_MESSAGE_LENGTH -) { - -346  -ut8_t - - gi - = 0; i < - ggm --> - gmesge_ngth -; i++) { - -347 - ggm_w -[ -mesge_p -++] = -gm --> -mesge_da -[ -i -]; - -351 -ut8_t - - gngth - = -mesge_p -; - -353 - ggm_ϡ_ - = -d -:: -make_shed -< -Tegm ->(* -gm -); - -355 - ggm_w -[ -ngth -] = -lcuϋ_c -( -gm_w -,ength); - -357 - gngth -++; - -359 -LOG_DEBUG -( -F -("Sending %s Tx [#%d],elegram: %s"), - -360 ( -gm --> -ݔi - = -Tegm -:: -Oti -:: -TX_WRITE -? -F -("write") : F("read"), - -361 -tx_gm -. -id_ -, - -362 -Hrs -:: -da_to_hex -( -gm_w -, -ngth -). -c_r -()); - -365 -ut16_t - - gus - = -EMSut -:: -sm -( -gm_w -, -ngth -); - -367 i( - gus - = -EMS_TX_STATUS_ERR -) { - -368 -LOG_ERROR -( -F -("Failedoransmit Tx via UART.")); - -369 -emt_gm__cou -(); - -370 -tx_e -( -Tegm -:: -Oti -:: -NONE -); - -374 -tx_e -( -gm --> -ݔi -); - -380  - gTxSvi -:: -nd_gm -(cڡ -ut8_t - * -da -, cڡ ut8_ -ngth -) { - -381 -ut8_t - - ggm_w -[ -EMS_MAX_TELEGRAM_LENGTH -]; - -383  -ut8_t - - gi - = 0; i < - gngth -; i++) { - -384 - ggm_w -[ -i -] = -da -[i]; - -386 - ggm_w -[ -ngth -] = -lcuϋ_c -( -gm_w -,ength); - -388 -tx_e -( -Tegm -:: -Oti -:: -NONE -); - -391 -ut16_t - - gus - = -EMSut -:: -sm -( -gm_w -, -ngth -); - -393 i( - gus - = -EMS_TX_STATUS_ERR -) { - -394 -LOG_ERROR -( -F -("Failedoransmit Tx via UART.")); - -395 -emt_gm__cou -(); - -401  - gTxSvi -:: -add -(cڡ -ut8_t - -ݔi -, - -402 cڡ -ut8_t - -de -, - -403 cڡ -ut16_t - -ty_id -, - -404 cڡ -ut8_t - -offt -, - -405 -ut8_t - * -mesge_da -, - -406 cڡ -ut8_t - -mesge_ngth -, - -407 cڡ -bo - -t -) { - -408 aut - ggm - = -d -:: -make_shed -< -Tegm ->( -ݔi -, -ems_bus_id -(), - gde -, - gty_id -, - gofft -, - gmesge_da -, - gmesge_ngth -); - -410 #ifde -EMSESP_DEBUG - - -411 -LOG_DEBUG -( -F -("[DEBUG] New Tx [#%d]egm,gth %d"), -tx_gm_id_ -, -mesge_ngth -); - -415 i( - gtx_gms_ -. -size -(> -MAX_TX_TELEGRAMS -) { - -416 -tx_gms_ -. -p_t -(); - -419 i( - gt -) { - -420 - gtx_gms_ -. -ema_t -( -tx_gm_id_ -++, -d -:: -move -( -gm -), -l -); - -422 - gtx_gms_ -. -ema_back -( -tx_gm_id_ -++, -d -:: -move -( -gm -), -l -); - -430  - gTxSvi -:: -add -( -ut8_t - -ݔi -, cڡ ut8_* -da -, cڡ ut8_ -ngth -, cڡ -bo - -t -) { - -432 -ut8_t - - gc - = -da -[0]; - -433 -ut8_t - - gde - = -da -[1]; - -434 -ut8_t - - gofft - = -da -[3]; - -436 -ut16_t - - gty_id -; - -437 cڡ -ut8_t - * - gmesge_da -; - -438 -ut8_t - - gmesge_ngth -; - -442 i( - gda -[2] < 0xF0) { - -444 - gty_id - = -da -[2]; - -445 - gmesge_da - = -da - + 4; - -446 - gmesge_ngth - = -ngth - - 4; - -449 -ut8_t - - gshi - = 0; - -450 i( - gda -[2] != 0xFF) { - -452 -shi - = ( -da -[4] != 0xFF) ? 2 : 1; - -454 - gty_id - = ( -da -[4 + -shi -] << 8) + data[5 + shift] + 256; - -455 - gmesge_da - = -da - + 6 + -shi -; - -456 - gmesge_ngth - = -ngth - - 6 - -shi -; - -460 i(( - gty_id - =0|| ( -mesge_ngth - == 0)) { - -461 #ifde -EMSESP_DEBUG - - -462 -LOG_DEBUG -( -F -("[DEBUG] Txegmy %d faed,gth %d"), -ty_id -, -mesge_ngth -); - -467 i( - gݔi - = -Tegm -:: -Oti -:: -TX_RAW -) { - -468 i( -de - & 0x80) { - -469 -ݔi - = -Tegm -:: -Oti -:: -TX_READ -; - -471 - gݔi - = -Tegm -:: -Oti -:: -TX_WRITE -; - -472 -t_po_nd_quy -( -ty_id -); - -474 - gEMSESP -:: -t_ad_id -( -ty_id -); - -477 aut - ggm - = -d -:: -make_shed -< -Tegm ->( -ݔi -, - gc -, - gde -, - gty_id -, - gofft -, - gmesge_da -, - gmesge_ngth -); - -480 i( - gtx_gms_ -. -size -(> -MAX_TX_TELEGRAMS -) { - -481 -tx_gms_ -. -p_t -(); - -484 #ifde -EMSESP_DEBUG - - -485 -LOG_DEBUG -( -F -("[DEBUG] New Tx [#%d]egm,gth %d"), -tx_gm_id_ -, -mesge_ngth -); - -488 i( - gt -) { - -489 - gtx_gms_ -. -ema_t -( -tx_gm_id_ -++, -d -:: -move -( -gm -), -l -); - -491 - gtx_gms_ -. -ema_back -( -tx_gm_id_ -++, -d -:: -move -( -gm -), -l -); - -496  - gTxSvi -:: -ad_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -, cڡ ut8_ -offt -) { - -497 -LOG_DEBUG -( -F -("Txdequedevi 0x%02X f܁y ID 0x%02X"), -de -, -ty_id -); - -499 -ut8_t - - gmesge_da -[1] = { -EMS_MAX_TELEGRAM_LENGTH -}; - -500 -add -( -Tegm -:: -Oti -:: -TX_READ -, -de -, -ty_id -, -offt -, -mesge_da -, 1); - -504  - gTxSvi -:: -nd_w -(cڡ * -gm_da -) { - -506  -gm -[ -EMS_MAX_TELEGRAM_LENGTH - * 3]; - -507  -ut8_t - - gi - = 0; i < - -( -gm_da -); i++) { - -508 - ggm -[ -i -] = -gm_da -[i]; - -510 - ggm -[ - -( -gm_da -)] = '\0'; - -512 -ut8_t - - gcou - = 0; - -513 * - gp -; - -514  - gvue -[10] = {0}; - -516 -ut8_t - - gda -[ -EMS_MAX_TELEGRAM_LENGTH -]; - -519 i(( - gp - = -ok -( -gm -, " ,"))) { - -520 -y -( -vue -, -p -, 10); - -521 - gda -[0] = ( -ut8_t -) - -( -vue -, 0, 16); - -525  - gp - != 0) { - -526 i(( -p - = -ok -( -nuαr -, " ,"))) { - -527 -y -( -vue -, -p -, 10); - -528 -ut8_t - - gv - = (ut8_t) - -( -vue -, 0, 16); - -529 - gda -[++ -cou -] = -v -; - -533 i( - gcou - == 0) { - -537 -add -( -Tegm -:: -Oti -:: -TX_RAW -, -da -, -cou - + 1, -ue -); - -542  - gTxSvi -:: -y_tx -(cڡ -ut8_t - -ݔi -, cڡ ut8_* -da -, cڡ ut8_ -ngth -) { - -544 i(++ - gy_cou_ - > - gMAXIMUM_TX_RETRIES -) { - -545 -t_y_cou -(); - -546 -emt_gm__cou -(); - -548 -LOG_ERROR -( -F -("Last Tx %s operation failedfter %detries. Ignoringequest."), - -549 ( -ݔi - = -Tegm -:: -Oti -:: -TX_WRITE -? -F -("Write") : F("Read"), - -550 -MAXIMUM_TX_RETRIES -); - -554 #ifde -EMSESP_DEBUG - - -555 -LOG_DEBUG -( -F -("[DEBUG] Last Tx %s operation failed. Retry #%d. sent message: %s,eceived: %s"), - -556 ( -ݔi - = -Tegm -:: -Oti -:: -TX_WRITE -? -F -("Write") : F("Read"), - -557 -y_cou_ -, - -558 -gm_ϡ_ --> -to_rg -(). -c_r -(), - -559 -Hrs -:: -da_to_hex -( -da -, -ngth -). -c_r -()); - -563 i( - gtx_gms_ -. -size -(> -MAX_TX_TELEGRAMS -) { - -564 -tx_gms_ -. -p_back -(); - -567 - gtx_gms_ -. -ema_t -( -tx_gm_id_ -++, -d -:: -move -( -gm_ϡ_ -), -ue -); - -575 -bo - - gTxSvi -:: -is_ϡ_tx -(cڡ -ut8_t - -c -, cڡ ut8_ -de -) const { - -576  ((( - ggm_ϡ_ --> - gde - & 0x7F=( -c - & 0x7F)&& (( -de - & 0x7F= -ems_bus_id -())); - -581 -ut16_t - - gTxSvi -:: -po_nd_quy -() { - -582 -ut16_t - -po_tyid - = -this --> -g_po_nd_quy -(); - -584 i( - gpo_tyid -) { - -585 -ut8_t - - gde - = ( -this --> -gm_ϡ_ --> -de - & 0x7F); - -587 -ut8_t - - gofft - = ( -this --> -gm_ϡ_ --> -ty_id - = -po_tyid -? (his->gm_ϡ_-> -offt - / 26) * 26) : 0; - -588 -ut8_t - - gmesge_da -[1] = { -EMS_MAX_TELEGRAM_LENGTH -}; - -589 - gthis --> -add -( -Tegm -:: -Oti -:: -TX_READ -, -de -, -po_tyid -, -offt -, -mesge_da -, 1, -ue -); - -591 -LOG_DEBUG -( -F -("Sdgo vidad,y ID 0x%02Xde 0x%02X"), -po_tyid -, -de -); - -592 -t_po_nd_quy -(0); - -595  - gpo_tyid -; - - @src/telegram.h - -19 #ide -EMSESP_TELEGRAM_H - - -20  - #EMSESP_TELEGRAM_H - - - ) - -22  - ~ - -23  - ~
  • - -26 #i -defed -( -ESP8266 -) - -27  - ~"ut/emsut_e8266.h -" - -28 #i -defed -( -ESP32 -) - -29  - ~"ut/emsut_e32.h -" - -30 #i -defed -( -EMSESP_STANDALONE -) - -31  - ~ - -34  - ~ - -36  - ~"hrs.h -" - -39  -cڡex - -ut8_t - - gEMS_VALUE_BOOL - = 0xFF; - -40  -cڡex - -ut8_t - - gEMS_VALUE_BOOL_OFF - = 0x00; - -41  -cڡex - -ut8_t - - gEMS_VALUE_BOOL_ON - = 0x01; - -43  -cڡex - -ut8_t - - gEMS_VALUE_BOOL_NOTSET - = 0xFE; - -44  -cڡex - -ut8_t - - gEMS_VALUE_UINT_NOTSET - = 0xFF; - -45  -cڡex - -t8_t - - gEMS_VALUE_INT_NOTSET - = 0x7F; - -46  -cڡex - -ut16_t - - gEMS_VALUE_USHORT_NOTSET - = 0x7D00; - -47  -cڡex - -t16_t - - gEMS_VALUE_SHORT_NOTSET - = 0x7D00; - -48  -cڡex - -ut32_t - - gEMS_VALUE_ULONG_NOTSET - = 0xFFFFFFFF; - -50  -cڡex - -ut8_t - - gEMS_MAX_TELEGRAM_LENGTH - = 32; - -51  -cڡex - -ut8_t - - gEMS_MAX_TELEGRAM_MESSAGE_LENGTH - = 27; - -53 -mea - - gem - { - -55 as - cTegm - { - -56 - gpublic -: - -57 -Tegm -(cڡ -ut8_t - -ݔi -, - -58 cڡ -ut8_t - -c -, - -59 cڡ -ut8_t - -de -, - -60 cڡ -ut16_t - -ty_id -, - -61 cڡ -ut8_t - -offt -, - -62 cڡ -ut8_t - * -mesge_da -, - -63 cڡ -ut8_t - -mesge_ngth -); - -64 ~ -Tegm -() = ; - -66 cڡ -ut8_t - - gݔi -; - -67 cڡ -ut8_t - - gc -; - -68 cڡ -ut8_t - - gde -; - -69 cڡ -ut16_t - - gty_id -; - -70 cڡ -ut8_t - - gofft -; - -71 cڡ -ut8_t - - gmesge_ngth -; - -72 -ut8_t - - gmesge_da -[ -EMS_MAX_TELEGRAM_MESSAGE_LENGTH -]; - -74 - gOti - : -ut8_t - { - -75 -NONE - = 0, - -76 - gRX -, - -77 - gTX_RAW -, - -78 - gTX_READ -, - -79 - gTX_WRITE -, - -82 - gd -:: -rg - -to_rg_mesge -() const; - -83 - gd -:: -rg - -to_rg -() const; - -86 -bo - -ad_bvue -( -ut8_t - & -vue -, cڡ ut8_ -dex -, cڡ ut8_ -b -) const { - -87 -ut8_t - - gabs_dex - = ( -dex - - -this --> -offt -); - -88 i( - gabs_dex - > -this --> -mesge_ngth -) { - -89  -l -; - -91 -ut8_t - - gv - = -vue -; - -92 - gvue - = ( -ut8_t -)((( -this --> -mesge_da -[ -abs_dex -]>> ( -b -)) & 0x01); - -93 i( - gv - ! -vue -) { - -94  -ue -; - -96  - gl -; - -100 - gme - < -tyme - - gVue -> - -106 -bo - -ad_vue -( -Vue - & -vue -, cڡ -ut8_t - -dex -, ut8_ -s - = 0) const { - -107 -ut8_t - -num_bys - = (! -s -? ( -Vue -) : s; - -109 i(( - gdex - < - gthis --> - gofft -|| ((dex -his->off+ - gnum_bys - - 1> -this --> -mesge_ngth -)) { - -110  -l -; - -112 aut - gv - = -vue -; - -113 - gvue - = 0; - -114  -ut8_t - - gi - = 0; i < - gnum_bys -; i++) { - -115 - gvue - = ( -vue - << 8+ -this --> -mesge_da -[ -dex - -his-> -offt - + -i -]; - -117 i( - gv - ! -vue -) { - -118  -ue -; - -120  - gl -; - -123 - give -: - -124 -t8_t - -_gDaPosi -(cڡ -ut8_t - -dex -, cڡ ut8_ -size -) const; - -127 as - cEMSbus - { - -128 - gpublic -: - -129  -uuid -:: -log -:: -Logg - -logg_ -; - -131  -cڡex - -ut8_t - - gEMS_MASK_UNSET - = 0xFF; - -132  -cڡex - -ut8_t - - gEMS_MASK_HT3 - = 0x80; - -133  -cڡex - -ut8_t - - gEMS_MASK_BUDERUS - = 0xFF; - -134  -cڡex - -ut8_t - - gEMS_TX_ERROR_LIMIT - = 10; - -136  -bo - -is_ht3 -() { - -137  ( - gems_mask_ - = -EMS_MASK_HT3 -); - -140  -ut8_t - -ems_mask -() { - -141  - gems_mask_ -; - -144  -ems_mask -( -ut8_t -ms_mask) { - -145 - gems_mask_ - = -ems_mask - & 0x80; - -148  -ut8_t - -tx_mode -() { - -149  - gtx_mode_ -; - -152  -tx_mode -( -ut8_t -x_mode) { - -153 - gtx_mode_ - = -tx_mode -; - -156  -ut8_t - -ems_bus_id -() { - -157  - gems_bus_id_ -; - -160  -ems_bus_id -( -ut8_t -ms_bus_id) { - -161 - gems_bus_id_ - = -ems_bus_id -; - -164  -bo - -bus_ced -() { - -165 #ide -EMSESP_STANDALONE - - -166 i(( - guuid -:: -g_uime -(- -ϡ_bus_aivy_ -> -EMS_BUS_TIMEOUT -) { - -167 -bus_ced_ - = -l -; - -169  - gbus_ced_ -; - -171  - gue -; - -176  -ϡ_bus_aivy -( -ut32_t - -timeamp -) { - -177 - gϡ_bus_aivy_ - = -timeamp -; - -178 - gbus_ced_ - = -ue -; - -181  -ut8_t - -tx_e -() { - -182  - gtx_e_ -; - -184  -tx_e -( -ut8_t -x_state) { - -185 - gtx_e_ - = -tx_e -; - -188  -ut8_t - -lcuϋ_c -(cڡ ut8_* -da -, cڡ ut8_ -ngth -); - -190 - give -: - -191  -cڡex - -ut32_t - -EMS_BUS_TIMEOUT - = 30000; - -192  -ut32_t - - gϡ_bus_aivy_ -; - -193  -bo - - gbus_ced_ -; - -194  -ut8_t - - gems_mask_ -; - -195  -ut8_t - - gems_bus_id_ -; - -196  -ut8_t - - gtx_mode_ -; - -197  -ut8_t - - gtx_e_ -; - -200 as - cRxSvi - : -public - -EMSbus - { - -201  -cڡex - -size_t - -MAX_RX_TELEGRAMS - = 10; - -203 - gpublic -: - -204 -RxSvi -() = ; - -205 ~ -RxSvi -() = ; - -207  -lo -(); - -208  -add -( -ut8_t - * -da -, ut8_ -ngth -); - -210 -ut32_t - -gm_cou -() const { - -211  - ggm_cou_ -; - -214  -emt_gm_cou -() { - -215 - ggm_cou_ -++; - -218 -ut32_t - -gm_r_cou -() const { - -219  - ggm_r_cou_ -; - -222  -emt_gm_r_cou -() { - -223 - ggm_r_cou_ -++; - -226 as - cQueuedRxTegm - { - -227 - gpublic -: - -228 cڡ -ut16_t - -id_ -; - -229 cڡ - gd -:: -shed_r - -gm_ -; - -231 ~ -QueuedRxTegm -() = ; - -232 -QueuedRxTegm -( -ut16_t - -id -, -d -:: -shed_r -< -Tegm -> && -gm -) - -233 : -id_ -( -id -) - -234 , -gm_ -( -d -:: -move -( -gm -)) { - -238 cڡ - gd -:: -li -< -QueuedRxTegm -> -queue -() const { - -239  -rx_gms_ -; - -242 - give -: - -243 -ut8_t - -rx_gm_id_ - = 0; - -244 -ut32_t - - ggm_cou_ - = 0; - -245 -ut32_t - - ggm_r_cou_ - = 0; - -246 - gd -:: -shed_r - -rx_gm -; - -247 - gd -:: -li -< -QueuedRxTegm -> -rx_gms_ -; - -250 as - cTxSvi - : -public - -EMSbus - { - -251 -public -: - -252  -cڡex - -size_t - -MAX_TX_TELEGRAMS - = 20; - -253  -cڡex - -ut8_t - - gTX_WRITE_FAIL - = 4; - -254  -cڡex - -ut8_t - - gTX_WRITE_SUCCESS - = 1; - -256 -TxSvi -() = ; - -257 ~ -TxSvi -() = ; - -259  -t -(); - -260  -nd -(); - -261  -add -(cڡ -ut8_t - -ݔi -, - -262 cڡ -ut8_t - -de -, - -263 cڡ -ut16_t - -ty_id -, - -264 cڡ -ut8_t - -offt -, - -265 -ut8_t - * -mesge_da -, - -266 cڡ -ut8_t - -mesge_ngth -, - -267 cڡ -bo - -t - = -l -); - -268  -add -(cڡ -ut8_t - -ݔi -, cڡ ut8_* -da -, cڡ ut8_ -ngth -, cڡ -bo - -t - = -l -); - -269  -ad_que -(cڡ -ut16_t - -ty_id -, cڡ -ut8_t - -de -, cڡ ut8_ -offt - = 0); - -270  -nd_w -(cڡ * -gm_da -); - -271  -nd_pl -(); - -272  -ush_tx_queue -(); - -273  -y_tx -(cڡ -ut8_t - -ݔi -, cڡ ut8_* -da -, cڡ ut8_ -ngth -); - -274 -bo - -is_ϡ_tx -(cڡ -ut8_t - -c -, cڡ ut8_ -de -) const; - -275 -ut16_t - -po_nd_quy -(); - -277 -ut8_t - -y_cou -() const { - -278  - gy_cou_ -; - -281  -t_y_cou -() { - -282 - gy_cou_ - = 0; - -285  -t_po_nd_quy -( -ut16_t - -ty_id -) { - -286 - ggm_ϡ_po_nd_quy_ - = -ty_id -; - -289 -ut16_t - -g_po_nd_quy -() { - -290  - ggm_ϡ_po_nd_quy_ -; - -293 -ut32_t - -gm_ad_cou -() const { - -294  - ggm_ad_cou_ -; - -297  -gm_ad_cou -( -ut8_t -elegram_read_count) { - -298 - ggm_ad_cou_ - = -gm_ad_cou -; - -301  -emt_gm_ad_cou -() { - -302 - ggm_ad_cou_ -++; - -305 -ut32_t - -gm__cou -() const { - -306  - ggm__cou_ -; - -309  -gm__cou -( -ut8_t -elegram_fail_count) { - -310 - ggm__cou_ - = -gm__cou -; - -313  -emt_gm__cou -() { - -314 - ggm__cou_ -++; - -317 -ut32_t - -gm_wre_cou -() const { - -318  - ggm_wre_cou_ -; - -321  -gm_wre_cou -( -ut8_t -elegram_write_count) { - -322 - ggm_wre_cou_ - = -gm_wre_cou -; - -325  -emt_gm_wre_cou -() { - -326 - ggm_wre_cou_ -++; - -329 as - cQueuedTxTegm - { - -330 - gpublic -: - -331 cڡ -ut16_t - -id_ -; - -332 cڡ - gd -:: -shed_r - -gm_ -; - -333 cڡ -bo - - gy_ -; - -335 ~ -QueuedTxTegm -() = ; - -336 -QueuedTxTegm -( -ut16_t - -id -, -d -:: -shed_r -< -Tegm -> && -gm -, -bo - -y -) - -337 : -id_ -( -id -) - -338 , -gm_ -( -d -:: -move -( -gm -)) - -339 , -y_ -( -y -) { - -343 cڡ - gd -:: -li -< -QueuedTxTegm -> -queue -() const { - -344  -tx_gms_ -; - -347 #i -defed -( -EMSESP_DEBUG -) - -348  -cڡex - -ut8_t - - gMAXIMUM_TX_RETRIES - = 0; - -350  -cڡex - -ut8_t - - gMAXIMUM_TX_RETRIES - = 3; - -353 - give -: - -354 -d -:: -li -< -QueuedTxTegm -> -tx_gms_ -; - -356 -ut32_t - - ggm_ad_cou_ - = 0; - -357 -ut32_t - - ggm_wre_cou_ - = 0; - -358 -ut32_t - - ggm__cou_ - = 0; - -360 - gd -:: -shed_r -< -Tegm -> -gm_ϡ_ -; - -361 -ut16_t - - ggm_ϡ_po_nd_quy_ -; - -362 -ut8_t - - gy_cou_ - = 0; - -364 -ut8_t - - gtx_gm_id_ - = 0; - -366  -nd_gm -(cڡ -QueuedTxTegm - & -tx_gm -); - -367  -nd_gm -(cڡ -ut8_t - * -da -, cڡ ut8_ -ngth -); - - @src/test/test.cpp - -21 #i -defed -( -EMSESP_DEBUG -) - -23  - ~".h -" - -25 -mea - - gem - { - -29  - gTe -:: -run_ -( -uuid -:: -cse -:: -Shl - & -shl -, cڡ -d -:: -rg - & -commd -) { - -30 i( -commd - == "default") { - -31 -run_ -( -shl -, "mqtt"); - -34 i( - gcommd -. -emy -()) { - -35 -run_ -( -shl -, "default"); - -38 i( - gcommd - == "render") { - -39 -ut8_t - -1 - = 12; - -40 -t8_t - - g2 - = -12; - -41 -ut16_t - - g3 - = 456; - -42 -t16_t - - g4 - = -456; - -43 -ut8_t - - g5 - = 1; - -44 -ut32_t - - g6 - = 305419896; - -45  - g7 - = 89.43; - -47 -ut8_t - - g1u - = -EMS_VALUE_UINT_NOTSET -; - -48 -t8_t - - g2u - = -EMS_VALUE_INT_NOTSET -; - -50 -ut8_t - - g5u - = -EMS_VALUE_BOOL_NOTSET -; - -51 -ut32_t - - g6u - = -EMS_VALUE_ULONG_NOTSET -; - -53 -ut16_t - - g3u - = -EMS_VALUE_USHORT_NOTSET -; - -54 -t16_t - - g4u - = -EMS_VALUE_SHORT_NOTSET -; - -56 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu1"), -1 -, -F_ -( -deges -)); - -57 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu2"), -2 -, -F_ -( -deges -)); - -58 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu3"), -3 -, -F_ -( -deges -), 10); - -59 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu4"), -4 -, -F_ -( -deges -), 10); - -60 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu5"), -5 -, -nuαr -, -EMS_VALUE_BOOL -); - -61 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu6"), -6 -, -F_ -( -deges -)); - -62 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu7"), -7 -, -F_ -( -deges -), 2); - -63 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Warm Water comfort setting"), F("Intelligent")); - -64  - gs -[100]; - -65 -ry -( -s -, "Not very intelligent"); - -66 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Wm W comf܈g2"), -s -); - -68 - gshl -. -n -(); - -70 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu1u"), -1u -, -F_ -( -deges -)); - -71 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu2u"), -2u -, -F_ -( -deges -)); - -72 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu3u"), -3u -, -F_ -( -deges -), 10); - -73 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu4u"), -4u -, -F_ -( -deges -), 10); - -74 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu5u"), -5u -, -F_ -( -deges -), -EMS_VALUE_BOOL -); - -75 - gEMSdevi -:: -t_vue -( -shl -, 2, -F -("Seed flowemtu6u"), -6u -, -F_ -( -deges -), 100); - -77 - gshl -. -n -(); - -80 -ut8_t - - gmesge_da -[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; - -81 aut - ggm - = -d -:: -make_shed -< -Tegm ->(Tegm:: -Oti -:: -RX -, 0x10, 0x11, 0x1234, 0, - gmesge_da -, (message_data)); - -83 -ut8_t - - gut8b - = -EMS_VALUE_UINT_NOTSET -; - -84 - ggm --> -ad_vue -( -ut8b -, 0); - -85 - gshl -. -tn -("ut8:xg %02X, g:%02X", 1, -ut8b -); - -87 -t8_t - - gt8b - = -EMS_VALUE_INT_NOTSET -; - -88 - ggm --> -ad_vue -( -t8b -, 0); - -89 - gshl -. -tn -("t8:xg %02X, g:%02X", 1, -t8b -); - -91 -ut16_t - - gut16b - = -EMS_VALUE_USHORT_NOTSET -; - -92 - ggm --> -ad_vue -( -ut16b -, 1); - -93 - gshl -. -tn -("ut16:xg %02X, g:%02X", 0x0203, -ut16b -); - -95 -t16_t - - gt16b - = -EMS_VALUE_SHORT_NOTSET -; - -96 - ggm --> -ad_vue -( -t16b -, 1); - -97 - gshl -. -tn -("t16:xg %02X, g:%02X", 0x0203, -t16b -); - -99 -t16_t - - gt16b8 - = -EMS_VALUE_SHORT_NOTSET -; - -100 - ggm --> -ad_vue -( -t16b8 -, 1, 1); - -101 - gshl -. -tn -("t16 1 by:xg %02X, g:%02X", 0x02, -t16b8 -); - -103 -ut32_t - - gut32b - = -EMS_VALUE_ULONG_NOTSET -; - -104 - ggm --> -ad_vue -( -ut32b -, 1, 3); - -105 - gshl -. -tn -("ut32 3 bys:xg %02X, g:%02X", 0x020304, -ut32b -); - -107 - gut32b - = -EMS_VALUE_ULONG_NOTSET -; - -108 - ggm --> -ad_vue -( -ut32b -, 1); - -109 - gshl -. -tn -("ut32 4 bys:xg %02X, g:%02X", 0x02030405, -ut32b -); - -112 -ut16_t - - gut16 - = -EMS_VALUE_USHORT_NOTSET -; - -113 - ggm --> -ad_vue -( -ut16 -, 9); - -114 - gshl -. -tn -("ut16 out-of-bounds: was:%02X,ew:%02X", -EMS_VALUE_USHORT_NOTSET -, -ut16 -); - -115 -ut8_t - - gut8oob - = -EMS_VALUE_UINT_NOTSET -; - -116 - ggm --> -ad_vue -( -ut8oob -, 9); - -117 - gshl -. -tn -("ut8 out-of-bounds: was:%02X,ew:%02X", -EMS_VALUE_UINT_NOTSET -, -ut8oob -); - -120 -ut8_t - - gut8bb - = -EMS_VALUE_UINT_NOTSET -; - -121 - ggm --> -ad_bvue -( -ut8bb -, 1, 1); - -122 - gshl -. -tn -("ut8 bd:xg 1, g:%d", -ut8bb -); - -123 - gut8bb - = -EMS_VALUE_UINT_NOTSET -; - -124 - ggm --> -ad_bvue -( -ut8bb -, 0, 0); - -125 - gshl -. -tn -("ut8 bd:xg 1, g:%d", -ut8bb -); - -128 i( - gcommd - == "devices") { - -129 -EMSESP -:: -rxrvi_ -. -ems_mask -( -EMSbus -:: -EMS_MASK_BUDERUS -); - -134 -rx_gm -({0x08, 0x00, 0x07, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); - -137 i( - gcommd - == "boiler") { - -139 -d -:: -rg - -vsi -("1.2.3"); - -140 - gEMSESP -:: -add_devi -(0x08, 123, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -143 -ut_gm -({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); - -147 i(( - gcommd - ="unknown"|| ( -commd - == "u")) { - -149 -d -:: -rg - -vsi -("1.2.3"); - -152 - gEMSESP -:: -add_devi -(0x08, 84, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -155 - gEMSESP -:: -add_devi -(0x09, 84, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -159 -rx_gm -({0x09, 0x0B, 0x02, 0x00, 0x59, 0x09, 0x0a}); - -161 - gEMSESP -:: -show_devi_vues -( -shl -); - -164 i( - gcommd - == "unknown2") { - -166 -rx_gm -({0x09, 0x0B, 0x02, 0x00, 0x5A, 0x01, 0x02}); - -169 i( - gcommd - == "gateway") { - -171 -rx_gm -({0x48, 0x0B, 0x02, 0x00, 0xBD, 0x04, 0x06, 00, 00, 00, 00, 00, 00, 00}); - -175 -rx_gm -({0x08, 0x00, 0x07, 0x00, 0x09, 01, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00}); - -178 - gd -:: -rg - -vsi -("01.03"); - -179 - gEMSESP -:: -add_devi -(0x10, 158, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -183 -rx_gm -({0x10, 0x48, 0xFF, 00, 01, 0x6B, 00, 0x6B, 0x08, 0x4F, 00, 00, 00, 02, 00, 00, 00, 02, 00, 03, 00, 03, 00, 03}); - -186 i( - gcommd - == "general") { - -187 -shl -. -tn -( -F -("Testingdding boiler &hermostat...")); - -189 - gd -:: -rg - -vsi -("1.2.3"); - -190 - gEMSESP -:: -add_devi -(0x08, 123, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -191 - gEMSESP -:: -add_devi -(0x18, 157, -vsi -, -EMSdevi -:: -Bnd -:: -BOSCH -); - -195 -ut_gm -({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, - -199 -ut_gm -({0x08, 0x98, 0x33, 0x00, 0x23, 0x24}); - -202 -ut_gm -({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); - -205 -ut_gm -({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, - -208 - gshl -. -voke_commd -("show"); - -213 i( - gcommd - == "thermostat") { - -214 -shl -. -tn -( -F -("Testingddinghermostatohe EMS bus...")); - -223 - gd -:: -rg - -vsi -("1.2.3"); - -229 - gEMSESP -:: -add_devi -(0x10, 192, -vsi -, -EMSdevi -:: -Bnd -:: -JUNKERS -); - -232 -ut_gm -({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, - -236 -ut_gm -({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x00, 0xCF, 0x22, 0x2F, 0x10, 0x00, 0x2E, 0x24, - -240 -ut_gm -({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); - -243 i( - gcommd - == "tc100") { - -244 -shl -. -tn -( -F -("Testingdding TC100hermostatohe EMS bus...")); - -246 - gd -:: -rg - -vsi -("02.21"); - -252 - gEMSESP -:: -add_devi -(0x18, 202, -vsi -, -EMSdevi -:: -Bnd -:: -BOSCH -); - -255 -ut_gm -({0x98, 0x0B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - -259 i( - gcommd - == "solar") { - -260 -shl -. -tn -( -F -("Testing Solar")); - -262 - gEMSESP -:: -rxrvi_ -. -ems_mask -( -EMSbus -:: -EMS_MASK_BUDERUS -); - -264 - gd -:: -rg - -vsi -("1.2.3"); - -265 - gEMSESP -:: -add_devi -(0x30, 163, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -269 -rx_gm -({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, - -271 - gEMSESP -:: -show_devi_vues -( -shl -); - -273 -rx_gm -({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, - -275 - gEMSESP -:: -show_devi_vues -( -shl -); - -277 -rx_gm -({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); - -278 - gEMSESP -:: -show_devi_vues -( -shl -); - -280 - gEMSESP -:: -nd_w_gm -("B0 00 FF 18 02 62 80 00 B8"); - -282 -ut_gm -("30 00 FF 0A 02 6A 04"); - -283 -ut_gm -("30 00 FF 00 02 64 00 00 00 04 00 00 FF 00 00 1E 0B 09 64 00 00 00 00"); - -285 - gEMSESP -:: -show_devi_vues -( -shl -); - -287 -ut_gm -("30 00 FF 0A 02 6A 03"); - -289 - gEMSESP -:: -show_devi_vues -( -shl -); - -292 i( - gcommd - == "solar200") { - -293 -shl -. -tn -( -F -("Testing Solar SM200")); - -295 - gEMSESP -:: -rxrvi_ -. -ems_mask -( -EMSbus -:: -EMS_MASK_BUDERUS -); - -297 - gd -:: -rg - -vsi -("1.2.3"); - -298 - gEMSESP -:: -add_devi -(0x30, 164, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -302 -rx_gm -({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, - -304 - gEMSESP -:: -show_devi_vues -( -shl -); - -306 -rx_gm -({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, - -308 - gEMSESP -:: -show_devi_vues -( -shl -); - -310 -rx_gm -({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); - -311 - gEMSESP -:: -show_devi_vues -( -shl -); - -313 - gEMSESP -:: -nd_w_gm -("B0 00 FF 18 02 62 80 00 B8"); - -315 -ut_gm -("30 00 FF 0A 02 6A 04"); - -316 -ut_gm -("30 00 FF 00 02 64 00 00 00 04 00 00 FF 00 00 1E 0B 09 64 00 00 00 00"); - -318 - gEMSESP -:: -show_devi_vues -( -shl -); - -320 -ut_gm -("30 00 FF 0A 02 6A 03"); - -322 - gEMSESP -:: -show_devi_vues -( -shl -); - -325 i( - gcommd - == "km") { - -326 -shl -. -tn -( -F -("Testing KM200 Gateway")); - -328 - gem -:: -EMSESP -:: -wch -(EMSESP:: -Wch -:: -WATCH_RAW -); - -330 - gEMSESP -:: -rxrvi_ -. -ems_mask -( -EMSbus -:: -EMS_MASK_BUDERUS -); - -332 - gd -:: -rg - -vsi -("1.2.3"); - -333 - gEMSESP -:: -add_devi -(0x10, 158, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -334 - gEMSESP -:: -add_devi -(0x48, 189, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -378 -ut_gm_whCRC -("C8 90 F7 02 01 FF 01 A6 BA"); - -380 -ut_gm_whCRC -("90 48 FF 04 01 A6 5C"); - -381 -ut_gm_whCRC -("90 00 FF 00 01 A5 80 00 01 27 16 00 27 2A 05 A0 02 03 03 05 A0 05 A0 00 00 11 01 02 FF FF 00 9A"); - -382 -ut_gm_whCRC -("90 00 FF 19 01 A5 01 04 00 00 00 00 FF 64 2A 00 3C 01 FF 92"); - -383 -ut_gm_whCRC -("90 0B FF 00 01 A5 80 00 01 26 15 00 26 2A 05 A0 03 03 03 05 A0 05 A0 00 00 11 01 03 FF FF 00 FE"); - -384 -ut_gm_whCRC -("90 00 FF 19 01 A5 01 04 00 00 00 00 FF 64 2A 00 3C 01 FF 92"); - -386 - gEMSESP -:: -show_ems -( -shl -); - -387 - gEMSESP -:: -show_devi_vues -( -shl -); - -390 i( - gcommd - == "cr100") { - -391 -shl -. -tn -( -F -("Testing CR100")); - -393 - gem -:: -EMSESP -:: -wch -(EMSESP:: -Wch -:: -WATCH_RAW -); - -395 - gEMSESP -:: -rxrvi_ -. -ems_mask -( -EMSbus -:: -EMS_MASK_HT3 -); - -397 - gd -:: -rg - -vsi -("1.2.3"); - -398 - gEMSESP -:: -add_devi -(0x18, 157, -vsi -, -EMSdevi -:: -Bnd -:: -BOSCH -); - -402 -ut_gm -({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, - -405 -ut_gm -("98 00 FF 00 01 A5 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03"); - -406 -ut_gm_whCRC -("98 00 FF 00 01 A6 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03 6B"); - -408 - gEMSESP -:: -txrvi_ -. -ush_tx_queue -(); - -409 - gshl -. -lo_l -(); - -410 - gEMSESP -:: -show_devi_vues -( -shl -); - -412 - gshl -. -voke_commd -("thermostat"); - -413 - gshl -. -lo_l -(); - -416 - gshl -. -voke_commd -("set modeuto"); - -418 - gshl -. -lo_l -(); - -419 - gEMSESP -:: -show_ems -( -shl -); - -420 - gshl -. -lo_l -(); - -422 - gEMSESP -:: -txrvi_ -. -nd -(); - -425 i( - gcommd - == "rx2") { - -426 -shl -. -tn -( -F -("Testing Rx2...")); - -427  -ut8_t - - gi - = 0; i < 30; i++) { - -428 -ut_gm -({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); - -432 i( - gcommd - == "rx") { - -433 -shl -. -tn -( -F -("Testing Rx...")); - -437 -ut_gm -({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, - -441 -ut_gm -({0x08, 0x97, 0x33, 0x00, 0x23, 0x24}); - -444 -ut_gm -({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); - -447 -ut_gm -({0x17, 0x0B, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47}); - -450 -ut8_t - - gt5 -[] = {0x17, 0x0B, 0x91, 0x05, 0x44, 0x45, 0x46, 0x47, 0x99}; - -451 - gEMSESP -:: -rxrvi_ -. -add -( -t5 -, (t5)); - -454 -ut_gm -({0x0B, 0x88, 0x07, 0x00, 0x20}); - -457 -ut_gm -({0x08, 0x0B, 0x02, 0x00, 0x7B, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04}); - -460 -ut_gm -({0x11, 0x0B, 0x02, 0x00, 0x4D, 0x03, 0x03}); - -464 -ut_gm -({0x10, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xD7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x84, - -468 -ut_gm -({0x10, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xC7, 0x21, 0x00, 0x00, 0x00, 0x00, 0x30, 0x01, 0x84, - -472 -ut_gm -({0x17, 0x08, 0x35, 0x00, 0x11, 0x00}); - -475 -ut_gm -({0x17, 0x08, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00}); - -478 -ut_gm -({0x17, 0x0B, 0xA8, 0x00, 0x01, 0x00, 0xFF, 0xF6, 0x01, 0x06, 0x00, 0x01, 0x0D, 0x01, 0x00, 0xFF, - -482 -ut_gm -( - -486 -ut_gm -({0x88, 00, 0x2A, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0xD2, 00, 00, 0x80, 00, 00, 01, 0x9D, 0x80, 0x00, 0x02, 0x79, 00}); - -489 i( - gcommd - == "send") { - -490 -shl -. -tn -( -F -("Sendingo Tx...")); - -491 - gEMSESP -:: -show_ems -( -shl -); - -492 - gEMSESP -:: -txrvi_ -. -nd -(); - -495 i( - gcommd - == "tx") { - -496 -shl -. -tn -( -F -("Testing Tx...")); - -498 - gEMSESP -:: -txrvi_ -. -ush_tx_queue -(); - -501 -ut8_t - - gt11 -[] = {0x44, 0x45, 0x46, 0x47}; - -502 - gEMSESP -:: -txrvi_ -. -add -( -Tegm -:: -Oti -:: -TX_RAW -, 0x17, 0x91, 0x05, -t11 -, (t11)); - -505 -ut8_t - - gt12 -[] = {0x10, 0x08, 0x63, 0x04, 0x64}; - -506 - gEMSESP -:: -txrvi_ -. -add -( -Tegm -:: -Oti -:: -TX_RAW -, -t12 -, (t12)); - -509 - gEMSESP -:: -txrvi_ -. -nd_w -("10 08 63 03 64 65 66"); - -512 - gEMSESP -:: -nd_ad_que -(0x18, 0x08); - -515 -ut8_t - - gt18 -[] = {0x52, 0x79}; - -516 - gEMSESP -:: -nd_wre_que -(0x91, 0x17, 0x00, -t18 -, (t18), 0x00); - -519 cڡ -ut8_t - - gt13 -[] = {0x90, 0x0B, 0xFF, 00, 01, 0xBA, 00, 0x2E, 0x2A, 0x26, 0x1E, 0x03, - -521 - gEMSESP -:: -txrvi_ -. -add -( -Tegm -:: -Oti -:: -TX_RAW -, -t13 -, (t13)); - -524 - gEMSESP -:: -nd_ad_que -(0x16F, 0x10); - -526 - gEMSESP -:: -show_ems -( -shl -); - -529  -ut8_t - - gi - = 0; i < 10; i++) { - -530 - gEMSESP -:: -txrvi_ -. -nd -(); - -533 - gshl -. -lo_l -(); - -535 - gEMSESP -:: -txrvi_ -. -ush_tx_queue -(); - -538 i( - gcommd - == "poll") { - -539 -shl -. -tn -( -F -("Testing Poll...")); - -542 - gEMSESP -:: -txrvi_ -. -ush_tx_queue -(); - -547 - gEMSESP -:: -nd_ad_que -(0x91, 0x17); - -551 -ut8_t - - gpl -[1] = {0x8B}; - -552 - gEMSESP -:: -comg_gm -( -pl -, 1); - -555 -ut_gm -({0x17, 0x08, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A}); - -558 - gEMSESP -:: -comg_gm -( -pl -, 1); - -560 - gEMSESP -:: -show_ems -( -shl -); - -561 -ut8_t - - gt2 -[] = {0x21, 0x22}; - -562 - gEMSESP -:: -nd_wre_que -(0x91, 0x17, 0x00, -t2 -, (t2), 0); - -563 - gEMSESP -:: -show_ems -( -shl -); - -565 - gEMSESP -:: -txrvi_ -. -ush_tx_queue -(); - -568 i( - gcommd - == "pin") { - -569 -shl -. -tn -( -F -("Testingin...")); - -571 - gEMSESP -:: -add_cڋxt_mus -(); - -572 - gshl -. -voke_commd -("su"); - -573 - gshl -. -voke_commd -("system"); - -574 - gshl -. -voke_commd -("help"); - -575 - gshl -. -voke_commd -("pin"); - -576 - gshl -. -voke_commd -("pin 1rue"); - -579 i( - gcommd - == "mqtt") { - -580 -shl -. -tn -( -F -("Testing MQTT...")); - -584 - gd -:: -rg - -vsi -("1.2.3"); - -585 - gEMSESP -:: -add_devi -(0x08, 123, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -588 - gEMSESP -:: -add_devi -(0x18, 157, -vsi -, -EMSdevi -:: -Bnd -:: -BOSCH -); - -591 -ut_gm -({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, - -593 -ut_gm -("98 00 FF 00 01 A5 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03"); - -594 -ut_gm_whCRC -("98 00 FF 00 01 A5 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03 13"); - -596 - gshl -. -lo_l -(); - -598  - gbo_tic -[ -Mq -:: -MQTT_TOPIC_MAX_SIZE -]; - -599  - gthmo_tic -[ -Mq -:: -MQTT_TOPIC_MAX_SIZE -]; - -600  - gsyem_tic -[ -Mq -:: -MQTT_TOPIC_MAX_SIZE -]; - -603 - gEMSESP -:: -txrvi_ -. -ush_tx_queue -(); - -604 - gEMSESP -:: -EMSESP -:: -mq_ -. -publish -("boiler_cmd", "test me"); - -605 - gMq -:: -show_mq -( -shl -); - -607 -ry -( -bo_tic -, "ems-esp/boiler_cmd"); - -608 -ry -( -thmo_tic -, "ems-esp/thermostat_cmd"); - -609 -ry -( -syem_tic -, "ems-esp/saystem_cmd"); - -611 - gEMSESP -:: -mq_ -. -comg -( -bo_tic -, "12345"); - -612 - gEMSESP -:: -mq_ -. -comg -("bad_topic", "12345"); - -613 - gEMSESP -:: -mq_ -. -comg -( -bo_tic -, "{\"cmd\":\"garbage\",\"data\":22.52}"); - -614 - gEMSESP -:: -mq_ -. -comg -( -bo_tic -, "{\"cmd\":\"comfort\",\"data\":\"eco\"}"); - -615 - gEMSESP -:: -mq_ -. -comg -( -bo_tic -, "{\"cmd\":\"wwactivated\",\"data\":\"1\"}"); - -616 - gEMSESP -:: -mq_ -. -comg -( -bo_tic -, "{\"cmd\":\"wwactivated\",\"data\":1}"); - -617 - gEMSESP -:: -mq_ -. -comg -( -bo_tic -, "{\"cmd\":\"flowtemp\",\"data\":55}"); - -619 - gEMSESP -:: -mq_ -. -comg -( -syem_tic -, "{\"cmd\":\"send\",\"data\":\"01 02 03 04 05\"}"); - -620 - gEMSESP -:: -mq_ -. -comg -( -syem_tic -, "{\"cmd\":\"pin\",\"id\":12,\"data\":\"1\"}"); - -622 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"wwmode\",\"data\":\"auto\"}"); - -623 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"control\",\"data\":\"1\"}"); - -624 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"control\",\"data\":1}"); - -625 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"mode\",\"data\":\"auto\",\"id\":2}"); - -626 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"mode\",\"data\":\"auto\",\"hc\":2}"); - -627 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"temp\",\"data\":19.5,\"hc\":1}"); - -628 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"mode\",\"data\":\"auto\",\"hc\":\"2\"}"); - -629 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"temp\",\"data\":22.56}"); - -630 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"temp\",\"data\":22}"); - -631 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"temp\",\"data\":\"22.56\"}"); - -632 - gEMSESP -:: -mq_ -. -comg -( -thmo_tic -, "{\"cmd\":\"temp\",\"id\":2,\"data\":22}"); - -637 - gEMSESP -:: -add_cڋxt_mus -(); - -638 - gshl -. -voke_commd -("su"); - -639 - gshl -. -voke_commd -("thermostat"); - -640 - gshl -. -voke_commd -("help"); - -641 - gshl -. -voke_commd -("call"); - -642 - gshl -. -voke_commd -("call wwmode"); - -643 - gshl -. -voke_commd -("call modeuto 2"); - -644 - gshl -. -voke_commd -("callemp 22.56"); - -646 - gMq -:: -subsibe -(); - -647 - gMq -:: -show_mq -( -shl -); - -650 i( - gcommd - == "poll2") { - -651 -shl -. -tn -( -F -("Testing Tx Sendingast message on queue...")); - -653 - gEMSESP -:: -show_ems -( -shl -); - -655 -ut8_t - - gpl -[1] = {0x8B}; - -656 - gEMSESP -:: -comg_gm -( -pl -, 1); - -658 - gEMSESP -:: -show_ems -( -shl -); - -659 - gEMSESP -:: -txrvi_ -. -ush_tx_queue -(); - -662 i( - gcommd - == "rx2") { - -663 -ut_gm -({0x1B, 0x5B, 0xFD, 0x2D, 0x9E, 0x3A, 0xB6, 0xE5, 0x02, 0x20, 0x33, 0x30, 0x32, 0x3A, 0x20, 0x5B, - -668 i( - gcommd - == "rx3") { - -669 -ut_gm -({0x21, 0x0B, 0xFF, 0x00}); - -673 i( - gcommd - == "tx2") { - -674 -ut8_t - -t -[] = {0x0B, 0x88, 0x18, 0x00, 0x20, 0xD4}; - -675 - gEMSut -:: -sm -( -t -, (t)); - -679 i( - gcommd - == "offset") { - -681 -EMSESP -:: -txrvi_ -. -ad_que -(0x18, 0x08, 27); - -684 i( - gcommd - == "mixing") { - -685 -shl -. -tn -( -F -("Testing Mixing...")); - -687 - gEMSESP -:: -rxrvi_ -. -ems_mask -( -EMSbus -:: -EMS_MASK_BUDERUS -); - -689 - gd -:: -rg - -vsi -("1.2.3"); - -690 - gEMSESP -:: -add_devi -(0x28, 160, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -691 - gEMSESP -:: -add_devi -(0x29, 161, -vsi -, -EMSdevi -:: -Bnd -:: -BUDERUS -); - -693 - gEMSESP -:: -add_devi -(0x20, 160, -vsi -, -EMSdevi -:: -Bnd -:: -BOSCH -); - -696 -rx_gm -({0xA9, 0x00, 0xFF, 0x00, 0x02, 0x32, 0x02, 0x6C, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); - -699 -rx_gm -({0xA8, 0x00, 0xFF, 0x00, 0x02, 0x31, 0x02, 0x35, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); - -702 -rx_gm -({0xA0, 0x00, 0xFF, 0x00, 0x01, 0x55, 0x00, 0x1A}); - -706 - gEMSESP -:: -lo -(); - -710  - gTe -:: -rx_gm -(cڡ -d -:: -ve -< -ut8_t -> & -rx_da -) { - -711 -ut8_t - -n - = -rx_da -. -size -(); - -712 -ut8_t - - gda -[50]; - -713 -ut8_t - - gi - = 0; - -714  - gn ---) { - -715 - gda -[ -i -] = -rx_da -[i]; - -716 - gi -++; - -718 - gda -[ -i -] = -EMSESP -:: -rxrvi_ -. -lcuϋ_c -( -da -, i); - -719 - gEMSESP -:: -rxrvi_ -. -add -( -da -, -n - + 1); - -723  - gTe -:: -ut_gm -(cڡ -d -:: -ve -< -ut8_t -> & -rx_da -) { - -724 -ut8_t - -n - = -rx_da -. -size -(); - -725 -ut8_t - - gda -[50]; - -726 -ut8_t - - gi - = 0; - -727  - gn ---) { - -728 - gda -[ -i -] = -rx_da -[i]; - -729 - gi -++; - -731 - gda -[ -i -] = -EMSESP -:: -rxrvi_ -. -lcuϋ_c -( -da -, i); - -732 - gEMSESP -:: -comg_gm -( -da -, -i - + 1); - -733 - gEMSESP -:: -rxrvi_ -. -lo -(); - -737  - gTe -:: -ut_gm_whCRC -(cڡ * -rx_da -) { - -739  -gm -[( -EMS_MAX_TELEGRAM_LENGTH - * 3) + 1]; - -740  -ut8_t - - gi - = 0; i < - -( -rx_da -); i++) { - -741 - ggm -[ -i -] = -rx_da -[i]; - -743 - ggm -[ - -( -rx_da -)] = '\0'; - -745 -ut8_t - - gcou - = 0; - -746 * - gp -; - -747  - gvue -[10] = {0}; - -749 -ut8_t - - gda -[ -EMS_MAX_TELEGRAM_LENGTH -]; - -752 i(( - gp - = -ok -( -gm -, " ,"))) { - -753 -y -( -vue -, -p -, 10); - -754 - gda -[0] = ( -ut8_t -) - -( -vue -, 0, 16); - -758  - gp - != 0) { - -759 i(( -p - = -ok -( -nuαr -, " ,"))) { - -760 -y -( -vue -, -p -, 10); - -761 -ut8_t - - gv - = (ut8_t) - -( -vue -, 0, 16); - -762 - gda -[++ -cou -] = -v -; - -766 i( - gcou - == 0) { - -770 - gEMSESP -:: -comg_gm -( -da -, -cou - + 1); - -771 - gEMSESP -:: -rxrvi_ -. -lo -(); - -775  - gTe -:: -ut_gm -(cڡ * -rx_da -) { - -777  -gm -[( -EMS_MAX_TELEGRAM_LENGTH - * 3) + 1]; - -778  -ut8_t - - gi - = 0; i < - -( -rx_da -); i++) { - -779 - ggm -[ -i -] = -rx_da -[i]; - -781 - ggm -[ - -( -rx_da -)] = '\0'; - -783 -ut8_t - - gcou - = 0; - -784 * - gp -; - -785  - gvue -[10] = {0}; - -787 -ut8_t - - gda -[ -EMS_MAX_TELEGRAM_LENGTH -]; - -790 i(( - gp - = -ok -( -gm -, " ,"))) { - -791 -y -( -vue -, -p -, 10); - -792 - gda -[0] = ( -ut8_t -) - -( -vue -, 0, 16); - -796  - gp - != 0) { - -797 i(( -p - = -ok -( -nuαr -, " ,"))) { - -798 -y -( -vue -, -p -, 10); - -799 -ut8_t - - gv - = (ut8_t) - -( -vue -, 0, 16); - -800 - gda -[++ -cou -] = -v -; - -804 i( - gcou - == 0) { - -808 - gda -[ -cou - + 1] = -EMSESP -:: -rxrvi_ -. -lcuϋ_c -( -da -, count + 1); - -810 - gEMSESP -:: -comg_gm -( -da -, -cou - + 2); - -811 - gEMSESP -:: -rxrvi_ -. -lo -(); - -814 #agm -GCC - -dgnoic - -push - - -815 #agm -GCC - -dgnoic - -igned - "-Wunused-parameter" - -818 #agm -GCC - -dgnoic - -p - - - @src/test/test.h - -19 #i -defed -( -EMSESP_DEBUG -) - -21 #ide -EMSESP_TEST_H - - -22  - #EMSESP_TEST_H - - - ) - -24  - ~ - -26  - ~ - -27  - ~ - -29  - ~ - -30  - ~ - -31  - ~ - -33  - ~"emsdevi.h -" - -34  - ~"emsy.h -" - -35  - ~"gm.h -" - -36  - ~"mq.h -" - -37  - ~"em.h -" - -39 -mea - - gem - { - -41 as - cTe - { - -42 - gpublic -: - -43  -run_ -( -uuid -:: -cse -:: -Shl - & -shl -, cڡ -d -:: -rg - & -commd -); - -44  -dummy_mq_commds -(cڡ * -mesge -); - -45  -rx_gm -(cڡ -d -:: -ve -< -ut8_t -> & -da -); - -46  -ut_gm -(cڡ -d -:: -ve -< -ut8_t -> & -rx_da -); - -47  -ut_gm -(cڡ * -rx_da -); - -48  -ut_gm_whCRC -(cڡ * -rx_da -); - - @src/uart/emsuart_esp32.cpp - -23 #i -defed -( -ESP32 -) - -25  - ~"ut/emsut_e32.h -" - -27  - ~"em.h -" - -29 -mea - - gem - { - -31  -RgbufHd_t - - gbuf_hd - = -NULL -; - -32 -ptMUX_TYPE - - gmux - = -ptMUX_INITIALIZER_UNLOCKED -; - -33  -hw_tim_t - * - gtim - = -NULL -; - -34 -bo - - gdr_xt_rx - = -ue -; - -35 -ut8_t - - gtx_mode_ - = 0xFF; - -36 -ut8_t - - gemsTxBuf -[ -EMS_MAXBUFFERSIZE -]; - -37 -ut8_t - - gemsTxBufIdx - = 0; - -38 -ut8_t - - gemsTxBufL - = 0; - -39 -ut32_t - - gemsTxWa -; - -44  - gEMSut -:: -emsut_cvTask -(* - -) { - -46 -size_t - -em_size -; - -47 -ut8_t - * - ggm - = (ut8_*) -xRgbufrReive -( -buf_hd -, & -em_size -, -ptMAX_DELAY -); - -48 -ut8_t - - ggmSize - = -em_size -; - -49 i( - ggm -) { - -50 - gEMSESP -:: -comg_gm -( -gm -, -gmSize -); - -51 -vRgbufrRuIm -( -buf_hd -, (*) -gm -); - -59  -IRAM_ATTR - - gEMSut -:: -emsut_rx__hdr -(* - -) { - -60  -ut8_t - -rxbuf -[ -EMS_MAXBUFFERSIZE -]; - -61  -ut8_t - - gngth -; - -62 -ptENTER_CRITICAL -(& -mux -); - -63 i( - gEMS_UART -. - gt_ -. - gbrk_d -) { - -64 - gEMS_UART -. - gt_r -. - gbrk_d - = 1; - -65 - gngth - = 0; - -66  - gEMS_UART -. - gus -. - grxfifo_t -) { - -67 -ut8_t - - grx - = -EMS_UART -. -fifo -. -rw_by -; - -68 i( - gngth - < - gEMS_MAXBUFFERSIZE -) { - -69 - grxbuf -[ -ngth -++] = -rx -; - -71 - gdr_xt_rx - = -ue -; - -74 i((! - gdr_xt_rx -&& (( - gngth - =2|| ( -ngth - > 4))) { - -75  -baTy - = 0; - -76 -xRgbufrSdFromISR -( -buf_hd -, -rxbuf -, -ngth - - 1, & -baTy -); - -78 - gdr_xt_rx - = -l -; - -80 -ptEXIT_CRITICAL -(& -mux -); - -83  -IRAM_ATTR - - gEMSut -:: -emsut_tx_tim__hdr -() { - -84 i( -emsTxBufL - == 0) { - -87 -ptENTER_CRITICAL -(& -mux -); - -88 i( - gemsTxBufIdx - < - gemsTxBufL -) { - -89 - gEMS_UART -. - gfifo -. - grw_by - = -emsTxBuf -[ -emsTxBufIdx -]; - -90 i( - gemsTxBufIdx - == 1) { - -91 -timArmWre -( -tim -, -emsTxWa -, -ue -); - -93 } i( - gemsTxBufIdx - = -emsTxBufL -) { - -94 -EMS_UART -. -cf0 -. -txd_v - = 1; - -95 -timArmWre -( -tim -, -EMSUART_TX_BRK_TIMER -, -ue -); - -96 } i( - gemsTxBufIdx - = -emsTxBufL - + 1) { - -97 -EMS_UART -. -cf0 -. -txd_v - = 0; - -98 - gemsTxBufL - = 0; - -99 -timArmDib -( -tim -); - -101 - gemsTxBufIdx -++; - -102 -ptEXIT_CRITICAL -(& -mux -); - -108  - gEMSut -:: -t -(cڡ -ut8_t - -tx_mode -, cڡ ut8_ -rx_gpio -, cڡ ut8_ -tx_gpio -) { - -109 i( - gtx_mode_ - != 0xFF) { - -110 -tx_mode_ - = -tx_mode -; - -111 -t -(); - -114 - gtx_mode_ - = -tx_mode -; - -116 -ut_cfig_t - - gut_cfig - = { - -117 . -baud_ - = -EMSUART_BAUD -, - -118 . - gda_bs - = -UART_DATA_8_BITS -, - -119 . - gry - = -UART_PARITY_DISABLE -, - -120 . - g_bs - = -UART_STOP_BITS_1 -, - -121 . - gow_ - = -UART_HW_FLOWCTRL_DISABLE -, - -124 -ut_m_cfig -( -EMSUART_UART -, & -ut_cfig -); - -125 -ut_t_p -( -EMSUART_UART -, -tx_gpio -, -rx_gpio -, -UART_PIN_NO_CHANGE -, UART_PIN_NO_CHANGE); - -126 - gEMS_UART -. - gt_a -. - gv - = 0; - -127 - gEMS_UART -. - gt_r -. - gv - = 0xFFFFFFFF; - -128 - gEMS_UART -. - gid_cf -. - gtx_brk_num - = 10; - -129 - gEMS_UART -. - gid_cf -. - grx_id_thrhd - = 256; - -130 - gdr_xt_rx - = -ue -; - -131 - gbuf_hd - = -xRgbufrCe -(128, -RINGBUF_TYPE_NOSPLIT -); - -132 -ut_i_gi -( -EMSUART_UART -, -emsut_rx__hdr -, -NULL -, -ESP_INTR_FLAG_IRAM -, NULL); - -133 -xTaskCe -( -emsut_cvTask -, "emsut_cvTask", 2048, -NULL -, -cfigMAX_PRIORITIES - - 1, NULL); - -135 - gtim - = -timBeg -(0, 80, -ue -); - -136 -timAachIru -( -tim -, & -emsut_tx_tim__hdr -, -ue -); - -137 -t -(); - -143  - gEMSut -:: - -() { - -144 -EMS_UART -. -t_a -. -v - = 0; - -145 - gEMS_UART -. - gcf0 -. - gtxd_v - = 0; - -146 i( - gemsTxBufL - > 0) { - -147 -timArmDib -( -tim -); - -154  - gEMSut -:: -t -() { - -155 i( -EMS_UART -. -t_w -. -brk_d -) { - -156 -EMS_UART -. -t_r -. -brk_d - = 1; - -157 - gdr_xt_rx - = -ue -; - -159 - gEMS_UART -. - gt_a -. - gbrk_d - = 1; - -160 - gemsTxBufIdx - = 0; - -161 - gemsTxBufL - = 0; - -162 i( - gtx_mode_ - > 100) { - -163 - gemsTxWa - = -EMSUART_TX_BIT_TIME - * ( -tx_mode_ - - 90); - -165 - gemsTxWa - = -EMSUART_TX_BIT_TIME - * ( -tx_mode_ - + 10); - -167 i( - gtx_mode_ - = -EMS_TXMODE_NEW -) { - -168 -EMS_UART -. -cf0 -. -txd_brk - = 1; - -170 - gEMS_UART -. - gcf0 -. - gtxd_brk - = 0; - -177  - gEMSut -:: -nd_pl -(cڡ -ut8_t - -da -) { - -178 -sm -(& -da -, 1); - -186 -ut16_t - - gEMSut -:: -sm -(cڡ -ut8_t - * -buf -, cڡ ut8_ -n -) { - -187 i( - gn - =0 || -n - > -EMS_MAXBUFFERSIZE -) { - -188  -EMS_TX_STATUS_ERR -; - -191 i( - gtx_mode_ - > 5) { - -192  -ut8_t - - gi - = 0; i < - gn -; i++) { - -193 - gemsTxBuf -[ -i -] = -buf -[i]; - -195 - gemsTxBufIdx - = 0; - -196 - gemsTxBufL - = -n -; - -197 i( - gtx_mode_ - > 100 && - gn - > 1) { - -198 -timArmWre -( -tim -, -EMSUART_TX_WAIT_REPLY -, -ue -); - -200 -timArmWre -( -tim -, -emsTxWa -, -ue -); - -202 -timArmEb -( -tim -); - -203  - gEMS_TX_STATUS_OK -; - -206 i( - gtx_mode_ - = -EMS_TXMODE_NEW -) { - -207  -ut8_t - -i - = 0; - gi - < - gn -; i++) { - -208 - gEMS_UART -. - gfifo -. - grw_by - = -buf -[ -i -]; - -210  - gEMS_TX_STATUS_OK -; - -213 i( - gtx_mode_ - = -EMS_TXMODE_EMSPLUS -) { - -214  -ut8_t - -i - = 0; - gi - < - gn -; i++) { - -215 - gEMS_UART -. - gfifo -. - grw_by - = -buf -[ -i -]; - -216 -dayMiocds -( -EMSUART_TX_WAIT_PLUS -); - -218 - gEMS_UART -. - gcf0 -. - gtxd_v - = 1; - -219 -dayMiocds -( -EMSUART_TX_BRK_PLUS -); - -220 - gEMS_UART -. - gcf0 -. - gtxd_v - = 0; - -221  - gEMS_TX_STATUS_OK -; - -224 i( - gtx_mode_ - = -EMS_TXMODE_HT3 -) { - -225  -ut8_t - -i - = 0; - gi - < - gn -; i++) { - -226 - gEMS_UART -. - gfifo -. - grw_by - = -buf -[ -i -]; - -227 -dayMiocds -( -EMSUART_TX_WAIT_HT3 -); - -229 - gEMS_UART -. - gcf0 -. - gtxd_v - = 1; - -230 -dayMiocds -( -EMSUART_TX_BRK_HT3 -); - -231 - gEMS_UART -. - gcf0 -. - gtxd_v - = 0; - -232  - gEMS_TX_STATUS_OK -; - -239  -ut8_t - - gi - = 0; i < - gn -; i++) { - -240 vީ -ut8_t - - g_uxc - = -EMS_UART -. -us -. -rxfifo_t -; - -241 - gEMS_UART -. - gfifo -. - grw_by - = -buf -[ -i -]; - -242 -ut16_t - - gtimeoutt - = -EMSUART_TX_TIMEOUT -; - -243 ( - gEMS_UART -. - gus -. - grxfifo_t - = -_uxc -&& (-- -timeoutt - > 0)) { - -244 -dayMiocds -( -EMSUART_TX_BUSY_WAIT -); - -247 - gEMS_UART -. - gcf0 -. - gtxd_v - = 1; - -248 -dayMiocds -( -EMSUART_TX_BRK_EMS -); - -249 - gEMS_UART -. - gcf0 -. - gtxd_v - = 0; - -250  - gEMS_TX_STATUS_OK -; - - @src/uart/emsuart_esp32.h - -23 #i -defed -( -ESP32 -) - -25 #ide -EMSESP_EMSUART_H - - -26  - #EMSESP_EMSUART_H - - - ) - -28  - ~ - -30  - ~"䓹os/FeRTOS.h -" - -31  - ~"䓹os/sk.h -" - -32  - ~"䓹os/rgbuf.h -" - -33  - ~"䓹os/queue.h -" - -34  - ~ - -35  - ~ - -37  - #EMS_MAXBUFFERSIZE - 33 - -38 - - ) - -39  - #EMSUART_UART - -UART_NUM_2 - - -40  - #EMS_UART - -UART2 - - -41  - #EMSUART_BAUD - 9600 - -42 - - ) - -43  - #EMS_TXMODE_DEFAULT - 1 - - ) - -44  - #EMS_TXMODE_EMSPLUS - 2 - - ) - -45  - #EMS_TXMODE_HT3 - 3 - - ) - -46  - #EMS_TXMODE_NEW - 4 - -47 - - ) - -49  - #EMSUART_TX_BIT_TIME - 104 - -50 - - ) - -52  - #EMSUART_TX_BRK_TIMER - ( -EMSUART_TX_BIT_TIME - * 10 + 28) - -53  - #EMSUART_TX_WAIT_REPLY - 100000 - -54 - - ) - -56  - #EMSUART_TX_BUSY_WAIT - ( -EMSUART_TX_BIT_TIME - / 8) - -57  - #EMSUART_TX_TIMEOUT - (20 * -EMSUART_TX_BIT_TIME - / -EMSUART_TX_BUSY_WAIT -) - - ) - -58  - #EMSUART_TX_BRK_EMS - ( -EMSUART_TX_BIT_TIME - * 10) - - ) - -62  - #EMSUART_TX_WAIT_HT3 - ( -EMSUART_TX_BIT_TIME - * 17) - -63  - #EMSUART_TX_BRK_HT3 - ( -EMSUART_TX_BIT_TIME - * 11) - - ) - -66  - #EMSUART_TX_WAIT_PLUS - ( -EMSUART_TX_BIT_TIME - * 20) - -67  - #EMSUART_TX_BRK_PLUS - ( -EMSUART_TX_BIT_TIME - * 11) - - ) - -69 -mea - - gem - { - -71  - #EMS_TX_STATUS_OK - 1 - - ) - -72  - #EMS_TX_STATUS_ERR - 0 - - ) - -74 as - cEMSut - { - -75 - gpublic -: - -76 -EMSut -() = ; - -77 ~ -EMSut -() = ; - -79  -t -(cڡ -ut8_t - -tx_mode -, cڡ ut8_ -rx_gpio -, cڡ ut8_ -tx_gpio -); - -80  -nd_pl -(cڡ -ut8_t - -da -); - -81  - -(); - -82  -t -(); - -83  -ut16_t - -sm -(cڡ -ut8_t - * -buf -, cڡ ut8_ -n -); - -85 - give -: - -86  -emsut_cvTask -(* - -); - -87  -IRAM_ATTR - -emsut_rx__hdr -(* - -); - -88  -IRAM_ATTR - -emsut_tx_tim__hdr -(); - - @src/uart/emsuart_esp8266.cpp - -19 #i -defed -( -ESP8266 -) - -21  - ~"ut/emsut_e8266.h -" - -23  - ~"em.h -" - -25 -mea - - gem - { - -27 -os_evt_t - - gcvTaskQueue -[ -EMSUART_cvTaskQueueL -]; - -28 - gEMSut -:: -EMSRxBuf_t - * -pEMSRxBuf -; - -29 - gEMSut -:: -EMSRxBuf_t - * -EMSRxBuf -[ -EMS_MAXBUFFERS -]; - -30 -ut8_t - - gemsRxBufIdx - = 0; - -31 -ut8_t - - gtx_mode_ - = 0xFF; - -32 -bo - - gdr_xt_rx - = -ue -; - -33 -ut8_t - - gemsTxBuf -[ -EMS_MAXBUFFERSIZE -]; - -34 -ut8_t - - gemsTxBufIdx -; - -35 -ut8_t - - gemsTxBufL -; - -36 -ut32_t - - gemsTxWa -; - -37 -bo - - gEMSut -:: -ndg_ - = -l -; - -43  -ICACHE_RAM_ATTR - - gEMSut -:: -emsut_rx__hdr -(* - -) { - -44  -ut8_t - -ngth - = 0; - -45  -ut8_t - - gut_bufr -[ -EMS_MAXBUFFERSIZE - + 2]; - -47 i( -USIS -( -EMSUART_UART -& ((1 << - gUIBD -))) { - -48 -USC0 -( -EMSUART_UART -&~(1 << -UCBRK -); - -49 i( - gndg_ -) { - -50 - gdr_xt_rx - = -ue -; - -52 -USIC -( -EMSUART_UART -(1 << -UIBD -); - -53 - gngth - = 0; - -54 ( -USS -( -EMSUART_UART ->> - gUSRXC -) & 0x0FF) { - -55 -ut8_t - - grx - = -USF -( -EMSUART_UART -); - -56 i( - gngth - < - gEMS_MAXBUFFERSIZE -) { - -57 i( - gngth - || - grx -) { - -58 - gut_bufr -[ -ngth -++] = -rx -; - -61 - gdr_xt_rx - = -ue -; - -64 i(! - gdr_xt_rx -) { - -65 i( - gut_bufr -[ -ngth - - 1]) { - -66 - gngth -++; - -68 - gpEMSRxBuf --> - gngth - = -ngth -; - -69 -os_memy -((*) -pEMSRxBuf --> -bufr -, (*)& -ut_bufr -,EMSRxBuf-> -ngth -); - -70 -syem_os_po -( -EMSUART_cvTaskPrio -, 0, 0); - -72 - gdr_xt_rx - = -l -; - -73 - gndg_ - = -l -; - -82  -ICACHE_FLASH_ATTR - - gEMSut -:: -emsut_cvTask -( -os_evt_t - * -evts -) { - -83 -EMSRxBuf_t - * -pCut - = -pEMSRxBuf -; - -84 - gpEMSRxBuf - = -EMSRxBuf -[++ -emsRxBufIdx - % -EMS_MAXBUFFERS -]; - -85 -ut8_t - - gngth - = -pCut --> -ngth -; - -86 - gpCut --> - gngth - = 0; - -89 i( - gngth - > 4 ||ength == 2) { - -90 -EMSESP -:: -comg_gm -(( -ut8_t - *) -pCut --> -bufr -, -ngth - - 1); - -95  -ICACHE_RAM_ATTR - - gEMSut -:: -emsut_tx_tim__hdr -() { - -96 i(! -ndg_ -) { - -99 - gemsTxBufIdx -++; - -100 i( - gemsTxBufIdx - < - gemsTxBufL -) { - -101 -USF -( -EMSUART_UART - -emsTxBuf -[ -emsTxBufIdx -]; - -102 -tim1_wre -( -emsTxWa -); - -103 } i( - gemsTxBufIdx - = -emsTxBufL -) { - -104 -USC0 -( -EMSUART_UART -|(1 << -UCBRK -); - -105 -tim1_wre -( -EMSUART_TX_BRK_TIMER -); - -107 -USC0 -( -EMSUART_UART -&~(1 << -UCBRK -); - -108 - gndg_ - = -l -; - -115  -ICACHE_FLASH_ATTR - - gEMSut -:: -emsut_ush_fifos -() { - -116 -USC0 -( -EMSUART_UART -|((1 << -UCRXRST -| (1 << -UCTXRST -)); - -117 -USC0 -( -EMSUART_UART -&~((1 << -UCRXRST -| (1 << -UCTXRST -)); - -123  -ICACHE_FLASH_ATTR - - gEMSut -:: -t -(cڡ -ut8_t - -tx_mode -, cڡ ut8_ -rx_gpio -, cڡ ut8_ -tx_gpio -) { - -124 i( - gtx_mode_ - != 0xFF) { - -125 -tx_mode_ - = -tx_mode -; - -126 -t -(); - -129 - gtx_mode_ - = -tx_mode -; - -131  - gi - = 0; i < - gEMS_MAXBUFFERS -; i++) { - -132 -EMSRxBuf_t - * - gp - = (EMSRxBuf_*) -mloc -((EMSRxBuf_t)); - -133 - gp --> - gngth - = 0; - -134 - gEMSRxBuf -[ -i -] = -p -; - -136 - gpEMSRxBuf - = -EMSRxBuf -[0]; - -138 -ETS_UART_INTR_ATTACH -( -nuαr -,ullptr); - -141 -PIN_PULLUP_DIS -( -PERIPHS_IO_MUX_U0TXD_U -); - -142 -PIN_FUNC_SELECT -( -PERIPHS_IO_MUX_U0TXD_U -, -FUNC_U0TXD -); - -143 -PIN_PULLUP_DIS -( -PERIPHS_IO_MUX_U0RXD_U -); - -144 -PIN_FUNC_SELECT -( -PERIPHS_IO_MUX_U0RXD_U -, -FUNC_U0RXD -); - -147 -USD -( -EMSUART_UART -( -UART_CLK_FREQ - / -EMSUART_BAUD -); - -148 -USC0 -( -EMSUART_UART - -EMSUART_CONFIG -; - -149 -emsut_ush_fifos -(); - -158 -USC1 -( -EMSUART_UART -) = 0; - -162 -USIC -( -EMSUART_UART -) = 0xFFFF; - -163 -USIE -( -EMSUART_UART -) = 0; - -166 -syem_os_sk -( -emsut_cvTask -, -EMSUART_cvTaskPrio -, -cvTaskQueue -, -EMSUART_cvTaskQueueL -); - -169 -syem_t_os_t -(0); - -171 i( - gtx_gpio - =1 && -rx_gpio - == 3) { - -172 -syem_ut_de_sw -(); - -173 } i( - gtx_gpio - =15 && -rx_gpio - == 13) { - -174 -syem_ut_sw -(); - -177 -ETS_UART_INTR_ATTACH -( -emsut_rx__hdr -, -nuαr -); - -178 - gdr_xt_rx - = -ue -; - -181 -tim1_chIru -( -emsut_tx_tim__hdr -); - -183 -t -(); - -190  -ICACHE_FLASH_ATTR - - gEMSut -:: - -() { - -191 -USIE -( -EMSUART_UART -) = 0; - -192 -USC0 -( -EMSUART_UART -&~(1 << -UCBRK -); - -193 -tim1_dib -(); - -194 - gndg_ - = -l -; - -200  -ICACHE_FLASH_ATTR - - gEMSut -:: -t -() { - -201 i( -USIR -( -EMSUART_UART -& ((1 << -UIBD -))) { - -202 -USIC -( -EMSUART_UART -(1 << -UIBD -); - -203 - gdr_xt_rx - = -ue -; - -205 i( - gtx_mode_ - > 100) { - -206 - gemsTxWa - = 5 * -EMSUART_TX_BIT_TIME - * ( -tx_mode_ - - 90); - -208 - gemsTxWa - = 5 * -EMSUART_TX_BIT_TIME - * ( -tx_mode_ - + 10); - -210 - gemsTxBufIdx - = 0; - -211 - gemsTxBufL - = 0; - -212 -tim1_ab -( -TIM_DIV16 -, -TIM_EDGE -, -TIM_SINGLE -); - -213 -USIE -( -EMSUART_UART -(1 << -UIBD -); - -219  -ICACHE_FLASH_ATTR - - gEMSut -:: -nd_pl -( -ut8_t - -da -) { - -220 -sm -(& -da -, 1); - -228 -ut16_t - -ICACHE_FLASH_ATTR - - gEMSut -:: -sm -( -ut8_t - * -buf -, ut8_ -n -) { - -229 i( - gn - =0 || -n - > -EMS_MAXBUFFERSIZE -) { - -230  -EMS_TX_STATUS_ERR -; - -234 i( - gtx_mode_ - >= 5) { - -235 -ndg_ - = -ue -; - -236  -ut8_t - - gi - = 0; i < - gn -; i++) { - -237 - gemsTxBuf -[ -i -] = -buf -[i]; - -239 -USF -( -EMSUART_UART - -buf -[0]; - -240 - gemsTxBufIdx - = 0; - -241 - gemsTxBufL - = -n -; - -242 i( - gtx_mode_ - > 100 && - gn - > 1) { - -243 -tim1_wre -( -EMSUART_TX_WAIT_REPLY -); - -245 -tim1_wre -( -emsTxWa -); - -247  - gEMS_TX_STATUS_OK -; - -251 i( - gtx_mode_ - = -EMS_TXMODE_NEW -) { - -252  -ut8_t - -i - = 0; - gi - < - gn -; i++) { - -253 -USF -( -EMSUART_UART - -buf -[ -i -]; - -255 -USC0 -( -EMSUART_UART -|(1 << -UCBRK -); - -256  - gEMS_TX_STATUS_OK -; - -260 i( - gtx_mode_ - = -EMS_TXMODE_EMSPLUS -) { - -261  -ut8_t - -i - = 0; - gi - < - gn -; i++) { - -262 -USF -( -EMSUART_UART - -buf -[ -i -]; - -263 -dayMiocds -( -EMSUART_TX_WAIT_PLUS -); - -265 -USC0 -( -EMSUART_UART -|(1 << -UCBRK -); - -266 -dayMiocds -( -EMSUART_TX_BRK_PLUS -); - -267 -USC0 -( -EMSUART_UART -&~(1 << -UCBRK -); - -268  - gEMS_TX_STATUS_OK -; - -272 i( - gtx_mode_ - = -EMS_TXMODE_HT3 -) { - -273  -ut8_t - -i - = 0; - gi - < - gn -; i++) { - -274 -USF -( -EMSUART_UART - -buf -[ -i -]; - -276 (( -USS -( -EMSUART_UART ->> - gUSTXC -) & 0xff)) { - -279 -dayMiocds -( -EMSUART_TX_WAIT_HT3 -); - -281 -USC0 -( -EMSUART_UART -|(1 << -UCBRK -); - -282 -dayMiocds -( -EMSUART_TX_BRK_HT3 -); - -283 -USC0 -( -EMSUART_UART -&~(1 << -UCBRK -); - -284  - gEMS_TX_STATUS_OK -; - -313 -emsut_ush_fifos -(); - -316  -ut8_t - - gi - = 0; i < - gn -; i++) { - -317 vީ -ut8_t - - g_uxc - = ( -USS -( -EMSUART_UART ->> -USRXC -) & 0xFF; - -318 -ut16_t - - gtimeoutt - = -EMSUART_TX_TIMEOUT -; - -319 -USF -( -EMSUART_UART - -buf -[ -i -]; - -321 ((( -USS -( -EMSUART_UART ->> - gUSRXC -& 0xFF= -_uxc -&& (-- -timeoutt - > 0)) { - -322 -dayMiocds -( -EMSUART_TX_BUSY_WAIT -); - -325 -USC0 -( -EMSUART_UART -|(1 << -UCBRK -); - -326 -dayMiocds -( -EMSUART_TX_BRK_EMS -); - -327 -USC0 -( -EMSUART_UART -&~(1 << -UCBRK -); - -328  - gEMS_TX_STATUS_OK -; - - @src/uart/emsuart_esp8266.h - -18 #i -defed -( -ESP8266 -) - -20 #ide -EMSESP_EMSUART_H - - -21  - #EMSESP_EMSUART_H - - - ) - -23  - ~ - -25  - ~ - -27  - #EMSUART_UART - 0 - -28  - #EMSUART_CONFIG - 0x1C - -29  - #EMSUART_BAUD - 9600 - -30 - - ) - -31  - #EMS_MAXBUFFERS - 3 - -32  - #EMS_MAXBUFFERSIZE - 33 - -33 - - ) - -34  - #EMSUART_cvTaskPrio - 2 - -35  - #EMSUART_cvTaskQueueL - 10 - -36 - - ) - -37  - #EMS_TXMODE_DEFAULT - 1 - - ) - -38  - #EMS_TXMODE_EMSPLUS - 2 - - ) - -39  - #EMS_TXMODE_HT3 - 3 - - ) - -40  - #EMS_TXMODE_NEW - 4 - -41 - - ) - -43  - #EMSUART_TX_BIT_TIME - 104 - -44 - - ) - -46  - #EMSUART_TX_BRK_TIMER - ( -EMSUART_TX_BIT_TIME - * 52) - -47  - #EMSUART_TX_WAIT_REPLY - 500000 - -48 - - ) - -50  - #EMSUART_TX_BUSY_WAIT - ( -EMSUART_TX_BIT_TIME - / 8) - -52  - #EMSUART_TX_TIMEOUT - (220 * 8) - -53  - #EMSUART_TX_BRK_EMS - ( -EMSUART_TX_BIT_TIME - * 10) - - ) - -57  - #EMSUART_TX_WAIT_HT3 - ( -EMSUART_TX_BIT_TIME - * 17) - -58  - #EMSUART_TX_BRK_HT3 - ( -EMSUART_TX_BIT_TIME - * 11) - - ) - -61  - #EMSUART_TX_WAIT_PLUS - ( -EMSUART_TX_BIT_TIME - * 20) - -62  - #EMSUART_TX_BRK_PLUS - ( -EMSUART_TX_BIT_TIME - * 11) - - ) - -64 -mea - - gem - { - -66  - #EMS_TX_STATUS_ERR - 0 - - ) - -67  - #EMS_TX_STATUS_OK - 1 - - ) - -69 as - cEMSut - { - -70 - gpublic -: - -71 -EMSut -() = ; - -72 ~ -EMSut -() = ; - -74  -ICACHE_FLASH_ATTR - -t -(cڡ -ut8_t - -tx_mode -, cڡ ut8_ -rx_gpio -, cڡ ut8_ -tx_gpio -); - -75  -ICACHE_FLASH_ATTR - - -(); - -76  -ICACHE_FLASH_ATTR - -t -(); - -77  -ICACHE_FLASH_ATTR - -nd_pl -( -ut8_t - -da -); - -78  -ut16_t - -ICACHE_FLASH_ATTR - -sm -( -ut8_t - * -buf -, ut8_ -n -); - -79  -bo - -ndg -() { - -80  - gndg_ -; - -84 -ut8_t - - gngth -; - -85 -ut8_t - - gbufr -[ -EMS_MAXBUFFERSIZE -]; - -86 } - tEMSRxBuf_t -; - -88 - give -: - -89  -ICACHE_RAM_ATTR - -emsut_rx__hdr -(* - -); - -90  -ICACHE_FLASH_ATTR - -emsut_cvTask -( -os_evt_t - * -evts -); - -91  -ICACHE_FLASH_ATTR - -emsut_ush_fifos -(); - -92  -ICACHE_RAM_ATTR - -emsut_tx_tim__hdr -(); - -93  -bo - - gndg_ -; - - @src/version.h - -1  - #EMSESP_APP_VERSION - "2.0.1" - - ) - - @ -1 -. -0 -701 -42112 -.pio/libdeps/esp8266/ArduinoJson/ArduinoJson.h -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.h -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Configuration.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Latch.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Namespace.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Object/Pair.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/static_array.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/FlashStringIterator.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StdStringAdapter.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/String.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantShortcuts.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/compatibility.hpp -.pio/libdeps/esp8266/ArduinoJson/src/ArduinoJson/version.hpp -.pio/libdeps/esp8266/AsyncMqttClient/examples/FullyFeaturedSSL/src/main.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.h -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Callbacks.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/DisconnectReasons.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Flags.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Helpers.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/MessageProperties.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/ConnAckPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/Packet.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PingRespPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubAckPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubCompPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRecPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PubRelPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/PublishPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/SubAckPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.cpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Packets/UnsubAckPacket.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/ParsingInformation.hpp -.pio/libdeps/esp8266/AsyncMqttClient/src/AsyncMqttClient/Storage.hpp -.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.cpp -.pio/libdeps/esp8266/AsyncTCP/src/AsyncTCP.h -.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Client/config.h -.pio/libdeps/esp8266/ESPAsyncTCP/examples/ClientServer/Server/config.h -.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.cpp -.pio/libdeps/esp8266/ESPAsyncTCP/src/AsyncPrinter.h -.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.cpp -.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCP.h -.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.cpp -.pio/libdeps/esp8266/ESPAsyncTCP/src/ESPAsyncTCPbuffer.h -.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.cpp -.pio/libdeps/esp8266/ESPAsyncTCP/src/SyncClient.h -.pio/libdeps/esp8266/ESPAsyncTCP/src/async_config.h -.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.c -.pio/libdeps/esp8266/ESPAsyncTCP/src/tcp_axtls.h -interface/node_modules/jest-haste-map/node_modules/fsevents/fsevents.cc -interface/node_modules/jest-haste-map/node_modules/fsevents/src/async.cc -interface/node_modules/jest-haste-map/node_modules/fsevents/src/constants.cc -interface/node_modules/jest-haste-map/node_modules/fsevents/src/methods.cc -interface/node_modules/jest-haste-map/node_modules/fsevents/src/storage.cc -interface/node_modules/jest-haste-map/node_modules/fsevents/src/thread.cc -interface/node_modules/nan/nan.h -interface/node_modules/nan/nan_callbacks.h -interface/node_modules/nan/nan_callbacks_12_inl.h -interface/node_modules/nan/nan_callbacks_pre_12_inl.h -interface/node_modules/nan/nan_converters.h -interface/node_modules/nan/nan_converters_43_inl.h -interface/node_modules/nan/nan_converters_pre_43_inl.h -interface/node_modules/nan/nan_define_own_property_helper.h -interface/node_modules/nan/nan_implementation_12_inl.h -interface/node_modules/nan/nan_implementation_pre_12_inl.h -interface/node_modules/nan/nan_json.h -interface/node_modules/nan/nan_maybe_43_inl.h -interface/node_modules/nan/nan_maybe_pre_43_inl.h -interface/node_modules/nan/nan_new.h -interface/node_modules/nan/nan_object_wrap.h -interface/node_modules/nan/nan_persistent_12_inl.h -interface/node_modules/nan/nan_persistent_pre_12_inl.h -interface/node_modules/nan/nan_private.h -interface/node_modules/nan/nan_string_bytes.h -interface/node_modules/nan/nan_typedarray_contents.h -interface/node_modules/nan/nan_weak.h -interface/node_modules/watchpack-chokidar2/node_modules/fsevents/fsevents.cc -interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/async.cc -interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/constants.cc -interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/methods.cc -interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/storage.cc -interface/node_modules/watchpack-chokidar2/node_modules/fsevents/src/thread.cc -interface/node_modules/webpack-dev-server/node_modules/fsevents/fsevents.cc -interface/node_modules/webpack-dev-server/node_modules/fsevents/src/async.cc -interface/node_modules/webpack-dev-server/node_modules/fsevents/src/constants.cc -interface/node_modules/webpack-dev-server/node_modules/fsevents/src/methods.cc -interface/node_modules/webpack-dev-server/node_modules/fsevents/src/storage.cc -interface/node_modules/webpack-dev-server/node_modules/fsevents/src/thread.cc -interface/node_modules/zlib/src/node-zlib.cc -lib/ESPAsyncWebServer/AsyncEventSource.cpp -lib/ESPAsyncWebServer/AsyncEventSource.h -lib/ESPAsyncWebServer/AsyncJson.h -lib/ESPAsyncWebServer/AsyncWebSocket.cpp -lib/ESPAsyncWebServer/AsyncWebSocket.h -lib/ESPAsyncWebServer/AsyncWebSynchronization.h -lib/ESPAsyncWebServer/ESPAsyncWebServer.h -lib/ESPAsyncWebServer/SPIFFSEditor.cpp -lib/ESPAsyncWebServer/SPIFFSEditor.h -lib/ESPAsyncWebServer/StringArray.h -lib/ESPAsyncWebServer/WebAuthentication.cpp -lib/ESPAsyncWebServer/WebAuthentication.h -lib/ESPAsyncWebServer/WebHandlerImpl.h -lib/ESPAsyncWebServer/WebHandlers.cpp -lib/ESPAsyncWebServer/WebRequest.cpp -lib/ESPAsyncWebServer/WebResponseImpl.h -lib/ESPAsyncWebServer/WebResponses.cpp -lib/ESPAsyncWebServer/WebServer.cpp -lib/OneWire/OneWire.cpp -lib/OneWire/OneWire.h -lib/OneWire/OneWire_direct_gpio.h -lib/OneWire/OneWire_direct_regtype.h -lib/framework/APSettingsService.cpp -lib/framework/APSettingsService.h -lib/framework/APStatus.cpp -lib/framework/APStatus.h -lib/framework/ArduinoJsonJWT.cpp -lib/framework/ArduinoJsonJWT.h -lib/framework/AuthenticationService.cpp -lib/framework/AuthenticationService.h -lib/framework/ESP8266React.cpp -lib/framework/ESP8266React.h -lib/framework/ESPUtils.h -lib/framework/FSPersistence.h -lib/framework/FactoryResetService.cpp -lib/framework/FactoryResetService.h -lib/framework/Features.h -lib/framework/FeaturesService.cpp -lib/framework/FeaturesService.h -lib/framework/HttpEndpoint.h -lib/framework/JsonUtils.h -lib/framework/MqttPubSub.h -lib/framework/MqttSettingsService.cpp -lib/framework/MqttSettingsService.h -lib/framework/MqttStatus.cpp -lib/framework/MqttStatus.h -lib/framework/NTPSettingsService.cpp -lib/framework/NTPSettingsService.h -lib/framework/NTPStatus.cpp -lib/framework/NTPStatus.h -lib/framework/OTASettingsService.cpp -lib/framework/OTASettingsService.h -lib/framework/RestartService.cpp -lib/framework/RestartService.h -lib/framework/SecurityManager.h -lib/framework/SecuritySettingsService.cpp -lib/framework/SecuritySettingsService.h -lib/framework/StatefulService.cpp -lib/framework/StatefulService.h -lib/framework/SystemStatus.cpp -lib/framework/SystemStatus.h -lib/framework/UploadFirmwareService.cpp -lib/framework/UploadFirmwareService.h -lib/framework/WWWData.h -lib/framework/WebSocketTxRx.h -lib/framework/WiFiScanner.cpp -lib/framework/WiFiScanner.h -lib/framework/WiFiSettingsService.cpp -lib/framework/WiFiSettingsService.h -lib/framework/WiFiStatus.cpp -lib/framework/WiFiStatus.h -lib/uuid-common/src/common.cpp -lib/uuid-common/src/get_uptime_ms.cpp -lib/uuid-common/src/loop.cpp -lib/uuid-common/src/printable_to_string.cpp -lib/uuid-common/src/read_flash_string.cpp -lib/uuid-common/src/uuid/common.h -lib/uuid-console/src/command_line.cpp -lib/uuid-console/src/commands.cpp -lib/uuid-console/src/console.cpp -lib/uuid-console/src/shell.cpp -lib/uuid-console/src/shell_log.cpp -lib/uuid-console/src/shell_loop_all.cpp -lib/uuid-console/src/shell_print.cpp -lib/uuid-console/src/shell_prompt.cpp -lib/uuid-console/src/shell_stream.cpp -lib/uuid-console/src/stream_console.cpp -lib/uuid-console/src/uuid/console.h -lib/uuid-log/src/format_level_char.cpp -lib/uuid-log/src/format_level_lowercase.cpp -lib/uuid-log/src/format_level_uppercase.cpp -lib/uuid-log/src/format_timestamp_ms.cpp -lib/uuid-log/src/levels.cpp -lib/uuid-log/src/levels_lowercase.cpp -lib/uuid-log/src/levels_uppercase.cpp -lib/uuid-log/src/log.cpp -lib/uuid-log/src/parse_level_lowercase.cpp -lib/uuid-log/src/parse_level_uppercase.cpp -lib/uuid-log/src/uuid/log.h -lib/uuid-syslog/src/syslog.cpp -lib/uuid-syslog/src/uuid/syslog.h -lib/uuid-telnet/src/stream.cpp -lib/uuid-telnet/src/telnet.cpp -lib/uuid-telnet/src/uuid/telnet.h -lib_standalone/Arduino.cpp -lib_standalone/Arduino.h -lib_standalone/ArduinoJson/ArduinoJson.h -lib_standalone/ArduinoJson/extras/fuzzing/fuzzer_main.cpp -lib_standalone/ArduinoJson/extras/fuzzing/json_fuzzer.cpp -lib_standalone/ArduinoJson/extras/fuzzing/msgpack_fuzzer.cpp -lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp -lib_standalone/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp -lib_standalone/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp -lib_standalone/ArduinoJson/extras/tests/ElementProxy/add.cpp -lib_standalone/ArduinoJson/extras/tests/ElementProxy/clear.cpp -lib_standalone/ArduinoJson/extras/tests/ElementProxy/compare.cpp -lib_standalone/ArduinoJson/extras/tests/ElementProxy/remove.cpp -lib_standalone/ArduinoJson/extras/tests/ElementProxy/set.cpp -lib_standalone/ArduinoJson/extras/tests/ElementProxy/size.cpp -lib_standalone/ArduinoJson/extras/tests/ElementProxy/subscript.cpp -lib_standalone/ArduinoJson/extras/tests/Helpers/CustomReader.hpp -lib_standalone/ArduinoJson/extras/tests/Helpers/Stream.h -lib_standalone/ArduinoJson/extras/tests/Helpers/WString.h -lib_standalone/ArduinoJson/extras/tests/Helpers/progmem_emulation.hpp -lib_standalone/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp -lib_standalone/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp -lib_standalone/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp -lib_standalone/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/add.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/copyArray.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/createNested.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/equals.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/get.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/isNull.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/iterator.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/memoryUsage.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/nesting.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/remove.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/size.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/std_string.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/subscript.cpp -lib_standalone/ArduinoJson/extras/tests/JsonArray/undefined.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/array_static.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/incomplete_input.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/invalid_input.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/number.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/object_static.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDeserializer/string.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/BasicJsonDocument.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/DynamicJsonDocument.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/StaticJsonDocument.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/add.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/compare.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/containsKey.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/createNested.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/isNull.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/nesting.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/remove.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/size.cpp -lib_standalone/ArduinoJson/extras/tests/JsonDocument/subscript.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/containsKey.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/copy.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedArray.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/createNestedObject.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/equals.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/invalid.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/isNull.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/iterator.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/memoryUsage.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/nesting.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/remove.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/size.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/std_string.cpp -lib_standalone/ArduinoJson/extras/tests/JsonObject/subscript.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/misc.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp -lib_standalone/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/add.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/as.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/clear.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/compare.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/containsKey.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/copy.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/createNested.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/is.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/isnull.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/memoryUsage.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/misc.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/nesting.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/or.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/overflow.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/remove.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/set.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/subscript.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/types.cpp -lib_standalone/ArduinoJson/extras/tests/JsonVariant/undefined.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/add.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/clear.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/compare.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/containsKey.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/remove.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/set.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/size.cpp -lib_standalone/ArduinoJson/extras/tests/MemberProxy/subscript.cpp -lib_standalone/ArduinoJson/extras/tests/MemoryPool/StringBuilder.cpp -lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocString.cpp -lib_standalone/ArduinoJson/extras/tests/MemoryPool/allocVariant.cpp -lib_standalone/ArduinoJson/extras/tests/MemoryPool/clear.cpp -lib_standalone/ArduinoJson/extras/tests/MemoryPool/size.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/FloatParts.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/Issue1189.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/Issue978.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/Readers.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/StringAdapters.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/StringWriter.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/TypeTraits.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/Utf16.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/Utf8.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/conflicts.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/custom_string.hpp -lib_standalone/ArduinoJson/extras/tests/Misc/unsigned_char.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/version.cpp -lib_standalone/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/cpp11.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_0.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/decode_unicode_1.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_0.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_infinity_1.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_0.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_nan_1.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_0.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_double_1.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_0.cpp -lib_standalone/ArduinoJson/extras/tests/MixedConfiguration/use_long_long_1.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeStaticVariant.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/incompleteInput.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackDeserializer/notSupported.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/misc.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp -lib_standalone/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp -lib_standalone/ArduinoJson/extras/tests/Numbers/parseFloat.cpp -lib_standalone/ArduinoJson/extras/tests/Numbers/parseInteger.cpp -lib_standalone/ArduinoJson/extras/tests/Numbers/parseNumber.cpp -lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp -lib_standalone/ArduinoJson/extras/tests/TextFormatter/writeString.cpp -lib_standalone/ArduinoJson/extras/tests/catch/catch.cpp -lib_standalone/ArduinoJson/extras/tests/catch/catch.hpp -lib_standalone/ArduinoJson/src/ArduinoJson.h -lib_standalone/ArduinoJson/src/ArduinoJson.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayFunctions.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayIterator.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayRef.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Array/ArrayShortcuts.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Configuration.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/Latch.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Memory/StringSlot.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Misc/Visitable.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Namespace.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Float.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/Integer.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseFloat.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseInteger.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectFunctions.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectIterator.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectRef.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Object/ObjectShortcuts.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Object/Pair.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantCasts.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantComparisons.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOperators.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantOr.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Operators/VariantShortcuts.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/gsl/not_null.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/safe_strcmp.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ArduinoStringAdapter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/ConstRamStringAdapter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/FlashStringAdapter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/IsWriteableString.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/RamStringAdapter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedFlashStringAdapter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/SizedRamStringAdapter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StlStringAdapter.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/String.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAs.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantAsImpl.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/compatibility.hpp -lib_standalone/ArduinoJson/src/ArduinoJson/version.hpp -lib_standalone/AsyncJson.h -lib_standalone/AsyncMqttClient.h -lib_standalone/AsyncTCP.h -lib_standalone/ESP8266React.h -lib_standalone/ESPAsyncWebServer.h -lib_standalone/FS.h -lib_standalone/FSPersistence.h -lib_standalone/Features.h -lib_standalone/HttpEndpoint.h -lib_standalone/MqttPubSub.h -lib_standalone/SecurityManager.h -lib_standalone/SecuritySettingsService.cpp -lib_standalone/SecuritySettingsService.h -lib_standalone/StatefulService.cpp -lib_standalone/StatefulService.h -lib_standalone/WString.cpp -lib_standalone/WString.h -lib_standalone/WebSocketTxRx.h -lib_standalone/emsuart_standalone.cpp -lib_standalone/emsuart_standalone.h -src/EMSESPDevicesService.cpp -src/EMSESPDevicesService.h -src/EMSESPSettingsService.cpp -src/EMSESPSettingsService.h -src/EMSESPStatusService.cpp -src/EMSESPStatusService.h -src/console.cpp -src/console.h -src/device_library.h -src/devices/boiler.cpp -src/devices/boiler.h -src/devices/connect.cpp -src/devices/connect.h -src/devices/controller.cpp -src/devices/controller.h -src/devices/gateway.cpp -src/devices/gateway.h -src/devices/heatpump.cpp -src/devices/heatpump.h -src/devices/mixing.cpp -src/devices/mixing.h -src/devices/solar.cpp -src/devices/solar.h -src/devices/switch.cpp -src/devices/switch.h -src/devices/thermostat.cpp -src/devices/thermostat.h -src/emsdevice.cpp -src/emsdevice.h -src/emsesp.cpp -src/emsesp.h -src/emsfactory.h -src/helpers.cpp -src/helpers.h -src/locale_EN.h -src/main.cpp -src/mqtt.cpp -src/mqtt.h -src/roomcontrol.cpp -src/roomcontrol.h -src/sensors.cpp -src/sensors.h -src/shower.cpp -src/shower.h -src/system.cpp -src/system.h -src/telegram.cpp -src/telegram.h -src/test/test.cpp -src/test/test.h -src/uart/emsuart_esp32.cpp -src/uart/emsuart_esp32.h -src/uart/emsuart_esp8266.cpp -src/uart/emsuart_esp8266.h -src/version.h diff --git a/doc/how-to Domoticz.txt b/doc/how-to Domoticz.txt deleted file mode 100644 index b3088c33..00000000 --- a/doc/how-to Domoticz.txt +++ /dev/null @@ -1,9 +0,0 @@ -Copy the nefit directory + its content to your ../domoticz/plugin directory -You can now select ""Nefit EMS-ESP with Proddy firmware" as new hardware in Domoticz -Don't forget to tick "accept new hardware devices" or click "allow for 5 minutes" in Settings first -Enter your MQTT server address and click "add" - -The plugin will create 3 new devices: -- room temperature (as measured in the thermostat) under "temperature" -- system pressure under "utility" -- a device to set the thermostat (change temperature setting) under "utility" \ No newline at end of file diff --git a/doc/nefit/mqtt.py b/doc/nefit/mqtt.py deleted file mode 100644 index 21ddc42a..00000000 --- a/doc/nefit/mqtt.py +++ /dev/null @@ -1,113 +0,0 @@ -# Based on https://github.com/emontnemery/domoticz_mqtt_discovery -import Domoticz -import time - -class MqttClient: - Address = "" - Port = "" - mqttConn = None - isConnected = False - mqttConnectedCb = None - mqttDisconnectedCb = None - mqttPublishCb = None - - def __init__(self, destination, port, mqttConnectedCb, mqttDisconnectedCb, mqttPublishCb, mqttSubackCb): - Domoticz.Debug("MqttClient::__init__") - self.Address = destination - self.Port = port - self.mqttConnectedCb = mqttConnectedCb - self.mqttDisconnectedCb = mqttDisconnectedCb - self.mqttPublishCb = mqttPublishCb - self.mqttSubackCb = mqttSubackCb - self.Open() - - def __str__(self): - Domoticz.Debug("MqttClient::__str__") - if (self.mqttConn != None): - return str(self.mqttConn) - else: - return "None" - - def Open(self): - Domoticz.Debug("MqttClient::Open") - if (self.mqttConn != None): - self.Close() - self.isConnected = False - self.mqttConn = Domoticz.Connection(Name=self.Address, Transport="TCP/IP", Protocol="MQTT", Address=self.Address, Port=self.Port) - self.mqttConn.Connect() - - def Connect(self): - Domoticz.Debug("MqttClient::Connect") - if (self.mqttConn == None): - self.Open() - else: - ID = 'Domoticz_'+str(int(time.time())) - Domoticz.Log("MQTT CONNECT ID: '" + ID + "'") - self.mqttConn.Send({'Verb': 'CONNECT', 'ID': ID}) - - def Ping(self): - Domoticz.Debug("MqttClient::Ping") - if (self.mqttConn == None or not self.isConnected): - self.Open() - else: - self.mqttConn.Send({'Verb': 'PING'}) - - def Publish(self, topic, payload, retain = 0): - Domoticz.Log("MqttClient::Publish " + topic + " (" + payload + ")") - if (self.mqttConn == None or not self.isConnected): - self.Open() - else: - self.mqttConn.Send({'Verb': 'PUBLISH', 'Topic': topic, 'Payload': bytearray(payload, 'utf-8'), 'Retain': retain}) - - def Subscribe(self, topics): - Domoticz.Debug("MqttClient::Subscribe") - subscriptionlist = [] - for topic in topics: - subscriptionlist.append({'Topic':topic, 'QoS':0}) - if (self.mqttConn == None or not self.isConnected): - self.Open() - else: - self.mqttConn.Send({'Verb': 'SUBSCRIBE', 'Topics': subscriptionlist}) - - def Close(self): - Domoticz.Log("MqttClient::Close") - #TODO: Disconnect from server - self.mqttConn = None - self.isConnected = False - - def onConnect(self, Connection, Status, Description): - Domoticz.Debug("MqttClient::onConnect") - if (Status == 0): - Domoticz.Log("Successful connect to: "+Connection.Address+":"+Connection.Port) - self.Connect() - else: - Domoticz.Log("Failed to connect to: "+Connection.Address+":"+Connection.Port+", Description: "+Description) - - def onDisconnect(self, Connection): - Domoticz.Log("MqttClient::onDisonnect Disconnected from: "+Connection.Address+":"+Connection.Port) - self.Close() - # TODO: Reconnect? - if self.mqttDisconnectedCb != None: - self.mqttDisconnectedCb() - - def onMessage(self, Connection, Data): - topic = '' - if 'Topic' in Data: - topic = Data['Topic'] - payloadStr = '' - if 'Payload' in Data: - payloadStr = Data['Payload'].decode('utf8','replace') - payloadStr = str(payloadStr.encode('unicode_escape')) - - if Data['Verb'] == "CONNACK": - self.isConnected = True - if self.mqttConnectedCb != None: - self.mqttConnectedCb() - - if Data['Verb'] == "SUBACK": - if self.mqttSubackCb != None: - self.mqttSubackCb() - - if Data['Verb'] == "PUBLISH": - if self.mqttPublishCb != None: - self.mqttPublishCb(topic, Data['Payload']) \ No newline at end of file diff --git a/doc/nefit/plugin.py b/doc/nefit/plugin.py deleted file mode 100644 index d9f4d751..00000000 --- a/doc/nefit/plugin.py +++ /dev/null @@ -1,169 +0,0 @@ -""" - - - Plugin to control Nefit EMS-ESP with ' Proddy' firmware
    -
    - Automatically creates Domoticz devices for connected device.
    - Do not forget to "Accept new Hardware Devices" on first run
    -
    - - - - - - - - -
    -""" - -import Domoticz -import json -import time -from mqtt import MqttClient - -class Thermostat: - def checkDevices(self): - if 1 not in Devices: - Domoticz.Debug("Create Temperature Device") - Domoticz.Device(Name="Woonkamer", Unit=1, Type=80, Subtype=5).Create() - if 2 not in Devices: - Domoticz.Debug("Create System Pressure Device") - Domoticz.Device(Name="System Pressure", Unit=2, Type=243, Subtype=9).Create() - if 3 not in Devices: - Domoticz.Debug("Create Thermostat Device") - Domoticz.Device(Name="Nefit", Unit=3, Type=242, Subtype=1).Create() - - def onMqttMessage(self, topic, payload): - if "sysPress" in payload: - pressure=payload["sysPress"] - Domoticz.Debug("System Pressure: {}".format(pressure)) - Devices[2].Update(nValue=1, sValue=str(pressure)) - - if "currtemp" in payload: - temp=round(float(payload["currtemp"]),1) - Domoticz.Debug("Current temp: {}".format(temp)) - if Devices[1].sValue != temp: - Devices[1].Update(nValue=1, sValue=str(temp)) - if "seltemp" in payload: - temp=payload["seltemp"] - Domoticz.Debug("Temp setting: {}".format(temp)) - if Devices[3].sValue != temp: - Devices[3].Update(nValue=1, sValue=str(temp)) - - def onCommand(self, mqttClient, unit, command, level, color): - topic = "ems-esp/thermostat_cmd" - if (command == "Set Level"): - #MQTT command syntax for setting the temperature: {"cmd":"temp", "data":, "hc":1} - cmdstr = chr(123) + chr(34) + "cmd" +chr(34) + ":" + chr(34) + "temp" + chr(34) + ", " #that's {"cmd":"temp", - cmdstr = cmdstr + chr(34) + "data" + chr(34) + ":" + str(level) +", " #that adds "data":, - cmdstr = cmdstr + chr(34) + "hc" + chr(34) + ":1" + chr(125) #that adds "hc":1} - mqttClient.Publish(topic, cmdstr) - -class BasePlugin: - mqttClient = None - - def onStart(self): - self.debugging = Parameters["Mode6"] - - if self.debugging == "Verbose+": - Domoticz.Debugging(2+4+8+16+64) - if self.debugging == "Verbose": - Domoticz.Debugging(2+4+8+16+64) - if self.debugging == "Debug": - Domoticz.Debugging(2+4+8) - - self.controller = Thermostat() - - self.controller.checkDevices() - - self.topics = list(["ems-esp/thermostat_data1", "ems-esp/boiler_data", "ems-esp/STATE"]) - self.mqttserveraddress = Parameters["Address"].replace(" ", "") - self.mqttserverport = Parameters["Port"].replace(" ", "") - self.mqttClient = MqttClient(self.mqttserveraddress, self.mqttserverport, self.onMQTTConnected, self.onMQTTDisconnected, self.onMQTTPublish, self.onMQTTSubscribed) - - def checkDevices(self): - Domoticz.Log("checkDevices called") - - def onStop(self): - Domoticz.Log("onStop called") - - def onCommand(self, Unit, Command, Level, Color): - Domoticz.Debug("Command: " + Command + " (" + str(Level)) - self.controller.onCommand(self.mqttClient, Unit, Command, Level, Color) - - def onConnect(self, Connection, Status, Description): - self.mqttClient.onConnect(Connection, Status, Description) - - def onDisconnect(self, Connection): - self.mqttClient.onDisconnect(Connection) - - def onMessage(self, Connection, Data): - self.mqttClient.onMessage(Connection, Data) - - def onHeartbeat(self): - Domoticz.Debug("Heartbeating...") - - # Reconnect if connection has dropped - if self.mqttClient.mqttConn is None or (not self.mqttClient.mqttConn.Connecting() and not self.mqttClient.mqttConn.Connected() or not self.mqttClient.isConnected): - Domoticz.Debug("Reconnecting") - self.mqttClient.Open() - else: - self.mqttClient.Ping() - - def onMQTTConnected(self): - Domoticz.Debug("onMQTTConnected") - self.mqttClient.Subscribe(self.topics) - - def onMQTTDisconnected(self): - Domoticz.Debug("onMQTTDisconnected") - - def onMQTTSubscribed(self): - Domoticz.Debug("onMQTTSubscribed") - - def onMQTTPublish(self, topic, rawmessage): - Domoticz.Debug("MQTT message: " + topic + " " + str(rawmessage)) - - message = "" - try: - message = json.loads(rawmessage.decode('utf8')) - except ValueError: - message = rawmessage.decode('utf8') - - if (topic in self.topics): - self.controller.onMqttMessage(topic, message) - -global _plugin -_plugin = BasePlugin() - -def onStart(): - global _plugin - _plugin.onStart() - -def onStop(): - global _plugin - _plugin.onStop() - -def onConnect(Connection, Status, Description): - global _plugin - _plugin.onConnect(Connection, Status, Description) - -def onDisconnect(Connection): - global _plugin - _plugin.onDisconnect(Connection) - -def onMessage(Connection, Data): - global _plugin - _plugin.onMessage(Connection, Data) - -def onCommand(Unit, Command, Level, Color): - global _plugin - _plugin.onCommand(Unit, Command, Level, Color) - -def onHeartbeat(): - global _plugin - _plugin.onHeartbeat() diff --git a/pio_local.ini.txt b/pio_local.ini.txt deleted file mode 100644 index 4c89f40e..00000000 --- a/pio_local.ini.txt +++ /dev/null @@ -1,3 +0,0 @@ -upload_protocol = espota -upload_flags = --port=8266 --auth=ems-esp-neo -upload_port = ems-esp.local diff --git a/src/.emsdevice.cpp.swp b/src/.emsdevice.cpp.swp deleted file mode 100644 index 9c75687c050dc2315db327c62859a15b8f7c93a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16384 zcmeI3U2Ggz6~`xS0u)+WN~Q8ZrCW!DUDvy7CjzyT#IWA1<4x>cv$KvHMd@gE_U_Kq zvophd*xe+CJRrntp&10;vU33#1lE zE%5(u0na`xd=hHh5vfAI({U*L=zsnvI^5{|jcwQ8imun9^KWdserNReT>Kdch~-45 z(~r~wsRdFCq!vgmkXj(MKx%>10;vU33#1lEEs$E^e_#QnB?u3o-6`4t!1w=g{r~2@ zg76CXHuwgR!Gqw{cjFxRCg9*G_{%+l@O^L#JP95K4}tfCBjB~W1>q&|BKRJ-1!V99 z$bkpJKi?$?KLbAo&wv(K0W;tbc>SG%@GJ0D@Ht?EA~*r=27kCq5MBmf2hV~ocmg~Q zR>2u?3W(s}?+}FN!PCG7XFwk0z zflmVooCPKDVeme17q}A~0s?sD2y6yE587ZATm&BicYrqzLuc@7@ErIocpCWNqhJP1 zgZsfBvAOaK@G|%o*Z>;nfb-x1a0DC%f5$j~7kmYL8QcIBAcDsL`N1P#)WLAHcw6xe zPZR|Di;kwlm97u-18k1A4*GZ8;YyRuIK1xCo`X!IH!1gL+P<4tK}PfBAX2# zQx%spyb^*JJ{moni{iOrqr6(Yv_B!zhVH2vB#o|7-Sm27s zmi?|h-cSqWVqLNQ|aFU6lhL4?W!1P47|J z!@5PwOE6QYsX`%Is9Xj^GkSno?cn#Nk2M-BXa_%;kEN+?IZR=$%~idvt5H+&%!$^! zZ4)F=W4B2)(q6e-u0JLEQ;duftdfaIJ?AJUW_z_J&((|7v!Uha#yt$qs^zF0u6&+St{mACb6p?O$`YI(kb*c^0zZ~dS1Tio&8 z{4>8J8^T^0B+xU zE{qg(T40j}z!bwmHi;!yLyNl0Y{%+2N;l6~rOiysn_@2K?6l^2wpb`^Y;5E^rk}T* zP601Qa}$~sX7kk0CCg{7X8A^oY05fB2vWJe&Rd8ss%7`$2z0Kx!p?D%JBopc9JY?xgHwUNH16{bx-VI64;{f@mT$HcdS;4o4CLSeb}}}5WaBBA zhkA@o;2GRVtwBQ9jc?q+{0h8-M$FZqSF<-t^EP$NjXEZhItcAlFbzyXvN7ih7^kk) z(%V5h)K&>z;^-aCV<)C(9%F17wHPWVr`dBg-3f*YagW}kXE{dx=)xg8(ARI~RjXTo z=eAnC_+5LUFey;|UqB5hq2{Fee=aKgHc{)hKo!h@N5CZb9qRqxg5LlId;r`;jsGc- z2d|=*|0%c%Jm7*0Km-qgf1#HD8~74f1M}cGp!)tt;5s-4?gek6R{s-t3A_M)2yOtX z=V!n_P^v3TKnhV7I+Rg;1r-*`~~QI6MO;mKo_imCxH&g zCUuY=sRdFCq!zeM3v5#Qu{}@0vx9PAGurr~EQ^k)hCqbwBJ8_^%{00=c#Qs{WB3f6 zji1hQtiVW+)}iR94lt+%Fc7`Eq3v2mS4X9DxZTLgS-&&G9W zW_y=HH&ZoimQK?6vNMSRp6-t#s-Rc_`W*J1a8hiYI&^2?<#`*s@t$F3Mi_dysnG)H zEFFmk+nEV=%${6vVXaipB@u$4-1gZ}d9}#OjD_Ai zaJ8^cP<~uzuuO&Jo?;-lp?fIgl)tdj6Dg0X$ z2ivh(cKv#=CXT)_+}-Xkq$8APp$4HFz~dlzgMSdkEUZc2J;lpvv_DBjZMb1f0Xy7a zpQ7RwF+AEIK{%&psSL)}LTuDf4%N^!?x*FbF;buaYwH>P)Tnu() z9p0gBgI=KV#OXwaG8=3#hugMzMLqPc#LR9Z;4MpydS>F7D^j59Z#4}^DoWiFOHvTp z5d(rrK5*Mau;=K2}StG=($`n_B0sH;iAH?9lZura8UK`t8K5v?wvQW&290>23RW&i*H From 690033c2d1ede7381a92fb5d052096e1198facbb Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 5 Nov 2020 16:51:16 +0100 Subject: [PATCH 016/225] F-Keys Linux+Putty, multible commands with ';' --- lib/uuid-console/src/shell.cpp | 163 +++++++++++++++------------------ 1 file changed, 72 insertions(+), 91 deletions(-) diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index 7156bddf..549de97d 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -213,82 +213,70 @@ void Shell::loop_normal() { default: if (esc_) { - if ((c == '[') || (c == 'O')) { - // start of sequence - } else if (c >= '0' && (c <= '9')) { - // numbers - esc_ = (esc_ & 0x7F) * 10 + c - '0'; - } else if (c == 'A') { - // cursor up + if (c == 'A') { // cursor up line_buffer_ = line_old_; cursor_ = 0; - esc_ = 0; - } else if (c == 'B') { - // cursor down + } else if (c == 'B') { // cursor down line_buffer_.clear(); cursor_ = 0; - esc_ = 0; - } else if (c == 'C') { - // cursor right + } else if (c == 'C') { // cursor right if (cursor_) { cursor_--; } - esc_ = 0; - } else if (c == 'D') { - // cursor left + } else if (c == 'D') { // cursor left if (cursor_ < line_buffer_.length()) { cursor_++; } - esc_ = 0; - } else if (c == 'H') { - // Home + } else if (c == 'H') { // Home cursor_ = line_buffer_.length(); - esc_ = 0; - } else if (c == 'F') { - // End + } else if (c == 'F') { // End cursor_ = 0; - esc_ = 0; - } else if (c == 'P') { - // F1 - set_command_str(F("help")); - esc_ = 0; - } else if (c == 'Q') { - // F2 - set_command_str(F("show")); - esc_ = 0; - } else if (c == '~') { - // function keys with number - if ((esc_ == 3) && cursor_) { - // del + } else if (c >= 'P' && c <= 'Z') { // F1 - F11, Linux, VT100 + // set esc-number like ESCn~ + esc_ = 11 + c - 'P'; + } + if (c == '~' || (c >= 'P' && c <= 'Z')) { // function keys with number ESCn~ + if ((esc_ == 3) && cursor_) { // del cursor_--; line_buffer_.erase(line_buffer_.length() - cursor_ - 1, 1); - } else if (esc_ == 4) { - // end + } else if (esc_ == 4) { // end cursor_ = 0; - } else if (esc_ == 1) { - // pos1 + } else if (esc_ == 1) { // pos1 cursor_ = line_buffer_.length(); - } else if (esc_ == 11) { - // F1 and F10 + } else if (esc_ == 11) { // F1 set_command_str(F("help")); - } else if (esc_ == 12) { - // F2 + } else if (esc_ == 12) { // F2 set_command_str(F("show")); - } else if (esc_ == 20) { - // F9 + } else if (esc_ == 13) { // F3 + set_command_str(F("log notice")); + } else if (esc_ == 14) { // F4 + set_command_str(F("log info")); + } else if (esc_ == 15) { // F5 + set_command_str(F("log debug")); + } else if (esc_ == 17) { // F6 + set_command_str(F("watch off")); + } else if (esc_ == 18) { // F7 + set_command_str(F("watch on")); + } else if (esc_ == 19) { // F8 + set_command_str(F("watch raw")); + } else if (esc_ == 20) { // F9 + set_command_str(F("call system info")); + } else if (esc_ == 21) { // F10 + set_command_str(F("call system report")); + } else if (esc_ == 23) { // F11 line_buffer_ = read_flash_string(F("send telegram \"0B \"")); cursor_ = 1; - } else if (esc_ == 15) { - // F5 - set_command_str(F("call system report")); + } else if (esc_ == 24) { // F12 + set_command_str(F("log debug; watch raw")); } esc_ = 0; - } else { - // all other chars end sequence + } else if (c >= '0' && (c <= '9')) { // numbers + esc_ = (esc_ & 0x7F) * 10 + c - '0'; + } else if ((c != '[') && (c != 'O')) { // all other chars except start of sequence esc_ = 0; } + // process normal ascii text } else if (c >= '\x20' && c <= '\x7E') { - // ASCII text if (line_buffer_.length() < maximum_command_line_length_) { line_buffer_.insert(line_buffer_.length() - cursor_, 1, c); } @@ -506,31 +494,41 @@ void Shell::maximum_command_line_length(size_t length) { } void Shell::process_command() { - CommandLine command_line{line_buffer_}; - - println(); - prompt_displayed_ = false; - - if (!command_line->empty()) { - if (commands_) { - auto execution = commands_->execute_command(*this, std::move(command_line)); - - if (execution.error != nullptr) { - println(execution.error); - } + if (line_buffer_.empty()) { + return; + } + line_old_ = line_buffer_; + while (!line_buffer_.empty()) { + size_t pos = line_buffer_.find(';'); + std::string line1; + if (pos < line_buffer_.length()) { + line1 = line_buffer_.substr(0, pos); + line_buffer_.erase(0, pos + 1); } else { - println(F("No commands configured")); + line1 = line_buffer_; + line_buffer_.clear(); + cursor_ = 0; } - line_old_ = line_buffer_; - } + CommandLine command_line{line1}; - cursor_ = 0; - line_buffer_.clear(); + println(); + prompt_displayed_ = false; - if (running()) { - display_prompt(); + if (!command_line->empty()) { + if (commands_) { + auto execution = commands_->execute_command(*this, std::move(command_line)); + if (execution.error != nullptr) { + println(execution.error); + } + } else { + println(F("No commands configured")); + } + } + ::yield(); } - ::yield(); + // if (running()) { + // display_prompt(); + // } } void Shell::process_completion() { @@ -538,11 +536,9 @@ void Shell::process_completion() { if (!command_line->empty() && commands_) { auto completion = commands_->complete_command(*this, command_line); - bool redisplay = false; if (!completion.help.empty()) { println(); - redisplay = true; for (auto & help : completion.help) { std::string help_line = help.to_string(maximum_command_line_length_); @@ -552,18 +548,8 @@ void Shell::process_completion() { } if (!completion.replacement->empty()) { - if (!redisplay) { - erase_current_line(); - prompt_displayed_ = false; - redisplay = true; - } - line_buffer_ = completion.replacement.to_string(maximum_command_line_length_); } - - if (redisplay) { - display_prompt(); - } } ::yield(); @@ -587,15 +573,10 @@ void Shell::process_password(bool completed) { } void Shell::invoke_command(const std::string & line) { - if (!line_buffer_.empty()) { - println(); - prompt_displayed_ = false; - } - if (!prompt_displayed_) { - display_prompt(); - } + erase_current_line(); + prompt_displayed_ = false; line_buffer_ = line; - print(line_buffer_); + display_prompt(); process_command(); } From 8165e697a7d08f9608316a487961566cbf22d8c4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 6 Nov 2020 13:17:51 +0100 Subject: [PATCH 017/225] solar pump working time, #598 --- CHANGELOG_LATEST.md | 1 + src/devices/solar.cpp | 14 +++++++++++--- src/devices/solar.h | 1 + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 229cc445..2d134446 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -2,6 +2,7 @@ ### Added - function keys in editor: cursor, del, pos1, end. F1=help, F2=show, F10=report +- add sm100 pump working time and energy units ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 0dd81630..132fc4a3 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -45,6 +45,7 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const s register_telegram_type(0x0364, F("SM100Status"), false, [&](std::shared_ptr t) { process_SM100Status(t); }); register_telegram_type(0x036A, F("SM100Status2"), false, [&](std::shared_ptr t) { process_SM100Status2(t); }); register_telegram_type(0x038E, F("SM100Energy"), true, [&](std::shared_ptr t) { process_SM100Energy(t); }); + register_telegram_type(0x0391, F("SM100Time"), true, [&](std::shared_ptr t) { process_SM100Time(t); }); } } @@ -175,9 +176,9 @@ void Solar::register_mqtt_ha_config(bool force) { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPumpModulation), this->device_type(), "solarPumpModulation", F_(percent), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(cylinderPumpModulation), this->device_type(), "cylinderPumpModulation", F_(percent), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpWorkMin), this->device_type(), "pumpWorkMin", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyLastHour), this->device_type(), "energyLastHour", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyToday), this->device_type(), "energyToday", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyTotal), this->device_type(), "energyTotal", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyLastHour), this->device_type(), "energyLastHour", F_(wh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyToday), this->device_type(), "energyToday", F_(wh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyTotal), this->device_type(), "energyTotal", F_(kwh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPump), this->device_type(), "solarPump", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(valveStatus), this->device_type(), "valveStatus", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankHeated), this->device_type(), "tankHeated", nullptr, nullptr); @@ -370,6 +371,13 @@ void Solar::process_SM100Energy(std::shared_ptr telegram) { changed_ |= telegram->read_value(energyTotal_, 8); // total / 10 in kWh } +/* + * SM100Time - type 0x0391 EMS+ for pump working time + */ +void Solar::process_SM100Time(std::shared_ptr telegram) { + changed_ |= telegram->read_value(pumpWorkMin_, 1, 3); +} + /* * Junkers ISM1 Solar Module - type 0x0103 EMS+ for energy readings * e.g. B0 00 FF 00 00 03 32 00 00 00 00 13 00 D6 00 00 00 FB D0 F0 diff --git a/src/devices/solar.h b/src/devices/solar.h index 526bf885..dcc649a1 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -78,6 +78,7 @@ class Solar : public EMSdevice { void process_SM100Status(std::shared_ptr telegram); void process_SM100Status2(std::shared_ptr telegram); void process_SM100Energy(std::shared_ptr telegram); + void process_SM100Time(std::shared_ptr telegram); void process_SM100wwTemperature(std::shared_ptr telegram); void process_SM100wwStatus(std::shared_ptr telegram); From f6ee6ec35fa6b0ad19dc34eb4204ed7ccf8e5650 Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Fri, 6 Nov 2020 14:25:40 +0100 Subject: [PATCH 018/225] show solar pumpWorkMin in shell --- src/devices/solar.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 132fc4a3..f865945d 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -77,6 +77,7 @@ void Solar::device_info_web(JsonArray & root) { print_value_json(root, F("energyLastHour"), nullptr, F_(energyLastHour), F_(wh), json); print_value_json(root, F("energyToday"), nullptr, F_(energyToday), F_(wh), json); print_value_json(root, F("energyTotal"), nullptr, F_(energyTotal), F_(kwh), json); + print_value_json(root, F("pumpWorkMin"), nullptr, F_(pumpWorkMin), F_(min), json); if (Helpers::hasValue(pumpWorkMin_)) { JsonObject dataElement = root.createNestedObject(); @@ -111,6 +112,7 @@ void Solar::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("energyLastHour"), nullptr, F_(energyLastHour), F_(wh), json); print_value_json(shell, F("energyToday"), nullptr, F_(energyToday), F_(wh), json); print_value_json(shell, F("energyTotal"), nullptr, F_(energyTotal), F_(kwh), json); + print_value_json(shell, F("pumpWorkMin"), nullptr, F_(pumpWorkMin), F_(min), json); if (Helpers::hasValue(pumpWorkMin_)) { shell.printfln(F(" %s: %d days %d hours %d minutes"), @@ -175,7 +177,7 @@ void Solar::register_mqtt_ha_config(bool force) { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatExchangerTemp), this->device_type(), "heatExchangerTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPumpModulation), this->device_type(), "solarPumpModulation", F_(percent), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(cylinderPumpModulation), this->device_type(), "cylinderPumpModulation", F_(percent), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpWorkMin), this->device_type(), "pumpWorkMin", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpWorkMin), this->device_type(), "pumpWorkMin", F_(min), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyLastHour), this->device_type(), "energyLastHour", F_(wh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyToday), this->device_type(), "energyToday", F_(wh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyTotal), this->device_type(), "energyTotal", F_(kwh), nullptr); From f997e88ca01e77db4fa245eb4abfa32b6aa6fd4f Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Fri, 6 Nov 2020 17:13:34 +0100 Subject: [PATCH 019/225] nofrost temperature signed --- src/devices/thermostat.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 8e949ca6..2fa17919 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -58,7 +58,7 @@ class Thermostat : public EMSdevice { uint8_t heatingtype = EMS_VALUE_UINT_NOTSET; // type of heating: 1 radiator, 2 convectors, 3 floors, 4 room supply uint8_t targetflowtemp = EMS_VALUE_UINT_NOTSET; uint8_t summertemp = EMS_VALUE_UINT_NOTSET; - uint8_t nofrosttemp = EMS_VALUE_UINT_NOTSET; + int8_t nofrosttemp = EMS_VALUE_INT_NOTSET; // signed -20°C to +10°C uint8_t designtemp = EMS_VALUE_UINT_NOTSET; // heating curve design temp at MinExtTemp int8_t offsettemp = EMS_VALUE_INT_NOTSET; // heating curve offest temp at roomtemp signed! uint8_t manualtemp = EMS_VALUE_UINT_NOTSET; @@ -325,4 +325,4 @@ class Thermostat : public EMSdevice { } // namespace emsesp -#endif \ No newline at end of file +#endif From effe7cf54321b2450f7083df658df97e2493d894 Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Sun, 8 Nov 2020 12:43:54 +0100 Subject: [PATCH 020/225] linefeed on empty command --- lib/uuid-console/src/shell.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index 549de97d..73258d39 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -495,7 +495,8 @@ void Shell::maximum_command_line_length(size_t length) { void Shell::process_command() { if (line_buffer_.empty()) { - return; + println(); + return; } line_old_ = line_buffer_; while (!line_buffer_.empty()) { From 0823c1bbae60c426b1568343d06377d1e17e2620 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 8 Nov 2020 15:26:22 +0100 Subject: [PATCH 021/225] add heating curve RC300 --- CHANGELOG_LATEST.md | 1 + src/devices/thermostat.cpp | 138 +++++++++++++++++++++++++++++++------ src/devices/thermostat.h | 8 ++- src/locale_EN.h | 1 + 4 files changed, 125 insertions(+), 23 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 2d134446..b90d40fc 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -3,6 +3,7 @@ ### Added - function keys in editor: cursor, del, pos1, end. F1=help, F2=show, F10=report - add sm100 pump working time and energy units +- heating curve parameters for RC300 ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 184da790..19ba9d83 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -114,10 +114,12 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i monitor_typeids = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; set_typeids = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2}; + curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E}; for (uint8_t i = 0; i < monitor_typeids.size(); i++) { register_telegram_type(monitor_typeids[i], F("RC300Monitor"), false, [&](std::shared_ptr t) { process_RC300Monitor(t); }); register_telegram_type(set_typeids[i], F("RC300Set"), false, [&](std::shared_ptr t) { process_RC300Set(t); }); register_telegram_type(summer_typeids[i], F("RC300Summer"), false, [&](std::shared_ptr t) { process_RC300Summer(t); }); + register_telegram_type(curve_typeids[i], F("RC300Curves"), false, [&](std::shared_ptr t) { process_RC300Curve(t); }); } register_telegram_type(0x2F5, F("RC300WWmode"), true, [&](std::shared_ptr t) { process_RC300WWmode(t); }); register_telegram_type(0x31B, F("RC300WWtemp"), true, [&](std::shared_ptr t) { process_RC300WWtemp(t); }); @@ -171,6 +173,9 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i for (uint8_t i = 0; i < summer_typeids.size(); i++) { EMSESP::send_read_request(summer_typeids[i], device_id); } + for (uint8_t i = 0; i < curve_typeids.size(); i++) { + EMSESP::send_read_request(curve_typeids[i], device_id); + } } // namespace emsesp // prepare data for Web UI @@ -226,6 +231,7 @@ void Thermostat::device_info_web(JsonArray & root) { print_value_json(root, F("designtemp"), FPSTR(prefix_str), F_(designtemp), F_(degrees), json); print_value_json(root, F("roominfluence"), FPSTR(prefix_str), F_(roominfluence), F_(degrees), json); print_value_json(root, F("flowtempoffset"), FPSTR(prefix_str), F_(flowtempoffset), F_(degrees), json); + print_value_json(root, F("maxflowtemp"), F_(2spaces), F_(maxflowtemp), F_(degrees), json); print_value_json(root, F("summertemp"), FPSTR(prefix_str), F_(summertemp), F_(degrees), json); print_value_json(root, F("summermode"), FPSTR(prefix_str), F_(summermode), F_(degrees), json); print_value_json(root, F("mode"), FPSTR(prefix_str), F_(mode), nullptr, json); @@ -310,6 +316,7 @@ void Thermostat::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("designtemp"), F_(2spaces), F_(designtemp), F_(degrees), json); print_value_json(shell, F("roominfluence"), F_(2spaces), F_(roominfluence), F_(degrees), json); print_value_json(shell, F("flowtempoffset"), F_(2spaces), F_(flowtempoffset), F_(degrees), json); + print_value_json(shell, F("maxflowtemp"), F_(2spaces), F_(maxflowtemp), F_(degrees), json); print_value_json(shell, F("summertemp"), F_(2spaces), F_(summertemp), F_(degrees), json); print_value_json(shell, F("summermode"), F_(2spaces), F_(summermode), F_(degrees), json); print_value_json(shell, F("mode"), F_(2spaces), F_(mode), nullptr, json); @@ -600,6 +607,11 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost dataThermostat["flowtempoffset"] = hc->flowtempoffset; } + // Flow temperature offset + if (Helpers::hasValue(hc->maxflowtemp)) { + dataThermostat["maxflowtemp"] = hc->maxflowtemp; + } + // Summer temperature if (Helpers::hasValue(hc->summertemp)) { dataThermostat["summertemp"] = hc->summertemp; @@ -679,13 +691,15 @@ std::shared_ptr Thermostat::heating_circuit(const ui // if hc_num is 0 then return the first existing hc in the list if (hc_num == AUTO_HEATING_CIRCUIT) { for (const auto & heating_circuit : heating_circuits_) { - return heating_circuit; + if (heating_circuit->is_active()) { + return heating_circuit; + } } } // otherwise find a match for (const auto & heating_circuit : heating_circuits_) { - if (heating_circuit->hc_num() == hc_num) { + if ((heating_circuit->hc_num() == hc_num) && heating_circuit->is_active()) { return heating_circuit; } } @@ -808,6 +822,7 @@ void Thermostat::register_mqtt_ha_config() { if (model == EMS_DEVICE_FLAG_RC300 || model == EMS_DEVICE_FLAG_RC100) { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dampedtemp), this->device_type(), "dampedtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(building), this->device_type(), "building", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(minexttemp), this->device_type(), "minexttemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(floordry), this->device_type(), "floordry", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(floordrytemp), this->device_type(), "floordrytemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwmode), this->device_type(), "wwmode", nullptr, nullptr); @@ -927,6 +942,11 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(manualtemp), this->device_type(), "manualtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(comforttemp), this->device_type(), "comforttemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), this->device_type(), "summertemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(designtemp), this->device_type(), "designtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(offsettemp), this->device_type(), "offsettemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), this->device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), this->device_type(), "roominfluence", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); break; case EMS_DEVICE_FLAG_RC20_2: Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(daytemp), this->device_type(), "daytemp", F_(degrees), F_(icontemperature)); @@ -944,6 +964,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), this->device_type(), "summertemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), this->device_type(), "roominfluence", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), this->device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); break; case EMS_DEVICE_FLAG_JUNKERS: Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), this->device_type(), "modetype", nullptr, nullptr); @@ -1094,6 +1115,12 @@ std::string Thermostat::mode_tostring(uint8_t mode) { case HeatingCircuit::Mode::DESIGN: return read_flash_string(F("design")); break; + case HeatingCircuit::Mode::MAXFLOW: + return read_flash_string(F("maxflow")); + break; + case HeatingCircuit::Mode::ROOMINFLUENCE: + return read_flash_string(F("roominfluence")); + break; default: case HeatingCircuit::Mode::UNKNOWN: return read_flash_string(F("unknown")); @@ -1268,8 +1295,28 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { // types 0x2AF ff void Thermostat::process_RC300Summer(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); + changed_ |= telegram->read_value(hc->roominfluence, 0); + changed_ |= telegram->read_value(hc->offsettemp, 2); changed_ |= telegram->read_value(hc->summertemp, 6); changed_ |= telegram->read_value(hc->summer_setmode, 7); + if (hc->heatingtype < 3) { + changed_ |= telegram->read_value(hc->designtemp, 4); + } else { + changed_ |= telegram->read_value(hc->designtemp, 5); + } +} + +// types 0x29B ff +void Thermostat::process_RC300Curve(std::shared_ptr telegram) { + std::shared_ptr hc = heating_circuit(telegram); + changed_ |= telegram->read_value(hc->heatingtype, 1); // 1=radiator, 2=convector, 3=floor + changed_ |= telegram->read_value(hc->nofrosttemp, 6); + if (hc->heatingtype < 3) { + changed_ |= telegram->read_value(hc->maxflowtemp, 8); + } else { + changed_ |= telegram->read_value(hc->maxflowtemp, 7); + } + } // types 0x31B (and 0x31C?) @@ -1306,6 +1353,7 @@ void Thermostat::process_RC300OutdoorTemp(std::shared_ptr telegr // 0x240 RC300 parameter void Thermostat::process_RC300Settings(std::shared_ptr telegram) { changed_ |= telegram->read_value(ibaBuildingType_, 9); // 1=light, 2=medium, 3=heavy + changed_ |= telegram->read_value(ibaMinExtTemperature_, 10); } // 0x267 RC300 floordrying @@ -1564,24 +1612,6 @@ bool Thermostat::set_control(const char * value, const int8_t id) { return true; } -// Set roominfluence -bool Thermostat::set_roominfluence(const char * value, const int8_t id) { - uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; - std::shared_ptr hc = heating_circuit(hc_num); - if (hc == nullptr) { - LOG_WARNING(F("Set roominfluence: Heating Circuit %d not found or activated"), hc_num); - return false; - } - int t = 0; - if (!Helpers::value2number(value, t)) { - LOG_WARNING(F("Set roominfluence: Invalid value")); - return false; - } - LOG_INFO(F("Setting roominfluence to %d"), t); - write_command(set_typeids[hc->hc_num() - 1], 4, t, set_typeids[hc->hc_num() - 1]); - return true; -} - // sets the thermostat ww working mode, where mode is a string, ems and ems+ bool Thermostat::set_wwmode(const char * value, const int8_t id) { uint8_t set = 0xFF; @@ -1957,6 +1987,12 @@ bool Thermostat::set_temperature(const float temperature, const std::string & mo if (mode_tostring(HeatingCircuit::Mode::DESIGN) == mode) { return set_temperature(temperature, HeatingCircuit::Mode::DESIGN, hc_num); } + if (mode_tostring(HeatingCircuit::Mode::MAXFLOW) == mode) { + return set_temperature(temperature, HeatingCircuit::Mode::DESIGN, hc_num); + } + if (mode_tostring(HeatingCircuit::Mode::ROOMINFLUENCE) == mode) { + return set_temperature(temperature, HeatingCircuit::Mode::DESIGN, hc_num); + } LOG_WARNING(F("Set temperature: Invalid mode")); return false; @@ -2005,7 +2041,44 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co case HeatingCircuit::Mode::ECO: offset = 0x04; // eco offset break; - default: + case HeatingCircuit::Mode::OFFSET: + offset = 2; + set_typeid = summer_typeids[hc->hc_num() - 1]; + validate_typeid = set_typeid; + break; + case HeatingCircuit::Mode::DESIGN: + set_typeid = summer_typeids[hc->hc_num() - 1]; + validate_typeid = set_typeid; + if (hc->heatingtype == 3) { + offset = 5; + } else { + offset = 4; + } + factor = 1; + break; + case HeatingCircuit::Mode::MAXFLOW: + set_typeid = curve_typeids[hc->hc_num() - 1]; + validate_typeid = set_typeid; + if (hc->heatingtype == 3) { + offset = 7; + } else { + offset = 8; + } + factor = 1; + break; + case HeatingCircuit::Mode::NOFROST: + set_typeid = curve_typeids[hc->hc_num() - 1]; + validate_typeid = set_typeid; + offset = 6; + factor = 1; + break; + case HeatingCircuit::Mode::ROOMINFLUENCE: + set_typeid = summer_typeids[hc->hc_num() - 1]; + validate_typeid = set_typeid; + offset = 0; + factor = 1; + break; + default: case HeatingCircuit::Mode::AUTO: uint8_t mode_ = hc->get_mode(this->flags()); if (mode_ == HeatingCircuit::Mode::MANUAL) { @@ -2067,6 +2140,14 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = EMS_OFFSET_RC35Set_temp_nofrost; factor = 1; break; + case HeatingCircuit::Mode::ROOMINFLUENCE: + offset = 4; + factor = 1; + break; + case HeatingCircuit::Mode::MAXFLOW: + offset = 15; + factor = 1; + break; default: case HeatingCircuit::Mode::AUTO: // automatic selection, if no type is defined, we use the standard code validate_typeid = monitor_typeids[hc->hc_num() - 1]; //get setpoint roomtemp back @@ -2226,6 +2307,14 @@ bool Thermostat::set_flowtempoffset(const char * value, const int8_t id) { return set_temperature_value(value, id, HeatingCircuit::Mode::FLOWOFFSET); } +bool Thermostat::set_maxflowtemp(const char * value, const int8_t id) { + return set_temperature_value(value, id, HeatingCircuit::Mode::MAXFLOW); +} + +bool Thermostat::set_roominfluence(const char * value, const int8_t id) { + return set_temperature_value(value, id, HeatingCircuit::Mode::ROOMINFLUENCE); +} + // API commands for MQTT and Console void Thermostat::add_commands() { // if this thermostat doesn't support write, don't add the commands @@ -2251,6 +2340,12 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("wwtemp"), [&](const char * value, const int8_t id) { return set_wwtemp(value, id); }); register_mqtt_cmd(F("wwtemplow"), [&](const char * value, const int8_t id) { return set_wwtemplow(value, id); }); register_mqtt_cmd(F("building"), [&](const char * value, const int8_t id) { return set_building(value, id); }); + register_mqtt_cmd(F("nofrosttemp"), [&](const char * value, const int8_t id) { return set_nofrosttemp(value, id); }); + register_mqtt_cmd(F("designtemp"), [&](const char * value, const int8_t id) { return set_designtemp(value, id); }); + register_mqtt_cmd(F("offsettemp"), [&](const char * value, const int8_t id) { return set_offsettemp(value, id); }); + register_mqtt_cmd(F("maxflowtemp"), [&](const char * value, const int8_t id) { return set_maxflowtemp(value, id); }); + register_mqtt_cmd(F("minexttemp"), [&](const char * value, const int8_t id) { return set_minexttemp(value, id); }); + register_mqtt_cmd(F("roominfluence"), [&](const char * value, const int8_t id) { return set_roominfluence(value, id); }); break; case EMS_DEVICE_FLAG_RC20_2: register_mqtt_cmd(F("nighttemp"), [&](const char * value, const int8_t id) { return set_nighttemp(value, id); }); @@ -2280,6 +2375,7 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("wwcircmode"), [&](const char * value, const int8_t id) { return set_wwcircmode(value, id); }); register_mqtt_cmd(F("roominfluence"), [&](const char * value, const int8_t id) { return set_roominfluence(value, id); }); register_mqtt_cmd(F("flowtempoffset"), [&](const char * value, const int8_t id) { return set_flowtempoffset(value, id); }); + register_mqtt_cmd(F("maxflowtemp"), [&](const char * value, const int8_t id) { return set_maxflowtemp(value, id); }); break; case EMS_DEVICE_FLAG_JUNKERS: register_mqtt_cmd(F("nofrosttemp"), [&](const char * value, const int8_t id) { return set_nofrosttemp(value, id); }); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 2fa17919..8e0902c6 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -65,6 +65,7 @@ class Thermostat : public EMSdevice { uint8_t summer_setmode = EMS_VALUE_UINT_NOTSET; uint8_t roominfluence = EMS_VALUE_UINT_NOTSET; uint8_t flowtempoffset = EMS_VALUE_UINT_NOTSET; + uint8_t maxflowtemp = EMS_VALUE_UINT_NOTSET; uint8_t hc_num() const { return hc_num_; @@ -86,7 +87,7 @@ class Thermostat : public EMSdevice { uint8_t get_mode(uint8_t flags) const; uint8_t get_mode_type(uint8_t flags) const; - enum Mode : uint8_t { UNKNOWN, OFF, MANUAL, AUTO, DAY, NIGHT, HEAT, NOFROST, ECO, HOLIDAY, COMFORT, OFFSET, DESIGN, SUMMER, FLOWOFFSET }; + enum Mode : uint8_t { UNKNOWN, OFF, MANUAL, AUTO, DAY, NIGHT, HEAT, NOFROST, ECO, HOLIDAY, COMFORT, OFFSET, DESIGN, SUMMER, FLOWOFFSET, MAXFLOW, ROOMINFLUENCE }; // for sorting based on hc number friend inline bool operator<(const std::shared_ptr & lhs, const std::shared_ptr & rhs) { @@ -131,6 +132,7 @@ class Thermostat : public EMSdevice { std::vector set_typeids; std::vector timer_typeids; std::vector summer_typeids; + std::vector curve_typeids; std::string datetime_; // date and time stamp std::string errorCode_; // code from 0xA2 as string i.e. "A22(816)" @@ -273,6 +275,7 @@ class Thermostat : public EMSdevice { void process_RC300OutdoorTemp(std::shared_ptr telegram); void process_RC300Settings(std::shared_ptr telegram); void process_RC300Floordry(std::shared_ptr telegram); + void process_RC300Curve(std::shared_ptr telegram); void process_JunkersMonitor(std::shared_ptr telegram); void process_JunkersSet(std::shared_ptr telegram); void process_JunkersSet2(std::shared_ptr telegram); @@ -308,6 +311,7 @@ class Thermostat : public EMSdevice { bool set_remotetemp(const char * value, const int8_t id); bool set_roominfluence(const char * value, const int8_t id); bool set_flowtempoffset(const char * value, const int8_t id); + bool set_maxflowtemp(const char * value, const int8_t id); // set functions - these don't use the id/hc, the parameters are ignored bool set_wwmode(const char * value, const int8_t id); @@ -325,4 +329,4 @@ class Thermostat : public EMSdevice { } // namespace emsesp -#endif +#endif \ No newline at end of file diff --git a/src/locale_EN.h b/src/locale_EN.h index d9bfa5d7..a5c35175 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -266,6 +266,7 @@ MAKE_PSTR(summertemp, "Summer temperature") MAKE_PSTR(summermode, "Summer mode") MAKE_PSTR(roominfluence, "Room influence") MAKE_PSTR(flowtempoffset, "Flow temperature offset") +MAKE_PSTR(maxflowtemp, "Max. flow temperature") MAKE_PSTR(mode, "Mode") MAKE_PSTR(modetype, "Mode type") From bb9ca4fc29d540f52ea7bcd757a48bb054898f79 Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:21:18 +0100 Subject: [PATCH 022/225] debug comments --- lib/framework/FSPersistence.h | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/framework/FSPersistence.h b/lib/framework/FSPersistence.h index 390be5ce..64ec179c 100644 --- a/lib/framework/FSPersistence.h +++ b/lib/framework/FSPersistence.h @@ -33,10 +33,12 @@ class FSPersistence { jsonDocument.shrinkToFit(); // added by proddy JsonObject jsonObject = jsonDocument.as(); - // debug added by Proddy - // Serial.printf("Read File: %s: ", _filePath); - // serializeJson(jsonDocument, Serial); - // Serial.println(); +// debug added by Proddy +#if defined(EMSESP_FORCE_SERIAL) + Serial.printf("Read File: %s: ", _filePath); + serializeJson(jsonDocument, Serial); + Serial.println(); +#endif _statefulService->updateWithoutPropagation(jsonObject, _stateUpdater); settingsFile.close(); @@ -64,12 +66,10 @@ class FSPersistence { return false; } -// debug added by Proddy -#if defined(EMSESP_DEBUG) - Serial.printf("Write File: %s: ", _filePath); - serializeJson(jsonDocument, Serial); - Serial.println(); -#endif + // debug added by Proddy + // Serial.printf("Write File: %s: ", _filePath); + // serializeJson(jsonDocument, Serial); + // Serial.println(); // serialize the data to the file serializeJson(jsonDocument, settingsFile); From 240710fbbe5888da9be342142d0c9689d7b4e32e Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:23:01 +0100 Subject: [PATCH 023/225] add syslog enabled - it was causing mem issues with esp32 --- .../src/project/EMSESPSettingsController.tsx | 17 +++++++--- interface/src/project/EMSESPtypes.ts | 1 + lib_standalone/ESP8266React.h | 3 +- src/WebSettingsService.cpp | 2 ++ src/WebSettingsService.h | 4 ++- src/system.cpp | 33 ++++++++++++++----- src/system.h | 1 + 7 files changed, 46 insertions(+), 15 deletions(-) diff --git a/interface/src/project/EMSESPSettingsController.tsx b/interface/src/project/EMSESPSettingsController.tsx index 24871b02..46060536 100644 --- a/interface/src/project/EMSESPSettingsController.tsx +++ b/interface/src/project/EMSESPSettingsController.tsx @@ -209,11 +209,21 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) Syslog + + } + label="Enable Syslog" + /> - OFF ERR INFO DEBUG read([&](WiFiSettings & settings) { hostname(settings.hostname.c_str()); }); @@ -207,8 +212,11 @@ void System::upload_status(bool in_progress) { // checks system health and handles LED flashing wizardry void System::loop() { #ifndef EMSESP_STANDALONE - syslog_.loop(); + if (syslog_enabled_) { + syslog_.loop(); + } #endif + led_monitor(); // check status and report back using the LED system_check(); // check system health if (analog_enabled_) { @@ -481,13 +489,18 @@ void System::show_system(uuid::console::Shell & shell) { EMSESP::webSettingsService.read([&](WebSettings & settings) { shell.println(); - shell.printfln(F("Syslog:")); - shell.print(F_(1space)); - shell.printfln(F_(host_fmt), !settings.syslog_host.isEmpty() ? settings.syslog_host.c_str() : uuid::read_flash_string(F_(unset)).c_str()); - shell.print(F_(1space)); - shell.printfln(F_(log_level_fmt), uuid::log::format_level_lowercase(static_cast(settings.syslog_level))); - shell.print(F_(1space)); - shell.printfln(F_(mark_interval_fmt), settings.syslog_mark_interval); + + if (!settings.syslog_enabled) { + shell.printfln(F("Syslog: disabled")); + } else { + shell.printfln(F("Syslog:")); + shell.print(F_(1space)); + shell.printfln(F_(host_fmt), !settings.syslog_host.isEmpty() ? settings.syslog_host.c_str() : uuid::read_flash_string(F_(unset)).c_str()); + shell.print(F_(1space)); + shell.printfln(F_(log_level_fmt), uuid::log::format_level_lowercase(static_cast(settings.syslog_level))); + shell.print(F_(1space)); + shell.printfln(F_(mark_interval_fmt), settings.syslog_mark_interval); + } }); #endif @@ -803,6 +816,7 @@ bool System::check_upgrade() { settings.shower_timer = custom_settings["shower_timer"] | EMSESP_DEFAULT_SHOWER_TIMER; settings.master_thermostat = custom_settings["master_thermostat"] | EMSESP_DEFAULT_MASTER_THERMOSTAT; settings.ems_bus_id = custom_settings["bus_id"] | EMSESP_DEFAULT_EMS_BUS_ID; + settings.syslog_enabled = false; settings.syslog_host = EMSESP_DEFAULT_SYSLOG_HOST; settings.syslog_level = EMSESP_DEFAULT_SYSLOG_LEVEL; settings.syslog_mark_interval = EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL; @@ -918,6 +932,7 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & json JsonObject node = json.createNestedObject("Settings"); node["tx_mode"] = settings.tx_mode; node["ems_bus_id"] = settings.ems_bus_id; + node["syslog_enabled"] = settings.syslog_enabled; node["syslog_level"] = settings.syslog_level; node["syslog_mark_interval"] = settings.syslog_mark_interval; node["syslog_host"] = settings.syslog_host; diff --git a/src/system.h b/src/system.h index 78f73f01..32b6a8fa 100644 --- a/src/system.h +++ b/src/system.h @@ -109,6 +109,7 @@ class System { // settings static bool hide_led_; + static bool syslog_enabled_; uint8_t syslog_level_; uint32_t syslog_mark_interval_; String syslog_host_; From 8c207a9ddfa2751b910ec694c69fcf770b6d641d Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:23:52 +0100 Subject: [PATCH 024/225] updated arduinojson to 6.17.1 --- lib/ArduinoJson/CHANGELOG.md | 7 ++ lib/ArduinoJson/CONTRIBUTING.md | 11 +++ lib/ArduinoJson/README.md | 2 +- .../src/ArduinoJson/Array/ElementProxy.hpp | 5 +- .../src/ArduinoJson/Configuration.hpp | 17 ++++ .../MsgPack/MsgPackDeserializer.hpp | 2 +- .../src/ArduinoJson/Object/MemberProxy.hpp | 5 +- .../src/ArduinoJson/Polyfills/integer.hpp | 30 +++++++ .../ArduinoJson/Variant/VariantOperators.hpp | 21 ++--- .../src/ArduinoJson/Variant/VariantRef.hpp | 6 +- .../src/ArduinoJson/Variant/VariantSlot.hpp | 14 ++- .../src/ArduinoJson/Variant/VariantTag.hpp | 16 ++++ lib/ArduinoJson/src/ArduinoJson/version.hpp | 4 +- lib/ArduinoJson/src/CMakeLists.txt | 90 ------------------- 14 files changed, 117 insertions(+), 113 deletions(-) create mode 100644 lib/ArduinoJson/CONTRIBUTING.md create mode 100644 lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp create mode 100644 lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp delete mode 100644 lib/ArduinoJson/src/CMakeLists.txt diff --git a/lib/ArduinoJson/CHANGELOG.md b/lib/ArduinoJson/CHANGELOG.md index d140edaa..c819bb79 100644 --- a/lib/ArduinoJson/CHANGELOG.md +++ b/lib/ArduinoJson/CHANGELOG.md @@ -1,6 +1,13 @@ ArduinoJson: change log ======================= +v6.17.1 (2020-11-07) +------- + +* Fixed error `ambiguous overload for 'operator|'` (issue #1411) +* Fixed `operator|(MemberProxy, JsonObject)` (issue #1415) +* Allowed more than 32767 values in non-embedded mode (issue #1414) + v6.17.0 (2020-10-19) ------- diff --git a/lib/ArduinoJson/CONTRIBUTING.md b/lib/ArduinoJson/CONTRIBUTING.md new file mode 100644 index 00000000..5d4b96cf --- /dev/null +++ b/lib/ArduinoJson/CONTRIBUTING.md @@ -0,0 +1,11 @@ +# Contribution to ArduinoJson + +First, thank you for taking the time to contribute to this project. + +You can submit changes via GitHub Pull Requests. + +Please: + +1. Unit test every change in behavior +2. Use clang-format in "file" mode to format the code +3. Consider using the Continuous Integration (Travis and AppVeyor) diff --git a/lib/ArduinoJson/README.md b/lib/ArduinoJson/README.md index 3516985e..bbb85272 100644 --- a/lib/ArduinoJson/README.md +++ b/lib/ArduinoJson/README.md @@ -2,7 +2,7 @@ --- -[![arduino-library-badge](https://www.ardu-badge.com/badge/ArduinoJson.svg?version=6.17.0)](https://www.ardu-badge.com/ArduinoJson/6.17.0) +[![arduino-library-badge](https://www.ardu-badge.com/badge/ArduinoJson.svg?version=6.17.1)](https://www.ardu-badge.com/ArduinoJson/6.17.1) [![Build Status](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/6.x?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x) [![Build Status](https://travis-ci.org/bblanchon/ArduinoJson.svg?branch=6.x)](https://travis-ci.org/bblanchon/ArduinoJson) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/arduinojson.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson) diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp index 6d47ef37..41166b6a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp @@ -19,10 +19,13 @@ namespace ARDUINOJSON_NAMESPACE { template class ElementProxy : public VariantOperators >, public VariantShortcuts >, - public Visitable { + public Visitable, + public VariantTag { typedef ElementProxy this_type; public: + typedef VariantRef variant_type; + FORCE_INLINE ElementProxy(TArray array, size_t index) : _array(array), _index(index) {} diff --git a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp index 42ba498e..32a6f339 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp @@ -83,6 +83,18 @@ #define ARDUINOJSON_DEFAULT_NESTING_LIMIT 10 #endif +// Number of bits to store the pointer to next node +// (saves RAM but limits the number of values in a document) +#ifndef ARDUINOJSON_SLOT_OFFSET_SIZE +#if defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ == 2 +// Address space == 16-bit => max 127 values +#define ARDUINOJSON_SLOT_OFFSET_SIZE 1 +#else +// Address space > 16-bit => max 32767 values +#define ARDUINOJSON_SLOT_OFFSET_SIZE 2 +#endif +#endif + #else // ARDUINOJSON_EMBEDDED_MODE // On a computer we have plenty of memory so we can use doubles @@ -114,6 +126,11 @@ #define ARDUINOJSON_DEFAULT_NESTING_LIMIT 50 #endif +// Number of bits to store the pointer to next node +#ifndef ARDUINOJSON_SLOT_OFFSET_SIZE +#define ARDUINOJSON_SLOT_OFFSET_SIZE 4 +#endif + #endif // ARDUINOJSON_EMBEDDED_MODE #ifdef ARDUINO diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp index 76228541..8d9d63d3 100644 --- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp @@ -48,7 +48,7 @@ class MsgPackDeserializer { template bool parseVariant(VariantData &variant, TFilter filter, NestingLimit nestingLimit) { - uint8_t code = 0; + uint8_t code = 0; if (!readByte(code)) return false; diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp index a9ee6034..1963deae 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp @@ -21,10 +21,13 @@ namespace ARDUINOJSON_NAMESPACE { template class MemberProxy : public VariantOperators >, public VariantShortcuts >, - public Visitable { + public Visitable, + public VariantTag { typedef MemberProxy this_type; public: + typedef VariantRef variant_type; + FORCE_INLINE MemberProxy(TObject variant, TStringRef key) : _object(variant), _key(key) {} diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp new file mode 100644 index 00000000..8dfebb09 --- /dev/null +++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp @@ -0,0 +1,30 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2020 +// MIT License + +#pragma once + +#include // int8_t, int16_t + +#include + +namespace ARDUINOJSON_NAMESPACE { + +template +struct int_t; + +template <> +struct int_t<8> { + typedef int8_t type; +}; + +template <> +struct int_t<16> { + typedef int16_t type; +}; + +template <> +struct int_t<32> { + typedef int32_t type; +}; +} // namespace ARDUINOJSON_NAMESPACE diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp index 79379e81..df4e9df2 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp @@ -9,6 +9,7 @@ #include #include #include +#include namespace ARDUINOJSON_NAMESPACE { @@ -17,23 +18,23 @@ CompareResult compare(const T1 &lhs, const T2 &rhs); // VariantCompare.cpp template struct VariantOperators { - // Returns the default value if the VariantRef is undefined of incompatible + // Returns the default value if the VariantRef is undefined or incompatible template - friend typename enable_if::value, T>::type operator|( - const TVariant &variant, const T &defaultValue) { + friend typename enable_if::value, T>::type operator|( + const TVariant &variant, T defaultValue) { if (variant.template is()) return variant.template as(); else return defaultValue; } - - // Returns the default value if the VariantRef is undefined of incompatible - // Special case for string: null is treated as undefined + // Returns the default value if the VariantRef is undefined or incompatible template - friend typename enable_if::value, T>::type operator|( - const TVariant &variant, T defaultValue) { - const char *value = variant.template as(); - return value ? value : defaultValue; + friend typename enable_if::value, typename T::variant_type>::type + operator|(const TVariant &variant, T defaultValue) { + if (variant) + return variant; + else + return defaultValue; } // value == TVariant diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp index c82ec1ea..a8b9067a 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRef.hpp @@ -16,6 +16,7 @@ #include #include #include +#include namespace ARDUINOJSON_NAMESPACE { @@ -23,12 +24,9 @@ namespace ARDUINOJSON_NAMESPACE { class ArrayRef; class ObjectRef; -template -class MemberProxy; - // Contains the methods shared by VariantRef and VariantConstRef template -class VariantRefBase { +class VariantRefBase : public VariantTag { public: // Tells wether the variant has the specified type. // Returns true if the variant has type type T, false otherwise. diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp index af646709..38494f3b 100644 --- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp @@ -4,15 +4,15 @@ #pragma once -#include // int8_t, int16_t - +#include +#include #include #include #include namespace ARDUINOJSON_NAMESPACE { -typedef conditional::type VariantSlotDiff; +typedef int_t::type VariantSlotDiff; class VariantSlot { // CAUTION: same layout as VariantData @@ -61,11 +61,19 @@ class VariantSlot { } void setNext(VariantSlot* slot) { + ARDUINOJSON_ASSERT(!slot || slot - this >= + numeric_limits::lowest()); + ARDUINOJSON_ASSERT(!slot || slot - this <= + numeric_limits::highest()); _next = VariantSlotDiff(slot ? slot - this : 0); } void setNextNotNull(VariantSlot* slot) { ARDUINOJSON_ASSERT(slot != 0); + ARDUINOJSON_ASSERT(slot - this >= + numeric_limits::lowest()); + ARDUINOJSON_ASSERT(slot - this <= + numeric_limits::highest()); _next = VariantSlotDiff(slot - this); } diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp new file mode 100644 index 00000000..e9a08aec --- /dev/null +++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp @@ -0,0 +1,16 @@ +// ArduinoJson - arduinojson.org +// Copyright Benoit Blanchon 2014-2020 +// MIT License + +#pragma once + +#include + +namespace ARDUINOJSON_NAMESPACE { + +struct VariantTag {}; + +template +struct IsVariant : is_base_of {}; + +} // namespace ARDUINOJSON_NAMESPACE diff --git a/lib/ArduinoJson/src/ArduinoJson/version.hpp b/lib/ArduinoJson/src/ArduinoJson/version.hpp index 46b6bc62..cd57a4da 100644 --- a/lib/ArduinoJson/src/ArduinoJson/version.hpp +++ b/lib/ArduinoJson/src/ArduinoJson/version.hpp @@ -4,7 +4,7 @@ #pragma once -#define ARDUINOJSON_VERSION "6.17.0" +#define ARDUINOJSON_VERSION "6.17.1" #define ARDUINOJSON_VERSION_MAJOR 6 #define ARDUINOJSON_VERSION_MINOR 17 -#define ARDUINOJSON_VERSION_REVISION 0 +#define ARDUINOJSON_VERSION_REVISION 1 diff --git a/lib/ArduinoJson/src/CMakeLists.txt b/lib/ArduinoJson/src/CMakeLists.txt deleted file mode 100644 index de0032ae..00000000 --- a/lib/ArduinoJson/src/CMakeLists.txt +++ /dev/null @@ -1,90 +0,0 @@ -# ArduinoJson - arduinojson.org -# Copyright Benoit Blanchon 2014-2020 -# MIT License - -# I have no idea what this is about, I simply followed the instructions from: -# https://dominikberner.ch/cmake-interface-lib/ - -add_library(ArduinoJson INTERFACE) - -include(GNUInstallDirs) - -# Adding the install interface generator expression makes sure that the include -# files are installed to the proper location (provided by GNUInstallDirs) -target_include_directories(ArduinoJson - INTERFACE - $ - $ -) - -target_compile_definitions(ArduinoJson - INTERFACE - ARDUINOJSON_DEBUG=$ -) - -# locations are provided by GNUInstallDirs -install( - TARGETS - ArduinoJson - EXPORT - ArduinoJson_Targets - ARCHIVE DESTINATION - ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION - ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION - ${CMAKE_INSTALL_BINDIR} -) - -include(CMakePackageConfigHelpers) - -if(${CMAKE_VERSION} VERSION_GREATER "3.14.0") - set(ARCH_INDEPENDENT "ARCH_INDEPENDENT") -endif() - -write_basic_package_version_file( - "${PROJECT_BINARY_DIR}/ArduinoJsonConfigVersion.cmake" - VERSION - ${PROJECT_VERSION} - COMPATIBILITY - SameMajorVersion - ${ARCH_INDEPENDENT} -) - -configure_package_config_file( - "${PROJECT_SOURCE_DIR}/extras/ArduinoJsonConfig.cmake.in" - "${PROJECT_BINARY_DIR}/ArduinoJsonConfig.cmake" - INSTALL_DESTINATION - ${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake) - -install( - EXPORT - ArduinoJson_Targets - FILE - ArduinoJsonTargets.cmake - DESTINATION - ${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake -) - -install( - FILES - "${PROJECT_BINARY_DIR}/ArduinoJsonConfig.cmake" - "${PROJECT_BINARY_DIR}/ArduinoJsonConfigVersion.cmake" - DESTINATION - "${CMAKE_INSTALL_DATAROOTDIR}/ArduinoJson/cmake" -) - -install( - FILES - ArduinoJson.h - ArduinoJson.hpp - DESTINATION - include -) - -install( - DIRECTORY - "${CMAKE_CURRENT_SOURCE_DIR}/ArduinoJson" - DESTINATION - include -) From 9285180f2d13033e45e36e7ce31092666ac8ce29 Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:24:18 +0100 Subject: [PATCH 025/225] add debug scripts back --- scripts/analyze_stackdmp.py | 26 +++ scripts/decoder.py | 319 ++++++++++++++++++++++++++++++++++++ scripts/decoder.sh | 4 + 3 files changed, 349 insertions(+) create mode 100644 scripts/analyze_stackdmp.py create mode 100644 scripts/decoder.py create mode 100644 scripts/decoder.sh diff --git a/scripts/analyze_stackdmp.py b/scripts/analyze_stackdmp.py new file mode 100644 index 00000000..a686a544 --- /dev/null +++ b/scripts/analyze_stackdmp.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python +from subprocess import call +import os + +# example stackdmp.txt would contain text like below copied & pasted from a 'crash dump' command: + +# >>>stack>>> +# 3fffff20: 3fff32f0 00000003 3fff3028 402101b2 +# 3fffff30: 3fffdad0 3fff3280 0000000d 402148aa +# 3fffff40: 3fffdad0 3fff3280 3fff326c 3fff32f0 +# 3fffff50: 0000000d 3fff326c 3fff3028 402103bd +# 3fffff60: 0000000d 3fff34cc 40211de4 3fff34cc +# 3fffff70: 3fff3028 3fff14c4 3fff301c 3fff34cc +# 3fffff80: 3fffdad0 3fff14c4 3fff3028 40210493 +# 3fffff90: 3fffdad0 00000000 3fff14c4 4020a738 +# 3fffffa0: 3fffdad0 00000000 3fff349c 40211e90 +# 3fffffb0: feefeffe feefeffe 3ffe8558 40100b01 +# <<[0-9]*)\\):$") +COUNTER_REGEX = re.compile('^epc1=(?P0x[0-9a-f]+) epc2=(?P0x[0-9a-f]+) epc3=(?P0x[0-9a-f]+) ' + 'excvaddr=(?P0x[0-9a-f]+) depc=(?P0x[0-9a-f]+)$') +CTX_REGEX = re.compile("^ctx: (?P.+)$") +POINTER_REGEX = re.compile('^sp: (?P[0-9a-f]+) end: (?P[0-9a-f]+) offset: (?P[0-9a-f]+)$') +STACK_BEGIN = '>>>stack>>>' +STACK_END = '<<[0-9a-f]+):\W+(?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+) (?P[0-9a-f]+)(\W.*)?$') + +StackLine = namedtuple("StackLine", ["offset", "content"]) + + +class ExceptionDataParser(object): + def __init__(self): + self.exception = None + + self.epc1 = None + self.epc2 = None + self.epc3 = None + self.excvaddr = None + self.depc = None + + self.ctx = None + + self.sp = None + self.end = None + self.offset = None + + self.stack = [] + + def _parse_backtrace(self, line): + if line.startswith('Backtrace:'): + self.stack = [StackLine(offset=0, content=(addr,)) for addr in BACKTRACE_REGEX.findall(line)] + return None + return self._parse_backtrace + + def _parse_exception(self, line): + match = EXCEPTION_REGEX.match(line) + if match is not None: + self.exception = int(match.group('exc')) + return self._parse_counters + return self._parse_exception + + def _parse_counters(self, line): + match = COUNTER_REGEX.match(line) + if match is not None: + self.epc1 = match.group("epc1") + self.epc2 = match.group("epc2") + self.epc3 = match.group("epc3") + self.excvaddr = match.group("excvaddr") + self.depc = match.group("depc") + return self._parse_ctx + return self._parse_counters + + def _parse_ctx(self, line): + match = CTX_REGEX.match(line) + if match is not None: + self.ctx = match.group("ctx") + return self._parse_pointers + return self._parse_ctx + + def _parse_pointers(self, line): + match = POINTER_REGEX.match(line) + if match is not None: + self.sp = match.group("sp") + self.end = match.group("end") + self.offset = match.group("offset") + return self._parse_stack_begin + return self._parse_pointers + + def _parse_stack_begin(self, line): + if line == STACK_BEGIN: + return self._parse_stack_line + return self._parse_stack_begin + + def _parse_stack_line(self, line): + if line != STACK_END: + match = STACK_REGEX.match(line) + if match is not None: + self.stack.append(StackLine(offset=match.group("off"), + content=(match.group("c1"), match.group("c2"), match.group("c3"), + match.group("c4")))) + return self._parse_stack_line + return None + + def parse_file(self, file, platform, stack_only=False): + if platform == 'ESP32': + func = self._parse_backtrace + else: + func = self._parse_exception + if stack_only: + func = self._parse_stack_begin + + for line in file: + func = func(line.strip()) + if func is None: + break + + if func is not None: + print("ERROR: Parser not complete!") + sys.exit(1) + + +class AddressResolver(object): + def __init__(self, tool_path, elf_path): + self._tool = tool_path + self._elf = elf_path + self._address_map = {} + + def _lookup(self, addresses): + cmd = [self._tool, "-aipfC", "-e", self._elf] + [addr for addr in addresses if addr is not None] + + if sys.version_info[0] < 3: + output = subprocess.check_output(cmd) + else: + output = subprocess.check_output(cmd, encoding="utf-8") + + line_regex = re.compile("^(?P[0-9a-fx]+): (?P.+)$") + + last = None + for line in output.splitlines(): + line = line.strip() + match = line_regex.match(line) + + if match is None: + if last is not None and line.startswith('(inlined by)'): + line = line [12:].strip() + self._address_map[last] += ("\n \-> inlined by: " + line) + continue + + if match.group("result") == '?? ??:0': + continue + + self._address_map[match.group("addr")] = match.group("result") + last = match.group("addr") + + def fill(self, parser): + addresses = [parser.epc1, parser.epc2, parser.epc3, parser.excvaddr, parser.sp, parser.end, parser.offset] + for line in parser.stack: + addresses.extend(line.content) + + self._lookup(addresses) + + def _sanitize_addr(self, addr): + if addr.startswith("0x"): + addr = addr[2:] + + fill = "0" * (8 - len(addr)) + return "0x" + fill + addr + + def resolve_addr(self, addr): + out = self._sanitize_addr(addr) + + if out in self._address_map: + out += ": " + self._address_map[out] + + return out + + def resolve_stack_addr(self, addr, full=True): + addr = self._sanitize_addr(addr) + if addr in self._address_map: + return addr + ": " + self._address_map[addr] + + if full: + return "[DATA (0x" + addr + ")]" + + return None + + +def print_addr(name, value, resolver): + print("{}:{} {}".format(name, " " * (8 - len(name)), resolver.resolve_addr(value))) + + +def print_stack_full(lines, resolver): + print("stack:") + for line in lines: + print(line.offset + ":") + for content in line.content: + print(" " + resolver.resolve_stack_addr(content)) + + +def print_stack(lines, resolver): + print("stack:") + for line in lines: + for content in line.content: + out = resolver.resolve_stack_addr(content, full=False) + if out is None: + continue + print(out) + + +def print_result(parser, resolver, platform, full=True, stack_only=False): + if platform == 'ESP8266' and not stack_only: + print('Exception: {} ({})'.format(parser.exception, EXCEPTIONS[parser.exception])) + + print("") + print_addr("epc1", parser.epc1, resolver) + print_addr("epc2", parser.epc2, resolver) + print_addr("epc3", parser.epc3, resolver) + print_addr("excvaddr", parser.excvaddr, resolver) + print_addr("depc", parser.depc, resolver) + + print("") + print("ctx: " + parser.ctx) + + print("") + print_addr("sp", parser.sp, resolver) + print_addr("end", parser.end, resolver) + print_addr("offset", parser.offset, resolver) + + print("") + if full: + print_stack_full(parser.stack, resolver) + else: + print_stack(parser.stack, resolver) + + +def parse_args(): + parser = argparse.ArgumentParser(description="decode ESP Stacktraces.") + + parser.add_argument("-p", "--platform", help="The platform to decode from", choices=PLATFORMS.keys(), + default="ESP8266") + parser.add_argument("-t", "--tool", help="Path to the xtensa toolchain", + default="~/.platformio/packages/toolchain-xtensa/") + parser.add_argument("-e", "--elf", help="path to elf file", required=True) + parser.add_argument("-f", "--full", help="Print full stack dump", action="store_true") + parser.add_argument("-s", "--stack_only", help="Decode only a stractrace", action="store_true") + parser.add_argument("file", help="The file to read the exception data from ('-' for STDIN)", default="-") + + return parser.parse_args() + + +if __name__ == "__main__": + args = parse_args() + + if args.file == "-": + file = sys.stdin + else: + if not os.path.exists(args.file): + print("ERROR: file " + args.file + " not found") + sys.exit(1) + file = open(args.file, "r") + + addr2line = os.path.join(os.path.abspath(os.path.expanduser(args.tool)), + "bin/xtensa-" + PLATFORMS[args.platform] + "-elf-addr2line") + if os.name == 'nt': + addr2line += '.exe' + if not os.path.exists(addr2line): + print("ERROR: addr2line not found (" + addr2line + ")") + + elf_file = os.path.abspath(os.path.expanduser(args.elf)) + if not os.path.exists(elf_file): + print("ERROR: elf file not found (" + elf_file + ")") + + parser = ExceptionDataParser() + resolver = AddressResolver(addr2line, elf_file) + + parser.parse_file(file, args.platform, args.stack_only) + resolver.fill(parser) + + print_result(parser, resolver, args.platform, args.full, args.stack_only) \ No newline at end of file diff --git a/scripts/decoder.sh b/scripts/decoder.sh new file mode 100644 index 00000000..93802af7 --- /dev/null +++ b/scripts/decoder.sh @@ -0,0 +1,4 @@ +# python decoder.py -s -e ../.pio/build/esp8266-local/firmware.elf stackdmp.txt + +python decoder.py -p ESP32 -e ../.pio/build/esp32-local/firmware.elf stackdmp.txt -t ~/.platformio/packages/toolchain-xtensa32 + From 9662d60c941e8417413498a0e9b159270b9f02ca Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:26:36 +0100 Subject: [PATCH 026/225] fix error in debug mode --- src/WebAPIService.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index dd5ef85c..49974171 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -98,7 +98,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { cmd.c_str(), data.c_str(), id.c_str(), - ok ? F("OK") : F("Invalid")); + ok ? PSTR("OK") : PSTR("Invalid")); EMSESP::logger().info(debug.c_str()); if (json.size()) { char buffer2[EMSESP_MAX_JSON_SIZE_LARGE]; From ba02c1e08421f28e7d804816d7ab8bc2c76ac6ff Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:36:28 +0100 Subject: [PATCH 027/225] formatting --- src/emsdevice.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/emsdevice.h b/src/emsdevice.h index 3ea0d900..81ac08c4 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -283,8 +283,7 @@ class EMSdevice { uint16_t telegram_type_id_; // it's type_id const __FlashStringHelper * telegram_type_name_; // e.g. RC20Message bool fetch_; // if this type_id be queried automatically - - process_function_p process_function_; + process_function_p process_function_; TelegramFunction(uint16_t telegram_type_id, const __FlashStringHelper * telegram_type_name, bool fetch, process_function_p process_function) : telegram_type_id_(telegram_type_id) From db1d32ddc2182a8ced3a2f78c3def479df98432e Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:36:48 +0100 Subject: [PATCH 028/225] test function changes --- src/console.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/src/console.cpp b/src/console.cpp index 95e03ce7..ac96c2cb 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -20,9 +20,7 @@ #include "emsesp.h" #include "version.h" -#if defined(EMSESP_DEBUG) #include "test/test.h" -#endif namespace emsesp { @@ -494,28 +492,20 @@ void Console::load_standard_commands(unsigned int context) { #if defined(EMSESP_DEBUG) EMSESPShell::commands->add_command(context, CommandFlags::USER, - flash_string_vector{F_(test)}, + flash_string_vector{F("test")}, flash_string_vector{F_(name_optional)}, - [](Shell & shell, const std::vector & arguments __attribute__((unused))) { + [](Shell & shell, const std::vector & arguments) { if (arguments.size() == 0) { Test::run_test(shell, "default"); } else { Test::run_test(shell, arguments.front()); } }); -#endif - -#if defined(EMSESP_STANDALONE) EMSESPShell::commands->add_command(context, CommandFlags::USER, flash_string_vector{F("t")}, - flash_string_vector{F_(name_optional)}, [](Shell & shell, const std::vector & arguments __attribute__((unused))) { - if (arguments.size() == 0) { - Test::run_test(shell, "default"); - } else { - Test::run_test(shell, arguments.front()); - } + Test::run_test(shell, "default"); }); #endif From bf5183be8af4175ad74bc3f5ea6d736e86bd1d0b Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:38:22 +0100 Subject: [PATCH 029/225] mqtt experiments to reduce heap --- src/mqtt.cpp | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 0d9d828e..09febd6f 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -211,14 +211,12 @@ void Mqtt::show_mqtt(uuid::console::Shell & shell) { } } shell.println(); -} // namespace emsesp +} -#if defined(EMSESP_DEBUG) // simulate receiving a MQTT message, used only for testing void Mqtt::incoming(const char * topic, const char * payload) { on_message(topic, payload, strlen(payload)); } -#endif // received an MQTT message that we subscribed too void Mqtt::on_message(const char * topic, const char * payload, size_t len) { @@ -697,8 +695,6 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } - return; // TODO - StaticJsonDocument doc; doc["name"] = name; @@ -768,11 +764,12 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, strcpy(new_entity, entity); } - std::string device_name = EMSdevice::device_type_2_device_name(device_type); + char device_name[50]; + strcpy(device_name, EMSdevice::device_type_2_device_name(device_type).c_str()); // build unique identifier, replacing all . with _ as not to break HA std::string uniq(50, '\0'); - snprintf_P(&uniq[0], uniq.capacity() + 1, PSTR("%s_%s"), device_name.c_str(), new_entity); + snprintf_P(&uniq[0], uniq.capacity() + 1, PSTR("%s_%s"), device_name, new_entity); std::replace(uniq.begin(), uniq.end(), '.', '_'); // topic @@ -782,9 +779,9 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, // state topic char stat_t[MQTT_TOPIC_MAX_SIZE]; if (suffix != nullptr) { - snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/%s_data%s"), hostname_.c_str(), device_name.c_str(), uuid::read_flash_string(suffix).c_str()); + snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/%s_data%s"), hostname_.c_str(), device_name, uuid::read_flash_string(suffix).c_str()); } else { - snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/%s_data"), hostname_.c_str(), device_name.c_str()); + snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/%s_data"), hostname_.c_str(), device_name); } // value template @@ -793,20 +790,23 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, // ha device char ha_device[40]; - snprintf_P(ha_device, sizeof(ha_device), PSTR("ems-esp-%s"), device_name.c_str()); + snprintf_P(ha_device, sizeof(ha_device), PSTR("ems-esp-%s"), device_name); // name char new_name[50]; if (prefix != nullptr) { - snprintf_P(new_name, sizeof(new_name), PSTR("%s %s %s"), device_name.c_str(), prefix, uuid::read_flash_string(name).c_str()); + snprintf_P(new_name, sizeof(new_name), PSTR("%s %s %s"), device_name, prefix, uuid::read_flash_string(name).c_str()); } else { - snprintf_P(new_name, sizeof(new_name), PSTR("%s %s"), device_name.c_str(), uuid::read_flash_string(name).c_str()); + snprintf_P(new_name, sizeof(new_name), PSTR("%s %s"), device_name, uuid::read_flash_string(name).c_str()); } new_name[0] = toupper(new_name[0]); // capitalize first letter StaticJsonDocument doc; + + // DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_SMALL); + doc["name"] = new_name; - doc["uniq_id"] = uniq; + doc["uniq_id"] = uniq.c_str(); if (uom != nullptr) { doc["unit_of_meas"] = uom; } @@ -823,6 +823,9 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, // std::string payload_text; char payload_text[300]; serializeJson(doc, payload_text); // convert json to string + // queue_publish_message(topic, payload_text, true); + + // publish_retain(topic, doc.as(), true); uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); if (!packet_id) { @@ -835,7 +838,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, #endif } - // delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp + delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp } } // namespace emsesp From 2d0272d956ed6d6d89f6cfb5c6d7617efda4c1dd Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:38:33 +0100 Subject: [PATCH 030/225] formatting --- src/mqtt.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mqtt.h b/src/mqtt.h index 6111c073..ed1970cb 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -118,9 +118,7 @@ class Mqtt { mqttClient_->disconnect(); } -#if defined(EMSESP_DEBUG) void incoming(const char * topic, const char * payload); // for testing only -#endif static bool connected() { #if defined(EMSESP_STANDALONE) From 4f57d583fae781da85ad2b1a69d07ceec79ebe27 Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:38:50 +0100 Subject: [PATCH 031/225] test for crashes --- src/test/test.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index 31ceed99..b4dbb0bf 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -26,8 +26,11 @@ namespace emsesp { // create some fake test data // used with the 'test' command, under su/admin void Test::run_test(uuid::console::Shell & shell, const std::string & command) { + // switch to su + shell.add_flags(CommandFlags::ADMIN); + if (command == "default") { - run_test(shell, "mixer"); // add the default test case here + run_test(shell, "general"); // add the default test case here } if (command.empty()) { @@ -239,6 +242,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.printfln(F("Testing adding a boiler & thermostat...")); std::string version("1.2.3"); + EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline EMSESP::add_device(0x18, 157, version, EMSdevice::Brand::BOSCH); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 From 3d9a6ee017dff5d820efa919a41beb5bcdd77330 Mon Sep 17 00:00:00 2001 From: Paul Date: Sun, 8 Nov 2020 20:42:50 +0100 Subject: [PATCH 032/225] updated example - for debugging --- example_pio_local.ini | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/example_pio_local.ini b/example_pio_local.ini index 1c60ad8e..b34ec881 100644 --- a/example_pio_local.ini +++ b/example_pio_local.ini @@ -1,6 +1,29 @@ +[platformio] +; default_envs = esp32-local +default_envs = esp8266-local + [env] -upload_protocol = espota -upload_flags = - --port=8266 - --auth=ems-esp-neo -upload_port = ems-esp.local +; upload_port = COM3 +upload_port = COM7 + +; upload_protocol = espota +; upload_flags = +; --port=8266 +; --auth=ems-esp-neo +; upload_port = ems-esp.local + +[common] +debug_flags = -DEMSESP_DEBUG + +[env:esp32-local] +monitor_filters = esp32_exception_decoder +debug_tool = esp-prog +debug_init_break = tbreak setup +build_type = debug +extra_scripts = + ; pre:scripts/build_interface.py + +[env:esp8266-local] +monitor_filters = esp8266_exception_decoder +extra_scripts = + ; pre:scripts/build_interface.py From a94db9754af84af289498cb31caf99b98128eb37 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 8 Nov 2020 20:53:18 +0100 Subject: [PATCH 033/225] formatting --- src/telegram.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/telegram.h b/src/telegram.h index 57c36a54..52a71bd9 100644 --- a/src/telegram.h +++ b/src/telegram.h @@ -384,7 +384,7 @@ class TxService : public EMSbus { void send_telegram(const QueuedTxTelegram & tx_telegram); void send_telegram(const uint8_t * data, const uint8_t length); -}; // namespace emsesp +}; } // namespace emsesp From 4ce076317022e0a48f93748fcd6ae399319fc07b Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 8 Nov 2020 20:53:49 +0100 Subject: [PATCH 034/225] remove test, change "send telegram" format --- src/locale_EN.h | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/locale_EN.h b/src/locale_EN.h index a5c35175..1b99a3fa 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -67,10 +67,6 @@ MAKE_PSTR_WORD(bar) MAKE_PSTR_WORD(min) MAKE_PSTR_WORD(uA) -#if defined(EMSESP_DEBUG) -MAKE_PSTR_WORD(test) -#endif - // for commands MAKE_PSTR_WORD(call) MAKE_PSTR_WORD(cmd) @@ -116,7 +112,7 @@ MAKE_PSTR(bus_id_fmt, "Bus ID = %02X") MAKE_PSTR(watchid_optional, "[ID]") MAKE_PSTR(watch_format_optional, "[off | on | raw]") MAKE_PSTR(invalid_watch, "Invalid watch type") -MAKE_PSTR(data_mandatory, "<\"XX XX ...\">") +MAKE_PSTR(data_mandatory, "\"XX XX ...\"") MAKE_PSTR(percent, "%") MAKE_PSTR(degrees, "°C") MAKE_PSTR(asterisks, "********") From 5088e3acee97a1bde815f1c3daf83677269760a1 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 8 Nov 2020 20:54:08 +0100 Subject: [PATCH 035/225] auto formatting --- src/devices/thermostat.cpp | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 19ba9d83..09d077ca 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -114,7 +114,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i monitor_typeids = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; set_typeids = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; summer_typeids = {0x02AF, 0x02B0, 0x02B1, 0x02B2}; - curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E}; + curve_typeids = {0x029B, 0x029C, 0x029D, 0x029E}; for (uint8_t i = 0; i < monitor_typeids.size(); i++) { register_telegram_type(monitor_typeids[i], F("RC300Monitor"), false, [&](std::shared_ptr t) { process_RC300Monitor(t); }); register_telegram_type(set_typeids[i], F("RC300Set"), false, [&](std::shared_ptr t) { process_RC300Set(t); }); @@ -176,7 +176,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i for (uint8_t i = 0; i < curve_typeids.size(); i++) { EMSESP::send_read_request(curve_typeids[i], device_id); } -} // namespace emsesp +} // prepare data for Web UI void Thermostat::device_info_web(JsonArray & root) { @@ -1316,7 +1316,6 @@ void Thermostat::process_RC300Curve(std::shared_ptr telegram) { } else { changed_ |= telegram->read_value(hc->maxflowtemp, 7); } - } // types 0x31B (and 0x31C?) @@ -2042,7 +2041,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = 0x04; // eco offset break; case HeatingCircuit::Mode::OFFSET: - offset = 2; + offset = 2; set_typeid = summer_typeids[hc->hc_num() - 1]; validate_typeid = set_typeid; break; @@ -2066,19 +2065,19 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co } factor = 1; break; - case HeatingCircuit::Mode::NOFROST: + case HeatingCircuit::Mode::NOFROST: set_typeid = curve_typeids[hc->hc_num() - 1]; validate_typeid = set_typeid; - offset = 6; - factor = 1; + offset = 6; + factor = 1; break; case HeatingCircuit::Mode::ROOMINFLUENCE: set_typeid = summer_typeids[hc->hc_num() - 1]; validate_typeid = set_typeid; - offset = 0; - factor = 1; + offset = 0; + factor = 1; break; - default: + default: case HeatingCircuit::Mode::AUTO: uint8_t mode_ = hc->get_mode(this->flags()); if (mode_ == HeatingCircuit::Mode::MANUAL) { @@ -2387,5 +2386,4 @@ void Thermostat::add_commands() { } } - } // namespace emsesp From 7d73efbd316032b906caad255b6f791859e6d5f4 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 8 Nov 2020 20:54:24 +0100 Subject: [PATCH 036/225] prevent crash when `send telegram` too short --- src/telegram.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/telegram.cpp b/src/telegram.cpp index 1da3f217..4fb9e78a 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -429,6 +429,11 @@ void TxService::add(const uint8_t operation, // format is EMS 1.0 (src, dest, type_id, offset, data) // length is the length of the whole telegram data, excluding the CRC void TxService::add(uint8_t operation, const uint8_t * data, const uint8_t length, const bool front) { + // check length + if (length < 5) { + return; + } + // build header. src, dest and offset have fixed positions uint8_t src = data[0]; uint8_t dest = data[1]; From 8c62977ad3b71253e68726a527f59460c0ecc6a4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 10 Nov 2020 11:22:03 +0100 Subject: [PATCH 037/225] thermostat minflowtemp and fixes --- src/devices/thermostat.cpp | 78 ++++++++++++++++++++++++++++++++++++-- src/devices/thermostat.h | 5 ++- src/locale_EN.h | 4 ++ 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 09d077ca..8fdf26c4 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -199,6 +199,7 @@ void Thermostat::device_info_web(JsonArray & root) { print_value_json(root, F("wwmode"), nullptr, F_(wwmode), nullptr, json_main); print_value_json(root, F("wwtemp"), nullptr, F_(wwtemp), nullptr, json_main); print_value_json(root, F("wwtemplow"), nullptr, F_(wwtemplow), nullptr, json_main); + print_value_json(root, F("wwextra1"), nullptr, F_(wwextra1), nullptr, json_main); print_value_json(root, F("wwcircmode"), nullptr, F_(wwcircmode), nullptr, json_main); } @@ -231,6 +232,7 @@ void Thermostat::device_info_web(JsonArray & root) { print_value_json(root, F("designtemp"), FPSTR(prefix_str), F_(designtemp), F_(degrees), json); print_value_json(root, F("roominfluence"), FPSTR(prefix_str), F_(roominfluence), F_(degrees), json); print_value_json(root, F("flowtempoffset"), FPSTR(prefix_str), F_(flowtempoffset), F_(degrees), json); + print_value_json(root, F("minflowtemp"), F_(2spaces), F_(minflowtemp), F_(degrees), json); print_value_json(root, F("maxflowtemp"), F_(2spaces), F_(maxflowtemp), F_(degrees), json); print_value_json(root, F("summertemp"), FPSTR(prefix_str), F_(summertemp), F_(degrees), json); print_value_json(root, F("summermode"), FPSTR(prefix_str), F_(summermode), F_(degrees), json); @@ -284,6 +286,7 @@ void Thermostat::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("wwmode"), nullptr, F_(wwmode), nullptr, json_main); print_value_json(shell, F("wwtemp"), nullptr, F_(wwtemp), nullptr, json_main); print_value_json(shell, F("wwtemplow"), nullptr, F_(wwtemplow), nullptr, json_main); + print_value_json(shell, F("wwextra1"), nullptr, F_(wwextra1), nullptr, json_main); print_value_json(shell, F("wwcircmode"), nullptr, F_(wwcircmode), nullptr, json_main); } @@ -316,6 +319,7 @@ void Thermostat::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("designtemp"), F_(2spaces), F_(designtemp), F_(degrees), json); print_value_json(shell, F("roominfluence"), F_(2spaces), F_(roominfluence), F_(degrees), json); print_value_json(shell, F("flowtempoffset"), F_(2spaces), F_(flowtempoffset), F_(degrees), json); + print_value_json(shell, F("minflowtemp"), F_(2spaces), F_(minflowtemp), F_(degrees), json); print_value_json(shell, F("maxflowtemp"), F_(2spaces), F_(maxflowtemp), F_(degrees), json); print_value_json(shell, F("summertemp"), F_(2spaces), F_(summertemp), F_(degrees), json); print_value_json(shell, F("summermode"), F_(2spaces), F_(summermode), F_(degrees), json); @@ -480,6 +484,16 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { rootThermostat["wwtemplow"] = wwTempLow_; } + // Warm water extra1 + if (Helpers::hasValue(wwExtra1_)) { + rootThermostat["wwextra1"] = wwExtra1_; + } + + // Warm water extra2 + if (Helpers::hasValue(wwExtra2_)) { + rootThermostat["wwextra2"] = wwExtra2_; + } + // Warm Water circulation mode if (Helpers::hasValue(wwCircMode_)) { char s[7]; @@ -607,7 +621,12 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost dataThermostat["flowtempoffset"] = hc->flowtempoffset; } - // Flow temperature offset + // Min Flow temperature offset + if (Helpers::hasValue(hc->minflowtemp)) { + dataThermostat["minflowtemp"] = hc->minflowtemp; + } + + // Max Flow temperature offset if (Helpers::hasValue(hc->maxflowtemp)) { dataThermostat["maxflowtemp"] = hc->maxflowtemp; } @@ -944,6 +963,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), this->device_type(), "summertemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(designtemp), this->device_type(), "designtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(offsettemp), this->device_type(), "offsettemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(minflowtemp), this->device_type(), "minflowtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), this->device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), this->device_type(), "roominfluence", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); @@ -964,6 +984,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), this->device_type(), "summertemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), this->device_type(), "roominfluence", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(minflowtemp), this->device_type(), "minflowtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), this->device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); break; case EMS_DEVICE_FLAG_JUNKERS: @@ -1115,6 +1136,9 @@ std::string Thermostat::mode_tostring(uint8_t mode) { case HeatingCircuit::Mode::DESIGN: return read_flash_string(F("design")); break; + case HeatingCircuit::Mode::MINFLOW: + return read_flash_string(F("minflow")); + break; case HeatingCircuit::Mode::MAXFLOW: return read_flash_string(F("maxflow")); break; @@ -1304,6 +1328,7 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { } else { changed_ |= telegram->read_value(hc->designtemp, 5); } + changed_ |= telegram->read_value(hc->minflowtemp, 8); } // types 0x29B ff @@ -1417,10 +1442,13 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { changed_ |= telegram->read_value(hc->summertemp, 22); // is * 1 changed_ |= telegram->read_value(hc->nofrosttemp, 23); // is * 1 changed_ |= telegram->read_value(hc->flowtempoffset, 24); // is * 1, only in mixed circuits + changed_ |= telegram->read_value(hc->minflowtemp, 16); if (hc->heatingtype == 3) { changed_ |= telegram->read_value(hc->designtemp, 36); // is * 1 + changed_ |= telegram->read_value(hc->maxflowtemp, 35); // is * 1 } else { changed_ |= telegram->read_value(hc->designtemp, 17); // is * 1 + changed_ |= telegram->read_value(hc->maxflowtemp, 15); // is * 1 } } @@ -1656,6 +1684,24 @@ bool Thermostat::set_wwtemplow(const char * value, const int8_t id) { return true; } +// Set ww onetime RC300, ems+ +bool Thermostat::set_wwonetime(const char * value, const int8_t id) { + bool b = false; + if (!Helpers::value2bool(value, b)) { + LOG_WARNING(F("Set warm water onetime: Invalid value")); + return false; + } + char s[7]; + LOG_INFO(F("Setting warm water onetime to %s"), Helpers::render_boolean(s, b)); + if (b) { + write_command(0x031D, 0, 1); + write_command(0x031D, 2, 2, 0x031D); + } else { + write_command(0x031D, 0, 0, 0x031D); + } + return true; +} + // sets the thermostat ww circulation working mode, where mode is a string bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { @@ -1986,11 +2032,14 @@ bool Thermostat::set_temperature(const float temperature, const std::string & mo if (mode_tostring(HeatingCircuit::Mode::DESIGN) == mode) { return set_temperature(temperature, HeatingCircuit::Mode::DESIGN, hc_num); } + if (mode_tostring(HeatingCircuit::Mode::MINFLOW) == mode) { + return set_temperature(temperature, HeatingCircuit::Mode::MINFLOW, hc_num); + } if (mode_tostring(HeatingCircuit::Mode::MAXFLOW) == mode) { - return set_temperature(temperature, HeatingCircuit::Mode::DESIGN, hc_num); + return set_temperature(temperature, HeatingCircuit::Mode::MAXFLOW, hc_num); } if (mode_tostring(HeatingCircuit::Mode::ROOMINFLUENCE) == mode) { - return set_temperature(temperature, HeatingCircuit::Mode::DESIGN, hc_num); + return set_temperature(temperature, HeatingCircuit::Mode::ROOMINFLUENCE, hc_num); } LOG_WARNING(F("Set temperature: Invalid mode")); @@ -2055,6 +2104,12 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co } factor = 1; break; + case HeatingCircuit::Mode::MINFLOW: + set_typeid = summer_typeids[hc->hc_num() - 1]; + validate_typeid = set_typeid; + offset = 8; + factor = 1; + break; case HeatingCircuit::Mode::MAXFLOW: set_typeid = curve_typeids[hc->hc_num() - 1]; validate_typeid = set_typeid; @@ -2143,8 +2198,16 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = 4; factor = 1; break; + case HeatingCircuit::Mode::MINFLOW: + offset = 16; + factor = 1; + break; case HeatingCircuit::Mode::MAXFLOW: - offset = 15; + if (hc->heatingtype == 3) { + offset = 35; + } else { + offset = 15; + } factor = 1; break; default: @@ -2310,6 +2373,10 @@ bool Thermostat::set_maxflowtemp(const char * value, const int8_t id) { return set_temperature_value(value, id, HeatingCircuit::Mode::MAXFLOW); } +bool Thermostat::set_minflowtemp(const char * value, const int8_t id) { + return set_temperature_value(value, id, HeatingCircuit::Mode::MINFLOW); +} + bool Thermostat::set_roominfluence(const char * value, const int8_t id) { return set_temperature_value(value, id, HeatingCircuit::Mode::ROOMINFLUENCE); } @@ -2338,10 +2405,12 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("wwmode"), [&](const char * value, const int8_t id) { return set_wwmode(value, id); }); register_mqtt_cmd(F("wwtemp"), [&](const char * value, const int8_t id) { return set_wwtemp(value, id); }); register_mqtt_cmd(F("wwtemplow"), [&](const char * value, const int8_t id) { return set_wwtemplow(value, id); }); + register_mqtt_cmd(F("wwonetime"), [&](const char * value, const int8_t id) { return set_wwonetime(value, id); }); register_mqtt_cmd(F("building"), [&](const char * value, const int8_t id) { return set_building(value, id); }); register_mqtt_cmd(F("nofrosttemp"), [&](const char * value, const int8_t id) { return set_nofrosttemp(value, id); }); register_mqtt_cmd(F("designtemp"), [&](const char * value, const int8_t id) { return set_designtemp(value, id); }); register_mqtt_cmd(F("offsettemp"), [&](const char * value, const int8_t id) { return set_offsettemp(value, id); }); + register_mqtt_cmd(F("minflowtemp"), [&](const char * value, const int8_t id) { return set_minflowtemp(value, id); }); register_mqtt_cmd(F("maxflowtemp"), [&](const char * value, const int8_t id) { return set_maxflowtemp(value, id); }); register_mqtt_cmd(F("minexttemp"), [&](const char * value, const int8_t id) { return set_minexttemp(value, id); }); register_mqtt_cmd(F("roominfluence"), [&](const char * value, const int8_t id) { return set_roominfluence(value, id); }); @@ -2374,6 +2443,7 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("wwcircmode"), [&](const char * value, const int8_t id) { return set_wwcircmode(value, id); }); register_mqtt_cmd(F("roominfluence"), [&](const char * value, const int8_t id) { return set_roominfluence(value, id); }); register_mqtt_cmd(F("flowtempoffset"), [&](const char * value, const int8_t id) { return set_flowtempoffset(value, id); }); + register_mqtt_cmd(F("minflowtemp"), [&](const char * value, const int8_t id) { return set_minflowtemp(value, id); }); register_mqtt_cmd(F("maxflowtemp"), [&](const char * value, const int8_t id) { return set_maxflowtemp(value, id); }); break; case EMS_DEVICE_FLAG_JUNKERS: diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 8e0902c6..2366674a 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -65,6 +65,7 @@ class Thermostat : public EMSdevice { uint8_t summer_setmode = EMS_VALUE_UINT_NOTSET; uint8_t roominfluence = EMS_VALUE_UINT_NOTSET; uint8_t flowtempoffset = EMS_VALUE_UINT_NOTSET; + uint8_t minflowtemp = EMS_VALUE_UINT_NOTSET; uint8_t maxflowtemp = EMS_VALUE_UINT_NOTSET; uint8_t hc_num() const { @@ -87,7 +88,7 @@ class Thermostat : public EMSdevice { uint8_t get_mode(uint8_t flags) const; uint8_t get_mode_type(uint8_t flags) const; - enum Mode : uint8_t { UNKNOWN, OFF, MANUAL, AUTO, DAY, NIGHT, HEAT, NOFROST, ECO, HOLIDAY, COMFORT, OFFSET, DESIGN, SUMMER, FLOWOFFSET, MAXFLOW, ROOMINFLUENCE }; + enum Mode : uint8_t { UNKNOWN, OFF, MANUAL, AUTO, DAY, NIGHT, HEAT, NOFROST, ECO, HOLIDAY, COMFORT, OFFSET, DESIGN, SUMMER, FLOWOFFSET, MINFLOW, MAXFLOW, ROOMINFLUENCE }; // for sorting based on hc number friend inline bool operator<(const std::shared_ptr & lhs, const std::shared_ptr & rhs) { @@ -311,12 +312,14 @@ class Thermostat : public EMSdevice { bool set_remotetemp(const char * value, const int8_t id); bool set_roominfluence(const char * value, const int8_t id); bool set_flowtempoffset(const char * value, const int8_t id); + bool set_minflowtemp(const char * value, const int8_t id); bool set_maxflowtemp(const char * value, const int8_t id); // set functions - these don't use the id/hc, the parameters are ignored bool set_wwmode(const char * value, const int8_t id); bool set_wwtemp(const char * value, const int8_t id); bool set_wwtemplow(const char * value, const int8_t id); + bool set_wwonetime(const char * value, const int8_t id); bool set_wwcircmode(const char * value, const int8_t id); bool set_datetime(const char * value, const int8_t id); bool set_minexttemp(const char * value, const int8_t id); diff --git a/src/locale_EN.h b/src/locale_EN.h index 1b99a3fa..b7abe921 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -66,6 +66,7 @@ MAKE_PSTR_WORD(publish) MAKE_PSTR_WORD(bar) MAKE_PSTR_WORD(min) MAKE_PSTR_WORD(uA) +MAKE_PSTR_WORD(timeout) // for commands MAKE_PSTR_WORD(call) @@ -241,6 +242,8 @@ MAKE_PSTR(floordrytemp, "Floordrying temperature") MAKE_PSTR(wwmode, "Warm water mode") MAKE_PSTR(wwtemp, "Warm water high temperature") MAKE_PSTR(wwtemplow, "Warm water low temperature") +MAKE_PSTR(wwextra1, "Warm water circuit 1 extra") +MAKE_PSTR(wwextra2, "Warm water circuit 2 extra") MAKE_PSTR(wwcircmode, "Warm water circulation mode") // thermostat - per heating circuit @@ -262,6 +265,7 @@ MAKE_PSTR(summertemp, "Summer temperature") MAKE_PSTR(summermode, "Summer mode") MAKE_PSTR(roominfluence, "Room influence") MAKE_PSTR(flowtempoffset, "Flow temperature offset") +MAKE_PSTR(minflowtemp, "Min. flow temperature") MAKE_PSTR(maxflowtemp, "Max. flow temperature") MAKE_PSTR(mode, "Mode") MAKE_PSTR(modetype, "Mode type") From b210517333198411b001ed7cacb177d9ad59717e Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 10 Nov 2020 11:23:18 +0100 Subject: [PATCH 038/225] syslog settings changeable while running --- .../src/project/EMSESPSettingsController.tsx | 4 +++- src/system.cpp | 17 +++++++++++++---- src/system.h | 16 ++++++++-------- 3 files changed, 24 insertions(+), 13 deletions(-) diff --git a/interface/src/project/EMSESPSettingsController.tsx b/interface/src/project/EMSESPSettingsController.tsx index 46060536..f883aead 100644 --- a/interface/src/project/EMSESPSettingsController.tsx +++ b/interface/src/project/EMSESPSettingsController.tsx @@ -237,7 +237,9 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) variant="outlined" onChange={handleValueChange('syslog_level')} margin="normal"> + OFF ERR + NOTICE INFO DEBUG @@ -245,7 +247,7 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) validators={['required', 'isNumber', 'minNumber:0', 'maxNumber:65535']} errorMessages={['Syslog Mark is required', "Must be a number", "Must be 0 or higher", "Max value is 10"]} name="syslog_mark_interval" - label="Syslog Mark Interval (seconds)" + label="Syslog Mark Interval (seconds, 0=off)" fullWidth variant="outlined" value={data.syslog_mark_interval} diff --git a/src/system.cpp b/src/system.cpp index aea35479..756f0b76 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -39,6 +39,11 @@ uint16_t System::analog_ = 0; bool System::analog_enabled_ = false; bool System::syslog_enabled_ = false; std::string System::hostname_; +int8_t System::syslog_level_ = -1; +uint32_t System::syslog_mark_interval_ = 0; +String System::syslog_host_; + + // send on/off to a gpio pin // value: true = HIGH, false = LOW @@ -120,6 +125,13 @@ void System::syslog_init() { }); #ifndef EMSESP_STANDALONE + if (!syslog_enabled_) { + syslog_.log_level((uuid::log::Level)-1); + syslog_.mark_interval(0); + syslog_.destination(0); + return; + } + syslog_.start(); // syslog service re-start // configure syslog @@ -155,9 +167,6 @@ void System::start() { Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(send), System::command_send); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(info), System::command_info); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(report), System::command_report); - if (settings.syslog_enabled) { - syslog_init(); // init SysLog - } }); @@ -172,8 +181,8 @@ void System::init() { EMSESP::webSettingsService.read([&](WebSettings & settings) { Helpers::bool_format(settings.bool_format); analog_enabled_ = settings.analog_enabled; - syslog_enabled_ = settings.syslog_enabled; }); + syslog_init(); // init SysLog EMSESP::esp8266React.getWiFiSettingsService()->read([&](WiFiSettings & settings) { hostname(settings.hostname.c_str()); }); diff --git a/src/system.h b/src/system.h index 32b6a8fa..808b189f 100644 --- a/src/system.h +++ b/src/system.h @@ -59,9 +59,9 @@ class System { static void show_mem(const char * note); static void set_led(); static void init(); + static void syslog_init(); bool check_upgrade(); - void syslog_init(); void send_heartbeat(); static std::string hostname() { @@ -108,13 +108,13 @@ class System { static std::string hostname_; // settings - static bool hide_led_; - static bool syslog_enabled_; - uint8_t syslog_level_; - uint32_t syslog_mark_interval_; - String syslog_host_; - static uint8_t led_gpio_; - static bool analog_enabled_; + static bool hide_led_; + static bool syslog_enabled_; + static int8_t syslog_level_; + static uint32_t syslog_mark_interval_; + static String syslog_host_; + static uint8_t led_gpio_; + static bool analog_enabled_; }; } // namespace emsesp From 1e42be051bd8ee0372d64307e5439cf37d9c9cfa Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 10 Nov 2020 11:30:53 +0100 Subject: [PATCH 039/225] set telnet timeout from console --- src/console.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/console.cpp b/src/console.cpp index ac96c2cb..d90832a7 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -300,6 +300,16 @@ void EMSESPShell::add_console_commands() { "local"); }); + commands->add_command(ShellContext::MAIN, + CommandFlags::USER, + flash_string_vector{F_(set), F_(timeout)}, + flash_string_vector{F_(n_mandatory)}, + [](Shell & shell, const std::vector & arguments) { + uint16_t value = Helpers::atoint(arguments.front().c_str()); + telnet_.initial_idle_timeout(value * 60); + shell.printfln(F("Telnet timout is %d minutes"), value); + }); + commands->add_command(ShellContext::MAIN, CommandFlags::ADMIN, flash_string_vector{F_(send), F_(telegram)}, From 027fec29a7542fd505c1966706cca853ec0d72b9 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 10 Nov 2020 11:36:35 +0100 Subject: [PATCH 040/225] update changelog --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index b90d40fc..4cd23dcd 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -10,6 +10,7 @@ ### Changed - optimized MQTT for HA to reduce mem fragmentation issues +- change syslog settings without reboot ### Removed - old scripts From 82a35f9a7efc80c962b34ff930a76bcf478e5fd7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 10 Nov 2020 12:46:26 +0100 Subject: [PATCH 041/225] fix compile warnings/errors --- src/console.cpp | 2 ++ src/devices/thermostat.cpp | 7 +------ src/system.cpp | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/console.cpp b/src/console.cpp index d90832a7..7a24f829 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -300,6 +300,7 @@ void EMSESPShell::add_console_commands() { "local"); }); +#ifndef EMSESP_STANDALONE commands->add_command(ShellContext::MAIN, CommandFlags::USER, flash_string_vector{F_(set), F_(timeout)}, @@ -309,6 +310,7 @@ void EMSESPShell::add_console_commands() { telnet_.initial_idle_timeout(value * 60); shell.printfln(F("Telnet timout is %d minutes"), value); }); +#endif commands->add_command(ShellContext::MAIN, CommandFlags::ADMIN, diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 8fdf26c4..b76b7bad 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1693,12 +1693,7 @@ bool Thermostat::set_wwonetime(const char * value, const int8_t id) { } char s[7]; LOG_INFO(F("Setting warm water onetime to %s"), Helpers::render_boolean(s, b)); - if (b) { - write_command(0x031D, 0, 1); - write_command(0x031D, 2, 2, 0x031D); - } else { - write_command(0x031D, 0, 0, 0x031D); - } + write_command(0x02F5, 11, b ? 0xFF : 0x00, 0x031D); return true; } diff --git a/src/system.cpp b/src/system.cpp index 756f0b76..6009ecb5 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -128,7 +128,7 @@ void System::syslog_init() { if (!syslog_enabled_) { syslog_.log_level((uuid::log::Level)-1); syslog_.mark_interval(0); - syslog_.destination(0); + syslog_.destination((IPAddress)0); return; } From f5b7bad2fb44502d69fd6e8f3488d7bed3e98776 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 11 Nov 2020 09:15:58 +0100 Subject: [PATCH 042/225] thermostat typos, trigger new dev build --- CHANGELOG_LATEST.md | 2 +- src/devices/thermostat.cpp | 4 ++-- src/system.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 4cd23dcd..86815956 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -1,7 +1,7 @@ # Changelog ### Added -- function keys in editor: cursor, del, pos1, end. F1=help, F2=show, F10=report +- function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts - add sm100 pump working time and energy units - heating curve parameters for RC300 diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index b76b7bad..cdaf6f7e 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -232,8 +232,8 @@ void Thermostat::device_info_web(JsonArray & root) { print_value_json(root, F("designtemp"), FPSTR(prefix_str), F_(designtemp), F_(degrees), json); print_value_json(root, F("roominfluence"), FPSTR(prefix_str), F_(roominfluence), F_(degrees), json); print_value_json(root, F("flowtempoffset"), FPSTR(prefix_str), F_(flowtempoffset), F_(degrees), json); - print_value_json(root, F("minflowtemp"), F_(2spaces), F_(minflowtemp), F_(degrees), json); - print_value_json(root, F("maxflowtemp"), F_(2spaces), F_(maxflowtemp), F_(degrees), json); + print_value_json(root, F("minflowtemp"), FPSTR(prefix_str), F_(minflowtemp), F_(degrees), json); + print_value_json(root, F("maxflowtemp"), FPSTR(prefix_str), F_(maxflowtemp), F_(degrees), json); print_value_json(root, F("summertemp"), FPSTR(prefix_str), F_(summertemp), F_(degrees), json); print_value_json(root, F("summermode"), FPSTR(prefix_str), F_(summermode), F_(degrees), json); print_value_json(root, F("mode"), FPSTR(prefix_str), F_(mode), nullptr, json); diff --git a/src/system.cpp b/src/system.cpp index 6009ecb5..dde28449 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -128,7 +128,7 @@ void System::syslog_init() { if (!syslog_enabled_) { syslog_.log_level((uuid::log::Level)-1); syslog_.mark_interval(0); - syslog_.destination((IPAddress)0); + syslog_.destination((IPAddress)((uint32_t)0)); return; } From 1578168167a722606492bbe854c06a2360e4492b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 13 Nov 2020 13:29:19 +0100 Subject: [PATCH 043/225] split HA-config in smaller blocks, add publish command --- CHANGELOG_LATEST.md | 3 +- src/dallassensor.cpp | 4 +-- src/dallassensor.h | 2 +- src/devices/boiler.cpp | 61 +++++++++++++++++++++------------ src/devices/boiler.h | 8 +++-- src/devices/heatpump.cpp | 25 +++++++------- src/devices/heatpump.h | 2 +- src/devices/mixer.cpp | 24 ++++++------- src/devices/mixer.h | 2 +- src/devices/solar.cpp | 13 ++++--- src/devices/solar.h | 2 +- src/devices/thermostat.cpp | 43 +++++++++++++++--------- src/devices/thermostat.h | 2 +- src/emsesp.cpp | 69 ++++++++++++++++++++++++++++++++------ src/emsesp.h | 4 ++- src/mqtt.cpp | 36 ++++++++++---------- src/mqtt.h | 8 +++-- src/system.cpp | 7 ++++ src/system.h | 1 + 19 files changed, 202 insertions(+), 114 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 86815956..996a1f35 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -2,7 +2,7 @@ ### Added - function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts -- add sm100 pump working time and energy units +- SM100 pump working time and energy units - heating curve parameters for RC300 ### Fixed @@ -11,6 +11,7 @@ ### Changed - optimized MQTT for HA to reduce mem fragmentation issues - change syslog settings without reboot +- HA-config split in smaller blocks ### Removed - old scripts diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index b1a0bf53..b8329748 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -309,7 +309,7 @@ bool DallasSensor::export_values(JsonObject & json) { } // send all dallas sensor values as a JSON package to MQTT -void DallasSensor::publish_values() { +void DallasSensor::publish_values(const bool force) { uint8_t num_sensors = sensors_.size(); if (num_sensors == 0) { @@ -340,7 +340,7 @@ void DallasSensor::publish_values() { // create the HA MQTT config // to e.g. homeassistant/sensor/ems-esp/dallas_28-233D-9497-0C03/config if (mqtt_format_ == Mqtt::Format::HA) { - if (!(registered_ha_[sensor_no - 1])) { + if (!(registered_ha_[sensor_no - 1]) || force) { StaticJsonDocument config; config["dev_cla"] = F("temperature"); diff --git a/src/dallassensor.h b/src/dallassensor.h index bcc4e8e0..0f4ebddb 100644 --- a/src/dallassensor.h +++ b/src/dallassensor.h @@ -58,7 +58,7 @@ class DallasSensor { void start(); void loop(); - void publish_values(); + void publish_values(const bool force); void reload(); bool updated_values(); diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 3cb34e0c..e4558e64 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -74,17 +74,13 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const // create the config topics for Home Assistant MQTT Discovery // for each of the main elements -void Boiler::register_mqtt_ha_config(bool force) { - if ((mqtt_ha_config_ && !force)) { - return; - } - +void Boiler::register_mqtt_ha_config() { if (!Mqtt::connected()) { return; } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F("Service Code"); doc["uniq_id"] = F("boiler"); doc["ic"] = F("mdi:home-thermometer-outline"); @@ -141,8 +137,17 @@ void Boiler::register_mqtt_ha_config(bool force) { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnWorkMin), this->device_type(), "burnWorkMin", F_(min), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatWorkMin), this->device_type(), "heatWorkMin", F_(min), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(UBAuptime), this->device_type(), "UBAuptime", F_(min), nullptr); + mqtt_ha_config_ = true; // done +} - // ww +// create the config topics for Home Assistant MQTT Discovery +// for each of the ww elements +void Boiler::register_mqtt_ha_config_ww() { + + if (!Mqtt::connected()) { + return; + } + // ww Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSelTemp), this->device_type(), "wWSelTemp", F_(degrees), F_(iconcruise)); Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSetTemp), this->device_type(), "wWSetTemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWDisinfectionTemp), this->device_type(), "wWDisinfectionTemp", F_(degrees), F_(icontemperature)); @@ -170,14 +175,15 @@ void Boiler::register_mqtt_ha_config(bool force) { Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWStarts), this->device_type(), "wWStarts", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWWorkM), this->device_type(), "wWWorkM", F_(min), nullptr); - mqtt_ha_config_ = true; // done + mqtt_ha_config_ww_ = true; // done } // send stuff to the Web UI void Boiler::device_info_web(JsonArray & root) { // fetch the values into a JSON document - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); - JsonObject json = doc.to(); + // DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); + StaticJsonDocument doc; + JsonObject json = doc.to(); if (!export_values_main(json)) { return; // empty } @@ -618,19 +624,29 @@ bool Boiler::export_values_main(JsonObject & json) { void Boiler::publish_values(JsonObject & json, bool force) { // handle HA first if (Mqtt::mqtt_format() == Mqtt::Format::HA) { - register_mqtt_ha_config(force); + if (force) { + mqtt_ha_config_ = false; + mqtt_ha_config_ww_ = false; + } + // register ww in next cycle if both unregistered + if (!mqtt_ha_config_) { + register_mqtt_ha_config(); + return; + } else if (!mqtt_ha_config_ww_) { + register_mqtt_ha_config_ww(); + return; + } } - DynamicJsonDocument doc_main(EMSESP_MAX_JSON_SIZE_LARGE); - JsonObject json_main = doc_main.to(); - if (export_values_main(json_main)) { - Mqtt::publish(F("boiler_data"), doc_main.as()); + StaticJsonDocument doc; + JsonObject json_data = doc.to(); + if (export_values_main(json_data)) { + Mqtt::publish(F("boiler_data"), json_data); } + json_data.clear(); - DynamicJsonDocument doc_ww(EMSESP_MAX_JSON_SIZE_LARGE); - JsonObject json_ww = doc_ww.to(); - if (export_values_ww(json_ww)) { - Mqtt::publish(F("boiler_data_ww"), doc_ww.as()); + if (export_values_ww(json_data)) { + Mqtt::publish(F("boiler_data_ww"), json_data); } // send out heating and tapwater status @@ -651,13 +667,14 @@ void Boiler::show_values(uuid::console::Shell & shell) { EMSdevice::show_values(shell); // for showing the header // fetch the values into a JSON document - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); - JsonObject json = doc.to(); + // DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); + StaticJsonDocument doc; + JsonObject json = doc.to(); if (!export_values_main(json)) { return; // empty } export_values_ww(json); // append ww values - doc.shrinkToFit(); + // doc.shrinkToFit(); print_value_json(shell, F("heatingActive"), nullptr, F_(heatingActive), nullptr, json); print_value_json(shell, F("tapwaterActive"), nullptr, F_(tapwaterActive), nullptr, json); diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 3fe2f0fc..17388208 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -47,13 +47,15 @@ class Boiler : public EMSdevice { private: static uuid::log::Logger logger_; - void register_mqtt_ha_config(bool force); + void register_mqtt_ha_config(); + void register_mqtt_ha_config_ww(); void check_active(); bool export_values_main(JsonObject & doc); bool export_values_ww(JsonObject & doc); - bool changed_ = false; - bool mqtt_ha_config_ = false; // HA MQTT Discovery + bool changed_ = false; + bool mqtt_ha_config_ = false; // HA MQTT Discovery + bool mqtt_ha_config_ww_ = false; // HA MQTT Discovery static constexpr uint8_t EMS_TYPE_UBAParameterWW = 0x33; static constexpr uint8_t EMS_TYPE_UBAFunctionTest = 0x1D; diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index ef4adf17..463a4cd7 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -49,8 +49,8 @@ bool Heatpump::export_values(JsonObject & json) { void Heatpump::device_info_web(JsonArray & root) { // fetch the values into a JSON document - StaticJsonDocument doc; - JsonObject json = doc.to(); + StaticJsonDocument doc; + JsonObject json = doc.to(); if (!export_values(json)) { return; // empty } @@ -64,8 +64,8 @@ void Heatpump::show_values(uuid::console::Shell & shell) { EMSdevice::show_values(shell); // always call this to show header // fetch the values into a JSON document - StaticJsonDocument doc; - JsonObject json = doc.to(); + StaticJsonDocument doc; + JsonObject json = doc.to(); if (!export_values(json)) { return; // empty } @@ -78,27 +78,26 @@ void Heatpump::show_values(uuid::console::Shell & shell) { void Heatpump::publish_values(JsonObject & json, bool force) { // handle HA first if (Mqtt::mqtt_format() == Mqtt::Format::HA) { - register_mqtt_ha_config(force); + if (!mqtt_ha_config_ || force) { + register_mqtt_ha_config(); + return; + } } - StaticJsonDocument doc; - JsonObject json_data = doc.to(); + StaticJsonDocument doc; + JsonObject json_data = doc.to(); if (export_values(json_data)) { Mqtt::publish(F("heatpump_data"), doc.as()); } } -void Heatpump::register_mqtt_ha_config(bool force) { - if ((mqtt_ha_config_ && !force)) { - return; - } - +void Heatpump::register_mqtt_ha_config() { if (!Mqtt::connected()) { return; } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F_(EMSESP); doc["uniq_id"] = F_(heatpump); doc["ic"] = F_(iconheatpump); diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h index a1b641cc..2f453523 100644 --- a/src/devices/heatpump.h +++ b/src/devices/heatpump.h @@ -45,7 +45,7 @@ class Heatpump : public EMSdevice { private: static uuid::log::Logger logger_; - void register_mqtt_ha_config(bool force); + void register_mqtt_ha_config(); uint8_t airHumidity_ = EMS_VALUE_UINT_NOTSET; uint8_t dewTemperature_ = EMS_VALUE_UINT_NOTSET; diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index 43354768..41c636c5 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -62,7 +62,7 @@ void Mixer::device_info_web(JsonArray & root) { } // fetch the values into a JSON document - StaticJsonDocument doc; + StaticJsonDocument doc; JsonObject json = doc.to(); if (!export_values_format(Mqtt::Format::SINGLE, json)) { return; // empty @@ -101,7 +101,7 @@ void Mixer::show_values(uuid::console::Shell & shell) { } // fetch the values into a JSON document - StaticJsonDocument doc; + StaticJsonDocument doc; JsonObject json = doc.to(); if (!export_values_format(Mqtt::Format::SINGLE, json)) { return; // empty @@ -128,13 +128,16 @@ void Mixer::show_values(uuid::console::Shell & shell) { void Mixer::publish_values(JsonObject & json, bool force) { // handle HA first if (Mqtt::mqtt_format() == Mqtt::Format::HA) { - register_mqtt_ha_config(force); + if (!mqtt_ha_config_ || force) { + register_mqtt_ha_config(); + return; + } } if (Mqtt::mqtt_format() == Mqtt::Format::SINGLE) { StaticJsonDocument doc; - JsonObject json = doc.to(); - if (export_values_format(Mqtt::mqtt_format(), json)) { + JsonObject json_data = doc.to(); + if (export_values_format(Mqtt::mqtt_format(), json_data)) { char topic[30]; if (type() == Type::HC) { snprintf_P(topic, 30, PSTR("mixer_data_hc%d"), hc_); @@ -150,23 +153,18 @@ void Mixer::publish_values(JsonObject & json, bool force) { } // publish config topic for HA MQTT Discovery -void Mixer::register_mqtt_ha_config(bool force) { - if ((mqtt_ha_config_ && !force)) { - return; - } - +void Mixer::register_mqtt_ha_config() { if (!Mqtt::connected()) { return; } // if we don't have valid values for this HC don't add it ever again - if (!Helpers::hasValue(status_)) { - mqtt_ha_config_ = true; + if (!Helpers::hasValue(pumpStatus_)) { return; } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; char name[20]; snprintf_P(name, sizeof(name), PSTR("Mixer %02X"), device_id() - 0x20 + 1); diff --git a/src/devices/mixer.h b/src/devices/mixer.h index bdf3b98b..4341b214 100644 --- a/src/devices/mixer.h +++ b/src/devices/mixer.h @@ -46,7 +46,7 @@ class Mixer : public EMSdevice { static uuid::log::Logger logger_; bool export_values_format(uint8_t mqtt_format, JsonObject & doc); - void register_mqtt_ha_config(bool force); + void register_mqtt_ha_config(); void process_MMPLUSStatusMessage_HC(std::shared_ptr telegram); void process_MMPLUSStatusMessage_WWC(std::shared_ptr telegram); diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index f865945d..900cfdd2 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -127,7 +127,10 @@ void Solar::show_values(uuid::console::Shell & shell) { void Solar::publish_values(JsonObject & json, bool force) { // handle HA first if (Mqtt::mqtt_format() == Mqtt::Format::HA) { - register_mqtt_ha_config(force); + if ((!mqtt_ha_config_ || force)) { + register_mqtt_ha_config(); + return; + } } StaticJsonDocument doc; @@ -142,17 +145,13 @@ void Solar::publish_values(JsonObject & json, bool force) { } // publish config topic for HA MQTT Discovery -void Solar::register_mqtt_ha_config(bool force) { - if ((mqtt_ha_config_ && !force)) { - return; - } - +void Solar::register_mqtt_ha_config() { if (!Mqtt::connected()) { return; } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F_(EMSESP); doc["uniq_id"] = F_(solar); doc["ic"] = F_(iconthermostat); diff --git a/src/devices/solar.h b/src/devices/solar.h index dcc649a1..3054b912 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -44,7 +44,7 @@ class Solar : public EMSdevice { private: static uuid::log::Logger logger_; - void register_mqtt_ha_config(bool force); + void register_mqtt_ha_config(); int16_t collectorTemp_ = EMS_VALUE_SHORT_NOTSET; // TS1: Temperature sensor for collector array 1 int16_t tankBottomTemp_ = EMS_VALUE_SHORT_NOTSET; // TS2: Temperature sensor 1 cylinder, bottom (solar thermal system) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index cdaf6f7e..3a860563 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -180,7 +180,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // prepare data for Web UI void Thermostat::device_info_web(JsonArray & root) { - StaticJsonDocument doc_main; + StaticJsonDocument doc_main; JsonObject json_main = doc_main.to(); if (export_values_main(json_main)) { print_value_json(root, F("time"), nullptr, F_(time), nullptr, json_main); @@ -336,10 +336,16 @@ void Thermostat::publish_values(JsonObject & json, bool force) { if (EMSESP::actual_master_thermostat() != this->device_id()) { return; } + // see if we have already registered this with HA MQTT Discovery, if not send the config + if (Mqtt::mqtt_format() == Mqtt::Format::HA) { + if (!ha_config(force)) { + return; + } + } - StaticJsonDocument doc; - JsonObject json_data = doc.to(); - bool has_data = false; + StaticJsonDocument doc; + JsonObject json_data = doc.to(); + bool has_data = false; // if MQTT is in single mode send out the main data to the thermostat_data topic has_data |= export_values_main(json_data); @@ -354,10 +360,6 @@ void Thermostat::publish_values(JsonObject & json, bool force) { // if we're in HA or CUSTOM, send out the complete topic with all the data if (Mqtt::mqtt_format() != Mqtt::Format::SINGLE && has_data) { - // see if we have already registered this with HA MQTT Discovery, if not send the config - if (Mqtt::mqtt_format() == Mqtt::Format::HA) { - ha_config(force); - } Mqtt::publish(F("thermostat_data"), json_data); } } @@ -685,23 +687,32 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost } // set up HA MQTT Discovery -void Thermostat::ha_config(bool force) { +bool Thermostat::ha_config(bool force) { if (!Mqtt::connected()) { - return; + return false; + } + if (force) { + for (const auto & hc : heating_circuits_) { + hc->ha_registered(false); + } + ha_registered(false); } - if (force || !ha_registered()) { + if (!ha_registered()) { register_mqtt_ha_config(); ha_registered(true); + return false; } // check to see which heating circuits need publishing for (const auto & hc : heating_circuits_) { - if (force || (hc->is_active() && !hc->ha_registered())) { + if (hc->is_active() && !hc->ha_registered()) { register_mqtt_ha_config(hc->hc_num()); hc->ha_registered(true); + return false; } } + return true; } // returns the heating circuit object based on the hc number @@ -809,7 +820,7 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // publish config topic for HA MQTT Discovery // homeassistant/climate/ems-esp/thermostat/config void Thermostat::register_mqtt_ha_config() { - StaticJsonDocument doc; + StaticJsonDocument doc; doc["uniq_id"] = F("thermostat"); doc["ic"] = F("mdi:home-thermometer-outline"); @@ -865,13 +876,13 @@ void Thermostat::register_mqtt_ha_config() { void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { StaticJsonDocument doc; - char str1[40]; + char str1[20]; snprintf_P(str1, sizeof(str1), PSTR("Thermostat hc%d"), hc_num); - char str2[40]; + char str2[20]; snprintf_P(str2, sizeof(str2), PSTR("thermostat_hc%d"), hc_num); - char str3[40]; + char str3[25]; snprintf_P(str3, sizeof(str3), PSTR("~/%s"), str2); doc["mode_cmd_t"] = str3; doc["temp_cmd_t"] = str3; diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 2366674a..2e8999a1 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -248,7 +248,7 @@ class Thermostat : public EMSdevice { void register_mqtt_ha_config(); void register_mqtt_ha_config(uint8_t hc_num); - void ha_config(bool force = false); + bool ha_config(bool force = false); bool thermostat_ha_cmd(const char * message, uint8_t hc_num); void process_RCOutdoorTemp(std::shared_ptr telegram); diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 91b30df7..117f1f70 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -64,6 +64,7 @@ uint16_t EMSESP::publish_id_ = 0; bool EMSESP::tap_water_active_ = false; // for when Boiler states we having running warm water. used in Shower() uint32_t EMSESP::last_fetch_ = 0; uint8_t EMSESP::unique_id_count_ = 0; +uint8_t EMSESP::publish_all_idx_ = 0; // for a specific EMS device go and request data values // or if device_id is 0 it will fetch from all our known and active devices @@ -290,29 +291,74 @@ void EMSESP::show_sensor_values(uuid::console::Shell & shell) { // MQTT publish everything, immediately void EMSESP::publish_all(bool force) { + if (force) { + publish_all_idx_ = 1; + return; + } if (Mqtt::connected()) { - publish_device_values(EMSdevice::DeviceType::BOILER, force); - publish_device_values(EMSdevice::DeviceType::THERMOSTAT, force); - publish_device_values(EMSdevice::DeviceType::SOLAR, force); - publish_device_values(EMSdevice::DeviceType::MIXER, force); + publish_device_values(EMSdevice::DeviceType::BOILER, false); + publish_device_values(EMSdevice::DeviceType::THERMOSTAT, false); + publish_device_values(EMSdevice::DeviceType::SOLAR, false); + publish_device_values(EMSdevice::DeviceType::MIXER, false); publish_other_values(); - publish_sensor_values(true); + publish_sensor_values(true, false); system_.send_heartbeat(); } } +// on command "publish HA" loop and wait between devices for publishing all sensors +void EMSESP::publish_all_loop() { + static uint32_t last = 0; + if (!Mqtt::connected() || !publish_all_idx_) { + return; + } + // every HA-sensor takes 20 ms, wait ~2 sec to finish (boiler have ~70 sensors) + if ((uuid::get_uptime() - last < 2000)) { + return; + } + last = uuid::get_uptime(); + switch (publish_all_idx_++) { + case 1: + publish_device_values(EMSdevice::DeviceType::BOILER, true); + break; + case 2: + publish_device_values(EMSdevice::DeviceType::THERMOSTAT, true); + break; + case 3: + publish_device_values(EMSdevice::DeviceType::SOLAR, true); + break; + case 4: + publish_device_values(EMSdevice::DeviceType::MIXER, true); + break; + case 5: + publish_other_values(); + break; + case 6: + publish_sensor_values(true, true); + break; + case 7: + system_.send_heartbeat(); + break; + default: + // all finished + publish_all_idx_ = 0; + last = 0; + } +} + // create json doc for the devices values and add to MQTT publish queue // special case for Mixer units, since we want to bundle all devices together into one payload void EMSESP::publish_device_values(uint8_t device_type, bool force) { if (device_type == EMSdevice::DeviceType::MIXER && Mqtt::mqtt_format() != Mqtt::Format::SINGLE) { - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); - JsonObject json = doc.to(); + // DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); + StaticJsonDocument doc; + JsonObject json = doc.to(); for (const auto & emsdevice : emsdevices) { if (emsdevice && (emsdevice->device_type() == device_type)) { emsdevice->publish_values(json, force); } } - doc.shrinkToFit(); + // doc.shrinkToFit(); Mqtt::publish("mixer_data", doc.as()); return; } @@ -335,9 +381,9 @@ void EMSESP::publish_other_values() { } } -void EMSESP::publish_sensor_values(const bool force) { - if (dallassensor_.updated_values() || force) { - dallassensor_.publish_values(); +void EMSESP::publish_sensor_values(const bool time, const bool force) { + if (dallassensor_.updated_values() || time || force) { + dallassensor_.publish_values(force); } } @@ -936,6 +982,7 @@ void EMSESP::loop() { system_.loop(); // does LED and checks system health, and syslog service shower_.loop(); // check for shower on/off dallassensor_.loop(); // this will also send out via MQTT + publish_all_loop(); mqtt_.loop(); // sends out anything in the queue via MQTT console_.loop(); // telnet/serial console rxservice_.loop(); // process any incoming Rx telegrams diff --git a/src/emsesp.h b/src/emsesp.h index 0fd6d976..dbcdb6a0 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -63,7 +63,7 @@ class EMSESP { static void publish_device_values(uint8_t device_type, bool force = false); static void publish_other_values(); - static void publish_sensor_values(const bool force = false); + static void publish_sensor_values(const bool time, const bool force = false); static void publish_all(bool force = false); #ifdef EMSESP_STANDALONE @@ -184,6 +184,7 @@ class EMSESP { static void process_UBADevices(std::shared_ptr telegram); static void process_version(std::shared_ptr telegram); static void publish_response(std::shared_ptr telegram); + static void publish_all_loop(); static bool command_info(uint8_t device_type, JsonObject & json); @@ -207,6 +208,7 @@ class EMSESP { static uint16_t publish_id_; static bool tap_water_active_; static uint8_t unique_id_count_; + static uint8_t publish_all_idx_; }; } // namespace emsesp diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 09febd6f..7dc88118 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -40,7 +40,7 @@ bool Mqtt::mqtt_enabled_; std::vector Mqtt::mqtt_subfunctions_; uint16_t Mqtt::mqtt_publish_fails_ = 0; -size_t Mqtt::maximum_mqtt_messages_ = Mqtt::MAX_MQTT_MESSAGES; +// size_t Mqtt::maximum_mqtt_messages_ = Mqtt::MAX_MQTT_MESSAGES; uint16_t Mqtt::mqtt_message_id_ = 0; std::list Mqtt::mqtt_messages_; char will_topic_[Mqtt::MQTT_TOPIC_MAX_SIZE]; // because MQTT library keeps only char pointer @@ -527,7 +527,7 @@ std::shared_ptr Mqtt::queue_message(const uint8_t operation, } // if the queue is full, make room but removing the last one - if (mqtt_messages_.size() >= maximum_mqtt_messages_) { + if (mqtt_messages_.size() >= MAX_MQTT_MESSAGES) { mqtt_messages_.pop_front(); } mqtt_messages_.emplace_back(mqtt_message_id_++, std::move(message)); @@ -695,7 +695,8 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } - StaticJsonDocument doc; + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_SMALL); + // StaticJsonDocument doc; doc["name"] = name; doc["uniq_id"] = entity; @@ -723,11 +724,13 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons snprintf_P(ha_device, sizeof(ha_device), PSTR("ems-esp-%s"), EMSdevice::device_type_2_device_name(device_type).c_str()); ids.add(ha_device); + doc.shrinkToFit(); + char topic[MQTT_TOPIC_MAX_SIZE]; snprintf_P(topic, sizeof(topic), PSTR("homeassistant/binary_sensor/ems-esp/%s/config"), entity); // convert json to string and publish immediately with retain forced to true - char payload_text[300]; + char payload_text[256]; serializeJson(doc, payload_text); // convert json to string uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); #if defined(EMSESP_STANDALONE) @@ -740,7 +743,9 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons } #endif - delay(MQTT_PUBLISH_WAIT); + // delay(MQTT_PUBLISH_WAIT); + delay(50); + } // HA config for a normal 'sensor' type @@ -761,11 +766,11 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, if (prefix != nullptr) { snprintf_P(new_entity, sizeof(new_entity), PSTR("%s.%s"), prefix, entity); } else { - strcpy(new_entity, entity); + strncpy(new_entity, entity, sizeof(new_entity)); } char device_name[50]; - strcpy(device_name, EMSdevice::device_type_2_device_name(device_type).c_str()); + strncpy(device_name, EMSdevice::device_type_2_device_name(device_type).c_str(), sizeof(device_name)); // build unique identifier, replacing all . with _ as not to break HA std::string uniq(50, '\0'); @@ -801,9 +806,8 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, } new_name[0] = toupper(new_name[0]); // capitalize first letter - StaticJsonDocument doc; - - // DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_SMALL); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_SMALL); + // StaticJsonDocument doc; doc["name"] = new_name; doc["uniq_id"] = uniq.c_str(); @@ -819,13 +823,10 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, JsonArray ids = dev.createNestedArray("ids"); ids.add(ha_device); + doc.shrinkToFit(); // convert json to string and publish immediately with retain forced to true - // std::string payload_text; - char payload_text[300]; + char payload_text[256]; serializeJson(doc, payload_text); // convert json to string - // queue_publish_message(topic, payload_text, true); - - // publish_retain(topic, doc.as(), true); uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); if (!packet_id) { @@ -838,7 +839,8 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, #endif } - delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp -} + // delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp + delay(50); // enough time to send the short message out +} } // namespace emsesp diff --git a/src/mqtt.h b/src/mqtt.h index ed1970cb..8b987dbb 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -40,7 +40,9 @@ using uuid::console::Shell; #define EMSESP_MAX_JSON_SIZE_SMALL 256 // for smaller json docs when using StaticJsonDocument #define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for smaller json docs from ems devices, when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_LARGE 2048 // for large json docs from ems devices, like boiler or thermostat data. Using DynamicJsonDocument +// #define EMSESP_MAX_JSON_SIZE_LARGE 2048 // for large json docs from ems devices, like boiler or thermostat data. Using DynamicJsonDocument +// mqtt does not publish larger than 1570 on esp8266, boiler message is split and now smaller +#define EMSESP_MAX_JSON_SIZE_LARGE 1536 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument namespace emsesp { @@ -170,10 +172,10 @@ class Mqtt { static AsyncMqttClient * mqttClient_; - static size_t maximum_mqtt_messages_; + // static size_t maximum_mqtt_messages_; static uint16_t mqtt_message_id_; - static constexpr size_t MAX_MQTT_MESSAGES = 70; // size of queue + static constexpr size_t MAX_MQTT_MESSAGES = 20; // size of queue static constexpr uint32_t MQTT_PUBLISH_WAIT = 200; // delay between sending publishes, to account for large payloads static constexpr uint8_t MQTT_PUBLISH_MAX_RETRY = 3; // max retries for giving up on publishing diff --git a/src/system.cpp b/src/system.cpp index dde28449..52456199 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -65,6 +65,12 @@ bool System::command_send(const char * value, const int8_t id) { return true; } +// publish +bool System::command_publish(const char * value, const int8_t id) { + EMSESP::publish_all(); // ignore value and id + return true; +} + // restart EMS-ESP void System::restart() { LOG_NOTICE(F("Restarting system...")); @@ -165,6 +171,7 @@ void System::start() { EMSESP::webSettingsService.read([&](WebSettings & settings) { Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(pin), System::command_pin); Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(send), System::command_send); + Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(publish), System::command_publish); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(info), System::command_info); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(report), System::command_report); }); diff --git a/src/system.h b/src/system.h index 808b189f..a5f5c44e 100644 --- a/src/system.h +++ b/src/system.h @@ -50,6 +50,7 @@ class System { static bool command_pin(const char * value, const int8_t id); static bool command_send(const char * value, const int8_t id); + static bool command_publish(const char * value, const int8_t id); static bool command_info(const char * value, const int8_t id, JsonObject & json); static bool command_report(const char * value, const int8_t id, JsonObject & json); From c2536d8b2cf8a0327175bd59cf7134351d16fb84 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 13 Nov 2020 15:20:52 +0100 Subject: [PATCH 044/225] Junkers FR50 as device-type Junker2, fix #605 --- src/device_library.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/device_library.h b/src/device_library.h index eca92497..6481f2af 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -87,7 +87,7 @@ {107, DeviceType::THERMOSTAT, F("FR100"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, // older model {108, DeviceType::THERMOSTAT, F("FR110"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, // older model {111, DeviceType::THERMOSTAT, F("FR10"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS}, -{147, DeviceType::THERMOSTAT, F("FR50"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS}, +{147, DeviceType::THERMOSTAT, F("FR50"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, {191, DeviceType::THERMOSTAT, F("FR120"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, // older model {192, DeviceType::THERMOSTAT, F("FW120"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS}, From 4805fb6c46d91f2a3d7c5947329a6a57e541b4d5 Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 14 Nov 2020 00:01:56 +0100 Subject: [PATCH 045/225] don't send shower MQTT if MQTT disabled --- src/shower.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/shower.cpp b/src/shower.cpp index be67e006..4d1a2559 100644 --- a/src/shower.cpp +++ b/src/shower.cpp @@ -28,7 +28,9 @@ void Shower::start() { shower_alert_ = settings.shower_alert; }); - send_mqtt_stat(false); // send first MQTT publish + if (Mqtt::enabled()) { + send_mqtt_stat(false); // send first MQTT publish + } } void Shower::loop() { From 716cbf7e861d730ae162b2aa3c6b3b092dc78f19 Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 14 Nov 2020 00:02:12 +0100 Subject: [PATCH 046/225] updated --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1176cfd0..aafac8a9 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ firmware /lib/framework/WWWData.h /interface/build/ /interface/node_modules/ +.VSCodeCounter/ From 055504381069e904a61a9a20e6ce2db0f427de49 Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 14 Nov 2020 00:03:04 +0100 Subject: [PATCH 047/225] text changes --- src/dallassensor.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index b1a0bf53..940e6e74 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -84,12 +84,12 @@ void DallasSensor::loop() { bus_.reset_search(); state_ = State::SCANNING; } else if (time_now - last_activity_ > READ_TIMEOUT_MS) { - LOG_ERROR(F("Sensor read timeout")); + LOG_WARNING(F("Dallas sensor read timeout")); state_ = State::IDLE; } } else if (state_ == State::SCANNING) { if (time_now - last_activity_ > SCAN_TIMEOUT_MS) { - LOG_ERROR(F("Sensor scan timeout")); + LOG_ERROR(F("Dallas sensor scan timeout")); state_ = State::IDLE; } else { uint8_t addr[ADDR_LEN] = {0}; @@ -129,11 +129,11 @@ void DallasSensor::loop() { break; default: - LOG_ERROR(F("Unknown sensor %s"), Sensor(addr).to_string().c_str()); + LOG_ERROR(F("Unknown dallas sensor %s"), Sensor(addr).to_string().c_str()); break; } } else { - LOG_ERROR(F("Invalid sensor %s"), Sensor(addr).to_string().c_str()); + LOG_ERROR(F("Invalid dallas sensor %s"), Sensor(addr).to_string().c_str()); } } else { if (!parasite_) { From 8bd7b21f30ecb5f7aff69e8391d6caaa9e6f0d3d Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 14 Nov 2020 00:05:00 +0100 Subject: [PATCH 048/225] minor updates --- src/test/test.cpp | 175 ++++++++++++++++++++-------------------------- src/test/test.h | 3 +- 2 files changed, 76 insertions(+), 102 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index b4dbb0bf..bc67357c 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -27,10 +27,10 @@ namespace emsesp { // used with the 'test' command, under su/admin void Test::run_test(uuid::console::Shell & shell, const std::string & command) { // switch to su - shell.add_flags(CommandFlags::ADMIN); + // shell.add_flags(CommandFlags::ADMIN); if (command == "default") { - run_test(shell, "general"); // add the default test case here + run_test(shell, "boiler"); // add the default test case here } if (command.empty()) { @@ -38,6 +38,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { } if (command == "render") { + shell.printfln(F("Testing render...")); + uint8_t test1 = 12; int8_t test2 = -12; uint16_t test3 = 456; @@ -133,6 +135,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { } if (command == "devices") { + shell.printfln(F("Testing devices...")); + EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); // this is important otherwise nothing will be picked up! //emsdevices.push_back(EMSFactory::add(EMSdevice::DeviceType::BOILER, EMSdevice::EMS_DEVICE_ID_BOILER, 0, "", "My Boiler", 0, 0)); @@ -141,39 +145,29 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { rx_telegram({0x08, 0x00, 0x07, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); } - if (command == "boiler") { - // question: do we need to set the mask? - std::string version("1.2.3"); - EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline - - // UBAuptime - uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); - - shell.invoke_command("show"); - shell.invoke_command("call boiler info"); - } - // check for boiler and controller on same product_id if (command == "double") { - // question: do we need to set the mask? - std::string version("1.2.3"); - EMSESP::add_device(0x08, 206, version, EMSdevice::Brand::BUDERUS); // Nefit Excellent HR30 - EMSESP::add_device(0x09, 206, version, EMSdevice::Brand::BUDERUS); // Nefit Excellent HR30 Controller + shell.printfln(F("Testing double...")); + + add_device(0x08, 206); // Nefit Excellent HR30 + add_device(0x09, 206); // Nefit Excellent HR30 Controller // UBAuptime uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); } - // unknown device - + // unknown device if (command == "unknown") { + shell.printfln(F("Testing unknown...")); + // question: do we need to set the mask? std::string version("1.2.3"); // add boiler - EMSESP::add_device(0x08, 84, version, EMSdevice::Brand::BUDERUS); + add_device(0x08, 84); - // add Controller - BC10 GB142 - but using the same device_id to see what happens - EMSESP::add_device(0x09, 84, version, EMSdevice::Brand::BUDERUS); + // add Controller - BC10 GB142 - but using the same product_id to see what happens + add_device(0x09, 84); // simulate getting version information back from an unknown device // note there is no brand (byte 9) @@ -184,11 +178,15 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { } if (command == "unknown2") { + shell.printfln(F("Testing unknown2...")); + // simulate getting version information back from an unknown device rx_telegram({0x09, 0x0B, 0x02, 0x00, 0x5A, 0x01, 0x02}); // product id is 90 which doesn't exist } if (command == "gateway") { + shell.printfln(F("Testing Gateway...")); + // add 0x48 KM200, via a version command rx_telegram({0x48, 0x0B, 0x02, 0x00, 0xBD, 0x04, 0x06, 00, 00, 00, 00, 00, 00, 00}); @@ -197,8 +195,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { rx_telegram({0x08, 0x00, 0x07, 0x00, 0x09, 01, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00}); // add thermostat - Thermostat: RC300/RC310/Moduline 3000/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:03.03) ** master device ** - std::string version("01.03"); - EMSESP::add_device(0x10, 158, version, EMSdevice::Brand::BUDERUS); + add_device(0x10, 158); // Nefit Trendline // simulate incoming telegram // Thermostat(0x10) -> 48(0x48), ?(0x26B), data: 6B 08 4F 00 00 00 02 00 00 00 02 00 03 00 03 00 03 @@ -208,9 +205,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "web") { shell.printfln(F("Testing Web...")); - std::string version("1.2.3"); - EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline - EMSESP::add_device(0x18, 157, version, EMSdevice::Brand::BOSCH); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 + add_device(0x08, 123); // Nefit Trendline + add_device(0x18, 157); // Bosch CR100 // add some data // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) @@ -238,13 +234,23 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.println(); } - if (command == "general") { - shell.printfln(F("Testing adding a boiler & thermostat...")); + if (command == "boiler") { + shell.printfln(F("Testing boiler...")); - std::string version("1.2.3"); + add_device(0x08, 123); // Nefit Trendline - EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline - EMSESP::add_device(0x18, 157, version, EMSdevice::Brand::BOSCH); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 + // UBAuptime + uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); + + shell.invoke_command("show"); + shell.invoke_command("call boiler info"); + } + + if (command == "general") { + shell.printfln(F("Testing adding a general boiler & thermostat...")); + + add_device(0x08, 123); // Nefit Trendline + // add_device(0x18, 157); // Bosch CR100 // add some data // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) @@ -269,20 +275,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "fr120") { shell.printfln(F("Testing adding a thermostat FR120...")); - // add_device(0x10, 165, version, EMSdevice::Brand::BUDERUS); - // add_device(0x17, 125, version, EMSdevice::Brand::BUDERUS); // test unknown class test - // add_device(0x17, 93, version, EMSdevice::Brand::BUDERUS); - // add_device(0x17, 254, version, EMSdevice::Brand::BUDERUS); // test unknown product_id - - // EMSESP::add_device(0x18, 157, version, EMSdevice::Brand::BOSCH); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 - - std::string version("1.2.3"); - - // add a boiler - // EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline - // add a thermostat - EMSESP::add_device(0x10, 191, version, EMSdevice::Brand::JUNKERS); // FR120 + add_device(0x10, 191); // FR120 // HC1 uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, @@ -295,20 +289,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "thermostat") { shell.printfln(F("Testing adding a thermostat FW120...")); - // add_device(0x10, 165, version, EMSdevice::Brand::BUDERUS); - // add_device(0x17, 125, version, EMSdevice::Brand::BUDERUS); // test unknown class test - // add_device(0x17, 93, version, EMSdevice::Brand::BUDERUS); - // add_device(0x17, 254, version, EMSdevice::Brand::BUDERUS); // test unknown product_id - - // EMSESP::add_device(0x18, 157, version, EMSdevice::Brand::BOSCH); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 - - std::string version("1.2.3"); - - // add a boiler - // EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline - // add a thermostat - EMSESP::add_device(0x10, 192, version, EMSdevice::Brand::JUNKERS); // FW120 + add_device(0x10, 192); // FW120 // HC1 uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, @@ -331,13 +313,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "tc100") { shell.printfln(F("Testing adding a TC100 thermostat to the EMS bus...")); - std::string version("02.21"); - - // add a boiler - // EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline - // add a thermostat - EMSESP::add_device(0x18, 202, version, EMSdevice::Brand::BOSCH); // Bosch TC100 - https://github.com/proddy/EMS-ESP/issues/474 + add_device(0x18, 202); // Bosch TC100 - https://github.com/proddy/EMS-ESP/issues/474 // 0x0A uart_telegram({0x98, 0x0B, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -349,8 +326,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - std::string version("1.2.3"); - EMSESP::add_device(0x30, 163, version, EMSdevice::Brand::BUDERUS); // SM100 + add_device(0x30, 163); // SM100 // SM100Monitor - type 0x0362 EMS+ - for SM100 and SM200 // B0 0B FF 00 02 62 00 44 02 7A 80 00 80 00 80 00 80 00 80 00 80 00 00 7C 80 00 80 00 80 00 80 @@ -377,19 +353,19 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - std::string version("1.2.3"); - // add heatpump - EMSESP::add_device(0x38, 200, version, EMSdevice::Brand::BUDERUS); // Enviline module + add_device(0x38, 200); // Enviline module // add a thermostat - EMSESP::add_device(0x10, 192, version, EMSdevice::Brand::JUNKERS); // FW120 + add_device(0x10, 192); // FW120 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); // HC1 uart_telegram("38 0B FF 00 03 7B 0C 34 00 74"); shell.invoke_command("call"); shell.invoke_command("call heatpump info"); + EMSESP::show_device_values(shell); } @@ -398,8 +374,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - std::string version("1.2.3"); - EMSESP::add_device(0x30, 164, version, EMSdevice::Brand::BUDERUS); // SM200 + add_device(0x30, 164); // SM200 // SM100Monitor - type 0x0362 EMS+ - for SM100 and SM200 // B0 0B FF 00 02 62 00 44 02 7A 80 00 80 00 80 00 80 00 80 00 80 00 00 7C 80 00 80 00 80 00 80 @@ -433,13 +408,11 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - std::string version("1.2.3"); - EMSESP::add_device(0x10, 158, version, EMSdevice::Brand::BUDERUS); // RC300 - EMSESP::add_device(0x48, 189, version, EMSdevice::Brand::BUDERUS); // KM200 + add_device(0x10, 158); // RC300 + add_device(0x48, 189); // KM200 // see https://github.com/proddy/EMS-ESP/issues/390 - /* uart_telegram_withCRC("90 48 FF 04 01 A6 5C"); uart_telegram_withCRC("90 48 FF 00 01 A6 4C"); uart_telegram_withCRC("90 48 FF 08 01 A7 6D"); @@ -477,7 +450,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { uart_telegram_withCRC("C8 90 FF 00 02 01 A6 D0"); // uart_telegram_withCRC("10 00 FF 00 01 A5 00 D7 21 00 00 00 00 30 01 84 01 01 03 01 84 01 F1 00 00 11 01 00 08 63 00"); - */ uart_telegram_withCRC("C8 90 F7 02 01 FF 01 A6 BA"); @@ -498,8 +470,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_HT3); // switch to junkers - std::string version("1.2.3"); - EMSESP::add_device(0x18, 157, version, EMSdevice::Brand::BOSCH); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 + add_device(0x18, 157); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 // RCPLUSStatusMessage_HC1(0x01A5) // 98 00 FF 00 01 A5 00 CF 21 2E 00 00 2E 24 03 25 03 03 01 03 25 00 C8 00 00 11 01 03 (no CRC) @@ -669,8 +640,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.printfln(F("Testing Commands...")); // add a thermostat with 3 HCs - std::string version("1.2.3"); - EMSESP::add_device(0x10, 192, version, EMSdevice::Brand::JUNKERS); // FW120 + add_device(0x10, 192); // FW120 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); // HC1 uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x00, 0xCF, 0x22, 0x2F, 0x10, 0x00, 0x2E, 0x24, @@ -711,12 +682,10 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { }); // add a boiler - // question: do we need to set the mask? - std::string version("1.2.3"); - EMSESP::add_device(0x08, 123, version, EMSdevice::Brand::BUDERUS); // Nefit Trendline + add_device(0x08, 123); // Nefit Trendline // add a thermostat - EMSESP::add_device(0x18, 157, version, EMSdevice::Brand::BOSCH); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 + add_device(0x18, 157); // Bosch CR100 - https://github.com/proddy/EMS-ESP/issues/355 // RCPLUSStatusMessage_HC1(0x01A5) - HC1 uart_telegram({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, @@ -791,23 +760,31 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { } if (command == "rx2") { + shell.printfln(F("Testing rx2...")); + uart_telegram({0x1B, 0x5B, 0xFD, 0x2D, 0x9E, 0x3A, 0xB6, 0xE5, 0x02, 0x20, 0x33, 0x30, 0x32, 0x3A, 0x20, 0x5B, 0x73, 0xFF, 0xFF, 0xCB, 0xDF, 0xB7, 0xA7, 0xB5, 0x67, 0x77, 0x77, 0xE4, 0xFF, 0xFD, 0x77, 0xFF}); } // https://github.com/proddy/EMS-ESP/issues/380#issuecomment-633663007 if (command == "rx3") { + shell.printfln(F("Testing rx3...")); + uart_telegram({0x21, 0x0B, 0xFF, 0x00}); } // testing the UART tx command, without a queue if (command == "tx2") { + shell.printfln(F("Testing tx2...")); + uint8_t t[] = {0x0B, 0x88, 0x18, 0x00, 0x20, 0xD4}; // including CRC EMSuart::transmit(t, sizeof(t)); } // send read request with offset if (command == "offset") { + shell.printfln(F("Testing offset...")); + // send_read_request(0x18, 0x08); EMSESP::txservice_.read_request(0x18, 0x08, 27); // no offset } @@ -824,14 +801,13 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { }); EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - std::string version("1.2.3"); // add controller - EMSESP::add_device(0x09, 114, version, EMSdevice::Brand::BUDERUS); + add_device(0x09, 114); - EMSESP::add_device(0x28, 160, version, EMSdevice::Brand::BUDERUS); // MM100, WWC - EMSESP::add_device(0x29, 161, version, EMSdevice::Brand::BUDERUS); // MM200, WWC - EMSESP::add_device(0x20, 160, version, EMSdevice::Brand::BOSCH); // MM100 + add_device(0x28, 160); // MM100, WWC + add_device(0x29, 161); // MM200, WWC + add_device(0x20, 160); // MM100 // WWC1 on 0x29 uart_telegram({0xA9, 0x00, 0xFF, 0x00, 0x02, 0x32, 0x02, 0x6C, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); @@ -849,9 +825,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.invoke_command("show mqtt"); shell.invoke_command("call mixer"); } - - // finally dump to console - EMSESP::loop(); } // simulates a telegram in the Rx queue, but without the CRC which is added automatically @@ -878,7 +851,7 @@ void Test::uart_telegram(const std::vector & rx_data) { } data[i] = EMSESP::rxservice_.calculate_crc(data, i); EMSESP::incoming_telegram(data, i + 1); - EMSESP::rxservice_.loop(); + // EMSESP::rxservice_.loop(); } // takes raw string, assuming it contains the CRC. This is what is output from 'watch raw' @@ -916,7 +889,7 @@ void Test::uart_telegram_withCRC(const char * rx_data) { } EMSESP::incoming_telegram(data, count + 1); - EMSESP::rxservice_.loop(); + // EMSESP::rxservice_.loop(); } // takes raw string, adds CRC to end @@ -956,14 +929,14 @@ void Test::uart_telegram(const char * rx_data) { data[count + 1] = EMSESP::rxservice_.calculate_crc(data, count + 1); // add CRC EMSESP::incoming_telegram(data, count + 2); - EMSESP::rxservice_.loop(); + // EMSESP::rxservice_.loop(); } -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wunused-parameter" - - -#pragma GCC diagnostic pop +// Sends version telegram. Version is hardcoded to 1.0 +void Test::add_device(uint8_t device_id, uint8_t product_id) { + // Send version: 09 0B 02 00 PP V1 V2 + uart_telegram({device_id, EMSESP_DEFAULT_EMS_BUS_ID, EMSdevice::EMS_TYPE_VERSION, 0, product_id, 1, 0}); +} } // namespace emsesp diff --git a/src/test/test.h b/src/test/test.h index 470cdd62..4dcb75e4 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -40,12 +40,13 @@ namespace emsesp { class Test { public: - static void run_test(uuid::console::Shell & shell, const std::string & command); // only for testing + static void run_test(uuid::console::Shell & shell, const std::string & command); static void dummy_mqtt_commands(const char * message); static void rx_telegram(const std::vector & data); static void uart_telegram(const std::vector & rx_data); static void uart_telegram(const char * rx_data); static void uart_telegram_withCRC(const char * rx_data); + static void add_device(uint8_t device_id, uint8_t product_id); }; } // namespace emsesp From 3ffa9ee5acc558f4115b5e4ff108818c2c3b842b Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 14 Nov 2020 00:08:05 +0100 Subject: [PATCH 049/225] move device unique_id count into constructor --- src/emsdevice.h | 3 ++- src/emsesp.cpp | 11 ++++++----- src/emsesp.h | 1 - 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/emsdevice.h b/src/emsdevice.h index 81ac08c4..a4a9fe2a 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -43,6 +43,7 @@ class EMSdevice { , name_(name) , flags_(flags) , brand_(brand) { + unique_id_++; } virtual ~EMSdevice() = default; // destructor of base class must always be virtual because it's a polymorphic class @@ -270,7 +271,7 @@ class EMSdevice { static constexpr uint8_t EMS_DEVICE_FLAG_JUNKERS_2 = (1 << 6); // 6th bit set if older models, like FR120, FR100 private: - uint8_t unique_id_; + uint8_t unique_id_ = 0; uint8_t device_type_ = DeviceType::SYSTEM; uint8_t device_id_ = 0; uint8_t product_id_ = 0; diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 91b30df7..ad627394 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -63,7 +63,6 @@ bool EMSESP::read_next_ = false; uint16_t EMSESP::publish_id_ = 0; bool EMSESP::tap_water_active_ = false; // for when Boiler states we having running warm water. used in Shower() uint32_t EMSESP::last_fetch_ = 0; -uint8_t EMSESP::unique_id_count_ = 0; // for a specific EMS device go and request data values // or if device_id is 0 it will fetch from all our known and active devices @@ -722,17 +721,19 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std:: return false; // not found } - std::string name = uuid::read_flash_string(device_p->name); - emsdevices.push_back(EMSFactory::add(device_p->device_type, device_id, device_p->product_id, version, name, device_p->flags, brand)); - emsdevices.back()->unique_id(++unique_id_count_); + auto name = uuid::read_flash_string(device_p->name); + auto device_type = device_p->device_type; + auto flags = device_p->flags; LOG_DEBUG(F("Adding new device %s (device ID 0x%02X, product ID %d, version %s)"), name.c_str(), device_id, product_id, version.c_str()); + emsdevices.push_back(EMSFactory::add(device_type, device_id, product_id, version, name, flags, brand)); + fetch_device_values(device_id); // go and fetch its data // add info command, but not for all devices - uint8_t device_type = device_p->device_type; if ((device_type == DeviceType::CONNECT) || (device_type == DeviceType::CONTROLLER) || (device_type == DeviceType::GATEWAY)) { return true; } + Command::add_with_json(device_type, F_(info), [device_type](const char * value, const int8_t id, JsonObject & json) { return command_info(device_type, json); }); diff --git a/src/emsesp.h b/src/emsesp.h index 0fd6d976..5b6e9505 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -206,7 +206,6 @@ class EMSESP { static bool read_next_; static uint16_t publish_id_; static bool tap_water_active_; - static uint8_t unique_id_count_; }; } // namespace emsesp From 937998d9e30ec2b48a4b3a62d7c8cb77f00ce228 Mon Sep 17 00:00:00 2001 From: Paul Date: Sat, 14 Nov 2020 00:10:40 +0100 Subject: [PATCH 050/225] 2.1.1b2 --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index 4616c4e4..94e8574e 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b1" +#define EMSESP_APP_VERSION "2.1.1b2" From 18d8d223fbabd9d4b48034aadce61bd54e61c2f4 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 00:20:04 +0100 Subject: [PATCH 051/225] updated pio examples --- debug_pio_local.ini | 31 +++++++++++++++++++++++++++++++ example_pio_local.ini | 8 ++------ 2 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 debug_pio_local.ini diff --git a/debug_pio_local.ini b/debug_pio_local.ini new file mode 100644 index 00000000..89cbe9da --- /dev/null +++ b/debug_pio_local.ini @@ -0,0 +1,31 @@ +[platformio] +; default_envs = esp32-local +default_envs = esp8266-local + +[env] +; upload_port = COM3 +upload_port = COM7 + +; upload_protocol = espota +; upload_flags = +; --port=8266 +; --auth=ems-esp-neo +; upload_port = ems-esp.local + +[common] +debug_flags = -DEMSESP_DEBUG + +[env:esp32-local] +monitor_filters = esp32_exception_decoder +debug_tool = esp-prog +debug_init_break = tbreak setup +build_type = debug +extra_scripts = + ; pre:scripts/build_interface.py + +[env:esp8266-local] +monitor_filters = esp8266_exception_decoder +extra_scripts = + ; pre:scripts/build_interface.py + scripts/main_script.py + diff --git a/example_pio_local.ini b/example_pio_local.ini index b34ec881..9cd8d72f 100644 --- a/example_pio_local.ini +++ b/example_pio_local.ini @@ -13,17 +13,13 @@ upload_port = COM7 ; upload_port = ems-esp.local [common] -debug_flags = -DEMSESP_DEBUG [env:esp32-local] -monitor_filters = esp32_exception_decoder -debug_tool = esp-prog -debug_init_break = tbreak setup -build_type = debug extra_scripts = ; pre:scripts/build_interface.py [env:esp8266-local] -monitor_filters = esp8266_exception_decoder extra_scripts = ; pre:scripts/build_interface.py + scripts/main_script.py + From ba793e0408714adbeb5622ba6aa471646e63c69f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 14 Nov 2020 10:31:55 +0100 Subject: [PATCH 052/225] commands "fetch" and "publish ha" as call (#608) --- CHANGELOG_LATEST.md | 2 ++ src/console.cpp | 30 ------------------------------ src/system.cpp | 21 +++++++++++++++++++-- src/system.h | 1 + 4 files changed, 22 insertions(+), 32 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 996a1f35..4f49d423 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -4,6 +4,7 @@ - function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts - SM100 pump working time and energy units - heating curve parameters for RC300 +- `wwonetime` for RC300 thermostat ### Fixed - mixer IPM pumpstatus @@ -12,6 +13,7 @@ - optimized MQTT for HA to reduce mem fragmentation issues - change syslog settings without reboot - HA-config split in smaller blocks +- commands `fetch` and `publish [ha]` as call ### Removed - old scripts diff --git a/src/console.cpp b/src/console.cpp index 7a24f829..4e39942d 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -108,28 +108,6 @@ void EMSESPShell::add_console_commands() { // commands->remove_context_commands(ShellContext::MAIN); commands->remove_all_commands(); - commands->add_command(ShellContext::MAIN, - CommandFlags::USER, - flash_string_vector{F_(fetch)}, - [&](Shell & shell, const std::vector & arguments __attribute__((unused))) { - shell.printfln(F("Requesting data from EMS devices")); - EMSESP::fetch_device_values(); - }); - - commands->add_command(ShellContext::MAIN, - CommandFlags::ADMIN, - flash_string_vector{F_(publish)}, - flash_string_vector{F_(ha_optional)}, - [&](Shell & shell, const std::vector & arguments) { - if (arguments.empty()) { - EMSESP::publish_all(); - shell.printfln(F("Published all data to MQTT")); - } else { - EMSESP::publish_all(true); - shell.printfln(F("Published all data to MQTT, including HA configs")); - } - }); - commands->add_command(ShellContext::MAIN, CommandFlags::USER, flash_string_vector{F_(show)}, @@ -312,14 +290,6 @@ void EMSESPShell::add_console_commands() { }); #endif - commands->add_command(ShellContext::MAIN, - CommandFlags::ADMIN, - flash_string_vector{F_(send), F_(telegram)}, - flash_string_vector{F_(data_mandatory)}, - [](Shell & shell __attribute__((unused)), const std::vector & arguments) { - EMSESP::send_raw_telegram(arguments.front().c_str()); - }); - commands->add_command(ShellContext::MAIN, CommandFlags::USER, flash_string_vector{F_(watch)}, diff --git a/src/system.cpp b/src/system.cpp index 52456199..45a40d63 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -59,15 +59,31 @@ bool System::command_pin(const char * value, const int8_t id) { return false; } -// send raw +// send raw to ems bool System::command_send(const char * value, const int8_t id) { EMSESP::send_raw_telegram(value); // ignore id return true; } -// publish +// fetch device values +bool System::command_fetch(const char * value, const int8_t id) { + LOG_INFO(F("Requesting data from EMS devices")); + EMSESP::fetch_device_values(); + return true; +} + +// mqtt publish bool System::command_publish(const char * value, const int8_t id) { + std::string ha(10, '\0'); + if (Helpers::value2string(value, ha)) { + if (ha == "ha") { + EMSESP::publish_all(true); // includes HA + LOG_INFO(F("Published all data to MQTT, including HA configs")); + return true; + } + } EMSESP::publish_all(); // ignore value and id + LOG_INFO(F("Published all data to MQTT")); return true; } @@ -172,6 +188,7 @@ void System::start() { Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(pin), System::command_pin); Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(send), System::command_send); Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(publish), System::command_publish); + Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(fetch), System::command_fetch); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(info), System::command_info); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(report), System::command_report); }); diff --git a/src/system.h b/src/system.h index a5f5c44e..0af8a8aa 100644 --- a/src/system.h +++ b/src/system.h @@ -51,6 +51,7 @@ class System { static bool command_pin(const char * value, const int8_t id); static bool command_send(const char * value, const int8_t id); static bool command_publish(const char * value, const int8_t id); + static bool command_fetch(const char * value, const int8_t id); static bool command_info(const char * value, const int8_t id, JsonObject & json); static bool command_report(const char * value, const int8_t id, JsonObject & json); From 808ef71c0e232c886ea6c07d615ca2d367b9ea93 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 11:44:08 +0100 Subject: [PATCH 053/225] don't create MQTT commands if MQTT disabled --- src/command.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/command.cpp b/src/command.cpp index d2a203f2..f083cee2 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -68,7 +68,9 @@ void Command::add(const uint8_t device_type, const uint8_t device_id, const __Fl cmdfunctions_.emplace_back(device_type, cmd, cb, nullptr); // see if we need to subscribe - Mqtt::register_command(device_type, device_id, cmd, cb); + if (Mqtt::enabled()) { + Mqtt::register_command(device_type, device_id, cmd, cb); + } } // add a command to the list, which does return json object as output From b19500f84b87c4239a6a21c68c7de2e2d7f6fc3b Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 12:48:21 +0100 Subject: [PATCH 054/225] updates to core web framework --- interface/package-lock.json | 1847 +++++++++-------- interface/package.json | 42 +- .../authentication/AuthenticationWrapper.tsx | 6 +- interface/src/ntp/TZ.tsx | 418 ++-- 4 files changed, 1210 insertions(+), 1103 deletions(-) diff --git a/interface/package-lock.json b/interface/package-lock.json index de68bb46..014040ec 100644 --- a/interface/package-lock.json +++ b/interface/package-lock.json @@ -13,21 +13,9 @@ } }, "@babel/compat-data": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.11.0.tgz", - "integrity": "sha512-TPSvJfv73ng0pfnEOh17bYMPQbI95+nGWc71Ss4vZdRBHTDqmM9Z8ZV4rYz8Ks7sfzc95n30k6ODIq5UGnXcYQ==", - "requires": { - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" - } - } + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.12.5.tgz", + "integrity": "sha512-DTsS7cxrsH3by8nqQSpFSyjSfSYl57D6Cf4q8dW3LK83tBKBDCkfcay1nYkXq1nIHXnpX8WMMb/O25HOy3h1zg==" }, "@babel/core": { "version": "7.9.0", @@ -65,11 +53,11 @@ } }, "@babel/generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.11.4.tgz", - "integrity": "sha512-Rn26vueFx0eOoz7iifCN2UHT6rGtnkSGWSoDRIy8jZN3B91PzeSULbswfLoOWuTuAcNwpG/mxy+uCTDnZ9Mp1g==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.5.tgz", + "integrity": "sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==", "requires": { - "@babel/types": "^7.11.0", + "@babel/types": "^7.12.5", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, @@ -108,24 +96,23 @@ } }, "@babel/helper-builder-react-jsx-experimental": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.5.tgz", - "integrity": "sha512-Buewnx6M4ttG+NLkKyt7baQn7ScC/Td+e99G914fRU8fGIUivDDgVIQeDHFa5e4CRSJQt58WpNHhsAZgtzVhsg==", + "version": "7.12.4", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz", + "integrity": "sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==", "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", - "@babel/types": "^7.10.5" + "@babel/helper-module-imports": "^7.12.1", + "@babel/types": "^7.12.1" } }, "@babel/helper-compilation-targets": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.4.tgz", - "integrity": "sha512-a3rYhlsGV0UHNDvrtOXBg8/OpfV0OKTkxKPzIplS1zpx7CygDcWWxckxZeDd3gzPzC4kUT0A4nVFDK0wGMh4MQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.12.5.tgz", + "integrity": "sha512-+qH6NrscMolUlzOYngSBMIOQpKUGPPsc61Bu5W10mg84LxZ7cmvnBHzARKbDoFxVvqqAbj6Tg6N7bSrWSPXMyw==", "requires": { - "@babel/compat-data": "^7.10.4", - "browserslist": "^4.12.0", - "invariant": "^2.2.4", - "levenary": "^1.1.1", + "@babel/compat-data": "^7.12.5", + "@babel/helper-validator-option": "^7.12.1", + "browserslist": "^4.14.5", "semver": "^5.5.0" }, "dependencies": { @@ -137,26 +124,25 @@ } }, "@babel/helper-create-class-features-plugin": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.5.tgz", - "integrity": "sha512-0nkdeijB7VlZoLT3r/mY3bUkw3T8WG/hNw+FATs/6+pG2039IJWjTYL0VTISqsNHMUTEnwbVnc89WIJX9Qed0A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz", + "integrity": "sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w==", "requires": { "@babel/helper-function-name": "^7.10.4", - "@babel/helper-member-expression-to-functions": "^7.10.5", + "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", "@babel/helper-split-export-declaration": "^7.10.4" } }, "@babel/helper-create-regexp-features-plugin": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.4.tgz", - "integrity": "sha512-2/hu58IEPKeoLF45DBwx3XFqsbCXmkdAay4spVr2x0jYgRxrSNp+ePwvSsy9g6YSaNDcKIQVPXk1Ov8S2edk2g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.1.tgz", + "integrity": "sha512-rsZ4LGvFTZnzdNZR5HZdmJVuXK8834R5QkF3WvcnBhrlVtF0HSIUC6zbreL9MgjTywhKokn8RIYRiq99+DLAxA==", "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-regex": "^7.10.4", - "regexpu-core": "^4.7.0" + "regexpu-core": "^4.7.1" } }, "@babel/helper-define-map": { @@ -170,11 +156,11 @@ } }, "@babel/helper-explode-assignable-expression": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.11.4.tgz", - "integrity": "sha512-ux9hm3zR4WV1Y3xXxXkdG/0gxF9nvI0YVmKVhvK9AfMoaQkemL3sJpXw+Xbz65azo8qJiEz2XVDUpK3KYhH3ZQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.12.1.tgz", + "integrity": "sha512-dmUwH8XmlrUpVqgtZ737tK88v07l840z9j3OEhCLwKTkjlvKpfqXVIZ0wpK3aeOxspwGrf/5AP5qLx4rO3w5rA==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/helper-function-name": { @@ -204,32 +190,34 @@ } }, "@babel/helper-member-expression-to-functions": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.11.0.tgz", - "integrity": "sha512-JbFlKHFntRV5qKw3YC0CvQnDZ4XMwgzzBbld7Ly4Mj4cbFy3KywcR8NtNctRToMWJOVvLINJv525Gd6wwVEx/Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz", + "integrity": "sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ==", "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" } }, "@babel/helper-module-imports": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.4.tgz", - "integrity": "sha512-nEQJHqYavI217oD9+s5MUBzk6x1IlvoS9WTPfgG43CbMEeStE0v+r+TucWdx8KFGowPGvyOkDT9+7DHedIDnVw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz", + "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==", "requires": { - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.5" } }, "@babel/helper-module-transforms": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz", - "integrity": "sha512-02EVu8COMuTRO1TAzdMtpBPbe6aQ1w/8fePD2YgQmxZU4gpNWaL9gK3Jp7dxlkUlUCJOTaSeA+Hrm1BRQwqIhg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz", + "integrity": "sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w==", "requires": { - "@babel/helper-module-imports": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", + "@babel/helper-replace-supers": "^7.12.1", + "@babel/helper-simple-access": "^7.12.1", "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/helper-validator-identifier": "^7.10.4", "@babel/template": "^7.10.4", - "@babel/types": "^7.11.0", + "@babel/traverse": "^7.12.1", + "@babel/types": "^7.12.1", "lodash": "^4.17.19" } }, @@ -255,42 +243,40 @@ } }, "@babel/helper-remap-async-to-generator": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.11.4.tgz", - "integrity": "sha512-tR5vJ/vBa9wFy3m5LLv2faapJLnDFxNWff2SAYkSE4rLUdbp7CdObYFgI7wK4T/Mj4UzpjPwzR8Pzmr5m7MHGA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.12.1.tgz", + "integrity": "sha512-9d0KQCRM8clMPcDwo8SevNs+/9a8yWVVmaE80FGJcEP8N1qToREmWEGnBn8BUlJhYRFz6fqxeRL1sl5Ogsed7A==", "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-wrap-function": "^7.10.4", - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/helper-replace-supers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.4.tgz", - "integrity": "sha512-sPxZfFXocEymYTdVK1UNmFPBN+Hv5mJkLPsYWwGBxZAxaWfFu+xqp7b6qWD0yjNuNL2VKc6L5M18tOXUP7NU0A==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.12.5.tgz", + "integrity": "sha512-5YILoed0ZyIpF4gKcpZitEnXEJ9UoDRki1Ey6xz46rxOzfNMAhVIJMoune1hmPVxh40LRv1+oafz7UsWX+vyWA==", "requires": { - "@babel/helper-member-expression-to-functions": "^7.10.4", + "@babel/helper-member-expression-to-functions": "^7.12.1", "@babel/helper-optimise-call-expression": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/helper-simple-access": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz", - "integrity": "sha512-0fMy72ej/VEvF8ULmX6yb5MtHG4uH4Dbd6I/aHDb/JVg0bbivwt9Wg+h3uMvX+QSFtwr5MeItvazbrc4jtRAXw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz", + "integrity": "sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA==", "requires": { - "@babel/template": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/types": "^7.12.1" } }, "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.11.0.tgz", - "integrity": "sha512-0XIdiQln4Elglgjbwo9wuJpL/K7AGCY26kmEt0+pRP0TAj4jjyNq1MjoRvikrTVqKcx4Gysxt4cXvVFXP/JO2Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", + "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", "requires": { - "@babel/types": "^7.11.0" + "@babel/types": "^7.12.1" } }, "@babel/helper-split-export-declaration": { @@ -306,10 +292,15 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==" }, + "@babel/helper-validator-option": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.1.tgz", + "integrity": "sha512-YpJabsXlJVWP0USHjnC/AQDTLlZERbON577YUVO/wLpqyj6HAtVYnWaQaN0iUN+1/tWn3c+uKKXjRut5115Y2A==" + }, "@babel/helper-wrap-function": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.4.tgz", - "integrity": "sha512-6py45WvEF0MhiLrdxtRjKjufwLL1/ob2qDJgg5JgNdojBAZSAKnAjkyOCNug6n+OBl4VW76XjvgSFTdaMcW0Ug==", + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.12.3.tgz", + "integrity": "sha512-Cvb8IuJDln3rs6tzjW3Y8UeelAOdnpB8xtQ4sme2MSZ9wOxrbThporC0y/EtE16VAtoyEfLM404Xr1e0OOp+ow==", "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/template": "^7.10.4", @@ -318,13 +309,13 @@ } }, "@babel/helpers": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.4.tgz", - "integrity": "sha512-L2gX/XeUONeEbI78dXSrJzGdz4GQ+ZTA/aazfUsFaWjSe95kiCuOZ5HsXvkiw3iwF+mFHSRUfJU8t6YavocdXA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.12.5.tgz", + "integrity": "sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA==", "requires": { "@babel/template": "^7.10.4", - "@babel/traverse": "^7.10.4", - "@babel/types": "^7.10.4" + "@babel/traverse": "^7.12.5", + "@babel/types": "^7.12.5" } }, "@babel/highlight": { @@ -338,26 +329,26 @@ } }, "@babel/parser": { - "version": "7.11.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.11.4.tgz", - "integrity": "sha512-MggwidiH+E9j5Sh8pbrX5sJvMcsqS5o+7iB42M9/k0CD63MjYbdP4nhSh7uB5wnv2/RVzTZFTxzF/kIa5mrCqA==" + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.5.tgz", + "integrity": "sha512-FVM6RZQ0mn2KCf1VUED7KepYeUWoVShczewOCfm3nzoBybaih51h+sYVVGthW9M6lPByEPTQf+xm27PBdlpwmQ==" }, "@babel/plugin-proposal-async-generator-functions": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.5.tgz", - "integrity": "sha512-cNMCVezQbrRGvXJwm9fu/1sJj9bHdGAgKodZdLqOQIpfoH3raqmRPBM17+lh7CzhiKRRBrGtZL9WcjxSoGYUSg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.12.1.tgz", + "integrity": "sha512-d+/o30tJxFxrA1lhzJqiUcEJdI6jKlNregCv5bASeGf2Q4MXmnwH7viDo7nhx1/ohf09oaH8j1GVYG/e3Yqk6A==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4", + "@babel/helper-remap-async-to-generator": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0" } }, "@babel/plugin-proposal-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.4.tgz", - "integrity": "sha512-vhwkEROxzcHGNu2mzUC0OFFNXdZ4M23ib8aRRcJSsW8BZK9pQMD7QB7csl97NBbgGZO7ZyHUyKDnxzOaP4IrCg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz", + "integrity": "sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, @@ -372,103 +363,103 @@ } }, "@babel/plugin-proposal-dynamic-import": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.4.tgz", - "integrity": "sha512-up6oID1LeidOOASNXgv/CFbgBqTuKJ0cJjz6An5tWD+NVBNlp3VNSBxv2ZdU7SYl3NxJC7agAQDApZusV6uFwQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.12.1.tgz", + "integrity": "sha512-a4rhUSZFuq5W8/OO8H7BL5zspjnc1FLd9hlOxIK/f7qG4a0qsqk8uvF/ywgBA8/OmjsapjpvaEOYItfGG1qIvQ==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-dynamic-import": "^7.8.0" } }, "@babel/plugin-proposal-export-namespace-from": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.10.4.tgz", - "integrity": "sha512-aNdf0LY6/3WXkhh0Fdb6Zk9j1NMD8ovj3F6r0+3j837Pn1S1PdNtcwJ5EG9WkVPNHPxyJDaxMaAOVq4eki0qbg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.1.tgz", + "integrity": "sha512-6CThGf0irEkzujYS5LQcjBx8j/4aQGiVv7J9+2f7pGfxqyKh3WnmVJYW3hdrQjyksErMGBPQrCnHfOtna+WLbw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" } }, "@babel/plugin-proposal-json-strings": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.4.tgz", - "integrity": "sha512-fCL7QF0Jo83uy1K0P2YXrfX11tj3lkpN7l4dMv9Y9VkowkhkQDwFHFd8IiwyK5MZjE8UpbgokkgtcReH88Abaw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.12.1.tgz", + "integrity": "sha512-GoLDUi6U9ZLzlSda2Df++VSqDJg3CG+dR0+iWsv6XRw1rEq+zwt4DirM9yrxW6XWaTpmai1cWJLMfM8qQJf+yw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.0" } }, "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.11.0.tgz", - "integrity": "sha512-/f8p4z+Auz0Uaf+i8Ekf1iM7wUNLcViFUGiPxKeXvxTSl63B875YPiVdUDdem7hREcI0E0kSpEhS8tF5RphK7Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.12.1.tgz", + "integrity": "sha512-k8ZmVv0JU+4gcUGeCDZOGd0lCIamU/sMtIiX3UWnUc5yzgq6YUGyEolNYD+MLYKfSzgECPcqetVcJP9Afe/aCA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" } }, "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.4.tgz", - "integrity": "sha512-wq5n1M3ZUlHl9sqT2ok1T2/MTt6AXE0e1Lz4WzWBr95LsAZ5qDXe4KnFuauYyEyLiohvXFMdbsOTMyLZs91Zlw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.12.1.tgz", + "integrity": "sha512-nZY0ESiaQDI1y96+jk6VxMOaL4LPo/QDHBqL+SF3/vl6dHkTwHlOI8L4ZwuRBHgakRBw5zsVylel7QPbbGuYgg==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" } }, "@babel/plugin-proposal-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.4.tgz", - "integrity": "sha512-73/G7QoRoeNkLZFxsoCCvlg4ezE4eM+57PnOqgaPOozd5myfj7p0muD1mRVJvbUWbOzD+q3No2bWbaKy+DJ8DA==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.5.tgz", + "integrity": "sha512-UiAnkKuOrCyjZ3sYNHlRlfuZJbBHknMQ9VMwVeX97Ofwx7RpD6gS2HfqTCh8KNUQgcOm8IKt103oR4KIjh7Q8g==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-numeric-separator": "^7.10.4" } }, "@babel/plugin-proposal-object-rest-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.11.0.tgz", - "integrity": "sha512-wzch41N4yztwoRw0ak+37wxwJM2oiIiy6huGCoqkvSTA9acYWcPfn9Y4aJqmFFJ70KTJUu29f3DQ43uJ9HXzEA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz", + "integrity": "sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-transform-parameters": "^7.10.4" + "@babel/plugin-transform-parameters": "^7.12.1" } }, "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.4.tgz", - "integrity": "sha512-LflT6nPh+GK2MnFiKDyLiqSqVHkQnVf7hdoAvyTnnKj9xB3docGRsdPuxp6qqqW19ifK3xgc9U5/FwrSaCNX5g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.12.1.tgz", + "integrity": "sha512-hFvIjgprh9mMw5v42sJWLI1lzU5L2sznP805zeT6rySVRA0Y18StRhDqhSxlap0oVgItRsB6WSROp4YnJTJz0g==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" } }, "@babel/plugin-proposal-optional-chaining": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.11.0.tgz", - "integrity": "sha512-v9fZIu3Y8562RRwhm1BbMRxtqZNFmFA2EG+pT2diuU8PT3H6T/KXoZ54KgYisfOFZHV6PfvAiBIZ9Rcz+/JCxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.12.1.tgz", + "integrity": "sha512-c2uRpY6WzaVDzynVY9liyykS+kVU+WRZPMPYpkelXH8KBt1oXoI89kPbZKKG/jDT5UK92FTW2fZkZaJhdiBabw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", "@babel/plugin-syntax-optional-chaining": "^7.8.0" } }, "@babel/plugin-proposal-private-methods": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.4.tgz", - "integrity": "sha512-wh5GJleuI8k3emgTg5KkJK6kHNsGEr0uBTDBuQUBJwckk9xs1ez79ioheEVVxMLyPscB0LfkbVHslQqIzWV6Bw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.12.1.tgz", + "integrity": "sha512-mwZ1phvH7/NHK6Kf8LP7MYDogGV+DKB1mryFOEwx5EBNQrosvIczzZFTUmWaeujd5xT6G1ELYWUz3CutMhjE1w==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.4", + "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.4.tgz", - "integrity": "sha512-H+3fOgPnEXFL9zGYtKQe4IDOPKYlZdF1kqFDQRRb8PK4B8af1vAGK04tF5iQAAsui+mHNBQSAtd2/ndEDe9wuA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.1.tgz", + "integrity": "sha512-MYq+l+PvHuw/rKUz1at/vb6nCnQ2gmJBNaM62z0OgH7B2W1D9pvkpYtlti9bGtizNIU1K3zm4bZF9F91efVY0w==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, @@ -481,17 +472,17 @@ } }, "@babel/plugin-syntax-class-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz", - "integrity": "sha512-GCSBF7iUle6rNugfURwNmCGG3Z/2+opxAMLs1nND4bhEG5PuxTIggDBoeYYSujAlLtsupzOHYJQgPS3pivwXIA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz", + "integrity": "sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-decorators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.4.tgz", - "integrity": "sha512-2NaoC6fAk2VMdhY1eerkfHV+lVYC1u8b+jmRJISqANCJlTxYy19HGdIkkQtix2UtkcPuPu+IlDgrVseZnU03bw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.12.1.tgz", + "integrity": "sha512-ir9YW5daRrTYiy9UJ2TzdNIJEZu8KclVzDcfSt4iEmOtwQ4llPtWInNKJyKnVXp1vE4bbVd5S31M/im3mYMO1w==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -513,9 +504,9 @@ } }, "@babel/plugin-syntax-flow": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.4.tgz", - "integrity": "sha512-yxQsX1dJixF4qEEdzVbst3SZQ58Nrooz8NV9Z9GL4byTE25BvJgl5lf0RECUf0fh28rZBb/RYTWn/eeKwCMrZQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz", + "integrity": "sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -529,9 +520,9 @@ } }, "@babel/plugin-syntax-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.4.tgz", - "integrity": "sha512-KCg9mio9jwiARCB7WAcQ7Y1q+qicILjoK8LP/VkPkEKaf5dkaZZK1EcTe91a3JJlZ3qy6L5s9X52boEYi8DM9g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz", + "integrity": "sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -585,107 +576,107 @@ } }, "@babel/plugin-syntax-top-level-await": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.4.tgz", - "integrity": "sha512-ni1brg4lXEmWyafKr0ccFWkJG0CeMt4WV1oyeBW6EFObF4oOHclbkj5cARxAPQyAQ2UTuplJyK4nfkXIMMFvsQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz", + "integrity": "sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-syntax-typescript": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.4.tgz", - "integrity": "sha512-oSAEz1YkBCAKr5Yiq8/BNtvSAPwkp/IyUnwZogd8p+F0RuYQQrLeRUzIQhueQTTBy/F+a40uS7OFKxnkRvmvFQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.12.1.tgz", + "integrity": "sha512-UZNEcCY+4Dp9yYRCAHrHDU+9ZXLYaY9MgBXSRLkB9WjYFRR6quJBumfVrEkUxrePPBwFcpWfNKXqVRQQtm7mMA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-arrow-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.4.tgz", - "integrity": "sha512-9J/oD1jV0ZCBcgnoFWFq1vJd4msoKb/TCpGNFyyLt0zABdcvgK3aYikZ8HjzB14c26bc7E3Q1yugpwGy2aTPNA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz", + "integrity": "sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-async-to-generator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.4.tgz", - "integrity": "sha512-F6nREOan7J5UXTLsDsZG3DXmZSVofr2tGNwfdrVwkDWHfQckbQXnXSPfD7iO+c/2HGqycwyLST3DnZ16n+cBJQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.12.1.tgz", + "integrity": "sha512-SDtqoEcarK1DFlRJ1hHRY5HvJUj5kX4qmtpMAm2QnhOlyuMC4TMdCRgW6WXpv93rZeYNeLP22y8Aq2dbcDRM1A==", "requires": { - "@babel/helper-module-imports": "^7.10.4", + "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-remap-async-to-generator": "^7.10.4" + "@babel/helper-remap-async-to-generator": "^7.12.1" } }, "@babel/plugin-transform-block-scoped-functions": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.4.tgz", - "integrity": "sha512-WzXDarQXYYfjaV1szJvN3AD7rZgZzC1JtjJZ8dMHUyiK8mxPRahynp14zzNjU3VkPqPsO38CzxiWO1c9ARZ8JA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz", + "integrity": "sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-block-scoping": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.11.1.tgz", - "integrity": "sha512-00dYeDE0EVEHuuM+26+0w/SCL0BH2Qy7LwHuI4Hi4MH5gkC8/AqMN5uWFJIsoXZrAphiMm1iXzBw6L2T+eA0ew==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz", + "integrity": "sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-classes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.4.tgz", - "integrity": "sha512-2oZ9qLjt161dn1ZE0Ms66xBncQH4In8Sqw1YWgBUZuGVJJS5c0OFZXL6dP2MRHrkU/eKhWg8CzFJhRQl50rQxA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz", + "integrity": "sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog==", "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-define-map": "^7.10.4", "@babel/helper-function-name": "^7.10.4", "@babel/helper-optimise-call-expression": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4", + "@babel/helper-replace-supers": "^7.12.1", "@babel/helper-split-export-declaration": "^7.10.4", "globals": "^11.1.0" } }, "@babel/plugin-transform-computed-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.4.tgz", - "integrity": "sha512-JFwVDXcP/hM/TbyzGq3l/XWGut7p46Z3QvqFMXTfk6/09m7xZHJUN9xHfsv7vqqD4YnfI5ueYdSJtXqqBLyjBw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz", + "integrity": "sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-destructuring": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.4.tgz", - "integrity": "sha512-+WmfvyfsyF603iPa6825mq6Qrb7uLjTOsa3XOFzlYcYDHSS4QmpOWOL0NNBY5qMbvrcf3tq0Cw+v4lxswOBpgA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz", + "integrity": "sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-dotall-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.4.tgz", - "integrity": "sha512-ZEAVvUTCMlMFAbASYSVQoxIbHm2OkG2MseW6bV2JjIygOjdVv8tuxrCTzj1+Rynh7ODb8GivUy7dzEXzEhuPaA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.1.tgz", + "integrity": "sha512-B2pXeRKoLszfEW7J4Hg9LoFaWEbr/kzo3teWHmtFCszjRNa/b40f9mfeqZsIDLLt/FjwQ6pz/Gdlwy85xNckBA==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-duplicate-keys": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.4.tgz", - "integrity": "sha512-GL0/fJnmgMclHiBTTWXNlYjYsA7rDrtsazHG6mglaGSTh0KsrW04qml+Bbz9FL0LcJIRwBWL5ZqlNHKTkU3xAA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.1.tgz", + "integrity": "sha512-iRght0T0HztAb/CazveUpUQrZY+aGKKaWXMJ4uf9YJtqxSUe09j3wteztCUDRHs+SRAL7yMuFqUsLoAKKzgXjw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-exponentiation-operator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.4.tgz", - "integrity": "sha512-S5HgLVgkBcRdyQAHbKj+7KyuWx8C6t5oETmUuwz1pt3WTWJhsUV0WIIXuVvfXMxl/QQyHKlSCNNtaIamG8fysw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.1.tgz", + "integrity": "sha512-7tqwy2bv48q+c1EHbXK0Zx3KXd2RVQp6OC7PbwFNt/dPTAV3Lu5sWtWuAj8owr5wqtWnqHfl2/mJlUmqkChKug==", "requires": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" @@ -701,197 +692,195 @@ } }, "@babel/plugin-transform-for-of": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.4.tgz", - "integrity": "sha512-ItdQfAzu9AlEqmusA/65TqJ79eRcgGmpPPFvBnGILXZH975G0LNjP1yjHvGgfuCxqrPPueXOPe+FsvxmxKiHHQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz", + "integrity": "sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-function-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.4.tgz", - "integrity": "sha512-OcDCq2y5+E0dVD5MagT5X+yTRbcvFjDI2ZVAottGH6tzqjx/LKpgkUepu3hp/u4tZBzxxpNGwLsAvGBvQ2mJzg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz", + "integrity": "sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw==", "requires": { "@babel/helper-function-name": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.4.tgz", - "integrity": "sha512-Xd/dFSTEVuUWnyZiMu76/InZxLTYilOSr1UlHV+p115Z/Le2Fi1KXkJUYz0b42DfndostYlPub3m8ZTQlMaiqQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz", + "integrity": "sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-member-expression-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.4.tgz", - "integrity": "sha512-0bFOvPyAoTBhtcJLr9VcwZqKmSjFml1iVxvPL0ReomGU53CX53HsM4h2SzckNdkQcHox1bpAqzxBI1Y09LlBSw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz", + "integrity": "sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-modules-amd": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.5.tgz", - "integrity": "sha512-elm5uruNio7CTLFItVC/rIzKLfQ17+fX7EVz5W0TMgIHFo1zY0Ozzx+lgwhL4plzl8OzVn6Qasx5DeEFyoNiRw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.12.1.tgz", + "integrity": "sha512-tDW8hMkzad5oDtzsB70HIQQRBiTKrhfgwC/KkJeGsaNFTdWhKNt/BiE8c5yj19XiGyrxpbkOfH87qkNg1YGlOQ==", "requires": { - "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-commonjs": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.4.tgz", - "integrity": "sha512-Xj7Uq5o80HDLlW64rVfDBhao6OX89HKUmb+9vWYaLXBZOma4gA6tw4Ni1O5qVDoZWUV0fxMYA0aYzOawz0l+1w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz", + "integrity": "sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag==", "requires": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-simple-access": "^7.10.4", + "@babel/helper-simple-access": "^7.12.1", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-systemjs": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.5.tgz", - "integrity": "sha512-f4RLO/OL14/FP1AEbcsWMzpbUz6tssRaeQg11RH1BP/XnPpRoVwgeYViMFacnkaw4k4wjRSjn3ip1Uw9TaXuMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.12.1.tgz", + "integrity": "sha512-Hn7cVvOavVh8yvW6fLwveFqSnd7rbQN3zJvoPNyNaQSvgfKmDBO9U1YL9+PCXGRlZD9tNdWTy5ACKqMuzyn32Q==", "requires": { "@babel/helper-hoist-variables": "^7.10.4", - "@babel/helper-module-transforms": "^7.10.5", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", + "@babel/helper-validator-identifier": "^7.10.4", "babel-plugin-dynamic-import-node": "^2.3.3" } }, "@babel/plugin-transform-modules-umd": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.4.tgz", - "integrity": "sha512-mohW5q3uAEt8T45YT7Qc5ws6mWgJAaL/8BfWD9Dodo1A3RKWli8wTS+WiQ/knF+tXlPirW/1/MqzzGfCExKECA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.12.1.tgz", + "integrity": "sha512-aEIubCS0KHKM0zUos5fIoQm+AZUMt1ZvMpqz0/H5qAQ7vWylr9+PLYurT+Ic7ID/bKLd4q8hDovaG3Zch2uz5Q==", "requires": { - "@babel/helper-module-transforms": "^7.10.4", + "@babel/helper-module-transforms": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.10.4.tgz", - "integrity": "sha512-V6LuOnD31kTkxQPhKiVYzYC/Jgdq53irJC/xBSmqcNcqFGV+PER4l6rU5SH2Vl7bH9mLDHcc0+l9HUOe4RNGKA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.1.tgz", + "integrity": "sha512-tB43uQ62RHcoDp9v2Nsf+dSM8sbNodbEicbQNA53zHz8pWUhsgHSJCGpt7daXxRydjb0KnfmB+ChXOv3oADp1Q==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4" + "@babel/helper-create-regexp-features-plugin": "^7.12.1" } }, "@babel/plugin-transform-new-target": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.4.tgz", - "integrity": "sha512-YXwWUDAH/J6dlfwqlWsztI2Puz1NtUAubXhOPLQ5gjR/qmQ5U96DY4FQO8At33JN4XPBhrjB8I4eMmLROjjLjw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.1.tgz", + "integrity": "sha512-+eW/VLcUL5L9IvJH7rT1sT0CzkdUTvPrXC2PXTn/7z7tXLBuKvezYbGdxD5WMRoyvyaujOq2fWoKl869heKjhw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-object-super": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.4.tgz", - "integrity": "sha512-5iTw0JkdRdJvr7sY0vHqTpnruUpTea32JHmq/atIWqsnNussbRzjEDyWep8UNztt1B5IusBYg8Irb0bLbiEBCQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz", + "integrity": "sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-replace-supers": "^7.10.4" + "@babel/helper-replace-supers": "^7.12.1" } }, "@babel/plugin-transform-parameters": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.5.tgz", - "integrity": "sha512-xPHwUj5RdFV8l1wuYiu5S9fqWGM2DrYc24TMvUiRrPVm+SM3XeqU9BcokQX/kEUe+p2RBwy+yoiR1w/Blq6ubw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz", + "integrity": "sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg==", "requires": { - "@babel/helper-get-function-arity": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-property-literals": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.4.tgz", - "integrity": "sha512-ofsAcKiUxQ8TY4sScgsGeR2vJIsfrzqvFb9GvJ5UdXDzl+MyYCaBj/FGzXuv7qE0aJcjWMILny1epqelnFlz8g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz", + "integrity": "sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.4.tgz", - "integrity": "sha512-cYmQBW1pXrqBte1raMkAulXmi7rjg3VI6ZLg9QIic8Hq7BtYXaWuZSxsr2siOMI6SWwpxjWfnwhTUrd7JlAV7g==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.12.1.tgz", + "integrity": "sha512-KOHd0tIRLoER+J+8f9DblZDa1fLGPwaaN1DI1TVHuQFOpjHV22C3CUB3obeC4fexHY9nx+fH0hQNvLFFfA1mxA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-display-name": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.4.tgz", - "integrity": "sha512-Zd4X54Mu9SBfPGnEcaGcOrVAYOtjT2on8QZkLKEq1S/tHexG39d9XXGZv19VfRrDjPJzFmPfTAqOQS1pfFOujw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz", + "integrity": "sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-jsx": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.4.tgz", - "integrity": "sha512-L+MfRhWjX0eI7Js093MM6MacKU4M6dnCRa/QPDwYMxjljzSCzzlzKzj9Pk4P3OtrPcxr2N3znR419nr3Xw+65A==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.5.tgz", + "integrity": "sha512-2xkcPqqrYiOQgSlM/iwto1paPijjsDbUynN13tI6bosDz/jOW3CRzYguIE8wKX32h+msbBM22Dv5fwrFkUOZjQ==", "requires": { "@babel/helper-builder-react-jsx": "^7.10.4", - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/plugin-syntax-jsx": "^7.12.1" } }, "@babel/plugin-transform-react-jsx-development": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.4.tgz", - "integrity": "sha512-RM3ZAd1sU1iQ7rI2dhrZRZGv0aqzNQMbkIUCS1txYpi9wHQ2ZHNjo5TwX+UD6pvFW4AbWqLVYvKy5qJSAyRGjQ==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.12.5.tgz", + "integrity": "sha512-1JJusg3iPgsZDthyWiCr3KQiGs31ikU/mSf2N2dSYEAO0GEImmVUbWf0VoSDGDFTAn5Dj4DUiR6SdIXHY7tELA==", "requires": { - "@babel/helper-builder-react-jsx-experimental": "^7.10.4", + "@babel/helper-builder-react-jsx-experimental": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/plugin-syntax-jsx": "^7.12.1" } }, "@babel/plugin-transform-react-jsx-self": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.4.tgz", - "integrity": "sha512-yOvxY2pDiVJi0axdTWHSMi5T0DILN+H+SaeJeACHKjQLezEzhLx9nEF9xgpBLPtkZsks9cnb5P9iBEi21En3gg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz", + "integrity": "sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-jsx-source": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.5.tgz", - "integrity": "sha512-wTeqHVkN1lfPLubRiZH3o73f4rfon42HpgxUSs86Nc+8QIcm/B9s8NNVXu/gwGcOyd7yDib9ikxoDLxJP0UiDA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz", + "integrity": "sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==", "requires": { - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-jsx": "^7.10.4" + "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-react-pure-annotations": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.4.tgz", - "integrity": "sha512-+njZkqcOuS8RaPakrnR9KvxjoG1ASJWpoIv/doyWngId88JoFlPlISenGXjrVacZUIALGUr6eodRs1vmPnF23A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.12.1.tgz", + "integrity": "sha512-RqeaHiwZtphSIUZ5I85PEH19LOSzxfuEazoY7/pWASCAIBuATQzpSVD+eT6MebeeZT2F4eSL0u4vw6n4Nm0Mjg==", "requires": { "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-regenerator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.4.tgz", - "integrity": "sha512-3thAHwtor39A7C04XucbMg17RcZ3Qppfxr22wYzZNcVIkPHfpM9J0SO8zuCV6SZa265kxBJSrfKTvDCYqBFXGw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.1.tgz", + "integrity": "sha512-gYrHqs5itw6i4PflFX3OdBPMQdPbF4bj2REIUxlMRUFk0/ZOAIpDFuViuxPjUL7YC8UPnf+XG7/utJvqXdPKng==", "requires": { "regenerator-transform": "^0.14.2" } }, "@babel/plugin-transform-reserved-words": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.4.tgz", - "integrity": "sha512-hGsw1O6Rew1fkFbDImZIEqA8GoidwTAilwCyWqLBM9f+e/u/sQMQu7uX6dyokfOayRuuVfKOW4O7HvaBWM+JlQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.1.tgz", + "integrity": "sha512-pOnUfhyPKvZpVyBHhSBoX8vfA09b7r00Pmm1sH+29ae2hMTKVmSp4Ztsr8KBKjLjx17H0eJqaRC3bR2iThM54A==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } @@ -915,99 +904,99 @@ } }, "@babel/plugin-transform-shorthand-properties": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.4.tgz", - "integrity": "sha512-AC2K/t7o07KeTIxMoHneyX90v3zkm5cjHJEokrPEAGEy3UCp8sLKfnfOIGdZ194fyN4wfX/zZUWT9trJZ0qc+Q==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz", + "integrity": "sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-spread": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.11.0.tgz", - "integrity": "sha512-UwQYGOqIdQJe4aWNyS7noqAnN2VbaczPLiEtln+zPowRNlD+79w3oi2TWfYe0eZgd+gjZCbsydN7lzWysDt+gw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz", + "integrity": "sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-skip-transparent-expression-wrappers": "^7.11.0" + "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" } }, "@babel/plugin-transform-sticky-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.4.tgz", - "integrity": "sha512-Ddy3QZfIbEV0VYcVtFDCjeE4xwVTJWTmUtorAJkn6u/92Z/nWJNV+mILyqHKrUxXYKA2EoCilgoPePymKL4DvQ==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.1.tgz", + "integrity": "sha512-CiUgKQ3AGVk7kveIaPEET1jNDhZZEl1RPMWdTBE1799bdz++SwqDHStmxfCtDfBhQgCl38YRiSnrMuUMZIWSUQ==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", "@babel/helper-regex": "^7.10.4" } }, "@babel/plugin-transform-template-literals": { - "version": "7.10.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.5.tgz", - "integrity": "sha512-V/lnPGIb+KT12OQikDvgSuesRX14ck5FfJXt6+tXhdkJ+Vsd0lDCVtF6jcB4rNClYFzaB2jusZ+lNISDk2mMMw==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz", + "integrity": "sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw==", "requires": { - "@babel/helper-annotate-as-pure": "^7.10.4", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typeof-symbol": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.4.tgz", - "integrity": "sha512-QqNgYwuuW0y0H+kUE/GWSR45t/ccRhe14Fs/4ZRouNNQsyd4o3PG4OtHiIrepbM2WKUBDAXKCAK/Lk4VhzTaGA==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz", + "integrity": "sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-typescript": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.11.0.tgz", - "integrity": "sha512-edJsNzTtvb3MaXQwj8403B7mZoGu9ElDJQZOKjGUnvilquxBA3IQoEIOvkX/1O8xfAsnHS/oQhe2w/IXrr+w0w==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.12.1.tgz", + "integrity": "sha512-VrsBByqAIntM+EYMqSm59SiMEf7qkmI9dqMt6RbD/wlwueWmYcI0FFK5Fj47pP6DRZm+3teXjosKlwcZJ5lIMw==", "requires": { - "@babel/helper-create-class-features-plugin": "^7.10.5", + "@babel/helper-create-class-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-syntax-typescript": "^7.10.4" + "@babel/plugin-syntax-typescript": "^7.12.1" } }, "@babel/plugin-transform-unicode-escapes": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.4.tgz", - "integrity": "sha512-y5XJ9waMti2J+e7ij20e+aH+fho7Wb7W8rNuu72aKRwCHFqQdhkdU2lo3uZ9tQuboEJcUFayXdARhcxLQ3+6Fg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.1.tgz", + "integrity": "sha512-I8gNHJLIc7GdApm7wkVnStWssPNbSRMPtgHdmH3sRM1zopz09UWPS4x5V4n1yz/MIWTVnJ9sp6IkuXdWM4w+2Q==", "requires": { "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/plugin-transform-unicode-regex": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.4.tgz", - "integrity": "sha512-wNfsc4s8N2qnIwpO/WP2ZiSyjfpTamT2C9V9FDH/Ljub9zw6P3SjkXcFmc0RQUt96k2fmIvtla2MMjgTwIAC+A==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.1.tgz", + "integrity": "sha512-SqH4ClNngh/zGwHZOOQMTD+e8FGWexILV+ePMyiDJttAWRh5dhDL8rcl5lSgU3Huiq6Zn6pWTMvdPAb21Dwdyg==", "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.10.4", + "@babel/helper-create-regexp-features-plugin": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4" } }, "@babel/preset-env": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.11.0.tgz", - "integrity": "sha512-2u1/k7rG/gTh02dylX2kL3S0IJNF+J6bfDSp4DI2Ma8QN6Y9x9pmAax59fsCk6QUQG0yqH47yJWA+u1I1LccAg==", + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", + "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", "requires": { - "@babel/compat-data": "^7.11.0", - "@babel/helper-compilation-targets": "^7.10.4", - "@babel/helper-module-imports": "^7.10.4", + "@babel/compat-data": "^7.12.1", + "@babel/helper-compilation-targets": "^7.12.1", + "@babel/helper-module-imports": "^7.12.1", "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-proposal-async-generator-functions": "^7.10.4", - "@babel/plugin-proposal-class-properties": "^7.10.4", - "@babel/plugin-proposal-dynamic-import": "^7.10.4", - "@babel/plugin-proposal-export-namespace-from": "^7.10.4", - "@babel/plugin-proposal-json-strings": "^7.10.4", - "@babel/plugin-proposal-logical-assignment-operators": "^7.11.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.4", - "@babel/plugin-proposal-numeric-separator": "^7.10.4", - "@babel/plugin-proposal-object-rest-spread": "^7.11.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.10.4", - "@babel/plugin-proposal-optional-chaining": "^7.11.0", - "@babel/plugin-proposal-private-methods": "^7.10.4", - "@babel/plugin-proposal-unicode-property-regex": "^7.10.4", + "@babel/helper-validator-option": "^7.12.1", + "@babel/plugin-proposal-async-generator-functions": "^7.12.1", + "@babel/plugin-proposal-class-properties": "^7.12.1", + "@babel/plugin-proposal-dynamic-import": "^7.12.1", + "@babel/plugin-proposal-export-namespace-from": "^7.12.1", + "@babel/plugin-proposal-json-strings": "^7.12.1", + "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", + "@babel/plugin-proposal-numeric-separator": "^7.12.1", + "@babel/plugin-proposal-object-rest-spread": "^7.12.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", + "@babel/plugin-proposal-optional-chaining": "^7.12.1", + "@babel/plugin-proposal-private-methods": "^7.12.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.10.4", + "@babel/plugin-syntax-class-properties": "^7.12.1", "@babel/plugin-syntax-dynamic-import": "^7.8.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", "@babel/plugin-syntax-json-strings": "^7.8.0", @@ -1017,45 +1006,42 @@ "@babel/plugin-syntax-object-rest-spread": "^7.8.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.10.4", - "@babel/plugin-transform-arrow-functions": "^7.10.4", - "@babel/plugin-transform-async-to-generator": "^7.10.4", - "@babel/plugin-transform-block-scoped-functions": "^7.10.4", - "@babel/plugin-transform-block-scoping": "^7.10.4", - "@babel/plugin-transform-classes": "^7.10.4", - "@babel/plugin-transform-computed-properties": "^7.10.4", - "@babel/plugin-transform-destructuring": "^7.10.4", - "@babel/plugin-transform-dotall-regex": "^7.10.4", - "@babel/plugin-transform-duplicate-keys": "^7.10.4", - "@babel/plugin-transform-exponentiation-operator": "^7.10.4", - "@babel/plugin-transform-for-of": "^7.10.4", - "@babel/plugin-transform-function-name": "^7.10.4", - "@babel/plugin-transform-literals": "^7.10.4", - "@babel/plugin-transform-member-expression-literals": "^7.10.4", - "@babel/plugin-transform-modules-amd": "^7.10.4", - "@babel/plugin-transform-modules-commonjs": "^7.10.4", - "@babel/plugin-transform-modules-systemjs": "^7.10.4", - "@babel/plugin-transform-modules-umd": "^7.10.4", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.10.4", - "@babel/plugin-transform-new-target": "^7.10.4", - "@babel/plugin-transform-object-super": "^7.10.4", - "@babel/plugin-transform-parameters": "^7.10.4", - "@babel/plugin-transform-property-literals": "^7.10.4", - "@babel/plugin-transform-regenerator": "^7.10.4", - "@babel/plugin-transform-reserved-words": "^7.10.4", - "@babel/plugin-transform-shorthand-properties": "^7.10.4", - "@babel/plugin-transform-spread": "^7.11.0", - "@babel/plugin-transform-sticky-regex": "^7.10.4", - "@babel/plugin-transform-template-literals": "^7.10.4", - "@babel/plugin-transform-typeof-symbol": "^7.10.4", - "@babel/plugin-transform-unicode-escapes": "^7.10.4", - "@babel/plugin-transform-unicode-regex": "^7.10.4", + "@babel/plugin-syntax-top-level-await": "^7.12.1", + "@babel/plugin-transform-arrow-functions": "^7.12.1", + "@babel/plugin-transform-async-to-generator": "^7.12.1", + "@babel/plugin-transform-block-scoped-functions": "^7.12.1", + "@babel/plugin-transform-block-scoping": "^7.12.1", + "@babel/plugin-transform-classes": "^7.12.1", + "@babel/plugin-transform-computed-properties": "^7.12.1", + "@babel/plugin-transform-destructuring": "^7.12.1", + "@babel/plugin-transform-dotall-regex": "^7.12.1", + "@babel/plugin-transform-duplicate-keys": "^7.12.1", + "@babel/plugin-transform-exponentiation-operator": "^7.12.1", + "@babel/plugin-transform-for-of": "^7.12.1", + "@babel/plugin-transform-function-name": "^7.12.1", + "@babel/plugin-transform-literals": "^7.12.1", + "@babel/plugin-transform-member-expression-literals": "^7.12.1", + "@babel/plugin-transform-modules-amd": "^7.12.1", + "@babel/plugin-transform-modules-commonjs": "^7.12.1", + "@babel/plugin-transform-modules-systemjs": "^7.12.1", + "@babel/plugin-transform-modules-umd": "^7.12.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", + "@babel/plugin-transform-new-target": "^7.12.1", + "@babel/plugin-transform-object-super": "^7.12.1", + "@babel/plugin-transform-parameters": "^7.12.1", + "@babel/plugin-transform-property-literals": "^7.12.1", + "@babel/plugin-transform-regenerator": "^7.12.1", + "@babel/plugin-transform-reserved-words": "^7.12.1", + "@babel/plugin-transform-shorthand-properties": "^7.12.1", + "@babel/plugin-transform-spread": "^7.12.1", + "@babel/plugin-transform-sticky-regex": "^7.12.1", + "@babel/plugin-transform-template-literals": "^7.12.1", + "@babel/plugin-transform-typeof-symbol": "^7.12.1", + "@babel/plugin-transform-unicode-escapes": "^7.12.1", + "@babel/plugin-transform-unicode-regex": "^7.12.1", "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.11.0", - "browserslist": "^4.12.0", + "@babel/types": "^7.12.1", "core-js-compat": "^3.6.2", - "invariant": "^2.2.2", - "levenary": "^1.1.1", "semver": "^5.5.0" }, "dependencies": { @@ -1067,9 +1053,9 @@ } }, "@babel/preset-modules": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", - "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", + "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", "requires": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", @@ -1079,17 +1065,17 @@ } }, "@babel/preset-react": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.4.tgz", - "integrity": "sha512-BrHp4TgOIy4M19JAfO1LhycVXOPWdDbTRep7eVyatf174Hff+6Uk53sDyajqZPu8W1qXRBiYOfIamek6jA7YVw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.12.5.tgz", + "integrity": "sha512-jcs++VPrgyFehkMezHtezS2BpnUlR7tQFAyesJn1vGTO9aTFZrgIQrA5YydlTwxbcjMwkFY6i04flCigRRr3GA==", "requires": { "@babel/helper-plugin-utils": "^7.10.4", - "@babel/plugin-transform-react-display-name": "^7.10.4", - "@babel/plugin-transform-react-jsx": "^7.10.4", - "@babel/plugin-transform-react-jsx-development": "^7.10.4", - "@babel/plugin-transform-react-jsx-self": "^7.10.4", - "@babel/plugin-transform-react-jsx-source": "^7.10.4", - "@babel/plugin-transform-react-pure-annotations": "^7.10.4" + "@babel/plugin-transform-react-display-name": "^7.12.1", + "@babel/plugin-transform-react-jsx": "^7.12.5", + "@babel/plugin-transform-react-jsx-development": "^7.12.5", + "@babel/plugin-transform-react-jsx-self": "^7.12.1", + "@babel/plugin-transform-react-jsx-source": "^7.12.1", + "@babel/plugin-transform-react-pure-annotations": "^7.12.1" } }, "@babel/preset-typescript": { @@ -1102,17 +1088,17 @@ } }, "@babel/runtime": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz", - "integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.5.tgz", + "integrity": "sha512-plcc+hbExy3McchJCEQG3knOsuh3HH+Prx1P6cLIkET/0dLuQDEnrT+s27Axgc9bqfsmNUNHfscgMUdBpC9xfg==", "requires": { "regenerator-runtime": "^0.13.4" } }, "@babel/runtime-corejs3": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.11.2.tgz", - "integrity": "sha512-qh5IR+8VgFz83VBa6OkaET6uN/mJOhHONuy3m1sgF0CV6mXdPSEBdA7e1eUbVvyNtANjMbg22JUv71BaDXLY6A==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.12.5.tgz", + "integrity": "sha512-roGr54CsTmNPPzZoCP1AmDXuBoNao7tnSA83TXTwt+UK5QVyh1DIJnrgYRPWKCF2flqZQXwa7Yr8v7VmLzF0YQ==", "requires": { "core-js-pure": "^3.0.0", "regenerator-runtime": "^0.13.4" @@ -1129,25 +1115,25 @@ } }, "@babel/traverse": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.0.tgz", - "integrity": "sha512-ZB2V+LskoWKNpMq6E5UUCrjtDUh5IOTAyIl0dTjIEoXum/iKWkoIEKIRDnUucO6f+2FzNkE0oD4RLKoPIufDtg==", + "version": "7.12.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.12.5.tgz", + "integrity": "sha512-xa15FbQnias7z9a62LwYAA5SZZPkHIXpd42C6uW68o8uTuua96FHZy1y61Va5P/i83FAAcMpW8+A/QayntzuqA==", "requires": { "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.11.0", + "@babel/generator": "^7.12.5", "@babel/helper-function-name": "^7.10.4", "@babel/helper-split-export-declaration": "^7.11.0", - "@babel/parser": "^7.11.0", - "@babel/types": "^7.11.0", + "@babel/parser": "^7.12.5", + "@babel/types": "^7.12.5", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.19" } }, "@babel/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.11.0.tgz", - "integrity": "sha512-O53yME4ZZI0jO1EVGtF1ePGl0LHirG4P1ibcD80XyzZcKhcMFeCXmh4Xb1ifGBIV233Qg12x4rBfQgA+tmOukA==", + "version": "7.12.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.6.tgz", + "integrity": "sha512-hwyjw6GvjBLiyy3W0YQf0Z5Zf4NpYejUnKFcfcUhZCSffoBBp30w6wP2Wn6pk31jMYZvcOrB/1b7cGXvEoKogA==", "requires": { "@babel/helper-validator-identifier": "^7.10.4", "lodash": "^4.17.19", @@ -1600,9 +1586,9 @@ } }, "@types/babel__core": { - "version": "7.1.9", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.9.tgz", - "integrity": "sha512-sY2RsIJ5rpER1u3/aQ8OFSI7qGIy8o1NEEbgb2UaJcvOtXOMpd39ko723NBpjQFg9SIX7TXtjejZVGeIMLhoOw==", + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.12.tgz", + "integrity": "sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", @@ -1612,35 +1598,30 @@ } }, "@types/babel__generator": { - "version": "7.6.1", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", - "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", + "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", - "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.3.tgz", + "integrity": "sha512-uCoznIPDmnickEi6D0v11SBpW0OuVqHJCa7syXqQHy5uktSCreIlt0iglsCnmvz8yCb38hGcWeseA8cWJSwv5Q==", "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "@types/babel__traverse": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.13.tgz", - "integrity": "sha512-i+zS7t6/s9cdQvbqKDARrcbrPvtJGlbYsMkazo03nTAK3RX9FNrLllXys22uiTGJapPOTZTQ35nHh4ISph4SLQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.15.tgz", + "integrity": "sha512-Pzh9O3sTK8V6I1olsXpCfj2k/ygO2q1X0vhhnDrEQyYLHZesWz+zMZMVcwXLCYf0U36EtmyYaFGPfXlTtDHe3A==", "requires": { "@babel/types": "^7.3.0" } }, - "@types/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" - }, "@types/eslint-visitor-keys": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", @@ -1656,9 +1637,9 @@ } }, "@types/history": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.7.tgz", - "integrity": "sha512-2xtoL22/3Mv6a70i4+4RB7VgbDDORoWwjcqeNysojZA0R7NK17RbY5Gof/2QiFfJgX+KkWghbwJ+d/2SB8Ndzg==" + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.8.tgz", + "integrity": "sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==" }, "@types/istanbul-lib-coverage": { "version": "2.0.3", @@ -1683,19 +1664,22 @@ } }, "@types/json-schema": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.5.tgz", - "integrity": "sha512-7+2BITlgjgDhH0vvwZU/HZJVyk+2XUlvxXe8dFMedNX/aMkaOq++rMAFXc0tM7ij15QaWlbdQASBR9dihi+bDQ==" + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.6.tgz", + "integrity": "sha512-3c+yGKvVP5Y9TYBEibGNR+kLtijnj7mYrXRg+WpFb2X9xm04g/DXYkfg4hmzJQosc9snFNUPkbYIhu+KAm6jJw==" }, "@types/jwt-decode": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-2.2.1.tgz", - "integrity": "sha512-aWw2YTtAdT7CskFyxEX2K21/zSDStuf/ikI3yBqmwpwJF0pS+/IX5DWv+1UFffZIbruP6cnT9/LAJV1gFwAT1A==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/jwt-decode/-/jwt-decode-3.1.0.tgz", + "integrity": "sha512-tthwik7TKkou3mVnBnvVuHnHElbjtdbM63pdBCbZTirCt3WAdM73Y79mOri7+ljsS99ZVwUFZHLMxJuJnv/z1w==", + "requires": { + "jwt-decode": "*" + } }, "@types/lodash": { - "version": "4.14.159", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.159.tgz", - "integrity": "sha512-gF7A72f7WQN33DpqOWw9geApQPh4M3PxluMtaHxWHXEGSN12/WbcEk/eNSqWNQcQhF66VSZ06vCF94CrHwXJDg==" + "version": "4.14.165", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.165.tgz", + "integrity": "sha512-tjSSOTHhI5mCHTy/OOXYIhi2Wt1qcbHmuXD1Ha7q70CgI/I71afO4XtLb/cVexki1oVYchpul/TOuu3Arcdxrg==" }, "@types/material-ui": { "version": "0.21.8", @@ -1712,9 +1696,9 @@ "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==" }, "@types/node": { - "version": "12.12.54", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.54.tgz", - "integrity": "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==" + "version": "12.19.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.19.4.tgz", + "integrity": "sha512-o3oj1bETk8kBwzz1WlO6JWL/AfAA3Vm6J1B3C9CsdxHYp7XgPiH7OEXPUbZTndHlRaIElrANkQfe6ZmfJb3H2w==" }, "@types/parse-json": { "version": "4.0.0", @@ -1732,18 +1716,18 @@ "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" }, "@types/react": { - "version": "16.9.46", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.46.tgz", - "integrity": "sha512-dbHzO3aAq1lB3jRQuNpuZ/mnu+CdD3H0WVaaBQA8LTT3S33xhVBUj232T8M3tAhSWJs/D/UqORYUlJNl/8VQZg==", + "version": "16.9.56", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.56.tgz", + "integrity": "sha512-gIkl4J44G/qxbuC6r2Xh+D3CGZpJ+NdWTItAPmZbR5mUS+JQ8Zvzpl0ea5qT/ZT3ZNTUcDKUVqV3xBE8wv/DyQ==", "requires": { "@types/prop-types": "*", "csstype": "^3.0.2" }, "dependencies": { "csstype": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.2.tgz", - "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.4.tgz", + "integrity": "sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA==" } } }, @@ -1756,17 +1740,17 @@ } }, "@types/react-dom": { - "version": "16.9.8", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", - "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "version": "16.9.9", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.9.tgz", + "integrity": "sha512-jE16FNWO3Logq/Lf+yvEAjKzhpST/Eac8EMd1i4dgZdMczfgqC8EjpxwNgEe3SExHYLliabXDh9DEhhqnlXJhg==", "requires": { "@types/react": "*" } }, "@types/react-material-ui-form-validator": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/react-material-ui-form-validator/-/react-material-ui-form-validator-2.0.6.tgz", - "integrity": "sha512-JOs2fvVSR6AXWUJv+ALkBShzbwlzxiYJJTy8kN5sbaj/HBqDLcCRGBDmnfZiHyEF6Wwp2KxoD7o8m23mKcb5cA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/react-material-ui-form-validator/-/react-material-ui-form-validator-2.1.0.tgz", + "integrity": "sha512-izwjulCvMsN01H8oF8X1IN7QDMHeaGmjYoAxL/cmlUJLtFH0BLLUNmlmZERrjNM+MOJAXUaOkwoCqOHlCtqCzQ==", "requires": { "@types/material-ui": "*", "@types/react": "*" @@ -1782,9 +1766,9 @@ } }, "@types/react-router-dom": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.5.tgz", - "integrity": "sha512-ArBM4B1g3BWLGbaGvwBGO75GNFbLDUthrDojV2vHLih/Tq8M+tgvY1DSwkuNrPSwdp/GUL93WSEpTZs8nVyJLw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.1.6.tgz", + "integrity": "sha512-gjrxYqxz37zWEdMVvQtWPFMFj1dRDb4TGOcgyOfSXTrEXdF92L00WE3C471O3TV/RF1oskcStkXsOU0Ete4s/g==", "requires": { "@types/history": "*", "@types/react": "*", @@ -1805,9 +1789,9 @@ "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==" }, "@types/yargs": { - "version": "13.0.10", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.10.tgz", - "integrity": "sha512-MU10TSgzNABgdzKvQVW1nuuT+sgBMWeXNc3XOs5YXV5SDAK+PPja2eUuBNB9iqElu03xyEDqlnGw0jgl4nbqGQ==", + "version": "13.0.11", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.11.tgz", + "integrity": "sha512-NRqD6T4gktUrDi1o1wLH3EKC1o2caCr7/wR87ODcbVITQF106OM3sFN92ysZ++wqelOd1CTzatnOBRDYYG6wGQ==", "requires": { "@types/yargs-parser": "*" } @@ -2040,9 +2024,9 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "abab": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.4.tgz", - "integrity": "sha512-Eu9ELJWCz/c1e9gTiCY+FceWxcqzjYEbqMgtndnuSqZSUCOL73TWNK2mHfIj4Cw2E/ongOp+JISVNCmovt2KYQ==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", + "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==" }, "accepts": { "version": "1.3.7", @@ -2054,9 +2038,9 @@ } }, "acorn": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz", - "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==" + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" }, "acorn-globals": { "version": "4.3.4", @@ -2068,16 +2052,16 @@ }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" } } }, "acorn-jsx": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", - "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==" }, "acorn-walk": { "version": "6.2.0", @@ -2090,60 +2074,39 @@ "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==" }, "adjust-sourcemap-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", - "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", + "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", "requires": { - "assert": "1.4.1", - "camelcase": "5.0.0", - "loader-utils": "1.2.3", - "object-path": "0.11.4", - "regex-parser": "2.2.10" + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" }, "dependencies": { - "camelcase": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", - "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" - }, - "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "requires": { - "minimist": "^1.2.0" - } - }, "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", "requires": { "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" + "emojis-list": "^3.0.0", + "json5": "^2.1.2" } } } }, "aggregate-error": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", - "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "requires": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" } }, "ajv": { - "version": "6.12.4", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.4.tgz", - "integrity": "sha512-eienB2c9qVQs2KWexhkrdMLVDoIQCz5KSeLxwg9Lzk4DOfBtIK9PQwwufcsn1jjGuf9WZmqPMbGxOzfcuphJCQ==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "requires": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -2339,11 +2302,27 @@ } }, "assert": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", - "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", "requires": { + "object-assign": "^4.1.1", "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "requires": { + "inherits": "2.0.1" + } + } } }, "assert-plus": { @@ -2395,9 +2374,9 @@ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" }, "attr-accept": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.1.tgz", - "integrity": "sha512-GpefLMsbH5ojNgfTW+OBin2xKzuHfyeNA+qCktzZojBhbA/lPZdCFMWdwk5ajb989Ok7ZT+EADqvW3TAFNMjhA==" + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" }, "autoprefixer": { "version": "9.8.6", @@ -2419,9 +2398,9 @@ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, "aws4": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", - "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==" }, "axobject-query": { "version": "2.2.0", @@ -2686,22 +2665,22 @@ } }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "parse-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.1.tgz", - "integrity": "sha512-ztoZ4/DYeXQq4E21v169sC8qWINGpcosGv9XhTDvg9/hWvx/zrFkc9BiWxR58OJLHGk28j5BL0SDLeV2WmFZlQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1", + "json-parse-even-better-errors": "^2.3.0", "lines-and-columns": "^1.1.6" } }, @@ -2718,9 +2697,9 @@ } }, "babel-plugin-named-asset-import": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", - "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==" + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.7.tgz", + "integrity": "sha512-squySRkf+6JGnvjoUtDEjSREJEBirnXi9NqP6rjSYsylxQxqBTz+pkmf395i9E2zsvmYUaI40BHo6SqZUdydlw==" }, "babel-plugin-syntax-object-rest-spread": { "version": "6.13.0", @@ -3025,15 +3004,6 @@ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz", "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==" }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3240,14 +3210,15 @@ } }, "browserslist": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.0.tgz", - "integrity": "sha512-pUsXKAF2lVwhmtpeA3LJrZ76jXuusrNyhduuQs7CDFf9foT4Y38aQOserd2lMe5DSSrjf3fx34oHwryuvxAUgQ==", + "version": "4.14.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.7.tgz", + "integrity": "sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==", "requires": { - "caniuse-lite": "^1.0.30001111", - "electron-to-chromium": "^1.3.523", - "escalade": "^3.0.2", - "node-releases": "^1.1.60" + "caniuse-lite": "^1.0.30001157", + "colorette": "^1.2.1", + "electron-to-chromium": "^1.3.591", + "escalade": "^3.1.1", + "node-releases": "^1.1.66" } }, "bser": { @@ -3340,6 +3311,15 @@ "unset-value": "^1.0.0" } }, + "call-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.0.tgz", + "integrity": "sha512-AEXsYIyyDY3MCzbwdhzG3Jx1R0J2wetQyUynn6dYHAO+bg8l1k7jwZtRv4ryryFs7EP+NDlikJlVe59jr0cM2w==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.0" + } + }, "call-me-maybe": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", @@ -3373,6 +3353,13 @@ "requires": { "pascal-case": "^3.1.1", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "camelcase": { @@ -3392,9 +3379,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001117", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001117.tgz", - "integrity": "sha512-4tY0Fatzdx59kYjQs+bNxUwZB03ZEBgVmJ1UkFPz/Q8OLiUUbjct2EdpnXj0fvFTPej2EkbPIG0w8BWsjAyk1Q==" + "version": "1.0.30001157", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001157.tgz", + "integrity": "sha512-gOerH9Wz2IRZ2ZPdMfBvyOi3cjaz4O4dgNwPGzx8EhqAs4+2IL/O+fJsbt+znSigujoZG8bVcIAUM/I/E5K3MA==" }, "capture-exit": { "version": "2.0.0", @@ -3430,9 +3417,9 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "chokidar": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz", - "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.3.tgz", + "integrity": "sha512-DtM3g7juCXQxFVSNPNByEC2+NImtBuxQQvWlHunpJIS5Ocr0lG306cC7FCi7cEA0fzmybPUIl4txBIobk1gGOQ==", "requires": { "anymatch": "~3.1.1", "braces": "~3.0.2", @@ -3441,7 +3428,7 @@ "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", - "readdirp": "~3.4.0" + "readdirp": "~3.5.0" }, "dependencies": { "anymatch": { @@ -3500,6 +3487,13 @@ "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "ci-info": { @@ -3637,12 +3631,12 @@ } }, "color": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", - "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", + "integrity": "sha512-xgXAcTHa2HeFCGLE9Xs/R82hujGtu9Jd9x4NW3T34+OMs7VoPsjwzRczKHvTAHeJwWFwX5j15+MgAppE8ztObQ==", "requires": { "color-convert": "^1.9.1", - "color-string": "^1.5.2" + "color-string": "^1.5.4" } }, "color-convert": { @@ -3659,9 +3653,9 @@ "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", - "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.4.tgz", + "integrity": "sha512-57yF5yt8Xa3czSEW1jfQDE79Idk0+AkN/4KWad6tbdxUmAs3MvjxlWSWD4deYytcRfoZ9nhKyFl1kj5tBvidbw==", "requires": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -3813,9 +3807,9 @@ } }, "confusing-browser-globals": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", - "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==" + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.10.tgz", + "integrity": "sha512-gNld/3lySHwuhaVluJUKLePYirM3QNCKzVxqAdhJII9/WXKVX5PURzMVJspS1jTslSqjeuG4KMVTSouit5YPHA==" }, "connect-history-api-fallback": { "version": "1.6.0", @@ -3919,16 +3913,16 @@ "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" }, "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.7.0.tgz", + "integrity": "sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==" }, "core-js-compat": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", - "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.7.0.tgz", + "integrity": "sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==", "requires": { - "browserslist": "^4.8.5", + "browserslist": "^4.14.6", "semver": "7.0.0" }, "dependencies": { @@ -3940,9 +3934,9 @@ } }, "core-js-pure": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", - "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==" + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.7.0.tgz", + "integrity": "sha512-EZD2ckZysv8MMt4J6HSvS9K2GdtlZtdBncKAmF9lr2n0c9dJUaUN88PSTjvgwCgQPWKTkERXITgS6JJRAnljtg==" }, "core-util-is": { "version": "1.0.2", @@ -4175,9 +4169,9 @@ } }, "css-what": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", - "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==" + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==" }, "cssdb": { "version": "4.4.0", @@ -4261,26 +4255,26 @@ "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==" }, "csso": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", - "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.1.0.tgz", + "integrity": "sha512-h+6w/W1WqXaJA4tb1dk7r5tVbOm97MsKxzwnvOR04UQ6GILroryjMWu3pmCCtL2mLaEStQ0fZgeGiy99mo7iyg==", "requires": { - "css-tree": "1.0.0-alpha.39" + "css-tree": "^1.0.0" }, "dependencies": { "css-tree": { - "version": "1.0.0-alpha.39", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", - "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0.tgz", + "integrity": "sha512-CdVYz/Yuqw0VdKhXPBIgi8DO3NicJVYZNWeX9XcIuSp9ZoFT5IcleVRW07O5rMjdcx1mb+MEJPknTTEW7DdsYw==", "requires": { - "mdn-data": "2.0.6", + "mdn-data": "2.0.12", "source-map": "^0.6.1" } }, "mdn-data": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", - "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==" + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.12.tgz", + "integrity": "sha512-ULbAlgzVb8IqZ0Hsxm6hHSlQl3Jckst2YEQS7fODu9ilNWy2LvcoSY7TRFIktABP2mdppBioc66va90T+NUs8Q==" } } }, @@ -4352,11 +4346,11 @@ } }, "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", "requires": { - "ms": "^2.1.1" + "ms": "2.1.2" } }, "decamelize": { @@ -4636,9 +4630,9 @@ }, "dependencies": { "csstype": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.2.tgz", - "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.4.tgz", + "integrity": "sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA==" } } }, @@ -4652,9 +4646,9 @@ }, "dependencies": { "domelementtype": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", - "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.2.tgz", + "integrity": "sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==" } } }, @@ -4700,12 +4694,19 @@ "requires": { "no-case": "^3.0.3", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "dot-prop": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", - "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "requires": { "is-obj": "^2.0.0" } @@ -4785,9 +4786,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "electron-to-chromium": { - "version": "1.3.540", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.540.tgz", - "integrity": "sha512-IoGiZb8SMqTtkDYJtP8EtCdvv3VMtd1QoTlypO2RUBxRq/Wk0rU5IzhzhMckPaC9XxDqUvWsL0XKOBhTiYVN3w==" + "version": "1.3.592", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.592.tgz", + "integrity": "sha512-kGNowksvqQiPb1pUSQKpd8JFoGPLxYOwduNRCqCxGh/2Q1qE2JdmwouCW41lUzDxOb/2RIV4lR0tVIfboWlO9A==" }, "elliptic": { "version": "6.5.3", @@ -4887,9 +4888,9 @@ } }, "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" }, "errno": { "version": "0.1.7", @@ -4908,19 +4909,19 @@ } }, "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", "requires": { "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", "has": "^1.0.3", "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", + "object.assign": "^4.1.1", "string.prototype.trimend": "^1.0.1", "string.prototype.trimstart": "^1.0.1" } @@ -4965,9 +4966,9 @@ } }, "escalade": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz", - "integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ==" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" }, "escape-html": { "version": "1.0.3", @@ -5052,9 +5053,9 @@ } }, "import-fresh": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", - "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.2.tgz", + "integrity": "sha512-cTPNrlvJT6twpYy+YmKUKrTSjWFs3bjYjAhCwm+z4EOCubZxAuO+hHpRN64TqjEaYSHs7tJAE0w1CKMGmsG/lw==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -5400,10 +5401,11 @@ } }, "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", "requires": { + "is-core-module": "^2.0.0", "path-parse": "^1.0.6" } } @@ -5415,11 +5417,11 @@ "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==" }, "eslint-scope": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.0.tgz", - "integrity": "sha512-iiGRvtxWqgtx5m8EyQUJihBloE4EnYeGE/bz1wSPwJE6tZuJUtHlhqDM4Xj2ukE8Dyy1+HCZ4hE0fzIVMzb58w==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "requires": { - "esrecurse": "^4.1.0", + "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, @@ -5467,11 +5469,18 @@ } }, "esrecurse": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", - "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "requires": { - "estraverse": "^4.1.0" + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + } } }, "estraverse": { @@ -5490,9 +5499,9 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "eventemitter3": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", - "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==" + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" }, "events": { "version": "3.2.0", @@ -5679,9 +5688,9 @@ }, "dependencies": { "type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", - "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.1.0.tgz", + "integrity": "sha512-G9absDWvhAWCV2gmF1zKud3OyC61nZDwWvBL2DApaVFogI07CprggiQAOOjvp2NRjYWFzPyu7vwtDrQFq8jeSA==" } } }, @@ -5884,19 +5893,13 @@ } }, "file-selector": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.1.12.tgz", - "integrity": "sha512-Kx7RTzxyQipHuiqyZGf+Nz4vY9R1XGxuQl/hLoJwq+J4avk/9wxxgZyHKtbyIPJmbD4A66DWGYfyykWNpcYutQ==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.2.3.tgz", + "integrity": "sha512-d+hc9ctodLSVG55V2V5I4/eJBEr2p2na/kDN46Ty7PBhdp/Q5NmeQTXKa1Hx3AcIL1lgSFKZI0ve/v5ZXGCDkQ==", "requires": { - "tslib": "^1.9.0" + "tslib": "^2.0.3" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "optional": true - }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -6245,15 +6248,25 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "gensync": { - "version": "1.0.0-beta.1", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", - "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==" + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, + "get-intrinsic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.0.1.tgz", + "integrity": "sha512-ZnWP+AmS1VUaLgTRy47+zKtjTxz+0xMpx3I52i+aalBK1QP19ggLF3Db89KJX7kjfOfP2eoa01qc++GwPgufPg==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, "get-own-enumerable-property-symbols": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", @@ -6777,9 +6790,9 @@ } }, "ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" }, "iferr": { "version": "0.1.5", @@ -6930,11 +6943,10 @@ }, "dependencies": { "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "requires": { - "@types/color-name": "^1.1.1", "color-convert": "^2.0.1" } }, @@ -6974,9 +6986,9 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" } @@ -7062,9 +7074,9 @@ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==" }, "is-ci": { "version": "2.0.0", @@ -7087,6 +7099,14 @@ "rgba-regex": "^1.0.0" } }, + "is-core-module": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.1.0.tgz", + "integrity": "sha512-YcV7BgVMRFRua2FqQzKtTDMz8iCuLEyGKjr70q8Zm1yy2qKcurbFEd79PAdHV77oL3NrAaOVQIbMmiHQCHB7ZA==", + "requires": { + "has": "^1.0.3" + } + }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", @@ -7160,6 +7180,11 @@ "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", "integrity": "sha1-Vv9NtoOgeMYILrldrX3GLh0E+DU=" }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=" + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -7521,9 +7546,9 @@ }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" }, "jsdom": { "version": "14.1.0", @@ -7623,11 +7648,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true } } }, @@ -8006,6 +8027,11 @@ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==" }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -8083,9 +8109,9 @@ }, "dependencies": { "csstype": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.2.tgz", - "integrity": "sha512-ofovWglpqoqbfLNOTBNZLSbMuGrblAf1efvvArGKOZMBrIoJeu5UsAipQolkijtyQx5MtAzT/J9IHj/CEY1mJw==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.4.tgz", + "integrity": "sha512-xc8DUsCLmjvCfoD7LTGE0ou2MIWLx0K9RCZwSHMOdynqRsP4MtUcLeqh1HcQ2dInwDTqn+3CE0/FZh1et+p4jA==" } } }, @@ -8166,9 +8192,9 @@ } }, "jwt-decode": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", - "integrity": "sha1-fYa9VmefWM5qhHBKZX3TkruoGnk=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.1.tgz", + "integrity": "sha512-EaH9dTD9ogCmxZRdiTsIUIJslqjoFfk8nEAi+Bq8u/aUjrVuhZ6eZjhWRH6SC9NBA0Lwr3K35H2zDnWvK/n4vQ==" }, "killable": { "version": "1.0.1", @@ -8375,9 +8401,9 @@ "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=" }, "loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.0.tgz", + "integrity": "sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ==" }, "loose-envify": { "version": "1.4.0", @@ -8393,6 +8419,13 @@ "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", "requires": { "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "lru-cache": { @@ -8602,11 +8635,11 @@ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" }, "mini-create-react-context": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.0.tgz", - "integrity": "sha512-b0TytUgFSbgFJGzJqXPKCFCBWigAjpjo+Fl7Vf7ZbKRDptszpppKxXH6DRXEABZ/gcEQczeb0iZ7JvL8e8jjCA==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz", + "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==", "requires": { - "@babel/runtime": "^7.5.5", + "@babel/runtime": "^7.12.1", "tiny-warning": "^1.0.3" } }, @@ -8755,9 +8788,9 @@ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, "moment": { - "version": "2.27.0", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.27.0.tgz", - "integrity": "sha512-al0MUK7cpIcglMv3YF13qSgdAIqxHTO7brRtaz3DlSULbqfazqkc5kEjNrLDOM7fsjshoFIihnU8snrP7zUvhQ==" + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz", + "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ==" }, "move-concurrently": { "version": "1.0.1", @@ -8814,12 +8847,6 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, - "nan": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", - "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", - "optional": true - }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -8877,12 +8904,19 @@ "requires": { "lower-case": "^2.0.1", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "node-forge": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", - "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", + "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==" }, "node-int64": { "version": "0.4.0", @@ -8957,21 +8991,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } } } }, @@ -9000,9 +9019,9 @@ } }, "node-releases": { - "version": "1.1.60", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.60.tgz", - "integrity": "sha512-gsO4vjEdQaTusZAEebUWp2a5d7dF5DYoIpDG7WySnk7BuZDW+GPpHXoXXuYawRBr/9t5q54tirPz79kFIWg4dA==" + "version": "1.1.66", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.66.tgz", + "integrity": "sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==" }, "normalize-package-data": { "version": "2.5.0", @@ -9047,9 +9066,9 @@ } }, "notistack": { - "version": "0.9.17", - "resolved": "https://registry.npmjs.org/notistack/-/notistack-0.9.17.tgz", - "integrity": "sha512-nypTN6sEe+q98wMaxF/UwatA1yAq948+bZOo9JKYR+tU65DW0ipWyx8DseJ3UJYvb6VDD+Fqo83qwayQ46bEEA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-1.0.1.tgz", + "integrity": "sha512-2T1WkokzRCM8N9EdueaXja160IMFIMHVhRu0fGkDje7qCzwBHlTMZY2NULQzB2GFOO6iGVzl5GCX2XrJIzI8bw==", "requires": { "clsx": "^1.1.0", "hoist-non-react-statics": "^3.3.0" @@ -9122,12 +9141,33 @@ "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" }, "object-is": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", - "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.3.tgz", + "integrity": "sha512-teyqLvFWzLkq5B9ki8FVWA902UER2qkxmdA4nLf+wjOLAWgxzCWZNCxpDq9MvE8MmhWNr+I8w3BN49Vx36Y6Xg==", "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "object-keys": { @@ -9135,11 +9175,6 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" }, - "object-path": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", - "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=" - }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", @@ -9149,14 +9184,14 @@ } }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.entries": { @@ -9243,9 +9278,9 @@ } }, "open": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.1.0.tgz", - "integrity": "sha512-lLPI5KgOwEYCDKXf4np7y1PBEkj7HYIyP2DY8mVDRnx0VIIu6bNrRB0R66TuO7Mack6EnTNLm4uvcl1UoklTpA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", + "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", "requires": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -9420,6 +9455,13 @@ "requires": { "dot-case": "^3.0.3", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "parent-module": { @@ -9475,6 +9517,13 @@ "requires": { "no-case": "^3.0.3", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "pascalcase": { @@ -9681,9 +9730,9 @@ "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" }, "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "version": "7.0.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz", + "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==", "requires": { "chalk": "^2.4.2", "source-map": "^0.6.1", @@ -9718,9 +9767,9 @@ } }, "postcss-calc": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.3.tgz", - "integrity": "sha512-IB/EAEmZhIMEIhG7Ov4x+l47UaXOS1n2f4FBUk/aKllQhtSCxWhTzn0nJgkqN7fo/jcWySvWTSB6Syk9L+31bA==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", "requires": { "postcss": "^7.0.27", "postcss-selector-parser": "^6.0.2", @@ -9953,9 +10002,9 @@ } }, "postcss-font-variant": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", - "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.1.tgz", + "integrity": "sha512-I3ADQSTNtLTTd8uxZhtSOrTCQ9G4qUVKPjHiDk0bV75QSxXjVWiJVJ2VLdspGUi9fbW9BcjKJoRvxAH1pckqmA==", "requires": { "postcss": "^7.0.2" } @@ -9997,9 +10046,9 @@ } }, "postcss-load-config": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", - "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.2.tgz", + "integrity": "sha512-/rDeGV6vMUo3mwJZmeHfEDvwnTKKqQ0S7OHUi/kJvvtx3aWtyWG2/0ZWnzCt2keEclwN6Tf0DST2v9kITdOKYw==", "requires": { "cosmiconfig": "^5.0.0", "import-cwd": "^2.0.0" @@ -10548,13 +10597,14 @@ } }, "postcss-selector-parser": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", - "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", + "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", "requires": { "cssesc": "^3.0.0", "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "uniq": "^1.0.1", + "util-deprecate": "^1.0.2" } }, "postcss-svgo": { @@ -10611,17 +10661,17 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" }, "pretty-bytes": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", - "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==" + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.4.1.tgz", + "integrity": "sha512-s1Iam6Gwz3JI5Hweaz4GoCD1WUNUIyzePFy5+Js2hjwGVt2Z79wNN+ZKOZ2vB6C+Xs6njyB84Z1IthQg8d9LxA==" }, "pretty-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", - "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.2.tgz", + "integrity": "sha512-EY5oDzmsX5wvuynAByrmY0P0hcp+QpnAKbJng2A2MPjVKXCxrDSUkzghVJ4ZGPIv+JC4gX8fPUWscC0RtjsWGw==", "requires": { - "renderkid": "^2.0.1", - "utila": "~0.4" + "lodash": "^4.17.20", + "renderkid": "^2.0.4" } }, "pretty-format": { @@ -10676,12 +10726,12 @@ "integrity": "sha512-OzSf6gcCUQ01byV4BgwyUCswlaQQ6gzXc23aLQWhicvfX9kfsUiUhgt3CCQej8jDnl8/PhGF31JdHX2/MzF3WA==" }, "prompts": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", - "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.0.tgz", + "integrity": "sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ==", "requires": { "kleur": "^3.0.3", - "sisteransi": "^1.0.4" + "sisteransi": "^1.0.5" } }, "prop-types": { @@ -10851,9 +10901,9 @@ } }, "react": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", - "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -11062,9 +11112,9 @@ } }, "react-dom": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", - "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", "requires": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -11073,25 +11123,26 @@ } }, "react-dropzone": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.0.3.tgz", - "integrity": "sha512-+MoMOoKZfkZ9i1+qEFl2ZU29AB/c9K2bFxyACqGynguJunmqO+k2PJ2AcuiH51xVNl9R7q/x5QdBaIWb6RtoSw==", + "version": "11.2.4", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-11.2.4.tgz", + "integrity": "sha512-EGSvK2CxFTuc28WxwuJCICyuYFX8b+sRumwU6Bs6sTbElV2HtQkT0d6C+HEee6XfbjiLIZ+Th9uji27rvo2wGw==", "requires": { - "attr-accept": "^2.0.0", - "file-selector": "^0.1.12", + "attr-accept": "^2.2.1", + "file-selector": "^0.2.2", "prop-types": "^15.7.2" } }, "react-error-overlay": { - "version": "6.0.7", - "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", - "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.8.tgz", + "integrity": "sha512-HvPuUQnLp5H7TouGq3kzBeioJmXms1wHy9EGjz2OURWBp4qZO6AfGEcnxts1D/CbwPLRAgTMPCEgYhA3sEM4vw==" }, "react-form-validator-core": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/react-form-validator-core/-/react-form-validator-core-0.6.5.tgz", - "integrity": "sha512-TOGksWHld6wHrCpAoTJBeS6xc6iOXWYCmNb3GPHCY8IjnMpJY2Uv/t73w/gCYWJgv3ucA+jxUsf4qKmx1f3QEQ==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/react-form-validator-core/-/react-form-validator-core-1.0.0.tgz", + "integrity": "sha512-J+itG0oD/6VikXWJlOyjpoe3QaB35iX2WeFuQ1psxyJ5KkjMncBcOjUw/lemW8dYCOC7vQTFGUjlvwkGenTgig==", "requires": { + "create-react-context": "^0.3.0", "promise-polyfill": "8.1.0", "prop-types": "^15.0.0", "react-lifecycles-compat": "^3.0.2" @@ -11114,19 +11165,6 @@ "requires": { "prop-types": "^15.0.0", "react-form-validator-core": "1.0.0" - }, - "dependencies": { - "react-form-validator-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/react-form-validator-core/-/react-form-validator-core-1.0.0.tgz", - "integrity": "sha512-J+itG0oD/6VikXWJlOyjpoe3QaB35iX2WeFuQ1psxyJ5KkjMncBcOjUw/lemW8dYCOC7vQTFGUjlvwkGenTgig==", - "requires": { - "create-react-context": "^0.3.0", - "promise-polyfill": "8.1.0", - "prop-types": "^15.0.0", - "react-lifecycles-compat": "^3.0.2" - } - } } }, "react-router": { @@ -11161,9 +11199,9 @@ } }, "react-scripts": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.3.tgz", - "integrity": "sha512-oSnoWmii/iKdeQiwaO6map1lUaZLmG0xIUyb/HwCVFLT7gNbj8JZ9RmpvMCZ4fB98ZUMRfNmp/ft8uy/xD1RLA==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.4.tgz", + "integrity": "sha512-7J7GZyF/QvZkKAZLneiOIhHozvOMHey7hO9cdO9u68jjhGZlI8hDdOm6UyuHofn6Ajc9Uji5I6Psm/nKNuWdyw==", "requires": { "@babel/core": "7.9.0", "@svgr/webpack": "4.3.3", @@ -11207,7 +11245,7 @@ "react-app-polyfill": "^1.0.6", "react-dev-utils": "^10.2.1", "resolve": "1.15.0", - "resolve-url-loader": "3.1.1", + "resolve-url-loader": "3.1.2", "sass-loader": "8.0.2", "semver": "6.3.0", "style-loader": "0.23.1", @@ -11293,9 +11331,9 @@ } }, "readdirp": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", - "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", + "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", "requires": { "picomatch": "^2.2.1" } @@ -11317,9 +11355,9 @@ } }, "regenerate": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.1.tgz", - "integrity": "sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==" }, "regenerate-unicode-properties": { "version": "8.2.0", @@ -11352,9 +11390,9 @@ } }, "regex-parser": { - "version": "2.2.10", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", - "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==" + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==" }, "regexp.prototype.flags": { "version": "1.3.0", @@ -11371,9 +11409,9 @@ "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==" }, "regexpu-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", - "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "version": "4.7.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", + "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", "requires": { "regenerate": "^1.4.0", "regenerate-unicode-properties": "^8.2.0", @@ -11414,15 +11452,15 @@ "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" }, "renderkid": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", - "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.4.tgz", + "integrity": "sha512-K2eXrSOJdq+HuKzlcjOlGoOarUu5SDguDEhE7+Ah4zuOWL40j8A/oHvLlLob9PSTNvVnBd+/q0Er1QfpEuem5g==", "requires": { "css-select": "^1.1.0", "dom-converter": "^0.2", "htmlparser2": "^3.3.0", - "strip-ansi": "^3.0.0", - "utila": "^0.4.0" + "lodash": "^4.17.20", + "strip-ansi": "^3.0.0" }, "dependencies": { "ansi-regex": { @@ -11567,11 +11605,11 @@ "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" }, "resolve-url-loader": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", - "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", + "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", "requires": { - "adjust-sourcemap-loader": "2.0.0", + "adjust-sourcemap-loader": "3.0.0", "camelcase": "5.3.1", "compose-function": "3.0.3", "convert-source-map": "1.7.0", @@ -11712,11 +11750,18 @@ } }, "rxjs": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.2.tgz", - "integrity": "sha512-BHdBMVoWC2sL26w//BCu3YzKT4s2jip/WhwsGEDmeKYBhKDZeYezVUnHatYB7L85v5xs0BAQmg6BEYJEKxBabg==", + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", "requires": { "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "safe-buffer": { @@ -11818,13 +11863,13 @@ } }, "schema-utils": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", - "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", "requires": { - "@types/json-schema": "^7.0.4", - "ajv": "^6.12.2", - "ajv-keywords": "^3.4.1" + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" } }, "select-hose": { @@ -11833,11 +11878,11 @@ "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=" }, "selfsigned": { - "version": "1.10.7", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", - "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "version": "1.10.8", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", + "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", "requires": { - "node-forge": "0.9.0" + "node-forge": "^0.10.0" } }, "semver": { @@ -12056,12 +12101,33 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==" }, "side-channel": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", - "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.3.tgz", + "integrity": "sha512-A6+ByhlLkksFoUepsGxfj5x1gTSrs+OydsRptUxeNCabQpCFUvcwIczgOigI8vhY/OJCnPnyE9rGiwgvr9cS1g==", "requires": { - "es-abstract": "^1.17.0-next.1", - "object-inspect": "^1.7.0" + "es-abstract": "^1.18.0-next.0", + "object-inspect": "^1.8.0" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "signal-exit": { @@ -12335,9 +12401,9 @@ } }, "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==" + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==" }, "spdy": { "version": "4.0.2", @@ -12606,21 +12672,63 @@ } }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.2.tgz", + "integrity": "sha512-8oAG/hi14Z4nOVP0z6mdiVZ/wqjDtWSLygMigTzAb+7aPEDTleeFf+WrF+alzecxIRkckkJVn+dTlwzJXORATw==", "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", "requires": { "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } } }, "string_decoder": { @@ -12941,9 +13049,9 @@ } }, "supports-color": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", - "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "requires": { "has-flag": "^4.0.0" } @@ -13030,9 +13138,9 @@ "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, "timers-browserify": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", - "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", "requires": { "setimmediate": "^1.0.4" } @@ -13131,9 +13239,9 @@ "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==" }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", + "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==" }, "tsutils": { "version": "3.17.1", @@ -13141,6 +13249,13 @@ "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", "requires": { "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "tty-browserify": { @@ -13194,9 +13309,9 @@ "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" }, "typescript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", - "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==" + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", + "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==" }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", @@ -13321,9 +13436,9 @@ "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==" }, "uri-js": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", - "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", "requires": { "punycode": "^2.1.0" } @@ -13374,17 +13489,17 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "requires": { - "inherits": "2.0.1" + "inherits": "2.0.3" }, "dependencies": { "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, @@ -13420,9 +13535,9 @@ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, "v8-compile-cache": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", - "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==" + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz", + "integrity": "sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q==" }, "validate-npm-package-license": { "version": "3.0.4", @@ -13498,20 +13613,20 @@ } }, "watchpack": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.4.tgz", - "integrity": "sha512-aWAgTW4MoSJzZPAicljkO1hsi1oKj/RRq/OJQh2PKI2UKL04c2Bs+MBOB+BBABHTXJpf9mCwHN7ANCvYsvY2sg==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", + "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", "requires": { "chokidar": "^3.4.1", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.0" + "watchpack-chokidar2": "^2.0.1" } }, "watchpack-chokidar2": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", - "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", + "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", "optional": true, "requires": { "chokidar": "^2.1.8" @@ -13547,11 +13662,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "glob-parent": { "version": "3.1.0", @@ -13682,9 +13793,9 @@ }, "dependencies": { "acorn": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", - "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==" }, "cacache": { "version": "12.0.4", @@ -13949,11 +14060,7 @@ "version": "1.2.13", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1" - } + "optional": true }, "glob-parent": { "version": "3.1.0", @@ -14133,9 +14240,9 @@ } }, "whatwg-fetch": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.4.0.tgz", - "integrity": "sha512-rsum2ulz2iuZH08mJkT0Yi6JnKhwdw4oeyMjokgxd+mmqYSd9cPpOQf01TIWgjxG/U4+QR+AwKq6lSbXVxkyoQ==" + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.5.0.tgz", + "integrity": "sha512-jXkLtsR42xhXg7akoDKvKWE40eJeI+2KZqcp2h3NsOrRnDvtWX36KcKl30dy+hxECivdk2BVUHVNrPtoMBUx6A==" }, "whatwg-mimetype": { "version": "2.3.0", @@ -14431,11 +14538,11 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "xregexp": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", - "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.4.0.tgz", + "integrity": "sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg==", "requires": { - "@babel/runtime-corejs3": "^7.8.3" + "@babel/runtime-corejs3": "^7.12.1" } }, "xtend": { diff --git a/interface/package.json b/interface/package.json index 5a7b0798..b4080e10 100644 --- a/interface/package.json +++ b/interface/package.json @@ -3,30 +3,30 @@ "version": "0.1.0", "private": true, "dependencies": { - "@material-ui/core": "^4.9.8", + "@material-ui/core": "^4.11.0", "@material-ui/icons": "^4.9.1", - "@types/jwt-decode": "^2.2.1", - "@types/lodash": "^4.14.157", + "@types/jwt-decode": "^3.1.0", + "@types/lodash": "^4.14.165", "@types/node": "^12.12.32", - "@types/react": "^16.9.27", - "@types/react-dom": "^16.9.5", - "@types/react-material-ui-form-validator": "^2.0.5", - "@types/react-router": "^5.1.3", - "@types/react-router-dom": "^5.1.3", + "@types/react": "^16.9.56", + "@types/react-dom": "^16.9.9", + "@types/react-material-ui-form-validator": "^2.1.0", + "@types/react-router": "^5.1.8", + "@types/react-router-dom": "^5.1.6", "compression-webpack-plugin": "^4.0.0", - "jwt-decode": "^2.2.0", - "lodash": "^4.17.19", - "mime-types": "^2.1.25", - "moment": "^2.26.0", - "notistack": "^0.9.17", - "react": "^16.13.1", - "react-dom": "^16.13.1", - "react-dropzone": "^11.0.1", - "react-form-validator-core": "^0.6.4", - "react-material-ui-form-validator": "^2.0.10", - "react-router": "^5.1.2", - "react-router-dom": "^5.1.2", - "react-scripts": "3.4.3", + "jwt-decode": "^3.1.1", + "lodash": "^4.17.20", + "mime-types": "^2.1.27", + "moment": "^2.29.1", + "notistack": "^1.0.1", + "react": "^16.14.0", + "react-dom": "^16.14.0", + "react-dropzone": "^11.2.4", + "react-form-validator-core": "^1.0.0", + "react-material-ui-form-validator": "^2.1.1", + "react-router": "^5.2.0", + "react-router-dom": "^5.2.0", + "react-scripts": "3.4.4", "sockette": "^2.0.6", "typescript": "^4.0.2", "zlib": "^1.0.5" diff --git a/interface/src/authentication/AuthenticationWrapper.tsx b/interface/src/authentication/AuthenticationWrapper.tsx index 9a8de065..f70a1720 100644 --- a/interface/src/authentication/AuthenticationWrapper.tsx +++ b/interface/src/authentication/AuthenticationWrapper.tsx @@ -9,7 +9,7 @@ import { AuthenticationContext, Me } from './AuthenticationContext'; import FullScreenLoading from '../components/FullScreenLoading'; import { withFeatures, WithFeaturesProps } from '../features/FeaturesContext'; -export const decodeMeJWT = (accessToken: string): Me => jwtDecode(accessToken); +export const decodeMeJWT = (accessToken: string): Me => jwtDecode(accessToken) as Me; interface AuthenticationWrapperState { context: AuthenticationContext; @@ -59,7 +59,7 @@ class AuthenticationWrapper extends React.Component { - // proddy removed + // commented out, always need security - proddy // if (!this.props.features.security) { // this.setState({ initialized: true, context: { ...this.state.context, me: { admin: true, username: "admin" } } }); // return; @@ -107,4 +107,4 @@ class AuthenticationWrapper extends React.Component-1", + "Africa/Casablanca": "UNK-1", "Africa/Ceuta": "CET-1CEST,M3.5.0,M10.5.0/3", "Africa/Conakry": "GMT0", "Africa/Dakar": "GMT0", "Africa/Dar_es_Salaam": "EAT-3", "Africa/Djibouti": "EAT-3", "Africa/Douala": "WAT-1", - "Africa/El_Aaiun": "<+01>-1", + "Africa/El_Aaiun": "UNK-1", "Africa/Freetown": "GMT0", "Africa/Gaborone": "CAT-2", "Africa/Harare": "CAT-2", @@ -62,63 +62,63 @@ export const TIME_ZONES: TimeZones = { "America/Anchorage": "AKST9AKDT,M3.2.0,M11.1.0", "America/Anguilla": "AST4", "America/Antigua": "AST4", - "America/Araguaina": "<-03>3", - "America/Argentina/Buenos_Aires": "<-03>3", - "America/Argentina/Catamarca": "<-03>3", - "America/Argentina/Cordoba": "<-03>3", - "America/Argentina/Jujuy": "<-03>3", - "America/Argentina/La_Rioja": "<-03>3", - "America/Argentina/Mendoza": "<-03>3", - "America/Argentina/Rio_Gallegos": "<-03>3", - "America/Argentina/Salta": "<-03>3", - "America/Argentina/San_Juan": "<-03>3", - "America/Argentina/San_Luis": "<-03>3", - "America/Argentina/Tucuman": "<-03>3", - "America/Argentina/Ushuaia": "<-03>3", + "America/Araguaina": "UNK3", + "America/Argentina/Buenos_Aires": "UNK3", + "America/Argentina/Catamarca": "UNK3", + "America/Argentina/Cordoba": "UNK3", + "America/Argentina/Jujuy": "UNK3", + "America/Argentina/La_Rioja": "UNK3", + "America/Argentina/Mendoza": "UNK3", + "America/Argentina/Rio_Gallegos": "UNK3", + "America/Argentina/Salta": "UNK3", + "America/Argentina/San_Juan": "UNK3", + "America/Argentina/San_Luis": "UNK3", + "America/Argentina/Tucuman": "UNK3", + "America/Argentina/Ushuaia": "UNK3", "America/Aruba": "AST4", - "America/Asuncion": "<-04>4<-03>,M10.1.0/0,M3.4.0/0", + "America/Asuncion": "UNK4UNK,M10.1.0/0,M3.4.0/0", "America/Atikokan": "EST5", - "America/Bahia": "<-03>3", + "America/Bahia": "UNK3", "America/Bahia_Banderas": "CST6CDT,M4.1.0,M10.5.0", "America/Barbados": "AST4", - "America/Belem": "<-03>3", + "America/Belem": "UNK3", "America/Belize": "CST6", "America/Blanc-Sablon": "AST4", - "America/Boa_Vista": "<-04>4", - "America/Bogota": "<-05>5", + "America/Boa_Vista": "UNK4", + "America/Bogota": "UNK5", "America/Boise": "MST7MDT,M3.2.0,M11.1.0", "America/Cambridge_Bay": "MST7MDT,M3.2.0,M11.1.0", - "America/Campo_Grande": "<-04>4", + "America/Campo_Grande": "UNK4", "America/Cancun": "EST5", - "America/Caracas": "<-04>4", - "America/Cayenne": "<-03>3", + "America/Caracas": "UNK4", + "America/Cayenne": "UNK3", "America/Cayman": "EST5", "America/Chicago": "CST6CDT,M3.2.0,M11.1.0", "America/Chihuahua": "MST7MDT,M4.1.0,M10.5.0", "America/Costa_Rica": "CST6", "America/Creston": "MST7", - "America/Cuiaba": "<-04>4", + "America/Cuiaba": "UNK4", "America/Curacao": "AST4", "America/Danmarkshavn": "GMT0", - "America/Dawson": "PST8PDT,M3.2.0,M11.1.0", + "America/Dawson": "MST7", "America/Dawson_Creek": "MST7", "America/Denver": "MST7MDT,M3.2.0,M11.1.0", "America/Detroit": "EST5EDT,M3.2.0,M11.1.0", "America/Dominica": "AST4", "America/Edmonton": "MST7MDT,M3.2.0,M11.1.0", - "America/Eirunepe": "<-05>5", + "America/Eirunepe": "UNK5", "America/El_Salvador": "CST6", - "America/Fortaleza": "<-03>3", "America/Fort_Nelson": "MST7", + "America/Fortaleza": "UNK3", "America/Glace_Bay": "AST4ADT,M3.2.0,M11.1.0", - "America/Godthab": "<-03>3<-02>,M3.5.0/-2,M10.5.0/-1", + "America/Godthab": "UNK3UNK,M3.5.0/-2,M10.5.0/-1", "America/Goose_Bay": "AST4ADT,M3.2.0,M11.1.0", "America/Grand_Turk": "EST5EDT,M3.2.0,M11.1.0", "America/Grenada": "AST4", "America/Guadeloupe": "AST4", "America/Guatemala": "CST6", - "America/Guayaquil": "<-05>5", - "America/Guyana": "<-04>4", + "America/Guayaquil": "UNK5", + "America/Guyana": "UNK4", "America/Halifax": "AST4ADT,M3.2.0,M11.1.0", "America/Havana": "CST5CDT,M3.2.0/0,M11.1.0/1", "America/Hermosillo": "MST7", @@ -137,13 +137,13 @@ export const TIME_ZONES: TimeZones = { "America/Kentucky/Louisville": "EST5EDT,M3.2.0,M11.1.0", "America/Kentucky/Monticello": "EST5EDT,M3.2.0,M11.1.0", "America/Kralendijk": "AST4", - "America/La_Paz": "<-04>4", - "America/Lima": "<-05>5", + "America/La_Paz": "UNK4", + "America/Lima": "UNK5", "America/Los_Angeles": "PST8PDT,M3.2.0,M11.1.0", "America/Lower_Princes": "AST4", - "America/Maceio": "<-03>3", + "America/Maceio": "UNK3", "America/Managua": "CST6", - "America/Manaus": "<-04>4", + "America/Manaus": "UNK4", "America/Marigot": "AST4", "America/Martinique": "AST4", "America/Matamoros": "CST6CDT,M3.2.0,M11.1.0", @@ -152,41 +152,41 @@ export const TIME_ZONES: TimeZones = { "America/Merida": "CST6CDT,M4.1.0,M10.5.0", "America/Metlakatla": "AKST9AKDT,M3.2.0,M11.1.0", "America/Mexico_City": "CST6CDT,M4.1.0,M10.5.0", - "America/Miquelon": "<-03>3<-02>,M3.2.0,M11.1.0", + "America/Miquelon": "UNK3UNK,M3.2.0,M11.1.0", "America/Moncton": "AST4ADT,M3.2.0,M11.1.0", "America/Monterrey": "CST6CDT,M4.1.0,M10.5.0", - "America/Montevideo": "<-03>3", + "America/Montevideo": "UNK3", "America/Montreal": "EST5EDT,M3.2.0,M11.1.0", "America/Montserrat": "AST4", "America/Nassau": "EST5EDT,M3.2.0,M11.1.0", "America/New_York": "EST5EDT,M3.2.0,M11.1.0", "America/Nipigon": "EST5EDT,M3.2.0,M11.1.0", "America/Nome": "AKST9AKDT,M3.2.0,M11.1.0", - "America/Noronha": "<-02>2", + "America/Noronha": "UNK2", "America/North_Dakota/Beulah": "CST6CDT,M3.2.0,M11.1.0", "America/North_Dakota/Center": "CST6CDT,M3.2.0,M11.1.0", "America/North_Dakota/New_Salem": "CST6CDT,M3.2.0,M11.1.0", "America/Ojinaga": "MST7MDT,M3.2.0,M11.1.0", "America/Panama": "EST5", "America/Pangnirtung": "EST5EDT,M3.2.0,M11.1.0", - "America/Paramaribo": "<-03>3", + "America/Paramaribo": "UNK3", "America/Phoenix": "MST7", "America/Port-au-Prince": "EST5EDT,M3.2.0,M11.1.0", "America/Port_of_Spain": "AST4", - "America/Porto_Velho": "<-04>4", + "America/Porto_Velho": "UNK4", "America/Puerto_Rico": "AST4", - "America/Punta_Arenas": "<-03>3", + "America/Punta_Arenas": "UNK3", "America/Rainy_River": "CST6CDT,M3.2.0,M11.1.0", "America/Rankin_Inlet": "CST6CDT,M3.2.0,M11.1.0", - "America/Recife": "<-03>3", + "America/Recife": "UNK3", "America/Regina": "CST6", "America/Resolute": "CST6CDT,M3.2.0,M11.1.0", - "America/Rio_Branco": "<-05>5", - "America/Santarem": "<-03>3", - "America/Santiago": "<-04>4<-03>,M9.1.6/24,M4.1.6/24", + "America/Rio_Branco": "UNK5", + "America/Santarem": "UNK3", + "America/Santiago": "UNK4UNK,M9.1.6/24,M4.1.6/24", "America/Santo_Domingo": "AST4", - "America/Sao_Paulo": "<-03>3", - "America/Scoresbysund": "<-01>1<+00>,M3.5.0/0,M10.5.0/1", + "America/Sao_Paulo": "UNK3", + "America/Scoresbysund": "UNK1UNK,M3.5.0/0,M10.5.0/1", "America/Sitka": "AKST9AKDT,M3.2.0,M11.1.0", "America/St_Barthelemy": "AST4", "America/St_Johns": "NST3:30NDT,M3.2.0,M11.1.0", @@ -202,129 +202,164 @@ export const TIME_ZONES: TimeZones = { "America/Toronto": "EST5EDT,M3.2.0,M11.1.0", "America/Tortola": "AST4", "America/Vancouver": "PST8PDT,M3.2.0,M11.1.0", - "America/Whitehorse": "PST8PDT,M3.2.0,M11.1.0", + "America/Whitehorse": "MST7", "America/Winnipeg": "CST6CDT,M3.2.0,M11.1.0", "America/Yakutat": "AKST9AKDT,M3.2.0,M11.1.0", "America/Yellowknife": "MST7MDT,M3.2.0,M11.1.0", - "Antarctica/Casey": "<+08>-8", - "Antarctica/Davis": "<+07>-7", - "Antarctica/DumontDUrville": "<+10>-10", - "Antarctica/Macquarie": "<+11>-11", - "Antarctica/Mawson": "<+05>-5", + "Antarctica/Casey": "UNK-8", + "Antarctica/Davis": "UNK-7", + "Antarctica/DumontDUrville": "UNK-10", + "Antarctica/Macquarie": "UNK-11", + "Antarctica/Mawson": "UNK-5", "Antarctica/McMurdo": "NZST-12NZDT,M9.5.0,M4.1.0/3", - "Antarctica/Palmer": "<-03>3", - "Antarctica/Rothera": "<-03>3", - "Antarctica/Syowa": "<+03>-3", - "Antarctica/Troll": "<+00>0<+02>-2,M3.5.0/1,M10.5.0/3", - "Antarctica/Vostok": "<+06>-6", + "Antarctica/Palmer": "UNK3", + "Antarctica/Rothera": "UNK3", + "Antarctica/Syowa": "UNK-3", + "Antarctica/Troll": "UNK0UNK-2,M3.5.0/1,M10.5.0/3", + "Antarctica/Vostok": "UNK-6", "Arctic/Longyearbyen": "CET-1CEST,M3.5.0,M10.5.0/3", - "Asia/Aden": "<+03>-3", - "Asia/Almaty": "<+06>-6", + "Asia/Aden": "UNK-3", + "Asia/Almaty": "UNK-6", "Asia/Amman": "EET-2EEST,M3.5.4/24,M10.5.5/1", - "Asia/Anadyr": "<+12>-12", - "Asia/Aqtau": "<+05>-5", - "Asia/Aqtobe": "<+05>-5", - "Asia/Ashgabat": "<+05>-5", - "Asia/Atyrau": "<+05>-5", - "Asia/Baghdad": "<+03>-3", - "Asia/Bahrain": "<+03>-3", - "Asia/Baku": "<+04>-4", - "Asia/Bangkok": "<+07>-7", - "Asia/Barnaul": "<+07>-7", + "Asia/Anadyr": "UNK-12", + "Asia/Aqtau": "UNK-5", + "Asia/Aqtobe": "UNK-5", + "Asia/Ashgabat": "UNK-5", + "Asia/Atyrau": "UNK-5", + "Asia/Baghdad": "UNK-3", + "Asia/Bahrain": "UNK-3", + "Asia/Baku": "UNK-4", + "Asia/Bangkok": "UNK-7", + "Asia/Barnaul": "UNK-7", "Asia/Beirut": "EET-2EEST,M3.5.0/0,M10.5.0/0", - "Asia/Bishkek": "<+06>-6", - "Asia/Brunei": "<+08>-8", - "Asia/Chita": "<+09>-9", - "Asia/Choibalsan": "<+08>-8", - "Asia/Colombo": "<+0530>-5:30", + "Asia/Bishkek": "UNK-6", + "Asia/Brunei": "UNK-8", + "Asia/Chita": "UNK-9", + "Asia/Choibalsan": "UNK-8", + "Asia/Colombo": "UNK-5:30", "Asia/Damascus": "EET-2EEST,M3.5.5/0,M10.5.5/0", - "Asia/Dhaka": "<+06>-6", - "Asia/Dili": "<+09>-9", - "Asia/Dubai": "<+04>-4", - "Asia/Dushanbe": "<+05>-5", + "Asia/Dhaka": "UNK-6", + "Asia/Dili": "UNK-9", + "Asia/Dubai": "UNK-4", + "Asia/Dushanbe": "UNK-5", "Asia/Famagusta": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Asia/Gaza": "EET-2EEST,M3.5.5/0,M10.5.6/1", "Asia/Hebron": "EET-2EEST,M3.5.5/0,M10.5.6/1", - "Asia/Ho_Chi_Minh": "<+07>-7", + "Asia/Ho_Chi_Minh": "UNK-7", "Asia/Hong_Kong": "HKT-8", - "Asia/Hovd": "<+07>-7", - "Asia/Irkutsk": "<+08>-8", + "Asia/Hovd": "UNK-7", + "Asia/Irkutsk": "UNK-8", "Asia/Jakarta": "WIB-7", "Asia/Jayapura": "WIT-9", "Asia/Jerusalem": "IST-2IDT,M3.4.4/26,M10.5.0", - "Asia/Kabul": "<+0430>-4:30", - "Asia/Kamchatka": "<+12>-12", + "Asia/Kabul": "UNK-4:30", + "Asia/Kamchatka": "UNK-12", "Asia/Karachi": "PKT-5", - "Asia/Kathmandu": "<+0545>-5:45", - "Asia/Khandyga": "<+09>-9", + "Asia/Kathmandu": "UNK-5:45", + "Asia/Khandyga": "UNK-9", "Asia/Kolkata": "IST-5:30", - "Asia/Krasnoyarsk": "<+07>-7", - "Asia/Kuala_Lumpur": "<+08>-8", - "Asia/Kuching": "<+08>-8", - "Asia/Kuwait": "<+03>-3", + "Asia/Krasnoyarsk": "UNK-7", + "Asia/Kuala_Lumpur": "UNK-8", + "Asia/Kuching": "UNK-8", + "Asia/Kuwait": "UNK-3", "Asia/Macau": "CST-8", - "Asia/Magadan": "<+11>-11", + "Asia/Magadan": "UNK-11", "Asia/Makassar": "WITA-8", "Asia/Manila": "PST-8", - "Asia/Muscat": "<+04>-4", + "Asia/Muscat": "UNK-4", "Asia/Nicosia": "EET-2EEST,M3.5.0/3,M10.5.0/4", - "Asia/Novokuznetsk": "<+07>-7", - "Asia/Novosibirsk": "<+07>-7", - "Asia/Omsk": "<+06>-6", - "Asia/Oral": "<+05>-5", - "Asia/Phnom_Penh": "<+07>-7", + "Asia/Novokuznetsk": "UNK-7", + "Asia/Novosibirsk": "UNK-7", + "Asia/Omsk": "UNK-6", + "Asia/Oral": "UNK-5", + "Asia/Phnom_Penh": "UNK-7", "Asia/Pontianak": "WIB-7", "Asia/Pyongyang": "KST-9", - "Asia/Qatar": "<+03>-3", - "Asia/Qyzylorda": "<+05>-5", - "Asia/Riyadh": "<+03>-3", - "Asia/Sakhalin": "<+11>-11", - "Asia/Samarkand": "<+05>-5", + "Asia/Qatar": "UNK-3", + "Asia/Qyzylorda": "UNK-5", + "Asia/Riyadh": "UNK-3", + "Asia/Sakhalin": "UNK-11", + "Asia/Samarkand": "UNK-5", "Asia/Seoul": "KST-9", "Asia/Shanghai": "CST-8", - "Asia/Singapore": "<+08>-8", - "Asia/Srednekolymsk": "<+11>-11", + "Asia/Singapore": "UNK-8", + "Asia/Srednekolymsk": "UNK-11", "Asia/Taipei": "CST-8", - "Asia/Tashkent": "<+05>-5", - "Asia/Tbilisi": "<+04>-4", - "Asia/Tehran": "<+0330>-3:30<+0430>,J79/24,J263/24", - "Asia/Thimphu": "<+06>-6", + "Asia/Tashkent": "UNK-5", + "Asia/Tbilisi": "UNK-4", + "Asia/Tehran": "UNK-3:30UNK,J79/24,J263/24", + "Asia/Thimphu": "UNK-6", "Asia/Tokyo": "JST-9", - "Asia/Tomsk": "<+07>-7", - "Asia/Ulaanbaatar": "<+08>-8", - "Asia/Urumqi": "<+06>-6", - "Asia/Ust-Nera": "<+10>-10", - "Asia/Vientiane": "<+07>-7", - "Asia/Vladivostok": "<+10>-10", - "Asia/Yakutsk": "<+09>-9", - "Asia/Yangon": "<+0630>-6:30", - "Asia/Yekaterinburg": "<+05>-5", - "Asia/Yerevan": "<+04>-4", - "Atlantic/Azores": "<-01>1<+00>,M3.5.0/0,M10.5.0/1", + "Asia/Tomsk": "UNK-7", + "Asia/Ulaanbaatar": "UNK-8", + "Asia/Urumqi": "UNK-6", + "Asia/Ust-Nera": "UNK-10", + "Asia/Vientiane": "UNK-7", + "Asia/Vladivostok": "UNK-10", + "Asia/Yakutsk": "UNK-9", + "Asia/Yangon": "UNK-6:30", + "Asia/Yekaterinburg": "UNK-5", + "Asia/Yerevan": "UNK-4", + "Atlantic/Azores": "UNK1UNK,M3.5.0/0,M10.5.0/1", "Atlantic/Bermuda": "AST4ADT,M3.2.0,M11.1.0", "Atlantic/Canary": "WET0WEST,M3.5.0/1,M10.5.0", - "Atlantic/Cape_Verde": "<-01>1", + "Atlantic/Cape_Verde": "UNK1", "Atlantic/Faroe": "WET0WEST,M3.5.0/1,M10.5.0", "Atlantic/Madeira": "WET0WEST,M3.5.0/1,M10.5.0", "Atlantic/Reykjavik": "GMT0", - "Atlantic/South_Georgia": "<-02>2", - "Atlantic/Stanley": "<-03>3", + "Atlantic/South_Georgia": "UNK2", "Atlantic/St_Helena": "GMT0", + "Atlantic/Stanley": "UNK3", "Australia/Adelaide": "ACST-9:30ACDT,M10.1.0,M4.1.0/3", "Australia/Brisbane": "AEST-10", "Australia/Broken_Hill": "ACST-9:30ACDT,M10.1.0,M4.1.0/3", "Australia/Currie": "AEST-10AEDT,M10.1.0,M4.1.0/3", "Australia/Darwin": "ACST-9:30", - "Australia/Eucla": "<+0845>-8:45", + "Australia/Eucla": "UNK-8:45", "Australia/Hobart": "AEST-10AEDT,M10.1.0,M4.1.0/3", "Australia/Lindeman": "AEST-10", - "Australia/Lord_Howe": "<+1030>-10:30<+11>-11,M10.1.0,M4.1.0", + "Australia/Lord_Howe": "UNK-10:30UNK-11,M10.1.0,M4.1.0", "Australia/Melbourne": "AEST-10AEDT,M10.1.0,M4.1.0/3", "Australia/Perth": "AWST-8", "Australia/Sydney": "AEST-10AEDT,M10.1.0,M4.1.0/3", + "Etc/GMT": "GMT0", + "Etc/GMT+0": "GMT0", + "Etc/GMT+1": "UNK1", + "Etc/GMT+10": "UNK10", + "Etc/GMT+11": "UNK11", + "Etc/GMT+12": "UNK12", + "Etc/GMT+2": "UNK2", + "Etc/GMT+3": "UNK3", + "Etc/GMT+4": "UNK4", + "Etc/GMT+5": "UNK5", + "Etc/GMT+6": "UNK6", + "Etc/GMT+7": "UNK7", + "Etc/GMT+8": "UNK8", + "Etc/GMT+9": "UNK9", + "Etc/GMT-0": "GMT0", + "Etc/GMT-1": "UNK-1", + "Etc/GMT-10": "UNK-10", + "Etc/GMT-11": "UNK-11", + "Etc/GMT-12": "UNK-12", + "Etc/GMT-13": "UNK-13", + "Etc/GMT-14": "UNK-14", + "Etc/GMT-2": "UNK-2", + "Etc/GMT-3": "UNK-3", + "Etc/GMT-4": "UNK-4", + "Etc/GMT-5": "UNK-5", + "Etc/GMT-6": "UNK-6", + "Etc/GMT-7": "UNK-7", + "Etc/GMT-8": "UNK-8", + "Etc/GMT-9": "UNK-9", + "Etc/GMT0": "GMT0", + "Etc/Greenwich": "GMT0", + "Etc/UCT": "UTC0", + "Etc/UTC": "UTC0", + "Etc/Universal": "UTC0", + "Etc/Zulu": "UTC0", "Europe/Amsterdam": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Andorra": "CET-1CEST,M3.5.0,M10.5.0/3", - "Europe/Astrakhan": "<+04>-4", + "Europe/Astrakhan": "UNK-4", "Europe/Athens": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Europe/Belgrade": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Berlin": "CET-1CEST,M3.5.0,M10.5.0/3", @@ -340,11 +375,11 @@ export const TIME_ZONES: TimeZones = { "Europe/Guernsey": "GMT0BST,M3.5.0/1,M10.5.0", "Europe/Helsinki": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Europe/Isle_of_Man": "GMT0BST,M3.5.0/1,M10.5.0", - "Europe/Istanbul": "<+03>-3", + "Europe/Istanbul": "UNK-3", "Europe/Jersey": "GMT0BST,M3.5.0/1,M10.5.0", "Europe/Kaliningrad": "EET-2", "Europe/Kiev": "EET-2EEST,M3.5.0/3,M10.5.0/4", - "Europe/Kirov": "<+03>-3", + "Europe/Kirov": "UNK-3", "Europe/Lisbon": "WET0WEST,M3.5.0/1,M10.5.0", "Europe/Ljubljana": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/London": "GMT0BST,M3.5.0/1,M10.5.0", @@ -352,7 +387,7 @@ export const TIME_ZONES: TimeZones = { "Europe/Madrid": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Malta": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Mariehamn": "EET-2EEST,M3.5.0/3,M10.5.0/4", - "Europe/Minsk": "<+03>-3", + "Europe/Minsk": "UNK-3", "Europe/Monaco": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Moscow": "MSK-3", "Europe/Oslo": "CET-1CEST,M3.5.0,M10.5.0/3", @@ -361,111 +396,76 @@ export const TIME_ZONES: TimeZones = { "Europe/Prague": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Riga": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Europe/Rome": "CET-1CEST,M3.5.0,M10.5.0/3", - "Europe/Samara": "<+04>-4", + "Europe/Samara": "UNK-4", "Europe/San_Marino": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Sarajevo": "CET-1CEST,M3.5.0,M10.5.0/3", - "Europe/Saratov": "<+04>-4", + "Europe/Saratov": "UNK-4", "Europe/Simferopol": "MSK-3", "Europe/Skopje": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Sofia": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Europe/Stockholm": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Tallinn": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Europe/Tirane": "CET-1CEST,M3.5.0,M10.5.0/3", - "Europe/Ulyanovsk": "<+04>-4", + "Europe/Ulyanovsk": "UNK-4", "Europe/Uzhgorod": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Europe/Vaduz": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Vatican": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Vienna": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Vilnius": "EET-2EEST,M3.5.0/3,M10.5.0/4", - "Europe/Volgograd": "<+04>-4", + "Europe/Volgograd": "UNK-4", "Europe/Warsaw": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Zagreb": "CET-1CEST,M3.5.0,M10.5.0/3", "Europe/Zaporozhye": "EET-2EEST,M3.5.0/3,M10.5.0/4", "Europe/Zurich": "CET-1CEST,M3.5.0,M10.5.0/3", "Indian/Antananarivo": "EAT-3", - "Indian/Chagos": "<+06>-6", - "Indian/Christmas": "<+07>-7", - "Indian/Cocos": "<+0630>-6:30", + "Indian/Chagos": "UNK-6", + "Indian/Christmas": "UNK-7", + "Indian/Cocos": "UNK-6:30", "Indian/Comoro": "EAT-3", - "Indian/Kerguelen": "<+05>-5", - "Indian/Mahe": "<+04>-4", - "Indian/Maldives": "<+05>-5", - "Indian/Mauritius": "<+04>-4", + "Indian/Kerguelen": "UNK-5", + "Indian/Mahe": "UNK-4", + "Indian/Maldives": "UNK-5", + "Indian/Mauritius": "UNK-4", "Indian/Mayotte": "EAT-3", - "Indian/Reunion": "<+04>-4", - "Pacific/Apia": "<+13>-13<+14>,M9.5.0/3,M4.1.0/4", + "Indian/Reunion": "UNK-4", + "Pacific/Apia": "UNK-13UNK,M9.5.0/3,M4.1.0/4", "Pacific/Auckland": "NZST-12NZDT,M9.5.0,M4.1.0/3", - "Pacific/Bougainville": "<+11>-11", - "Pacific/Chatham": "<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45", - "Pacific/Chuuk": "<+10>-10", - "Pacific/Easter": "<-06>6<-05>,M9.1.6/22,M4.1.6/22", - "Pacific/Efate": "<+11>-11", - "Pacific/Enderbury": "<+13>-13", - "Pacific/Fakaofo": "<+13>-13", - "Pacific/Fiji": "<+12>-12<+13>,M11.2.0,M1.2.3/99", - "Pacific/Funafuti": "<+12>-12", - "Pacific/Galapagos": "<-06>6", - "Pacific/Gambier": "<-09>9", - "Pacific/Guadalcanal": "<+11>-11", + "Pacific/Bougainville": "UNK-11", + "Pacific/Chatham": "UNK-12:45UNK,M9.5.0/2:45,M4.1.0/3:45", + "Pacific/Chuuk": "UNK-10", + "Pacific/Easter": "UNK6UNK,M9.1.6/22,M4.1.6/22", + "Pacific/Efate": "UNK-11", + "Pacific/Enderbury": "UNK-13", + "Pacific/Fakaofo": "UNK-13", + "Pacific/Fiji": "UNK-12UNK,M11.2.0,M1.2.3/99", + "Pacific/Funafuti": "UNK-12", + "Pacific/Galapagos": "UNK6", + "Pacific/Gambier": "UNK9", + "Pacific/Guadalcanal": "UNK-11", "Pacific/Guam": "ChST-10", "Pacific/Honolulu": "HST10", - "Pacific/Kiritimati": "<+14>-14", - "Pacific/Kosrae": "<+11>-11", - "Pacific/Kwajalein": "<+12>-12", - "Pacific/Majuro": "<+12>-12", - "Pacific/Marquesas": "<-0930>9:30", + "Pacific/Kiritimati": "UNK-14", + "Pacific/Kosrae": "UNK-11", + "Pacific/Kwajalein": "UNK-12", + "Pacific/Majuro": "UNK-12", + "Pacific/Marquesas": "UNK9:30", "Pacific/Midway": "SST11", - "Pacific/Nauru": "<+12>-12", - "Pacific/Niue": "<-11>11", - "Pacific/Norfolk": "<+11>-11<+12>,M10.1.0,M4.1.0/3", - "Pacific/Noumea": "<+11>-11", + "Pacific/Nauru": "UNK-12", + "Pacific/Niue": "UNK11", + "Pacific/Norfolk": "UNK-11UNK,M10.1.0,M4.1.0/3", + "Pacific/Noumea": "UNK-11", "Pacific/Pago_Pago": "SST11", - "Pacific/Palau": "<+09>-9", - "Pacific/Pitcairn": "<-08>8", - "Pacific/Pohnpei": "<+11>-11", - "Pacific/Port_Moresby": "<+10>-10", - "Pacific/Rarotonga": "<-10>10", + "Pacific/Palau": "UNK-9", + "Pacific/Pitcairn": "UNK8", + "Pacific/Pohnpei": "UNK-11", + "Pacific/Port_Moresby": "UNK-10", + "Pacific/Rarotonga": "UNK10", "Pacific/Saipan": "ChST-10", - "Pacific/Tahiti": "<-10>10", - "Pacific/Tarawa": "<+12>-12", - "Pacific/Tongatapu": "<+13>-13", - "Pacific/Wake": "<+12>-12", - "Pacific/Wallis": "<+12>-12", - "Etc/GMT": "GMT0", - "Etc/GMT-0": "GMT0", - "Etc/GMT-1": "<+01>-1", - "Etc/GMT-2": "<+02>-2", - "Etc/GMT-3": "<+03>-3", - "Etc/GMT-4": "<+04>-4", - "Etc/GMT-5": "<+05>-5", - "Etc/GMT-6": "<+06>-6", - "Etc/GMT-7": "<+07>-7", - "Etc/GMT-8": "<+08>-8", - "Etc/GMT-9": "<+09>-9", - "Etc/GMT-10": "<+10>-10", - "Etc/GMT-11": "<+11>-11", - "Etc/GMT-12": "<+12>-12", - "Etc/GMT-13": "<+13>-13", - "Etc/GMT-14": "<+14>-14", - "Etc/GMT0": "GMT0", - "Etc/GMT+0": "GMT0", - "Etc/GMT+1": "<-01>1", - "Etc/GMT+2": "<-02>2", - "Etc/GMT+3": "<-03>3", - "Etc/GMT+4": "<-04>4", - "Etc/GMT+5": "<-05>5", - "Etc/GMT+6": "<-06>6", - "Etc/GMT+7": "<-07>7", - "Etc/GMT+8": "<-08>8", - "Etc/GMT+9": "<-09>9", - "Etc/GMT+10": "<-10>10", - "Etc/GMT+11": "<-11>11", - "Etc/GMT+12": "<-12>12", - "Etc/UCT": "UTC0", - "Etc/UTC": "UTC0", - "Etc/Greenwich": "GMT0", - "Etc/Universal": "UTC0", - "Etc/Zulu": "UTC0" + "Pacific/Tahiti": "UNK10", + "Pacific/Tarawa": "UNK-12", + "Pacific/Tongatapu": "UNK-13", + "Pacific/Wake": "UNK-12", + "Pacific/Wallis": "UNK-12" } export function selectedTimeZone(label: string, format: string) { @@ -476,4 +476,4 @@ export function timeZoneSelectItems() { return Object.keys(TIME_ZONES).map(label => ( {label} )); -} +} \ No newline at end of file From 5219cf60f147a2686d2e148c6a968e980a4a7249 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 12:48:56 +0100 Subject: [PATCH 055/225] restart MQTT when settings change from Web --- lib/framework/MqttSettingsService.cpp | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/lib/framework/MqttSettingsService.cpp b/lib/framework/MqttSettingsService.cpp index 16f2c879..41fd7675 100644 --- a/lib/framework/MqttSettingsService.cpp +++ b/lib/framework/MqttSettingsService.cpp @@ -4,7 +4,6 @@ namespace emsesp { class EMSESP { public: - static System system_; static Mqtt mqtt_; static DallasSensor dallassensor_; }; @@ -93,14 +92,12 @@ AsyncMqttClient * MqttSettingsService::getMqttClient() { } void MqttSettingsService::onMqttConnect(bool sessionPresent) { - /* - Serial.print(F("Connected to MQTT, ")); - if (sessionPresent) { - Serial.println(F("with persistent session")); - } else { - Serial.println(F("without persistent session")); - } - */ + // Serial.print(F("Connected to MQTT, ")); + // if (sessionPresent) { + // Serial.println(F("with persistent session")); + // } else { + // Serial.println(F("without persistent session")); + // } } void MqttSettingsService::onMqttDisconnect(AsyncMqttClientDisconnectReason reason) { @@ -116,6 +113,7 @@ void MqttSettingsService::onConfigUpdated() { // added by proddy // reload EMS-ESP MQTT settings + emsesp::EMSESP::mqtt_.start(); } #ifdef ESP32 From 842683aae1a32fd3c0b81cc25156ccdecc96c21a Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 12:49:10 +0100 Subject: [PATCH 056/225] comments --- lib/framework/FSPersistence.h | 10 ++++---- lib/framework/OTASettingsService.cpp | 35 ++++++++++++++-------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/lib/framework/FSPersistence.h b/lib/framework/FSPersistence.h index 64ec179c..f0da8cc5 100644 --- a/lib/framework/FSPersistence.h +++ b/lib/framework/FSPersistence.h @@ -66,10 +66,12 @@ class FSPersistence { return false; } - // debug added by Proddy - // Serial.printf("Write File: %s: ", _filePath); - // serializeJson(jsonDocument, Serial); - // Serial.println(); +// debug added by Proddy +#if defined(EMSESP_FORCE_SERIAL) + Serial.printf("Write File: %s: ", _filePath); + serializeJson(jsonDocument, Serial); + Serial.println(); +#endif // serialize the data to the file serializeJson(jsonDocument, settingsFile); diff --git a/lib/framework/OTASettingsService.cpp b/lib/framework/OTASettingsService.cpp index 3fd00244..10089223 100644 --- a/lib/framework/OTASettingsService.cpp +++ b/lib/framework/OTASettingsService.cpp @@ -46,24 +46,23 @@ void OTASettingsService::configureArduinoOTA() { emsesp::System::upload_status(false); }); - /* - _arduinoOTA->onProgress([](unsigned int progress, unsigned int total) { - Serial.printf_P(PSTR("Progress: %u%%\r\n"), (progress / (total / 100))); - }); - _arduinoOTA->onError([](ota_error_t error) { - Serial.printf("Error[%u]: ", error); - if (error == OTA_AUTH_ERROR) - Serial.println(F("Auth Failed")); - else if (error == OTA_BEGIN_ERROR) - Serial.println(F("Begin Failed")); - else if (error == OTA_CONNECT_ERROR) - Serial.println(F("Connect Failed")); - else if (error == OTA_RECEIVE_ERROR) - Serial.println(F("Receive Failed")); - else if (error == OTA_END_ERROR) - Serial.println(F("End Failed")); - }); - */ + // _arduinoOTA->onProgress([](unsigned int progress, unsigned int total) { + // Serial.printf_P(PSTR("Progress: %u%%\r\n"), (progress / (total / 100))); + // }); + // _arduinoOTA->onError([](ota_error_t error) { + // Serial.printf("Error[%u]: ", error); + // if (error == OTA_AUTH_ERROR) + // Serial.println(F("Auth Failed")); + // else if (error == OTA_BEGIN_ERROR) + // Serial.println(F("Begin Failed")); + // else if (error == OTA_CONNECT_ERROR) + // Serial.println(F("Connect Failed")); + // else if (error == OTA_RECEIVE_ERROR) + // Serial.println(F("Receive Failed")); + // else if (error == OTA_END_ERROR) + // Serial.println(F("End Failed")); + // }); + _arduinoOTA->begin(); } } From 6fefb8fd8f819db2b7d3db855c154bba2cf359f5 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 12:49:29 +0100 Subject: [PATCH 057/225] prevent serial when in debug mode, during update check --- src/system.cpp | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/src/system.cpp b/src/system.cpp index 45a40d63..9733834b 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -698,7 +698,7 @@ bool System::check_upgrade() { l_cfg.setAutoFormat(false); LittleFS.setConfig(l_cfg); // do not auto format if it can't find LittleFS if (LittleFS.begin()) { -#if defined(EMSESP_DEBUG) +#if defined(EMSESP_FORCE_SERIAL) Serial.begin(115200); Serial.println(F("FS is Littlefs")); Serial.end(); @@ -713,7 +713,7 @@ bool System::check_upgrade() { cfg.setAutoFormat(false); // prevent formatting when opening SPIFFS filesystem SPIFFS.setConfig(cfg); if (!SPIFFS.begin()) { -#if defined(EMSESP_DEBUG) +#if defined(EMSESP_FORCE_SERIAL) Serial.begin(115200); Serial.println(F("No old SPIFFS found!")); Serial.end(); @@ -812,9 +812,7 @@ bool System::check_upgrade() { file.close(); if (failed) { -#if defined(EMSESP_DEBUG) Serial.println(F("Failed to read system config. Quitting.")); -#endif SPIFFS.end(); Serial.end(); return false; @@ -837,10 +835,6 @@ bool System::check_upgrade() { Serial.printf(PSTR("Error. Failed to deserialize custom json, error %s\n"), error.c_str()); failed = true; } else { -#if defined(EMSESP_DEBUG) - serializeJson(doc, Serial); - Serial.println(); -#endif custom_settings = doc["settings"]; EMSESP::webSettingsService.update( [&](WebSettings & settings) { @@ -868,9 +862,7 @@ bool System::check_upgrade() { SPIFFS.end(); if (failed) { -#if defined(EMSESP_DEBUG) Serial.println(F("Failed to read custom config. Quitting.")); -#endif Serial.end(); return false; } From 4a4d664d7df3858b5284e96adada69d969a24411 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 12:49:49 +0100 Subject: [PATCH 058/225] don't setup mqtt if it's disabled --- src/mqtt.cpp | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 7dc88118..3ab2ae3c 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -356,6 +356,11 @@ void Mqtt::start() { mqtt_enabled_ = mqttSettings.enabled; }); + // if MQTT disabled, quit + if (!mqtt_enabled_) { + return; + } + mqttClient_->onConnect([this](bool sessionPresent) { on_connect(); }); mqttClient_->onDisconnect([this](AsyncMqttClientDisconnectReason reason) { @@ -609,26 +614,6 @@ void Mqtt::process_queue() { return; } - // show queue - Debug only - /* - Serial.printf("MQTT queue:\n\r"); - for (const auto & message : mqtt_messages_) { - auto content = message.content_; - if (content->operation == Operation::PUBLISH) { - // Publish messages - Serial.printf(" [%02d] (Pub) topic=%s payload=%s (pid %d, retry #%d)\n\r", - message.id_, - content->topic.c_str(), - content->payload.c_str(), - message.packet_id_, - message.retry_count_); - } else { - // Subscribe messages - Serial.printf(" [%02d] (Sub) topic=%s\n\r", message.id_, content->topic.c_str()); - } - } - */ - // fetch first from queue and create the full topic name auto mqtt_message = mqtt_messages_.front(); auto message = mqtt_message.content_; From 30d032b9864b3d94887f35b5bc83dd10369db06c Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 15:31:28 +0100 Subject: [PATCH 059/225] updates to processing order --- src/test/test.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index bc67357c..35d8bbee 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -27,10 +27,10 @@ namespace emsesp { // used with the 'test' command, under su/admin void Test::run_test(uuid::console::Shell & shell, const std::string & command) { // switch to su - // shell.add_flags(CommandFlags::ADMIN); + shell.add_flags(CommandFlags::ADMIN); if (command == "default") { - run_test(shell, "boiler"); // add the default test case here + run_test(shell, "general"); // add the default test case here } if (command.empty()) { @@ -250,7 +250,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.printfln(F("Testing adding a general boiler & thermostat...")); add_device(0x08, 123); // Nefit Trendline - // add_device(0x18, 157); // Bosch CR100 + add_device(0x18, 157); // Bosch CR100 // add some data // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) @@ -267,9 +267,10 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { uart_telegram({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); + shell.invoke_command("show devices"); shell.invoke_command("show"); - shell.invoke_command("publish"); - shell.invoke_command("show mqtt"); + // shell.invoke_command("publish"); + // shell.invoke_command("show mqtt"); } if (command == "fr120") { @@ -838,6 +839,7 @@ void Test::rx_telegram(const std::vector & rx_data) { } data[i] = EMSESP::rxservice_.calculate_crc(data, i); EMSESP::rxservice_.add(data, len + 1); + EMSESP::loop(); } // simulates a telegram straight from UART, but without the CRC which is added automatically @@ -851,7 +853,7 @@ void Test::uart_telegram(const std::vector & rx_data) { } data[i] = EMSESP::rxservice_.calculate_crc(data, i); EMSESP::incoming_telegram(data, i + 1); - // EMSESP::rxservice_.loop(); + EMSESP::loop(); } // takes raw string, assuming it contains the CRC. This is what is output from 'watch raw' @@ -889,7 +891,7 @@ void Test::uart_telegram_withCRC(const char * rx_data) { } EMSESP::incoming_telegram(data, count + 1); - // EMSESP::rxservice_.loop(); + EMSESP::loop(); } // takes raw string, adds CRC to end @@ -929,7 +931,7 @@ void Test::uart_telegram(const char * rx_data) { data[count + 1] = EMSESP::rxservice_.calculate_crc(data, count + 1); // add CRC EMSESP::incoming_telegram(data, count + 2); - // EMSESP::rxservice_.loop(); + EMSESP::loop(); } // Sends version telegram. Version is hardcoded to 1.0 From af08bc607d9081b141532484aad342b25e14e6bf Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 15:31:51 +0100 Subject: [PATCH 060/225] roll back changes with device unique_id --- src/emsdevice.h | 3 +-- src/emsesp.cpp | 13 +++++++------ src/emsesp.h | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/emsdevice.h b/src/emsdevice.h index a4a9fe2a..81ac08c4 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -43,7 +43,6 @@ class EMSdevice { , name_(name) , flags_(flags) , brand_(brand) { - unique_id_++; } virtual ~EMSdevice() = default; // destructor of base class must always be virtual because it's a polymorphic class @@ -271,7 +270,7 @@ class EMSdevice { static constexpr uint8_t EMS_DEVICE_FLAG_JUNKERS_2 = (1 << 6); // 6th bit set if older models, like FR120, FR100 private: - uint8_t unique_id_ = 0; + uint8_t unique_id_; uint8_t device_type_ = DeviceType::SYSTEM; uint8_t device_id_ = 0; uint8_t product_id_ = 0; diff --git a/src/emsesp.cpp b/src/emsesp.cpp index c7c98274..89ba830f 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -64,6 +64,7 @@ uint16_t EMSESP::publish_id_ = 0; bool EMSESP::tap_water_active_ = false; // for when Boiler states we having running warm water. used in Shower() uint32_t EMSESP::last_fetch_ = 0; uint8_t EMSESP::publish_all_idx_ = 0; +uint8_t EMSESP::unique_id_count_ = 0; // for a specific EMS device go and request data values // or if device_id is 0 it will fetch from all our known and active devices @@ -215,10 +216,9 @@ void EMSESP::show_ems(uuid::console::Shell & shell) { shell.printfln(F(" #tx fails (after %d retries): %d"), TxService::MAXIMUM_TX_RETRIES, txservice_.telegram_fail_count()); shell.printfln(F(" Rx line quality: %d%%"), rxservice_.quality()); shell.printfln(F(" Tx line quality: %d%%"), txservice_.quality()); + shell.println(); } - shell.println(); - // Rx queue auto rx_telegrams = rxservice_.queue(); if (rx_telegrams.empty()) { @@ -694,7 +694,7 @@ void EMSESP::show_devices(uuid::console::Shell & shell) { // shell.printf(F("[factory ID: %d] "), device_class.first); for (const auto & emsdevice : emsdevices) { if ((emsdevice) && (emsdevice->device_type() == device_class.first)) { - shell.printf(F("%s: %s"), emsdevice->device_type_name().c_str(), emsdevice->to_string().c_str()); + shell.printf(F("(%d) %s: %s"), emsdevice->unique_id(), emsdevice->device_type_name().c_str(), emsdevice->to_string().c_str()); if ((emsdevice->device_type() == EMSdevice::DeviceType::THERMOSTAT) && (emsdevice->device_id() == actual_master_thermostat())) { shell.printf(F(" ** master device **")); } @@ -772,6 +772,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std:: auto flags = device_p->flags; LOG_DEBUG(F("Adding new device %s (device ID 0x%02X, product ID %d, version %s)"), name.c_str(), device_id, product_id, version.c_str()); emsdevices.push_back(EMSFactory::add(device_type, device_id, product_id, version, name, flags, brand)); + emsdevices.back()->unique_id(++unique_id_count_); fetch_device_values(device_id); // go and fetch its data @@ -981,12 +982,12 @@ void EMSESP::loop() { } system_.loop(); // does LED and checks system health, and syslog service + rxservice_.loop(); // process any incoming Rx telegrams shower_.loop(); // check for shower on/off dallassensor_.loop(); // this will also send out via MQTT publish_all_loop(); - mqtt_.loop(); // sends out anything in the queue via MQTT - console_.loop(); // telnet/serial console - rxservice_.loop(); // process any incoming Rx telegrams + mqtt_.loop(); // sends out anything in the queue via MQTT + console_.loop(); // telnet/serial console // force a query on the EMS devices to fetch latest data at a set interval (1 min) if ((uuid::get_uptime() - last_fetch_ > EMS_FETCH_FREQUENCY)) { diff --git a/src/emsesp.h b/src/emsesp.h index 053884ba..eaa88745 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -208,7 +208,7 @@ class EMSESP { static uint16_t publish_id_; static bool tap_water_active_; static uint8_t publish_all_idx_; - + static uint8_t unique_id_count_; }; } // namespace emsesp From b51dfae718f856001d4c25d449d811b1ca66e58f Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 15:41:05 +0100 Subject: [PATCH 061/225] change queue size for standalone --- src/mqtt.cpp | 8 +++----- src/mqtt.h | 9 ++++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 3ab2ae3c..28f8b043 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -39,9 +39,9 @@ bool Mqtt::mqtt_enabled_; std::vector Mqtt::mqtt_subfunctions_; -uint16_t Mqtt::mqtt_publish_fails_ = 0; +uint16_t Mqtt::mqtt_publish_fails_ = 0; // size_t Mqtt::maximum_mqtt_messages_ = Mqtt::MAX_MQTT_MESSAGES; -uint16_t Mqtt::mqtt_message_id_ = 0; +uint16_t Mqtt::mqtt_message_id_ = 0; std::list Mqtt::mqtt_messages_; char will_topic_[Mqtt::MQTT_TOPIC_MAX_SIZE]; // because MQTT library keeps only char pointer @@ -181,7 +181,7 @@ void Mqtt::show_mqtt(uuid::console::Shell & shell) { return; } - shell.printfln(F("MQTT queue (%d messages):"), mqtt_messages_.size()); + shell.printfln(F("MQTT queue (%d/%d messages):"), mqtt_messages_.size(), MAX_MQTT_MESSAGES); for (const auto & message : mqtt_messages_) { auto content = message.content_; @@ -730,7 +730,6 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons // delay(MQTT_PUBLISH_WAIT); delay(50); - } // HA config for a normal 'sensor' type @@ -826,6 +825,5 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, // delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp delay(50); // enough time to send the short message out - } } // namespace emsesp diff --git a/src/mqtt.h b/src/mqtt.h index 8b987dbb..ead5681d 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -171,11 +171,14 @@ class Mqtt { static std::list mqtt_messages_; static AsyncMqttClient * mqttClient_; + static uint16_t mqtt_message_id_; - // static size_t maximum_mqtt_messages_; - static uint16_t mqtt_message_id_; +#if defined(EMSESP_STANDALONE) + static constexpr size_t MAX_MQTT_MESSAGES = 70; // size of queue +#else + static constexpr size_t MAX_MQTT_MESSAGES = 20; // size of queue +#endif - static constexpr size_t MAX_MQTT_MESSAGES = 20; // size of queue static constexpr uint32_t MQTT_PUBLISH_WAIT = 200; // delay between sending publishes, to account for large payloads static constexpr uint8_t MQTT_PUBLISH_MAX_RETRY = 3; // max retries for giving up on publishing From 992f325078072276671bdb41d4c427672fd5371e Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 15:41:24 +0100 Subject: [PATCH 062/225] prevent heartbeat with standalone --- src/system.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/system.cpp b/src/system.cpp index 9733834b..d214e660 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -245,10 +245,10 @@ void System::upload_status(bool in_progress) { // checks system health and handles LED flashing wizardry void System::loop() { #ifndef EMSESP_STANDALONE + if (syslog_enabled_) { syslog_.loop(); } -#endif led_monitor(); // check status and report back using the LED system_check(); // check system health @@ -272,6 +272,9 @@ void System::loop() { } #endif #endif + +#endif + } void System::show_mem(const char * note) { From 548c07f932726dc063b8927418e19fc7005b1471 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 14 Nov 2020 15:52:02 +0100 Subject: [PATCH 063/225] change json package size, min 384, max 1024 for static, 2048 for dynamic --- CHANGELOG_LATEST.md | 1 + src/WebAPIService.cpp | 6 +++--- src/mqtt.h | 9 ++++----- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 4f49d423..927d6694 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -14,6 +14,7 @@ - change syslog settings without reboot - HA-config split in smaller blocks - commands `fetch` and `publish [ha]` as call +- mqtt json package size ### Removed - old scripts diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index 49974171..94da9e15 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -71,7 +71,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { id = "-1"; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_DYN); JsonObject json = doc.to(); bool ok = false; @@ -101,7 +101,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { ok ? PSTR("OK") : PSTR("Invalid")); EMSESP::logger().info(debug.c_str()); if (json.size()) { - char buffer2[EMSESP_MAX_JSON_SIZE_LARGE]; + char buffer2[EMSESP_MAX_JSON_SIZE_DYN]; serializeJson(doc, buffer2); EMSESP::logger().info("json (max 255 chars): %s", buffer2); } @@ -110,7 +110,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { // if we have returned data in JSON format, send this to the WEB if (json.size()) { doc.shrinkToFit(); - char buffer[EMSESP_MAX_JSON_SIZE_LARGE]; + char buffer[EMSESP_MAX_JSON_SIZE_DYN]; serializeJsonPretty(doc, buffer); request->send(200, "text/plain", buffer); } else { diff --git a/src/mqtt.h b/src/mqtt.h index ead5681d..7e5080a7 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -38,11 +38,10 @@ using uuid::console::Shell; -#define EMSESP_MAX_JSON_SIZE_SMALL 256 // for smaller json docs when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for smaller json docs from ems devices, when using StaticJsonDocument -// #define EMSESP_MAX_JSON_SIZE_LARGE 2048 // for large json docs from ems devices, like boiler or thermostat data. Using DynamicJsonDocument -// mqtt does not publish larger than 1570 on esp8266, boiler message is split and now smaller -#define EMSESP_MAX_JSON_SIZE_LARGE 1536 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_SMALL 384 // for smaller json docs when using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_DYN 2048 // for large json docs from web. Using DynamicJsonDocument namespace emsesp { From 57983c061d6d03bbc9345b253c76a2d93a7edf24 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 16:56:48 +0100 Subject: [PATCH 064/225] updated test --- src/test/test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index 35d8bbee..81432182 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -269,8 +269,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.invoke_command("show devices"); shell.invoke_command("show"); - // shell.invoke_command("publish"); - // shell.invoke_command("show mqtt"); + shell.invoke_command("call system publish"); + shell.invoke_command("show mqtt"); } if (command == "fr120") { From 16dd1dab71ac9d6f595799873a22d96d903064e7 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 16:57:01 +0100 Subject: [PATCH 065/225] updated test --- src/devices/thermostat.cpp | 19 +++++++++++-------- src/system.cpp | 4 ++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 3a860563..fd19f6ac 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -181,7 +181,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i // prepare data for Web UI void Thermostat::device_info_web(JsonArray & root) { StaticJsonDocument doc_main; - JsonObject json_main = doc_main.to(); + JsonObject json_main = doc_main.to(); if (export_values_main(json_main)) { print_value_json(root, F("time"), nullptr, F_(time), nullptr, json_main); print_value_json(root, F("errorcode"), nullptr, F_(error), nullptr, json_main); @@ -817,7 +817,7 @@ std::shared_ptr Thermostat::heating_circuit(std::sha return heating_circuits_.back(); // even after sorting, this should still point back to the newly created HC } -// publish config topic for HA MQTT Discovery +// publish config topic for HA MQTT Discovery for main thermostat values // homeassistant/climate/ems-esp/thermostat/config void Thermostat::register_mqtt_ha_config() { StaticJsonDocument doc; @@ -871,7 +871,7 @@ void Thermostat::register_mqtt_ha_config() { } } -// publish config topic for HA MQTT Discovery +// publish config topic for HA MQTT Discovery for each of the heating circuit // e.g. homeassistant/climate/ems-esp/thermostat_hc1/config void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { StaticJsonDocument doc; @@ -954,7 +954,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { // for each of the heating circuits std::string topic2(100, '\0'); snprintf_P(&topic2[0], topic2.capacity() + 1, PSTR("thermostat_hc%d"), hc_num); - register_mqtt_topic(topic2, [=](const char * m) { return thermostat_ha_cmd(m, hc_num); }); + register_mqtt_topic(topic2, [&](const char * m) { return thermostat_ha_cmd(m, hc_num); }); char hc_name[10]; // hc{1-4} strlcpy(hc_name, "hc", 10); @@ -963,6 +963,9 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(mode), this->device_type(), "mode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(seltemp), this->device_type(), "seltemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(currtemp), this->device_type(), "currtemp", F_(degrees), F_(icontemperature)); + uint8_t model = this->model(); switch (model) { case EMS_DEVICE_FLAG_RC100: @@ -1455,10 +1458,10 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { changed_ |= telegram->read_value(hc->flowtempoffset, 24); // is * 1, only in mixed circuits changed_ |= telegram->read_value(hc->minflowtemp, 16); if (hc->heatingtype == 3) { - changed_ |= telegram->read_value(hc->designtemp, 36); // is * 1 + changed_ |= telegram->read_value(hc->designtemp, 36); // is * 1 changed_ |= telegram->read_value(hc->maxflowtemp, 35); // is * 1 } else { - changed_ |= telegram->read_value(hc->designtemp, 17); // is * 1 + changed_ |= telegram->read_value(hc->designtemp, 17); // is * 1 changed_ |= telegram->read_value(hc->maxflowtemp, 15); // is * 1 } } @@ -2113,8 +2116,8 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co case HeatingCircuit::Mode::MINFLOW: set_typeid = summer_typeids[hc->hc_num() - 1]; validate_typeid = set_typeid; - offset = 8; - factor = 1; + offset = 8; + factor = 1; break; case HeatingCircuit::Mode::MAXFLOW: set_typeid = curve_typeids[hc->hc_num() - 1]; diff --git a/src/system.cpp b/src/system.cpp index d214e660..c89b4ca8 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -78,12 +78,12 @@ bool System::command_publish(const char * value, const int8_t id) { if (Helpers::value2string(value, ha)) { if (ha == "ha") { EMSESP::publish_all(true); // includes HA - LOG_INFO(F("Published all data to MQTT, including HA configs")); + LOG_INFO(F("Publishing all data to MQTT, including HA configs")); return true; } } EMSESP::publish_all(); // ignore value and id - LOG_INFO(F("Published all data to MQTT")); + LOG_INFO(F("Publishing all data to MQTT")); return true; } From cb9795ec82eab4fb408a49a2999eafae3ba8506a Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 17:31:17 +0100 Subject: [PATCH 066/225] increase mqtt size just in case --- src/devices/boiler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index e4558e64..ea1a053d 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -80,7 +80,7 @@ void Boiler::register_mqtt_ha_config() { } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F("Service Code"); doc["uniq_id"] = F("boiler"); doc["ic"] = F("mdi:home-thermometer-outline"); From ca0296e4540e34a3c2b7c310b02ade9f65aa94e0 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 17:31:28 +0100 Subject: [PATCH 067/225] mixing test --- src/test/test.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index 81432182..f0801dbb 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -820,11 +820,9 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { uart_telegram({0xA0, 0x00, 0xFF, 0x00, 0x01, 0x55, 0x00, 0x1A}); shell.invoke_command("show"); - shell.invoke_command("call"); shell.invoke_command("call mixer info"); - shell.invoke_command("publish"); + shell.invoke_command("call system publish"); shell.invoke_command("show mqtt"); - shell.invoke_command("call mixer"); } } From bcac102bbdee4ff7a25cd7b29f231a300e725430 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 17:33:13 +0100 Subject: [PATCH 068/225] fix HA config for Mixing, #602 --- src/devices/mixer.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index 41c636c5..b399c9ff 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -164,7 +164,7 @@ void Mixer::register_mqtt_ha_config() { } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; char name[20]; snprintf_P(name, sizeof(name), PSTR("Mixer %02X"), device_id() - 0x20 + 1); @@ -192,7 +192,7 @@ void Mixer::register_mqtt_ha_config() { std::string topic(100, '\0'); if (this->type() == Type::HC) { - snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/climate/ems-esp/mixer_hc%d/config"), hc_); + snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_hc%d/config"), hc_); Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag char hc_name[10]; snprintf_P(hc_name, sizeof(hc_name), PSTR("hc%d"), hc_); @@ -202,7 +202,7 @@ void Mixer::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(valveStatus), this->device_type(), "valveStatus", nullptr, nullptr); } else { // WWC - snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/climate/ems-esp/mixer_wwc%d/config"), hc_); + snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_wwc%d/config"), hc_); Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag char wwc_name[10]; snprintf_P(wwc_name, sizeof(wwc_name), PSTR("wwc%d"), hc_); From 74012964ab579df4efd4ed2766c9092505f50f54 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 17:34:18 +0100 Subject: [PATCH 069/225] mixing name fixed in HA --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 927d6694..025954be 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -8,6 +8,7 @@ ### Fixed - mixer IPM pumpstatus +- Mixing devices in HA were incorrectly named ### Changed - optimized MQTT for HA to reduce mem fragmentation issues From 956dda87ec624a9eb77b248ae3eaf76ddf1ea0a5 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 14 Nov 2020 22:10:06 +0100 Subject: [PATCH 070/225] added test command (console&web), to simulate adding devices. still experimental --- makefile | 2 +- platformio.ini | 1 + src/console.cpp | 24 ++-- src/locale_EN.h | 1 + src/system.cpp | 23 +++- src/system.h | 4 + src/test/test.cpp | 277 +++++++++++++++++++++++----------------------- src/test/test.h | 5 +- 8 files changed, 181 insertions(+), 156 deletions(-) diff --git a/makefile b/makefile index af6c3082..c7e1da37 100644 --- a/makefile +++ b/makefile @@ -26,7 +26,7 @@ CXX_STANDARD := -std=c++11 #---------------------------------------------------------------------- # Defined Symbols #---------------------------------------------------------------------- -DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DEMSESP_DEBUG -DEMSESP_STANDALONE +DEFINES += -DARDUINOJSON_ENABLE_STD_STRING=1 -DARDUINOJSON_ENABLE_ARDUINO_STRING -DEMSESP_DEBUG -DEMSESP_STANDALONE -DEMSESP_TEST #---------------------------------------------------------------------- # Sources & Files diff --git a/platformio.ini b/platformio.ini index a5d8af09..051069d0 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,6 +13,7 @@ extra_configs = debug_flags = ; -D EMSESP_DEBUG ; -D EMSESP_UART_DEBUG + ; -D EMSESP_TEST ; -D EMSESP_FORCE_SERIAL ; -D ENABLE_CORS diff --git a/src/console.cpp b/src/console.cpp index 4e39942d..ef81ffc8 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -20,7 +20,9 @@ #include "emsesp.h" #include "version.h" +#if defined(EMSESP_TEST) #include "test/test.h" +#endif namespace emsesp { @@ -426,11 +428,7 @@ void EMSESPShell::add_console_commands() { return {}; }); - /* - * add all the submenu contexts... - */ - - // System + // System context menu commands->add_command(ShellContext::MAIN, CommandFlags::USER, flash_string_vector{F_(system)}, @@ -471,26 +469,22 @@ void Console::enter_custom_context(Shell & shell, unsigned int context) { // each custom context has the common commands like log, help, exit, su etc void Console::load_standard_commands(unsigned int context) { -#if defined(EMSESP_DEBUG) +#if defined(EMSESP_TEST) EMSESPShell::commands->add_command(context, CommandFlags::USER, - flash_string_vector{F("test")}, + flash_string_vector{F_(test)}, flash_string_vector{F_(name_optional)}, [](Shell & shell, const std::vector & arguments) { if (arguments.size() == 0) { - Test::run_test(shell, "default"); + Test::run_test_shell(shell, "default"); } else { - Test::run_test(shell, arguments.front()); + Test::run_test_shell(shell, arguments.front()); } }); - EMSESPShell::commands->add_command(context, - CommandFlags::USER, - flash_string_vector{F("t")}, - [](Shell & shell, const std::vector & arguments __attribute__((unused))) { - Test::run_test(shell, "default"); - }); #endif + + EMSESPShell::commands->add_command( context, CommandFlags::USER, diff --git a/src/locale_EN.h b/src/locale_EN.h index b7abe921..128809a9 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -78,6 +78,7 @@ MAKE_PSTR_WORD(command) MAKE_PSTR_WORD(commands) MAKE_PSTR_WORD(info) MAKE_PSTR_WORD(report) +MAKE_PSTR_WORD(test) // devices MAKE_PSTR_WORD(boiler) diff --git a/src/system.cpp b/src/system.cpp index c89b4ca8..07242631 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -21,6 +21,10 @@ #include "version.h" // firmware version of EMS-ESP +#if defined(EMSESP_TEST) +#include "test/test.h" +#endif + namespace emsesp { uuid::log::Logger System::logger_{F_(system), uuid::log::Facility::KERN}; @@ -47,7 +51,12 @@ String System::syslog_host_; // send on/off to a gpio pin // value: true = HIGH, false = LOW +// http://ems-esp/api?device=system&cmd=pin&data=1&id=2 bool System::command_pin(const char * value, const int8_t id) { + if (id < 0) { + return false; + } + bool v = false; if (Helpers::value2bool(value, v)) { pinMode(id, OUTPUT); @@ -191,6 +200,10 @@ void System::start() { Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(fetch), System::command_fetch); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(info), System::command_info); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(report), System::command_report); + +#if defined(EMSESP_TEST) + Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(test), System::command_test); +#endif }); @@ -274,7 +287,6 @@ void System::loop() { #endif #endif - } void System::show_mem(const char * note) { @@ -1073,4 +1085,13 @@ bool System::command_report(const char * value, const int8_t id, JsonObject & js return true; } +#if defined(EMSESP_TEST) +// run a test +// e.g. http://ems-esp/api?device=system&cmd=test&data=boiler +bool System::command_test(const char * value, const int8_t id) { + Test::run_test(value, id); + return true; +} +#endif + } // namespace emsesp diff --git a/src/system.h b/src/system.h index 0af8a8aa..7a5caad0 100644 --- a/src/system.h +++ b/src/system.h @@ -55,6 +55,10 @@ class System { static bool command_info(const char * value, const int8_t id, JsonObject & json); static bool command_report(const char * value, const int8_t id, JsonObject & json); +#if defined(EMSESP_TEST) + static bool command_test(const char * value, const int8_t id); +#endif + static uint8_t free_mem(); static void upload_status(bool in_progress); static bool upload_status(); diff --git a/src/test/test.cpp b/src/test/test.cpp index f0801dbb..c1bce569 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -17,24 +17,140 @@ * along with this program. If not, see . */ -#if defined(EMSESP_DEBUG) +#if defined(EMSESP_TEST) #include "test.h" +// create some fake test data + namespace emsesp { -// create some fake test data +// no shell +void Test::run_test(const char * command, int8_t id) { + if ((command == nullptr) || (strlen(command) == 0)) { + return; + } + + if (strcmp(command, "general") == 0) { + EMSESP::logger().info(F("Testing general...")); + + add_device(0x08, 123); // Nefit Trendline + add_device(0x18, 157); // Bosch CR100 + + // add some data + // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) + uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, + 0x80, 0x00, 0x01, 0xE1, 0x01, 0x76, 0x0E, 0x3D, 0x48, 0x00, 0xC9, 0x44, 0x02, 0x00}); + + // Boiler -> Thermostat, UBAParameterWW(0x33), telegram: 08 97 33 00 23 24 (#data=2) + uart_telegram({0x08, 0x98, 0x33, 0x00, 0x23, 0x24}); + + // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) + uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + + // Thermostat RCPLUSStatusMessage_HC1(0x01A5) + uart_telegram({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, + 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); + + return; + } + + if (strcmp(command, "gateway") == 0) { + EMSESP::logger().info(F("Testing gateway...")); + + // add 0x48 KM200, via a version command + rx_telegram({0x48, 0x0B, 0x02, 0x00, 0xBD, 0x04, 0x06, 00, 00, 00, 00, 00, 00, 00}); + + // Boiler(0x08) -> All(0x00), UBADevices(0x07), data: 09 01 00 00 00 00 00 00 01 00 00 00 00 + // check: make sure 0x48 is not detected again ! + rx_telegram({0x08, 0x00, 0x07, 0x00, 0x09, 01, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00}); + + // add thermostat - Thermostat: RC300/RC310/Moduline 3000/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:03.03) ** master device ** + add_device(0x10, 158); // Nefit Trendline + + // simulate incoming telegram + // Thermostat(0x10) -> 48(0x48), ?(0x26B), data: 6B 08 4F 00 00 00 02 00 00 00 02 00 03 00 03 00 03 + rx_telegram({0x10, 0x48, 0xFF, 00, 01, 0x6B, 00, 0x6B, 0x08, 0x4F, 00, 00, 00, 02, 00, 00, 00, 02, 00, 03, 00, 03, 00, 03}); + + return; + } + + if (strcmp(command, "boiler") == 0) { + // EMSESP::logger().info(F("Testing boiler...")); + add_device(0x08, 123); // Nefit Trendline + + // UBAuptime + uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); + + return; + } + + if (strcmp(command, "thermostat") == 0) { + EMSESP::logger().info(F("Testing thermostat...")); + add_device(0x10, 192); // FW120 + + // HC1 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, + 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); + + // HC2 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x00, 0xCF, 0x22, 0x2F, 0x10, 0x00, 0x2E, 0x24, + 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); + + // HC3 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + + return; + } + + if (strcmp(command, "solar") == 0) { + EMSESP::logger().info(F("Testing solar...")); + EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); + + add_device(0x30, 163); // SM100 + + // SM100Monitor - type 0x0362 EMS+ - for SM100 and SM200 + // B0 0B FF 00 02 62 00 44 02 7A 80 00 80 00 80 00 80 00 80 00 80 00 00 7C 80 00 80 00 80 00 80 + rx_telegram({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, + 0x80, 00, 0x80, 00, 0x80, 00, 00, 0x7C, 0x80, 00, 0x80, 00, 0x80, 00, 0x80}); + + rx_telegram({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, + 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 0x33}); + + rx_telegram({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); + + EMSESP::send_raw_telegram("B0 00 FF 18 02 62 80 00 B8"); + + return; + } + + if (strcmp(command, "heatpump") == 0) { + EMSESP::logger().info(F("Testing heatpump...")); + EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); + add_device(0x38, 200); // Enviline module + add_device(0x10, 192); // FW120 thermostat + + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, + 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); // HC1 + + uart_telegram("38 0B FF 00 03 7B 0C 34 00 74"); + + return; + } +} + // used with the 'test' command, under su/admin -void Test::run_test(uuid::console::Shell & shell, const std::string & command) { +void Test::run_test_shell(uuid::console::Shell & shell, const std::string & command) { // switch to su shell.add_flags(CommandFlags::ADMIN); - if (command == "default") { - run_test(shell, "general"); // add the default test case here - } - - if (command.empty()) { - run_test(shell, "default"); + if ((command == "default") || (command == "general") || (command.empty())) { + shell.printfln(F("Testing adding a general boiler & thermostat...")); + run_test("general"); + shell.invoke_command("show devices"); + shell.invoke_command("show"); + shell.invoke_command("call system publish"); + shell.invoke_command("show mqtt"); } if (command == "render") { @@ -139,8 +255,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); // this is important otherwise nothing will be picked up! - //emsdevices.push_back(EMSFactory::add(EMSdevice::DeviceType::BOILER, EMSdevice::EMS_DEVICE_ID_BOILER, 0, "", "My Boiler", 0, 0)); - // A fake response - UBADevices(0x07) rx_telegram({0x08, 0x00, 0x07, 0x00, 0x0B, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); } @@ -160,9 +274,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "unknown") { shell.printfln(F("Testing unknown...")); - // question: do we need to set the mask? - std::string version("1.2.3"); - // add boiler add_device(0x08, 84); @@ -186,20 +297,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "gateway") { shell.printfln(F("Testing Gateway...")); - - // add 0x48 KM200, via a version command - rx_telegram({0x48, 0x0B, 0x02, 0x00, 0xBD, 0x04, 0x06, 00, 00, 00, 00, 00, 00, 00}); - - // Boiler(0x08) -> All(0x00), UBADevices(0x07), data: 09 01 00 00 00 00 00 00 01 00 00 00 00 - // check: make sure 0x48 is not detected again ! - rx_telegram({0x08, 0x00, 0x07, 0x00, 0x09, 01, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00}); - - // add thermostat - Thermostat: RC300/RC310/Moduline 3000/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:03.03) ** master device ** - add_device(0x10, 158); // Nefit Trendline - - // simulate incoming telegram - // Thermostat(0x10) -> 48(0x48), ?(0x26B), data: 6B 08 4F 00 00 00 02 00 00 00 02 00 03 00 03 00 03 - rx_telegram({0x10, 0x48, 0xFF, 00, 01, 0x6B, 00, 0x6B, 0x08, 0x4F, 00, 00, 00, 02, 00, 00, 00, 02, 00, 03, 00, 03, 00, 03}); + run_test("gateway"); } if (command == "web") { @@ -227,8 +325,9 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { uart_telegram({0x98, 0x00, 0x06, 0x00, 0x00, 0x03, 0x04, 0x0C, 0x02, 0x33, 0x06, 00, 00, 00, 00, 00, 00}); shell.invoke_command("show"); - StaticJsonDocument<2000> doc; - JsonObject root = doc.to(); + + StaticJsonDocument<500> doc; + JsonObject root = doc.to(); EMSESP::device_info_web(2, root); // show thermostat. use 1 for boiler serializeJsonPretty(doc, shell); shell.println(); @@ -236,48 +335,15 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "boiler") { shell.printfln(F("Testing boiler...")); - - add_device(0x08, 123); // Nefit Trendline - - // UBAuptime - uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); - + run_test("boiler"); shell.invoke_command("show"); shell.invoke_command("call boiler info"); } - if (command == "general") { - shell.printfln(F("Testing adding a general boiler & thermostat...")); - - add_device(0x08, 123); // Nefit Trendline - add_device(0x18, 157); // Bosch CR100 - - // add some data - // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) - uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, - 0x80, 0x00, 0x01, 0xE1, 0x01, 0x76, 0x0E, 0x3D, 0x48, 0x00, 0xC9, 0x44, 0x02, 0x00}); - - // Boiler -> Thermostat, UBAParameterWW(0x33), telegram: 08 97 33 00 23 24 (#data=2) - uart_telegram({0x08, 0x98, 0x33, 0x00, 0x23, 0x24}); - - // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) - uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); - - // Thermostat RCPLUSStatusMessage_HC1(0x01A5) - uart_telegram({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); - - shell.invoke_command("show devices"); - shell.invoke_command("show"); - shell.invoke_command("call system publish"); - shell.invoke_command("show mqtt"); - } - if (command == "fr120") { shell.printfln(F("Testing adding a thermostat FR120...")); - // add a thermostat - add_device(0x10, 191); // FR120 + add_device(0x10, 191); // FR120 thermostat // HC1 uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, @@ -289,23 +355,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "thermostat") { shell.printfln(F("Testing adding a thermostat FW120...")); - - // add a thermostat - add_device(0x10, 192); // FW120 - - // HC1 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); - - // HC2 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x00, 0xCF, 0x22, 0x2F, 0x10, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); - - // HC3 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); - + run_test("thermostat"); shell.invoke_command("show"); - EMSESP::mqtt_.incoming("ems-esp/thermostat_hc1", "heat"); EMSESP::mqtt_.incoming("ems-esp/thermostat_hc2", "28.8"); EMSESP::mqtt_.incoming("ems-esp/thermostat", "{\"cmd\":\"temp\",\"id\":2,\"data\":22}"); @@ -324,50 +375,19 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "solar") { shell.printfln(F("Testing Solar")); - - EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - - add_device(0x30, 163); // SM100 - - // SM100Monitor - type 0x0362 EMS+ - for SM100 and SM200 - // B0 0B FF 00 02 62 00 44 02 7A 80 00 80 00 80 00 80 00 80 00 80 00 00 7C 80 00 80 00 80 00 80 - rx_telegram({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, - 0x80, 00, 0x80, 00, 0x80, 00, 00, 0x7C, 0x80, 00, 0x80, 00, 0x80, 00, 0x80}); - - rx_telegram({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, - 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 0x33}); - - rx_telegram({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); - - EMSESP::send_raw_telegram("B0 00 FF 18 02 62 80 00 B8"); - + run_test("solar"); uart_telegram("30 00 FF 0A 02 6A 04"); // SM100 pump on 1 uart_telegram("30 00 FF 00 02 64 00 00 00 04 00 00 FF 00 00 1E 0B 09 64 00 00 00 00"); // SM100 modulation EMSESP::show_device_values(shell); - uart_telegram("30 00 FF 0A 02 6A 03"); // SM100 pump off 0 EMSESP::show_device_values(shell); } if (command == "heatpump") { shell.printfln(F("Testing Heat Pump")); - - EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - - // add heatpump - add_device(0x38, 200); // Enviline module - - // add a thermostat - add_device(0x10, 192); // FW120 - - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); // HC1 - - uart_telegram("38 0B FF 00 03 7B 0C 34 00 74"); + run_test("heatpump"); shell.invoke_command("call"); shell.invoke_command("call heatpump info"); - - EMSESP::show_device_values(shell); } if (command == "solar200") { @@ -381,25 +401,20 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { // B0 0B FF 00 02 62 00 44 02 7A 80 00 80 00 80 00 80 00 80 00 80 00 00 7C 80 00 80 00 80 00 80 rx_telegram({0xB0, 0x0B, 0xFF, 00, 0x02, 0x62, 00, 0x44, 0x02, 0x7A, 0x80, 00, 0x80, 0x00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 00, 0x7C, 0x80, 00, 0x80, 00, 0x80, 00, 0x80}); - EMSESP::show_device_values(shell); rx_telegram({0xB0, 0x0B, 0xFF, 0x00, 0x02, 0x62, 0x01, 0x44, 0x03, 0x30, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 00, 0x80, 0x33}); - EMSESP::show_device_values(shell); rx_telegram({0xB0, 00, 0xFF, 0x18, 02, 0x62, 0x80, 00, 0xB8}); - EMSESP::show_device_values(shell); EMSESP::send_raw_telegram("B0 00 FF 18 02 62 80 00 B8"); uart_telegram("30 00 FF 0A 02 6A 04"); // SM100 pump on 1 uart_telegram("30 00 FF 00 02 64 00 00 00 04 00 00 FF 00 00 1E 0B 09 64 00 00 00 00"); // SM100 modulation - EMSESP::show_device_values(shell); - uart_telegram("30 00 FF 0A 02 6A 03"); // SM100 pump off 0 - EMSESP::show_device_values(shell); + shell.invoke_command("show"); } if (command == "km") { @@ -558,12 +573,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { uart_telegram({0x88, 00, 0x2A, 00, 00, 00, 00, 00, 00, 00, 00, 00, 0xD2, 00, 00, 0x80, 00, 00, 01, 0x9D, 0x80, 0x00, 0x02, 0x79, 00}); } - if (command == "send") { - shell.printfln(F("Sending to Tx...")); - EMSESP::show_ems(shell); - EMSESP::txservice_.send(); // send it to UART - } - if (command == "tx") { shell.printfln(F("Testing Tx...")); @@ -602,8 +611,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { EMSESP::txservice_.send(); // send it to UART } - shell.loop_all(); - EMSESP::txservice_.flush_tx_queue(); } @@ -654,9 +661,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.invoke_command("call"); shell.invoke_command("call system info"); - char system_topic[Mqtt::MQTT_TOPIC_MAX_SIZE]; - strcpy(system_topic, "ems-esp/system"); - EMSESP::mqtt_.incoming(system_topic, "{\"cmd\":\"info\"}"); // this should fail + EMSESP::mqtt_.incoming("ems-esp/system", "{\"cmd\":\"info\"}"); // this should fail shell.invoke_command("call thermostat wwmode"); // should do nothing shell.invoke_command("call thermostat mode auto 2"); // should error, no hc2 @@ -665,8 +670,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "pin") { shell.printfln(F("Testing pin...")); - - shell.invoke_command("su"); shell.invoke_command("call system pin"); shell.invoke_command("call system pin 1 true"); } @@ -819,10 +822,10 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { // check for error "No telegram type handler found for ID 0x255 (src 0x20)" uart_telegram({0xA0, 0x00, 0xFF, 0x00, 0x01, 0x55, 0x00, 0x1A}); - shell.invoke_command("show"); - shell.invoke_command("call mixer info"); - shell.invoke_command("call system publish"); - shell.invoke_command("show mqtt"); + // shell.invoke_command("show"); + // shell.invoke_command("call mixer info"); + // shell.invoke_command("call system publish"); + // shell.invoke_command("show mqtt"); } } diff --git a/src/test/test.h b/src/test/test.h index 4dcb75e4..90529ba3 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -#if defined(EMSESP_DEBUG) +#if defined(EMSESP_TEST) #ifndef EMSESP_TEST_H #define EMSESP_TEST_H @@ -40,7 +40,8 @@ namespace emsesp { class Test { public: - static void run_test(uuid::console::Shell & shell, const std::string & command); + static void run_test_shell(uuid::console::Shell & shell, const std::string & command); + static void run_test(const char * command, int8_t id = 0); static void dummy_mqtt_commands(const char * message); static void rx_telegram(const std::vector & data); static void uart_telegram(const std::vector & rx_data); From d5fcc25f94307765b69c28a3cc07da6a1bb7879b Mon Sep 17 00:00:00 2001 From: hpanther <2348625+hpanther@users.noreply.github.com> Date: Sat, 14 Nov 2020 22:50:32 +0100 Subject: [PATCH 071/225] Added all known solar config items and implemented 0xF9 telegram correctly --- src/devices/solar.cpp | 116 ++++++++++++++++++++++++++++++------------ src/devices/solar.h | 36 +++++++++++-- src/emsdevice.h | 2 +- 3 files changed, 116 insertions(+), 38 deletions(-) diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index ddfe2ba4..8d0ada4b 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -39,22 +39,19 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const s register_telegram_type(0x07AA, F("SM100wwStatus"), false, [&](std::shared_ptr t) { process_SM100wwStatus(t); }); register_telegram_type(0x07AB, F("SM100wwCommand"), false, [&](std::shared_ptr t) { process_SM100wwCommand(t); }); } else { + register_telegram_type(EMS_TYPE_ParamCfg, F("ParamCfg"), false, [&](std::shared_ptr t) { process_SM100ParamCfg(t); }); + register_telegram_type(0x0358, F("SM100SystemConfig"), true, [&](std::shared_ptr t) { process_SM100SystemConfig(t); }); + register_telegram_type(0x035A, F("SM100SolarCircuitConfig"), true, [&](std::shared_ptr t) { process_SM100SolarCircuitConfig(t); }); register_telegram_type(0x0362, F("SM100Monitor"), true, [&](std::shared_ptr t) { process_SM100Monitor(t); }); register_telegram_type(0x0363, F("SM100Monitor2"), true, [&](std::shared_ptr t) { process_SM100Monitor2(t); }); register_telegram_type(0x0366, F("SM100Config"), true, [&](std::shared_ptr t) { process_SM100Config(t); }); register_telegram_type(0x0364, F("SM100Status"), false, [&](std::shared_ptr t) { process_SM100Status(t); }); register_telegram_type(0x036A, F("SM100Status2"), false, [&](std::shared_ptr t) { process_SM100Status2(t); }); + register_telegram_type(0x0380, F("SM100CollectorConfig"), true, [&](std::shared_ptr t) { process_SM100CollectorConfig(t); }); register_telegram_type(0x038E, F("SM100Energy"), true, [&](std::shared_ptr t) { process_SM100Energy(t); }); - register_telegram_type(0x035A, F("SM100Tank1MaxTemp"), false, [&](std::shared_ptr t) { process_SM100Tank1MaxTemp(t); }); + + register_mqtt_cmd(F("SM100Tank1MaxTemp"), [&](const char * value, const int8_t id) { return set_SM100Tank1MaxTemp(value, id); }); } -// EMSESP::send_read_request(0x035A, device_id); - // This is a hack right now, need to update TXService to support sending F9 packets - //uint8_t msg[]="8B B0 F9 00 11 FF 02 5A 03 00"; - //msg[sizeof(msg)-2] = EMSESP::rxservice_.calculate_crc(msg, sizeof(msg)-2); - //EMSESP::send_raw_telegram((const char*)msg); - - uint8_t msg[]={0x11, 0xFF, 0x02, 0x5A, 0x03}; - EMSdevice::write_command(EMS_TYPE_RegRead, 0x00, msg, sizeof(msg), EMS_TYPE_RegRead); } if (flags == EMSdevice::EMS_DEVICE_FLAG_ISM) { @@ -75,7 +72,7 @@ void Solar::device_info_web(JsonArray & root) { print_value_json(root, F("collectorTemp"), nullptr, F_(collectorTemp), F_(degrees), json); print_value_json(root, F("tankBottomTemp"), nullptr, F_(tankBottomTemp), F_(degrees), json); print_value_json(root, F("tankBottomTemp2"), nullptr, F_(tankBottomTemp2), F_(degrees), json); - print_value_json(root, F("tank1MaxTemp"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); + print_value_json(root, F("tank1MaxTempCurrent"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); print_value_json(root, F("heatExchangerTemp"), nullptr, F_(heatExchangerTemp), F_(degrees), json); print_value_json(root, F("solarPumpModulation"), nullptr, F_(solarPumpModulation), F_(percent), json); print_value_json(root, F("cylinderPumpModulation"), nullptr, F_(cylinderPumpModulation), F_(percent), json); @@ -110,7 +107,7 @@ void Solar::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("collectorTemp"), nullptr, F_(collectorTemp), F_(degrees), json); print_value_json(shell, F("tankBottomTemp"), nullptr, F_(tankBottomTemp), F_(degrees), json); print_value_json(shell, F("tankBottomTemp2"), nullptr, F_(tankBottomTemp2), F_(degrees), json); - print_value_json(shell, F("tank1MaxTemp"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); + print_value_json(shell, F("tank1MaxTempCurrent"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); print_value_json(shell, F("heatExchangerTemp"), nullptr, F_(heatExchangerTemp), F_(degrees), json); print_value_json(shell, F("solarPumpModulation"), nullptr, F_(solarPumpModulation), F_(percent), json); print_value_json(shell, F("cylinderPumpModulation"), nullptr, F_(cylinderPumpModulation), F_(percent), json); @@ -182,7 +179,7 @@ void Solar::register_mqtt_ha_config(bool force) { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(collectorTemp), this->device_type(), "collectorTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp), this->device_type(), "tankBottomTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp2), this->device_type(), "tankBottomTemp2", F_(degrees), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tank1MaxTempCurrent), this->device_type(), "tank1MaxTemp", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tank1MaxTempCurrent), this->device_type(), "tank1MaxTempCurrent", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatExchangerTemp), this->device_type(), "heatExchangerTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPumpModulation), this->device_type(), "solarPumpModulation", F_(percent), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(cylinderPumpModulation), this->device_type(), "cylinderPumpModulation", F_(percent), nullptr); @@ -216,7 +213,7 @@ bool Solar::export_values(JsonObject & json) { } if (Helpers::hasValue(tank1MaxTempCurrent_)) { - json["tankMaximumTemp"] = tank1MaxTempCurrent_; + json["tank1MaxTempCurrent"] = tank1MaxTempCurrent_; } if (Helpers::hasValue(heatExchangerTemp_)) { @@ -285,28 +282,62 @@ void Solar::process_SM10Monitor(std::shared_ptr telegram) { } /* - * process_SM100Tank1MaxTemp - type 0x035A EMS+ - for MS/SM100 and MS/SM200 - * e.g. B0 10 F9 00 FF 02 5A 03 17 00 00 00 14 00 00 00 3C 00 00 00 5A 00 00 00 59 29 - requested with 90 B0 F9 00 11 FF 02 5A 03 AF - * bytes 0-1 = packet format designator - * bytes 2..5 = minimum value - * bytes 6..9 = default value - * bytes 10..13 = maximum value - * bytes 14..17 = current value - * e.g, FD 3F - requested with 90 B0 F7 00 FF FF 02 5A B0 + * process_SM100SystemConfig - type 0x0358 EMS+ - for MS/SM100 and MS/SM200 */ -void Solar::process_SM100Tank1MaxTemp(std::shared_ptr telegram) { - int16_t designator; - telegram->read_value(designator, 0); - LOG_DEBUG(F("SM100Tank1MaxTemp designator 0x%02X"), designator); - if(designator==0x0317) // The telegram has the right form - { - changed_ |= telegram->read_value(tank1MaxTempMinimum_, 2); - changed_ |= telegram->read_value(tank1MaxTempDefault_, 6); - changed_ |= telegram->read_value(tank1MaxTempMaximum_, 10); - changed_ |= telegram->read_value(tank1MaxTempCurrent_, 14); - } +void Solar::process_SM100SystemConfig(std::shared_ptr telegram) { + changed_ |= telegram->read_value(heatTransferSystem_ , 5, 1); + changed_ |= telegram->read_value(externalTank_ , 9, 1); + changed_ |= telegram->read_value(thermalDisinfect_ , 10, 1); + changed_ |= telegram->read_value(heatMetering_ , 14, 1); + changed_ |= telegram->read_value(solarIsEnabled_ , 19, 1); } +/* + * process_SM100SolarCircuitConfig - type 0x035A EMS+ - for MS/SM100 and MS/SM200 + */ +void Solar::process_SM100SolarCircuitConfig(std::shared_ptr telegram) { + changed_ |= telegram->read_value(collectorTempMax_ , 0, 1); + changed_ |= telegram->read_value(tank1MaxTempCurrent_ , 3, 1); + changed_ |= telegram->read_value(collectorTempMin_ , 4, 1); + changed_ |= telegram->read_value(solarPumpMode_ , 5, 1); + changed_ |= telegram->read_value(solarPumpMinRPM_ , 6, 1); + changed_ |= telegram->read_value(solarPumpTurnoffDiff_, 7, 1); + changed_ |= telegram->read_value(solarPumpTurnonDiff_ , 8, 1); + changed_ |= telegram->read_value(solarPumpKick_ , 9, 1); + changed_ |= telegram->read_value(plainWaterMode_ , 10, 1); + changed_ |= telegram->read_value(doubleMatchFlow_ , 11, 1); +} + +/* process_SM100ParamCfg - type 0xF9 EMS 1.0 + * This telegram is used to inquire the min, default, max, and current values of a value that is usually read and written with another telegram ID + * The CS200 uses this method extensively to find out which values may be set in the SM100 + * e.g. B0 10 F9 00 FF 02 5A 03 17 00 00 00 14 00 00 00 3C 00 00 00 5A 00 00 00 59 29 - requested with 90 B0 F9 00 11 FF 02 5A 03 AF + * byte 0 = 0xFF + * byte 1-2 = telegram ID used to write this value + * byte 3 = offset in telegram used to write this value + * byte 4 = unknown + * bytes 5..8 = minimum value + * bytes 9..12 = default value + * bytes 13..16 = maximum value + * bytes 17..20 = current value + * + * e.g. B0 0B F9 00 00 02 5A 00 00 6E + */ +void Solar::process_SM100ParamCfg(std::shared_ptr telegram) { + uint16_t t_id; + uint8_t of; + int32 min,def,max,cur; + telegram->read_value(t_id, 1); + telegram->read_value(of, 3); + telegram->read_value(min, 5); + telegram->read_value(def, 9); + telegram->read_value(max, 13); + telegram->read_value(cur, 17); + + LOG_DEBUG(F("SM100ParamCfg param=0x%04X, offset=%d, min=%d, default=%d, max=%d, current=%d"), + t_id, of, min, def, max, cur); +} + /* * SM100Monitor - type 0x0362 EMS+ - for MS/SM100 and MS/SM200 * e.g. B0 0B FF 00 02 62 00 77 01 D4 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 00 F9 80 00 80 9E - for heat exchanger temp @@ -399,6 +430,16 @@ void Solar::process_SM100Status2(std::shared_ptr telegram) { changed_ |= telegram->read_bitvalue(solarPump_, 10, 2); // on if bit 2 set } +/* + * SM100CollectorConfig - type 0x0380 EMS+ - for SM100 and SM200 + */ +void Solar::process_SM100CollectorConfig(std::shared_ptr telegram) { + changed_ |= telegram->read_value(climateZone_, 0, 1); + changed_ |= telegram->read_value(collector1Area_, 3, 2); + changed_ |= telegram->read_value(collector1Type_, 5, 1); +} + + /* * SM100Energy - type 0x038E EMS+ for energy readings * e.g. 30 00 FF 00 02 8E 00 00 00 00 00 00 06 C5 00 00 76 35 @@ -436,4 +477,15 @@ void Solar::process_ISM1Set(std::shared_ptr telegram) { changed_ |= telegram->read_value(setpoint_maxBottomTemp_, 6); } +bool Solar::set_SM100Tank1MaxTemp(const char * value, const int8_t id) { + int temp; + if(! Helpers::value2number(value, temp)) return false; + tank1MaxTempCurrent_=temp; + unsigned char transport_temp=(unsigned char) temp; + // 90 30 FF 03 02 5A 59 B3 + EMSdevice::write_command(0x35A, 0x03, &transport_temp, sizeof(transport_temp), 0); + return true; +} + + } // namespace emsesp diff --git a/src/devices/solar.h b/src/devices/solar.h index e855a506..7c8c8596 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -46,10 +46,6 @@ class Solar : public EMSdevice { static uuid::log::Logger logger_; void register_mqtt_ha_config(bool force); - uint32_t tank1MaxTempMinimum_ = EMS_VALUE_ULONG_NOTSET; // Min value for max tank temp - uint32_t tank1MaxTempDefault_ = EMS_VALUE_ULONG_NOTSET; // Default value for max tank temp - uint32_t tank1MaxTempMaximum_ = EMS_VALUE_ULONG_NOTSET; // Max value for max tank temp - uint32_t tank1MaxTempCurrent_ = EMS_VALUE_ULONG_NOTSET; // Current value for max tank temp int16_t collectorTemp_ = EMS_VALUE_SHORT_NOTSET; // TS1: Temperature sensor for collector array 1 int16_t tankBottomTemp_ = EMS_VALUE_SHORT_NOTSET; // TS2: Temperature sensor 1 cylinder, bottom (solar thermal system) int16_t tankBottomTemp2_ = EMS_VALUE_SHORT_NOTSET; // TS5: Temperature sensor 2 cylinder, bottom, or swimming pool (solar thermal system) @@ -70,11 +66,37 @@ class Solar : public EMSdevice { uint8_t configFlag_ = EMS_VALUE_BOOL_NOTSET; uint8_t userFlag_ = EMS_VALUE_BOOL_NOTSET; + // telegram 0x0358 + uint8_t heatTransferSystem_ = EMS_VALUE_UINT_NOTSET; // Umladesystem, 00=no + uint8_t externalTank_ = EMS_VALUE_UINT_NOTSET; // Heat exchanger, 00=no + uint8_t thermalDisinfect_ = EMS_VALUE_UINT_NOTSET; // Daily heatup for disinfection, 00=no + uint8_t heatMetering_ = EMS_VALUE_UINT_NOTSET; // Wärmemengenzählung, 00=no + uint8_t solarIsEnabled_ = EMS_VALUE_UINT_NOTSET; // System enable, 00=no + + // telegram 0x035A + uint8_t collectorTempMax_ = EMS_VALUE_UINT_NOTSET; // maximum allowable temperature for collector + uint8_t tank1MaxTempCurrent_ = EMS_VALUE_UINT_NOTSET; // Current value for max tank temp + uint8_t collectorTempMin_ = EMS_VALUE_UINT_NOTSET; // minimum allowable temperature for collector + uint8_t solarPumpMode_ = EMS_VALUE_UINT_NOTSET; // 00=off, 01=PWM, 02=10V + uint8_t solarPumpMinRPM_ = EMS_VALUE_UINT_NOTSET; // minimum RPM setting, *5 % + uint8_t solarPumpTurnoffDiff_ = EMS_VALUE_UINT_NOTSET; // solar pump turnoff collector/tank diff + uint8_t solarPumpTurnonDiff_ = EMS_VALUE_UINT_NOTSET; // solar pump turnon collector/tank diff + uint8_t solarPumpKick_ = EMS_VALUE_UINT_NOTSET; // pump kick for vacuum collector, 00=off + uint8_t plainWaterMode_ = EMS_VALUE_UINT_NOTSET; // system does not use antifreeze, 00=off + uint8_t doubleMatchFlow_ = EMS_VALUE_UINT_NOTSET; // double Match Flow, 00=off + + // telegram 0x380 + uint8_t climateZone_ = EMS_VALUE_UINT_NOTSET; // climate zone identifier + uint16_t collector1Area_ = EMS_VALUE_USHORT_NOTSET;// Area of collector field 1 + uint8_t collector1Type_ = EMS_VALUE_UINT_NOTSET; // Type of collector field 1, 01=flat, 02=vacuum + bool changed_ = false; bool mqtt_ha_config_ = false; // for HA MQTT Discovery void process_SM10Monitor(std::shared_ptr telegram); - void process_SM100Tank1MaxTemp(std::shared_ptr telegram); + void process_SM100SystemConfig(std::shared_ptr telegram); + void process_SM100SolarCircuitConfig(std::shared_ptr telegram); + void process_SM100ParamCfg(std::shared_ptr telegram); void process_SM100Monitor(std::shared_ptr telegram); void process_SM100Monitor2(std::shared_ptr telegram); @@ -82,6 +104,7 @@ class Solar : public EMSdevice { void process_SM100Status(std::shared_ptr telegram); void process_SM100Status2(std::shared_ptr telegram); + void process_SM100CollectorConfig(std::shared_ptr telegram); void process_SM100Energy(std::shared_ptr telegram); void process_SM100wwTemperature(std::shared_ptr telegram); @@ -90,6 +113,9 @@ class Solar : public EMSdevice { void process_ISM1StatusMessage(std::shared_ptr telegram); void process_ISM1Set(std::shared_ptr telegram); + + + bool set_SM100Tank1MaxTemp(const char * value, const int8_t id); }; } // namespace emsesp diff --git a/src/emsdevice.h b/src/emsdevice.h index d89ac20e..6438ba30 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -241,7 +241,7 @@ class EMSdevice { // type IDs static constexpr uint16_t EMS_TYPE_VERSION = 0x02; // type ID for Version information. Generic across all EMS devices. static constexpr uint16_t EMS_TYPE_UBADevices = 0x07; // EMS connected devices - static constexpr uint16_t EMS_TYPE_RegRead = 0xF9; // EMS register read + static constexpr uint16_t EMS_TYPE_ParamCfg = 0xF9; // EMS parameter min/default/max/current // device flags: The lower 4 bits hold the unique identifier, the upper 4 bits are used for specific flags static constexpr uint8_t EMS_DEVICE_FLAG_NONE = 0; From a2c34c87ddab8ff9b05426d80ec62597c1e8f407 Mon Sep 17 00:00:00 2001 From: hpanther <2348625+hpanther@users.noreply.github.com> Date: Sun, 15 Nov 2020 11:48:16 +0100 Subject: [PATCH 072/225] Fix type for esp32 --- src/devices/solar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 957a0ece..2adc8c52 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -328,7 +328,7 @@ void Solar::process_SM100SolarCircuitConfig(std::shared_ptr tele void Solar::process_SM100ParamCfg(std::shared_ptr telegram) { uint16_t t_id; uint8_t of; - int32 min,def,max,cur; + int32_t min,def,max,cur; telegram->read_value(t_id, 1); telegram->read_value(of, 3); telegram->read_value(min, 5); From 6876f3d8040786a729c70631deddebda5621737b Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 12:39:29 +0100 Subject: [PATCH 073/225] initial loop run for standalone --- lib_standalone/Arduino.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_standalone/Arduino.cpp b/lib_standalone/Arduino.cpp index b06b8bf2..d8ed7f47 100644 --- a/lib_standalone/Arduino.cpp +++ b/lib_standalone/Arduino.cpp @@ -41,7 +41,7 @@ int main(int argc __attribute__((unused)), char * argv[] __attribute__((unused)) memset(__output_level, 0, sizeof(__output_level)); setup(); - // loop(); // run once + loop(); // run once static unsigned long __cycles = 0; From b5532b1b8824c12f6536daee8819bf4787471100 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 12:39:39 +0100 Subject: [PATCH 074/225] fix tests --- src/test/test.cpp | 45 +++++++++++++++++++++++++++++---------------- src/test/test.h | 2 +- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index c1bce569..bbd95290 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -26,9 +26,9 @@ namespace emsesp { // no shell -void Test::run_test(const char * command, int8_t id) { +bool Test::run_test(const char * command, int8_t id) { if ((command == nullptr) || (strlen(command) == 0)) { - return; + return false; } if (strcmp(command, "general") == 0) { @@ -52,7 +52,7 @@ void Test::run_test(const char * command, int8_t id) { uart_telegram({0x98, 0x00, 0xFF, 0x00, 0x01, 0xA5, 0x00, 0xCF, 0x21, 0x2E, 0x00, 0x00, 0x2E, 0x24, 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); - return; + return true; } if (strcmp(command, "gateway") == 0) { @@ -72,17 +72,17 @@ void Test::run_test(const char * command, int8_t id) { // Thermostat(0x10) -> 48(0x48), ?(0x26B), data: 6B 08 4F 00 00 00 02 00 00 00 02 00 03 00 03 00 03 rx_telegram({0x10, 0x48, 0xFF, 00, 01, 0x6B, 00, 0x6B, 0x08, 0x4F, 00, 00, 00, 02, 00, 00, 00, 02, 00, 03, 00, 03, 00, 03}); - return; + return true; } if (strcmp(command, "boiler") == 0) { - // EMSESP::logger().info(F("Testing boiler...")); - add_device(0x08, 123); // Nefit Trendline + EMSESP::logger().info(F("Testing boiler...")); + add_device(0x08, 123); // Nefit Trendline // TODO // UBAuptime uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); - return; + return true; } if (strcmp(command, "thermostat") == 0) { @@ -100,7 +100,7 @@ void Test::run_test(const char * command, int8_t id) { // HC3 uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); - return; + return true; } if (strcmp(command, "solar") == 0) { @@ -121,7 +121,7 @@ void Test::run_test(const char * command, int8_t id) { EMSESP::send_raw_telegram("B0 00 FF 18 02 62 80 00 B8"); - return; + return true; } if (strcmp(command, "heatpump") == 0) { @@ -135,8 +135,10 @@ void Test::run_test(const char * command, int8_t id) { uart_telegram("38 0B FF 00 03 7B 0C 34 00 74"); - return; + return true; } + + return false; } // used with the 'test' command, under su/admin @@ -744,8 +746,7 @@ void Test::run_test_shell(uuid::console::Shell & shell, const std::string & comm EMSESP::mqtt_.incoming(thermostat_topic, "heat"); EMSESP::mqtt_.incoming(thermostat_topic, "28.8"); - // EMSESP::txservice_.show_tx_queue(); - // EMSESP::publish_all_values(); + EMSESP::publish_all(true); Mqtt::resubscribe(); Mqtt::show_mqtt(shell); // show queue @@ -822,10 +823,10 @@ void Test::run_test_shell(uuid::console::Shell & shell, const std::string & comm // check for error "No telegram type handler found for ID 0x255 (src 0x20)" uart_telegram({0xA0, 0x00, 0xFF, 0x00, 0x01, 0x55, 0x00, 0x1A}); - // shell.invoke_command("show"); - // shell.invoke_command("call mixer info"); - // shell.invoke_command("call system publish"); - // shell.invoke_command("show mqtt"); + shell.invoke_command("show"); + shell.invoke_command("call mixer info"); + shell.invoke_command("call system publish"); + shell.invoke_command("show mqtt"); } } @@ -840,7 +841,10 @@ void Test::rx_telegram(const std::vector & rx_data) { } data[i] = EMSESP::rxservice_.calculate_crc(data, i); EMSESP::rxservice_.add(data, len + 1); + +#if defined(EMSESP_STANDALONE) EMSESP::loop(); +#endif } // simulates a telegram straight from UART, but without the CRC which is added automatically @@ -854,7 +858,10 @@ void Test::uart_telegram(const std::vector & rx_data) { } data[i] = EMSESP::rxservice_.calculate_crc(data, i); EMSESP::incoming_telegram(data, i + 1); + +#if defined(EMSESP_STANDALONE) EMSESP::loop(); +#endif } // takes raw string, assuming it contains the CRC. This is what is output from 'watch raw' @@ -892,7 +899,10 @@ void Test::uart_telegram_withCRC(const char * rx_data) { } EMSESP::incoming_telegram(data, count + 1); + +#if defined(EMSESP_STANDALONE) EMSESP::loop(); +#endif } // takes raw string, adds CRC to end @@ -932,7 +942,10 @@ void Test::uart_telegram(const char * rx_data) { data[count + 1] = EMSESP::rxservice_.calculate_crc(data, count + 1); // add CRC EMSESP::incoming_telegram(data, count + 2); + +#if defined(EMSESP_STANDALONE) EMSESP::loop(); +#endif } // Sends version telegram. Version is hardcoded to 1.0 diff --git a/src/test/test.h b/src/test/test.h index 90529ba3..80a10f2c 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -41,7 +41,7 @@ namespace emsesp { class Test { public: static void run_test_shell(uuid::console::Shell & shell, const std::string & command); - static void run_test(const char * command, int8_t id = 0); + static bool run_test(const char * command, int8_t id = 0); static void dummy_mqtt_commands(const char * message); static void rx_telegram(const std::vector & data); static void uart_telegram(const std::vector & rx_data); From 8db542b117ce13e3c91616d0cc47711836d0be26 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 12:40:08 +0100 Subject: [PATCH 075/225] test returns Ok or Invalid when called from web --- src/system.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/system.cpp b/src/system.cpp index 07242631..205f8f88 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -1089,8 +1089,7 @@ bool System::command_report(const char * value, const int8_t id, JsonObject & js // run a test // e.g. http://ems-esp/api?device=system&cmd=test&data=boiler bool System::command_test(const char * value, const int8_t id) { - Test::run_test(value, id); - return true; + return (Test::run_test(value, id)); } #endif From 8a301e368feadb3b6b25657a4a1e51f2151db282 Mon Sep 17 00:00:00 2001 From: hpanther <2348625+hpanther@users.noreply.github.com> Date: Sun, 15 Nov 2020 13:52:40 +0100 Subject: [PATCH 076/225] Review feedback - correct types and telegram examples --- src/devices/solar.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 2adc8c52..a43fd025 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -285,6 +285,7 @@ void Solar::process_SM10Monitor(std::shared_ptr telegram) { /* * process_SM100SystemConfig - type 0x0358 EMS+ - for MS/SM100 and MS/SM200 + * e.g. B0 0B FF 00 02 58 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 FF 01 00 00 */ void Solar::process_SM100SystemConfig(std::shared_ptr telegram) { changed_ |= telegram->read_value(heatTransferSystem_ , 5, 1); @@ -296,6 +297,7 @@ void Solar::process_SM100SystemConfig(std::shared_ptr telegram) /* * process_SM100SolarCircuitConfig - type 0x035A EMS+ - for MS/SM100 and MS/SM200 + * e.g. B0 0B FF 00 02 5A 64 05 00 58 14 01 01 32 64 00 00 00 5A 0C */ void Solar::process_SM100SolarCircuitConfig(std::shared_ptr telegram) { changed_ |= telegram->read_value(collectorTempMax_ , 0, 1); @@ -434,6 +436,7 @@ void Solar::process_SM100Status2(std::shared_ptr telegram) { /* * SM100CollectorConfig - type 0x0380 EMS+ - for SM100 and SM200 + * e.g. B0 0B FF 00 02 80 50 64 00 00 29 01 00 00 01 */ void Solar::process_SM100CollectorConfig(std::shared_ptr telegram) { changed_ |= telegram->read_value(climateZone_, 0, 1); @@ -487,12 +490,12 @@ void Solar::process_ISM1Set(std::shared_ptr telegram) { } bool Solar::set_SM100Tank1MaxTemp(const char * value, const int8_t id) { - int temp; - if(! Helpers::value2number(value, temp)) return false; - tank1MaxTempCurrent_=temp; - unsigned char transport_temp=(unsigned char) temp; + int temperature; + if(! Helpers::value2number(value, temperature)) return false; + tank1MaxTempCurrent_=temperature; + uint8_t data=(uint8_t) temperature; // 90 30 FF 03 02 5A 59 B3 - EMSdevice::write_command(0x35A, 0x03, &transport_temp, sizeof(transport_temp), 0); + EMSdevice::write_command(0x35A, 0x03, &data, sizeof(data), 0); return true; } From 88135ad277434120dab8b5b3d77e290a533ae240 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 14:25:17 +0100 Subject: [PATCH 077/225] prevent duplicate MQTT connections --- src/mqtt.cpp | 17 ++++++++++++----- src/mqtt.h | 8 +++++--- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 28f8b043..7be71f86 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -39,9 +39,9 @@ bool Mqtt::mqtt_enabled_; std::vector Mqtt::mqtt_subfunctions_; -uint16_t Mqtt::mqtt_publish_fails_ = 0; -// size_t Mqtt::maximum_mqtt_messages_ = Mqtt::MAX_MQTT_MESSAGES; -uint16_t Mqtt::mqtt_message_id_ = 0; +uint16_t Mqtt::mqtt_publish_fails_ = 0; +bool Mqtt::connecting_ = false; +uint16_t Mqtt::mqtt_message_id_ = 0; std::list Mqtt::mqtt_messages_; char will_topic_[Mqtt::MQTT_TOPIC_MAX_SIZE]; // because MQTT library keeps only char pointer @@ -364,6 +364,7 @@ void Mqtt::start() { mqttClient_->onConnect([this](bool sessionPresent) { on_connect(); }); mqttClient_->onDisconnect([this](AsyncMqttClientDisconnectReason reason) { + connecting_ = false; if (reason == AsyncMqttClientDisconnectReason::TCP_DISCONNECTED) { LOG_INFO(F("MQTT disconnected: TCP")); } @@ -463,6 +464,14 @@ void Mqtt::set_format(uint8_t mqtt_format) { // MQTT onConnect - when a connect is established void Mqtt::on_connect() { + if (connecting_) { + return; + } + + connecting_ = true; + + LOG_INFO(F("MQTT connected")); + // send info topic appended with the version information as JSON StaticJsonDocument<90> doc; doc["event"] = "start"; @@ -481,8 +490,6 @@ void Mqtt::on_connect() { if (mqtt_format() == Format::HA) { ha_status(); // create a device in HA } - - LOG_INFO(F("MQTT connected")); } // Home Assistant Discovery - the main master Device diff --git a/src/mqtt.h b/src/mqtt.h index 7e5080a7..cadcc994 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -85,6 +85,8 @@ class Mqtt { static constexpr uint8_t MQTT_TOPIC_MAX_SIZE = 128; // note this should really match the user setting in mqttSettings.maxTopicLength + static void on_connect(); + static void subscribe(const uint8_t device_type, const std::string & topic, mqtt_subfunction_p cb); static void subscribe(const std::string & topic, mqtt_subfunction_p cb); static void resubscribe(); @@ -112,7 +114,6 @@ class Mqtt { static void show_topic_handlers(uuid::console::Shell & shell, const uint8_t device_type); static void show_mqtt(uuid::console::Shell & shell); - static void on_connect(); static void ha_status(); void disconnect() { @@ -189,8 +190,6 @@ class Mqtt { void on_message(const char * topic, const char * payload, size_t len); void process_queue(); - static uint16_t mqtt_publish_fails_; - // function handlers for MQTT subscriptions struct MQTTSubFunction { uint8_t device_type_; // which device type, from DeviceType:: @@ -216,6 +215,9 @@ class Mqtt { uint32_t last_publish_other_ = 0; uint32_t last_publish_sensor_ = 0; + static bool connecting_; + static uint16_t mqtt_publish_fails_; + // settings, copied over static std::string hostname_; static uint8_t mqtt_qos_; From 978e0b8d8343393f0564c62cfc1cf54aaf0992af Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 15:22:54 +0100 Subject: [PATCH 078/225] HA binary sensors put on MQTT queue --- src/mqtt.cpp | 31 ++++++------------------------- src/mqtt.h | 9 +++++---- 2 files changed, 11 insertions(+), 29 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 7be71f86..eb0601eb 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -687,8 +687,7 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_SMALL); - // StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = name; doc["uniq_id"] = entity; @@ -716,31 +715,16 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons snprintf_P(ha_device, sizeof(ha_device), PSTR("ems-esp-%s"), EMSdevice::device_type_2_device_name(device_type).c_str()); ids.add(ha_device); - doc.shrinkToFit(); - char topic[MQTT_TOPIC_MAX_SIZE]; snprintf_P(topic, sizeof(topic), PSTR("homeassistant/binary_sensor/ems-esp/%s/config"), entity); - // convert json to string and publish immediately with retain forced to true - char payload_text[256]; - serializeJson(doc, payload_text); // convert json to string - uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); -#if defined(EMSESP_STANDALONE) - LOG_DEBUG(F("Publishing topic %s"), topic); -#else - if (!packet_id) { - LOG_ERROR(F("Failed to publish topic %s"), topic); - } else { - LOG_DEBUG(F("Publishing topic %s"), topic); - } -#endif - - // delay(MQTT_PUBLISH_WAIT); - delay(50); + // queue MQTT publish + publish(topic, doc.as()); } // HA config for a normal 'sensor' type // entity must match the key/value pair in the _data topic +// some string copying here into chars, it looks messy but does help with heap fragmentation issues void Mqtt::register_mqtt_ha_sensor(const char * prefix, const __FlashStringHelper * suffix, const __FlashStringHelper * name, @@ -797,8 +781,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, } new_name[0] = toupper(new_name[0]); // capitalize first letter - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_SMALL); - // StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = new_name; doc["uniq_id"] = uniq.c_str(); @@ -814,9 +797,8 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, JsonArray ids = dev.createNestedArray("ids"); ids.add(ha_device); - doc.shrinkToFit(); // convert json to string and publish immediately with retain forced to true - char payload_text[256]; + char payload_text[EMSESP_MAX_JSON_SIZE_HA_CONFIG]; serializeJson(doc, payload_text); // convert json to string uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); @@ -830,7 +812,6 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, #endif } - // delay(MQTT_PUBLISH_WAIT); // don't flood asynctcp delay(50); // enough time to send the short message out } } // namespace emsesp diff --git a/src/mqtt.h b/src/mqtt.h index cadcc994..faf8c8f0 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -38,10 +38,11 @@ using uuid::console::Shell; -#define EMSESP_MAX_JSON_SIZE_SMALL 384 // for smaller json docs when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_DYN 2048 // for large json docs from web. Using DynamicJsonDocument +#define EMSESP_MAX_JSON_SIZE_HA_CONFIG 256 // for small HA config payloads +#define EMSESP_MAX_JSON_SIZE_SMALL 384 // for smaller json docs when using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_DYN 2048 // for large json docs from web. Using DynamicJsonDocument namespace emsesp { From 05ea86d07500f4a9a7b04261a5bfd1a352edc186 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 15:23:25 +0100 Subject: [PATCH 079/225] add test for gb072/rc310 - #610 --- src/test/test.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index bbd95290..350f3351 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -55,6 +55,30 @@ bool Test::run_test(const char * command, int8_t id) { return true; } + if (strcmp(command, "general2") == 0) { + EMSESP::logger().info(F("Testing GB072/RC310...")); + + add_device(0x08, 123); // GB072 + add_device(0x10, 158); // RC310 + + // add some data + // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) + uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, + 0x80, 0x00, 0x01, 0xE1, 0x01, 0x76, 0x0E, 0x3D, 0x48, 0x00, 0xC9, 0x44, 0x02, 0x00}); + + // Boiler -> Thermostat, UBAParameterWW(0x33), telegram: 08 97 33 00 23 24 (#data=2) + uart_telegram({0x08, 0x90, 0x33, 0x00, 0x23, 0x24}); + + // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) + uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + + // Thermostat 0x2A5 for HC1 + uart_telegram({0x10, 00, 0xFF, 00, 01, 0xA5, 0x80, 00, 01, 0x30, 0x28, 00, 0x30, 0x28, 01, 0x54, + 03, 03, 01, 01, 0x54, 02, 0xA8, 00, 00, 0x11, 01, 03, 0xFF, 0xFF, 00}); + + return true; + } + if (strcmp(command, "gateway") == 0) { EMSESP::logger().info(F("Testing gateway...")); @@ -66,7 +90,7 @@ bool Test::run_test(const char * command, int8_t id) { rx_telegram({0x08, 0x00, 0x07, 0x00, 0x09, 01, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, 00}); // add thermostat - Thermostat: RC300/RC310/Moduline 3000/CW400/Sense II (DeviceID:0x10, ProductID:158, Version:03.03) ** master device ** - add_device(0x10, 158); // Nefit Trendline + add_device(0x10, 158); // RC310 // simulate incoming telegram // Thermostat(0x10) -> 48(0x48), ?(0x26B), data: 6B 08 4F 00 00 00 02 00 00 00 02 00 03 00 03 00 03 @@ -77,7 +101,7 @@ bool Test::run_test(const char * command, int8_t id) { if (strcmp(command, "boiler") == 0) { EMSESP::logger().info(F("Testing boiler...")); - add_device(0x08, 123); // Nefit Trendline // TODO + add_device(0x08, 123); // Nefit Trendline // UBAuptime uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); From 6ae61d742fb7d09f3538b6a74fac6d3698a44353 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 15:23:35 +0100 Subject: [PATCH 080/225] formatting --- src/emsesp.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 89ba830f..896139bf 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -985,9 +985,9 @@ void EMSESP::loop() { rxservice_.loop(); // process any incoming Rx telegrams shower_.loop(); // check for shower on/off dallassensor_.loop(); // this will also send out via MQTT - publish_all_loop(); - mqtt_.loop(); // sends out anything in the queue via MQTT - console_.loop(); // telnet/serial console + publish_all_loop(); // See which topics need publishing to MQTT and queue them + mqtt_.loop(); // sends out anything in the MQTT queue + console_.loop(); // telnet/serial console // force a query on the EMS devices to fetch latest data at a set interval (1 min) if ((uuid::get_uptime() - last_fetch_ > EMS_FETCH_FREQUENCY)) { From b782993eb4225e72704e7b98e86395df3804b628 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Nov 2020 17:28:27 +0100 Subject: [PATCH 081/225] fix display or direction in pretty telegram --- src/emsesp.cpp | 2 +- src/telegram.cpp | 9 +++++---- src/telegram.h | 1 + 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 896139bf..88015b0f 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -471,7 +471,7 @@ std::string EMSESP::pretty_telegram(std::shared_ptr telegram) { type_name = read_flash_string(F("?")); } - if (telegram->dest & 0x80) { + if (telegram->operation == Telegram::Operation::RX_READ) { direction = read_flash_string(F("<-")); } else { direction = read_flash_string(F("->")); diff --git a/src/telegram.cpp b/src/telegram.cpp index 4fb9e78a..350621e0 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -159,9 +159,10 @@ void RxService::add(uint8_t * data, uint8_t length) { } // src, dest and offset are always in fixed positions - uint8_t src = data[0] & 0x7F; // strip MSB (HT3 adds it) - uint8_t dest = data[1] & 0x7F; // strip MSB, don't care if its read or write for processing - uint8_t offset = data[3]; // offset is always 4th byte + uint8_t src = data[0] & 0x7F; // strip MSB (HT3 adds it) + uint8_t dest = data[1] & 0x7F; // strip MSB, don't care if its read or write for processing + uint8_t offset = data[3]; // offset is always 4th byte + uint8_t operation = (data[1] & 0x80) ? Telegram::Operation::RX_READ : Telegram::Operation::RX; uint16_t type_id; uint8_t * message_data; // where the message block starts @@ -212,7 +213,7 @@ void RxService::add(uint8_t * data, uint8_t length) { src = EMSESP::check_master_device(src, type_id, true); // create the telegram - auto telegram = std::make_shared(Telegram::Operation::RX, src, dest, type_id, offset, message_data, message_length); + auto telegram = std::make_shared(operation, src, dest, type_id, offset, message_data, message_length); // check if queue is full, if so remove top item to make space if (rx_telegrams_.size() >= MAX_RX_TELEGRAMS) { diff --git a/src/telegram.h b/src/telegram.h index 52a71bd9..e438d784 100644 --- a/src/telegram.h +++ b/src/telegram.h @@ -74,6 +74,7 @@ class Telegram { enum Operation : uint8_t { NONE = 0, RX, + RX_READ, TX_RAW, TX_READ, TX_WRITE, From fdaddcdbdd708bed69f0a568754d6d03ad4d5498 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Nov 2020 17:30:15 +0100 Subject: [PATCH 082/225] json size of ha-sensors --- src/mqtt.cpp | 2 +- src/mqtt.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index eb0601eb..da80f71d 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -719,7 +719,7 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons snprintf_P(topic, sizeof(topic), PSTR("homeassistant/binary_sensor/ems-esp/%s/config"), entity); // queue MQTT publish - publish(topic, doc.as()); + publish_retain(topic, doc.as(), true); } // HA config for a normal 'sensor' type diff --git a/src/mqtt.h b/src/mqtt.h index faf8c8f0..4932e9f1 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -38,7 +38,7 @@ using uuid::console::Shell; -#define EMSESP_MAX_JSON_SIZE_HA_CONFIG 256 // for small HA config payloads +#define EMSESP_MAX_JSON_SIZE_HA_CONFIG 384 // for small HA config payloads #define EMSESP_MAX_JSON_SIZE_SMALL 384 // for smaller json docs when using StaticJsonDocument #define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument #define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument From fe67e785f5cd2f62ae686dcd65629d2f2015042b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 15 Nov 2020 17:31:14 +0100 Subject: [PATCH 083/225] fix rc300 heatingcurve #610 --- CHANGELOG_LATEST.md | 2 +- src/devices/thermostat.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 025954be..a5e60640 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -3,7 +3,7 @@ ### Added - function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts - SM100 pump working time and energy units -- heating curve parameters for RC300 +- heating curve parameters for RC300 (fixed) - `wwonetime` for RC300 thermostat ### Fixed diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index fd19f6ac..17c1c1ab 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -773,6 +773,16 @@ std::shared_ptr Thermostat::heating_circuit(std::sha } } + // not found, search heating_curve message types + if (hc_num == 0) { + for (uint8_t i = 0; i < curve_typeids.size(); i++) { + if (curve_typeids[i] == telegram->type_id) { + hc_num = i + 1; + break; + } + } + } + // not found, search timer message types if (hc_num == 0) { for (uint8_t i = 0; i < timer_typeids.size(); i++) { From 4bfdb017b92082bb4f4fda00249684fe9ce4fe7e Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 17:51:18 +0100 Subject: [PATCH 084/225] prevent double subscriptions when mqtt connecting --- src/mqtt.cpp | 40 ++++++++++++++++++++++++---------------- src/mqtt.h | 1 + 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index eb0601eb..9419ede2 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -41,6 +41,7 @@ std::vector Mqtt::mqtt_subfunctions_; uint16_t Mqtt::mqtt_publish_fails_ = 0; bool Mqtt::connecting_ = false; +uint8_t Mqtt::connectcount_ = 0; uint16_t Mqtt::mqtt_message_id_ = 0; std::list Mqtt::mqtt_messages_; char will_topic_[Mqtt::MQTT_TOPIC_MAX_SIZE]; // because MQTT library keeps only char pointer @@ -109,6 +110,7 @@ void Mqtt::resubscribe() { } for (const auto & mqtt_subfunction : mqtt_subfunctions_) { + LOG_INFO("got %s", mqtt_subfunction.topic_.c_str()); // TODO queue_subscribe_message(mqtt_subfunction.topic_); } } @@ -469,27 +471,33 @@ void Mqtt::on_connect() { } connecting_ = true; - - LOG_INFO(F("MQTT connected")); - - // send info topic appended with the version information as JSON - StaticJsonDocument<90> doc; - doc["event"] = "start"; - doc["version"] = EMSESP_APP_VERSION; + connectcount_++; + + // first time to connect + if (connectcount_ == 1) { + // send info topic appended with the version information as JSON + StaticJsonDocument<90> doc; + doc["event"] = "start"; + doc["version"] = EMSESP_APP_VERSION; #ifndef EMSESP_STANDALONE - doc["ip"] = WiFi.localIP().toString(); + doc["ip"] = WiFi.localIP().toString(); #endif - publish(F_(info), doc.as()); - - publish_retain(F("status"), "online", true); // say we're alive to the Last Will topic, with retain on - - reset_publish_fails(); // reset fail count to 0 + publish(F_(info), doc.as()); - resubscribe(); // in case this is a reconnect, re-subscribe again to all MQTT topics + // create the EMS-ESP device in HA, which is MQTT retained + if (mqtt_format() == Format::HA) { + ha_status(); + } - if (mqtt_format() == Format::HA) { - ha_status(); // create a device in HA + publish_retain(F("status"), "online", true); // say we're alive to the Last Will topic, with retain on + } else { + // we doing a re-connect from a TCP break + // only re-subscribe again to all MQTT topics + resubscribe(); } + + LOG_INFO(F("MQTT connected")); + reset_publish_fails(); // reset fail count to 0 } // Home Assistant Discovery - the main master Device diff --git a/src/mqtt.h b/src/mqtt.h index faf8c8f0..1f49b5e6 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -218,6 +218,7 @@ class Mqtt { static bool connecting_; static uint16_t mqtt_publish_fails_; + static uint8_t connectcount_; // settings, copied over static std::string hostname_; From 293d49bd566fd2c19a6bafcefb3aee1a57f2abce Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 17:59:58 +0100 Subject: [PATCH 085/225] use EMSESP_MAX_JSON_SIZE_HA_CONFIG --- src/mqtt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 9196b95e..cbb569f2 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -695,7 +695,7 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = name; doc["uniq_id"] = entity; From 1f07c384408967180094430ee550b4b2d419d473 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 20:15:46 +0100 Subject: [PATCH 086/225] fix ha mqtt parsing hc number - #609 --- src/devices/thermostat.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 17c1c1ab..b488eba3 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -964,7 +964,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { // for each of the heating circuits std::string topic2(100, '\0'); snprintf_P(&topic2[0], topic2.capacity() + 1, PSTR("thermostat_hc%d"), hc_num); - register_mqtt_topic(topic2, [&](const char * m) { return thermostat_ha_cmd(m, hc_num); }); + register_mqtt_topic(topic2, [=](const char * m) { return thermostat_ha_cmd(m, hc_num); }); char hc_name[10]; // hc{1-4} strlcpy(hc_name, "hc", 10); @@ -1023,7 +1023,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { } // for HA specifically when receiving over MQTT in the thermostat topic -// it could be either a 'mode' or a float value +// it could be either a 'mode' or a float value for a temperature. we try brute force both and see which one works. // return true if it parses the message correctly bool Thermostat::thermostat_ha_cmd(const char * message, uint8_t hc_num) { // check if it's json. We know the message isn't empty From aeba36d2f09ef28bea61261de77dadc8f8921dd9 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 20:15:58 +0100 Subject: [PATCH 087/225] formatting --- src/mqtt.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index cbb569f2..2977b20d 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -103,14 +103,13 @@ void Mqtt::subscribe(const std::string & topic, mqtt_subfunction_p cb) { subscribe(0, topic, cb); // no device_id needed, if generic to EMS-ESP } -// resubscribe to all MQTT topics again +// resubscribe to all MQTT topics void Mqtt::resubscribe() { if (mqtt_subfunctions_.empty()) { return; } for (const auto & mqtt_subfunction : mqtt_subfunctions_) { - LOG_INFO("got %s", mqtt_subfunction.topic_.c_str()); // TODO queue_subscribe_message(mqtt_subfunction.topic_); } } From 1307a2e97baeccc63fd9318c9a3be2bddb7f44dd Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 15 Nov 2020 21:19:02 +0100 Subject: [PATCH 088/225] show retain in debug --- src/mqtt.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 2977b20d..d8202435 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -654,9 +654,10 @@ void Mqtt::process_queue() { // else try and publish it uint16_t packet_id = mqttClient_->publish(message->topic.c_str(), mqtt_qos_, message->retain, message->payload.c_str(), message->payload.size(), false, mqtt_message.id_); - LOG_DEBUG(F("Publishing topic %s (#%02d, attempt #%d, size %d, pid %d)"), + LOG_DEBUG(F("Publishing topic %s (#%02d, retain=%d, try#%d, size %d, pid %d)"), message->topic.c_str(), mqtt_message.id_, + message->retain, mqtt_message.retry_count_ + 1, message->payload.size(), packet_id); @@ -821,4 +822,5 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, delay(50); // enough time to send the short message out } + } // namespace emsesp From 052ee91be57ef812a6cfe98b36189d313bef8a82 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 14:13:35 +0100 Subject: [PATCH 089/225] Extending the test framework #611 --- src/console.cpp | 4 ++-- src/test/test.cpp | 34 +++++++++++++++++++++------------- src/test/test.h | 2 +- src/version.h | 2 +- 4 files changed, 25 insertions(+), 17 deletions(-) diff --git a/src/console.cpp b/src/console.cpp index ef81ffc8..6de5e153 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -476,9 +476,9 @@ void Console::load_standard_commands(unsigned int context) { flash_string_vector{F_(name_optional)}, [](Shell & shell, const std::vector & arguments) { if (arguments.size() == 0) { - Test::run_test_shell(shell, "default"); + Test::run_test(shell, "default"); } else { - Test::run_test_shell(shell, arguments.front()); + Test::run_test(shell, arguments.front()); } }); #endif diff --git a/src/test/test.cpp b/src/test/test.cpp index 350f3351..16c4f5ab 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -99,6 +99,25 @@ bool Test::run_test(const char * command, int8_t id) { return true; } + if (strcmp(command, "mixer") == 0) { + EMSESP::logger().info(F("Testing mixer...")); + + // add controller + add_device(0x09, 114); + + add_device(0x28, 160); // MM100, WWC + add_device(0x29, 161); // MM200, WWC + add_device(0x20, 160); // MM100 + + // WWC1 on 0x29 + uart_telegram({0xA9, 0x00, 0xFF, 0x00, 0x02, 0x32, 0x02, 0x6C, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); + + // WWC2 on 0x28 + uart_telegram({0xA8, 0x00, 0xFF, 0x00, 0x02, 0x31, 0x02, 0x35, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); + + return true; + } + if (strcmp(command, "boiler") == 0) { EMSESP::logger().info(F("Testing boiler...")); add_device(0x08, 123); // Nefit Trendline @@ -166,7 +185,7 @@ bool Test::run_test(const char * command, int8_t id) { } // used with the 'test' command, under su/admin -void Test::run_test_shell(uuid::console::Shell & shell, const std::string & command) { +void Test::run_test(uuid::console::Shell & shell, const std::string & command) { // switch to su shell.add_flags(CommandFlags::ADMIN); @@ -831,18 +850,7 @@ void Test::run_test_shell(uuid::console::Shell & shell, const std::string & comm EMSESP::rxservice_.ems_mask(EMSbus::EMS_MASK_BUDERUS); - // add controller - add_device(0x09, 114); - - add_device(0x28, 160); // MM100, WWC - add_device(0x29, 161); // MM200, WWC - add_device(0x20, 160); // MM100 - - // WWC1 on 0x29 - uart_telegram({0xA9, 0x00, 0xFF, 0x00, 0x02, 0x32, 0x02, 0x6C, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); - - // WWC2 on 0x28 - uart_telegram({0xA8, 0x00, 0xFF, 0x00, 0x02, 0x31, 0x02, 0x35, 0x00, 0x3C, 0x00, 0x3C, 0x3C, 0x46, 0x02, 0x03, 0x03, 0x00, 0x3C}); + run_test("mixer"); // check for error "No telegram type handler found for ID 0x255 (src 0x20)" uart_telegram({0xA0, 0x00, 0xFF, 0x00, 0x01, 0x55, 0x00, 0x1A}); diff --git a/src/test/test.h b/src/test/test.h index 80a10f2c..be85cf25 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -40,7 +40,7 @@ namespace emsesp { class Test { public: - static void run_test_shell(uuid::console::Shell & shell, const std::string & command); + static void run_test(uuid::console::Shell & shell, const std::string & command); static bool run_test(const char * command, int8_t id = 0); static void dummy_mqtt_commands(const char * message); static void rx_telegram(const std::vector & data); diff --git a/src/version.h b/src/version.h index 94e8574e..fff06e3d 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b2" +#define EMSESP_APP_VERSION "2.1.1b3" From 0a459552945635fb59e15e8868250adc9f0e3f76 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 14:16:03 +0100 Subject: [PATCH 090/225] serialize json to string stream as opposed to char buffer --- src/mqtt.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index d8202435..75000d58 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -695,6 +695,8 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } + return; + StaticJsonDocument doc; doc["name"] = name; @@ -789,7 +791,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, } new_name[0] = toupper(new_name[0]); // capitalize first letter - StaticJsonDocument doc; + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_HA_CONFIG); doc["name"] = new_name; doc["uniq_id"] = uniq.c_str(); @@ -806,10 +808,9 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, ids.add(ha_device); // convert json to string and publish immediately with retain forced to true - char payload_text[EMSESP_MAX_JSON_SIZE_HA_CONFIG]; + std::string payload_text; serializeJson(doc, payload_text); // convert json to string - - uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text); + uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text.c_str()); if (!packet_id) { LOG_ERROR(F("Failed to publish topic %s"), topic); } else { From 4da3fefc96d88040f932be7e5f2f2a5ac48f72eb Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 14:16:19 +0100 Subject: [PATCH 091/225] updated to 2.1.1b3 --- CHANGELOG_LATEST.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index a5e60640..32be5025 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -3,20 +3,21 @@ ### Added - function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts - SM100 pump working time and energy units -- heating curve parameters for RC300 (fixed) +- heating curve parameters for RC300 - `wwonetime` for RC300 thermostat +- expose test framework via api (#611) ### Fixed - mixer IPM pumpstatus -- Mixing devices in HA were incorrectly named +- mixer devices in HA were incorrectly named ### Changed - optimized MQTT for HA to reduce mem fragmentation issues - change syslog settings without reboot - HA-config split in smaller blocks - commands `fetch` and `publish [ha]` as call -- mqtt json package size +- mqtt json package sizes ### Removed -- old scripts +- old shell and python build scripts From 6e31caf14b95a8bddc490b9bdd766831495c22f1 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 14:27:08 +0100 Subject: [PATCH 092/225] reenable ha sensor --- src/mqtt.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 75000d58..c2ff70d2 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -695,8 +695,6 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } - return; - StaticJsonDocument doc; doc["name"] = name; From 26274da88ce56712febd011e107fce1f107ba2ce Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 14:27:38 +0100 Subject: [PATCH 093/225] force a new build --- CHANGELOG_LATEST.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 32be5025..3351067d 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -12,7 +12,7 @@ - mixer devices in HA were incorrectly named ### Changed -- optimized MQTT for HA to reduce mem fragmentation issues +- optimized MQTT for HA to reduce heap fragmentation issues - change syslog settings without reboot - HA-config split in smaller blocks - commands `fetch` and `publish [ha]` as call @@ -20,4 +20,3 @@ ### Removed - old shell and python build scripts - From 816e5224614cab9ad6ffdd8fa60030204bf9d08b Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 20:40:30 +0100 Subject: [PATCH 094/225] move bookean to Other section in form --- .../src/project/EMSESPSettingsController.tsx | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/interface/src/project/EMSESPSettingsController.tsx b/interface/src/project/EMSESPSettingsController.tsx index f883aead..e09808ff 100644 --- a/interface/src/project/EMSESPSettingsController.tsx +++ b/interface/src/project/EMSESPSettingsController.tsx @@ -192,19 +192,8 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) value="api_enabled" /> } - label="Enable WEB API (for write commands)" + label="Allow WEB API to write commands" /> - - on/off - true/false - 1/0 -

    Syslog @@ -270,6 +259,21 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) label="Enable ADC" />

    + + Other + + + on/off + true/false + 1/0 + +

    } variant="contained" color="primary" type="submit"> Save From dd9f69e9b6b7442ca72ebdf4937b7dc03c8990ed Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 20:46:34 +0100 Subject: [PATCH 095/225] selective restart of services after settings change --- src/WebSettingsService.cpp | 124 ++++++++++++++++++++++++++++++++----- src/WebSettingsService.h | 27 ++++++++ src/system.cpp | 49 ++++++++------- src/system.h | 35 +++++------ 4 files changed, 178 insertions(+), 57 deletions(-) diff --git a/src/WebSettingsService.cpp b/src/WebSettingsService.cpp index 263a10f6..6309f27c 100644 --- a/src/WebSettingsService.cpp +++ b/src/WebSettingsService.cpp @@ -21,6 +21,8 @@ namespace emsesp { +uint8_t WebSettings::flags_; + WebSettingsService::WebSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager) : _httpEndpoint(WebSettings::read, WebSettings::update, this, server, EMSESP_SETTINGS_SERVICE_PATH, securityManager) , _fsPersistence(WebSettings::read, WebSettings::update, this, fs, EMSESP_SETTINGS_FILE) { @@ -49,24 +51,86 @@ void WebSettings::read(WebSettings & settings, JsonObject & root) { } StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) { - settings.tx_mode = root["tx_mode"] | EMSESP_DEFAULT_TX_MODE; - settings.ems_bus_id = root["ems_bus_id"] | EMSESP_DEFAULT_EMS_BUS_ID; + std::string crc_before(40, '\0'); + std::string crc_after(40, '\0'); + reset_flags(); + + // tx_mode, rx and tx pins + snprintf_P(&crc_before[0], crc_before.capacity() + 1, PSTR("%d%d%d"), settings.tx_mode, settings.rx_gpio, settings.tx_gpio); + settings.tx_mode = root["tx_mode"] | EMSESP_DEFAULT_TX_MODE; + settings.rx_gpio = root["rx_gpio"] | EMSESP_DEFAULT_RX_GPIO; + settings.tx_gpio = root["tx_gpio"] | EMSESP_DEFAULT_TX_GPIO; + snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d%d"), settings.tx_mode, settings.rx_gpio, settings.tx_gpio); + if (crc_before != crc_after) { + Serial.printf("UART CHANGED (%s) (%s)\n\r", crc_before.c_str(), crc_after.c_str()); + add_flags(ChangeFlags::UART); + } + + // syslog + snprintf_P(&crc_before[0], + crc_before.capacity() + 1, + PSTR("%d%d%d%s"), + settings.syslog_enabled, + settings.syslog_level, + settings.syslog_mark_interval, + settings.syslog_host.c_str()); settings.syslog_enabled = root["syslog_enabled"] | EMSESP_DEFAULT_SYSLOG_ENABLED; settings.syslog_level = root["syslog_level"] | EMSESP_DEFAULT_SYSLOG_LEVEL; settings.syslog_mark_interval = root["syslog_mark_interval"] | EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL; settings.syslog_host = root["syslog_host"] | EMSESP_DEFAULT_SYSLOG_HOST; - settings.master_thermostat = root["master_thermostat"] | EMSESP_DEFAULT_MASTER_THERMOSTAT; - settings.shower_timer = root["shower_timer"] | EMSESP_DEFAULT_SHOWER_TIMER; - settings.shower_alert = root["shower_alert"] | EMSESP_DEFAULT_SHOWER_ALERT; - settings.rx_gpio = root["rx_gpio"] | EMSESP_DEFAULT_RX_GPIO; - settings.tx_gpio = root["tx_gpio"] | EMSESP_DEFAULT_TX_GPIO; - settings.dallas_gpio = root["dallas_gpio"] | EMSESP_DEFAULT_DALLAS_GPIO; - settings.dallas_parasite = root["dallas_parasite"] | EMSESP_DEFAULT_DALLAS_PARASITE; - settings.led_gpio = root["led_gpio"] | EMSESP_DEFAULT_LED_GPIO; - settings.hide_led = root["hide_led"] | EMSESP_DEFAULT_HIDE_LED; - settings.api_enabled = root["api_enabled"] | EMSESP_DEFAULT_API_ENABLED; - settings.bool_format = root["bool_format"] | EMSESP_DEFAULT_BOOL_FORMAT; - settings.analog_enabled = root["analog_enabled"] | EMSESP_DEFAULT_ANALOG_ENABLED; + snprintf_P(&crc_after[0], + crc_after.capacity() + 1, + PSTR("%d%d%d%s"), + settings.syslog_enabled, + settings.syslog_level, + settings.syslog_mark_interval, + settings.syslog_host.c_str()); + if (crc_before != crc_after) { + add_flags(ChangeFlags::SYSLOG); + } + + // other + snprintf_P(&crc_before[0], crc_before.capacity() + 1, PSTR("%d%d"), settings.bool_format, settings.analog_enabled); + settings.bool_format = root["bool_format"] | EMSESP_DEFAULT_BOOL_FORMAT; + settings.analog_enabled = root["analog_enabled"] | EMSESP_DEFAULT_ANALOG_ENABLED; + snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d"), settings.bool_format, settings.analog_enabled); + if (crc_before != crc_after) { + add_flags(ChangeFlags::OTHER); + } + + // dallas + snprintf_P(&crc_before[0], crc_before.capacity() + 1, PSTR("%d%d"), settings.dallas_gpio, settings.dallas_parasite); + settings.dallas_gpio = root["dallas_gpio"] | EMSESP_DEFAULT_DALLAS_GPIO; + settings.dallas_parasite = root["dallas_parasite"] | EMSESP_DEFAULT_DALLAS_PARASITE; + snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d"), settings.dallas_gpio, settings.dallas_parasite); + if (crc_before != crc_after) { + add_flags(ChangeFlags::DALLAS); + } + + // shower + snprintf_P(&crc_before[0], crc_before.capacity() + 1, PSTR("%d%d"), settings.shower_timer, settings.shower_alert); + settings.shower_timer = root["shower_timer"] | EMSESP_DEFAULT_SHOWER_TIMER; + settings.shower_alert = root["shower_alert"] | EMSESP_DEFAULT_SHOWER_ALERT; + snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d"), settings.shower_timer, settings.shower_alert); + if (crc_before != crc_after) { + add_flags(ChangeFlags::SHOWER); + } + + // led + snprintf_P(&crc_before[0], crc_before.capacity() + 1, PSTR("%d%d"), settings.led_gpio, settings.hide_led); + settings.led_gpio = root["led_gpio"] | EMSESP_DEFAULT_LED_GPIO; + settings.hide_led = root["hide_led"] | EMSESP_DEFAULT_HIDE_LED; + snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d"), settings.led_gpio, settings.hide_led); + if (crc_before != crc_after) { + add_flags(ChangeFlags::LED); + } + + // these both need reboots to be applied + settings.ems_bus_id = root["ems_bus_id"] | EMSESP_DEFAULT_EMS_BUS_ID; + settings.master_thermostat = root["master_thermostat"] | EMSESP_DEFAULT_MASTER_THERMOSTAT; + + // doesn't need any follow-up actions + settings.api_enabled = root["api_enabled"] | EMSESP_DEFAULT_API_ENABLED; return StateUpdateResult::CHANGED; } @@ -74,9 +138,35 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) // this is called after any of the settings have been persisted to the filesystem // either via the Web UI or via the Console void WebSettingsService::onUpdate() { - EMSESP::shower_.start(); - EMSESP::dallassensor_.start(); - System::init(); + if (WebSettings::has_flags(WebSettings::ChangeFlags::SHOWER)) { + // EMSESP::logger().info(F("shower changed!")); + EMSESP::shower_.start(); + } + + if (WebSettings::has_flags(WebSettings::ChangeFlags::DALLAS)) { + // EMSESP::logger().info(F("dallas changed!")); + EMSESP::dallassensor_.start(); + } + + if (WebSettings::has_flags(WebSettings::ChangeFlags::UART)) { + // EMSESP::logger().info(F("uart changed!")); + EMSESP::init_tx(); + } + + if (WebSettings::has_flags(WebSettings::ChangeFlags::SYSLOG)) { + // EMSESP::logger().info(F("syslog changed!")); + System::syslog_init(); + } + + if (WebSettings::has_flags(WebSettings::ChangeFlags::OTHER)) { + // EMSESP::logger().info(F("other changed!")); + System::other_init(); + } + + if (WebSettings::has_flags(WebSettings::ChangeFlags::LED)) { + // EMSESP::logger().info(F("led changed!")); + System::led_init(); + } } void WebSettingsService::begin() { diff --git a/src/WebSettingsService.h b/src/WebSettingsService.h index 412c6ee0..bf7b9373 100644 --- a/src/WebSettingsService.h +++ b/src/WebSettingsService.h @@ -84,6 +84,33 @@ class WebSettings { static void read(WebSettings & settings, JsonObject & root); static StateUpdateResult update(JsonObject & root, WebSettings & settings); + + enum ChangeFlags : uint8_t { + + NONE = 0, + UART = (1 << 0), + SYSLOG = (1 << 1), + OTHER = (1 << 2), + DALLAS = (1 << 3), + SHOWER = (1 << 4), + LED = (1 << 5) + + }; + + static void add_flags(uint8_t flags) { + flags_ |= flags; + } + + static bool has_flags(uint8_t flags) { + return (flags_ & flags) == flags; + } + + static void reset_flags() { + flags_ = ChangeFlags::NONE; + } + + private: + static uint8_t flags_; }; class WebSettingsService : public StatefulService { diff --git a/src/system.cpp b/src/system.cpp index 205f8f88..0c0e5436 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -35,7 +35,6 @@ uuid::syslog::SyslogService System::syslog_; // init statics uint32_t System::heap_start_ = 0; -int System::reset_counter_ = 0; bool System::upload_status_ = false; bool System::hide_led_ = false; uint8_t System::led_gpio_ = 0; @@ -43,11 +42,6 @@ uint16_t System::analog_ = 0; bool System::analog_enabled_ = false; bool System::syslog_enabled_ = false; std::string System::hostname_; -int8_t System::syslog_level_ = -1; -uint32_t System::syslog_mark_interval_ = 0; -String System::syslog_host_; - - // send on/off to a gpio pin // value: true = HIGH, false = LOW @@ -91,6 +85,7 @@ bool System::command_publish(const char * value, const int8_t id) { return true; } } + EMSESP::publish_all(); // ignore value and id LOG_INFO(F("Publishing all data to MQTT")); return true; @@ -147,6 +142,10 @@ uint8_t System::free_mem() { } void System::syslog_init() { + int8_t syslog_level_; + uint32_t syslog_mark_interval_; + String syslog_host_; + // fetch settings EMSESP::webSettingsService.read([&](WebSettings & settings) { syslog_enabled_ = settings.syslog_enabled; @@ -156,24 +155,26 @@ void System::syslog_init() { }); #ifndef EMSESP_STANDALONE - if (!syslog_enabled_) { - syslog_.log_level((uuid::log::Level)-1); - syslog_.mark_interval(0); - syslog_.destination((IPAddress)((uint32_t)0)); - return; - } - - syslog_.start(); // syslog service re-start - // configure syslog + // check for empty hostname IPAddress addr; if (!addr.fromString(syslog_host_.c_str())) { - addr = (uint32_t)0; + syslog_enabled_ = false; + } + + if (!syslog_enabled_) { + // syslog_.log_level((uuid::log::Level)-1); // in case service is still running, this flushes the queue + return; } + + // start & configure syslog + syslog_.start(); syslog_.log_level((uuid::log::Level)syslog_level_); syslog_.mark_interval(syslog_mark_interval_); syslog_.destination(addr); EMSESP::esp8266React.getWiFiSettingsService()->read([&](WiFiSettings & wifiSettings) { syslog_.hostname(wifiSettings.hostname.c_str()); }); + + EMSESP::logger().info(F("Syslog started")); #endif } @@ -206,19 +207,23 @@ void System::start() { #endif }); - init(); } -// init stuff. This is called when settings are changed in the web -void System::init() { - set_led(); // init LED - +void System::other_init() { // set the boolean format used for rendering booleans EMSESP::webSettingsService.read([&](WebSettings & settings) { Helpers::bool_format(settings.bool_format); analog_enabled_ = settings.analog_enabled; }); +} + +// init stuff. This is called when settings are changed in the web +void System::init() { + led_init(); // init LED + + other_init(); + syslog_init(); // init SysLog EMSESP::esp8266React.getWiFiSettingsService()->read([&](WiFiSettings & settings) { hostname(settings.hostname.c_str()); }); @@ -227,7 +232,7 @@ void System::init() { } // set the LED to on or off when in normal operating mode -void System::set_led() { +void System::led_init() { EMSESP::webSettingsService.read([&](WebSettings & settings) { hide_led_ = settings.hide_led; led_gpio_ = settings.led_gpio; diff --git a/src/system.h b/src/system.h index 7a5caad0..ffdeb48a 100644 --- a/src/system.h +++ b/src/system.h @@ -63,9 +63,11 @@ class System { static void upload_status(bool in_progress); static bool upload_status(); static void show_mem(const char * note); - static void set_led(); - static void init(); - static void syslog_init(); + + static void init(); + static void led_init(); + static void syslog_init(); + static void other_init(); bool check_upgrade(); void send_heartbeat(); @@ -104,23 +106,20 @@ class System { static void wifi_reconnect(); static int8_t wifi_quality(); - bool system_healthy_ = false; - uint32_t led_flash_speed_ = LED_WARNING_BLINK_FAST; // default boot flashes quickly - static uint32_t heap_start_; - static int reset_counter_; - uint32_t last_heartbeat_ = 0; - static bool upload_status_; // true if we're in the middle of a OTA firmware upload - static uint16_t analog_; - static std::string hostname_; + bool system_healthy_ = false; + uint32_t led_flash_speed_ = LED_WARNING_BLINK_FAST; // default boot flashes quickly + uint32_t last_heartbeat_ = 0; + + static bool upload_status_; // true if we're in the middle of a OTA firmware upload + static uint32_t heap_start_; + static uint16_t analog_; // settings - static bool hide_led_; - static bool syslog_enabled_; - static int8_t syslog_level_; - static uint32_t syslog_mark_interval_; - static String syslog_host_; - static uint8_t led_gpio_; - static bool analog_enabled_; + static std::string hostname_; + static bool hide_led_; + static uint8_t led_gpio_; + static bool syslog_enabled_; + static bool analog_enabled_; }; } // namespace emsesp From 0cde2918cf6fbd1846fa1c324f3421c680efe951 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 21:15:15 +0100 Subject: [PATCH 096/225] rename system info -> settings and report -> info --- interface/src/project/EMSESPHelp.tsx | 6 +++--- src/locale_EN.h | 3 +-- src/system.cpp | 15 ++++++++------- src/system.h | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/interface/src/project/EMSESPHelp.tsx b/interface/src/project/EMSESPHelp.tsx index 4e3fcebc..5dbef581 100644 --- a/interface/src/project/EMSESPHelp.tsx +++ b/interface/src/project/EMSESPHelp.tsx @@ -9,8 +9,8 @@ import StarIcon from "@material-ui/icons/Star"; import ImportExportIcon from "@material-ui/icons/ImportExport"; import BugReportIcon from "@material-ui/icons/BugReportTwoTone"; +export const WebAPISystemSettings = window.location.origin + "/api?device=system&cmd=settings"; export const WebAPISystemInfo = window.location.origin + "/api?device=system&cmd=info"; -export const WebAPISystemReport = window.location.origin + "/api?device=system&cmd=report"; class EMSESPHelp extends Component { @@ -52,7 +52,7 @@ class EMSESPHelp extends Component { - To export your system settings {'click here'} + To list your system settings {'click here'} @@ -62,7 +62,7 @@ class EMSESPHelp extends Component { - To create a report of the current EMS-ESP status (for troubleshooting) {'click here'} + To create a report of the current EMS-ESP status {'click here'} diff --git a/src/locale_EN.h b/src/locale_EN.h index 128809a9..e1ef6911 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -19,7 +19,6 @@ // common words MAKE_PSTR_WORD(exit) MAKE_PSTR_WORD(help) -MAKE_PSTR_WORD(settings) MAKE_PSTR_WORD(log) MAKE_PSTR_WORD(logout) MAKE_PSTR_WORD(enabled) @@ -77,8 +76,8 @@ MAKE_PSTR_WORD(data) MAKE_PSTR_WORD(command) MAKE_PSTR_WORD(commands) MAKE_PSTR_WORD(info) -MAKE_PSTR_WORD(report) MAKE_PSTR_WORD(test) +MAKE_PSTR_WORD(settings) // devices MAKE_PSTR_WORD(boiler) diff --git a/src/system.cpp b/src/system.cpp index 0c0e5436..df907a2d 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -200,7 +200,7 @@ void System::start() { Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(publish), System::command_publish); Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(fetch), System::command_fetch); Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(info), System::command_info); - Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(report), System::command_report); + Command::add_with_json(EMSdevice::DeviceType::SYSTEM, F_(settings), System::command_settings); #if defined(EMSESP_TEST) Command::add(EMSdevice::DeviceType::SYSTEM, settings.ems_bus_id, F_(test), System::command_test); @@ -902,9 +902,9 @@ bool System::check_upgrade() { } // export all settings to JSON text -// http://ems-esp/api?device=system&cmd=info +// http://ems-esp/api?device=system&cmd=settings // value and id are ignored -bool System::command_info(const char * value, const int8_t id, JsonObject & json) { +bool System::command_settings(const char * value, const int8_t id, JsonObject & json) { #ifdef EMSESP_STANDALONE json["test"] = "testing system info command"; #else @@ -977,7 +977,7 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & json JsonObject node = json.createNestedObject("Settings"); node["tx_mode"] = settings.tx_mode; node["ems_bus_id"] = settings.ems_bus_id; - node["syslog_enabled"] = settings.syslog_enabled; + node["syslog_enabled"] = Helpers::render_boolean(s, settings.syslog_enabled); node["syslog_level"] = settings.syslog_level; node["syslog_mark_interval"] = settings.syslog_mark_interval; node["syslog_host"] = settings.syslog_host; @@ -999,9 +999,9 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & json return true; } -// export debug information -// http://ems-esp/api?device=system&cmd=report -bool System::command_report(const char * value, const int8_t id, JsonObject & json) { +// export status information including some basic settings +// http://ems-esp/api?device=system&cmd=info +bool System::command_info(const char * value, const int8_t id, JsonObject & json) { JsonObject node; node = json.createNestedObject("System"); @@ -1043,6 +1043,7 @@ bool System::command_report(const char * value, const int8_t id, JsonObject & js node["api_enabled"] = Helpers::render_boolean(s, settings.api_enabled); node["bool_format"] = settings.bool_format; node["analog_enabled"] = Helpers::render_boolean(s, settings.analog_enabled); + // node["mqtt_enabled"] = Helpers::render_boolean(s, settings.; // TODO }); node = json.createNestedObject("Status"); diff --git a/src/system.h b/src/system.h index ffdeb48a..040def67 100644 --- a/src/system.h +++ b/src/system.h @@ -53,7 +53,7 @@ class System { static bool command_publish(const char * value, const int8_t id); static bool command_fetch(const char * value, const int8_t id); static bool command_info(const char * value, const int8_t id, JsonObject & json); - static bool command_report(const char * value, const int8_t id, JsonObject & json); + static bool command_settings(const char * value, const int8_t id, JsonObject & json); #if defined(EMSESP_TEST) static bool command_test(const char * value, const int8_t id); From 6c513140f946872550b4bddf4e837b3e40099a26 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 21:16:42 +0100 Subject: [PATCH 097/225] auto formatting --- src/devices/boiler.cpp | 4 ++-- src/devices/mixer.cpp | 6 ++++-- src/devices/thermostat.h | 21 ++++++++++++++++++++- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index ea1a053d..f6b6b391 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -143,11 +143,11 @@ void Boiler::register_mqtt_ha_config() { // create the config topics for Home Assistant MQTT Discovery // for each of the ww elements void Boiler::register_mqtt_ha_config_ww() { - if (!Mqtt::connected()) { return; } - // ww + + // ww Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSelTemp), this->device_type(), "wWSelTemp", F_(degrees), F_(iconcruise)); Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSetTemp), this->device_type(), "wWSetTemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWDisinfectionTemp), this->device_type(), "wWDisinfectionTemp", F_(degrees), F_(icontemperature)); diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index b399c9ff..c95f1a06 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -63,7 +63,8 @@ void Mixer::device_info_web(JsonArray & root) { // fetch the values into a JSON document StaticJsonDocument doc; - JsonObject json = doc.to(); + JsonObject json = doc.to(); + if (!export_values_format(Mqtt::Format::SINGLE, json)) { return; // empty } @@ -102,7 +103,8 @@ void Mixer::show_values(uuid::console::Shell & shell) { // fetch the values into a JSON document StaticJsonDocument doc; - JsonObject json = doc.to(); + JsonObject json = doc.to(); + if (!export_values_format(Mqtt::Format::SINGLE, json)) { return; // empty } diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index 2e8999a1..e180f7d1 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -88,7 +88,26 @@ class Thermostat : public EMSdevice { uint8_t get_mode(uint8_t flags) const; uint8_t get_mode_type(uint8_t flags) const; - enum Mode : uint8_t { UNKNOWN, OFF, MANUAL, AUTO, DAY, NIGHT, HEAT, NOFROST, ECO, HOLIDAY, COMFORT, OFFSET, DESIGN, SUMMER, FLOWOFFSET, MINFLOW, MAXFLOW, ROOMINFLUENCE }; + enum Mode : uint8_t { + UNKNOWN, + OFF, + MANUAL, + AUTO, + DAY, + NIGHT, + HEAT, + NOFROST, + ECO, + HOLIDAY, + COMFORT, + OFFSET, + DESIGN, + SUMMER, + FLOWOFFSET, + MINFLOW, + MAXFLOW, + ROOMINFLUENCE + }; // for sorting based on hc number friend inline bool operator<(const std::shared_ptr & lhs, const std::shared_ptr & rhs) { From 802f85787531a3a405276a22b205fa40af4d5039 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 21:17:02 +0100 Subject: [PATCH 098/225] system command changes --- CHANGELOG_LATEST.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 3351067d..8b9d8c04 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -17,6 +17,9 @@ - HA-config split in smaller blocks - commands `fetch` and `publish [ha]` as call - mqtt json package sizes +- renamed the command system info (which showed settings) to `settings` +- renamed the command system report (Which dumped debug info) to `info` +- Changing settings on web restarts selected services only ### Removed - old shell and python build scripts From 20f208548f4cb79858fd1b92242dbb1e95ee98ad Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 21:33:16 +0100 Subject: [PATCH 099/225] cleanup left over debug code --- src/WebSettingsService.cpp | 1 - src/system.cpp | 1 - 2 files changed, 2 deletions(-) diff --git a/src/WebSettingsService.cpp b/src/WebSettingsService.cpp index 6309f27c..caac97a7 100644 --- a/src/WebSettingsService.cpp +++ b/src/WebSettingsService.cpp @@ -62,7 +62,6 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) settings.tx_gpio = root["tx_gpio"] | EMSESP_DEFAULT_TX_GPIO; snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d%d"), settings.tx_mode, settings.rx_gpio, settings.tx_gpio); if (crc_before != crc_after) { - Serial.printf("UART CHANGED (%s) (%s)\n\r", crc_before.c_str(), crc_after.c_str()); add_flags(ChangeFlags::UART); } diff --git a/src/system.cpp b/src/system.cpp index df907a2d..c4ba8a9f 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -1043,7 +1043,6 @@ bool System::command_info(const char * value, const int8_t id, JsonObject & json node["api_enabled"] = Helpers::render_boolean(s, settings.api_enabled); node["bool_format"] = settings.bool_format; node["analog_enabled"] = Helpers::render_boolean(s, settings.analog_enabled); - // node["mqtt_enabled"] = Helpers::render_boolean(s, settings.; // TODO }); node = json.createNestedObject("Status"); From cabd5129f9eef74defbe0babb0abfada67f41dcc Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 21:33:39 +0100 Subject: [PATCH 100/225] renamed system report to info --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- .github/ISSUE_TEMPLATE/questions---troubleshooting.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 41f32efa..7a3704ca 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -29,7 +29,7 @@ assignees: '' *If applicable, add screenshots to help explain your problem.* **Device information** -*Copy-paste here the information as it is outputted by the device. You can get this information by from http://ems-esp.local/api?device=system&cmd=report.* +*Copy-paste here the information as it is outputted by the device. You can get this information by from http://ems-esp.local/api?device=system&cmd=info* **Additional context** *Add any other context about the problem here.* diff --git a/.github/ISSUE_TEMPLATE/questions---troubleshooting.md b/.github/ISSUE_TEMPLATE/questions---troubleshooting.md index 2f608d24..b2cde7b7 100644 --- a/.github/ISSUE_TEMPLATE/questions---troubleshooting.md +++ b/.github/ISSUE_TEMPLATE/questions---troubleshooting.md @@ -23,7 +23,7 @@ assignees: '' *If applicable, add screenshots to help explain your problem.* **Device information** -*Copy-paste here the information as it is outputted by the device. You can get this information from http://ems-esp.local/api?device=system&cmd=report.* +*Copy-paste here the information as it is outputted by the device. You can get this information from http://ems-esp.local/api?device=system&cmd=info* **Additional context** *Add any other context about the problem here.* From f45a208ce4ebe25b36ca5f48e945e1d9c0ab554c Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 16 Nov 2020 21:34:29 +0100 Subject: [PATCH 101/225] text updates --- CHANGELOG_LATEST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 8b9d8c04..ec308a7e 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -19,7 +19,7 @@ - mqtt json package sizes - renamed the command system info (which showed settings) to `settings` - renamed the command system report (Which dumped debug info) to `info` -- Changing settings on web restarts selected services only +- Changing settings via web restarts only selected services ### Removed - old shell and python build scripts From d260ea514b068c815e07eb5d2cc73e4c8cb75b9a Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 12:25:21 +0100 Subject: [PATCH 102/225] set empty syslog settings to flush queue --- src/system.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/system.cpp b/src/system.cpp index c4ba8a9f..a20a1765 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -162,8 +162,11 @@ void System::syslog_init() { syslog_enabled_ = false; } + // in case service is still running, this flushes the queue - https://github.com/proddy/EMS-ESP/issues/496 if (!syslog_enabled_) { - // syslog_.log_level((uuid::log::Level)-1); // in case service is still running, this flushes the queue + syslog_.log_level((uuid::log::Level)-1); + syslog_.mark_interval(0); + syslog_.destination((IPAddress)((uint32_t)0)); return; } From aa7b37e006d613746cf14184d87bfaa317271862 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 12:25:34 +0100 Subject: [PATCH 103/225] add comment --- makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/makefile b/makefile index c7e1da37..5f780ba0 100644 --- a/makefile +++ b/makefile @@ -1,3 +1,7 @@ +# +# GNUMakefile for EMS-ESP +# (c) 2020 Paul Derbyshire +# NUMJOBS=${NUMJOBS:-" -j4 "} MAKEFLAGS+="j " #---------------------------------------------------------------------- @@ -136,4 +140,3 @@ help: @echo $(OUTPUT) -include $(DEPS) - From 1df21f25fa2559972b369aeffd02a20531cd7ca7 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 12:25:55 +0100 Subject: [PATCH 104/225] rename pio targets --- .github/workflows/build_firmware.yml | 4 ++-- .github/workflows/release_main.yml | 4 ++-- debug_esp32_pio_local.ini | 25 ++++++++++++++++++++++ debug_pio_local.ini | 31 ---------------------------- example_esp8266_pio_local.ini | 18 ++++++++++++++++ example_pio_local.ini | 25 ---------------------- platformio.ini | 14 +++++++------ 7 files changed, 55 insertions(+), 66 deletions(-) create mode 100644 debug_esp32_pio_local.ini delete mode 100644 debug_pio_local.ini create mode 100644 example_esp8266_pio_local.ini delete mode 100644 example_pio_local.ini diff --git a/.github/workflows/build_firmware.yml b/.github/workflows/build_firmware.yml index 4444e531..79e0e4ec 100644 --- a/.github/workflows/build_firmware.yml +++ b/.github/workflows/build_firmware.yml @@ -41,8 +41,8 @@ jobs: - name: Build images run: | - platformio run -e esp8266 - platformio run -e esp32 + platformio run -e esp8266-ci + platformio run -e esp32-ci - name: Delete uses: dev-drprasad/delete-tag-and-release@v0.1.2 diff --git a/.github/workflows/release_main.yml b/.github/workflows/release_main.yml index d89e2f30..c43c0cda 100644 --- a/.github/workflows/release_main.yml +++ b/.github/workflows/release_main.yml @@ -36,8 +36,8 @@ jobs: - name: Build images run: | - platformio run -e esp8266 - platformio run -e esp32 + platformio run -e esp8266-ci + platformio run -e esp32-ci - name: Changelog run: cat RELEASENOTES.md CHANGELOG_LATEST.md > BODY.txt diff --git a/debug_esp32_pio_local.ini b/debug_esp32_pio_local.ini new file mode 100644 index 00000000..5fdf2b1d --- /dev/null +++ b/debug_esp32_pio_local.ini @@ -0,0 +1,25 @@ +; ESP32 with debugger +; do not build web +; builds with DEBUG and TEST + +[platformio] +default_envs = esp32 + +[env] +upload_port = COM3 + +; upload_protocol = espota +; upload_flags = +; --port=8266 +; --auth=ems-esp-neo +; upload_port = ems-esp.local + +[common] +debug_flags = -DEMSESP_DEBUG -DEMSESP_TEST -DEMSESP_FORCE_SERIAL + +[env:esp32] +monitor_filters = esp32_exception_decoder +debug_tool = esp-prog +debug_init_break = tbreak setup +build_type = debug +extra_scripts = diff --git a/debug_pio_local.ini b/debug_pio_local.ini deleted file mode 100644 index 89cbe9da..00000000 --- a/debug_pio_local.ini +++ /dev/null @@ -1,31 +0,0 @@ -[platformio] -; default_envs = esp32-local -default_envs = esp8266-local - -[env] -; upload_port = COM3 -upload_port = COM7 - -; upload_protocol = espota -; upload_flags = -; --port=8266 -; --auth=ems-esp-neo -; upload_port = ems-esp.local - -[common] -debug_flags = -DEMSESP_DEBUG - -[env:esp32-local] -monitor_filters = esp32_exception_decoder -debug_tool = esp-prog -debug_init_break = tbreak setup -build_type = debug -extra_scripts = - ; pre:scripts/build_interface.py - -[env:esp8266-local] -monitor_filters = esp8266_exception_decoder -extra_scripts = - ; pre:scripts/build_interface.py - scripts/main_script.py - diff --git a/example_esp8266_pio_local.ini b/example_esp8266_pio_local.ini new file mode 100644 index 00000000..b7a63ef6 --- /dev/null +++ b/example_esp8266_pio_local.ini @@ -0,0 +1,18 @@ +; ESP8266 +; local example the does not build the web UI + +[platformio] +default_envs = esp8266 + +[env] +; upload_port = COM3 + +upload_protocol = espota +upload_flags = + --port=8266 + --auth=ems-esp-neo +upload_port = ems-esp.local + +[env:esp8266] +extra_scripts = + scripts/main_script.py diff --git a/example_pio_local.ini b/example_pio_local.ini deleted file mode 100644 index 9cd8d72f..00000000 --- a/example_pio_local.ini +++ /dev/null @@ -1,25 +0,0 @@ -[platformio] -; default_envs = esp32-local -default_envs = esp8266-local - -[env] -; upload_port = COM3 -upload_port = COM7 - -; upload_protocol = espota -; upload_flags = -; --port=8266 -; --auth=ems-esp-neo -; upload_port = ems-esp.local - -[common] - -[env:esp32-local] -extra_scripts = - ; pre:scripts/build_interface.py - -[env:esp8266-local] -extra_scripts = - ; pre:scripts/build_interface.py - scripts/main_script.py - diff --git a/platformio.ini b/platformio.ini index 051069d0..e42dcbd8 100644 --- a/platformio.ini +++ b/platformio.ini @@ -1,8 +1,8 @@ ; PlatformIO Project Configuration File for EMS-ESP [platformio] -default_envs = esp8266-local -; default_envs = esp32-local +default_envs = esp8266 +; default_envs = esp32 # override any settings with your own local ones in pio_local.ini extra_configs = @@ -45,7 +45,8 @@ check_flags = cppcheck: --std=c++11 -v clangtidy: --checks=-*,clang-analyzer-*,performance-* -[env:esp8266] +; build for GitHub Actions CI +[env:esp8266-ci] extra_scripts = scripts/main_script.py scripts/rename_fw.py @@ -56,7 +57,8 @@ board_build.filesystem = littlefs board_build.f_cpu = 160000000L build_flags = ${common.build_flags} -[env:esp32] +; build for GitHub Actions CI +[env:esp32-ci] extra_scripts = scripts/rename_fw.py scripts/gzip_fw.py @@ -65,7 +67,7 @@ platform = espressif32 board_build.partitions = min_spiffs.csv build_flags = ${common.build_flags} -[env:esp8266-local] +[env:esp8266] extra_scripts = pre:scripts/build_interface.py scripts/main_script.py @@ -80,7 +82,7 @@ build_flags = ${common.build_flags} ${common.debug_flags} lib_ignore = AsyncTCP -[env:esp32-local] +[env:esp32] extra_scripts = pre:scripts/build_interface.py board = esp32dev From e2fa78584df2963f97091d5d35d92645b1dad9bb Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 12:26:25 +0100 Subject: [PATCH 105/225] mention syslog enable/disable --- CHANGELOG_LATEST.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index ec308a7e..a209762d 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -6,6 +6,7 @@ - heating curve parameters for RC300 - `wwonetime` for RC300 thermostat - expose test framework via api (#611) +- SysLog has enable/disable flag in WebUI ### Fixed - mixer IPM pumpstatus @@ -20,6 +21,7 @@ - renamed the command system info (which showed settings) to `settings` - renamed the command system report (Which dumped debug info) to `info` - Changing settings via web restarts only selected services +- renamed pio targets (esp8266-ci and esp32-ci for GitHub CI) ### Removed - old shell and python build scripts From 52e120aea21976d3f2912decd696972361968abd Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 18:12:29 +0100 Subject: [PATCH 106/225] minor updates to solar cfg - #616 --- CHANGELOG_LATEST.md | 1 + src/devices/solar.cpp | 60 +++++++++++++++++++++++-------------------- src/emsdevice.h | 6 ++--- 3 files changed, 35 insertions(+), 32 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index a209762d..e0bcd28b 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -7,6 +7,7 @@ - `wwonetime` for RC300 thermostat - expose test framework via api (#611) - SysLog has enable/disable flag in WebUI +- Add solar configuration telegrams (#616) [thanks @hpanther] ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index a43fd025..438e179c 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -39,7 +39,7 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const s register_telegram_type(0x07AA, F("SM100wwStatus"), false, [&](std::shared_ptr t) { process_SM100wwStatus(t); }); register_telegram_type(0x07AB, F("SM100wwCommand"), false, [&](std::shared_ptr t) { process_SM100wwCommand(t); }); } else { - register_telegram_type(EMS_TYPE_ParamCfg, F("ParamCfg"), false, [&](std::shared_ptr t) { process_SM100ParamCfg(t); }); + register_telegram_type(0xF9, F("ParamCfg"), false, [&](std::shared_ptr t) { process_SM100ParamCfg(t); }); register_telegram_type(0x0358, F("SM100SystemConfig"), true, [&](std::shared_ptr t) { process_SM100SystemConfig(t); }); register_telegram_type(0x035A, F("SM100SolarCircuitConfig"), true, [&](std::shared_ptr t) { process_SM100SolarCircuitConfig(t); }); register_telegram_type(0x0362, F("SM100Monitor"), true, [&](std::shared_ptr t) { process_SM100Monitor(t); }); @@ -217,7 +217,7 @@ bool Solar::export_values(JsonObject & json) { if (Helpers::hasValue(tank1MaxTempCurrent_)) { json["tank1MaxTempCurrent"] = tank1MaxTempCurrent_; } - + if (Helpers::hasValue(heatExchangerTemp_)) { json["heatExchangerTemp"] = (float)heatExchangerTemp_ / 10; } @@ -288,11 +288,11 @@ void Solar::process_SM10Monitor(std::shared_ptr telegram) { * e.g. B0 0B FF 00 02 58 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FF 00 FF 01 00 00 */ void Solar::process_SM100SystemConfig(std::shared_ptr telegram) { - changed_ |= telegram->read_value(heatTransferSystem_ , 5, 1); - changed_ |= telegram->read_value(externalTank_ , 9, 1); - changed_ |= telegram->read_value(thermalDisinfect_ , 10, 1); - changed_ |= telegram->read_value(heatMetering_ , 14, 1); - changed_ |= telegram->read_value(solarIsEnabled_ , 19, 1); + changed_ |= telegram->read_value(heatTransferSystem_, 5, 1); + changed_ |= telegram->read_value(externalTank_, 9, 1); + changed_ |= telegram->read_value(thermalDisinfect_, 10, 1); + changed_ |= telegram->read_value(heatMetering_, 14, 1); + changed_ |= telegram->read_value(solarIsEnabled_, 19, 1); } /* @@ -300,16 +300,16 @@ void Solar::process_SM100SystemConfig(std::shared_ptr telegram) * e.g. B0 0B FF 00 02 5A 64 05 00 58 14 01 01 32 64 00 00 00 5A 0C */ void Solar::process_SM100SolarCircuitConfig(std::shared_ptr telegram) { - changed_ |= telegram->read_value(collectorTempMax_ , 0, 1); - changed_ |= telegram->read_value(tank1MaxTempCurrent_ , 3, 1); - changed_ |= telegram->read_value(collectorTempMin_ , 4, 1); - changed_ |= telegram->read_value(solarPumpMode_ , 5, 1); - changed_ |= telegram->read_value(solarPumpMinRPM_ , 6, 1); + changed_ |= telegram->read_value(collectorTempMax_, 0, 1); + changed_ |= telegram->read_value(tank1MaxTempCurrent_, 3, 1); + changed_ |= telegram->read_value(collectorTempMin_, 4, 1); + changed_ |= telegram->read_value(solarPumpMode_, 5, 1); + changed_ |= telegram->read_value(solarPumpMinRPM_, 6, 1); changed_ |= telegram->read_value(solarPumpTurnoffDiff_, 7, 1); - changed_ |= telegram->read_value(solarPumpTurnonDiff_ , 8, 1); - changed_ |= telegram->read_value(solarPumpKick_ , 9, 1); - changed_ |= telegram->read_value(plainWaterMode_ , 10, 1); - changed_ |= telegram->read_value(doubleMatchFlow_ , 11, 1); + changed_ |= telegram->read_value(solarPumpTurnonDiff_, 8, 1); + changed_ |= telegram->read_value(solarPumpKick_, 9, 1); + changed_ |= telegram->read_value(plainWaterMode_, 10, 1); + changed_ |= telegram->read_value(doubleMatchFlow_, 11, 1); } /* process_SM100ParamCfg - type 0xF9 EMS 1.0 @@ -329,19 +329,18 @@ void Solar::process_SM100SolarCircuitConfig(std::shared_ptr tele */ void Solar::process_SM100ParamCfg(std::shared_ptr telegram) { uint16_t t_id; - uint8_t of; - int32_t min,def,max,cur; + uint8_t of; + int32_t min, def, max, cur; telegram->read_value(t_id, 1); telegram->read_value(of, 3); telegram->read_value(min, 5); telegram->read_value(def, 9); telegram->read_value(max, 13); telegram->read_value(cur, 17); - - LOG_DEBUG(F("SM100ParamCfg param=0x%04X, offset=%d, min=%d, default=%d, max=%d, current=%d"), - t_id, of, min, def, max, cur); + + // LOG_DEBUG(F("SM100ParamCfg param=0x%04X, offset=%d, min=%d, default=%d, max=%d, current=%d"), t_id, of, min, def, max, cur); } - + /* * SM100Monitor - type 0x0362 EMS+ - for MS/SM100 and MS/SM200 * e.g. B0 0B FF 00 02 62 00 77 01 D4 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 00 F9 80 00 80 9E - for heat exchanger temp @@ -378,11 +377,13 @@ void Solar::process_SM100wwTemperature(std::shared_ptr telegram) // changed_ |= telegram->read_value(wwTemp_5_, 8); // changed_ |= telegram->read_value(wwTemp_7_, 12); } + // SM100wwStatus - 0x07AA // Solar Module(0x2A) -> (0x00), (0x7AA), data: 64 00 04 00 03 00 28 01 0F void Solar::process_SM100wwStatus(std::shared_ptr telegram) { // changed_ |= telegram->read_value(wwPump_, 0); } + // SM100wwCommand - 0x07AB // Thermostat(0x10) -> Solar Module(0x2A), (0x7AB), data: 01 00 01 void Solar::process_SM100wwCommand(std::shared_ptr telegram) { @@ -444,7 +445,6 @@ void Solar::process_SM100CollectorConfig(std::shared_ptr telegra changed_ |= telegram->read_value(collector1Type_, 5, 1); } - /* * SM100Energy - type 0x038E EMS+ for energy readings * e.g. 30 00 FF 00 02 8E 00 00 00 00 00 00 06 C5 00 00 76 35 @@ -489,15 +489,19 @@ void Solar::process_ISM1Set(std::shared_ptr telegram) { changed_ |= telegram->read_value(setpoint_maxBottomTemp_, 6); } +// set temperature for tank bool Solar::set_SM100Tank1MaxTemp(const char * value, const int8_t id) { int temperature; - if(! Helpers::value2number(value, temperature)) return false; - tank1MaxTempCurrent_=temperature; - uint8_t data=(uint8_t) temperature; + if (!Helpers::value2number(value, temperature)) { + return false; + } + + // write value // 90 30 FF 03 02 5A 59 B3 - EMSdevice::write_command(0x35A, 0x03, &data, sizeof(data), 0); + // note: optionally add the validate to 0x035A which will pick up the adjusted tank1MaxTempCurrent_ + write_command(0x35A, 0x03, (uint8_t)temperature); + return true; } - } // namespace emsesp diff --git a/src/emsdevice.h b/src/emsdevice.h index 206eeb33..b2e2589f 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -234,14 +234,12 @@ class EMSdevice { UNKNOWN }; - // device IDs + // static device IDs static constexpr uint8_t EMS_DEVICE_ID_BOILER = 0x08; // fixed device_id for Master Boiler/UBA - static constexpr uint8_t EMS_DEVICE_ID_MODEM = 0x48; // gateways like the KM200 - // type IDs + // generic type IDs static constexpr uint16_t EMS_TYPE_VERSION = 0x02; // type ID for Version information. Generic across all EMS devices. static constexpr uint16_t EMS_TYPE_UBADevices = 0x07; // EMS connected devices - static constexpr uint16_t EMS_TYPE_ParamCfg = 0xF9; // EMS parameter min/default/max/current // device flags: The lower 4 bits hold the unique identifier, the upper 4 bits are used for specific flags static constexpr uint8_t EMS_DEVICE_FLAG_NONE = 0; From 45b55acc430f2610299890e08f70bb576cb52814 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 21:54:09 +0100 Subject: [PATCH 107/225] prevent HA climate component being created if there is no current room temp - #582 --- src/devices/thermostat.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index b488eba3..2819eb5a 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -691,6 +691,8 @@ bool Thermostat::ha_config(bool force) { if (!Mqtt::connected()) { return false; } + + // if force, reset registered flag for main controller and all heating circuits if (force) { for (const auto & hc : heating_circuits_) { hc->ha_registered(false); @@ -698,16 +700,20 @@ bool Thermostat::ha_config(bool force) { ha_registered(false); } + // set up the main controller if (!ha_registered()) { register_mqtt_ha_config(); ha_registered(true); return false; } - // check to see which heating circuits need publishing + // check to see which heating circuits need to be added as HA climate components + // but only if it's active and there is a real value for the current room temperature (https://github.com/proddy/EMS-ESP/issues/582) for (const auto & hc : heating_circuits_) { if (hc->is_active() && !hc->ha_registered()) { - register_mqtt_ha_config(hc->hc_num()); + if (Helpers::hasValue(hc->curr_roomTemp)) { + register_mqtt_ha_config(hc->hc_num()); + } hc->ha_registered(true); return false; } @@ -828,7 +834,7 @@ std::shared_ptr Thermostat::heating_circuit(std::sha } // publish config topic for HA MQTT Discovery for main thermostat values -// homeassistant/climate/ems-esp/thermostat/config +// homeassistant/sensor/ems-esp/thermostat/config void Thermostat::register_mqtt_ha_config() { StaticJsonDocument doc; doc["uniq_id"] = F("thermostat"); From 2c01d64e73646bbe64f4f50e27f7e35910160426 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 21:56:55 +0100 Subject: [PATCH 108/225] Prevent HA MQTT config messages for thermostat that has no 'currtemp' #582 --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index e0bcd28b..159c758d 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -12,6 +12,7 @@ ### Fixed - mixer IPM pumpstatus - mixer devices in HA were incorrectly named +- Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) ### Changed - optimized MQTT for HA to reduce heap fragmentation issues From 09aa236d2f4235dde3c6512373b889b96b645015 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 17 Nov 2020 22:33:37 +0100 Subject: [PATCH 109/225] heap frag optimizations --- src/mqtt.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index c2ff70d2..3a3acfb3 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -706,11 +706,11 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons EMSESP::webSettingsService.read([&](WebSettings & settings) { if (settings.bool_format == BOOL_FORMAT_ONOFF) { - doc[F("payload_on")] = F("on"); - doc[F("payload_off")] = F("off"); + doc[F("payload_on")] = "on"; + doc[F("payload_off")] = "off"; } else if (settings.bool_format == BOOL_FORMAT_TRUEFALSE) { - doc[F("payload_on")] = F("true"); - doc[F("payload_off")] = F("false"); + doc[F("payload_on")] = "true"; + doc[F("payload_off")] = "false"; } else { doc[F("payload_on")] = "1"; doc[F("payload_off")] = "0"; @@ -792,7 +792,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_HA_CONFIG); doc["name"] = new_name; - doc["uniq_id"] = uniq.c_str(); + doc["uniq_id"] = uniq; if (uom != nullptr) { doc["unit_of_meas"] = uom; } From 4bf821fbd5b6fc26dbcaa50f4ccd25a64e4ef59b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:01:41 +0100 Subject: [PATCH 110/225] use mqtt queue for ESP32 --- src/mqtt.cpp | 11 ++++++++++- src/mqtt.h | 4 +++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 3a3acfb3..ea6dec34 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -789,8 +789,11 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, } new_name[0] = toupper(new_name[0]); // capitalize first letter +#if defined(ESP32) + StaticJsonDocument doc; +#else DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_HA_CONFIG); - +#endif doc["name"] = new_name; doc["uniq_id"] = uniq; if (uom != nullptr) { @@ -805,9 +808,14 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, JsonArray ids = dev.createNestedArray("ids"); ids.add(ha_device); +#if defined(ESP32) + // queue MQTT publish + publish_retain(topic, doc.as(), true); +#else // convert json to string and publish immediately with retain forced to true std::string payload_text; serializeJson(doc, payload_text); // convert json to string + uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text.c_str()); if (!packet_id) { LOG_ERROR(F("Failed to publish topic %s"), topic); @@ -820,6 +828,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, } delay(50); // enough time to send the short message out +#endif } } // namespace emsesp diff --git a/src/mqtt.h b/src/mqtt.h index 41e2899f..7d2decdc 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -39,7 +39,7 @@ using uuid::console::Shell; #define EMSESP_MAX_JSON_SIZE_HA_CONFIG 384 // for small HA config payloads -#define EMSESP_MAX_JSON_SIZE_SMALL 384 // for smaller json docs when using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_SMALL 256 // for smaller json docs when using StaticJsonDocument #define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument #define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument #define EMSESP_MAX_JSON_SIZE_DYN 2048 // for large json docs from web. Using DynamicJsonDocument @@ -176,6 +176,8 @@ class Mqtt { #if defined(EMSESP_STANDALONE) static constexpr size_t MAX_MQTT_MESSAGES = 70; // size of queue +#elif defined(ESP32) + static constexpr size_t MAX_MQTT_MESSAGES = 100; // size of queue #else static constexpr size_t MAX_MQTT_MESSAGES = 20; // size of queue #endif From db06e2c3b928524c2db125436b3a9d48d733ca25 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:07:16 +0100 Subject: [PATCH 111/225] Log trace shows telegrams, watch FF for unknown telegrams --- CHANGELOG_LATEST.md | 1 + interface/src/project/EMSESPSettingsController.tsx | 1 + src/emsesp.cpp | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 159c758d..795276cc 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -8,6 +8,7 @@ - expose test framework via api (#611) - SysLog has enable/disable flag in WebUI - Add solar configuration telegrams (#616) [thanks @hpanther] +- log trace shows decoded telegrams, watch 0xFF for unknown telegrams ### Fixed - mixer IPM pumpstatus diff --git a/interface/src/project/EMSESPSettingsController.tsx b/interface/src/project/EMSESPSettingsController.tsx index e09808ff..1bf8b113 100644 --- a/interface/src/project/EMSESPSettingsController.tsx +++ b/interface/src/project/EMSESPSettingsController.tsx @@ -231,6 +231,7 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) NOTICE INFO DEBUG + ALL telegram) { if ((watch_id_ == WATCH_ID_NONE) || (telegram->type_id == watch_id_) || ((watch_id_ < 0x80) && ((telegram->src == watch_id_) || (telegram->dest == watch_id_)))) { LOG_NOTICE(pretty_telegram(telegram).c_str()); + } else { + LOG_TRACE(pretty_telegram(telegram).c_str()); } + } else { + LOG_TRACE(pretty_telegram(telegram).c_str()); } // only process broadcast telegrams or ones sent to us on request @@ -644,6 +648,9 @@ bool EMSESP::process_telegram(std::shared_ptr telegram) { if (!found) { LOG_DEBUG(F("No telegram type handler found for ID 0x%02X (src 0x%02X)"), telegram->type_id, telegram->src); + if ((watch() == WATCH_ON) && (watch_id_ == 0xFF)) { + LOG_NOTICE(pretty_telegram(telegram).c_str()); + } } return found; From bfeca075baf235ebe987c1dab6a21f278b77e5c5 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:12:02 +0100 Subject: [PATCH 112/225] Boiler: add reset, add last code, json output 2 parts (main/ww) --- src/devices/boiler.cpp | 118 +++++++++++++++++++++++++++++------------ src/devices/boiler.h | 3 ++ src/locale_EN.h | 6 +++ 3 files changed, 93 insertions(+), 34 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index f6b6b391..dd211599 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -70,6 +70,10 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_mqtt_cmd(F("boilhystoff"), [&](const char * value, const int8_t id) { return set_hyst_off(value, id); }); register_mqtt_cmd(F("burnperiod"), [&](const char * value, const int8_t id) { return set_burn_period(value, id); }); register_mqtt_cmd(F("pumpdelay"), [&](const char * value, const int8_t id) { return set_pump_delay(value, id); }); + register_mqtt_cmd(F("reset"), [&](const char * value, const int8_t id) { return set_reset(value, id); }); + + EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) + EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors) } // create the config topics for Home Assistant MQTT Discovery @@ -80,7 +84,7 @@ void Boiler::register_mqtt_ha_config() { } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F("Service Code"); doc["uniq_id"] = F("boiler"); doc["ic"] = F("mdi:home-thermometer-outline"); @@ -187,12 +191,12 @@ void Boiler::device_info_web(JsonArray & root) { if (!export_values_main(json)) { return; // empty } - export_values_ww(json); // append ww values print_value_json(root, F("heatingActive"), nullptr, F_(heatingActive), nullptr, json); print_value_json(root, F("tapwaterActive"), nullptr, F_(tapwaterActive), nullptr, json); print_value_json(root, F("serviceCode"), nullptr, F_(serviceCode), nullptr, json); print_value_json(root, F("serviceCodeNumber"), nullptr, F_(serviceCodeNumber), nullptr, json); + print_value_json(root, F("lastCode"), nullptr, F_(lastCode), nullptr, json); print_value_json(root, F("selFlowTemp"), nullptr, F_(selFlowTemp), F_(degrees), json); print_value_json(root, F("selBurnPow"), nullptr, F_(selBurnPow), F_(percent), json); print_value_json(root, F("curBurnPow"), nullptr, F_(curBurnPow), F_(percent), json); @@ -226,6 +230,10 @@ void Boiler::device_info_web(JsonArray & root) { print_value_json(root, F("heatWorkMin"), nullptr, F_(heatWorkMin), F_(min), json); print_value_json(root, F("UBAuptime"), nullptr, F_(UBAuptime), F_(min), json); + doc.clear(); + if (!export_values_ww(json)) { // append ww values + return; + } // ww print_value_json(root, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); print_value_json(root, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); @@ -617,6 +625,10 @@ bool Boiler::export_values_main(JsonObject & json) { json["serviceCodeNumber"] = serviceCodeNumber_; } + if (lastCode_[0] != '\0') { + json["lastCode"] = lastCode_; + } + return (json.size()); } @@ -673,51 +685,30 @@ void Boiler::show_values(uuid::console::Shell & shell) { if (!export_values_main(json)) { return; // empty } - export_values_ww(json); // append ww values // doc.shrinkToFit(); print_value_json(shell, F("heatingActive"), nullptr, F_(heatingActive), nullptr, json); print_value_json(shell, F("tapwaterActive"), nullptr, F_(tapwaterActive), nullptr, json); print_value_json(shell, F("serviceCode"), nullptr, F_(serviceCode), nullptr, json); print_value_json(shell, F("serviceCodeNumber"), nullptr, F_(serviceCodeNumber), nullptr, json); - print_value_json(shell, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); - print_value_json(shell, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); - print_value_json(shell, F("wWDisinfectionTemp"), nullptr, F_(wWDisinfectionTemp), F_(degrees), json); + print_value_json(shell, F("lastCode"), nullptr, F_(lastCode), nullptr, json); print_value_json(shell, F("selFlowTemp"), nullptr, F_(selFlowTemp), F_(degrees), json); print_value_json(shell, F("selBurnPow"), nullptr, F_(selBurnPow), F_(percent), json); print_value_json(shell, F("curBurnPow"), nullptr, F_(curBurnPow), F_(percent), json); print_value_json(shell, F("pumpMod"), nullptr, F_(pumpMod), F_(percent), json); print_value_json(shell, F("pumpMod2"), nullptr, F_(pumpMod2), F_(percent), json); - print_value_json(shell, F("wWType"), nullptr, F_(wWType), nullptr, json); - print_value_json(shell, F("wWChargeType"), nullptr, F_(wWChargeType), nullptr, json); - print_value_json(shell, F("wWCircPump"), nullptr, F_(wWCircPump), nullptr, json); - print_value_json(shell, F("wWCircPumpMode"), nullptr, F_(wWCircPumpMode), nullptr, json); - print_value_json(shell, F("wWCirc"), nullptr, F_(wWCirc), nullptr, json); print_value_json(shell, F("outdoorTemp"), nullptr, F_(outdoorTemp), F_(degrees), json); - print_value_json(shell, F("wWCurTemp"), nullptr, F_(wWCurTemp), F_(degrees), json); - print_value_json(shell, F("wWCurTemp2"), nullptr, F_(wWCurTemp2), F_(degrees), json); - print_value_json(shell, F("wWCurFlow"), nullptr, F_(wWCurFlow), F("l/min"), json); print_value_json(shell, F("curFlowTemp"), nullptr, F_(curFlowTemp), F_(degrees), json); print_value_json(shell, F("retTemp"), nullptr, F_(retTemp), F_(degrees), json); print_value_json(shell, F("switchTemp"), nullptr, F_(switchTemp), F_(degrees), json); print_value_json(shell, F("sysPress"), nullptr, F_(sysPress), nullptr, json); print_value_json(shell, F("boilTemp"), nullptr, F_(boilTemp), F_(degrees), json); - print_value_json(shell, F("wwStorageTemp1"), nullptr, F_(wwStorageTemp1), F_(degrees), json); - print_value_json(shell, F("wwStorageTemp2"), nullptr, F_(wwStorageTemp2), F_(degrees), json); print_value_json(shell, F("exhaustTemp"), nullptr, F_(exhaustTemp), F_(degrees), json); - print_value_json(shell, F("wWActivated"), nullptr, F_(wWActivated), nullptr, json); - print_value_json(shell, F("wWOneTime"), nullptr, F_(wWOneTime), nullptr, json); - print_value_json(shell, F("wWDisinfecting"), nullptr, F_(wWDisinfecting), nullptr, json); - print_value_json(shell, F("wWCharging"), nullptr, F_(wWCharging), nullptr, json); - print_value_json(shell, F("wWRecharging"), nullptr, F_(wWRecharging), nullptr, json); - print_value_json(shell, F("wWTempOK"), nullptr, F_(wWTempOK), nullptr, json); - print_value_json(shell, F("wWActive"), nullptr, F_(wWActive), nullptr, json); print_value_json(shell, F("burnGas"), nullptr, F_(burnGas), nullptr, json); print_value_json(shell, F("flameCurr"), nullptr, F_(flameCurr), F_(uA), json); print_value_json(shell, F("heatPump"), nullptr, F_(heatPump), nullptr, json); print_value_json(shell, F("fanWork"), nullptr, F_(fanWork), nullptr, json); print_value_json(shell, F("ignWork"), nullptr, F_(ignWork), nullptr, json); - print_value_json(shell, F("wWHeat"), nullptr, F_(wWHeat), nullptr, json); print_value_json(shell, F("heatingActivated"), nullptr, F_(heatingActivated), nullptr, json); print_value_json(shell, F("heatingTemp"), nullptr, F_(heatingTemp), F_(degrees), json); print_value_json(shell, F("pumpModMax"), nullptr, F_(pumpModMax), F_(percent), json); @@ -729,18 +720,9 @@ void Boiler::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("boilHystOn"), nullptr, F_(boilHystOn), F_(degrees), json); print_value_json(shell, F("boilHystOff"), nullptr, F_(boilHystOff), F_(degrees), json); print_value_json(shell, F("setFlowTemp"), nullptr, F_(setFlowTemp), F_(degrees), json); - print_value_json(shell, F("wWSetPumpPower"), nullptr, F_(wWSetPumpPower), F_(percent), json); - print_value_json(shell, F("wwMixTemperature"), nullptr, F_(wwMixTemperature), F_(degrees), json); - print_value_json(shell, F("wwBufferTemperature"), nullptr, F_(wwBufferTemperature), F_(degrees), json); - print_value_json(shell, F("wWStarts"), nullptr, F_(wWStarts), nullptr, json); - print_value_json(shell, F("wWWorkM"), nullptr, F_(wWWorkM), nullptr, json); print_value_json(shell, F("setBurnPow"), nullptr, F_(setBurnPow), F_(percent), json); print_value_json(shell, F("burnStarts"), nullptr, F_(burnStarts), nullptr, json); - if (Helpers::hasValue(wWWorkM_)) { - shell.printfln(F(" Warm Water active time: %d days %d hours %d minutes"), wWWorkM_ / 1440, (wWWorkM_ % 1440) / 60, wWWorkM_ % 60); - } - if (Helpers::hasValue(burnWorkMin_)) { shell.printfln(F(" Total burner operating time: %d days %d hours %d minutes"), burnWorkMin_ / 1440, (burnWorkMin_ % 1440) / 60, burnWorkMin_ % 60); } @@ -751,6 +733,41 @@ void Boiler::show_values(uuid::console::Shell & shell) { shell.printfln(F(" Total UBA working time: %d days %d hours %d minutes"), UBAuptime_ / 1440, (UBAuptime_ % 1440) / 60, UBAuptime_ % 60); } + doc.clear(); + if (!export_values_ww(json)) { // append ww values + shell.println(); + return; + } + print_value_json(shell, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); + print_value_json(shell, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); + print_value_json(shell, F("wWDisinfectionTemp"), nullptr, F_(wWDisinfectionTemp), F_(degrees), json); + print_value_json(shell, F("wWType"), nullptr, F_(wWType), nullptr, json); + print_value_json(shell, F("wWChargeType"), nullptr, F_(wWChargeType), nullptr, json); + print_value_json(shell, F("wWCircPump"), nullptr, F_(wWCircPump), nullptr, json); + print_value_json(shell, F("wWCircPumpMode"), nullptr, F_(wWCircPumpMode), nullptr, json); + print_value_json(shell, F("wWCirc"), nullptr, F_(wWCirc), nullptr, json); + print_value_json(shell, F("wWCurTemp"), nullptr, F_(wWCurTemp), F_(degrees), json); + print_value_json(shell, F("wWCurTemp2"), nullptr, F_(wWCurTemp2), F_(degrees), json); + print_value_json(shell, F("wWCurFlow"), nullptr, F_(wWCurFlow), F("l/min"), json); + print_value_json(shell, F("wwStorageTemp1"), nullptr, F_(wwStorageTemp1), F_(degrees), json); + print_value_json(shell, F("wwStorageTemp2"), nullptr, F_(wwStorageTemp2), F_(degrees), json); + print_value_json(shell, F("wWActivated"), nullptr, F_(wWActivated), nullptr, json); + print_value_json(shell, F("wWOneTime"), nullptr, F_(wWOneTime), nullptr, json); + print_value_json(shell, F("wWDisinfecting"), nullptr, F_(wWDisinfecting), nullptr, json); + print_value_json(shell, F("wWCharging"), nullptr, F_(wWCharging), nullptr, json); + print_value_json(shell, F("wWRecharging"), nullptr, F_(wWRecharging), nullptr, json); + print_value_json(shell, F("wWTempOK"), nullptr, F_(wWTempOK), nullptr, json); + print_value_json(shell, F("wWActive"), nullptr, F_(wWActive), nullptr, json); + print_value_json(shell, F("wWHeat"), nullptr, F_(wWHeat), nullptr, json); + print_value_json(shell, F("wWSetPumpPower"), nullptr, F_(wWSetPumpPower), F_(percent), json); + print_value_json(shell, F("wwMixTemperature"), nullptr, F_(wwMixTemperature), F_(degrees), json); + print_value_json(shell, F("wwBufferTemperature"), nullptr, F_(wwBufferTemperature), F_(degrees), json); + print_value_json(shell, F("wWStarts"), nullptr, F_(wWStarts), nullptr, json); + + if (Helpers::hasValue(wWWorkM_)) { + shell.printfln(F(" Warm Water active time: %d days %d hours %d minutes"), wWWorkM_ / 1440, (wWWorkM_ % 1440) / 60, wWWorkM_ % 60); + } + shell.println(); } @@ -1022,10 +1039,29 @@ void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegr // first byte: Maintenance due (0 = no, 3 = yes, due to operating hours, 8 = yes, due to date) } -// 0x10, 0x11, 0x12 +// 0x10, 0x11 // not yet implemented void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr + if (telegram->message_data[4] & 0x80) { // valid date + char code[3]; + uint16_t codeNo; + code[0] = telegram->message_data[0]; + code[1] = telegram->message_data[1]; + code[2] = 0; + telegram->read_value(codeNo, 2); + uint16_t year = (telegram->message_data[4] & 0x7F) + 2000; + uint8_t month = telegram->message_data[5]; + uint8_t day = telegram->message_data[7]; + uint8_t hour = telegram->message_data[6]; + uint8_t min = telegram->message_data[8]; + uint32_t date = (year - 2000) * 535680UL + month * 44640UL + day * 1440UL + hour * 60 + min; + // store only the newest code from telegrams 10 and 11 + if (date > lastCodeDate_) { + snprintf_P(lastCode_, sizeof(lastCode_), PSTR("%s(%d) %02d.%02d.%d %02d:%02d"), code, codeNo, day, month, year, hour, min); + lastCodeDate_ = date; + } + } } #pragma GCC diagnostic pop @@ -1385,5 +1421,19 @@ bool Boiler::set_warmwater_circulation_mode(const char * value, const int8_t id) return true; } +// Reset command +bool Boiler::set_reset(const char * value, const int8_t id) { + bool v = false; + if (!Helpers::value2bool(value, v)) { + return false; + } + if (v == false) { + return false; + } + LOG_INFO(F("reseting boiler")); + write_command(0x05, 0x08, 0xFF); + + return true; +} } // namespace emsesp diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 17388208..96ea37c4 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -99,6 +99,8 @@ class Boiler : public EMSdevice { char serviceCode_[3] = {'\0'}; // 2 character status/service code uint16_t serviceCodeNumber_ = EMS_VALUE_USHORT_NOTSET; // error/service code uint8_t boilerState_ = EMS_VALUE_UINT_NOTSET; // Boiler state flag + char lastCode_[30] = {'\0'}; + uint32_t lastCodeDate_ = 0; // UBAMonitorSlow - 0x19 on EMS1 int16_t outdoorTemp_ = EMS_VALUE_SHORT_NOTSET; // Outside temperature @@ -188,6 +190,7 @@ class Boiler : public EMSdevice { bool set_hyst_off(const char * value, const int8_t id); bool set_burn_period(const char * value, const int8_t id); bool set_pump_delay(const char * value, const int8_t id); + bool set_reset(const char * value, const int8_t id); }; } // namespace emsesp diff --git a/src/locale_EN.h b/src/locale_EN.h index 380b4ac0..51eec04d 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -139,6 +139,7 @@ MAKE_PSTR(heatingActive, "Heating active") MAKE_PSTR(tapwaterActive, "Warm water/DHW active") MAKE_PSTR(serviceCode, "Service code") MAKE_PSTR(serviceCodeNumber, "Service code number") +MAKE_PSTR(lastCode, "Last error") MAKE_PSTR(wWSelTemp, "Warm water selected temperature") MAKE_PSTR(wWSetTemp, "Warm water set temperature") MAKE_PSTR(wWDisinfectionTemp, "Warm water disinfection temperature") @@ -275,6 +276,11 @@ MAKE_PSTR(modetype, "Mode type") MAKE_PSTR(airHumidity, "Relative air humidity") MAKE_PSTR(dewTemperature, "Dew point temperature") +// other +MAKE_PSTR(activated, "Switch activated") +MAKE_PSTR(status, "Switch status") + + // Home Assistant icons MAKE_PSTR(icontemperature, "mdi:coolant-temperature") MAKE_PSTR(iconpercent, "mdi:sine-wave") From d41cb6eda2ea7dd9dc2a1199c71e57fb46b4d184 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:17:03 +0100 Subject: [PATCH 113/225] Thermostat: json sizes/split, add circpump, add last Error, check HC --- src/devices/thermostat.cpp | 167 ++++++++++++++++++++++++++++--------- src/devices/thermostat.h | 3 + 2 files changed, 130 insertions(+), 40 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 2819eb5a..57b5c4f4 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -48,6 +48,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(EMS_TYPE_RCOutdoorTemp, F("RCOutdoorTemp"), false, [&](std::shared_ptr t) { process_RCOutdoorTemp(t); }); register_telegram_type(EMS_TYPE_RCTime, F("RCTime"), false, [&](std::shared_ptr t) { process_RCTime(t); }); register_telegram_type(0xA2, F("RCError"), false, [&](std::shared_ptr t) { process_RCError(t); }); + register_telegram_type(0x12, F("RCErrorMessage"), false, [&](std::shared_ptr t) { process_RCErrorMessage(t); }); } // RC10 if (model == EMSdevice::EMS_DEVICE_FLAG_RC10) { @@ -176,15 +177,17 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i for (uint8_t i = 0; i < curve_typeids.size(); i++) { EMSESP::send_read_request(curve_typeids[i], device_id); } + EMSESP::send_read_request(0x12, device_id); // read last error (only published on errors) } // prepare data for Web UI void Thermostat::device_info_web(JsonArray & root) { - StaticJsonDocument doc_main; - JsonObject json_main = doc_main.to(); + StaticJsonDocument doc; + JsonObject json_main = doc.to(); if (export_values_main(json_main)) { print_value_json(root, F("time"), nullptr, F_(time), nullptr, json_main); print_value_json(root, F("errorcode"), nullptr, F_(error), nullptr, json_main); + print_value_json(root, F("lastcode"), nullptr, F_(lastCode), nullptr, json_main); print_value_json(root, F("display"), nullptr, F_(display), nullptr, json_main); print_value_json(root, F("language"), nullptr, F_(language), nullptr, json_main); print_value_json(root, F("offsetclock"), nullptr, F_(offsetclock), nullptr, json_main); @@ -202,9 +205,8 @@ void Thermostat::device_info_web(JsonArray & root) { print_value_json(root, F("wwextra1"), nullptr, F_(wwextra1), nullptr, json_main); print_value_json(root, F("wwcircmode"), nullptr, F_(wwcircmode), nullptr, json_main); } - - StaticJsonDocument doc_hc; - JsonObject json_hc = doc_hc.to(); + doc.clear(); + JsonObject json_hc = doc.to(); if (export_values_hc(Mqtt::Format::NESTED, json_hc)) { // display for each active heating circuit @@ -267,11 +269,12 @@ bool Thermostat::export_values(JsonObject & json) { void Thermostat::show_values(uuid::console::Shell & shell) { EMSdevice::show_values(shell); // always call this to show header - StaticJsonDocument doc_main; - JsonObject json_main = doc_main.to(); + StaticJsonDocument doc; + JsonObject json_main = doc.to(); if (export_values_main(json_main)) { print_value_json(shell, F("time"), nullptr, F_(time), nullptr, json_main); print_value_json(shell, F("errorcode"), nullptr, F_(error), nullptr, json_main); + print_value_json(shell, F("lastcode"), nullptr, F_(lastCode), nullptr, json_main); print_value_json(shell, F("display"), nullptr, F_(display), nullptr, json_main); print_value_json(shell, F("language"), nullptr, F_(language), nullptr, json_main); print_value_json(shell, F("offsetclock"), nullptr, F_(offsetclock), nullptr, json_main); @@ -290,8 +293,8 @@ void Thermostat::show_values(uuid::console::Shell & shell) { print_value_json(shell, F("wwcircmode"), nullptr, F_(wwcircmode), nullptr, json_main); } - StaticJsonDocument doc_hc; - JsonObject json_hc = doc_hc.to(); + doc.clear(); // reuse the doc + JsonObject json_hc = doc.to(); // e.g. {"hc1":{"seltemp":849.4,"currtemp":819.2,"mode":"unknown","modetype":"day"},"hc2":{"seltemp":875.1,"currtemp":409.6,"mode":"unknown","modetype":"day"},"hc3":{"seltemp":0,"currtemp":0,"mode":"unknown","modetype":"day"}} if (export_values_hc(Mqtt::Format::NESTED, json_hc)) { @@ -336,6 +339,20 @@ void Thermostat::publish_values(JsonObject & json, bool force) { if (EMSESP::actual_master_thermostat() != this->device_id()) { return; } + + // if MQTT is in single mode send out the main data to the thermostat_data topic + if (Mqtt::mqtt_format() == Mqtt::Format::SINGLE) { + StaticJsonDocument doc; + JsonObject json_data = doc.to(); + if (export_values_main(json_data)) { + Mqtt::publish(F("thermostat_data"), json_data); + json_data.clear(); + } + // this function will also have published each of the heating circuits + export_values_hc(Mqtt::mqtt_format(), json_data); + return; + } + // see if we have already registered this with HA MQTT Discovery, if not send the config if (Mqtt::mqtt_format() == Mqtt::Format::HA) { if (!ha_config(force)) { @@ -347,19 +364,12 @@ void Thermostat::publish_values(JsonObject & json, bool force) { JsonObject json_data = doc.to(); bool has_data = false; - // if MQTT is in single mode send out the main data to the thermostat_data topic - has_data |= export_values_main(json_data); - if (Mqtt::mqtt_format() == Mqtt::Format::SINGLE && has_data) { - Mqtt::publish(F("thermostat_data"), json_data); - json_data.clear(); - } - // get the thermostat data. - // if we're in Single mode this function will also have published each of the heating circuits + has_data |= export_values_main(json_data); has_data |= export_values_hc(Mqtt::mqtt_format(), json_data); - // if we're in HA or CUSTOM, send out the complete topic with all the data - if (Mqtt::mqtt_format() != Mqtt::Format::SINGLE && has_data) { + // we're in HA or CUSTOM, send out the complete topic with all the data + if (has_data) { Mqtt::publish(F("thermostat_data"), json_data); } } @@ -376,6 +386,10 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { rootThermostat["errorcode"] = errorCode_; } + if (lastCode_[0] != '\0') { + rootThermostat["lastcode"] = lastCode_; + } + if (model == EMSdevice::EMS_DEVICE_FLAG_RC30_1) { // Display if (Helpers::hasValue(ibaMainDisplay_)) { @@ -498,8 +512,12 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { // Warm Water circulation mode if (Helpers::hasValue(wwCircMode_)) { - char s[7]; - rootThermostat["wwcircmode"] = Helpers::render_enum(s, {F("off"), F("on"), F("auto")}, wwCircMode_); + char s[10]; + if (model == EMS_DEVICE_FLAG_RC300 || model == EMS_DEVICE_FLAG_RC100) { + rootThermostat["wwcircmode"] = Helpers::render_enum(s, {F("off"), F("on"), F("auto"), F("own_prog")}, wwCircMode_); + } else { + rootThermostat["wwcircmode"] = Helpers::render_enum(s, {F("off"), F("on"), F("auto")}, wwCircMode_); + } } return (rootThermostat.size()); @@ -836,7 +854,7 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // publish config topic for HA MQTT Discovery for main thermostat values // homeassistant/sensor/ems-esp/thermostat/config void Thermostat::register_mqtt_ha_config() { - StaticJsonDocument doc; + StaticJsonDocument doc; doc["uniq_id"] = F("thermostat"); doc["ic"] = F("mdi:home-thermometer-outline"); @@ -873,6 +891,7 @@ void Thermostat::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(floordrytemp), this->device_type(), "floordrytemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwmode), this->device_type(), "wwmode", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwtemp), this->device_type(), "wwtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwcircmode), this->device_type(), "wwcircmode", nullptr, nullptr); } if (model == EMS_DEVICE_FLAG_RC35 || model == EMS_DEVICE_FLAG_RC30_1) { @@ -881,8 +900,6 @@ void Thermostat::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(building), this->device_type(), "building", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(minexttemp), this->device_type(), "minexttemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwmode), this->device_type(), "wwmode", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwtemp), this->device_type(), "wwtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwtemplow), this->device_type(), "wwtemplow", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwcircmode), this->device_type(), "wwcircmode", nullptr, nullptr); } } @@ -1185,14 +1202,18 @@ std::string Thermostat::mode_tostring(uint8_t mode) { // 0xA8 - for reading the mode from the RC20 thermostat (0x17) void Thermostat::process_RC20Set(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->mode, 23); } // type 0xAE - data from the RC20 thermostat (0x17) void Thermostat::process_RC20Monitor_2(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_bitvalue(hc->mode_type, 0, 7); // day/night MSB 7th bit is day changed_ |= telegram->read_value(hc->setpoint_roomTemp, 2, 1); // is * 2, force as single byte changed_ |= telegram->read_value(hc->curr_roomTemp, 3); // is * 10 @@ -1202,20 +1223,27 @@ void Thermostat::process_RC20Monitor_2(std::shared_ptr telegram) // see https://github.com/proddy/EMS-ESP/issues/334#issuecomment-611698259 void Thermostat::process_RC20Set_2(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->mode, 3); } // 0xAF - for reading the roomtemperature from the RC20/ES72 thermostat (0x18, 0x19, ..) void Thermostat::process_RC20Remote(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->curr_roomTemp, 0); } // type 0xB1 - data from the RC10 thermostat (0x17) void Thermostat::process_RC10Monitor(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->setpoint_roomTemp, 1, 1); // is * 2, force as single byte changed_ |= telegram->read_value(hc->curr_roomTemp, 2); // is * 10 } @@ -1232,6 +1260,9 @@ void Thermostat::process_RC10Set(std::shared_ptr telegram) { // type 0x0165, ff void Thermostat::process_JunkersSet(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->daytemp, 17); // is * 2 changed_ |= telegram->read_value(hc->nighttemp, 16); // is * 2 changed_ |= telegram->read_value(hc->nofrosttemp, 15); // is * 2 @@ -1239,6 +1270,9 @@ void Thermostat::process_JunkersSet(std::shared_ptr telegram) { // type 0x0179, ff void Thermostat::process_JunkersSet2(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->daytemp, 7); // is * 2 changed_ |= telegram->read_value(hc->nighttemp, 6); // is * 2 changed_ |= telegram->read_value(hc->nofrosttemp, 5); // is * 2 @@ -1257,7 +1291,9 @@ void Thermostat::process_RCOutdoorTemp(std::shared_ptr telegram) // 0x91 - data from the RC20 thermostat (0x17) - 15 bytes long void Thermostat::process_RC20Monitor(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->setpoint_roomTemp, 1, 1); // is * 2, force as single byte changed_ |= telegram->read_value(hc->curr_roomTemp, 2); // is * 10 } @@ -1265,7 +1301,9 @@ void Thermostat::process_RC20Monitor(std::shared_ptr telegram) { // type 0x0A - data from the Nefit Easy/TC100 thermostat (0x18) - 31 bytes long void Thermostat::process_EasyMonitor(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->curr_roomTemp, 8); // is * 100 changed_ |= telegram->read_value(hc->setpoint_roomTemp, 10); // is * 100 } @@ -1297,7 +1335,9 @@ void Thermostat::process_JunkersMonitor(std::shared_ptr telegram } std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->curr_roomTemp, 4); // value is * 10 changed_ |= telegram->read_value(hc->setpoint_roomTemp, 2); // value is * 10 @@ -1308,7 +1348,9 @@ void Thermostat::process_JunkersMonitor(std::shared_ptr telegram // type 0x02A5 - data from the Nefit RC1010/3000 thermostat (0x18) and RC300/310s on 0x10 void Thermostat::process_RC300Monitor(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->curr_roomTemp, 0); // is * 10 changed_ |= telegram->read_bitvalue(hc->mode_type, 10, 1); @@ -1329,7 +1371,9 @@ void Thermostat::process_RC300Monitor(std::shared_ptr telegram) // type 0x02B9 EMS+ for reading from RC300/RC310 thermostat void Thermostat::process_RC300Set(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } // NOTE when setting the room temp we pick from two values, hopefully one is correct! // manual is position 10 // comfort is position 2, there are 3 levels in pos 3, 2, 1 @@ -1349,6 +1393,9 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { // types 0x2AF ff void Thermostat::process_RC300Summer(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->roominfluence, 0); changed_ |= telegram->read_value(hc->offsettemp, 2); changed_ |= telegram->read_value(hc->summertemp, 6); @@ -1364,6 +1411,9 @@ void Thermostat::process_RC300Summer(std::shared_ptr telegram) { // types 0x29B ff void Thermostat::process_RC300Curve(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->heatingtype, 1); // 1=radiator, 2=convector, 3=floor changed_ |= telegram->read_value(hc->nofrosttemp, 6); if (hc->heatingtype < 3) { @@ -1382,8 +1432,9 @@ void Thermostat::process_RC300WWtemp(std::shared_ptr telegram) { // type 02F5 void Thermostat::process_RC300WWmode(std::shared_ptr telegram) { // circulation pump see: https://github.com/Th3M3/buderus_ems-wiki/blob/master/Einstellungen%20der%20Bedieneinheit%20RC310.md - // changed_ |= telegram->read_value(wwCircMode_, 1); // 0=off, FF=on - changed_ |= telegram->read_value(wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog + changed_ |= telegram->read_value(wwCircPump_, 1); // FF=off, 0=on ? + changed_ |= telegram->read_value(wwMode_, 2); // 0=off, 1=low, 2=high, 3=auto, 4=own prog + changed_ |= telegram->read_value(wwCircMode_, 3); // 0=off, 1=on, 2=auto, 4=own? } // types 0x31D and 0x31E @@ -1419,7 +1470,9 @@ void Thermostat::process_RC300Floordry(std::shared_ptr telegram) // type 0x41 - data from the RC30 thermostat(0x10) - 14 bytes long void Thermostat::process_RC30Monitor(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->setpoint_roomTemp, 1, 1); // is * 2, force as single byte changed_ |= telegram->read_value(hc->curr_roomTemp, 2); } @@ -1427,7 +1480,9 @@ void Thermostat::process_RC30Monitor(std::shared_ptr telegram) { // type 0xA7 - for reading the mode from the RC30 thermostat (0x10) void Thermostat::process_RC30Set(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->mode, 23); } @@ -1441,7 +1496,9 @@ void Thermostat::process_RC35Monitor(std::shared_ptr telegram) { } std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->setpoint_roomTemp, 2, 1); // is * 2, force to single byte, is 0 in summermode changed_ |= telegram->read_value(hc->curr_roomTemp, 3); // is * 10 - or 0x7D00 if thermostat is mounted on boiler @@ -1460,7 +1517,9 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { } std::shared_ptr hc = heating_circuit(telegram); - + if (hc == nullptr) { + return; + } changed_ |= telegram->read_value(hc->heatingtype, 0); // 0- off, 1-radiator, 2-convector, 3-floor changed_ |= telegram->read_value(hc->nighttemp, 1); // is * 2 changed_ |= telegram->read_value(hc->daytemp, 2); // is * 2 @@ -1537,6 +1596,24 @@ void Thermostat::process_RCError(std::shared_ptr telegram) { snprintf_P(&errorCode_[0], errorCode_.capacity() + 1, PSTR("%s(%d)"), buf, errorNumber_); } +// 0x12 +void Thermostat::process_RCErrorMessage(std::shared_ptr telegram) { + // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr + if (telegram->message_data[4] & 0x80) { // valid date + char code[3]; + uint16_t codeNo; + code[0] = telegram->message_data[0]; + code[1] = telegram->message_data[1]; + code[2] = 0; + telegram->read_value(codeNo, 2); + uint16_t year = (telegram->message_data[4] & 0x7F) + 2000; + uint8_t month = telegram->message_data[5]; + uint8_t day = telegram->message_data[7]; + uint8_t hour = telegram->message_data[6]; + uint8_t min = telegram->message_data[8]; + snprintf_P(lastCode_, sizeof(lastCode_), PSTR("%s(%d) %02d.%02d.%d %02d:%02d"), code, codeNo, day, month, year, hour, min); + } +} // 0xA5 - Set minimum external temperature bool Thermostat::set_minexttemp(const char * value, const int8_t id) { @@ -1731,6 +1808,15 @@ bool Thermostat::set_wwonetime(const char * value, const int8_t id) { // sets the thermostat ww circulation working mode, where mode is a string bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set = 0xFF; + if ((this->model() == EMS_DEVICE_FLAG_RC300) || (this->model() == EMS_DEVICE_FLAG_RC100)) { + if (!Helpers::value2enum(value, set, {F("off"), F("on"), F("auto"), F("own")})) { + LOG_WARNING(F("Set warm water circulation mode: Invalid mode")); + return false; + } + LOG_INFO(F("Setting warm water circulation mode to %s"), value); + write_command(0x02F5, 3, set, 0x02F5); + return true; + } if (!Helpers::value2enum(value, set, {F("off"), F("on"), F("auto")})) { LOG_WARNING(F("Set warm water circulation mode: Invalid mode")); return false; @@ -1860,7 +1946,7 @@ bool Thermostat::set_datetime(const char * value, const int8_t id) { // converts string mode to HeatingCircuit::Mode bool Thermostat::set_mode(const char * value, const int8_t id) { // quit if its numerical, as it could be mistaken as a temperature value - if (value[0] <= 'A') { + if (value[0] < 'A') { return false; } @@ -2431,6 +2517,7 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("wwtemp"), [&](const char * value, const int8_t id) { return set_wwtemp(value, id); }); register_mqtt_cmd(F("wwtemplow"), [&](const char * value, const int8_t id) { return set_wwtemplow(value, id); }); register_mqtt_cmd(F("wwonetime"), [&](const char * value, const int8_t id) { return set_wwonetime(value, id); }); + register_mqtt_cmd(F("wwcircmode"), [&](const char * value, const int8_t id) { return set_wwcircmode(value, id); }); register_mqtt_cmd(F("building"), [&](const char * value, const int8_t id) { return set_building(value, id); }); register_mqtt_cmd(F("nofrosttemp"), [&](const char * value, const int8_t id) { return set_nofrosttemp(value, id); }); register_mqtt_cmd(F("designtemp"), [&](const char * value, const int8_t id) { return set_designtemp(value, id); }); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index e180f7d1..a098e4f2 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -170,6 +170,7 @@ class Thermostat : public EMSdevice { uint8_t ibaClockOffset_ = EMS_VALUE_UINT_NOTSET; // offset (in sec) to clock, 0xff = -1 s, 0x02 = 2 s uint16_t errorNumber_ = EMS_VALUE_USHORT_NOTSET; + char lastCode_[30] = {'\0'}; int8_t dampedoutdoortemp_ = EMS_VALUE_INT_NOTSET; uint16_t tempsensor1_ = EMS_VALUE_USHORT_NOTSET; uint16_t tempsensor2_ = EMS_VALUE_USHORT_NOTSET; @@ -180,6 +181,7 @@ class Thermostat : public EMSdevice { uint8_t wwExtra1_ = EMS_VALUE_UINT_NOTSET; // wwExtra active for wwSystem 1 uint8_t wwExtra2_ = EMS_VALUE_UINT_NOTSET; uint8_t wwMode_ = EMS_VALUE_UINT_NOTSET; + uint8_t wwCircPump_ = EMS_VALUE_UINT_NOTSET; uint8_t wwCircMode_ = EMS_VALUE_UINT_NOTSET; uint8_t wwTemp_ = EMS_VALUE_UINT_NOTSET; uint8_t wwTempLow_ = EMS_VALUE_UINT_NOTSET; @@ -274,6 +276,7 @@ class Thermostat : public EMSdevice { void process_IBASettings(std::shared_ptr telegram); void process_RCTime(std::shared_ptr telegram); void process_RCError(std::shared_ptr telegram); + void process_RCErrorMessage(std::shared_ptr telegram); void process_RC35wwSettings(std::shared_ptr telegram); void process_RC35Monitor(std::shared_ptr telegram); void process_RC35Set(std::shared_ptr telegram); From cf3728759ec375c2bc991bae45260180addb0fe7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:17:57 +0100 Subject: [PATCH 114/225] devices, json-ha-config --- src/devices/heatpump.cpp | 2 +- src/devices/mixer.cpp | 2 +- src/devices/solar.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index 463a4cd7..195d0da9 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -97,7 +97,7 @@ void Heatpump::register_mqtt_ha_config() { } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F_(EMSESP); doc["uniq_id"] = F_(heatpump); doc["ic"] = F_(iconheatpump); diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index c95f1a06..db96d2c0 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -166,7 +166,7 @@ void Mixer::register_mqtt_ha_config() { } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; char name[20]; snprintf_P(name, sizeof(name), PSTR("Mixer %02X"), device_id() - 0x20 + 1); diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 438e179c..c341e01c 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -159,7 +159,7 @@ void Solar::register_mqtt_ha_config() { } // Create the Master device - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F_(EMSESP); doc["uniq_id"] = F_(solar); doc["ic"] = F_(iconthermostat); From d585d7e4af29025cbcfb751b370c19c97a2dd072 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:18:57 +0100 Subject: [PATCH 115/225] console: watch input more flexible, json size --- src/console.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/console.cpp b/src/console.cpp index 6de5e153..50edf08c 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -307,11 +307,11 @@ void EMSESPShell::add_console_commands() { emsesp::EMSESP::watch(EMSESP::WATCH_ON); // on } else if (arguments[0] == read_flash_string(F_(off))) { emsesp::EMSESP::watch(EMSESP::WATCH_OFF); // off - } else if (emsesp::EMSESP::watch() == EMSESP::WATCH_OFF) { - shell.printfln(F_(invalid_watch)); - return; } else { watch_id = Helpers::hextoint(arguments[0].c_str()); + if ((emsesp::EMSESP::watch() == EMSESP::WATCH_OFF) && watch_id) { + emsesp::EMSESP::watch(EMSESP::WATCH_ON); // on + } } if (arguments.size() == 2) { @@ -380,7 +380,7 @@ void EMSESPShell::add_console_commands() { return; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_DYN); JsonObject json = doc.to(); bool ok = false; From 9e6b2088aee69ca82948635a62a364f0db366d9d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:41:26 +0100 Subject: [PATCH 116/225] addWM10 switch --- CHANGELOG_LATEST.md | 1 + src/devices/switch.cpp | 106 +++++++++++++++++++++++++++++++++++++++++ src/devices/switch.h | 12 +++++ 3 files changed, 119 insertions(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 795276cc..eb5e011a 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -9,6 +9,7 @@ - SysLog has enable/disable flag in WebUI - Add solar configuration telegrams (#616) [thanks @hpanther] - log trace shows decoded telegrams, watch 0xFF for unknown telegrams +- WM10 switch ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index f39d617d..4faaff5c 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -28,28 +28,134 @@ uuid::log::Logger Switch::logger_ { Switch::Switch(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand) : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { + LOG_DEBUG(F("Adding new Switch with device ID 0x%02X"), device_id); + + register_telegram_type(0x9C, F("WM10MonitorMessage"), false, [&](std::shared_ptr t) { process_WM10MonitorMessage(t); }); + register_telegram_type(0x9B, F("WM10SetMessage"), false, [&](std::shared_ptr t) { process_WM10SetMessage(t); }); } void Switch::device_info_web(JsonArray & root) { + // fetch the values into a JSON document + StaticJsonDocument doc; + JsonObject json = doc.to(); + if (export_values(json)) { + print_value_json(root, F("activated"), nullptr, F_(activated), nullptr, json); + print_value_json(root, F("flowTemp"), nullptr, F_(flowTemp), F_(degrees), json); + print_value_json(root, F("status"), nullptr, F_(status), nullptr, json); + } } // display all values into the shell console void Switch::show_values(uuid::console::Shell & shell) { // EMSdevice::show_values(shell); // always call this to show header + // fetch the values into a JSON document + StaticJsonDocument doc; + JsonObject json = doc.to(); + if (export_values(json)) { + print_value_json(shell, F("activated"), nullptr, F_(activated), nullptr, json); + print_value_json(shell, F("flowTemp"), F_(2spaces), F_(flowTemp), F_(degrees), json); + print_value_json(shell, F("status"), nullptr, F_(status), nullptr, json); + } } // publish values via MQTT void Switch::publish_values(JsonObject & json, bool force) { + if (Mqtt::mqtt_format() == Mqtt::Format::HA) { + if (!mqtt_ha_config_ || force) { + register_mqtt_ha_config(); + return; + } + } + StaticJsonDocument doc; + JsonObject json_data = doc.to(); + if (export_values(json_data)) { + Mqtt::publish(F("switch_data"), doc.as()); + } } // export values to JSON bool Switch::export_values(JsonObject & json) { + + if (Helpers::hasValue(flowTemp_)) { + char s[7]; + json["activated"] = Helpers::render_value(s, activated_, EMS_VALUE_BOOL); + } + + if (Helpers::hasValue(flowTemp_)) { + json["flowTemp"] = (float)flowTemp_ / 10; + } + + if (Helpers::hasValue(flowTemp_)) { + json["status"] = status_; + } + return true; } // check to see if values have been updated bool Switch::updated_values() { + if (changed_) { + changed_ = false; + return true; + } return false; } +// publish config topic for HA MQTT Discovery +void Switch::register_mqtt_ha_config() { + if (!Mqtt::connected()) { + return; + } + + // if we don't have valid values for this HC don't add it ever again + if (!Helpers::hasValue(flowTemp_)) { + return; + } + + // Create the Master device + StaticJsonDocument doc; + + char name[10]; + snprintf_P(name, sizeof(name), PSTR("Switch")); + doc["name"] = name; + + char uniq_id[10]; + snprintf_P(uniq_id, sizeof(uniq_id), PSTR("switch")); + doc["uniq_id"] = uniq_id; + + doc["ic"] = F("mdi:home-thermometer-outline"); + + char stat_t[50]; + snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/switch_data"), System::hostname().c_str()); + doc["stat_t"] = stat_t; + + doc["val_tpl"] = F("{{value_json.type}}"); // HA needs a single value. We take the type which is wwc or hc + + JsonObject dev = doc.createNestedObject("dev"); + dev["name"] = F("EMS-ESP Switch"); + dev["sw"] = EMSESP_APP_VERSION; + dev["mf"] = this->brand_to_string(); + dev["mdl"] = this->name(); + JsonArray ids = dev.createNestedArray("ids"); + ids.add("ems-esp-switch"); + + Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/switch/config"), doc.as(), true); // publish the config payload with retain flag + Mqtt::register_mqtt_ha_sensor(PSTR("switch"), nullptr, F_(flowTemp), this->device_type(), "activated", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(PSTR("switch"), nullptr, F_(flowTemp), this->device_type(), "flowTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(PSTR("switch"), nullptr, F_(flowTemp), this->device_type(), "status", nullptr, nullptr); + + mqtt_ha_config_ = true; // done +} + +// message 0x9B switch on/off +void Switch::process_WM10SetMessage(std::shared_ptr telegram){ + changed_ |= telegram->read_value(activated_, 0); +} + +// message 0x9C holds flowtemp and unknown statusvalue +void Switch::process_WM10MonitorMessage(std::shared_ptr telegram){ + changed_ |= telegram->read_value(flowTemp_, 0); // is * 10 + changed_ |= telegram->read_value(status_, 2); +} + } // namespace emsesp \ No newline at end of file diff --git a/src/devices/switch.h b/src/devices/switch.h index e9fb3380..e7afaba2 100644 --- a/src/devices/switch.h +++ b/src/devices/switch.h @@ -25,6 +25,7 @@ #include #include "emsdevice.h" +#include "emsesp.h" #include "telegram.h" #include "helpers.h" #include "mqtt.h" @@ -43,6 +44,17 @@ class Switch : public EMSdevice { private: static uuid::log::Logger logger_; + + void process_WM10SetMessage(std::shared_ptr telegram); + void process_WM10MonitorMessage(std::shared_ptr telegram); + void register_mqtt_ha_config(); + + uint16_t flowTemp_ = EMS_VALUE_USHORT_NOTSET; + uint8_t status_ = EMS_VALUE_UINT_NOTSET; + uint8_t activated_ = EMS_VALUE_BOOL_NOTSET; + bool changed_ = false; + bool mqtt_ha_config_ = false; // for HA MQTT Discovery + }; } // namespace emsesp From 0b19ea7a0d9205e462ddd4486609425f38965693 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 10:54:30 +0100 Subject: [PATCH 117/225] shell F-commands, remove double prompt output. --- lib/uuid-console/src/shell.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index 73258d39..c0c08608 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -262,9 +262,9 @@ void Shell::loop_normal() { } else if (esc_ == 20) { // F9 set_command_str(F("call system info")); } else if (esc_ == 21) { // F10 - set_command_str(F("call system report")); + set_command_str(F("call system settings")); } else if (esc_ == 23) { // F11 - line_buffer_ = read_flash_string(F("send telegram \"0B \"")); + line_buffer_ = read_flash_string(F("call send \"0B \"")); cursor_ = 1; } else if (esc_ == 24) { // F12 set_command_str(F("log debug; watch raw")); @@ -395,9 +395,9 @@ void Shell::loop_delay() { function_copy(*this); - if (running()) { - display_prompt(); - } + // if (running()) { + // display_prompt(); + // } idle_time_ = uuid::get_uptime_ms(); } @@ -425,9 +425,9 @@ void Shell::loop_blocking() { stop(); } - if (running()) { - display_prompt(); - } + // if (running()) { + // display_prompt(); + // } idle_time_ = uuid::get_uptime_ms(); } @@ -496,7 +496,7 @@ void Shell::maximum_command_line_length(size_t length) { void Shell::process_command() { if (line_buffer_.empty()) { println(); - return; + return; } line_old_ = line_buffer_; while (!line_buffer_.empty()) { @@ -568,9 +568,9 @@ void Shell::process_password(bool completed) { function_copy(*this, completed, line_buffer_); line_buffer_.clear(); - if (running()) { - display_prompt(); - } + // if (running()) { + // display_prompt(); + // } } void Shell::invoke_command(const std::string & line) { From fa55a8458f8f22b521160674a6c3bf298ec16614 Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 18 Nov 2020 11:22:58 +0100 Subject: [PATCH 118/225] default web API is off for write commands --- src/WebSettingsService.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WebSettingsService.h b/src/WebSettingsService.h index bf7b9373..7345394b 100644 --- a/src/WebSettingsService.h +++ b/src/WebSettingsService.h @@ -36,7 +36,7 @@ #define EMSESP_DEFAULT_SHOWER_ALERT false #define EMSESP_DEFAULT_HIDE_LED false #define EMSESP_DEFAULT_DALLAS_PARASITE false -#define EMSESP_DEFAULT_API_ENABLED true +#define EMSESP_DEFAULT_API_ENABLED false // turn off, because its insecure #define EMSESP_DEFAULT_BOOL_FORMAT 1 // on/off #define EMSESP_DEFAULT_ANALOG_ENABLED false From 780be4ff5794c84cc9303aa3555d6e9347dfa434 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 18 Nov 2020 13:33:04 +0100 Subject: [PATCH 119/225] watch unknown and fixes (see #619 comments) --- CHANGELOG_LATEST.md | 2 +- src/console.cpp | 9 ++++++++- src/devices/boiler.cpp | 3 +-- src/devices/switch.cpp | 6 +++--- src/emsesp.cpp | 2 +- src/emsesp.h | 2 +- src/locale_EN.h | 2 +- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index eb5e011a..86752578 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -8,7 +8,7 @@ - expose test framework via api (#611) - SysLog has enable/disable flag in WebUI - Add solar configuration telegrams (#616) [thanks @hpanther] -- log trace shows decoded telegrams, watch 0xFF for unknown telegrams +- `log trace` shows decoded telegrams, `watch unknown` for only unknown telegrams - WM10 switch ### Fixed diff --git a/src/console.cpp b/src/console.cpp index 50edf08c..5b86d17b 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -307,10 +307,15 @@ void EMSESPShell::add_console_commands() { emsesp::EMSESP::watch(EMSESP::WATCH_ON); // on } else if (arguments[0] == read_flash_string(F_(off))) { emsesp::EMSESP::watch(EMSESP::WATCH_OFF); // off + } else if (arguments[0] == read_flash_string(F_(unknown))) { + emsesp::EMSESP::watch(EMSESP::WATCH_UNKNOWN); // unknown + watch_id = WATCH_ID_NONE; } else { watch_id = Helpers::hextoint(arguments[0].c_str()); if ((emsesp::EMSESP::watch() == EMSESP::WATCH_OFF) && watch_id) { emsesp::EMSESP::watch(EMSESP::WATCH_ON); // on + } else if ((emsesp::EMSESP::watch() == EMSESP::WATCH_UNKNOWN) || !watch_id) { + return; } } @@ -335,8 +340,10 @@ void EMSESPShell::add_console_commands() { if (watch == EMSESP::WATCH_ON) { shell.printfln(F("Watching incoming telegrams, displayed in decoded format")); - } else { + } else if (watch == EMSESP::WATCH_RAW) { shell.printfln(F("Watching incoming telegrams, displayed as raw bytes")); // WATCH_RAW + } else { + shell.printfln(F("Watching unknown telegrams")); // WATCH_UNKNOWN } watch_id = emsesp::EMSESP::watch_id(); diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index dd211599..ee3f92e1 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1040,7 +1040,6 @@ void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegr } // 0x10, 0x11 -// not yet implemented void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr if (telegram->message_data[4] & 0x80) { // valid date @@ -1430,7 +1429,7 @@ bool Boiler::set_reset(const char * value, const int8_t id) { if (v == false) { return false; } - LOG_INFO(F("reseting boiler")); + LOG_INFO(F("restarting boiler")); write_command(0x05, 0x08, 0xFF); return true; diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index 4faaff5c..62ad9904 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -140,9 +140,9 @@ void Switch::register_mqtt_ha_config() { ids.add("ems-esp-switch"); Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/switch/config"), doc.as(), true); // publish the config payload with retain flag - Mqtt::register_mqtt_ha_sensor(PSTR("switch"), nullptr, F_(flowTemp), this->device_type(), "activated", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(PSTR("switch"), nullptr, F_(flowTemp), this->device_type(), "flowTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(PSTR("switch"), nullptr, F_(flowTemp), this->device_type(), "status", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(activated), this->device_type(), "activated", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(flowTemp), this->device_type(), "flowTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(status), this->device_type(), "status", nullptr, nullptr); mqtt_ha_config_ = true; // done } diff --git a/src/emsesp.cpp b/src/emsesp.cpp index f3ff5e3a..c2bc01e9 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -648,7 +648,7 @@ bool EMSESP::process_telegram(std::shared_ptr telegram) { if (!found) { LOG_DEBUG(F("No telegram type handler found for ID 0x%02X (src 0x%02X)"), telegram->type_id, telegram->src); - if ((watch() == WATCH_ON) && (watch_id_ == 0xFF)) { + if (watch() == WATCH_UNKNOWN) { LOG_NOTICE(pretty_telegram(telegram).c_str()); } } diff --git a/src/emsesp.h b/src/emsesp.h index eaa88745..711f9e8c 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -116,7 +116,7 @@ class EMSESP { return (!(dallassensor_.sensors().empty())); } - enum Watch : uint8_t { WATCH_OFF, WATCH_ON, WATCH_RAW }; + enum Watch : uint8_t { WATCH_OFF, WATCH_ON, WATCH_RAW, WATCH_UNKNOWN }; static void watch_id(uint16_t id); static uint16_t watch_id() { return watch_id_; diff --git a/src/locale_EN.h b/src/locale_EN.h index 51eec04d..d86122de 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -111,7 +111,7 @@ MAKE_PSTR(deep_optional, "[deep]") MAKE_PSTR(tx_mode_fmt, "Tx mode = %d") MAKE_PSTR(bus_id_fmt, "Bus ID = %02X") MAKE_PSTR(watchid_optional, "[ID]") -MAKE_PSTR(watch_format_optional, "[off | on | raw]") +MAKE_PSTR(watch_format_optional, "[off | on | raw | unknown]") MAKE_PSTR(invalid_watch, "Invalid watch type") MAKE_PSTR(data_mandatory, "\"XX XX ...\"") MAKE_PSTR(percent, "%") From cd6bc7457da87c91b3a6737f5c083eee35e388ac Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 18 Nov 2020 19:15:18 +0100 Subject: [PATCH 120/225] auto formatting --- lib/uuid-console/src/shell.cpp | 18 +++++++++--------- src/devices/boiler.cpp | 10 ++++------ src/devices/switch.cpp | 7 +++---- src/devices/thermostat.cpp | 6 +++--- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index c0c08608..c5f2d9ca 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -220,11 +220,11 @@ void Shell::loop_normal() { line_buffer_.clear(); cursor_ = 0; } else if (c == 'C') { // cursor right - if (cursor_) { + if (cursor_) { cursor_--; } } else if (c == 'D') { // cursor left - if (cursor_ < line_buffer_.length()) { + if (cursor_ < line_buffer_.length()) { cursor_++; } } else if (c == 'H') { // Home @@ -236,7 +236,7 @@ void Shell::loop_normal() { esc_ = 11 + c - 'P'; } if (c == '~' || (c >= 'P' && c <= 'Z')) { // function keys with number ESCn~ - if ((esc_ == 3) && cursor_) { // del + if ((esc_ == 3) && cursor_) { // del cursor_--; line_buffer_.erase(line_buffer_.length() - cursor_ - 1, 1); } else if (esc_ == 4) { // end @@ -265,7 +265,7 @@ void Shell::loop_normal() { set_command_str(F("call system settings")); } else if (esc_ == 23) { // F11 line_buffer_ = read_flash_string(F("call send \"0B \"")); - cursor_ = 1; + cursor_ = 1; } else if (esc_ == 24) { // F12 set_command_str(F("log debug; watch raw")); } @@ -275,7 +275,7 @@ void Shell::loop_normal() { } else if ((c != '[') && (c != 'O')) { // all other chars except start of sequence esc_ = 0; } - // process normal ascii text + // process normal ascii text } else if (c >= '\x20' && c <= '\x7E') { if (line_buffer_.length() < maximum_command_line_length_) { line_buffer_.insert(line_buffer_.length() - cursor_, 1, c); @@ -467,8 +467,8 @@ void Shell::delete_buffer_word(bool display) { } else { if (display) { size_t pos1 = 0; - pos = 0; - while (pos1 < line_buffer_.length() - cursor_) { + pos = 0; + while (pos1 < line_buffer_.length() - cursor_) { pos = pos1; pos1 = line_buffer_.find(' ', pos + 1); } @@ -502,7 +502,7 @@ void Shell::process_command() { while (!line_buffer_.empty()) { size_t pos = line_buffer_.find(';'); std::string line1; - if (pos < line_buffer_.length()) { + if (pos < line_buffer_.length()) { line1 = line_buffer_.substr(0, pos); line_buffer_.erase(0, pos + 1); } else { @@ -576,7 +576,7 @@ void Shell::process_password(bool completed) { void Shell::invoke_command(const std::string & line) { erase_current_line(); prompt_displayed_ = false; - line_buffer_ = line; + line_buffer_ = line; display_prompt(); process_command(); } diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index ee3f92e1..8f338da3 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -185,7 +185,6 @@ void Boiler::register_mqtt_ha_config_ww() { // send stuff to the Web UI void Boiler::device_info_web(JsonArray & root) { // fetch the values into a JSON document - // DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); StaticJsonDocument doc; JsonObject json = doc.to(); if (!export_values_main(json)) { @@ -234,6 +233,7 @@ void Boiler::device_info_web(JsonArray & root) { if (!export_values_ww(json)) { // append ww values return; } + // ww print_value_json(root, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); print_value_json(root, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); @@ -679,13 +679,11 @@ void Boiler::show_values(uuid::console::Shell & shell) { EMSdevice::show_values(shell); // for showing the header // fetch the values into a JSON document - // DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE); StaticJsonDocument doc; JsonObject json = doc.to(); if (!export_values_main(json)) { return; // empty } - // doc.shrinkToFit(); print_value_json(shell, F("heatingActive"), nullptr, F_(heatingActive), nullptr, json); print_value_json(shell, F("tapwaterActive"), nullptr, F_(tapwaterActive), nullptr, json); @@ -1045,9 +1043,9 @@ void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { if (telegram->message_data[4] & 0x80) { // valid date char code[3]; uint16_t codeNo; - code[0] = telegram->message_data[0]; - code[1] = telegram->message_data[1]; - code[2] = 0; + code[0] = telegram->message_data[0]; + code[1] = telegram->message_data[1]; + code[2] = 0; telegram->read_value(codeNo, 2); uint16_t year = (telegram->message_data[4] & 0x7F) + 2000; uint8_t month = telegram->message_data[5]; diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index 62ad9904..93c9dce9 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -75,7 +75,6 @@ void Switch::publish_values(JsonObject & json, bool force) { // export values to JSON bool Switch::export_values(JsonObject & json) { - if (Helpers::hasValue(flowTemp_)) { char s[7]; json["activated"] = Helpers::render_value(s, activated_, EMS_VALUE_BOOL); @@ -148,12 +147,12 @@ void Switch::register_mqtt_ha_config() { } // message 0x9B switch on/off -void Switch::process_WM10SetMessage(std::shared_ptr telegram){ +void Switch::process_WM10SetMessage(std::shared_ptr telegram) { changed_ |= telegram->read_value(activated_, 0); } -// message 0x9C holds flowtemp and unknown statusvalue -void Switch::process_WM10MonitorMessage(std::shared_ptr telegram){ +// message 0x9C holds flowtemp and unknown status value +void Switch::process_WM10MonitorMessage(std::shared_ptr telegram) { changed_ |= telegram->read_value(flowTemp_, 0); // is * 10 changed_ |= telegram->read_value(status_, 2); } diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 57b5c4f4..540affea 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1602,9 +1602,9 @@ void Thermostat::process_RCErrorMessage(std::shared_ptr telegram if (telegram->message_data[4] & 0x80) { // valid date char code[3]; uint16_t codeNo; - code[0] = telegram->message_data[0]; - code[1] = telegram->message_data[1]; - code[2] = 0; + code[0] = telegram->message_data[0]; + code[1] = telegram->message_data[1]; + code[2] = 0; telegram->read_value(codeNo, 2); uint16_t year = (telegram->message_data[4] & 0x7F) + 2000; uint8_t month = telegram->message_data[5]; From 963a08cfaa7ebf99d5184d433cf3e28a9bbf586f Mon Sep 17 00:00:00 2001 From: proddy Date: Wed, 18 Nov 2020 19:15:55 +0100 Subject: [PATCH 121/225] force 2.1.1b4 build --- CHANGELOG_LATEST.md | 2 +- src/version.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 86752578..589299f0 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -9,7 +9,7 @@ - SysLog has enable/disable flag in WebUI - Add solar configuration telegrams (#616) [thanks @hpanther] - `log trace` shows decoded telegrams, `watch unknown` for only unknown telegrams -- WM10 switch +- WM10 switch telegrams ### Fixed - mixer IPM pumpstatus diff --git a/src/version.h b/src/version.h index fff06e3d..cd910c59 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b3" +#define EMSESP_APP_VERSION "2.1.1b4" From 280f4e5099abebe3c1b16e28fc0646b04370aba1 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Nov 2020 10:46:19 +0100 Subject: [PATCH 122/225] check dest for read response --- src/emsesp.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index c2bc01e9..397a1833 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -590,8 +590,8 @@ void EMSESP::process_version(std::shared_ptr telegram) { // We also check for common telgram types, like the Version(0x02) // returns false if there are none found bool EMSESP::process_telegram(std::shared_ptr telegram) { - // if watching... - if (telegram->type_id == read_id_) { + // if watching or reading... + if ((telegram->type_id == read_id_) && (telegram->dest == txservice_.ems_bus_id())) { LOG_NOTICE(pretty_telegram(telegram).c_str()); publish_response(telegram); if (!read_next_) { From 93bc5c2793e2d268a5faef7e54d7ac356d65cae6 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Nov 2020 10:47:17 +0100 Subject: [PATCH 123/225] fix RC300 offsettemp, minexttemp #599 --- src/devices/thermostat.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 540affea..d3e7dfd5 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1624,7 +1624,11 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { } LOG_INFO(F("Setting min external temperature to %d"), mt); - write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); + if ((this->model() == EMS_DEVICE_FLAG_RC300) || (this->model() == EMS_DEVICE_FLAG_RC100)) { + write_command(0x240, 10, mt, 0x240); + } else { + write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); + } return true; } @@ -2204,6 +2208,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = 2; set_typeid = summer_typeids[hc->hc_num() - 1]; validate_typeid = set_typeid; + factor = 1; break; case HeatingCircuit::Mode::DESIGN: set_typeid = summer_typeids[hc->hc_num() - 1]; From 6fac688bbd91a46c23474713f66387811bcb639a Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Nov 2020 10:48:11 +0100 Subject: [PATCH 124/225] servicecode, heating_active in E4 telegram, #620 --- src/devices/boiler.cpp | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 8f338da3..27ade412 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -775,6 +775,9 @@ void Boiler::show_values(uuid::console::Shell & shell) { * Values will always be posted first time as heatingActive_ and tapwaterActive_ will have values EMS_VALUE_BOOL_NOTSET */ void Boiler::check_active() { + if (!Helpers::hasValue(boilerState_)) { + return; + } bool b; uint8_t val; @@ -896,25 +899,39 @@ void Boiler::process_UBAMonitorWW(std::shared_ptr telegram) { /* * UBAMonitorFastPlus - type 0xE4 - central heating monitor EMS+ - * Still to figure out are: serviceCode, retTemp, sysPress + * Still to figure out are: retTemp, sysPress + * temperatures at 7 and 23 always identical + * 88 00 E4 00 00 2D 2D 00 00 C9 34 02 21 64 3D 05 02 01 DE 00 00 00 00 03 62 14 00 02 21 00 00 33 + * 88 00 E4 23 00 00 00 00 00 2B 2B 83 */ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram) { changed_ |= telegram->read_value(selFlowTemp_, 6); changed_ |= telegram->read_bitvalue(burnGas_, 11, 0); + // changed_ |= telegram->read_bitvalue(heatPump_, 11, 1); // heating active? see SlowPlus changed_ |= telegram->read_bitvalue(wWHeat_, 11, 2); changed_ |= telegram->read_value(curBurnPow_, 10); changed_ |= telegram->read_value(selBurnPow_, 9); changed_ |= telegram->read_value(curFlowTemp_, 7); changed_ |= telegram->read_value(flameCurr_, 19); - // read the service code / installation status as appears on the display - if ((telegram->message_length > 4) && (telegram->offset == 0)) { - changed_ |= telegram->read_value(serviceCode_[0], 4); - changed_ |= telegram->read_value(serviceCode_[1], 5); - serviceCode_[2] = '\0'; + //changed_ |= telegram->read_value(temperatur_, 13); unknown temperature + + // read 3 char service code / installation status as appears on the display + if ((telegram->message_length > 3) && (telegram->offset == 0)) { + changed_ |= telegram->read_value(serviceCode_[0], 1); + changed_ |= telegram->read_value(serviceCode_[1], 2); + changed_ |= telegram->read_value(serviceCode_[2], 3); + serviceCode_[3] = '\0'; } + changed_ |= telegram->read_value(serviceCodeNumber_, 4); // at this point do a quick check to see if the hot water or heating is active + uint8_t state = 0; + telegram->read_value(state, 11); + boilerState_ = state & 0x01 ? 0x80 : 0; + boilerState_ |= state & 0x02 ? 0x01 : 0; + boilerState_ |= state & 0x04 ? 0x02 : 0; + check_active(); } @@ -938,6 +955,7 @@ void Boiler::process_UBAMonitorSlow(std::shared_ptr telegram) { /* * UBAMonitorSlowPlus2 - type 0xE3 + * 88 00 E3 00 04 00 00 00 00 01 00 00 00 00 00 02 22 2B 64 46 01 00 00 61 */ void Boiler::process_UBAMonitorSlowPlus2(std::shared_ptr telegram) { changed_ |= telegram->read_value(pumpMod2_, 13); // Heat Pump Modulation @@ -955,10 +973,12 @@ void Boiler::process_UBAMonitorSlowPlus(std::shared_ptr telegram changed_ |= telegram->read_value(burnWorkMin_, 13, 3); // force to 3 bytes changed_ |= telegram->read_value(heatWorkMin_, 19, 3); // force to 3 bytes changed_ |= telegram->read_value(pumpMod_, 25); + // temperature measurements at 4, and 6, see #620 } /* * UBAParametersPlus - type 0xe6 + * 88 0B E6 00 01 46 00 00 46 0A 00 01 06 FA 0A 01 02 64 01 00 00 1E 00 3C 01 00 00 00 01 00 9A */ void Boiler::process_UBAParametersPlus(std::shared_ptr telegram) { changed_ |= telegram->read_value(heatingActivated_, 0); From 0ca21175ceb6db2b955861cfc8850650554a7bd7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Nov 2020 10:50:29 +0100 Subject: [PATCH 125/225] changelog update --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 589299f0..1b8a5170 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -15,6 +15,7 @@ - mixer IPM pumpstatus - mixer devices in HA were incorrectly named - Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) +- serviceCodeNumber and heating_active for newer ems+ boilers ### Changed - optimized MQTT for HA to reduce heap fragmentation issues From 32cce931e574f2577f38981b8605b718171c71de Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 20 Nov 2020 12:12:27 +0100 Subject: [PATCH 126/225] 3-char serviceCode --- CHANGELOG_LATEST.md | 2 +- src/devices/boiler.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 1b8a5170..61dd9b51 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -15,7 +15,7 @@ - mixer IPM pumpstatus - mixer devices in HA were incorrectly named - Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) -- serviceCodeNumber and heating_active for newer ems+ boilers +- serviceCodeNumber, 3-char serviceCode and heating_active for newer ems+ boilers ### Changed - optimized MQTT for HA to reduce heap fragmentation issues diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 96ea37c4..b8e9938e 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -96,7 +96,7 @@ class Boiler : public EMSdevice { uint8_t curBurnPow_ = EMS_VALUE_UINT_NOTSET; // Burner current power % uint16_t flameCurr_ = EMS_VALUE_USHORT_NOTSET; // Flame current in micro amps uint8_t sysPress_ = EMS_VALUE_UINT_NOTSET; // System pressure - char serviceCode_[3] = {'\0'}; // 2 character status/service code + char serviceCode_[4] = {'\0'}; // 3 character status/service code uint16_t serviceCodeNumber_ = EMS_VALUE_USHORT_NOTSET; // error/service code uint8_t boilerState_ = EMS_VALUE_UINT_NOTSET; // Boiler state flag char lastCode_[30] = {'\0'}; From c0113921d66df9652f74e3c6eaa8cd6d4175744d Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 20 Nov 2020 15:02:58 +0100 Subject: [PATCH 127/225] increase json buffer to allow HA MQTT for EMS-ESP --- src/mqtt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index ea6dec34..32286a61 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -503,7 +503,7 @@ void Mqtt::on_connect() { // homeassistant/sensor/ems-esp/status/config // all the values from the heartbeat payload will be added as attributes to the entity state void Mqtt::ha_status() { - StaticJsonDocument doc; + StaticJsonDocument doc; doc["name"] = F("EMS-ESP status"); doc["uniq_id"] = F("status"); From bfc7555dd27c1e0ef4036e59805d7b071f36b2b2 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 21 Nov 2020 09:01:49 +0100 Subject: [PATCH 128/225] boiler exhausttemp in e5 --- src/devices/boiler.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 27ade412..80888811 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -963,17 +963,20 @@ void Boiler::process_UBAMonitorSlowPlus2(std::shared_ptr telegra /* * UBAMonitorSlowPlus - type 0xE5 - central heating monitor EMS+ + * Boiler(0x08) -> Me(0x0B), UBAMonitorSlowPlus(0xE5), + * data: 01 00 20 00 00 78 00 00 00 00 00 1E EB 00 9D 3E 00 00 00 00 6B 5E 00 06 4C 64 00 00 00 00 8A A3 */ void Boiler::process_UBAMonitorSlowPlus(std::shared_ptr telegram) { changed_ |= telegram->read_bitvalue(fanWork_, 2, 2); changed_ |= telegram->read_bitvalue(ignWork_, 2, 3); changed_ |= telegram->read_bitvalue(heatPump_, 2, 5); changed_ |= telegram->read_bitvalue(wWCirc_, 2, 7); + changed_ |= telegram->read_value(exhaustTemp_, 6); changed_ |= telegram->read_value(burnStarts_, 10, 3); // force to 3 bytes changed_ |= telegram->read_value(burnWorkMin_, 13, 3); // force to 3 bytes changed_ |= telegram->read_value(heatWorkMin_, 19, 3); // force to 3 bytes changed_ |= telegram->read_value(pumpMod_, 25); - // temperature measurements at 4, and 6, see #620 + // temperature measurements at 4, see #620 } /* @@ -1057,6 +1060,8 @@ void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegr // first byte: Maintenance due (0 = no, 3 = yes, due to operating hours, 8 = yes, due to date) } +#pragma GCC diagnostic pop + // 0x10, 0x11 void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr @@ -1081,8 +1086,6 @@ void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { } } -#pragma GCC diagnostic pop - // 0x15 void Boiler::process_UBAMaintenanceData(std::shared_ptr telegram) { // first byte: Maintenance messages (0 = none, 1 = by operating hours, 2 = by date) From 0639b3923e84c032be7edec04300531baf45ba34 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 21 Nov 2020 09:09:58 +0100 Subject: [PATCH 129/225] RC300 offsettemp factor, fetch curve-setpoint --- src/devices/thermostat.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index d3e7dfd5..5e5accfb 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -623,7 +623,11 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // Offset temperature if (Helpers::hasValue(hc->offsettemp)) { - dataThermostat["offsettemp"] = hc->offsettemp / 2; + if (flags == EMSdevice::EMS_DEVICE_FLAG_RC300 || flags == EMSdevice::EMS_DEVICE_FLAG_RC100) { + dataThermostat["offsettemp"] = hc->offsettemp; + } else { + dataThermostat["offsettemp"] = hc->offsettemp / 2; + } } // Design temperature @@ -847,6 +851,15 @@ std::shared_ptr Thermostat::heating_circuit(std::sha if (set_typeids.size()) { toggle_fetch(set_typeids[hc_num - 1], toggle_); } + if (summer_typeids.size()) { + toggle_fetch(summer_typeids[hc_num - 1], toggle_); + } + if (curve_typeids.size()) { + toggle_fetch(curve_typeids[hc_num - 1], toggle_); + } + if (timer_typeids.size()) { + toggle_fetch(timer_typeids[hc_num - 1], toggle_); + } return heating_circuits_.back(); // even after sorting, this should still point back to the newly created HC } From 65fe63115df5661486d4ef38e7c3132854f97ca8 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 21 Nov 2020 09:10:13 +0100 Subject: [PATCH 130/225] update changelog --- CHANGELOG_LATEST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 61dd9b51..dc77f1ee 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -15,7 +15,7 @@ - mixer IPM pumpstatus - mixer devices in HA were incorrectly named - Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) -- serviceCodeNumber, 3-char serviceCode and heating_active for newer ems+ boilers +- serviceCodeNumber, 3-char serviceCode, exhausttemp and heating_active for newer ems+ boilers ### Changed - optimized MQTT for HA to reduce heap fragmentation issues From ce490545ff3b7b406c35ab413b2b486ceaf60dbf Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 21 Nov 2020 09:19:18 +0100 Subject: [PATCH 131/225] add HA targetflowtemp to RC300 --- src/devices/thermostat.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 5e5accfb..b160aeb3 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1027,6 +1027,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), this->device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), this->device_type(), "roominfluence", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(targetflowtemp), this->device_type(), "targetflowtemp", F_(degrees), F_(icontemperature)); break; case EMS_DEVICE_FLAG_RC20_2: Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(daytemp), this->device_type(), "daytemp", F_(degrees), F_(icontemperature)); From 01e1c6e25b77f6d771a747a84a41131713aadae7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 22 Nov 2020 09:45:33 +0100 Subject: [PATCH 132/225] fix heating/tapwater #620 --- src/devices/boiler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 80888811..38a1add5 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -928,7 +928,7 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram // at this point do a quick check to see if the hot water or heating is active uint8_t state = 0; telegram->read_value(state, 11); - boilerState_ = state & 0x01 ? 0x80 : 0; + boilerState_ = state & 0x01 ? 0x08 : 0; boilerState_ |= state & 0x02 ? 0x01 : 0; boilerState_ |= state & 0x04 ? 0x02 : 0; From fc189e13c30b15aa10efbc5fc7878aa113bdb240 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 22 Nov 2020 10:09:24 +0100 Subject: [PATCH 133/225] telnet default settings #621 --- CHANGELOG_LATEST.md | 2 ++ lib/uuid-console/src/shell.cpp | 2 +- src/console.cpp | 1 + src/dallassensor.cpp | 2 +- src/emsdevice.cpp | 2 +- 5 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index dc77f1ee..eb26bff3 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -27,6 +27,8 @@ - renamed the command system report (Which dumped debug info) to `info` - Changing settings via web restarts only selected services - renamed pio targets (esp8266-ci and esp32-ci for GitHub CI) +- telnet default settings `log info`, timeout 60 min +- `log debug` not showing telegram names, use `log trace` or `watch on` to show the telegrams ### Removed - old shell and python build scripts diff --git a/lib/uuid-console/src/shell.cpp b/lib/uuid-console/src/shell.cpp index c5f2d9ca..29a97d43 100644 --- a/lib/uuid-console/src/shell.cpp +++ b/lib/uuid-console/src/shell.cpp @@ -61,7 +61,7 @@ void Shell::start() { uuid::log::Logger::register_handler(this, uuid::log::Level::DEBUG); // added by proddy //uuid::log::Logger::register_handler(this, uuid::log::Level::INFO); // added by proddy #else - uuid::log::Logger::register_handler(this, uuid::log::Level::NOTICE); + uuid::log::Logger::register_handler(this, uuid::log::Level::INFO); #endif line_buffer_.reserve(maximum_command_line_length_); diff --git a/src/console.cpp b/src/console.cpp index 5b86d17b..e1bbd4cc 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -681,6 +681,7 @@ void Console::start() { // note, this must be started after the network/wifi for ESP32 otherwise it'll crash #ifndef EMSESP_STANDALONE telnet_.start(); + telnet_.initial_idle_timeout(3600); // in sec, one hour idle timeout telnet_.default_write_timeout(1000); // in ms, socket timeout 1 second #endif diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index d85677b0..741c2210 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -151,11 +151,11 @@ void DallasSensor::loop() { scancnt_ = 0; } else if (scancnt_ == -2) { // startup firstscan_ = sensors_.size(); + LOG_DEBUG(F("First scan found %d dallassensor(s). Adding them."), firstscan_); } else if ((scancnt_ <= 0) && (firstscan_ != sensors_.size())) { // check 2 times for no change of sensor # scancnt_ = -3; sensors_.clear(); // restart scaning and clear to get correct numbering } - // LOG_DEBUG(F("Found %zu sensor(s). Adding them."), sensors_.size()); // uncomment for debug state_ = State::IDLE; } } diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 091f4c8a..3c26d3d0 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -332,7 +332,7 @@ bool EMSdevice::handle_telegram(std::shared_ptr telegram) { return false; } - EMSESP::logger().debug(F("Received %s"), uuid::read_flash_string(tf.telegram_type_name_).c_str()); + // EMSESP::logger().debug(F("Received %s"), uuid::read_flash_string(tf.telegram_type_name_).c_str()); tf.process_function_(telegram); return true; } From f1080c6095450af0d8b8c05a353b3feddd019597 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 16:15:07 +0100 Subject: [PATCH 134/225] add cppcheck --- .gitignore | 1 + makefile | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index aafac8a9..8271f200 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ firmware /interface/build/ /interface/node_modules/ .VSCodeCounter/ +cppcheck.out.xml diff --git a/makefile b/makefile index 5f780ba0..6926d277 100644 --- a/makefile +++ b/makefile @@ -21,6 +21,9 @@ SOURCES := src lib_standalone lib/uuid-common/src lib/uuid-console/src lib/uui INCLUDES := lib/ArduinoJson/src lib_standalone lib/uuid-common/src lib/uuid-console/src lib/uuid-log/src lib/uuid-telnet/src lib/uuid-syslog/src src/devices src LIBRARIES := +CPPCHECK = cppcheck +CHECKFLAGS = -q + #---------------------------------------------------------------------- # Languages Standard #---------------------------------------------------------------------- @@ -110,7 +113,7 @@ COMPILE.cpp = $(CXX) $(CXX_STANDARD) $(CXXFLAGS) $(DEPFLAGS) -c $< -o $@ #---------------------------------------------------------------------- # Targets #---------------------------------------------------------------------- -all: $(OUTPUT) +all: cppcheck.out.xml $(OUTPUT) $(OUTPUT): $(OBJS) @mkdir -p $(@D) @@ -129,11 +132,14 @@ $(BUILD)/%.o: %.s @mkdir -p $(@D) $(COMPILE.s) +cppcheck.out.xml: $(SOURCES) + $(CPPCHECK) $(CHECKFLAGS) $^ --xml >$@ + run: $(OUTPUT) @$< clean: - @$(RM) -r $(BUILD) $(OUTPUT) + @$(RM) -r $(BUILD) $(OUTPUT) cppcheck.out.xml help: @echo available targets: all run clean From a0ec2ec9d556a28bb26c8572bdc9b09de0ccde3f Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 16:15:18 +0100 Subject: [PATCH 135/225] fix for out of bound --- lib/uuid-log/src/format_timestamp_ms.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/uuid-log/src/format_timestamp_ms.cpp b/lib/uuid-log/src/format_timestamp_ms.cpp index 4cb977a5..0c59c1ff 100644 --- a/lib/uuid-log/src/format_timestamp_ms.cpp +++ b/lib/uuid-log/src/format_timestamp_ms.cpp @@ -45,7 +45,7 @@ std::string format_timestamp_ms(uint64_t timestamp_ms, unsigned int days_width) milliseconds = timestamp_ms; - std::vector text(10 + 1 /* days */ + 2 + 1 /* hours */ + 2 + 1 /* minutes */ + 2 + 1 /* seconds */ + 3 /* milliseconds */ + 1); + static std::vector text(10 + 1 /* days */ + 2 + 1 /* hours */ + 2 + 1 /* minutes */ + 2 + 1 /* seconds */ + 3 /* milliseconds */ + 1); snprintf_P(text.data(), text.size(), PSTR("%0*lu+%02u:%02u:%02u.%03u"), std::min(days_width, 10U), days, hours, minutes, seconds, milliseconds); From 2be647ade8a097ae91f07ba605c8efff2f7f37e5 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 16:15:37 +0100 Subject: [PATCH 136/225] rename JUNKERS_2 to OLD --- src/device_library.h | 8 ++++---- src/emsdevice.h | 24 ++++++++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/device_library.h b/src/device_library.h index 6481f2af..95631e34 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -84,11 +84,11 @@ // Thermostat - Junkers - 0x10 {105, DeviceType::THERMOSTAT, F("FW100"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS}, {106, DeviceType::THERMOSTAT, F("FW200"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS}, -{107, DeviceType::THERMOSTAT, F("FR100"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, // older model -{108, DeviceType::THERMOSTAT, F("FR110"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, // older model +{107, DeviceType::THERMOSTAT, F("FR100"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_OLD}, // older model +{108, DeviceType::THERMOSTAT, F("FR110"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_OLD}, // older model {111, DeviceType::THERMOSTAT, F("FR10"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS}, -{147, DeviceType::THERMOSTAT, F("FR50"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, -{191, DeviceType::THERMOSTAT, F("FR120"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_2}, // older model +{147, DeviceType::THERMOSTAT, F("FR50"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_OLD}, +{191, DeviceType::THERMOSTAT, F("FR120"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS | DeviceFlags::EMS_DEVICE_FLAG_JUNKERS_OLD}, // older model {192, DeviceType::THERMOSTAT, F("FW120"), DeviceFlags::EMS_DEVICE_FLAG_JUNKERS}, // Solar Modules - 0x30 diff --git a/src/emsdevice.h b/src/emsdevice.h index b2e2589f..1c35858a 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -255,18 +255,18 @@ class EMSdevice { static constexpr uint8_t EMS_DEVICE_FLAG_IPM = 3; // Thermostats - static constexpr uint8_t EMS_DEVICE_FLAG_NO_WRITE = (1 << 7); // last bit - static constexpr uint8_t EMS_DEVICE_FLAG_EASY = 1; - static constexpr uint8_t EMS_DEVICE_FLAG_RC10 = 2; - static constexpr uint8_t EMS_DEVICE_FLAG_RC20 = 3; - static constexpr uint8_t EMS_DEVICE_FLAG_RC20_2 = 4; // Variation on RC20, Older, like ES72? - static constexpr uint8_t EMS_DEVICE_FLAG_RC30_1 = 5; // variation on RC30, Newer? - static constexpr uint8_t EMS_DEVICE_FLAG_RC30 = 6; - static constexpr uint8_t EMS_DEVICE_FLAG_RC35 = 7; - static constexpr uint8_t EMS_DEVICE_FLAG_RC300 = 8; - static constexpr uint8_t EMS_DEVICE_FLAG_RC100 = 9; - static constexpr uint8_t EMS_DEVICE_FLAG_JUNKERS = 10; - static constexpr uint8_t EMS_DEVICE_FLAG_JUNKERS_2 = (1 << 6); // 6th bit set if older models, like FR120, FR100 + static constexpr uint8_t EMS_DEVICE_FLAG_NO_WRITE = (1 << 7); // last bit + static constexpr uint8_t EMS_DEVICE_FLAG_JUNKERS_OLD = (1 << 6); // 6th bit set if older models, like FR120, FR100 + static constexpr uint8_t EMS_DEVICE_FLAG_EASY = 1; + static constexpr uint8_t EMS_DEVICE_FLAG_RC10 = 2; + static constexpr uint8_t EMS_DEVICE_FLAG_RC20 = 3; + static constexpr uint8_t EMS_DEVICE_FLAG_RC20_2 = 4; // Variation on RC20, Older, like ES72? + static constexpr uint8_t EMS_DEVICE_FLAG_RC30_1 = 5; // variation on RC30, Newer? + static constexpr uint8_t EMS_DEVICE_FLAG_RC30 = 6; + static constexpr uint8_t EMS_DEVICE_FLAG_RC35 = 7; + static constexpr uint8_t EMS_DEVICE_FLAG_RC300 = 8; + static constexpr uint8_t EMS_DEVICE_FLAG_RC100 = 9; + static constexpr uint8_t EMS_DEVICE_FLAG_JUNKERS = 10; private: uint8_t unique_id_; From 0da8f9249679a8129b011ffcb4011effe3317a43 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 16:16:09 +0100 Subject: [PATCH 137/225] remove this->, rename flags to model --- src/devices/heatpump.cpp | 6 +- src/devices/mixer.cpp | 22 ++-- src/devices/solar.cpp | 34 +++--- src/devices/switch.cpp | 8 +- src/devices/thermostat.cpp | 217 ++++++++++++++++--------------------- src/devices/thermostat.h | 8 +- src/emsdevice.cpp | 12 +- 7 files changed, 141 insertions(+), 166 deletions(-) diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index 195d0da9..2fa66fab 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -111,14 +111,14 @@ void Heatpump::register_mqtt_ha_config() { JsonObject dev = doc.createNestedObject("dev"); dev["name"] = F("EMS-ESP Heat Pump"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = this->brand_to_string(); + dev["mf"] = brand_to_string(); dev["mdl"] = this->name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-heatpump"); Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/heatpump/config"), doc.as(), true); // publish the config payload with retain flag - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(airHumidity), this->device_type(), "airHumidity", F_(percent), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dewTemperature), this->device_type(), "dewTemperature", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(airHumidity), device_type(), "airHumidity", F_(percent), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dewTemperature), device_type(), "dewTemperature", F_(degrees), nullptr); mqtt_ha_config_ = true; // done } diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index db96d2c0..e611b919 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -187,30 +187,30 @@ void Mixer::register_mqtt_ha_config() { JsonObject dev = doc.createNestedObject("dev"); dev["name"] = F("EMS-ESP Mixer"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = this->brand_to_string(); + dev["mf"] = brand_to_string(); dev["mdl"] = this->name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-mixer"); std::string topic(100, '\0'); - if (this->type() == Type::HC) { + if (type() == Type::HC) { snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_hc%d/config"), hc_); Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag char hc_name[10]; snprintf_P(hc_name, sizeof(hc_name), PSTR("hc%d"), hc_); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowTemp), this->device_type(), "flowTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowSetTemp), this->device_type(), "flowSetTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(pumpStatus), this->device_type(), "pumpStatus", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(valveStatus), this->device_type(), "valveStatus", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowTemp), device_type(), "flowTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowSetTemp), device_type(), "flowSetTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(pumpStatus), device_type(), "pumpStatus", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(valveStatus), device_type(), "valveStatus", nullptr, nullptr); } else { // WWC snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_wwc%d/config"), hc_); Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag char wwc_name[10]; snprintf_P(wwc_name, sizeof(wwc_name), PSTR("wwc%d"), hc_); - Mqtt::register_mqtt_ha_sensor(wwc_name, nullptr, F_(wwTemp), this->device_type(), "wwTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(wwc_name, nullptr, F_(pumpStatus), this->device_type(), "pumpStatus", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(wwc_name, nullptr, F_(tempStatus), this->device_type(), "tempStatus", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(wwc_name, nullptr, F_(wwTemp), device_type(), "wwTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(wwc_name, nullptr, F_(pumpStatus), device_type(), "pumpStatus", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(wwc_name, nullptr, F_(tempStatus), device_type(), "tempStatus", nullptr, nullptr); } mqtt_ha_config_ = true; // done @@ -224,14 +224,14 @@ bool Mixer::export_values(JsonObject & json) { // returns false if empty bool Mixer::export_values_format(uint8_t mqtt_format, JsonObject & json) { // check if there is data for the mixer unit - if (this->type() == Type::NONE) { + if (type() == Type::NONE) { return 0; } JsonObject json_hc; char hc_name[10]; // hc{1-4} - if (this->type() == Type::HC) { + if (type() == Type::HC) { snprintf_P(hc_name, sizeof(hc_name), PSTR("hc%d"), hc_); if (mqtt_format == Mqtt::Format::SINGLE) { json_hc = json; diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index c341e01c..b714b0ad 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -172,27 +172,27 @@ void Solar::register_mqtt_ha_config() { JsonObject dev = doc.createNestedObject("dev"); dev["name"] = F("EMS-ESP Solar"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = this->brand_to_string(); - dev["mdl"] = this->name(); + dev["mf"] = brand_to_string(); + dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-solar"); Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/solar/config"), doc.as(), true); // publish the config payload with retain flag - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(collectorTemp), this->device_type(), "collectorTemp", F_(degrees), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp), this->device_type(), "tankBottomTemp", F_(degrees), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp2), this->device_type(), "tankBottomTemp2", F_(degrees), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tank1MaxTempCurrent), this->device_type(), "tank1MaxTempCurrent", F_(degrees), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatExchangerTemp), this->device_type(), "heatExchangerTemp", F_(degrees), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPumpModulation), this->device_type(), "solarPumpModulation", F_(percent), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(cylinderPumpModulation), this->device_type(), "cylinderPumpModulation", F_(percent), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpWorkMin), this->device_type(), "pumpWorkMin", F_(min), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyLastHour), this->device_type(), "energyLastHour", F_(wh), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyToday), this->device_type(), "energyToday", F_(wh), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyTotal), this->device_type(), "energyTotal", F_(kwh), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPump), this->device_type(), "solarPump", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(valveStatus), this->device_type(), "valveStatus", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankHeated), this->device_type(), "tankHeated", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(collectorShutdown), this->device_type(), "collectorShutdown", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(collectorTemp), device_type(), "collectorTemp", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp), device_type(), "tankBottomTemp", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp2), device_type(), "tankBottomTemp2", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tank1MaxTempCurrent), device_type(), "tank1MaxTempCurrent", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatExchangerTemp), device_type(), "heatExchangerTemp", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPumpModulation), device_type(), "solarPumpModulation", F_(percent), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(cylinderPumpModulation), device_type(), "cylinderPumpModulation", F_(percent), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpWorkMin), device_type(), "pumpWorkMin", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyLastHour), device_type(), "energyLastHour", F_(wh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyToday), device_type(), "energyToday", F_(wh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(energyTotal), device_type(), "energyTotal", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(solarPump), device_type(), "solarPump", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(valveStatus), device_type(), "valveStatus", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankHeated), device_type(), "tankHeated", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(collectorShutdown), device_type(), "collectorShutdown", nullptr, nullptr); mqtt_ha_config_ = true; // done } diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index 93c9dce9..60ca552a 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -133,15 +133,15 @@ void Switch::register_mqtt_ha_config() { JsonObject dev = doc.createNestedObject("dev"); dev["name"] = F("EMS-ESP Switch"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = this->brand_to_string(); + dev["mf"] = brand_to_string(); dev["mdl"] = this->name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-switch"); Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/switch/config"), doc.as(), true); // publish the config payload with retain flag - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(activated), this->device_type(), "activated", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(flowTemp), this->device_type(), "flowTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(status), this->device_type(), "status", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(activated), device_type(), "activated", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(flowTemp), device_type(), "flowTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(status), device_type(), "status", nullptr, nullptr); mqtt_ha_config_ = true; // done } diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index b160aeb3..69a4fb87 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -42,7 +42,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i && ((actual_master_thermostat == EMSESP_DEFAULT_MASTER_THERMOSTAT) || (device_id < actual_master_thermostat)))) { EMSESP::actual_master_thermostat(device_id); actual_master_thermostat = device_id; - this->reserve_mem(25); // reserve some space for the telegram registries, to avoid memory fragmentation + reserve_mem(25); // reserve some space for the telegram registries, to avoid memory fragmentation // common telegram handlers register_telegram_type(EMS_TYPE_RCOutdoorTemp, F("RCOutdoorTemp"), false, [&](std::shared_ptr t) { process_RCOutdoorTemp(t); }); @@ -137,7 +137,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i register_telegram_type(monitor_typeids[i], F("JunkersMonitor"), false, [&](std::shared_ptr t) { process_JunkersMonitor(t); }); } - if (this->has_flags(EMS_DEVICE_FLAG_JUNKERS_2)) { + if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { // FR120, FR100 set_typeids = {0x0179, 0x017A, 0x017B, 0x017C}; for (uint8_t i = 0; i < monitor_typeids.size(); i++) { @@ -249,7 +249,7 @@ void Thermostat::device_info_web(JsonArray & root) { // we check if any of the thermostat values have changed and then republish if necessary bool Thermostat::updated_values() { // only publish on the master thermostat - if (EMSESP::actual_master_thermostat() != this->device_id()) { + if (EMSESP::actual_master_thermostat() != device_id()) { return false; } if (changed_) { @@ -336,7 +336,7 @@ void Thermostat::show_values(uuid::console::Shell & shell) { // publish values via MQTT void Thermostat::publish_values(JsonObject & json, bool force) { - if (EMSESP::actual_master_thermostat() != this->device_id()) { + if (EMSESP::actual_master_thermostat() != device_id()) { return; } @@ -527,7 +527,7 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { // if the mqtt_format is 0 then it will not perform the MQTT publish // returns false if empty bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermostat) { - uint8_t flags = this->model(); + uint8_t model = this->model(); JsonObject dataThermostat; bool has_data = false; @@ -548,10 +548,10 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // different logic on how temperature values are stored, depending on model uint8_t setpoint_temp_divider; uint8_t curr_temp_divider; - if (flags == EMS_DEVICE_FLAG_EASY) { + if (model == EMS_DEVICE_FLAG_EASY) { setpoint_temp_divider = 100; curr_temp_divider = 100; - } else if (flags == EMS_DEVICE_FLAG_JUNKERS) { + } else if (model == EMS_DEVICE_FLAG_JUNKERS) { setpoint_temp_divider = 10; curr_temp_divider = 10; } else { @@ -570,10 +570,10 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost } if (Helpers::hasValue(hc->daytemp)) { - if (flags == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { + if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { // Heat temperature dataThermostat["heattemp"] = (float)hc->daytemp / 2; - } else if (flags == EMSdevice::EMS_DEVICE_FLAG_RC300 || flags == EMSdevice::EMS_DEVICE_FLAG_RC100) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_RC300 || model == EMSdevice::EMS_DEVICE_FLAG_RC100) { // Comfort temperature dataThermostat["comforttemp"] = (float)hc->daytemp / 2; } else { @@ -583,7 +583,7 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost } if (Helpers::hasValue(hc->nighttemp)) { - if (flags == EMSdevice::EMS_DEVICE_FLAG_JUNKERS || flags == EMSdevice::EMS_DEVICE_FLAG_RC300 || flags == EMSdevice::EMS_DEVICE_FLAG_RC100) { + if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS || model == EMSdevice::EMS_DEVICE_FLAG_RC300 || model == EMSdevice::EMS_DEVICE_FLAG_RC100) { // Eco temperature dataThermostat["ecotemp"] = (float)hc->nighttemp / 2; } else { @@ -604,7 +604,7 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // Nofrost temperature if (Helpers::hasValue(hc->nofrosttemp)) { - if (flags == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { + if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { dataThermostat["nofrosttemp"] = (float)hc->nofrosttemp / 2; } else { dataThermostat["nofrosttemp"] = hc->nofrosttemp; @@ -623,7 +623,7 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // Offset temperature if (Helpers::hasValue(hc->offsettemp)) { - if (flags == EMSdevice::EMS_DEVICE_FLAG_RC300 || flags == EMSdevice::EMS_DEVICE_FLAG_RC100) { + if (model == EMSdevice::EMS_DEVICE_FLAG_RC300 || model == EMSdevice::EMS_DEVICE_FLAG_RC100) { dataThermostat["offsettemp"] = hc->offsettemp; } else { dataThermostat["offsettemp"] = hc->offsettemp / 2; @@ -668,7 +668,7 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // mode - always force showing this when in HA so not to break HA's climate component if ((Helpers::hasValue(hc->mode)) || (mqtt_format == Mqtt::Format::HA)) { - uint8_t hc_mode = hc->get_mode(flags); + uint8_t hc_mode = hc->get_mode(model); // if we're sending to HA the only valid mode types are heat, auto and off if (mqtt_format == Mqtt::Format::HA) { if ((hc_mode == HeatingCircuit::Mode::MANUAL) || (hc_mode == HeatingCircuit::Mode::DAY)) { @@ -691,7 +691,7 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost } else if (Helpers::hasValue(hc->holiday_mode) && hc->holiday_mode) { dataThermostat["modetype"] = F("holiday"); } else if (Helpers::hasValue(hc->mode_type)) { - dataThermostat["modetype"] = mode_tostring(hc->get_mode_type(flags)); + dataThermostat["modetype"] = mode_tostring(hc->get_mode_type(model)); } // if format is single, send immediately and clear object for next hc @@ -880,40 +880,40 @@ void Thermostat::register_mqtt_ha_config() { JsonObject dev = doc.createNestedObject("dev"); dev["name"] = F("EMS-ESP Thermostat"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = this->brand_to_string(); - dev["mdl"] = this->name(); + dev["mf"] = brand_to_string(); + dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-thermostat"); Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/thermostat/config"), doc.as(), true); // publish the config payload with retain flag - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(time), this->device_type(), "time", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(error), this->device_type(), "errorcode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(time), device_type(), "time", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(error), device_type(), "errorcode", nullptr, nullptr); uint8_t model = this->model(); if (model == EMS_DEVICE_FLAG_RC30_1) { - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(display), this->device_type(), "display", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(language), this->device_type(), "language", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(display), device_type(), "display", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(language), device_type(), "language", nullptr, nullptr); } if (model == EMS_DEVICE_FLAG_RC300 || model == EMS_DEVICE_FLAG_RC100) { - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dampedtemp), this->device_type(), "dampedtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(building), this->device_type(), "building", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(minexttemp), this->device_type(), "minexttemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(floordry), this->device_type(), "floordry", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(floordrytemp), this->device_type(), "floordrytemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwmode), this->device_type(), "wwmode", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwtemp), this->device_type(), "wwtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwcircmode), this->device_type(), "wwcircmode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dampedtemp), device_type(), "dampedtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(building), device_type(), "building", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(minexttemp), device_type(), "minexttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(floordry), device_type(), "floordry", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(floordrytemp), device_type(), "floordrytemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwmode), device_type(), "wwmode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwtemp), device_type(), "wwtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwcircmode), device_type(), "wwcircmode", nullptr, nullptr); } if (model == EMS_DEVICE_FLAG_RC35 || model == EMS_DEVICE_FLAG_RC30_1) { // excluding inttemp1, inttemp2, intoffset, minexttemp - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dampedtemp), this->device_type(), "dampedtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(building), this->device_type(), "building", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(minexttemp), this->device_type(), "minexttemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwmode), this->device_type(), "wwmode", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwcircmode), this->device_type(), "wwcircmode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dampedtemp), device_type(), "dampedtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(building), device_type(), "building", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(minexttemp), device_type(), "minexttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwmode), device_type(), "wwmode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wwcircmode), device_type(), "wwcircmode", nullptr, nullptr); } } @@ -963,32 +963,11 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { modes.add(F("heat")); modes.add(F("off")); - /* - uint8_t model = this->model(); - if (model == EMSdevice::EMS_DEVICE_FLAG_RC20_2) { - modes.add(F("night")); - modes.add(F("day")); - } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { - modes.add(F("eco")); - modes.add(F("comfort")); - modes.add(F("auto")); - } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { - modes.add(F("nofrost")); - modes.add(F("eco")); - modes.add(F("heat")); - modes.add(F("auto")); - } else { // default for all other thermostats - modes.add(F("night")); - modes.add(F("day")); - modes.add(F("auto")); - } - */ - JsonObject dev = doc.createNestedObject("dev"); dev["name"] = F("EMS-ESP Thermostat"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = this->brand_to_string(); - dev["mdl"] = this->name(); + dev["mf"] = brand_to_string(); + dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); ids.add(F("ems-esp-thermostat")); @@ -1007,52 +986,52 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { char s[3]; strlcat(hc_name, Helpers::itoa(s, hc_num), 10); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(mode), this->device_type(), "mode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(mode), device_type(), "mode", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(seltemp), this->device_type(), "seltemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(currtemp), this->device_type(), "currtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(seltemp), device_type(), "seltemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(currtemp), device_type(), "currtemp", F_(degrees), F_(icontemperature)); uint8_t model = this->model(); switch (model) { case EMS_DEVICE_FLAG_RC100: case EMS_DEVICE_FLAG_RC300: - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), this->device_type(), "modetype", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(ecotemp), this->device_type(), "ecotemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(manualtemp), this->device_type(), "manualtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(comforttemp), this->device_type(), "comforttemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), this->device_type(), "summertemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(designtemp), this->device_type(), "designtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(offsettemp), this->device_type(), "offsettemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(minflowtemp), this->device_type(), "minflowtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), this->device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), this->device_type(), "roominfluence", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(targetflowtemp), this->device_type(), "targetflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), device_type(), "modetype", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(ecotemp), device_type(), "ecotemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(manualtemp), device_type(), "manualtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(comforttemp), device_type(), "comforttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), device_type(), "summertemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(designtemp), device_type(), "designtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(offsettemp), device_type(), "offsettemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(minflowtemp), device_type(), "minflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), device_type(), "roominfluence", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(targetflowtemp), device_type(), "targetflowtemp", F_(degrees), F_(icontemperature)); break; case EMS_DEVICE_FLAG_RC20_2: - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(daytemp), this->device_type(), "daytemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nighttemp), this->device_type(), "nighttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(daytemp), device_type(), "daytemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nighttemp), device_type(), "nighttemp", F_(degrees), F_(icontemperature)); break; case EMS_DEVICE_FLAG_RC30_1: case EMS_DEVICE_FLAG_RC35: - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), this->device_type(), "modetype", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nighttemp), this->device_type(), "nighttemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(daytemp), this->device_type(), "daytemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(designtemp), this->device_type(), "designtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(offsettemp), this->device_type(), "offsettemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(holidaytemp), this->device_type(), "holidaytemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(targetflowtemp), this->device_type(), "targetflowtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), this->device_type(), "summertemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), this->device_type(), "roominfluence", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(minflowtemp), this->device_type(), "minflowtemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), this->device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), device_type(), "modetype", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nighttemp), device_type(), "nighttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(daytemp), device_type(), "daytemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(designtemp), device_type(), "designtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(offsettemp), device_type(), "offsettemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(holidaytemp), device_type(), "holidaytemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(targetflowtemp), device_type(), "targetflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(summertemp), device_type(), "summertemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), device_type(), "roominfluence", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(minflowtemp), device_type(), "minflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); break; case EMS_DEVICE_FLAG_JUNKERS: - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), this->device_type(), "modetype", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(heattemp), this->device_type(), "heattemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(ecotemp), this->device_type(), "ecotemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), this->device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), device_type(), "modetype", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(heattemp), device_type(), "heattemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(ecotemp), device_type(), "ecotemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); break; default: break; @@ -1080,14 +1059,12 @@ bool Thermostat::thermostat_ha_cmd(const char * message, uint8_t hc_num) { // decodes the thermostat mode for the heating circuit based on the thermostat type // modes are off, manual, auto, day and night -uint8_t Thermostat::HeatingCircuit::get_mode(uint8_t flags) const { +uint8_t Thermostat::HeatingCircuit::get_mode(uint8_t model) const { if (!Helpers::hasValue(mode)) { return HeatingCircuit::Mode::UNKNOWN; } - flags &= 0x0F; // strip top 4 bits - - if (flags == EMSdevice::EMS_DEVICE_FLAG_RC20) { + if (model == EMSdevice::EMS_DEVICE_FLAG_RC20) { if (mode == 0) { return HeatingCircuit::Mode::OFF; } else if (mode == 1) { @@ -1095,13 +1072,13 @@ uint8_t Thermostat::HeatingCircuit::get_mode(uint8_t flags) const { } else if (mode == 2) { return HeatingCircuit::Mode::AUTO; } - } else if ((flags == EMSdevice::EMS_DEVICE_FLAG_RC300) || (flags == EMSdevice::EMS_DEVICE_FLAG_RC100)) { + } else if ((model == EMSdevice::EMS_DEVICE_FLAG_RC300) || (model == EMSdevice::EMS_DEVICE_FLAG_RC100)) { if (mode == 0) { return HeatingCircuit::Mode::MANUAL; } else if (mode == 1) { return HeatingCircuit::Mode::AUTO; } - } else if (flags == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { + } else if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { if (mode == 1) { return HeatingCircuit::Mode::MANUAL; } else if (mode == 2) { @@ -1124,10 +1101,8 @@ uint8_t Thermostat::HeatingCircuit::get_mode(uint8_t flags) const { // figures out the thermostat day/night mode depending on the thermostat type // mode types are day, night, eco, comfort -uint8_t Thermostat::HeatingCircuit::get_mode_type(uint8_t flags) const { - flags &= 0x0F; // strip top 4 bits - - if (flags == EMS_DEVICE_FLAG_JUNKERS) { +uint8_t Thermostat::HeatingCircuit::get_mode_type(uint8_t model) const { + if (model == EMS_DEVICE_FLAG_JUNKERS) { if (mode_type == 3) { return HeatingCircuit::Mode::HEAT; } else if (mode_type == 2) { @@ -1135,19 +1110,19 @@ uint8_t Thermostat::HeatingCircuit::get_mode_type(uint8_t flags) const { } else if (mode_type == 1) { return HeatingCircuit::Mode::NOFROST; } - } else if ((flags == EMS_DEVICE_FLAG_RC35) || (flags == EMS_DEVICE_FLAG_RC30_1)) { + } else if ((model == EMS_DEVICE_FLAG_RC35) || (model == EMS_DEVICE_FLAG_RC30_1)) { if (mode_type == 0) { return HeatingCircuit::Mode::NIGHT; } else if (mode_type == 1) { return HeatingCircuit::Mode::DAY; } - } else if (flags == EMS_DEVICE_FLAG_RC300) { + } else if (model == EMS_DEVICE_FLAG_RC300) { if (mode_type == 0) { return HeatingCircuit::Mode::ECO; } else if (mode_type == 1) { return HeatingCircuit::Mode::COMFORT; } - } else if (flags == EMS_DEVICE_FLAG_RC100) { + } else if (model == EMS_DEVICE_FLAG_RC100) { return HeatingCircuit::Mode::DAY; // no modes on these devices } @@ -1557,7 +1532,7 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { // process_RCTime - type 0x06 - date and time from a thermostat - 14 bytes long void Thermostat::process_RCTime(std::shared_ptr telegram) { - if (this->flags() == EMS_DEVICE_FLAG_EASY) { + if (flags() == EMS_DEVICE_FLAG_EASY) { return; // not supported } if (telegram->message_length < 7) { @@ -1638,7 +1613,7 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { } LOG_INFO(F("Setting min external temperature to %d"), mt); - if ((this->model() == EMS_DEVICE_FLAG_RC300) || (this->model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 10, mt, 0x240); } else { write_command(EMS_TYPE_IBASettings, 5, mt, EMS_TYPE_IBASettings); @@ -1721,7 +1696,7 @@ bool Thermostat::set_building(const char * value, const int8_t id) { LOG_INFO(F("Setting building to %s"), value); - if ((this->model() == EMS_DEVICE_FLAG_RC300) || (this->model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 9, bd + 1, 0x240); } else { write_command(EMS_TYPE_IBASettings, 6, bd, EMS_TYPE_IBASettings); @@ -1767,7 +1742,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) { // sets the thermostat ww working mode, where mode is a string, ems and ems+ bool Thermostat::set_wwmode(const char * value, const int8_t id) { uint8_t set = 0xFF; - if ((this->model() == EMS_DEVICE_FLAG_RC300) || (this->model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, {F("off"), F("low"), F("high"), F("auto"), F("own")})) { LOG_WARNING(F("Set warm water mode: Invalid mode")); return false; @@ -1826,7 +1801,7 @@ bool Thermostat::set_wwonetime(const char * value, const int8_t id) { // sets the thermostat ww circulation working mode, where mode is a string bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set = 0xFF; - if ((this->model() == EMS_DEVICE_FLAG_RC300) || (this->model() == EMS_DEVICE_FLAG_RC100)) { + if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, {F("off"), F("on"), F("auto"), F("own")})) { LOG_WARNING(F("Set warm water circulation mode: Invalid mode")); return false; @@ -1854,7 +1829,7 @@ bool Thermostat::set_holiday(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; std::shared_ptr hc = heating_circuit(hc_num); if (hc == nullptr) { - LOG_WARNING(F("Set holiday: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, this->device_id()); + LOG_WARNING(F("Set holiday: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, device_id()); return false; } @@ -1883,7 +1858,7 @@ bool Thermostat::set_pause(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; std::shared_ptr hc = heating_circuit(hc_num); if (hc == nullptr) { - LOG_WARNING(F("Set pause: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, this->device_id()); + LOG_WARNING(F("Set pause: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, device_id()); return false; } @@ -1904,7 +1879,7 @@ bool Thermostat::set_party(const char * value, const int8_t id) { std::shared_ptr hc = heating_circuit(hc_num); if (hc == nullptr) { - LOG_WARNING(F("Set party: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, this->device_id()); + LOG_WARNING(F("Set party: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, device_id()); return false; } LOG_INFO(F("Setting party: %d hours, hc: %d"), hrs, hc->hc_num()); @@ -2045,7 +2020,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { break; } - switch (this->model()) { + switch (model()) { case EMSdevice::EMS_DEVICE_FLAG_RC20: offset = EMS_OFFSET_RC20Set_mode; validate_typeid = set_typeids[hc_p]; @@ -2074,7 +2049,7 @@ bool Thermostat::set_mode_n(const uint8_t mode, const uint8_t hc_num) { } break; case EMSdevice::EMS_DEVICE_FLAG_JUNKERS: - if (this->has_flags(EMS_DEVICE_FLAG_JUNKERS_2)) { + if (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)) { offset = EMS_OFFSET_JunkersSetMessage2_set_mode; } else { offset = EMS_OFFSET_JunkersSetMessage_set_mode; @@ -2181,7 +2156,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co // get hc based on number std::shared_ptr hc = heating_circuit(hc_num); if (hc == nullptr) { - LOG_WARNING(F("Set temperature: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, this->device_id()); + LOG_WARNING(F("Set temperature: Heating Circuit %d not found or activated for device ID 0x%02X"), hc_num, device_id()); return false; } @@ -2264,7 +2239,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; default: case HeatingCircuit::Mode::AUTO: - uint8_t mode_ = hc->get_mode(this->flags()); + uint8_t mode_ = hc->get_mode(flags()); if (mode_ == HeatingCircuit::Mode::MANUAL) { offset = 0x0A; // manual offset } else { @@ -2284,7 +2259,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; default: case HeatingCircuit::Mode::AUTO: // automatic selection, if no type is defined, we use the standard code - uint8_t mode_type = hc->get_mode_type(this->flags()); + uint8_t mode_type = hc->get_mode_type(flags()); offset = (mode_type == HeatingCircuit::Mode::NIGHT) ? EMS_OFFSET_RC20_2_Set_temp_night : EMS_OFFSET_RC20_2_Set_temp_day; break; } @@ -2344,7 +2319,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co case HeatingCircuit::Mode::AUTO: // automatic selection, if no type is defined, we use the standard code validate_typeid = monitor_typeids[hc->hc_num() - 1]; //get setpoint roomtemp back if (model == EMS_DEVICE_FLAG_RC35) { - uint8_t mode_ = hc->get_mode(this->flags()); + uint8_t mode_ = hc->get_mode(flags()); if (mode_ == HeatingCircuit::Mode::NIGHT) { offset = EMS_OFFSET_RC35Set_temp_night; } else if (mode_ == HeatingCircuit::Mode::DAY) { @@ -2353,7 +2328,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co offset = EMS_OFFSET_RC35Set_seltemp; // https://github.com/proddy/EMS-ESP/issues/310 } } else { - uint8_t mode_type = hc->get_mode_type(this->flags()); + uint8_t mode_type = hc->get_mode_type(flags()); offset = (mode_type == HeatingCircuit::Mode::NIGHT) ? EMS_OFFSET_RC35Set_temp_night : EMS_OFFSET_RC35Set_temp_day; } break; @@ -2362,7 +2337,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co } else if (model == EMS_DEVICE_FLAG_JUNKERS) { // figure out if we have older or new thermostats, Heating Circuits on 0x65 or 0x79 // see https://github.com/proddy/EMS-ESP/issues/335#issuecomment-593324716) - bool old_junkers = (this->has_flags(EMS_DEVICE_FLAG_JUNKERS_2)); + bool old_junkers = (has_flags(EMS_DEVICE_FLAG_JUNKERS_OLD)); if (!old_junkers) { switch (mode) { case HeatingCircuit::Mode::NOFROST: @@ -2378,7 +2353,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; default: case HeatingCircuit::Mode::AUTO: // automatic selection, if no type is defined, we use the standard code - uint8_t mode_type = hc->get_mode_type(this->flags()); + uint8_t mode_type = hc->get_mode_type(flags()); if (mode_type == HeatingCircuit::Mode::NIGHT || mode_type == HeatingCircuit::Mode::ECO) { offset = EMS_OFFSET_JunkersSetMessage_night_temp; } else if (mode_type == HeatingCircuit::Mode::DAY || mode_type == HeatingCircuit::Mode::HEAT) { @@ -2405,7 +2380,7 @@ bool Thermostat::set_temperature(const float temperature, const uint8_t mode, co break; default: case HeatingCircuit::Mode::AUTO: // automatic selection, if no type is defined, we use the standard code - uint8_t mode_type = hc->get_mode_type(this->flags()); + uint8_t mode_type = hc->get_mode_type(flags()); if (mode_type == HeatingCircuit::Mode::NIGHT || mode_type == HeatingCircuit::Mode::ECO) { offset = EMS_OFFSET_JunkersSetMessage2_eco_temp; } else if (mode_type == HeatingCircuit::Mode::DAY || mode_type == HeatingCircuit::Mode::HEAT) { @@ -2514,7 +2489,7 @@ bool Thermostat::set_roominfluence(const char * value, const int8_t id) { // API commands for MQTT and Console void Thermostat::add_commands() { // if this thermostat doesn't support write, don't add the commands - if ((this->flags() & EMSdevice::EMS_DEVICE_FLAG_NO_WRITE) == EMSdevice::EMS_DEVICE_FLAG_NO_WRITE) { + if (has_flags(EMS_DEVICE_FLAG_NO_WRITE)) { return; } diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index a098e4f2..c0560df2 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -85,8 +85,8 @@ class Thermostat : public EMSdevice { return Helpers::hasValue(setpoint_roomTemp); } - uint8_t get_mode(uint8_t flags) const; - uint8_t get_mode_type(uint8_t flags) const; + uint8_t get_mode(uint8_t model) const; + uint8_t get_mode_type(uint8_t model) const; enum Mode : uint8_t { UNKNOWN, @@ -142,9 +142,9 @@ class Thermostat : public EMSdevice { ha_registered_ = b; } - // specific thermostat characteristics, stripping the last 4 bits + // specific thermostat characteristics, stripping the top 4 bits inline uint8_t model() const { - return (this->flags() & 0x0F); + return (flags() & 0x0F); } // each thermostat has a list of heating controller type IDs for reading and writing diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 3c26d3d0..a356057c 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -284,16 +284,16 @@ char * EMSdevice::show_telegram_handlers(char * result) { // list all the mqtt handlers for this device void EMSdevice::show_mqtt_handlers(uuid::console::Shell & shell) { - Mqtt::show_topic_handlers(shell, this->device_type_); + Mqtt::show_topic_handlers(shell, device_type_); } void EMSdevice::register_mqtt_topic(const std::string & topic, mqtt_subfunction_p f) { - Mqtt::subscribe(this->device_type_, topic, f); + Mqtt::subscribe(device_type_, topic, f); } // add command to library void EMSdevice::register_mqtt_cmd(const __FlashStringHelper * cmd, cmdfunction_p f) { - Command::add(this->device_type_, this->device_id_, cmd, f); + Command::add(device_type_, device_id_, cmd, f); } // register a call back function for a specific telegram type @@ -342,17 +342,17 @@ bool EMSdevice::handle_telegram(std::shared_ptr telegram) { // send Tx write with a data block void EMSdevice::write_command(const uint16_t type_id, const uint8_t offset, uint8_t * message_data, const uint8_t message_length, const uint16_t validate_typeid) { - EMSESP::send_write_request(type_id, this->device_id(), offset, message_data, message_length, validate_typeid); + EMSESP::send_write_request(type_id, device_id(), offset, message_data, message_length, validate_typeid); } // send Tx write with a single value void EMSdevice::write_command(const uint16_t type_id, const uint8_t offset, const uint8_t value, const uint16_t validate_typeid) { - EMSESP::send_write_request(type_id, this->device_id(), offset, value, validate_typeid); + EMSESP::send_write_request(type_id, device_id(), offset, value, validate_typeid); } // send Tx write with a single value, with no post validation void EMSdevice::write_command(const uint16_t type_id, const uint8_t offset, const uint8_t value) { - EMSESP::send_write_request(type_id, this->device_id(), offset, value, 0); + EMSESP::send_write_request(type_id, device_id(), offset, value, 0); } // send Tx read command to the device From f2503b8d1a95c915e981084f05198f629fd27d8b Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 16:16:24 +0100 Subject: [PATCH 138/225] fix removing devices --- src/emsesp.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 397a1833..64070b4b 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -83,8 +83,7 @@ void EMSESP::fetch_device_values(const uint8_t device_id) { // clears list of recognized devices void EMSESP::clear_all_devices() { - // emsdevices.clear(); // or use empty to release memory too - emsdevices.empty(); + emsdevices.clear(); // remove entries, but doesn't delete actual devices } // return number of devices of a known type From 9eb6d2c44bd076fc67f16aee4413c494867d0a0e Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 16:16:37 +0100 Subject: [PATCH 139/225] replace int with int32_t --- src/system.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/system.cpp b/src/system.cpp index a20a1765..c32cd410 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -438,13 +438,14 @@ int8_t System::wifi_quality() { if (WiFi.status() != WL_CONNECTED) { return -1; } - int dBm = WiFi.RSSI(); + int32_t dBm = WiFi.RSSI(); #else - int8_t dBm = -70; + int32_t dBm = -70; #endif if (dBm <= -100) { return 0; } + if (dBm >= -50) { return 100; } From 16f61cc6c3d613eb7c17cbf2335dc72acae5df76 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 16:16:49 +0100 Subject: [PATCH 140/225] remove this-> --- src/devices/boiler.cpp | 130 ++++++++++++++++++++--------------------- 1 file changed, 65 insertions(+), 65 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 38a1add5..73ccbe08 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -26,7 +26,7 @@ uuid::log::Logger Boiler::logger_{F_(boiler), uuid::log::Facility::CONSOLE}; Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand) : EMSdevice(device_type, device_id, product_id, version, name, flags, brand) { - this->reserve_mem(20); // reserve some space for the telegram registries, to avoid memory fragmentation + reserve_mem(20); // reserve some space for the telegram registries, to avoid memory fragmentation LOG_DEBUG(F("Adding new Boiler with device ID 0x%02X"), device_id); @@ -97,50 +97,50 @@ void Boiler::register_mqtt_ha_config() { JsonObject dev = doc.createNestedObject("dev"); dev["name"] = F("EMS-ESP Boiler"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = this->brand_to_string(); - dev["mdl"] = this->name(); + dev["mf"] = brand_to_string(); + dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-boiler"); Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/boiler/config"), doc.as(), true); // publish the config payload with retain flag - Mqtt::register_mqtt_ha_binary_sensor(F_(tapwaterActive), this->device_type(), "tapwater_active"); - Mqtt::register_mqtt_ha_binary_sensor(F_(heatingActive), this->device_type(), "heating_active"); + Mqtt::register_mqtt_ha_binary_sensor(F_(tapwaterActive), device_type(), "tapwater_active"); + Mqtt::register_mqtt_ha_binary_sensor(F_(heatingActive), device_type(), "heating_active"); // main - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(serviceCodeNumber), this->device_type(), "serviceCodeNumber", nullptr, F_(iconpower)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(selFlowTemp), this->device_type(), "selFlowTemp", F_(degrees), F_(iconcruise)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(selBurnPow), this->device_type(), "selBurnPow", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(curBurnPow), this->device_type(), "curBurnPow", F_(percent), F_(iconfire)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpMod), this->device_type(), "pumpMod", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpMod2), this->device_type(), "pumpMod2", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(outdoorTemp), this->device_type(), "outdoorTemp", F_(degrees), F_(iconexport)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(curFlowTemp), this->device_type(), "curFlowTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(retTemp), this->device_type(), "retTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(switchTemp), this->device_type(), "switchTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(sysPress), this->device_type(), "sysPress", F_(bar), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(boilTemp), this->device_type(), "boilTemp", F_(degrees), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnGas), this->device_type(), "burnGas", nullptr, F_(iconfire)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(flameCurr), this->device_type(), "flameCurr", F_(uA), F_(iconflash)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatPump), this->device_type(), "heatPump", nullptr, F_(iconwaterpump)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(fanWork), this->device_type(), "fanWork", nullptr, F_(iconfan)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(ignWork), this->device_type(), "ignWork", nullptr, F_(iconflash)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(exhaustTemp), this->device_type(), "exhaustTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatingActivated), this->device_type(), "heatingActivated", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatingTemp), this->device_type(), "heatingTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpModMax), this->device_type(), "pumpModMax", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpModMin), this->device_type(), "pumpModMin", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpDelay), this->device_type(), "pumpDelay", F_(min), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnMinPeriod), this->device_type(), "burnMinPeriod", F_(min), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnMinPower), this->device_type(), "burnMinPower", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnMaxPower), this->device_type(), "burnMaxPower", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(boilHystOn), this->device_type(), "boilHystOn", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(boilHystOff), this->device_type(), "boilHystOff", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(setFlowTemp), this->device_type(), "setFlowTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(setBurnPow), this->device_type(), "setBurnPow", F_(percent), F_(iconpercent)); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnStarts), this->device_type(), "burnStarts", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnWorkMin), this->device_type(), "burnWorkMin", F_(min), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatWorkMin), this->device_type(), "heatWorkMin", F_(min), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(UBAuptime), this->device_type(), "UBAuptime", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(serviceCodeNumber), device_type(), "serviceCodeNumber", nullptr, F_(iconpower)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(selFlowTemp), device_type(), "selFlowTemp", F_(degrees), F_(iconcruise)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(selBurnPow), device_type(), "selBurnPow", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(curBurnPow), device_type(), "curBurnPow", F_(percent), F_(iconfire)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpMod), device_type(), "pumpMod", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpMod2), device_type(), "pumpMod2", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(outdoorTemp), device_type(), "outdoorTemp", F_(degrees), F_(iconexport)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(curFlowTemp), device_type(), "curFlowTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(retTemp), device_type(), "retTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(switchTemp), device_type(), "switchTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(sysPress), device_type(), "sysPress", F_(bar), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(boilTemp), device_type(), "boilTemp", F_(degrees), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnGas), device_type(), "burnGas", nullptr, F_(iconfire)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(flameCurr), device_type(), "flameCurr", F_(uA), F_(iconflash)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatPump), device_type(), "heatPump", nullptr, F_(iconwaterpump)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(fanWork), device_type(), "fanWork", nullptr, F_(iconfan)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(ignWork), device_type(), "ignWork", nullptr, F_(iconflash)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(exhaustTemp), device_type(), "exhaustTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatingActivated), device_type(), "heatingActivated", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatingTemp), device_type(), "heatingTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpModMax), device_type(), "pumpModMax", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpModMin), device_type(), "pumpModMin", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(pumpDelay), device_type(), "pumpDelay", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnMinPeriod), device_type(), "burnMinPeriod", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnMinPower), device_type(), "burnMinPower", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnMaxPower), device_type(), "burnMaxPower", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(boilHystOn), device_type(), "boilHystOn", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(boilHystOff), device_type(), "boilHystOff", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(setFlowTemp), device_type(), "setFlowTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(setBurnPow), device_type(), "setBurnPow", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnStarts), device_type(), "burnStarts", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnWorkMin), device_type(), "burnWorkMin", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatWorkMin), device_type(), "heatWorkMin", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(UBAuptime), device_type(), "UBAuptime", F_(min), nullptr); mqtt_ha_config_ = true; // done } @@ -152,32 +152,32 @@ void Boiler::register_mqtt_ha_config_ww() { } // ww - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSelTemp), this->device_type(), "wWSelTemp", F_(degrees), F_(iconcruise)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSetTemp), this->device_type(), "wWSetTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWDisinfectionTemp), this->device_type(), "wWDisinfectionTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWType), this->device_type(), "wWType", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWChargeType), this->device_type(), "wWChargeType", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCircPump), this->device_type(), "wWCircPump", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCircPumpMode), this->device_type(), "wWCircPumpMode", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCirc), this->device_type(), "wWCirc", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCurTemp), this->device_type(), "wWCurTemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCurTemp2), this->device_type(), "wWCurTemp2", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCurFlow), this->device_type(), "wWCurFlow", F("l/min"), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWHeat), this->device_type(), "wWHeat", nullptr, F_(iconvalve)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwStorageTemp1), this->device_type(), "wwStorageTemp1", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwStorageTemp2), this->device_type(), "wwStorageTemp2", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWActivated), this->device_type(), "wWActivated", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWOneTime), this->device_type(), "wWOneTime", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWDisinfecting), this->device_type(), "wWDisinfecting", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCharging), this->device_type(), "wWCharging", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWRecharging), this->device_type(), "wWRecharging", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWTempOK), this->device_type(), "wWTempOK", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWActive), this->device_type(), "wWActive", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSetPumpPower), this->device_type(), "wWSetPumpPower", F_(percent), F_(iconwaterpump)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwMixTemperature), this->device_type(), "wwMixTemperature", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwBufferTemperature), this->device_type(), "wwBufferTemperature", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWStarts), this->device_type(), "wWStarts", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWWorkM), this->device_type(), "wWWorkM", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSelTemp), device_type(), "wWSelTemp", F_(degrees), F_(iconcruise)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSetTemp), device_type(), "wWSetTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWDisinfectionTemp), device_type(), "wWDisinfectionTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWType), device_type(), "wWType", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWChargeType), device_type(), "wWChargeType", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCircPump), device_type(), "wWCircPump", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCircPumpMode), device_type(), "wWCircPumpMode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCirc), device_type(), "wWCirc", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCurTemp), device_type(), "wWCurTemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCurTemp2), device_type(), "wWCurTemp2", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCurFlow), device_type(), "wWCurFlow", F("l/min"), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWHeat), device_type(), "wWHeat", nullptr, F_(iconvalve)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwStorageTemp1), device_type(), "wwStorageTemp1", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwStorageTemp2), device_type(), "wwStorageTemp2", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWActivated), device_type(), "wWActivated", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWOneTime), device_type(), "wWOneTime", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWDisinfecting), device_type(), "wWDisinfecting", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWCharging), device_type(), "wWCharging", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWRecharging), device_type(), "wWRecharging", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWTempOK), device_type(), "wWTempOK", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWActive), device_type(), "wWActive", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWSetPumpPower), device_type(), "wWSetPumpPower", F_(percent), F_(iconwaterpump)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwMixTemperature), device_type(), "wwMixTemperature", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wwBufferTemperature), device_type(), "wwBufferTemperature", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWStarts), device_type(), "wWStarts", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, F_(mqtt_suffix_ww), F_(wWWorkM), device_type(), "wWWorkM", F_(min), nullptr); mqtt_ha_config_ww_ = true; // done } From 2e89ab333a654e3534f9be1d5977cb80d00a7c3a Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 17:54:16 +0100 Subject: [PATCH 141/225] fix standalome makefile --- makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/makefile b/makefile index 6926d277..2a4e46b1 100644 --- a/makefile +++ b/makefile @@ -22,7 +22,7 @@ INCLUDES := lib/ArduinoJson/src lib_standalone lib/uuid-common/src lib/uuid-con LIBRARIES := CPPCHECK = cppcheck -CHECKFLAGS = -q +CHECKFLAGS = -q --force --std=c++11 #---------------------------------------------------------------------- # Languages Standard @@ -113,7 +113,7 @@ COMPILE.cpp = $(CXX) $(CXX_STANDARD) $(CXXFLAGS) $(DEPFLAGS) -c $< -o $@ #---------------------------------------------------------------------- # Targets #---------------------------------------------------------------------- -all: cppcheck.out.xml $(OUTPUT) +all: $(OUTPUT) $(OUTPUT): $(OBJS) @mkdir -p $(@D) @@ -132,14 +132,14 @@ $(BUILD)/%.o: %.s @mkdir -p $(@D) $(COMPILE.s) -cppcheck.out.xml: $(SOURCES) - $(CPPCHECK) $(CHECKFLAGS) $^ --xml >$@ +cppcheck: $(SOURCES) + $(CPPCHECK) $(CHECKFLAGS) $^ run: $(OUTPUT) @$< clean: - @$(RM) -r $(BUILD) $(OUTPUT) cppcheck.out.xml + @$(RM) -r $(BUILD) $(OUTPUT) help: @echo available targets: all run clean From e9998425a655d426c724ac29e72d7c64fa6c4be0 Mon Sep 17 00:00:00 2001 From: Proddy Date: Sun, 22 Nov 2020 18:01:39 +0100 Subject: [PATCH 142/225] Update check_code.yml --- .github/workflows/check_code.yml | 39 ++++---------------------------- 1 file changed, 4 insertions(+), 35 deletions(-) diff --git a/.github/workflows/check_code.yml b/.github/workflows/check_code.yml index a6bb1544..7f0707ac 100644 --- a/.github/workflows/check_code.yml +++ b/.github/workflows/check_code.yml @@ -1,15 +1,6 @@ name: Code Check -on: - push: - branches: [dev] - paths: - - 'src/**' - pull_request: - # The branches below must be a subset of the branches above - branches: [dev] - schedule: - - cron: '0 11 * * 5' +on: [push, pull_request] jobs: analyze: @@ -28,15 +19,6 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v2 - with: - # We must fetch at least the immediate parents so that if this is - # a pull request then we can checkout the head. - fetch-depth: 2 - - # If this run was triggered by a pull request event, then checkout - # the head of the pull request instead of the merge commit. - - run: git checkout HEAD^2 - if: ${{ github.event_name == 'pull_request' }} # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL @@ -44,21 +26,8 @@ jobs: with: languages: ${{ matrix.language }} - # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). - # If this step fails, then you should remove it and run the build manually (see below) - - name: Autobuild - uses: github/codeql-action/autobuild@v1 - - # ℹ️ Command-line programs to run using the OS shell. - # 📚 https://git.io/JvXDl - - # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines - # and modify them (or add more) to build your code if your project - # uses a compiled language - - #- run: | - # make bootstrap - # make release - + - run: | + make + - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v1 From 59c72f7b4beb98091a9c7a1f8c214a34814fa7b8 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 21:12:41 +0100 Subject: [PATCH 143/225] formatting --- src/command.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/command.cpp b/src/command.cpp index f083cee2..78d0c4f2 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -33,11 +33,11 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val #ifdef EMSESP_DEBUG std::string dname = EMSdevice::device_type_2_device_name(device_type); if (value == nullptr) { - LOG_DEBUG(F("[DEBUG] Calling command %s in %s"), cmd, dname.c_str()); + LOG_DEBUG(F("[DEBUG] Calling %s command %s"), dname.c_str(), cmd); } else if (id == -1) { - LOG_DEBUG(F("[DEBUG] Calling command %s, value %s, id is default in %s"), cmd, value, dname.c_str()); + LOG_DEBUG(F("[DEBUG] Calling %s command %s, value %s, id is default"), dname.c_str(), cmd, value); } else { - LOG_DEBUG(F("[DEBUG] Calling command %s, value %s, id is %d in %s"), cmd, value, id, dname.c_str()); + LOG_DEBUG(F("[DEBUG] Calling %s command %s, value %s, id is %d in %s"), dname.c_str(), cmd, value, id); } #endif bool ok = false; @@ -46,6 +46,7 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val if (cf.device_type_ == device_type) { // find a matching command and call it if (uuid::read_flash_string(cf.cmd_) == cmd) { + // see if we this function wants to send its result to a json doc if (cf.cmdfunction_json_) { // check if json object is empty, if so quit if (json.isNull()) { From 17cd200cd17ccb1ecc055bd79a2f271e4bf3b3bd Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 22 Nov 2020 21:13:04 +0100 Subject: [PATCH 144/225] prevent crash on "call system send" with no data --- src/telegram.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/telegram.cpp b/src/telegram.cpp index 350621e0..dfca8afc 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -508,6 +508,10 @@ void TxService::read_request(const uint16_t type_id, const uint8_t dest, const u // Send a raw telegram to the bus, telegram is a text string of hex values void TxService::send_raw(const char * telegram_data) { + if (telegram_data == nullptr) { + return; + } + // since the telegram data is a const, make a copy. add 1 to grab the \0 EOS char telegram[EMS_MAX_TELEGRAM_LENGTH * 3]; for (uint8_t i = 0; i < strlen(telegram_data); i++) { From 3f0c40d86c4ba57f2b726c246ccfaf934911fb07 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:11:51 +0100 Subject: [PATCH 145/225] fix admin checkbox --- interface/src/security/ManageUsersForm.tsx | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/interface/src/security/ManageUsersForm.tsx b/interface/src/security/ManageUsersForm.tsx index 29393a56..b8c63b7f 100644 --- a/interface/src/security/ManageUsersForm.tsx +++ b/interface/src/security/ManageUsersForm.tsx @@ -13,7 +13,7 @@ import SaveIcon from '@material-ui/icons/Save'; import PersonAddIcon from '@material-ui/icons/PersonAdd'; import { withAuthenticatedContext, AuthenticatedContextProps } from '../authentication'; -import { RestFormProps, FormActions, FormButton } from '../components'; +import { RestFormProps, FormActions, FormButton, extractEventValue } from '../components'; import UserForm from './UserForm'; import { SecuritySettings, User } from './types'; @@ -93,13 +93,9 @@ class ManageUsersForm extends React.Component (event: React.ChangeEvent) => { - this.setState({ user: { ...this.state.user!, [name]: event.target.value } }); + this.setState({ user: { ...this.state.user!, [name]: extractEventValue(event) } }); }; - handleUserCheckboxChange = (name: keyof User) => (event: React.ChangeEvent) => { - this.setState({ user: { ...this.state.user!, [name]: event.target.checked } }); - } - onSubmit = () => { this.props.saveData(); this.props.authenticatedContext.refresh(); From d9df0bb996cbfe714e58501580b61fc3b21a14cd Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:12:20 +0100 Subject: [PATCH 146/225] auto formatting --- lib/framework/APSettingsService.cpp | 108 +++--- lib/framework/APSettingsService.h | 122 +++---- lib/framework/APStatus.cpp | 29 +- lib/framework/APStatus.h | 12 +- lib/framework/ArduinoJsonJWT.cpp | 209 ++++++------ lib/framework/ArduinoJsonJWT.h | 26 +- lib/framework/AuthenticationService.cpp | 55 ++- lib/framework/AuthenticationService.h | 20 +- lib/framework/ESP8266React.h | 100 +++--- lib/framework/ESPUtils.h | 12 +- lib/framework/FSPersistence.h | 4 +- lib/framework/FactoryResetService.h | 14 +- lib/framework/FeaturesService.cpp | 38 +-- lib/framework/FeaturesService.h | 8 +- lib/framework/HttpEndpoint.h | 260 +++++++------- lib/framework/JsonUtils.h | 32 +- lib/framework/MqttPubSub.h | 271 +++++++-------- lib/framework/NTPSettingsService.cpp | 109 +++--- lib/framework/NTPSettingsService.h | 72 ++-- lib/framework/NTPStatus.cpp | 51 ++- lib/framework/NTPStatus.h | 10 +- lib/framework/OTASettingsService.h | 60 ++-- lib/framework/RestartService.cpp | 15 +- lib/framework/RestartService.h | 20 +- lib/framework/SecurityManager.h | 99 +++--- lib/framework/SecuritySettingsService.cpp | 187 +++++----- lib/framework/SecuritySettingsService.h | 124 +++---- lib/framework/StatefulService.h | 198 +++++------ lib/framework/SystemStatus.h | 2 +- lib/framework/UploadFirmwareService.cpp | 125 ++++--- lib/framework/UploadFirmwareService.h | 23 +- lib/framework/WebSocketTxRx.h | 395 ++++++++++------------ lib/framework/WiFiScanner.cpp | 86 +++-- lib/framework/WiFiScanner.h | 14 +- lib/framework/WiFiSettingsService.cpp | 2 +- lib/framework/WiFiSettingsService.h | 140 ++++---- lib/framework/WiFiStatus.cpp | 93 +++-- lib/framework/WiFiStatus.h | 34 +- lib_standalone/FSPersistence.h | 4 +- 39 files changed, 1552 insertions(+), 1631 deletions(-) diff --git a/lib/framework/APSettingsService.cpp b/lib/framework/APSettingsService.cpp index 57339cde..41350f2f 100644 --- a/lib/framework/APSettingsService.cpp +++ b/lib/framework/APSettingsService.cpp @@ -1,83 +1,81 @@ #include -APSettingsService::APSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) : - _httpEndpoint(APSettings::read, APSettings::update, this, server, AP_SETTINGS_SERVICE_PATH, securityManager), - _fsPersistence(APSettings::read, APSettings::update, this, fs, AP_SETTINGS_FILE), - _dnsServer(nullptr), - _lastManaged(0), - _reconfigureAp(false) { - addUpdateHandler([&](const String& originId) { reconfigureAP(); }, false); +APSettingsService::APSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager) + : _httpEndpoint(APSettings::read, APSettings::update, this, server, AP_SETTINGS_SERVICE_PATH, securityManager) + , _fsPersistence(APSettings::read, APSettings::update, this, fs, AP_SETTINGS_FILE) + , _dnsServer(nullptr) + , _lastManaged(0) + , _reconfigureAp(false) { + addUpdateHandler([&](const String & originId) { reconfigureAP(); }, false); } void APSettingsService::begin() { - _fsPersistence.readFromFS(); - reconfigureAP(); + _fsPersistence.readFromFS(); + reconfigureAP(); } void APSettingsService::reconfigureAP() { - _lastManaged = uuid::get_uptime() - MANAGE_NETWORK_DELAY; - _reconfigureAp = true; + _lastManaged = uuid::get_uptime() - MANAGE_NETWORK_DELAY; + _reconfigureAp = true; } void APSettingsService::loop() { - unsigned long currentMillis = uuid::get_uptime(); - unsigned long manageElapsed = (unsigned long)(currentMillis - _lastManaged); - if (manageElapsed >= MANAGE_NETWORK_DELAY) { - _lastManaged = currentMillis; - manageAP(); - } - handleDNS(); + unsigned long currentMillis = uuid::get_uptime(); + unsigned long manageElapsed = (unsigned long)(currentMillis - _lastManaged); + if (manageElapsed >= MANAGE_NETWORK_DELAY) { + _lastManaged = currentMillis; + manageAP(); + } + handleDNS(); } void APSettingsService::manageAP() { - WiFiMode_t currentWiFiMode = WiFi.getMode(); - if (_state.provisionMode == AP_MODE_ALWAYS || - (_state.provisionMode == AP_MODE_DISCONNECTED && WiFi.status() != WL_CONNECTED)) { - if (_reconfigureAp || currentWiFiMode == WIFI_OFF || currentWiFiMode == WIFI_STA) { - startAP(); + WiFiMode_t currentWiFiMode = WiFi.getMode(); + if (_state.provisionMode == AP_MODE_ALWAYS || (_state.provisionMode == AP_MODE_DISCONNECTED && WiFi.status() != WL_CONNECTED)) { + if (_reconfigureAp || currentWiFiMode == WIFI_OFF || currentWiFiMode == WIFI_STA) { + startAP(); + } + } else if ((currentWiFiMode == WIFI_AP || currentWiFiMode == WIFI_AP_STA) && (_reconfigureAp || !WiFi.softAPgetStationNum())) { + stopAP(); } - } else if ((currentWiFiMode == WIFI_AP || currentWiFiMode == WIFI_AP_STA) && - (_reconfigureAp || !WiFi.softAPgetStationNum())) { - stopAP(); - } - _reconfigureAp = false; + _reconfigureAp = false; } void APSettingsService::startAP() { - // Serial.println(F("Starting software access point")); - WiFi.softAPConfig(_state.localIP, _state.gatewayIP, _state.subnetMask); - WiFi.softAP(_state.ssid.c_str(), _state.password.c_str()); - if (!_dnsServer) { - IPAddress apIp = WiFi.softAPIP(); - // Serial.print(F("Starting captive portal on ")); - // Serial.println(apIp); - _dnsServer = new DNSServer; - _dnsServer->start(DNS_PORT, "*", apIp); - } + // Serial.println(F("Starting software access point")); + WiFi.softAPConfig(_state.localIP, _state.gatewayIP, _state.subnetMask); + WiFi.softAP(_state.ssid.c_str(), _state.password.c_str()); + if (!_dnsServer) { + IPAddress apIp = WiFi.softAPIP(); + // Serial.print(F("Starting captive portal on ")); + // Serial.println(apIp); + _dnsServer = new DNSServer; + _dnsServer->start(DNS_PORT, "*", apIp); + } } void APSettingsService::stopAP() { - if (_dnsServer) { - // Serial.println(F("Stopping captive portal")); - _dnsServer->stop(); - delete _dnsServer; - _dnsServer = nullptr; - } - // Serial.println(F("Stopping software access point")); - WiFi.softAPdisconnect(true); + if (_dnsServer) { + // Serial.println(F("Stopping captive portal")); + _dnsServer->stop(); + delete _dnsServer; + _dnsServer = nullptr; + } + // Serial.println(F("Stopping software access point")); + WiFi.softAPdisconnect(true); } void APSettingsService::handleDNS() { - if (_dnsServer) { - _dnsServer->processNextRequest(); - } + if (_dnsServer) { + _dnsServer->processNextRequest(); + } } APNetworkStatus APSettingsService::getAPNetworkStatus() { - WiFiMode_t currentWiFiMode = WiFi.getMode(); - bool apActive = currentWiFiMode == WIFI_AP || currentWiFiMode == WIFI_AP_STA; - if (apActive && _state.provisionMode != AP_MODE_ALWAYS && WiFi.status() == WL_CONNECTED) { - return APNetworkStatus::LINGERING; - } - return apActive ? APNetworkStatus::ACTIVE : APNetworkStatus::INACTIVE; + WiFiMode_t currentWiFiMode = WiFi.getMode(); + bool apActive = currentWiFiMode == WIFI_AP || currentWiFiMode == WIFI_AP_STA; + if (apActive && _state.provisionMode != AP_MODE_ALWAYS && WiFi.status() == WL_CONNECTED) { + return APNetworkStatus::LINGERING; + } + return apActive ? APNetworkStatus::ACTIVE : APNetworkStatus::INACTIVE; } diff --git a/lib/framework/APSettingsService.h b/lib/framework/APSettingsService.h index 991edb23..abc6aca9 100644 --- a/lib/framework/APSettingsService.h +++ b/lib/framework/APSettingsService.h @@ -48,78 +48,78 @@ enum APNetworkStatus { ACTIVE = 0, INACTIVE, LINGERING }; class APSettings { - public: - uint8_t provisionMode; - String ssid; - String password; - IPAddress localIP; - IPAddress gatewayIP; - IPAddress subnetMask; - - bool operator==(const APSettings& settings) const { - return provisionMode == settings.provisionMode && ssid == settings.ssid && password == settings.password && - localIP == settings.localIP && gatewayIP == settings.gatewayIP && subnetMask == settings.subnetMask; - } - - static void read(APSettings& settings, JsonObject& root) { - root["provision_mode"] = settings.provisionMode; - root["ssid"] = settings.ssid; - root["password"] = settings.password; - root["local_ip"] = settings.localIP.toString(); - root["gateway_ip"] = settings.gatewayIP.toString(); - root["subnet_mask"] = settings.subnetMask.toString(); - } - - static StateUpdateResult update(JsonObject& root, APSettings& settings) { - APSettings newSettings = {}; - newSettings.provisionMode = root["provision_mode"] | FACTORY_AP_PROVISION_MODE; - switch (settings.provisionMode) { - case AP_MODE_ALWAYS: - case AP_MODE_DISCONNECTED: - case AP_MODE_NEVER: - break; - default: - newSettings.provisionMode = AP_MODE_ALWAYS; + public: + uint8_t provisionMode; + String ssid; + String password; + IPAddress localIP; + IPAddress gatewayIP; + IPAddress subnetMask; + + bool operator==(const APSettings & settings) const { + return provisionMode == settings.provisionMode && ssid == settings.ssid && password == settings.password && localIP == settings.localIP + && gatewayIP == settings.gatewayIP && subnetMask == settings.subnetMask; } - newSettings.ssid = root["ssid"] | FACTORY_AP_SSID; - newSettings.password = root["password"] | FACTORY_AP_PASSWORD; - JsonUtils::readIP(root, "local_ip", newSettings.localIP, FACTORY_AP_LOCAL_IP); - JsonUtils::readIP(root, "gateway_ip", newSettings.gatewayIP, FACTORY_AP_GATEWAY_IP); - JsonUtils::readIP(root, "subnet_mask", newSettings.subnetMask, FACTORY_AP_SUBNET_MASK); + static void read(APSettings & settings, JsonObject & root) { + root["provision_mode"] = settings.provisionMode; + root["ssid"] = settings.ssid; + root["password"] = settings.password; + root["local_ip"] = settings.localIP.toString(); + root["gateway_ip"] = settings.gatewayIP.toString(); + root["subnet_mask"] = settings.subnetMask.toString(); + } - if (newSettings == settings) { - return StateUpdateResult::UNCHANGED; + static StateUpdateResult update(JsonObject & root, APSettings & settings) { + APSettings newSettings = {}; + newSettings.provisionMode = root["provision_mode"] | FACTORY_AP_PROVISION_MODE; + switch (settings.provisionMode) { + case AP_MODE_ALWAYS: + case AP_MODE_DISCONNECTED: + case AP_MODE_NEVER: + break; + default: + newSettings.provisionMode = AP_MODE_ALWAYS; + } + newSettings.ssid = root["ssid"] | FACTORY_AP_SSID; + newSettings.password = root["password"] | FACTORY_AP_PASSWORD; + + JsonUtils::readIP(root, "local_ip", newSettings.localIP, FACTORY_AP_LOCAL_IP); + JsonUtils::readIP(root, "gateway_ip", newSettings.gatewayIP, FACTORY_AP_GATEWAY_IP); + JsonUtils::readIP(root, "subnet_mask", newSettings.subnetMask, FACTORY_AP_SUBNET_MASK); + + if (newSettings == settings) { + return StateUpdateResult::UNCHANGED; + } + settings = newSettings; + return StateUpdateResult::CHANGED; } - settings = newSettings; - return StateUpdateResult::CHANGED; - } }; class APSettingsService : public StatefulService { - public: - APSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager); + public: + APSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager); - void begin(); - void loop(); - APNetworkStatus getAPNetworkStatus(); + void begin(); + void loop(); + APNetworkStatus getAPNetworkStatus(); - private: - HttpEndpoint _httpEndpoint; - FSPersistence _fsPersistence; + private: + HttpEndpoint _httpEndpoint; + FSPersistence _fsPersistence; - // for the captive portal - DNSServer* _dnsServer; + // for the captive portal + DNSServer * _dnsServer; - // for the mangement delay loop - volatile unsigned long _lastManaged; - volatile boolean _reconfigureAp; + // for the mangement delay loop + volatile unsigned long _lastManaged; + volatile boolean _reconfigureAp; - void reconfigureAP(); - void manageAP(); - void startAP(); - void stopAP(); - void handleDNS(); + void reconfigureAP(); + void manageAP(); + void startAP(); + void stopAP(); + void handleDNS(); }; -#endif // end APSettingsConfig_h +#endif // end APSettingsConfig_h diff --git a/lib/framework/APStatus.cpp b/lib/framework/APStatus.cpp index 5bfe3008..76a4eb16 100644 --- a/lib/framework/APStatus.cpp +++ b/lib/framework/APStatus.cpp @@ -1,22 +1,21 @@ #include -APStatus::APStatus(AsyncWebServer* server, SecurityManager* securityManager, APSettingsService* apSettingsService) : - _apSettingsService(apSettingsService) { - server->on(AP_STATUS_SERVICE_PATH, - HTTP_GET, - securityManager->wrapRequest(std::bind(&APStatus::apStatus, this, std::placeholders::_1), - AuthenticationPredicates::IS_AUTHENTICATED)); +APStatus::APStatus(AsyncWebServer * server, SecurityManager * securityManager, APSettingsService * apSettingsService) + : _apSettingsService(apSettingsService) { + server->on(AP_STATUS_SERVICE_PATH, + HTTP_GET, + securityManager->wrapRequest(std::bind(&APStatus::apStatus, this, std::placeholders::_1), AuthenticationPredicates::IS_AUTHENTICATED)); } -void APStatus::apStatus(AsyncWebServerRequest* request) { - AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_AP_STATUS_SIZE); - JsonObject root = response->getRoot(); +void APStatus::apStatus(AsyncWebServerRequest * request) { + AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_AP_STATUS_SIZE); + JsonObject root = response->getRoot(); - root["status"] = _apSettingsService->getAPNetworkStatus(); - root["ip_address"] = WiFi.softAPIP().toString(); - root["mac_address"] = WiFi.softAPmacAddress(); - root["station_num"] = WiFi.softAPgetStationNum(); + root["status"] = _apSettingsService->getAPNetworkStatus(); + root["ip_address"] = WiFi.softAPIP().toString(); + root["mac_address"] = WiFi.softAPmacAddress(); + root["station_num"] = WiFi.softAPgetStationNum(); - response->setLength(); - request->send(response); + response->setLength(); + request->send(response); } diff --git a/lib/framework/APStatus.h b/lib/framework/APStatus.h index 12620b08..e5164b7a 100644 --- a/lib/framework/APStatus.h +++ b/lib/framework/APStatus.h @@ -20,12 +20,12 @@ #define AP_STATUS_SERVICE_PATH "/rest/apStatus" class APStatus { - public: - APStatus(AsyncWebServer* server, SecurityManager* securityManager, APSettingsService* apSettingsService); + public: + APStatus(AsyncWebServer * server, SecurityManager * securityManager, APSettingsService * apSettingsService); - private: - APSettingsService* _apSettingsService; - void apStatus(AsyncWebServerRequest* request); + private: + APSettingsService * _apSettingsService; + void apStatus(AsyncWebServerRequest * request); }; -#endif // end APStatus_h +#endif // end APStatus_h diff --git a/lib/framework/ArduinoJsonJWT.cpp b/lib/framework/ArduinoJsonJWT.cpp index 8b449e1b..577948cb 100644 --- a/lib/framework/ArduinoJsonJWT.cpp +++ b/lib/framework/ArduinoJsonJWT.cpp @@ -1,14 +1,15 @@ #include "ArduinoJsonJWT.h" -ArduinoJsonJWT::ArduinoJsonJWT(String secret) : _secret(secret) { +ArduinoJsonJWT::ArduinoJsonJWT(String secret) + : _secret(secret) { } void ArduinoJsonJWT::setSecret(String secret) { - _secret = secret; + _secret = secret; } String ArduinoJsonJWT::getSecret() { - return _secret; + return _secret; } /* @@ -18,127 +19,127 @@ String ArduinoJsonJWT::getSecret() { * * No need to pull in additional crypto libraries - lets use what we already have. */ -String ArduinoJsonJWT::sign(String& payload) { - unsigned char hmacResult[32]; - { +String ArduinoJsonJWT::sign(String & payload) { + unsigned char hmacResult[32]; + { #ifdef ESP32 - mbedtls_md_context_t ctx; - mbedtls_md_type_t md_type = MBEDTLS_MD_SHA256; - mbedtls_md_init(&ctx); - mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(md_type), 1); - mbedtls_md_hmac_starts(&ctx, (unsigned char*)_secret.c_str(), _secret.length()); - mbedtls_md_hmac_update(&ctx, (unsigned char*)payload.c_str(), payload.length()); - mbedtls_md_hmac_finish(&ctx, hmacResult); - mbedtls_md_free(&ctx); + mbedtls_md_context_t ctx; + mbedtls_md_type_t md_type = MBEDTLS_MD_SHA256; + mbedtls_md_init(&ctx); + mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(md_type), 1); + mbedtls_md_hmac_starts(&ctx, (unsigned char *)_secret.c_str(), _secret.length()); + mbedtls_md_hmac_update(&ctx, (unsigned char *)payload.c_str(), payload.length()); + mbedtls_md_hmac_finish(&ctx, hmacResult); + mbedtls_md_free(&ctx); #elif defined(ESP8266) - br_hmac_key_context keyCtx; - br_hmac_key_init(&keyCtx, &br_sha256_vtable, _secret.c_str(), _secret.length()); - br_hmac_context hmacCtx; - br_hmac_init(&hmacCtx, &keyCtx, 0); - br_hmac_update(&hmacCtx, payload.c_str(), payload.length()); - br_hmac_out(&hmacCtx, hmacResult); + br_hmac_key_context keyCtx; + br_hmac_key_init(&keyCtx, &br_sha256_vtable, _secret.c_str(), _secret.length()); + br_hmac_context hmacCtx; + br_hmac_init(&hmacCtx, &keyCtx, 0); + br_hmac_update(&hmacCtx, payload.c_str(), payload.length()); + br_hmac_out(&hmacCtx, hmacResult); #endif - } - return encode((char*)hmacResult, 32); + } + return encode((char *)hmacResult, 32); } -String ArduinoJsonJWT::buildJWT(JsonObject& payload) { - // serialize, then encode payload - String jwt; - serializeJson(payload, jwt); - jwt = encode(jwt.c_str(), jwt.length()); +String ArduinoJsonJWT::buildJWT(JsonObject & payload) { + // serialize, then encode payload + String jwt; + serializeJson(payload, jwt); + jwt = encode(jwt.c_str(), jwt.length()); - // add the header to payload - jwt = JWT_HEADER + '.' + jwt; + // add the header to payload + jwt = JWT_HEADER + '.' + jwt; - // add signature - jwt += '.' + sign(jwt); + // add signature + jwt += '.' + sign(jwt); - return jwt; + return jwt; } -void ArduinoJsonJWT::parseJWT(String jwt, JsonDocument& jsonDocument) { - // clear json document before we begin, jsonDocument wil be null on failure - jsonDocument.clear(); - - // must have the correct header and delimiter - if (!jwt.startsWith(JWT_HEADER) || jwt.indexOf('.') != JWT_HEADER_SIZE) { - return; - } - - // check there is a signature delimieter - int signatureDelimiterIndex = jwt.lastIndexOf('.'); - if (signatureDelimiterIndex == JWT_HEADER_SIZE) { - return; - } - - // check the signature is valid - String signature = jwt.substring(signatureDelimiterIndex + 1); - jwt = jwt.substring(0, signatureDelimiterIndex); - if (sign(jwt) != signature) { - return; - } - - // decode payload - jwt = jwt.substring(JWT_HEADER_SIZE + 1); - jwt = decode(jwt); - - // parse payload, clearing json document after failure - DeserializationError error = deserializeJson(jsonDocument, jwt); - if (error != DeserializationError::Ok || !jsonDocument.is()) { +void ArduinoJsonJWT::parseJWT(String jwt, JsonDocument & jsonDocument) { + // clear json document before we begin, jsonDocument wil be null on failure jsonDocument.clear(); - } + + // must have the correct header and delimiter + if (!jwt.startsWith(JWT_HEADER) || jwt.indexOf('.') != JWT_HEADER_SIZE) { + return; + } + + // check there is a signature delimieter + int signatureDelimiterIndex = jwt.lastIndexOf('.'); + if (signatureDelimiterIndex == JWT_HEADER_SIZE) { + return; + } + + // check the signature is valid + String signature = jwt.substring(signatureDelimiterIndex + 1); + jwt = jwt.substring(0, signatureDelimiterIndex); + if (sign(jwt) != signature) { + return; + } + + // decode payload + jwt = jwt.substring(JWT_HEADER_SIZE + 1); + jwt = decode(jwt); + + // parse payload, clearing json document after failure + DeserializationError error = deserializeJson(jsonDocument, jwt); + if (error != DeserializationError::Ok || !jsonDocument.is()) { + jsonDocument.clear(); + } } -String ArduinoJsonJWT::encode(const char* cstr, int inputLen) { - // prepare encoder - base64_encodestate _state; +String ArduinoJsonJWT::encode(const char * cstr, int inputLen) { + // prepare encoder + base64_encodestate _state; #ifdef ESP32 - base64_init_encodestate(&_state); - size_t encodedLength = base64_encode_expected_len(inputLen) + 1; + base64_init_encodestate(&_state); + size_t encodedLength = base64_encode_expected_len(inputLen) + 1; #elif defined(ESP8266) - base64_init_encodestate_nonewlines(&_state); - size_t encodedLength = base64_encode_expected_len_nonewlines(inputLen) + 1; + base64_init_encodestate_nonewlines(&_state); + size_t encodedLength = base64_encode_expected_len_nonewlines(inputLen) + 1; #endif - // prepare buffer of correct length, returning an empty string on failure - char* buffer = (char*)malloc(encodedLength * sizeof(char)); - if (buffer == nullptr) { - return ""; - } - - // encode to buffer - int len = base64_encode_block(cstr, inputLen, &buffer[0], &_state); - len += base64_encode_blockend(&buffer[len], &_state); - buffer[len] = 0; - - // convert to arduino string, freeing buffer - String value = String(buffer); - free(buffer); - buffer = nullptr; - - // remove padding and convert to URL safe form - while (value.length() > 0 && value.charAt(value.length() - 1) == '=') { - value.remove(value.length() - 1); - } - value.replace('+', '-'); - value.replace('/', '_'); - - // return as string - return value; + // prepare buffer of correct length, returning an empty string on failure + char * buffer = (char *)malloc(encodedLength * sizeof(char)); + if (buffer == nullptr) { + return ""; + } + + // encode to buffer + int len = base64_encode_block(cstr, inputLen, &buffer[0], &_state); + len += base64_encode_blockend(&buffer[len], &_state); + buffer[len] = 0; + + // convert to arduino string, freeing buffer + String value = String(buffer); + free(buffer); + buffer = nullptr; + + // remove padding and convert to URL safe form + while (value.length() > 0 && value.charAt(value.length() - 1) == '=') { + value.remove(value.length() - 1); + } + value.replace('+', '-'); + value.replace('/', '_'); + + // return as string + return value; } String ArduinoJsonJWT::decode(String value) { - // convert to standard base64 - value.replace('-', '+'); - value.replace('_', '/'); + // convert to standard base64 + value.replace('-', '+'); + value.replace('_', '/'); - // prepare buffer of correct length - char buffer[base64_decode_expected_len(value.length()) + 1]; + // prepare buffer of correct length + char buffer[base64_decode_expected_len(value.length()) + 1]; - // decode - int len = base64_decode_chars(value.c_str(), value.length(), &buffer[0]); - buffer[len] = 0; + // decode + int len = base64_decode_chars(value.c_str(), value.length(), &buffer[0]); + buffer[len] = 0; - // return as string - return String(buffer); + // return as string + return String(buffer); } diff --git a/lib/framework/ArduinoJsonJWT.h b/lib/framework/ArduinoJsonJWT.h index beeedc06..edad6e92 100644 --- a/lib/framework/ArduinoJsonJWT.h +++ b/lib/framework/ArduinoJsonJWT.h @@ -13,25 +13,25 @@ #endif class ArduinoJsonJWT { - private: - String _secret; + private: + String _secret; - const String JWT_HEADER = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"; - const int JWT_HEADER_SIZE = JWT_HEADER.length(); + const String JWT_HEADER = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"; + const int JWT_HEADER_SIZE = JWT_HEADER.length(); - String sign(String& value); + String sign(String & value); - static String encode(const char* cstr, int len); - static String decode(String value); + static String encode(const char * cstr, int len); + static String decode(String value); - public: - ArduinoJsonJWT(String secret); + public: + ArduinoJsonJWT(String secret); - void setSecret(String secret); - String getSecret(); + void setSecret(String secret); + String getSecret(); - String buildJWT(JsonObject& payload); - void parseJWT(String jwt, JsonDocument& jsonDocument); + String buildJWT(JsonObject & payload); + void parseJWT(String jwt, JsonDocument & jsonDocument); }; #endif diff --git a/lib/framework/AuthenticationService.cpp b/lib/framework/AuthenticationService.cpp index 84c347cc..c0a4ab60 100644 --- a/lib/framework/AuthenticationService.cpp +++ b/lib/framework/AuthenticationService.cpp @@ -2,47 +2,44 @@ #if FT_ENABLED(FT_SECURITY) -AuthenticationService::AuthenticationService(AsyncWebServer* server, SecurityManager* securityManager) : - _securityManager(securityManager), - _signInHandler(SIGN_IN_PATH, - std::bind(&AuthenticationService::signIn, this, std::placeholders::_1, std::placeholders::_2)) { - server->on(VERIFY_AUTHORIZATION_PATH, - HTTP_GET, - std::bind(&AuthenticationService::verifyAuthorization, this, std::placeholders::_1)); - _signInHandler.setMethod(HTTP_POST); - _signInHandler.setMaxContentLength(MAX_AUTHENTICATION_SIZE); - server->addHandler(&_signInHandler); +AuthenticationService::AuthenticationService(AsyncWebServer * server, SecurityManager * securityManager) + : _securityManager(securityManager) + , _signInHandler(SIGN_IN_PATH, std::bind(&AuthenticationService::signIn, this, std::placeholders::_1, std::placeholders::_2)) { + server->on(VERIFY_AUTHORIZATION_PATH, HTTP_GET, std::bind(&AuthenticationService::verifyAuthorization, this, std::placeholders::_1)); + _signInHandler.setMethod(HTTP_POST); + _signInHandler.setMaxContentLength(MAX_AUTHENTICATION_SIZE); + server->addHandler(&_signInHandler); } /** * Verifys that the request supplied a valid JWT. */ -void AuthenticationService::verifyAuthorization(AsyncWebServerRequest* request) { - Authentication authentication = _securityManager->authenticateRequest(request); - request->send(authentication.authenticated ? 200 : 401); +void AuthenticationService::verifyAuthorization(AsyncWebServerRequest * request) { + Authentication authentication = _securityManager->authenticateRequest(request); + request->send(authentication.authenticated ? 200 : 401); } /** * Signs in a user if the username and password match. Provides a JWT to be used in the Authorization header in * subsequent requests. */ -void AuthenticationService::signIn(AsyncWebServerRequest* request, JsonVariant& json) { - if (json.is()) { - String username = json["username"]; - String password = json["password"]; - Authentication authentication = _securityManager->authenticate(username, password); - if (authentication.authenticated) { - User* user = authentication.user; - AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_AUTHENTICATION_SIZE); - JsonObject jsonObject = response->getRoot(); - jsonObject["access_token"] = _securityManager->generateJWT(user); - response->setLength(); - request->send(response); - return; +void AuthenticationService::signIn(AsyncWebServerRequest * request, JsonVariant & json) { + if (json.is()) { + String username = json["username"]; + String password = json["password"]; + Authentication authentication = _securityManager->authenticate(username, password); + if (authentication.authenticated) { + User * user = authentication.user; + AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_AUTHENTICATION_SIZE); + JsonObject jsonObject = response->getRoot(); + jsonObject["access_token"] = _securityManager->generateJWT(user); + response->setLength(); + request->send(response); + return; + } } - } - AsyncWebServerResponse* response = request->beginResponse(401); - request->send(response); + AsyncWebServerResponse * response = request->beginResponse(401); + request->send(response); } #endif // end FT_ENABLED(FT_SECURITY) diff --git a/lib/framework/AuthenticationService.h b/lib/framework/AuthenticationService.h index 85202237..52017006 100644 --- a/lib/framework/AuthenticationService.h +++ b/lib/framework/AuthenticationService.h @@ -14,17 +14,17 @@ #if FT_ENABLED(FT_SECURITY) class AuthenticationService { - public: - AuthenticationService(AsyncWebServer* server, SecurityManager* securityManager); + public: + AuthenticationService(AsyncWebServer * server, SecurityManager * securityManager); - private: - SecurityManager* _securityManager; - AsyncCallbackJsonWebHandler _signInHandler; + private: + SecurityManager * _securityManager; + AsyncCallbackJsonWebHandler _signInHandler; - // endpoint functions - void signIn(AsyncWebServerRequest* request, JsonVariant& json); - void verifyAuthorization(AsyncWebServerRequest* request); + // endpoint functions + void signIn(AsyncWebServerRequest * request, JsonVariant & json); + void verifyAuthorization(AsyncWebServerRequest * request); }; -#endif // end FT_ENABLED(FT_SECURITY) -#endif // end SecurityManager_h +#endif // end FT_ENABLED(FT_SECURITY) +#endif // end SecurityManager_h diff --git a/lib/framework/ESP8266React.h b/lib/framework/ESP8266React.h index 1bb23a7d..3698298f 100644 --- a/lib/framework/ESP8266React.h +++ b/lib/framework/ESP8266React.h @@ -34,84 +34,84 @@ #endif class ESP8266React { - public: - ESP8266React(AsyncWebServer* server, FS* fs); + public: + ESP8266React(AsyncWebServer * server, FS * fs); - void begin(); - void loop(); + void begin(); + void loop(); - SecurityManager* getSecurityManager() { - return &_securitySettingsService; - } + SecurityManager * getSecurityManager() { + return &_securitySettingsService; + } #if FT_ENABLED(FT_SECURITY) - StatefulService* getSecuritySettingsService() { - return &_securitySettingsService; - } + StatefulService * getSecuritySettingsService() { + return &_securitySettingsService; + } #endif - StatefulService* getWiFiSettingsService() { - return &_wifiSettingsService; - } + StatefulService * getWiFiSettingsService() { + return &_wifiSettingsService; + } - StatefulService* getAPSettingsService() { - return &_apSettingsService; - } + StatefulService * getAPSettingsService() { + return &_apSettingsService; + } #if FT_ENABLED(FT_NTP) - StatefulService* getNTPSettingsService() { - return &_ntpSettingsService; - } + StatefulService * getNTPSettingsService() { + return &_ntpSettingsService; + } #endif #if FT_ENABLED(FT_OTA) - StatefulService* getOTASettingsService() { - return &_otaSettingsService; - } + StatefulService * getOTASettingsService() { + return &_otaSettingsService; + } #endif #if FT_ENABLED(FT_MQTT) - StatefulService* getMqttSettingsService() { - return &_mqttSettingsService; - } + StatefulService * getMqttSettingsService() { + return &_mqttSettingsService; + } - AsyncMqttClient* getMqttClient() { - return _mqttSettingsService.getMqttClient(); - } + AsyncMqttClient * getMqttClient() { + return _mqttSettingsService.getMqttClient(); + } #endif - void factoryReset() { - _factoryResetService.factoryReset(); - } - - private: - FeaturesService _featureService; - SecuritySettingsService _securitySettingsService; - WiFiSettingsService _wifiSettingsService; - WiFiScanner _wifiScanner; - WiFiStatus _wifiStatus; - APSettingsService _apSettingsService; - APStatus _apStatus; + void factoryReset() { + _factoryResetService.factoryReset(); + } + + private: + FeaturesService _featureService; + SecuritySettingsService _securitySettingsService; + WiFiSettingsService _wifiSettingsService; + WiFiScanner _wifiScanner; + WiFiStatus _wifiStatus; + APSettingsService _apSettingsService; + APStatus _apStatus; #if FT_ENABLED(FT_NTP) - NTPSettingsService _ntpSettingsService; - NTPStatus _ntpStatus; + NTPSettingsService _ntpSettingsService; + NTPStatus _ntpStatus; #endif #if FT_ENABLED(FT_OTA) - OTASettingsService _otaSettingsService; + OTASettingsService _otaSettingsService; #endif #if FT_ENABLED(FT_UPLOAD_FIRMWARE) - UploadFirmwareService _uploadFirmwareService; + UploadFirmwareService _uploadFirmwareService; #endif #if FT_ENABLED(FT_MQTT) - MqttSettingsService _mqttSettingsService; - MqttStatus _mqttStatus; + MqttSettingsService _mqttSettingsService; + MqttStatus _mqttStatus; #endif #if FT_ENABLED(FT_SECURITY) - AuthenticationService _authenticationService; + AuthenticationService _authenticationService; #endif - RestartService _restartService; - FactoryResetService _factoryResetService; - SystemStatus _systemStatus; + RestartService _restartService; + FactoryResetService _factoryResetService; + SystemStatus _systemStatus; }; #endif diff --git a/lib/framework/ESPUtils.h b/lib/framework/ESPUtils.h index 834459df..e24952ce 100644 --- a/lib/framework/ESPUtils.h +++ b/lib/framework/ESPUtils.h @@ -4,14 +4,14 @@ #include class ESPUtils { - public: - static String defaultDeviceValue(String prefix = "") { + public: + static String defaultDeviceValue(String prefix = "") { #ifdef ESP32 - return prefix + String((unsigned long)ESP.getEfuseMac(), HEX); + return prefix + String((unsigned long)ESP.getEfuseMac(), HEX); #elif defined(ESP8266) - return prefix + String(ESP.getChipId(), HEX); + return prefix + String(ESP.getChipId(), HEX); #endif - } + } }; -#endif // end ESPUtils +#endif // end ESPUtils diff --git a/lib/framework/FSPersistence.h b/lib/framework/FSPersistence.h index f0da8cc5..b43a6c7f 100644 --- a/lib/framework/FSPersistence.h +++ b/lib/framework/FSPersistence.h @@ -11,7 +11,7 @@ class FSPersistence { JsonStateUpdater stateUpdater, StatefulService * statefulService, FS * fs, - char const * filePath, + const char * filePath, size_t bufferSize = DEFAULT_BUFFER_SIZE) : _stateReader(stateReader) , _stateUpdater(stateUpdater) @@ -97,7 +97,7 @@ class FSPersistence { JsonStateUpdater _stateUpdater; StatefulService * _statefulService; FS * _fs; - char const * _filePath; + const char * _filePath; size_t _bufferSize; update_handler_id_t _updateHandlerId; diff --git a/lib/framework/FactoryResetService.h b/lib/framework/FactoryResetService.h index 2336e6f3..bf065a07 100644 --- a/lib/framework/FactoryResetService.h +++ b/lib/framework/FactoryResetService.h @@ -18,15 +18,15 @@ #define FACTORY_RESET_SERVICE_PATH "/rest/factoryReset" class FactoryResetService { - FS* fs; + FS * fs; - public: - FactoryResetService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager); + public: + FactoryResetService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager); - void factoryReset(); + void factoryReset(); - private: - void handleRequest(AsyncWebServerRequest* request); + private: + void handleRequest(AsyncWebServerRequest * request); }; -#endif // end FactoryResetService_h +#endif // end FactoryResetService_h diff --git a/lib/framework/FeaturesService.cpp b/lib/framework/FeaturesService.cpp index 095f1f2d..98953048 100644 --- a/lib/framework/FeaturesService.cpp +++ b/lib/framework/FeaturesService.cpp @@ -1,42 +1,42 @@ #include -FeaturesService::FeaturesService(AsyncWebServer* server) { - server->on(FEATURES_SERVICE_PATH, HTTP_GET, std::bind(&FeaturesService::features, this, std::placeholders::_1)); +FeaturesService::FeaturesService(AsyncWebServer * server) { + server->on(FEATURES_SERVICE_PATH, HTTP_GET, std::bind(&FeaturesService::features, this, std::placeholders::_1)); } -void FeaturesService::features(AsyncWebServerRequest* request) { - AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_FEATURES_SIZE); - JsonObject root = response->getRoot(); +void FeaturesService::features(AsyncWebServerRequest * request) { + AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_FEATURES_SIZE); + JsonObject root = response->getRoot(); #if FT_ENABLED(FT_PROJECT) - root["project"] = true; + root["project"] = true; #else - root["project"] = false; + root["project"] = false; #endif #if FT_ENABLED(FT_SECURITY) - root["security"] = true; + root["security"] = true; #else - root["security"] = false; + root["security"] = false; #endif #if FT_ENABLED(FT_MQTT) - root["mqtt"] = true; + root["mqtt"] = true; #else - root["mqtt"] = false; + root["mqtt"] = false; #endif #if FT_ENABLED(FT_NTP) - root["ntp"] = true; + root["ntp"] = true; #else - root["ntp"] = false; + root["ntp"] = false; #endif #if FT_ENABLED(FT_OTA) - root["ota"] = true; + root["ota"] = true; #else - root["ota"] = false; + root["ota"] = false; #endif #if FT_ENABLED(FT_UPLOAD_FIRMWARE) - root["upload_firmware"] = true; + root["upload_firmware"] = true; #else - root["upload_firmware"] = false; + root["upload_firmware"] = false; #endif - response->setLength(); - request->send(response); + response->setLength(); + request->send(response); } diff --git a/lib/framework/FeaturesService.h b/lib/framework/FeaturesService.h index 867101ec..7caa42d9 100644 --- a/lib/framework/FeaturesService.h +++ b/lib/framework/FeaturesService.h @@ -19,11 +19,11 @@ #define FEATURES_SERVICE_PATH "/rest/features" class FeaturesService { - public: - FeaturesService(AsyncWebServer* server); + public: + FeaturesService(AsyncWebServer * server); - private: - void features(AsyncWebServerRequest* request); + private: + void features(AsyncWebServerRequest * request); }; #endif diff --git a/lib/framework/HttpEndpoint.h b/lib/framework/HttpEndpoint.h index f45e716a..851e5350 100644 --- a/lib/framework/HttpEndpoint.h +++ b/lib/framework/HttpEndpoint.h @@ -13,153 +13,139 @@ template class HttpGetEndpoint { - public: - HttpGetEndpoint(JsonStateReader stateReader, - StatefulService* statefulService, - AsyncWebServer* server, - const String& servicePath, - SecurityManager* securityManager, - AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - _stateReader(stateReader), _statefulService(statefulService), _bufferSize(bufferSize) { - server->on(servicePath.c_str(), - HTTP_GET, - securityManager->wrapRequest(std::bind(&HttpGetEndpoint::fetchSettings, this, std::placeholders::_1), - authenticationPredicate)); - } - - HttpGetEndpoint(JsonStateReader stateReader, - StatefulService* statefulService, - AsyncWebServer* server, - const String& servicePath, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - _stateReader(stateReader), _statefulService(statefulService), _bufferSize(bufferSize) { - server->on(servicePath.c_str(), HTTP_GET, std::bind(&HttpGetEndpoint::fetchSettings, this, std::placeholders::_1)); - } - - protected: - JsonStateReader _stateReader; - StatefulService* _statefulService; - size_t _bufferSize; - - void fetchSettings(AsyncWebServerRequest* request) { - AsyncJsonResponse* response = new AsyncJsonResponse(false, _bufferSize); - JsonObject jsonObject = response->getRoot().to(); - _statefulService->read(jsonObject, _stateReader); - - response->setLength(); - request->send(response); - } + public: + HttpGetEndpoint(JsonStateReader stateReader, + StatefulService * statefulService, + AsyncWebServer * server, + const String & servicePath, + SecurityManager * securityManager, + AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : _stateReader(stateReader) + , _statefulService(statefulService) + , _bufferSize(bufferSize) { + server->on(servicePath.c_str(), + HTTP_GET, + securityManager->wrapRequest(std::bind(&HttpGetEndpoint::fetchSettings, this, std::placeholders::_1), authenticationPredicate)); + } + + HttpGetEndpoint(JsonStateReader stateReader, + StatefulService * statefulService, + AsyncWebServer * server, + const String & servicePath, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : _stateReader(stateReader) + , _statefulService(statefulService) + , _bufferSize(bufferSize) { + server->on(servicePath.c_str(), HTTP_GET, std::bind(&HttpGetEndpoint::fetchSettings, this, std::placeholders::_1)); + } + + protected: + JsonStateReader _stateReader; + StatefulService * _statefulService; + size_t _bufferSize; + + void fetchSettings(AsyncWebServerRequest * request) { + AsyncJsonResponse * response = new AsyncJsonResponse(false, _bufferSize); + JsonObject jsonObject = response->getRoot().to(); + _statefulService->read(jsonObject, _stateReader); + + response->setLength(); + request->send(response); + } }; template class HttpPostEndpoint { - public: - HttpPostEndpoint(JsonStateReader stateReader, - JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - const String& servicePath, - SecurityManager* securityManager, - AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - _stateReader(stateReader), - _stateUpdater(stateUpdater), - _statefulService(statefulService), - _updateHandler( - servicePath, - securityManager->wrapCallback( - std::bind(&HttpPostEndpoint::updateSettings, this, std::placeholders::_1, std::placeholders::_2), - authenticationPredicate), - bufferSize), - _bufferSize(bufferSize) { - _updateHandler.setMethod(HTTP_POST); - server->addHandler(&_updateHandler); - } - - HttpPostEndpoint(JsonStateReader stateReader, - JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - const String& servicePath, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - _stateReader(stateReader), - _stateUpdater(stateUpdater), - _statefulService(statefulService), - _updateHandler(servicePath, - std::bind(&HttpPostEndpoint::updateSettings, this, std::placeholders::_1, std::placeholders::_2), - bufferSize), - _bufferSize(bufferSize) { - _updateHandler.setMethod(HTTP_POST); - server->addHandler(&_updateHandler); - } - - protected: - JsonStateReader _stateReader; - JsonStateUpdater _stateUpdater; - StatefulService* _statefulService; - AsyncCallbackJsonWebHandler _updateHandler; - size_t _bufferSize; - - void updateSettings(AsyncWebServerRequest* request, JsonVariant& json) { - if (!json.is()) { - request->send(400); - return; + public: + HttpPostEndpoint(JsonStateReader stateReader, + JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const String & servicePath, + SecurityManager * securityManager, + AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : _stateReader(stateReader) + , _stateUpdater(stateUpdater) + , _statefulService(statefulService) + , _updateHandler(servicePath, + securityManager->wrapCallback(std::bind(&HttpPostEndpoint::updateSettings, this, std::placeholders::_1, std::placeholders::_2), + authenticationPredicate), + bufferSize) + , _bufferSize(bufferSize) { + _updateHandler.setMethod(HTTP_POST); + server->addHandler(&_updateHandler); } - JsonObject jsonObject = json.as(); - StateUpdateResult outcome = _statefulService->updateWithoutPropagation(jsonObject, _stateUpdater); - if (outcome == StateUpdateResult::ERROR) { - request->send(400); - return; + + HttpPostEndpoint(JsonStateReader stateReader, + JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const String & servicePath, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : _stateReader(stateReader) + , _stateUpdater(stateUpdater) + , _statefulService(statefulService) + , _updateHandler(servicePath, std::bind(&HttpPostEndpoint::updateSettings, this, std::placeholders::_1, std::placeholders::_2), bufferSize) + , _bufferSize(bufferSize) { + _updateHandler.setMethod(HTTP_POST); + server->addHandler(&_updateHandler); } - if (outcome == StateUpdateResult::CHANGED) { - request->onDisconnect([this]() { _statefulService->callUpdateHandlers(HTTP_ENDPOINT_ORIGIN_ID); }); + + protected: + JsonStateReader _stateReader; + JsonStateUpdater _stateUpdater; + StatefulService * _statefulService; + AsyncCallbackJsonWebHandler _updateHandler; + size_t _bufferSize; + + void updateSettings(AsyncWebServerRequest * request, JsonVariant & json) { + if (!json.is()) { + request->send(400); + return; + } + JsonObject jsonObject = json.as(); + StateUpdateResult outcome = _statefulService->updateWithoutPropagation(jsonObject, _stateUpdater); + if (outcome == StateUpdateResult::ERROR) { + request->send(400); + return; + } + if (outcome == StateUpdateResult::CHANGED) { + request->onDisconnect([this]() { _statefulService->callUpdateHandlers(HTTP_ENDPOINT_ORIGIN_ID); }); + } + AsyncJsonResponse * response = new AsyncJsonResponse(false, _bufferSize); + jsonObject = response->getRoot().to(); + _statefulService->read(jsonObject, _stateReader); + response->setLength(); + request->send(response); } - AsyncJsonResponse* response = new AsyncJsonResponse(false, _bufferSize); - jsonObject = response->getRoot().to(); - _statefulService->read(jsonObject, _stateReader); - response->setLength(); - request->send(response); - } }; template class HttpEndpoint : public HttpGetEndpoint, public HttpPostEndpoint { - public: - HttpEndpoint(JsonStateReader stateReader, - JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - const String& servicePath, - SecurityManager* securityManager, - AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - HttpGetEndpoint(stateReader, - statefulService, - server, - servicePath, - securityManager, - authenticationPredicate, - bufferSize), - HttpPostEndpoint(stateReader, - stateUpdater, - statefulService, - server, - servicePath, - securityManager, - authenticationPredicate, - bufferSize) { - } - - HttpEndpoint(JsonStateReader stateReader, - JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - const String& servicePath, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - HttpGetEndpoint(stateReader, statefulService, server, servicePath, bufferSize), - HttpPostEndpoint(stateReader, stateUpdater, statefulService, server, servicePath, bufferSize) { - } + public: + HttpEndpoint(JsonStateReader stateReader, + JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const String & servicePath, + SecurityManager * securityManager, + AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : HttpGetEndpoint(stateReader, statefulService, server, servicePath, securityManager, authenticationPredicate, bufferSize) + , HttpPostEndpoint(stateReader, stateUpdater, statefulService, server, servicePath, securityManager, authenticationPredicate, bufferSize) { + } + + HttpEndpoint(JsonStateReader stateReader, + JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const String & servicePath, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : HttpGetEndpoint(stateReader, statefulService, server, servicePath, bufferSize) + , HttpPostEndpoint(stateReader, stateUpdater, statefulService, server, servicePath, bufferSize) { + } }; -#endif // end HttpEndpoint +#endif // end HttpEndpoint diff --git a/lib/framework/JsonUtils.h b/lib/framework/JsonUtils.h index 0c408983..b1272376 100644 --- a/lib/framework/JsonUtils.h +++ b/lib/framework/JsonUtils.h @@ -6,24 +6,24 @@ #include class JsonUtils { - public: - static void readIP(JsonObject& root, const String& key, IPAddress& ip, const String& def) { - IPAddress defaultIp = {}; - if (!defaultIp.fromString(def)) { - defaultIp = INADDR_NONE; + public: + static void readIP(JsonObject & root, const String & key, IPAddress & ip, const String & def) { + IPAddress defaultIp = {}; + if (!defaultIp.fromString(def)) { + defaultIp = INADDR_NONE; + } + readIP(root, key, ip, defaultIp); } - readIP(root, key, ip, defaultIp); - } - static void readIP(JsonObject& root, const String& key, IPAddress& ip, const IPAddress& defaultIp = INADDR_NONE) { - if (!root[key].is() || !ip.fromString(root[key].as())) { - ip = defaultIp; + static void readIP(JsonObject & root, const String & key, IPAddress & ip, const IPAddress & defaultIp = INADDR_NONE) { + if (!root[key].is() || !ip.fromString(root[key].as())) { + ip = defaultIp; + } } - } - static void writeIP(JsonObject& root, const String& key, const IPAddress& ip) { - if (ip != INADDR_NONE) { - root[key] = ip.toString(); + static void writeIP(JsonObject & root, const String & key, const IPAddress & ip) { + if (ip != INADDR_NONE) { + root[key] = ip.toString(); + } } - } }; -#endif // end JsonUtils +#endif // end JsonUtils diff --git a/lib/framework/MqttPubSub.h b/lib/framework/MqttPubSub.h index c3ed3f14..f28c0c7b 100644 --- a/lib/framework/MqttPubSub.h +++ b/lib/framework/MqttPubSub.h @@ -8,160 +8,161 @@ template class MqttConnector { - protected: - StatefulService* _statefulService; - AsyncMqttClient* _mqttClient; - size_t _bufferSize; - - MqttConnector(StatefulService* statefulService, AsyncMqttClient* mqttClient, size_t bufferSize) : - _statefulService(statefulService), _mqttClient(mqttClient), _bufferSize(bufferSize) { - _mqttClient->onConnect(std::bind(&MqttConnector::onConnect, this)); - } - - virtual void onConnect() = 0; - - public: - inline AsyncMqttClient* getMqttClient() const { - return _mqttClient; - } + protected: + StatefulService * _statefulService; + AsyncMqttClient * _mqttClient; + size_t _bufferSize; + + MqttConnector(StatefulService * statefulService, AsyncMqttClient * mqttClient, size_t bufferSize) + : _statefulService(statefulService) + , _mqttClient(mqttClient) + , _bufferSize(bufferSize) { + _mqttClient->onConnect(std::bind(&MqttConnector::onConnect, this)); + } + + virtual void onConnect() = 0; + + public: + inline AsyncMqttClient * getMqttClient() const { + return _mqttClient; + } }; template class MqttPub : virtual public MqttConnector { - public: - MqttPub(JsonStateReader stateReader, - StatefulService* statefulService, - AsyncMqttClient* mqttClient, - const String& pubTopic = "", - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - MqttConnector(statefulService, mqttClient, bufferSize), _stateReader(stateReader), _pubTopic(pubTopic) { - MqttConnector::_statefulService->addUpdateHandler([&](const String& originId) { publish(); }, false); - } - - void setPubTopic(const String& pubTopic) { - _pubTopic = pubTopic; - publish(); - } - - protected: - virtual void onConnect() { - publish(); - } - - private: - JsonStateReader _stateReader; - String _pubTopic; - - void publish() { - if (_pubTopic.length() > 0 && MqttConnector::_mqttClient->connected()) { - // serialize to json doc - DynamicJsonDocument json(MqttConnector::_bufferSize); - JsonObject jsonObject = json.to(); - MqttConnector::_statefulService->read(jsonObject, _stateReader); - - // serialize to string - String payload; - serializeJson(json, payload); - - // publish the payload - MqttConnector::_mqttClient->publish(_pubTopic.c_str(), 0, false, payload.c_str()); + public: + MqttPub(JsonStateReader stateReader, + StatefulService * statefulService, + AsyncMqttClient * mqttClient, + const String & pubTopic = "", + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : MqttConnector(statefulService, mqttClient, bufferSize) + , _stateReader(stateReader) + , _pubTopic(pubTopic) { + MqttConnector::_statefulService->addUpdateHandler([&](const String & originId) { publish(); }, false); + } + + void setPubTopic(const String & pubTopic) { + _pubTopic = pubTopic; + publish(); + } + + protected: + virtual void onConnect() { + publish(); + } + + private: + JsonStateReader _stateReader; + String _pubTopic; + + void publish() { + if (_pubTopic.length() > 0 && MqttConnector::_mqttClient->connected()) { + // serialize to json doc + DynamicJsonDocument json(MqttConnector::_bufferSize); + JsonObject jsonObject = json.to(); + MqttConnector::_statefulService->read(jsonObject, _stateReader); + + // serialize to string + String payload; + serializeJson(json, payload); + + // publish the payload + MqttConnector::_mqttClient->publish(_pubTopic.c_str(), 0, false, payload.c_str()); + } } - } }; template class MqttSub : virtual public MqttConnector { - public: - MqttSub(JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncMqttClient* mqttClient, - const String& subTopic = "", - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - MqttConnector(statefulService, mqttClient, bufferSize), _stateUpdater(stateUpdater), _subTopic(subTopic) { - MqttConnector::_mqttClient->onMessage(std::bind(&MqttSub::onMqttMessage, - this, - std::placeholders::_1, - std::placeholders::_2, - std::placeholders::_3, - std::placeholders::_4, - std::placeholders::_5, - std::placeholders::_6)); - } - - void setSubTopic(const String& subTopic) { - if (!_subTopic.equals(subTopic)) { - // unsubscribe from the existing topic if one was set - if (_subTopic.length() > 0) { - MqttConnector::_mqttClient->unsubscribe(_subTopic.c_str()); - } - // set the new topic and re-configure the subscription - _subTopic = subTopic; - subscribe(); + public: + MqttSub(JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncMqttClient * mqttClient, + const String & subTopic = "", + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : MqttConnector(statefulService, mqttClient, bufferSize) + , _stateUpdater(stateUpdater) + , _subTopic(subTopic) { + MqttConnector::_mqttClient->onMessage(std::bind(&MqttSub::onMqttMessage, + this, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3, + std::placeholders::_4, + std::placeholders::_5, + std::placeholders::_6)); } - } - - protected: - virtual void onConnect() { - subscribe(); - } - private: - JsonStateUpdater _stateUpdater; - String _subTopic; + void setSubTopic(const String & subTopic) { + if (!_subTopic.equals(subTopic)) { + // unsubscribe from the existing topic if one was set + if (_subTopic.length() > 0) { + MqttConnector::_mqttClient->unsubscribe(_subTopic.c_str()); + } + // set the new topic and re-configure the subscription + _subTopic = subTopic; + subscribe(); + } + } - void subscribe() { - if (_subTopic.length() > 0) { - MqttConnector::_mqttClient->subscribe(_subTopic.c_str(), 2); + protected: + virtual void onConnect() { + subscribe(); } - } - - void onMqttMessage(char* topic, - char* payload, - AsyncMqttClientMessageProperties properties, - size_t len, - size_t index, - size_t total) { - // we only care about the topic we are watching in this class - if (strcmp(_subTopic.c_str(), topic)) { - return; + + private: + JsonStateUpdater _stateUpdater; + String _subTopic; + + void subscribe() { + if (_subTopic.length() > 0) { + MqttConnector::_mqttClient->subscribe(_subTopic.c_str(), 2); + } } - // deserialize from string - DynamicJsonDocument json(MqttConnector::_bufferSize); - DeserializationError error = deserializeJson(json, payload, len); - if (!error && json.is()) { - JsonObject jsonObject = json.as(); - MqttConnector::_statefulService->update(jsonObject, _stateUpdater, MQTT_ORIGIN_ID); + void onMqttMessage(char * topic, char * payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { + // we only care about the topic we are watching in this class + if (strcmp(_subTopic.c_str(), topic)) { + return; + } + + // deserialize from string + DynamicJsonDocument json(MqttConnector::_bufferSize); + DeserializationError error = deserializeJson(json, payload, len); + if (!error && json.is()) { + JsonObject jsonObject = json.as(); + MqttConnector::_statefulService->update(jsonObject, _stateUpdater, MQTT_ORIGIN_ID); + } } - } }; template class MqttPubSub : public MqttPub, public MqttSub { - public: - MqttPubSub(JsonStateReader stateReader, - JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncMqttClient* mqttClient, - const String& pubTopic = "", - const String& subTopic = "", - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - MqttConnector(statefulService, mqttClient, bufferSize), - MqttPub(stateReader, statefulService, mqttClient, pubTopic, bufferSize), - MqttSub(stateUpdater, statefulService, mqttClient, subTopic, bufferSize) { - } - - public: - void configureTopics(const String& pubTopic, const String& subTopic) { - MqttSub::setSubTopic(subTopic); - MqttPub::setPubTopic(pubTopic); - } - - protected: - void onConnect() { - MqttSub::onConnect(); - MqttPub::onConnect(); - } + public: + MqttPubSub(JsonStateReader stateReader, + JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncMqttClient * mqttClient, + const String & pubTopic = "", + const String & subTopic = "", + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : MqttConnector(statefulService, mqttClient, bufferSize) + , MqttPub(stateReader, statefulService, mqttClient, pubTopic, bufferSize) + , MqttSub(stateUpdater, statefulService, mqttClient, subTopic, bufferSize) { + } + + public: + void configureTopics(const String & pubTopic, const String & subTopic) { + MqttSub::setSubTopic(subTopic); + MqttPub::setPubTopic(pubTopic); + } + + protected: + void onConnect() { + MqttSub::onConnect(); + MqttPub::onConnect(); + } }; -#endif // end MqttPubSub +#endif // end MqttPubSub diff --git a/lib/framework/NTPSettingsService.cpp b/lib/framework/NTPSettingsService.cpp index ec3a1efa..202a82c8 100644 --- a/lib/framework/NTPSettingsService.cpp +++ b/lib/framework/NTPSettingsService.cpp @@ -1,90 +1,85 @@ #include -NTPSettingsService::NTPSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager) : - _httpEndpoint(NTPSettings::read, NTPSettings::update, this, server, NTP_SETTINGS_SERVICE_PATH, securityManager), - _fsPersistence(NTPSettings::read, NTPSettings::update, this, fs, NTP_SETTINGS_FILE), - _timeHandler(TIME_PATH, - securityManager->wrapCallback( - std::bind(&NTPSettingsService::configureTime, this, std::placeholders::_1, std::placeholders::_2), - AuthenticationPredicates::IS_ADMIN)) { - _timeHandler.setMethod(HTTP_POST); - _timeHandler.setMaxContentLength(MAX_TIME_SIZE); - server->addHandler(&_timeHandler); +NTPSettingsService::NTPSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager) + : _httpEndpoint(NTPSettings::read, NTPSettings::update, this, server, NTP_SETTINGS_SERVICE_PATH, securityManager) + , _fsPersistence(NTPSettings::read, NTPSettings::update, this, fs, NTP_SETTINGS_FILE) + , _timeHandler(TIME_PATH, + securityManager->wrapCallback(std::bind(&NTPSettingsService::configureTime, this, std::placeholders::_1, std::placeholders::_2), + AuthenticationPredicates::IS_ADMIN)) { + _timeHandler.setMethod(HTTP_POST); + _timeHandler.setMaxContentLength(MAX_TIME_SIZE); + server->addHandler(&_timeHandler); #ifdef ESP32 - WiFi.onEvent( - std::bind(&NTPSettingsService::onStationModeDisconnected, this, std::placeholders::_1, std::placeholders::_2), - WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED); - WiFi.onEvent(std::bind(&NTPSettingsService::onStationModeGotIP, this, std::placeholders::_1, std::placeholders::_2), - WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP); + WiFi.onEvent(std::bind(&NTPSettingsService::onStationModeDisconnected, this, std::placeholders::_1, std::placeholders::_2), + WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED); + WiFi.onEvent(std::bind(&NTPSettingsService::onStationModeGotIP, this, std::placeholders::_1, std::placeholders::_2), WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP); #elif defined(ESP8266) - _onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected( - std::bind(&NTPSettingsService::onStationModeDisconnected, this, std::placeholders::_1)); - _onStationModeGotIPHandler = - WiFi.onStationModeGotIP(std::bind(&NTPSettingsService::onStationModeGotIP, this, std::placeholders::_1)); + _onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected(std::bind(&NTPSettingsService::onStationModeDisconnected, this, std::placeholders::_1)); + _onStationModeGotIPHandler = WiFi.onStationModeGotIP(std::bind(&NTPSettingsService::onStationModeGotIP, this, std::placeholders::_1)); #endif - addUpdateHandler([&](const String& originId) { configureNTP(); }, false); + addUpdateHandler([&](const String & originId) { configureNTP(); }, false); } void NTPSettingsService::begin() { - _fsPersistence.readFromFS(); - configureNTP(); + _fsPersistence.readFromFS(); + configureNTP(); } #ifdef ESP32 void NTPSettingsService::onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info) { - // Serial.println(F("Got IP address, starting NTP Synchronization")); - configureNTP(); + // Serial.println(F("Got IP address, starting NTP Synchronization")); + configureNTP(); } void NTPSettingsService::onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info) { - // Serial.println(F("WiFi connection dropped, stopping NTP.")); - configureNTP(); + // Serial.println(F("WiFi connection dropped, stopping NTP.")); + configureNTP(); } #elif defined(ESP8266) -void NTPSettingsService::onStationModeGotIP(const WiFiEventStationModeGotIP& event) { - // Serial.println(F("Got IP address, starting NTP Synchronization")); - configureNTP(); +void NTPSettingsService::onStationModeGotIP(const WiFiEventStationModeGotIP & event) { + // Serial.println(F("Got IP address, starting NTP Synchronization")); + configureNTP(); } -void NTPSettingsService::onStationModeDisconnected(const WiFiEventStationModeDisconnected& event) { - // Serial.println(F("WiFi connection dropped, stopping NTP.")); - configureNTP(); +void NTPSettingsService::onStationModeDisconnected(const WiFiEventStationModeDisconnected & event) { + // Serial.println(F("WiFi connection dropped, stopping NTP.")); + configureNTP(); } #endif void NTPSettingsService::configureNTP() { - if (WiFi.isConnected() && _state.enabled) { - // Serial.println(F("Starting NTP...")); + if (WiFi.isConnected() && _state.enabled) { + // Serial.println(F("Starting NTP...")); #ifdef ESP32 - configTzTime(_state.tzFormat.c_str(), _state.server.c_str()); + configTzTime(_state.tzFormat.c_str(), _state.server.c_str()); #elif defined(ESP8266) - configTime(_state.tzFormat.c_str(), _state.server.c_str()); + configTime(_state.tzFormat.c_str(), _state.server.c_str()); #endif - } else { + } else { #ifdef ESP32 - setenv("TZ", _state.tzFormat.c_str(), 1); - tzset(); + setenv("TZ", _state.tzFormat.c_str(), 1); + tzset(); #elif defined(ESP8266) - setTZ(_state.tzFormat.c_str()); + setTZ(_state.tzFormat.c_str()); #endif - sntp_stop(); - } + sntp_stop(); + } } -void NTPSettingsService::configureTime(AsyncWebServerRequest* request, JsonVariant& json) { - if (!sntp_enabled() && json.is()) { - String timeUtc = json["time_utc"]; - struct tm tm = {0}; - char* s = strptime(timeUtc.c_str(), "%Y-%m-%dT%H:%M:%SZ", &tm); - if (s != nullptr) { - time_t time = mktime(&tm); - struct timeval now = {.tv_sec = time}; - settimeofday(&now, nullptr); - AsyncWebServerResponse* response = request->beginResponse(200); - request->send(response); - return; +void NTPSettingsService::configureTime(AsyncWebServerRequest * request, JsonVariant & json) { + if (!sntp_enabled() && json.is()) { + String timeUtc = json["time_utc"]; + struct tm tm = {0}; + char * s = strptime(timeUtc.c_str(), "%Y-%m-%dT%H:%M:%SZ", &tm); + if (s != nullptr) { + time_t time = mktime(&tm); + struct timeval now = {.tv_sec = time}; + settimeofday(&now, nullptr); + AsyncWebServerResponse * response = request->beginResponse(200); + request->send(response); + return; + } } - } - AsyncWebServerResponse* response = request->beginResponse(400); - request->send(response); + AsyncWebServerResponse * response = request->beginResponse(400); + request->send(response); } diff --git a/lib/framework/NTPSettingsService.h b/lib/framework/NTPSettingsService.h index bf25ca49..efd4ee3d 100644 --- a/lib/framework/NTPSettingsService.h +++ b/lib/framework/NTPSettingsService.h @@ -34,51 +34,51 @@ #define TIME_PATH "/rest/time" class NTPSettings { - public: - bool enabled; - String tzLabel; - String tzFormat; - String server; - - static void read(NTPSettings& settings, JsonObject& root) { - root["enabled"] = settings.enabled; - root["server"] = settings.server; - root["tz_label"] = settings.tzLabel; - root["tz_format"] = settings.tzFormat; - } - - static StateUpdateResult update(JsonObject& root, NTPSettings& settings) { - settings.enabled = root["enabled"] | FACTORY_NTP_ENABLED; - settings.server = root["server"] | FACTORY_NTP_SERVER; - settings.tzLabel = root["tz_label"] | FACTORY_NTP_TIME_ZONE_LABEL; - settings.tzFormat = root["tz_format"] | FACTORY_NTP_TIME_ZONE_FORMAT; - return StateUpdateResult::CHANGED; - } + public: + bool enabled; + String tzLabel; + String tzFormat; + String server; + + static void read(NTPSettings & settings, JsonObject & root) { + root["enabled"] = settings.enabled; + root["server"] = settings.server; + root["tz_label"] = settings.tzLabel; + root["tz_format"] = settings.tzFormat; + } + + static StateUpdateResult update(JsonObject & root, NTPSettings & settings) { + settings.enabled = root["enabled"] | FACTORY_NTP_ENABLED; + settings.server = root["server"] | FACTORY_NTP_SERVER; + settings.tzLabel = root["tz_label"] | FACTORY_NTP_TIME_ZONE_LABEL; + settings.tzFormat = root["tz_format"] | FACTORY_NTP_TIME_ZONE_FORMAT; + return StateUpdateResult::CHANGED; + } }; class NTPSettingsService : public StatefulService { - public: - NTPSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager); + public: + NTPSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager); - void begin(); + void begin(); - private: - HttpEndpoint _httpEndpoint; - FSPersistence _fsPersistence; - AsyncCallbackJsonWebHandler _timeHandler; + private: + HttpEndpoint _httpEndpoint; + FSPersistence _fsPersistence; + AsyncCallbackJsonWebHandler _timeHandler; #ifdef ESP32 - void onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info); - void onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info); + void onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info); + void onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info); #elif defined(ESP8266) - WiFiEventHandler _onStationModeDisconnectedHandler; - WiFiEventHandler _onStationModeGotIPHandler; + WiFiEventHandler _onStationModeDisconnectedHandler; + WiFiEventHandler _onStationModeGotIPHandler; - void onStationModeGotIP(const WiFiEventStationModeGotIP& event); - void onStationModeDisconnected(const WiFiEventStationModeDisconnected& event); + void onStationModeGotIP(const WiFiEventStationModeGotIP & event); + void onStationModeDisconnected(const WiFiEventStationModeDisconnected & event); #endif - void configureNTP(); - void configureTime(AsyncWebServerRequest* request, JsonVariant& json); + void configureNTP(); + void configureTime(AsyncWebServerRequest * request, JsonVariant & json); }; -#endif // end NTPSettingsService_h +#endif // end NTPSettingsService_h diff --git a/lib/framework/NTPStatus.cpp b/lib/framework/NTPStatus.cpp index 5afb93b2..f210532a 100644 --- a/lib/framework/NTPStatus.cpp +++ b/lib/framework/NTPStatus.cpp @@ -1,40 +1,39 @@ #include -NTPStatus::NTPStatus(AsyncWebServer* server, SecurityManager* securityManager) { - server->on(NTP_STATUS_SERVICE_PATH, - HTTP_GET, - securityManager->wrapRequest(std::bind(&NTPStatus::ntpStatus, this, std::placeholders::_1), - AuthenticationPredicates::IS_AUTHENTICATED)); +NTPStatus::NTPStatus(AsyncWebServer * server, SecurityManager * securityManager) { + server->on(NTP_STATUS_SERVICE_PATH, + HTTP_GET, + securityManager->wrapRequest(std::bind(&NTPStatus::ntpStatus, this, std::placeholders::_1), AuthenticationPredicates::IS_AUTHENTICATED)); } -String toISOString(tm* time, bool incOffset) { - char time_string[25]; - strftime(time_string, 25, incOffset ? "%FT%T%z" : "%FT%TZ", time); - return String(time_string); +String toISOString(tm * time, bool incOffset) { + char time_string[25]; + strftime(time_string, 25, incOffset ? "%FT%T%z" : "%FT%TZ", time); + return String(time_string); } -void NTPStatus::ntpStatus(AsyncWebServerRequest* request) { - AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_NTP_STATUS_SIZE); - JsonObject root = response->getRoot(); +void NTPStatus::ntpStatus(AsyncWebServerRequest * request) { + AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_NTP_STATUS_SIZE); + JsonObject root = response->getRoot(); - // grab the current instant in unix seconds - time_t now = time(nullptr); + // grab the current instant in unix seconds + time_t now = time(nullptr); - // only provide enabled/disabled status for now - root["status"] = sntp_enabled() ? 1 : 0; + // only provide enabled/disabled status for now + root["status"] = sntp_enabled() ? 1 : 0; - // the current time in UTC - root["time_utc"] = toISOString(gmtime(&now), false); + // the current time in UTC + root["time_utc"] = toISOString(gmtime(&now), false); - // local time as ISO String with TZ - root["time_local"] = toISOString(localtime(&now), true); + // local time as ISO String with TZ + root["time_local"] = toISOString(localtime(&now), true); - // the sntp server name - root["server"] = sntp_getservername(0); + // the sntp server name + root["server"] = sntp_getservername(0); - // device uptime in seconds - root["uptime"] = uuid::get_uptime() / 1000; + // device uptime in seconds + root["uptime"] = uuid::get_uptime() / 1000; - response->setLength(); - request->send(response); + response->setLength(); + request->send(response); } diff --git a/lib/framework/NTPStatus.h b/lib/framework/NTPStatus.h index 89343584..ad599b76 100644 --- a/lib/framework/NTPStatus.h +++ b/lib/framework/NTPStatus.h @@ -23,11 +23,11 @@ #define NTP_STATUS_SERVICE_PATH "/rest/ntpStatus" class NTPStatus { - public: - NTPStatus(AsyncWebServer* server, SecurityManager* securityManager); + public: + NTPStatus(AsyncWebServer * server, SecurityManager * securityManager); - private: - void ntpStatus(AsyncWebServerRequest* request); + private: + void ntpStatus(AsyncWebServerRequest * request); }; -#endif // end NTPStatus_h +#endif // end NTPStatus_h diff --git a/lib/framework/OTASettingsService.h b/lib/framework/OTASettingsService.h index 8a0bcaad..e977cd5e 100644 --- a/lib/framework/OTASettingsService.h +++ b/lib/framework/OTASettingsService.h @@ -31,44 +31,44 @@ #define OTA_SETTINGS_SERVICE_PATH "/rest/otaSettings" class OTASettings { - public: - bool enabled; - int port; - String password; - - static void read(OTASettings& settings, JsonObject& root) { - root["enabled"] = settings.enabled; - root["port"] = settings.port; - root["password"] = settings.password; - } - - static StateUpdateResult update(JsonObject& root, OTASettings& settings) { - settings.enabled = root["enabled"] | FACTORY_OTA_ENABLED; - settings.port = root["port"] | FACTORY_OTA_PORT; - settings.password = root["password"] | FACTORY_OTA_PASSWORD; - return StateUpdateResult::CHANGED; - } + public: + bool enabled; + int port; + String password; + + static void read(OTASettings & settings, JsonObject & root) { + root["enabled"] = settings.enabled; + root["port"] = settings.port; + root["password"] = settings.password; + } + + static StateUpdateResult update(JsonObject & root, OTASettings & settings) { + settings.enabled = root["enabled"] | FACTORY_OTA_ENABLED; + settings.port = root["port"] | FACTORY_OTA_PORT; + settings.password = root["password"] | FACTORY_OTA_PASSWORD; + return StateUpdateResult::CHANGED; + } }; class OTASettingsService : public StatefulService { - public: - OTASettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager); + public: + OTASettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager); - void begin(); - void loop(); + void begin(); + void loop(); - private: - HttpEndpoint _httpEndpoint; - FSPersistence _fsPersistence; - ArduinoOTAClass* _arduinoOTA; + private: + HttpEndpoint _httpEndpoint; + FSPersistence _fsPersistence; + ArduinoOTAClass * _arduinoOTA; - void configureArduinoOTA(); + void configureArduinoOTA(); #ifdef ESP32 - void onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info); + void onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info); #elif defined(ESP8266) - WiFiEventHandler _onStationModeGotIPHandler; - void onStationModeGotIP(const WiFiEventStationModeGotIP& event); + WiFiEventHandler _onStationModeGotIPHandler; + void onStationModeGotIP(const WiFiEventStationModeGotIP & event); #endif }; -#endif // end OTASettingsService_h +#endif // end OTASettingsService_h diff --git a/lib/framework/RestartService.cpp b/lib/framework/RestartService.cpp index 9036e40a..67669040 100644 --- a/lib/framework/RestartService.cpp +++ b/lib/framework/RestartService.cpp @@ -1,13 +1,12 @@ #include -RestartService::RestartService(AsyncWebServer* server, SecurityManager* securityManager) { - server->on(RESTART_SERVICE_PATH, - HTTP_POST, - securityManager->wrapRequest(std::bind(&RestartService::restart, this, std::placeholders::_1), - AuthenticationPredicates::IS_ADMIN)); +RestartService::RestartService(AsyncWebServer * server, SecurityManager * securityManager) { + server->on(RESTART_SERVICE_PATH, + HTTP_POST, + securityManager->wrapRequest(std::bind(&RestartService::restart, this, std::placeholders::_1), AuthenticationPredicates::IS_ADMIN)); } -void RestartService::restart(AsyncWebServerRequest* request) { - request->onDisconnect(RestartService::restartNow); - request->send(200); +void RestartService::restart(AsyncWebServerRequest * request) { + request->onDisconnect(RestartService::restartNow); + request->send(200); } diff --git a/lib/framework/RestartService.h b/lib/framework/RestartService.h index 45a10084..beae4a0d 100644 --- a/lib/framework/RestartService.h +++ b/lib/framework/RestartService.h @@ -15,17 +15,17 @@ #define RESTART_SERVICE_PATH "/rest/restart" class RestartService { - public: - RestartService(AsyncWebServer* server, SecurityManager* securityManager); + public: + RestartService(AsyncWebServer * server, SecurityManager * securityManager); - static void restartNow() { - WiFi.disconnect(true); - delay(500); - ESP.restart(); - } + static void restartNow() { + WiFi.disconnect(true); + delay(500); + ESP.restart(); + } - private: - void restart(AsyncWebServerRequest* request); + private: + void restart(AsyncWebServerRequest * request); }; -#endif // end RestartService_h +#endif // end RestartService_h diff --git a/lib/framework/SecurityManager.h b/lib/framework/SecurityManager.h index 530ab81a..82eb516b 100644 --- a/lib/framework/SecurityManager.h +++ b/lib/framework/SecurityManager.h @@ -21,82 +21,87 @@ #define MAX_JWT_SIZE 128 class User { - public: - String username; - String password; - bool admin; - - public: - User(String username, String password, bool admin) : username(username), password(password), admin(admin) { - } + public: + String username; + String password; + bool admin; + + public: + User(String username, String password, bool admin) + : username(username) + , password(password) + , admin(admin) { + } }; class Authentication { - public: - User* user; - boolean authenticated; - - public: - Authentication(User& user) : user(new User(user)), authenticated(true) { - } - Authentication() : user(nullptr), authenticated(false) { - } - ~Authentication() { - delete (user); - } + public: + User * user; + boolean authenticated; + + public: + Authentication(User & user) + : user(new User(user)) + , authenticated(true) { + } + Authentication() + : user(nullptr) + , authenticated(false) { + } + ~Authentication() { + delete (user); + } }; -typedef std::function AuthenticationPredicate; +typedef std::function AuthenticationPredicate; class AuthenticationPredicates { - public: - static bool NONE_REQUIRED(Authentication& authentication) { - return true; - }; - static bool IS_AUTHENTICATED(Authentication& authentication) { - return authentication.authenticated; - }; - static bool IS_ADMIN(Authentication& authentication) { - return authentication.authenticated && authentication.user->admin; - }; + public: + static bool NONE_REQUIRED(Authentication & authentication) { + return true; + }; + static bool IS_AUTHENTICATED(Authentication & authentication) { + return authentication.authenticated; + }; + static bool IS_ADMIN(Authentication & authentication) { + return authentication.authenticated && authentication.user->admin; + }; }; class SecurityManager { - public: + public: #if FT_ENABLED(FT_SECURITY) - /* + /* * Authenticate, returning the user if found */ - virtual Authentication authenticate(const String& username, const String& password) = 0; + virtual Authentication authenticate(const String & username, const String & password) = 0; - /* + /* * Generate a JWT for the user provided */ - virtual String generateJWT(User* user) = 0; + virtual String generateJWT(User * user) = 0; #endif - /* + /* * Check the request header for the Authorization token */ - virtual Authentication authenticateRequest(AsyncWebServerRequest* request) = 0; + virtual Authentication authenticateRequest(AsyncWebServerRequest * request) = 0; - /** + /** * Filter a request with the provided predicate, only returning true if the predicate matches. */ - virtual ArRequestFilterFunction filterRequest(AuthenticationPredicate predicate) = 0; + virtual ArRequestFilterFunction filterRequest(AuthenticationPredicate predicate) = 0; - /** + /** * Wrap the provided request to provide validation against an AuthenticationPredicate. */ - virtual ArRequestHandlerFunction wrapRequest(ArRequestHandlerFunction onRequest, - AuthenticationPredicate predicate) = 0; + virtual ArRequestHandlerFunction wrapRequest(ArRequestHandlerFunction onRequest, AuthenticationPredicate predicate) = 0; - /** + /** * Wrap the provided json request callback to provide validation against an AuthenticationPredicate. */ - virtual ArJsonRequestHandlerFunction wrapCallback(ArJsonRequestHandlerFunction onRequest, - AuthenticationPredicate predicate) = 0; + virtual ArJsonRequestHandlerFunction wrapCallback(ArJsonRequestHandlerFunction onRequest, AuthenticationPredicate predicate) = 0; }; -#endif // end SecurityManager_h +#endif // end SecurityManager_h diff --git a/lib/framework/SecuritySettingsService.cpp b/lib/framework/SecuritySettingsService.cpp index 08ba401d..bdce2750 100644 --- a/lib/framework/SecuritySettingsService.cpp +++ b/lib/framework/SecuritySettingsService.cpp @@ -2,140 +2,137 @@ #if FT_ENABLED(FT_SECURITY) -SecuritySettingsService::SecuritySettingsService(AsyncWebServer* server, FS* fs) : - _httpEndpoint(SecuritySettings::read, SecuritySettings::update, this, server, SECURITY_SETTINGS_PATH, this), - _fsPersistence(SecuritySettings::read, SecuritySettings::update, this, fs, SECURITY_SETTINGS_FILE), - _jwtHandler(FACTORY_JWT_SECRET) { - addUpdateHandler([&](const String& originId) { configureJWTHandler(); }, false); +SecuritySettingsService::SecuritySettingsService(AsyncWebServer * server, FS * fs) + : _httpEndpoint(SecuritySettings::read, SecuritySettings::update, this, server, SECURITY_SETTINGS_PATH, this) + , _fsPersistence(SecuritySettings::read, SecuritySettings::update, this, fs, SECURITY_SETTINGS_FILE) + , _jwtHandler(FACTORY_JWT_SECRET) { + addUpdateHandler([&](const String & originId) { configureJWTHandler(); }, false); } void SecuritySettingsService::begin() { - _fsPersistence.readFromFS(); - configureJWTHandler(); -} - -Authentication SecuritySettingsService::authenticateRequest(AsyncWebServerRequest* request) { - AsyncWebHeader* authorizationHeader = request->getHeader(AUTHORIZATION_HEADER); - if (authorizationHeader) { - String value = authorizationHeader->value(); - if (value.startsWith(AUTHORIZATION_HEADER_PREFIX)) { - value = value.substring(AUTHORIZATION_HEADER_PREFIX_LEN); - return authenticateJWT(value); + _fsPersistence.readFromFS(); + configureJWTHandler(); +} + +Authentication SecuritySettingsService::authenticateRequest(AsyncWebServerRequest * request) { + AsyncWebHeader * authorizationHeader = request->getHeader(AUTHORIZATION_HEADER); + if (authorizationHeader) { + String value = authorizationHeader->value(); + if (value.startsWith(AUTHORIZATION_HEADER_PREFIX)) { + value = value.substring(AUTHORIZATION_HEADER_PREFIX_LEN); + return authenticateJWT(value); + } + } else if (request->hasParam(ACCESS_TOKEN_PARAMATER)) { + AsyncWebParameter * tokenParamater = request->getParam(ACCESS_TOKEN_PARAMATER); + String value = tokenParamater->value(); + return authenticateJWT(value); } - } else if (request->hasParam(ACCESS_TOKEN_PARAMATER)) { - AsyncWebParameter* tokenParamater = request->getParam(ACCESS_TOKEN_PARAMATER); - String value = tokenParamater->value(); - return authenticateJWT(value); - } - return Authentication(); + return Authentication(); } void SecuritySettingsService::configureJWTHandler() { - _jwtHandler.setSecret(_state.jwtSecret); -} - -Authentication SecuritySettingsService::authenticateJWT(String& jwt) { - DynamicJsonDocument payloadDocument(MAX_JWT_SIZE); - _jwtHandler.parseJWT(jwt, payloadDocument); - if (payloadDocument.is()) { - JsonObject parsedPayload = payloadDocument.as(); - String username = parsedPayload["username"]; - for (User _user : _state.users) { - if (_user.username == username && validatePayload(parsedPayload, &_user)) { - return Authentication(_user); - } + _jwtHandler.setSecret(_state.jwtSecret); +} + +Authentication SecuritySettingsService::authenticateJWT(String & jwt) { + DynamicJsonDocument payloadDocument(MAX_JWT_SIZE); + _jwtHandler.parseJWT(jwt, payloadDocument); + if (payloadDocument.is()) { + JsonObject parsedPayload = payloadDocument.as(); + String username = parsedPayload["username"]; + for (User _user : _state.users) { + if (_user.username == username && validatePayload(parsedPayload, &_user)) { + return Authentication(_user); + } + } } - } - return Authentication(); + return Authentication(); } -Authentication SecuritySettingsService::authenticate(const String& username, const String& password) { - for (User _user : _state.users) { - if (_user.username == username && _user.password == password) { - return Authentication(_user); +Authentication SecuritySettingsService::authenticate(const String & username, const String & password) { + for (User _user : _state.users) { + if (_user.username == username && _user.password == password) { + return Authentication(_user); + } } - } - return Authentication(); + return Authentication(); } -inline void populateJWTPayload(JsonObject& payload, User* user) { - payload["username"] = user->username; - payload["admin"] = user->admin; - payload["version"] = EMSESP_APP_VERSION; // proddy added +inline void populateJWTPayload(JsonObject & payload, User * user) { + payload["username"] = user->username; + payload["admin"] = user->admin; + payload["version"] = EMSESP_APP_VERSION; // proddy added } -boolean SecuritySettingsService::validatePayload(JsonObject& parsedPayload, User* user) { - DynamicJsonDocument jsonDocument(MAX_JWT_SIZE); - JsonObject payload = jsonDocument.to(); - populateJWTPayload(payload, user); - return payload == parsedPayload; +boolean SecuritySettingsService::validatePayload(JsonObject & parsedPayload, User * user) { + DynamicJsonDocument jsonDocument(MAX_JWT_SIZE); + JsonObject payload = jsonDocument.to(); + populateJWTPayload(payload, user); + return payload == parsedPayload; } -String SecuritySettingsService::generateJWT(User* user) { - DynamicJsonDocument jsonDocument(MAX_JWT_SIZE); - JsonObject payload = jsonDocument.to(); - populateJWTPayload(payload, user); - return _jwtHandler.buildJWT(payload); +String SecuritySettingsService::generateJWT(User * user) { + DynamicJsonDocument jsonDocument(MAX_JWT_SIZE); + JsonObject payload = jsonDocument.to(); + populateJWTPayload(payload, user); + return _jwtHandler.buildJWT(payload); } ArRequestFilterFunction SecuritySettingsService::filterRequest(AuthenticationPredicate predicate) { - return [this, predicate](AsyncWebServerRequest* request) { - Authentication authentication = authenticateRequest(request); - return predicate(authentication); - }; -} - -ArRequestHandlerFunction SecuritySettingsService::wrapRequest(ArRequestHandlerFunction onRequest, - AuthenticationPredicate predicate) { - return [this, onRequest, predicate](AsyncWebServerRequest* request) { - Authentication authentication = authenticateRequest(request); - if (!predicate(authentication)) { - request->send(401); - return; - } - onRequest(request); - }; -} - -ArJsonRequestHandlerFunction SecuritySettingsService::wrapCallback(ArJsonRequestHandlerFunction onRequest, - AuthenticationPredicate predicate) { - return [this, onRequest, predicate](AsyncWebServerRequest* request, JsonVariant& json) { - Authentication authentication = authenticateRequest(request); - if (!predicate(authentication)) { - request->send(401); - return; - } - onRequest(request, json); - }; + return [this, predicate](AsyncWebServerRequest * request) { + Authentication authentication = authenticateRequest(request); + return predicate(authentication); + }; +} + +ArRequestHandlerFunction SecuritySettingsService::wrapRequest(ArRequestHandlerFunction onRequest, AuthenticationPredicate predicate) { + return [this, onRequest, predicate](AsyncWebServerRequest * request) { + Authentication authentication = authenticateRequest(request); + if (!predicate(authentication)) { + request->send(401); + return; + } + onRequest(request); + }; +} + +ArJsonRequestHandlerFunction SecuritySettingsService::wrapCallback(ArJsonRequestHandlerFunction onRequest, AuthenticationPredicate predicate) { + return [this, onRequest, predicate](AsyncWebServerRequest * request, JsonVariant & json) { + Authentication authentication = authenticateRequest(request); + if (!predicate(authentication)) { + request->send(401); + return; + } + onRequest(request, json); + }; } #else User ADMIN_USER = User(FACTORY_ADMIN_USERNAME, FACTORY_ADMIN_PASSWORD, true); -SecuritySettingsService::SecuritySettingsService(AsyncWebServer* server, FS* fs) : SecurityManager() { +SecuritySettingsService::SecuritySettingsService(AsyncWebServer * server, FS * fs) + : SecurityManager() { } SecuritySettingsService::~SecuritySettingsService() { } ArRequestFilterFunction SecuritySettingsService::filterRequest(AuthenticationPredicate predicate) { - return [this, predicate](AsyncWebServerRequest* request) { return true; }; + return [this, predicate](AsyncWebServerRequest * request) { return true; }; } // Return the admin user on all request - disabling security features -Authentication SecuritySettingsService::authenticateRequest(AsyncWebServerRequest* request) { - return Authentication(ADMIN_USER); +Authentication SecuritySettingsService::authenticateRequest(AsyncWebServerRequest * request) { + return Authentication(ADMIN_USER); } // Return the function unwrapped -ArRequestHandlerFunction SecuritySettingsService::wrapRequest(ArRequestHandlerFunction onRequest, - AuthenticationPredicate predicate) { - return onRequest; +ArRequestHandlerFunction SecuritySettingsService::wrapRequest(ArRequestHandlerFunction onRequest, AuthenticationPredicate predicate) { + return onRequest; } -ArJsonRequestHandlerFunction SecuritySettingsService::wrapCallback(ArJsonRequestHandlerFunction onRequest, - AuthenticationPredicate predicate) { - return onRequest; +ArJsonRequestHandlerFunction SecuritySettingsService::wrapCallback(ArJsonRequestHandlerFunction onRequest, AuthenticationPredicate predicate) { + return onRequest; } #endif diff --git a/lib/framework/SecuritySettingsService.h b/lib/framework/SecuritySettingsService.h index 801e44a3..fa273b4e 100644 --- a/lib/framework/SecuritySettingsService.h +++ b/lib/framework/SecuritySettingsService.h @@ -30,87 +30,87 @@ #if FT_ENABLED(FT_SECURITY) class SecuritySettings { - public: - String jwtSecret; - std::list users; - - static void read(SecuritySettings& settings, JsonObject& root) { - // secret - root["jwt_secret"] = settings.jwtSecret; - - // users - JsonArray users = root.createNestedArray("users"); - for (User user : settings.users) { - JsonObject userRoot = users.createNestedObject(); - userRoot["username"] = user.username; - userRoot["password"] = user.password; - userRoot["admin"] = user.admin; + public: + String jwtSecret; + std::list users; + + static void read(SecuritySettings & settings, JsonObject & root) { + // secret + root["jwt_secret"] = settings.jwtSecret; + + // users + JsonArray users = root.createNestedArray("users"); + for (User user : settings.users) { + JsonObject userRoot = users.createNestedObject(); + userRoot["username"] = user.username; + userRoot["password"] = user.password; + userRoot["admin"] = user.admin; + } } - } - - static StateUpdateResult update(JsonObject& root, SecuritySettings& settings) { - // secret - settings.jwtSecret = root["jwt_secret"] | FACTORY_JWT_SECRET; - - // users - settings.users.clear(); - if (root["users"].is()) { - for (JsonVariant user : root["users"].as()) { - settings.users.push_back(User(user["username"], user["password"], user["admin"])); - } - } else { - settings.users.push_back(User(FACTORY_ADMIN_USERNAME, FACTORY_ADMIN_PASSWORD, true)); - settings.users.push_back(User(FACTORY_GUEST_USERNAME, FACTORY_GUEST_PASSWORD, false)); + + static StateUpdateResult update(JsonObject & root, SecuritySettings & settings) { + // secret + settings.jwtSecret = root["jwt_secret"] | FACTORY_JWT_SECRET; + + // users + settings.users.clear(); + if (root["users"].is()) { + for (JsonVariant user : root["users"].as()) { + settings.users.push_back(User(user["username"], user["password"], user["admin"])); + } + } else { + settings.users.push_back(User(FACTORY_ADMIN_USERNAME, FACTORY_ADMIN_PASSWORD, true)); + settings.users.push_back(User(FACTORY_GUEST_USERNAME, FACTORY_GUEST_PASSWORD, false)); + } + return StateUpdateResult::CHANGED; } - return StateUpdateResult::CHANGED; - } }; class SecuritySettingsService : public StatefulService, public SecurityManager { - public: - SecuritySettingsService(AsyncWebServer* server, FS* fs); + public: + SecuritySettingsService(AsyncWebServer * server, FS * fs); - void begin(); + void begin(); - // Functions to implement SecurityManager - Authentication authenticate(const String& username, const String& password); - Authentication authenticateRequest(AsyncWebServerRequest* request); - String generateJWT(User* user); - ArRequestFilterFunction filterRequest(AuthenticationPredicate predicate); - ArRequestHandlerFunction wrapRequest(ArRequestHandlerFunction onRequest, AuthenticationPredicate predicate); - ArJsonRequestHandlerFunction wrapCallback(ArJsonRequestHandlerFunction callback, AuthenticationPredicate predicate); + // Functions to implement SecurityManager + Authentication authenticate(const String & username, const String & password); + Authentication authenticateRequest(AsyncWebServerRequest * request); + String generateJWT(User * user); + ArRequestFilterFunction filterRequest(AuthenticationPredicate predicate); + ArRequestHandlerFunction wrapRequest(ArRequestHandlerFunction onRequest, AuthenticationPredicate predicate); + ArJsonRequestHandlerFunction wrapCallback(ArJsonRequestHandlerFunction callback, AuthenticationPredicate predicate); - private: - HttpEndpoint _httpEndpoint; - FSPersistence _fsPersistence; - ArduinoJsonJWT _jwtHandler; + private: + HttpEndpoint _httpEndpoint; + FSPersistence _fsPersistence; + ArduinoJsonJWT _jwtHandler; - void configureJWTHandler(); + void configureJWTHandler(); - /* + /* * Lookup the user by JWT */ - Authentication authenticateJWT(String& jwt); + Authentication authenticateJWT(String & jwt); - /* + /* * Verify the payload is correct */ - boolean validatePayload(JsonObject& parsedPayload, User* user); + boolean validatePayload(JsonObject & parsedPayload, User * user); }; #else class SecuritySettingsService : public SecurityManager { - public: - SecuritySettingsService(AsyncWebServer* server, FS* fs); - ~SecuritySettingsService(); - - // minimal set of functions to support framework with security settings disabled - Authentication authenticateRequest(AsyncWebServerRequest* request); - ArRequestFilterFunction filterRequest(AuthenticationPredicate predicate); - ArRequestHandlerFunction wrapRequest(ArRequestHandlerFunction onRequest, AuthenticationPredicate predicate); - ArJsonRequestHandlerFunction wrapCallback(ArJsonRequestHandlerFunction onRequest, AuthenticationPredicate predicate); + public: + SecuritySettingsService(AsyncWebServer * server, FS * fs); + ~SecuritySettingsService(); + + // minimal set of functions to support framework with security settings disabled + Authentication authenticateRequest(AsyncWebServerRequest * request); + ArRequestFilterFunction filterRequest(AuthenticationPredicate predicate); + ArRequestHandlerFunction wrapRequest(ArRequestHandlerFunction onRequest, AuthenticationPredicate predicate); + ArJsonRequestHandlerFunction wrapCallback(ArJsonRequestHandlerFunction onRequest, AuthenticationPredicate predicate); }; -#endif // end FT_ENABLED(FT_SECURITY) -#endif // end SecuritySettingsService_h +#endif // end FT_ENABLED(FT_SECURITY) +#endif // end SecuritySettingsService_h diff --git a/lib/framework/StatefulService.h b/lib/framework/StatefulService.h index 9a38e66a..ba5a3c5e 100644 --- a/lib/framework/StatefulService.h +++ b/lib/framework/StatefulService.h @@ -16,133 +16,137 @@ #endif enum class StateUpdateResult { - CHANGED = 0, // The update changed the state and propagation should take place if required - UNCHANGED, // The state was unchanged, propagation should not take place - ERROR // There was a problem updating the state, propagation should not take place + CHANGED = 0, // The update changed the state and propagation should take place if required + UNCHANGED, // The state was unchanged, propagation should not take place + ERROR // There was a problem updating the state, propagation should not take place }; template -using JsonStateUpdater = std::function; +using JsonStateUpdater = std::function; template -using JsonStateReader = std::function; +using JsonStateReader = std::function; -typedef size_t update_handler_id_t; -typedef std::function StateUpdateCallback; +typedef size_t update_handler_id_t; +typedef std::function StateUpdateCallback; typedef struct StateUpdateHandlerInfo { - static update_handler_id_t currentUpdatedHandlerId; - update_handler_id_t _id; - StateUpdateCallback _cb; - bool _allowRemove; - StateUpdateHandlerInfo(StateUpdateCallback cb, bool allowRemove) : - _id(++currentUpdatedHandlerId), _cb(cb), _allowRemove(allowRemove){}; + static update_handler_id_t currentUpdatedHandlerId; + update_handler_id_t _id; + StateUpdateCallback _cb; + bool _allowRemove; + StateUpdateHandlerInfo(StateUpdateCallback cb, bool allowRemove) + : _id(++currentUpdatedHandlerId) + , _cb(cb) + , _allowRemove(allowRemove){}; } StateUpdateHandlerInfo_t; template class StatefulService { - public: - template + public: + template #ifdef ESP32 - StatefulService(Args&&... args) : - _state(std::forward(args)...), _accessMutex(xSemaphoreCreateRecursiveMutex()) { - } + StatefulService(Args &&... args) + : _state(std::forward(args)...) + , _accessMutex(xSemaphoreCreateRecursiveMutex()) { + } #else - StatefulService(Args&&... args) : _state(std::forward(args)...) { - } + StatefulService(Args &&... args) + : _state(std::forward(args)...) { + } #endif - update_handler_id_t addUpdateHandler(StateUpdateCallback cb, bool allowRemove = true) { - if (!cb) { - return 0; + update_handler_id_t addUpdateHandler(StateUpdateCallback cb, bool allowRemove = true) { + if (!cb) { + return 0; + } + StateUpdateHandlerInfo_t updateHandler(cb, allowRemove); + _updateHandlers.push_back(updateHandler); + return updateHandler._id; + } + + void removeUpdateHandler(update_handler_id_t id) { + for (auto i = _updateHandlers.begin(); i != _updateHandlers.end();) { + if ((*i)._allowRemove && (*i)._id == id) { + i = _updateHandlers.erase(i); + } else { + ++i; + } + } + } + + StateUpdateResult update(std::function stateUpdater, const String & originId) { + beginTransaction(); + StateUpdateResult result = stateUpdater(_state); + endTransaction(); + if (result == StateUpdateResult::CHANGED) { + callUpdateHandlers(originId); + } + return result; + } + + StateUpdateResult updateWithoutPropagation(std::function stateUpdater) { + beginTransaction(); + StateUpdateResult result = stateUpdater(_state); + endTransaction(); + return result; } - StateUpdateHandlerInfo_t updateHandler(cb, allowRemove); - _updateHandlers.push_back(updateHandler); - return updateHandler._id; - } - - void removeUpdateHandler(update_handler_id_t id) { - for (auto i = _updateHandlers.begin(); i != _updateHandlers.end();) { - if ((*i)._allowRemove && (*i)._id == id) { - i = _updateHandlers.erase(i); - } else { - ++i; - } + + StateUpdateResult update(JsonObject & jsonObject, JsonStateUpdater stateUpdater, const String & originId) { + beginTransaction(); + StateUpdateResult result = stateUpdater(jsonObject, _state); + endTransaction(); + if (result == StateUpdateResult::CHANGED) { + callUpdateHandlers(originId); + } + return result; + } + + StateUpdateResult updateWithoutPropagation(JsonObject & jsonObject, JsonStateUpdater stateUpdater) { + beginTransaction(); + StateUpdateResult result = stateUpdater(jsonObject, _state); + endTransaction(); + return result; } - } - - StateUpdateResult update(std::function stateUpdater, const String& originId) { - beginTransaction(); - StateUpdateResult result = stateUpdater(_state); - endTransaction(); - if (result == StateUpdateResult::CHANGED) { - callUpdateHandlers(originId); + + void read(std::function stateReader) { + beginTransaction(); + stateReader(_state); + endTransaction(); } - return result; - } - - StateUpdateResult updateWithoutPropagation(std::function stateUpdater) { - beginTransaction(); - StateUpdateResult result = stateUpdater(_state); - endTransaction(); - return result; - } - - StateUpdateResult update(JsonObject& jsonObject, JsonStateUpdater stateUpdater, const String& originId) { - beginTransaction(); - StateUpdateResult result = stateUpdater(jsonObject, _state); - endTransaction(); - if (result == StateUpdateResult::CHANGED) { - callUpdateHandlers(originId); + + void read(JsonObject & jsonObject, JsonStateReader stateReader) { + beginTransaction(); + stateReader(_state, jsonObject); + endTransaction(); } - return result; - } - - StateUpdateResult updateWithoutPropagation(JsonObject& jsonObject, JsonStateUpdater stateUpdater) { - beginTransaction(); - StateUpdateResult result = stateUpdater(jsonObject, _state); - endTransaction(); - return result; - } - - void read(std::function stateReader) { - beginTransaction(); - stateReader(_state); - endTransaction(); - } - - void read(JsonObject& jsonObject, JsonStateReader stateReader) { - beginTransaction(); - stateReader(_state, jsonObject); - endTransaction(); - } - - void callUpdateHandlers(const String& originId) { - for (const StateUpdateHandlerInfo_t& updateHandler : _updateHandlers) { - updateHandler._cb(originId); + + void callUpdateHandlers(const String & originId) { + for (const StateUpdateHandlerInfo_t & updateHandler : _updateHandlers) { + updateHandler._cb(originId); + } } - } - protected: - T _state; + protected: + T _state; - inline void beginTransaction() { + inline void beginTransaction() { #ifdef ESP32 - xSemaphoreTakeRecursive(_accessMutex, portMAX_DELAY); + xSemaphoreTakeRecursive(_accessMutex, portMAX_DELAY); #endif - } + } - inline void endTransaction() { + inline void endTransaction() { #ifdef ESP32 - xSemaphoreGiveRecursive(_accessMutex); + xSemaphoreGiveRecursive(_accessMutex); #endif - } + } - private: + private: #ifdef ESP32 - SemaphoreHandle_t _accessMutex; + SemaphoreHandle_t _accessMutex; #endif - std::list _updateHandlers; + std::list _updateHandlers; }; -#endif // end StatefulService_h +#endif // end StatefulService_h diff --git a/lib/framework/SystemStatus.h b/lib/framework/SystemStatus.h index 1ea61ae1..04a09bf3 100644 --- a/lib/framework/SystemStatus.h +++ b/lib/framework/SystemStatus.h @@ -17,7 +17,7 @@ #include #include -#include // proddy added +#include // proddy added #include "../../src/system.h" // proddy added #define MAX_ESP_STATUS_SIZE 1024 diff --git a/lib/framework/UploadFirmwareService.cpp b/lib/framework/UploadFirmwareService.cpp index 1858ace2..d7b547a3 100644 --- a/lib/framework/UploadFirmwareService.cpp +++ b/lib/framework/UploadFirmwareService.cpp @@ -1,85 +1,80 @@ #include -UploadFirmwareService::UploadFirmwareService(AsyncWebServer* server, SecurityManager* securityManager) : - _securityManager(securityManager) { - server->on(UPLOAD_FIRMWARE_PATH, - HTTP_POST, - std::bind(&UploadFirmwareService::uploadComplete, this, std::placeholders::_1), - std::bind(&UploadFirmwareService::handleUpload, - this, - std::placeholders::_1, - std::placeholders::_2, - std::placeholders::_3, - std::placeholders::_4, - std::placeholders::_5, - std::placeholders::_6)); +UploadFirmwareService::UploadFirmwareService(AsyncWebServer * server, SecurityManager * securityManager) + : _securityManager(securityManager) { + server->on(UPLOAD_FIRMWARE_PATH, + HTTP_POST, + std::bind(&UploadFirmwareService::uploadComplete, this, std::placeholders::_1), + std::bind(&UploadFirmwareService::handleUpload, + this, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3, + std::placeholders::_4, + std::placeholders::_5, + std::placeholders::_6)); #ifdef ESP8266 - Update.runAsync(true); + Update.runAsync(true); #endif } -void UploadFirmwareService::handleUpload(AsyncWebServerRequest* request, - const String& filename, - size_t index, - uint8_t* data, - size_t len, - bool final) { - if (!index) { - Authentication authentication = _securityManager->authenticateRequest(request); - if (AuthenticationPredicates::IS_ADMIN(authentication)) { - if (Update.begin(request->contentLength())) { - // success, let's make sure we end the update if the client hangs up - request->onDisconnect(UploadFirmwareService::handleEarlyDisconnect); - } else { - // failed to begin, send an error response - Update.printError(Serial); - handleError(request, 500); - } - } else { - // send the forbidden response - handleError(request, 403); +void UploadFirmwareService::handleUpload(AsyncWebServerRequest * request, const String & filename, size_t index, uint8_t * data, size_t len, bool final) { + if (!index) { + Authentication authentication = _securityManager->authenticateRequest(request); + if (AuthenticationPredicates::IS_ADMIN(authentication)) { + if (Update.begin(request->contentLength())) { + // success, let's make sure we end the update if the client hangs up + request->onDisconnect(UploadFirmwareService::handleEarlyDisconnect); + } else { + // failed to begin, send an error response + Update.printError(Serial); + handleError(request, 500); + } + } else { + // send the forbidden response + handleError(request, 403); + } } - } - // if we haven't delt with an error, continue with the update - if (!request->_tempObject) { - if (Update.write(data, len) != len) { - Update.printError(Serial); - handleError(request, 500); + // if we haven't delt with an error, continue with the update + if (!request->_tempObject) { + if (Update.write(data, len) != len) { + Update.printError(Serial); + handleError(request, 500); + } + if (final) { + if (!Update.end(true)) { + Update.printError(Serial); + handleError(request, 500); + } + } } - if (final) { - if (!Update.end(true)) { - Update.printError(Serial); - handleError(request, 500); - } - } - } } -void UploadFirmwareService::uploadComplete(AsyncWebServerRequest* request) { - // if no error, send the success response - if (!request->_tempObject) { - request->onDisconnect(RestartService::restartNow); - AsyncWebServerResponse* response = request->beginResponse(200); - request->send(response); - } +void UploadFirmwareService::uploadComplete(AsyncWebServerRequest * request) { + // if no error, send the success response + if (!request->_tempObject) { + request->onDisconnect(RestartService::restartNow); + AsyncWebServerResponse * response = request->beginResponse(200); + request->send(response); + } } -void UploadFirmwareService::handleError(AsyncWebServerRequest* request, int code) { - // if we have had an error already, do nothing - if (request->_tempObject) { - return; - } - // send the error code to the client and record the error code in the temp object - request->_tempObject = new int(code); - AsyncWebServerResponse* response = request->beginResponse(code); - request->send(response); +void UploadFirmwareService::handleError(AsyncWebServerRequest * request, int code) { + // if we have had an error already, do nothing + if (request->_tempObject) { + return; + } + // send the error code to the client and record the error code in the temp object + request->_tempObject = new int(code); + AsyncWebServerResponse * response = request->beginResponse(code); + request->send(response); } void UploadFirmwareService::handleEarlyDisconnect() { #ifdef ESP32 - Update.abort(); + Update.abort(); #elif defined(ESP8266) - Update.end(); + Update.end(); #endif } diff --git a/lib/framework/UploadFirmwareService.h b/lib/framework/UploadFirmwareService.h index 6312af15..f24b7aa3 100644 --- a/lib/framework/UploadFirmwareService.h +++ b/lib/framework/UploadFirmwareService.h @@ -19,20 +19,15 @@ #define UPLOAD_FIRMWARE_PATH "/rest/uploadFirmware" class UploadFirmwareService { - public: - UploadFirmwareService(AsyncWebServer* server, SecurityManager* securityManager); + public: + UploadFirmwareService(AsyncWebServer * server, SecurityManager * securityManager); - private: - SecurityManager* _securityManager; - void handleUpload(AsyncWebServerRequest* request, - const String& filename, - size_t index, - uint8_t* data, - size_t len, - bool final); - void uploadComplete(AsyncWebServerRequest* request); - void handleError(AsyncWebServerRequest* request, int code); - static void handleEarlyDisconnect(); + private: + SecurityManager * _securityManager; + void handleUpload(AsyncWebServerRequest * request, const String & filename, size_t index, uint8_t * data, size_t len, bool final); + void uploadComplete(AsyncWebServerRequest * request); + void handleError(AsyncWebServerRequest * request, int code); + static void handleEarlyDisconnect(); }; -#endif // end UploadFirmwareService_h +#endif // end UploadFirmwareService_h diff --git a/lib/framework/WebSocketTxRx.h b/lib/framework/WebSocketTxRx.h index 02a1a7d1..07aecc30 100644 --- a/lib/framework/WebSocketTxRx.h +++ b/lib/framework/WebSocketTxRx.h @@ -12,262 +12,217 @@ template class WebSocketConnector { - protected: - StatefulService* _statefulService; - AsyncWebServer* _server; - AsyncWebSocket _webSocket; - size_t _bufferSize; - - WebSocketConnector(StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - SecurityManager* securityManager, - AuthenticationPredicate authenticationPredicate, - size_t bufferSize) : - _statefulService(statefulService), _server(server), _webSocket(webSocketPath), _bufferSize(bufferSize) { - _webSocket.setFilter(securityManager->filterRequest(authenticationPredicate)); - _webSocket.onEvent(std::bind(&WebSocketConnector::onWSEvent, - this, - std::placeholders::_1, - std::placeholders::_2, - std::placeholders::_3, - std::placeholders::_4, - std::placeholders::_5, - std::placeholders::_6)); - _server->addHandler(&_webSocket); - _server->on(webSocketPath, HTTP_GET, std::bind(&WebSocketConnector::forbidden, this, std::placeholders::_1)); - } + protected: + StatefulService * _statefulService; + AsyncWebServer * _server; + AsyncWebSocket _webSocket; + size_t _bufferSize; + + WebSocketConnector(StatefulService * statefulService, + AsyncWebServer * server, + const char * webSocketPath, + SecurityManager * securityManager, + AuthenticationPredicate authenticationPredicate, + size_t bufferSize) + : _statefulService(statefulService) + , _server(server) + , _webSocket(webSocketPath) + , _bufferSize(bufferSize) { + _webSocket.setFilter(securityManager->filterRequest(authenticationPredicate)); + _webSocket.onEvent(std::bind(&WebSocketConnector::onWSEvent, + this, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3, + std::placeholders::_4, + std::placeholders::_5, + std::placeholders::_6)); + _server->addHandler(&_webSocket); + _server->on(webSocketPath, HTTP_GET, std::bind(&WebSocketConnector::forbidden, this, std::placeholders::_1)); + } - WebSocketConnector(StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - size_t bufferSize) : - _statefulService(statefulService), _server(server), _webSocket(webSocketPath), _bufferSize(bufferSize) { - _webSocket.onEvent(std::bind(&WebSocketConnector::onWSEvent, - this, - std::placeholders::_1, - std::placeholders::_2, - std::placeholders::_3, - std::placeholders::_4, - std::placeholders::_5, - std::placeholders::_6)); - _server->addHandler(&_webSocket); - } + WebSocketConnector(StatefulService * statefulService, AsyncWebServer * server, const char * webSocketPath, size_t bufferSize) + : _statefulService(statefulService) + , _server(server) + , _webSocket(webSocketPath) + , _bufferSize(bufferSize) { + _webSocket.onEvent(std::bind(&WebSocketConnector::onWSEvent, + this, + std::placeholders::_1, + std::placeholders::_2, + std::placeholders::_3, + std::placeholders::_4, + std::placeholders::_5, + std::placeholders::_6)); + _server->addHandler(&_webSocket); + } - virtual void onWSEvent(AsyncWebSocket* server, - AsyncWebSocketClient* client, - AwsEventType type, - void* arg, - uint8_t* data, - size_t len) = 0; + virtual void onWSEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t * data, size_t len) = 0; - String clientId(AsyncWebSocketClient* client) { - return WEB_SOCKET_ORIGIN_CLIENT_ID_PREFIX + String(client->id()); - } + String clientId(AsyncWebSocketClient * client) { + return WEB_SOCKET_ORIGIN_CLIENT_ID_PREFIX + String(client->id()); + } - private: - void forbidden(AsyncWebServerRequest* request) { - request->send(403); - } + private: + void forbidden(AsyncWebServerRequest * request) { + request->send(403); + } }; template class WebSocketTx : virtual public WebSocketConnector { - public: - WebSocketTx(JsonStateReader stateReader, - StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - SecurityManager* securityManager, - AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - WebSocketConnector(statefulService, - server, - webSocketPath, - securityManager, - authenticationPredicate, - bufferSize), - _stateReader(stateReader) { - WebSocketConnector::_statefulService->addUpdateHandler( - [&](const String& originId) { transmitData(nullptr, originId); }, false); - } - - WebSocketTx(JsonStateReader stateReader, - StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - WebSocketConnector(statefulService, server, webSocketPath, bufferSize), _stateReader(stateReader) { - WebSocketConnector::_statefulService->addUpdateHandler( - [&](const String& originId) { transmitData(nullptr, originId); }, false); - } + public: + WebSocketTx(JsonStateReader stateReader, + StatefulService * statefulService, + AsyncWebServer * server, + const char * webSocketPath, + SecurityManager * securityManager, + AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : WebSocketConnector(statefulService, server, webSocketPath, securityManager, authenticationPredicate, bufferSize) + , _stateReader(stateReader) { + WebSocketConnector::_statefulService->addUpdateHandler([&](const String & originId) { transmitData(nullptr, originId); }, false); + } - protected: - virtual void onWSEvent(AsyncWebSocket* server, - AsyncWebSocketClient* client, - AwsEventType type, - void* arg, - uint8_t* data, - size_t len) { - if (type == WS_EVT_CONNECT) { - // when a client connects, we transmit it's id and the current payload - transmitId(client); - transmitData(client, WEB_SOCKET_ORIGIN); + WebSocketTx(JsonStateReader stateReader, + StatefulService * statefulService, + AsyncWebServer * server, + const char * webSocketPath, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : WebSocketConnector(statefulService, server, webSocketPath, bufferSize) + , _stateReader(stateReader) { + WebSocketConnector::_statefulService->addUpdateHandler([&](const String & originId) { transmitData(nullptr, originId); }, false); } - } - private: - JsonStateReader _stateReader; + protected: + virtual void onWSEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t * data, size_t len) { + if (type == WS_EVT_CONNECT) { + // when a client connects, we transmit it's id and the current payload + transmitId(client); + transmitData(client, WEB_SOCKET_ORIGIN); + } + } - void transmitId(AsyncWebSocketClient* client) { - DynamicJsonDocument jsonDocument = DynamicJsonDocument(WEB_SOCKET_CLIENT_ID_MSG_SIZE); - JsonObject root = jsonDocument.to(); - root["type"] = "id"; - root["id"] = WebSocketConnector::clientId(client); - size_t len = measureJson(jsonDocument); - AsyncWebSocketMessageBuffer* buffer = WebSocketConnector::_webSocket.makeBuffer(len); - if (buffer) { - serializeJson(jsonDocument, (char*)buffer->get(), len + 1); - client->text(buffer); + private: + JsonStateReader _stateReader; + + void transmitId(AsyncWebSocketClient * client) { + DynamicJsonDocument jsonDocument = DynamicJsonDocument(WEB_SOCKET_CLIENT_ID_MSG_SIZE); + JsonObject root = jsonDocument.to(); + root["type"] = "id"; + root["id"] = WebSocketConnector::clientId(client); + size_t len = measureJson(jsonDocument); + AsyncWebSocketMessageBuffer * buffer = WebSocketConnector::_webSocket.makeBuffer(len); + if (buffer) { + serializeJson(jsonDocument, (char *)buffer->get(), len + 1); + client->text(buffer); + } } - } - /** + /** * Broadcasts the payload to the destination, if provided. Otherwise broadcasts to all clients except the origin, if * specified. * * Original implementation sent clients their own IDs so they could ignore updates they initiated. This approach * simplifies the client and the server implementation but may not be sufficent for all use-cases. */ - void transmitData(AsyncWebSocketClient* client, const String& originId) { - DynamicJsonDocument jsonDocument = DynamicJsonDocument(WebSocketConnector::_bufferSize); - JsonObject root = jsonDocument.to(); - root["type"] = "payload"; - root["origin_id"] = originId; - JsonObject payload = root.createNestedObject("payload"); - WebSocketConnector::_statefulService->read(payload, _stateReader); - - size_t len = measureJson(jsonDocument); - AsyncWebSocketMessageBuffer* buffer = WebSocketConnector::_webSocket.makeBuffer(len); - if (buffer) { - serializeJson(jsonDocument, (char*)buffer->get(), len + 1); - if (client) { - client->text(buffer); - } else { - WebSocketConnector::_webSocket.textAll(buffer); - } + void transmitData(AsyncWebSocketClient * client, const String & originId) { + DynamicJsonDocument jsonDocument = DynamicJsonDocument(WebSocketConnector::_bufferSize); + JsonObject root = jsonDocument.to(); + root["type"] = "payload"; + root["origin_id"] = originId; + JsonObject payload = root.createNestedObject("payload"); + WebSocketConnector::_statefulService->read(payload, _stateReader); + + size_t len = measureJson(jsonDocument); + AsyncWebSocketMessageBuffer * buffer = WebSocketConnector::_webSocket.makeBuffer(len); + if (buffer) { + serializeJson(jsonDocument, (char *)buffer->get(), len + 1); + if (client) { + client->text(buffer); + } else { + WebSocketConnector::_webSocket.textAll(buffer); + } + } } - } }; template class WebSocketRx : virtual public WebSocketConnector { - public: - WebSocketRx(JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - SecurityManager* securityManager, - AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - WebSocketConnector(statefulService, - server, - webSocketPath, - securityManager, - authenticationPredicate, - bufferSize), - _stateUpdater(stateUpdater) { - } + public: + WebSocketRx(JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const char * webSocketPath, + SecurityManager * securityManager, + AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : WebSocketConnector(statefulService, server, webSocketPath, securityManager, authenticationPredicate, bufferSize) + , _stateUpdater(stateUpdater) { + } - WebSocketRx(JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - WebSocketConnector(statefulService, server, webSocketPath, bufferSize), _stateUpdater(stateUpdater) { - } + WebSocketRx(JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const char * webSocketPath, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : WebSocketConnector(statefulService, server, webSocketPath, bufferSize) + , _stateUpdater(stateUpdater) { + } - protected: - virtual void onWSEvent(AsyncWebSocket* server, - AsyncWebSocketClient* client, - AwsEventType type, - void* arg, - uint8_t* data, - size_t len) { - if (type == WS_EVT_DATA) { - AwsFrameInfo* info = (AwsFrameInfo*)arg; - if (info->final && info->index == 0 && info->len == len) { - if (info->opcode == WS_TEXT) { - DynamicJsonDocument jsonDocument = DynamicJsonDocument(WebSocketConnector::_bufferSize); - DeserializationError error = deserializeJson(jsonDocument, (char*)data); - if (!error && jsonDocument.is()) { - JsonObject jsonObject = jsonDocument.as(); - WebSocketConnector::_statefulService->update( - jsonObject, _stateUpdater, WebSocketConnector::clientId(client)); - } + protected: + virtual void onWSEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t * data, size_t len) { + if (type == WS_EVT_DATA) { + AwsFrameInfo * info = (AwsFrameInfo *)arg; + if (info->final && info->index == 0 && info->len == len) { + if (info->opcode == WS_TEXT) { + DynamicJsonDocument jsonDocument = DynamicJsonDocument(WebSocketConnector::_bufferSize); + DeserializationError error = deserializeJson(jsonDocument, (char *)data); + if (!error && jsonDocument.is()) { + JsonObject jsonObject = jsonDocument.as(); + WebSocketConnector::_statefulService->update(jsonObject, _stateUpdater, WebSocketConnector::clientId(client)); + } + } + } } - } } - } - private: - JsonStateUpdater _stateUpdater; + private: + JsonStateUpdater _stateUpdater; }; template class WebSocketTxRx : public WebSocketTx, public WebSocketRx { - public: - WebSocketTxRx(JsonStateReader stateReader, - JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - SecurityManager* securityManager, - AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - WebSocketConnector(statefulService, - server, - webSocketPath, - securityManager, - authenticationPredicate, - bufferSize), - WebSocketTx(stateReader, - statefulService, - server, - webSocketPath, - securityManager, - authenticationPredicate, - bufferSize), - WebSocketRx(stateUpdater, - statefulService, - server, - webSocketPath, - securityManager, - authenticationPredicate, - bufferSize) { - } + public: + WebSocketTxRx(JsonStateReader stateReader, + JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const char * webSocketPath, + SecurityManager * securityManager, + AuthenticationPredicate authenticationPredicate = AuthenticationPredicates::IS_ADMIN, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : WebSocketConnector(statefulService, server, webSocketPath, securityManager, authenticationPredicate, bufferSize) + , WebSocketTx(stateReader, statefulService, server, webSocketPath, securityManager, authenticationPredicate, bufferSize) + , WebSocketRx(stateUpdater, statefulService, server, webSocketPath, securityManager, authenticationPredicate, bufferSize) { + } - WebSocketTxRx(JsonStateReader stateReader, - JsonStateUpdater stateUpdater, - StatefulService* statefulService, - AsyncWebServer* server, - char const* webSocketPath, - size_t bufferSize = DEFAULT_BUFFER_SIZE) : - WebSocketConnector(statefulService, server, webSocketPath, bufferSize), - WebSocketTx(stateReader, statefulService, server, webSocketPath, bufferSize), - WebSocketRx(stateUpdater, statefulService, server, webSocketPath, bufferSize) { - } + WebSocketTxRx(JsonStateReader stateReader, + JsonStateUpdater stateUpdater, + StatefulService * statefulService, + AsyncWebServer * server, + const char * webSocketPath, + size_t bufferSize = DEFAULT_BUFFER_SIZE) + : WebSocketConnector(statefulService, server, webSocketPath, bufferSize) + , WebSocketTx(stateReader, statefulService, server, webSocketPath, bufferSize) + , WebSocketRx(stateUpdater, statefulService, server, webSocketPath, bufferSize) { + } - protected: - void onWSEvent(AsyncWebSocket* server, - AsyncWebSocketClient* client, - AwsEventType type, - void* arg, - uint8_t* data, - size_t len) { - WebSocketRx::onWSEvent(server, client, type, arg, data, len); - WebSocketTx::onWSEvent(server, client, type, arg, data, len); - } + protected: + void onWSEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t * data, size_t len) { + WebSocketRx::onWSEvent(server, client, type, arg, data, len); + WebSocketTx::onWSEvent(server, client, type, arg, data, len); + } }; #endif diff --git a/lib/framework/WiFiScanner.cpp b/lib/framework/WiFiScanner.cpp index a6f2b655..85f532a4 100644 --- a/lib/framework/WiFiScanner.cpp +++ b/lib/framework/WiFiScanner.cpp @@ -1,49 +1,47 @@ #include -WiFiScanner::WiFiScanner(AsyncWebServer* server, SecurityManager* securityManager) { - server->on(SCAN_NETWORKS_SERVICE_PATH, - HTTP_GET, - securityManager->wrapRequest(std::bind(&WiFiScanner::scanNetworks, this, std::placeholders::_1), - AuthenticationPredicates::IS_ADMIN)); - server->on(LIST_NETWORKS_SERVICE_PATH, - HTTP_GET, - securityManager->wrapRequest(std::bind(&WiFiScanner::listNetworks, this, std::placeholders::_1), - AuthenticationPredicates::IS_ADMIN)); +WiFiScanner::WiFiScanner(AsyncWebServer * server, SecurityManager * securityManager) { + server->on(SCAN_NETWORKS_SERVICE_PATH, + HTTP_GET, + securityManager->wrapRequest(std::bind(&WiFiScanner::scanNetworks, this, std::placeholders::_1), AuthenticationPredicates::IS_ADMIN)); + server->on(LIST_NETWORKS_SERVICE_PATH, + HTTP_GET, + securityManager->wrapRequest(std::bind(&WiFiScanner::listNetworks, this, std::placeholders::_1), AuthenticationPredicates::IS_ADMIN)); }; -void WiFiScanner::scanNetworks(AsyncWebServerRequest* request) { - if (WiFi.scanComplete() != -1) { - WiFi.scanDelete(); - WiFi.scanNetworks(true); - } - request->send(202); +void WiFiScanner::scanNetworks(AsyncWebServerRequest * request) { + if (WiFi.scanComplete() != -1) { + WiFi.scanDelete(); + WiFi.scanNetworks(true); + } + request->send(202); } -void WiFiScanner::listNetworks(AsyncWebServerRequest* request) { - int numNetworks = WiFi.scanComplete(); - if (numNetworks > -1) { - AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_WIFI_SCANNER_SIZE); - JsonObject root = response->getRoot(); - JsonArray networks = root.createNestedArray("networks"); - for (int i = 0; i < numNetworks; i++) { - JsonObject network = networks.createNestedObject(); - network["rssi"] = WiFi.RSSI(i); - network["ssid"] = WiFi.SSID(i); - network["bssid"] = WiFi.BSSIDstr(i); - network["channel"] = WiFi.channel(i); +void WiFiScanner::listNetworks(AsyncWebServerRequest * request) { + int numNetworks = WiFi.scanComplete(); + if (numNetworks > -1) { + AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_WIFI_SCANNER_SIZE); + JsonObject root = response->getRoot(); + JsonArray networks = root.createNestedArray("networks"); + for (int i = 0; i < numNetworks; i++) { + JsonObject network = networks.createNestedObject(); + network["rssi"] = WiFi.RSSI(i); + network["ssid"] = WiFi.SSID(i); + network["bssid"] = WiFi.BSSIDstr(i); + network["channel"] = WiFi.channel(i); #ifdef ESP32 - network["encryption_type"] = (uint8_t)WiFi.encryptionType(i); + network["encryption_type"] = (uint8_t)WiFi.encryptionType(i); #elif defined(ESP8266) - network["encryption_type"] = convertEncryptionType(WiFi.encryptionType(i)); + network["encryption_type"] = convertEncryptionType(WiFi.encryptionType(i)); #endif + } + response->setLength(); + request->send(response); + } else if (numNetworks == -1) { + request->send(202); + } else { + scanNetworks(request); } - response->setLength(); - request->send(response); - } else if (numNetworks == -1) { - request->send(202); - } else { - scanNetworks(request); - } } #ifdef ESP8266 @@ -53,18 +51,18 @@ void WiFiScanner::listNetworks(AsyncWebServerRequest* request) { * This allows us to use a single set of mappings in the UI. */ uint8_t WiFiScanner::convertEncryptionType(uint8_t encryptionType) { - switch (encryptionType) { + switch (encryptionType) { case ENC_TYPE_NONE: - return AUTH_OPEN; + return AUTH_OPEN; case ENC_TYPE_WEP: - return AUTH_WEP; + return AUTH_WEP; case ENC_TYPE_TKIP: - return AUTH_WPA_PSK; + return AUTH_WPA_PSK; case ENC_TYPE_CCMP: - return AUTH_WPA2_PSK; + return AUTH_WPA2_PSK; case ENC_TYPE_AUTO: - return AUTH_WPA_WPA2_PSK; - } - return -1; + return AUTH_WPA_WPA2_PSK; + } + return -1; } #endif diff --git a/lib/framework/WiFiScanner.h b/lib/framework/WiFiScanner.h index 6f910302..601e998d 100644 --- a/lib/framework/WiFiScanner.h +++ b/lib/framework/WiFiScanner.h @@ -20,16 +20,16 @@ #define MAX_WIFI_SCANNER_SIZE 1024 class WiFiScanner { - public: - WiFiScanner(AsyncWebServer* server, SecurityManager* securityManager); + public: + WiFiScanner(AsyncWebServer * server, SecurityManager * securityManager); - private: - void scanNetworks(AsyncWebServerRequest* request); - void listNetworks(AsyncWebServerRequest* request); + private: + void scanNetworks(AsyncWebServerRequest * request); + void listNetworks(AsyncWebServerRequest * request); #ifdef ESP8266 - uint8_t convertEncryptionType(uint8_t encryptionType); + uint8_t convertEncryptionType(uint8_t encryptionType); #endif }; -#endif // end WiFiScanner_h +#endif // end WiFiScanner_h diff --git a/lib/framework/WiFiSettingsService.cpp b/lib/framework/WiFiSettingsService.cpp index 2c9c9ad5..54226a55 100644 --- a/lib/framework/WiFiSettingsService.cpp +++ b/lib/framework/WiFiSettingsService.cpp @@ -74,7 +74,7 @@ void WiFiSettingsService::manageSTA() { // configure for static IP WiFi.config(_state.localIP, _state.gatewayIP, _state.subnetMask, _state.dnsIP1, _state.dnsIP2); } else { - // configure for DHCP + // configure for DHCP #ifdef ESP32 WiFi.config(INADDR_NONE, INADDR_NONE, INADDR_NONE); #elif defined(ESP8266) diff --git a/lib/framework/WiFiSettingsService.h b/lib/framework/WiFiSettingsService.h index 2a79075b..eeafae4d 100644 --- a/lib/framework/WiFiSettingsService.h +++ b/lib/framework/WiFiSettingsService.h @@ -23,89 +23,87 @@ #endif class WiFiSettings { - public: - // core wifi configuration - String ssid; - String password; - String hostname; - bool staticIPConfig; - - // optional configuration for static IP address - IPAddress localIP; - IPAddress gatewayIP; - IPAddress subnetMask; - IPAddress dnsIP1; - IPAddress dnsIP2; - - static void read(WiFiSettings& settings, JsonObject& root) { - // connection settings - root["ssid"] = settings.ssid; - root["password"] = settings.password; - root["hostname"] = settings.hostname; - root["static_ip_config"] = settings.staticIPConfig; - - // extended settings - JsonUtils::writeIP(root, "local_ip", settings.localIP); - JsonUtils::writeIP(root, "gateway_ip", settings.gatewayIP); - JsonUtils::writeIP(root, "subnet_mask", settings.subnetMask); - JsonUtils::writeIP(root, "dns_ip_1", settings.dnsIP1); - JsonUtils::writeIP(root, "dns_ip_2", settings.dnsIP2); - } - - static StateUpdateResult update(JsonObject& root, WiFiSettings& settings) { - - settings.ssid = root["ssid"] | FACTORY_WIFI_SSID; - settings.password = root["password"] | FACTORY_WIFI_PASSWORD; - settings.hostname = root["hostname"] | FACTORY_WIFI_HOSTNAME; - settings.staticIPConfig = root["static_ip_config"] | false; - - // extended settings - JsonUtils::readIP(root, "local_ip", settings.localIP); - JsonUtils::readIP(root, "gateway_ip", settings.gatewayIP); - JsonUtils::readIP(root, "subnet_mask", settings.subnetMask); - JsonUtils::readIP(root, "dns_ip_1", settings.dnsIP1); - JsonUtils::readIP(root, "dns_ip_2", settings.dnsIP2); - - // Swap around the dns servers if 2 is populated but 1 is not - if (settings.dnsIP1 == INADDR_NONE && settings.dnsIP2 != INADDR_NONE) { - settings.dnsIP1 = settings.dnsIP2; - settings.dnsIP2 = INADDR_NONE; + public: + // core wifi configuration + String ssid; + String password; + String hostname; + bool staticIPConfig; + + // optional configuration for static IP address + IPAddress localIP; + IPAddress gatewayIP; + IPAddress subnetMask; + IPAddress dnsIP1; + IPAddress dnsIP2; + + static void read(WiFiSettings & settings, JsonObject & root) { + // connection settings + root["ssid"] = settings.ssid; + root["password"] = settings.password; + root["hostname"] = settings.hostname; + root["static_ip_config"] = settings.staticIPConfig; + + // extended settings + JsonUtils::writeIP(root, "local_ip", settings.localIP); + JsonUtils::writeIP(root, "gateway_ip", settings.gatewayIP); + JsonUtils::writeIP(root, "subnet_mask", settings.subnetMask); + JsonUtils::writeIP(root, "dns_ip_1", settings.dnsIP1); + JsonUtils::writeIP(root, "dns_ip_2", settings.dnsIP2); } - // Turning off static ip config if we don't meet the minimum requirements - // of ipAddress, gateway and subnet. This may change to static ip only - // as sensible defaults can be assumed for gateway and subnet - if (settings.staticIPConfig && - (settings.localIP == INADDR_NONE || settings.gatewayIP == INADDR_NONE || settings.subnetMask == INADDR_NONE)) { - settings.staticIPConfig = false; + static StateUpdateResult update(JsonObject & root, WiFiSettings & settings) { + settings.ssid = root["ssid"] | FACTORY_WIFI_SSID; + settings.password = root["password"] | FACTORY_WIFI_PASSWORD; + settings.hostname = root["hostname"] | FACTORY_WIFI_HOSTNAME; + settings.staticIPConfig = root["static_ip_config"] | false; + + // extended settings + JsonUtils::readIP(root, "local_ip", settings.localIP); + JsonUtils::readIP(root, "gateway_ip", settings.gatewayIP); + JsonUtils::readIP(root, "subnet_mask", settings.subnetMask); + JsonUtils::readIP(root, "dns_ip_1", settings.dnsIP1); + JsonUtils::readIP(root, "dns_ip_2", settings.dnsIP2); + + // Swap around the dns servers if 2 is populated but 1 is not + if (settings.dnsIP1 == INADDR_NONE && settings.dnsIP2 != INADDR_NONE) { + settings.dnsIP1 = settings.dnsIP2; + settings.dnsIP2 = INADDR_NONE; + } + + // Turning off static ip config if we don't meet the minimum requirements + // of ipAddress, gateway and subnet. This may change to static ip only + // as sensible defaults can be assumed for gateway and subnet + if (settings.staticIPConfig && (settings.localIP == INADDR_NONE || settings.gatewayIP == INADDR_NONE || settings.subnetMask == INADDR_NONE)) { + settings.staticIPConfig = false; + } + return StateUpdateResult::CHANGED; } - return StateUpdateResult::CHANGED; - } }; class WiFiSettingsService : public StatefulService { - public: - WiFiSettingsService(AsyncWebServer* server, FS* fs, SecurityManager* securityManager); + public: + WiFiSettingsService(AsyncWebServer * server, FS * fs, SecurityManager * securityManager); - void begin(); - void loop(); + void begin(); + void loop(); - private: - HttpEndpoint _httpEndpoint; - FSPersistence _fsPersistence; - unsigned long _lastConnectionAttempt; + private: + HttpEndpoint _httpEndpoint; + FSPersistence _fsPersistence; + unsigned long _lastConnectionAttempt; #ifdef ESP32 - bool _stopping; - void onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info); - void onStationModeStop(WiFiEvent_t event, WiFiEventInfo_t info); + bool _stopping; + void onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info); + void onStationModeStop(WiFiEvent_t event, WiFiEventInfo_t info); #elif defined(ESP8266) - WiFiEventHandler _onStationModeDisconnectedHandler; - void onStationModeDisconnected(const WiFiEventStationModeDisconnected& event); + WiFiEventHandler _onStationModeDisconnectedHandler; + void onStationModeDisconnected(const WiFiEventStationModeDisconnected & event); #endif - void reconfigureWiFiConnection(); - void manageSTA(); + void reconfigureWiFiConnection(); + void manageSTA(); }; -#endif // end WiFiSettingsService_h +#endif // end WiFiSettingsService_h diff --git a/lib/framework/WiFiStatus.cpp b/lib/framework/WiFiStatus.cpp index 159197e8..84e6a1c8 100644 --- a/lib/framework/WiFiStatus.cpp +++ b/lib/framework/WiFiStatus.cpp @@ -1,73 +1,72 @@ #include -WiFiStatus::WiFiStatus(AsyncWebServer* server, SecurityManager* securityManager) { - server->on(WIFI_STATUS_SERVICE_PATH, - HTTP_GET, - securityManager->wrapRequest(std::bind(&WiFiStatus::wifiStatus, this, std::placeholders::_1), - AuthenticationPredicates::IS_AUTHENTICATED)); +WiFiStatus::WiFiStatus(AsyncWebServer * server, SecurityManager * securityManager) { + server->on(WIFI_STATUS_SERVICE_PATH, + HTTP_GET, + securityManager->wrapRequest(std::bind(&WiFiStatus::wifiStatus, this, std::placeholders::_1), AuthenticationPredicates::IS_AUTHENTICATED)); #ifdef ESP32 - WiFi.onEvent(onStationModeConnected, WiFiEvent_t::SYSTEM_EVENT_STA_CONNECTED); - WiFi.onEvent(onStationModeDisconnected, WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED); - WiFi.onEvent(onStationModeGotIP, WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP); + WiFi.onEvent(onStationModeConnected, WiFiEvent_t::SYSTEM_EVENT_STA_CONNECTED); + WiFi.onEvent(onStationModeDisconnected, WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED); + WiFi.onEvent(onStationModeGotIP, WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP); #elif defined(ESP8266) - _onStationModeConnectedHandler = WiFi.onStationModeConnected(onStationModeConnected); - _onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected(onStationModeDisconnected); - _onStationModeGotIPHandler = WiFi.onStationModeGotIP(onStationModeGotIP); + _onStationModeConnectedHandler = WiFi.onStationModeConnected(onStationModeConnected); + _onStationModeDisconnectedHandler = WiFi.onStationModeDisconnected(onStationModeDisconnected); + _onStationModeGotIPHandler = WiFi.onStationModeGotIP(onStationModeGotIP); #endif } #ifdef ESP32 void WiFiStatus::onStationModeConnected(WiFiEvent_t event, WiFiEventInfo_t info) { - // Serial.println(F("WiFi Connected.")); + // Serial.println(F("WiFi Connected.")); } void WiFiStatus::onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info) { - // Serial.print(F("WiFi Disconnected. Reason code=")); - // Serial.println(info.disconnected.reason); + // Serial.print(F("WiFi Disconnected. Reason code=")); + // Serial.println(info.disconnected.reason); } void WiFiStatus::onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info) { - // Serial.printf_P(PSTR("WiFi Got IP. localIP=%s, hostName=%s\r\n"), WiFi.localIP().toString().c_str(), WiFi.getHostname()); + // Serial.printf_P(PSTR("WiFi Got IP. localIP=%s, hostName=%s\r\n"), WiFi.localIP().toString().c_str(), WiFi.getHostname()); } #elif defined(ESP8266) -void WiFiStatus::onStationModeConnected(const WiFiEventStationModeConnected& event) { - // Serial.print(F("WiFi Connected. SSID=")); - // Serial.println(event.ssid); +void WiFiStatus::onStationModeConnected(const WiFiEventStationModeConnected & event) { + // Serial.print(F("WiFi Connected. SSID=")); + // Serial.println(event.ssid); } -void WiFiStatus::onStationModeDisconnected(const WiFiEventStationModeDisconnected& event) { - // Serial.print(F("WiFi Disconnected. Reason code=")); - // Serial.println(event.reason); +void WiFiStatus::onStationModeDisconnected(const WiFiEventStationModeDisconnected & event) { + // Serial.print(F("WiFi Disconnected. Reason code=")); + // Serial.println(event.reason); } -void WiFiStatus::onStationModeGotIP(const WiFiEventStationModeGotIP& event) { - // Serial.printf_P(PSTR("WiFi Got IP. localIP=%s, hostName=%s\r\n"), event.ip.toString().c_str(), WiFi.hostname().c_str()); +void WiFiStatus::onStationModeGotIP(const WiFiEventStationModeGotIP & event) { + // Serial.printf_P(PSTR("WiFi Got IP. localIP=%s, hostName=%s\r\n"), event.ip.toString().c_str(), WiFi.hostname().c_str()); } #endif -void WiFiStatus::wifiStatus(AsyncWebServerRequest* request) { - AsyncJsonResponse* response = new AsyncJsonResponse(false, MAX_WIFI_STATUS_SIZE); - JsonObject root = response->getRoot(); - wl_status_t status = WiFi.status(); - root["status"] = (uint8_t)status; - if (status == WL_CONNECTED) { - root["local_ip"] = WiFi.localIP().toString(); - root["mac_address"] = WiFi.macAddress(); - root["rssi"] = WiFi.RSSI(); - root["ssid"] = WiFi.SSID(); - root["bssid"] = WiFi.BSSIDstr(); - root["channel"] = WiFi.channel(); - root["subnet_mask"] = WiFi.subnetMask().toString(); - root["gateway_ip"] = WiFi.gatewayIP().toString(); - IPAddress dnsIP1 = WiFi.dnsIP(0); - IPAddress dnsIP2 = WiFi.dnsIP(1); - if (dnsIP1 != INADDR_NONE) { - root["dns_ip_1"] = dnsIP1.toString(); +void WiFiStatus::wifiStatus(AsyncWebServerRequest * request) { + AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_WIFI_STATUS_SIZE); + JsonObject root = response->getRoot(); + wl_status_t status = WiFi.status(); + root["status"] = (uint8_t)status; + if (status == WL_CONNECTED) { + root["local_ip"] = WiFi.localIP().toString(); + root["mac_address"] = WiFi.macAddress(); + root["rssi"] = WiFi.RSSI(); + root["ssid"] = WiFi.SSID(); + root["bssid"] = WiFi.BSSIDstr(); + root["channel"] = WiFi.channel(); + root["subnet_mask"] = WiFi.subnetMask().toString(); + root["gateway_ip"] = WiFi.gatewayIP().toString(); + IPAddress dnsIP1 = WiFi.dnsIP(0); + IPAddress dnsIP2 = WiFi.dnsIP(1); + if (dnsIP1 != INADDR_NONE) { + root["dns_ip_1"] = dnsIP1.toString(); + } + if (dnsIP2 != INADDR_NONE) { + root["dns_ip_2"] = dnsIP2.toString(); + } } - if (dnsIP2 != INADDR_NONE) { - root["dns_ip_2"] = dnsIP2.toString(); - } - } - response->setLength(); - request->send(response); + response->setLength(); + request->send(response); } diff --git a/lib/framework/WiFiStatus.h b/lib/framework/WiFiStatus.h index 197bd641..a8ceacf0 100644 --- a/lib/framework/WiFiStatus.h +++ b/lib/framework/WiFiStatus.h @@ -19,27 +19,27 @@ #define WIFI_STATUS_SERVICE_PATH "/rest/wifiStatus" class WiFiStatus { - public: - WiFiStatus(AsyncWebServer* server, SecurityManager* securityManager); + public: + WiFiStatus(AsyncWebServer * server, SecurityManager * securityManager); - private: + private: #ifdef ESP32 - // static functions for logging WiFi events to the UART - static void onStationModeConnected(WiFiEvent_t event, WiFiEventInfo_t info); - static void onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info); - static void onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info); + // static functions for logging WiFi events to the UART + static void onStationModeConnected(WiFiEvent_t event, WiFiEventInfo_t info); + static void onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info); + static void onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info); #elif defined(ESP8266) - // handler refrences for logging important WiFi events over serial - WiFiEventHandler _onStationModeConnectedHandler; - WiFiEventHandler _onStationModeDisconnectedHandler; - WiFiEventHandler _onStationModeGotIPHandler; - // static functions for logging WiFi events to the UART - static void onStationModeConnected(const WiFiEventStationModeConnected& event); - static void onStationModeDisconnected(const WiFiEventStationModeDisconnected& event); - static void onStationModeGotIP(const WiFiEventStationModeGotIP& event); + // handler refrences for logging important WiFi events over serial + WiFiEventHandler _onStationModeConnectedHandler; + WiFiEventHandler _onStationModeDisconnectedHandler; + WiFiEventHandler _onStationModeGotIPHandler; + // static functions for logging WiFi events to the UART + static void onStationModeConnected(const WiFiEventStationModeConnected & event); + static void onStationModeDisconnected(const WiFiEventStationModeDisconnected & event); + static void onStationModeGotIP(const WiFiEventStationModeGotIP & event); #endif - void wifiStatus(AsyncWebServerRequest* request); + void wifiStatus(AsyncWebServerRequest * request); }; -#endif // end WiFiStatus_h +#endif // end WiFiStatus_h diff --git a/lib_standalone/FSPersistence.h b/lib_standalone/FSPersistence.h index e6c43a69..eb7eaf8f 100644 --- a/lib_standalone/FSPersistence.h +++ b/lib_standalone/FSPersistence.h @@ -11,7 +11,7 @@ class FSPersistence { JsonStateUpdater stateUpdater, StatefulService * statefulService, FS * fs, - char const * filePath, + const char * filePath, size_t bufferSize = DEFAULT_BUFFER_SIZE) : _stateReader(stateReader) , _stateUpdater(stateUpdater) @@ -52,7 +52,7 @@ class FSPersistence { JsonStateUpdater _stateUpdater; StatefulService * _statefulService; FS * _fs; - char const * _filePath; + const char * _filePath; size_t _bufferSize; update_handler_id_t _updateHandlerId; From 5345c0b93f9e2fcd50de14ac180b3264d58a6bdf Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:12:29 +0100 Subject: [PATCH 147/225] updated tests --- src/test/test.cpp | 62 ++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 30 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index 16c4f5ab..9aa45fed 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -132,16 +132,10 @@ bool Test::run_test(const char * command, int8_t id) { EMSESP::logger().info(F("Testing thermostat...")); add_device(0x10, 192); // FW120 - // HC1 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); - - // HC2 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x00, 0xCF, 0x22, 0x2F, 0x10, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); - - // HC3 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + // HC1 - 3 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x03, 0x02, 0x00, 0xCD, 0x00, 0xE4}); + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x02, 0x01, 0x00, 0xCE, 0x00, 0xE5}); + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x01, 0x02, 0x00, 0xCF, 0x00, 0xE6}); return true; } @@ -173,8 +167,7 @@ bool Test::run_test(const char * command, int8_t id) { add_device(0x38, 200); // Enviline module add_device(0x10, 192); // FW120 thermostat - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); // HC1 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x03, 0x02, 0x00, 0xCD, 0x00, 0xE4}); uart_telegram("38 0B FF 00 03 7B 0C 34 00 74"); @@ -185,11 +178,26 @@ bool Test::run_test(const char * command, int8_t id) { } // used with the 'test' command, under su/admin -void Test::run_test(uuid::console::Shell & shell, const std::string & command) { +void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { // switch to su shell.add_flags(CommandFlags::ADMIN); - if ((command == "default") || (command == "general") || (command.empty())) { + // change MQTT format + EMSESP::esp8266React.getMqttSettingsService()->updateWithoutPropagation([&](MqttSettings & mqttSettings) { + // mqttSettings.mqtt_format = Mqtt::Format::SINGLE; + // mqttSettings.mqtt_format = Mqtt::Format::NESTED; + mqttSettings.mqtt_format = Mqtt::Format::HA; + return StateUpdateResult::CHANGED; + }); + + std::string command(20, '\0'); + if ((cmd.empty()) || (cmd == "default")) { + command = "thermostat"; + } else { + command = cmd; + } + + if (command == "general") { shell.printfln(F("Testing adding a general boiler & thermostat...")); run_test("general"); shell.invoke_command("show devices"); @@ -391,8 +399,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { add_device(0x10, 191); // FR120 thermostat // HC1 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x01, 0x02, 0x00, 0xCF, 0x00, 0xE6}); shell.invoke_command("show"); shell.invoke_command("show devices"); @@ -402,6 +409,9 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { shell.printfln(F("Testing adding a thermostat FW120...")); run_test("thermostat"); shell.invoke_command("show"); + shell.invoke_command("call system publish"); + shell.invoke_command("show mqtt"); + EMSESP::mqtt_.incoming("ems-esp/thermostat_hc1", "heat"); EMSESP::mqtt_.incoming("ems-esp/thermostat_hc2", "28.8"); EMSESP::mqtt_.incoming("ems-esp/thermostat", "{\"cmd\":\"temp\",\"id\":2,\"data\":22}"); @@ -695,19 +705,19 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { // add a thermostat with 3 HCs add_device(0x10, 192); // FW120 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x00, 0xCF, 0x21, 0x2E, 0x20, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); // HC1 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x00, 0xCF, 0x22, 0x2F, 0x10, 0x00, 0x2E, 0x24, - 0x03, 0x25, 0x03, 0x03, 0x01, 0x03, 0x25, 0x00, 0xC8, 0x00, 0x00, 0x11, 0x01, 0x03}); // HC2 - uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); // HC3 + // HC1 - 3 + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x6F, 0x03, 0x02, 0x00, 0xCD, 0x00, 0xE4}); + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x70, 0x02, 0x01, 0x00, 0xCE, 0x00, 0xE5}); + uart_telegram({0x90, 0x00, 0xFF, 0x00, 0x00, 0x71, 0x01, 0x02, 0x00, 0xCF, 0x00, 0xE6}); shell.invoke_command("help"); - shell.invoke_command("su"); shell.invoke_command("call"); shell.invoke_command("call system info"); EMSESP::mqtt_.incoming("ems-esp/system", "{\"cmd\":\"info\"}"); // this should fail + EMSESP::mqtt_.incoming("ems-esp/thermostat_hc1", "20"); + shell.invoke_command("call thermostat wwmode"); // should do nothing shell.invoke_command("call thermostat mode auto 2"); // should error, no hc2 shell.invoke_command("call thermostat temp 22.56"); @@ -722,14 +732,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & command) { if (command == "mqtt") { shell.printfln(F("Testing MQTT...")); - // change MQTT format - EMSESP::esp8266React.getMqttSettingsService()->updateWithoutPropagation([&](MqttSettings & mqttSettings) { - // mqttSettings.mqtt_format = Mqtt::Format::SINGLE; - // mqttSettings.mqtt_format = Mqtt::Format::NESTED; - mqttSettings.mqtt_format = Mqtt::Format::HA; - return StateUpdateResult::CHANGED; - }); - // add a boiler add_device(0x08, 123); // Nefit Trendline From 3e86a48e2b1cdbf5d1be86fe4804782962fbaf9b Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:13:29 +0100 Subject: [PATCH 148/225] some minor formatting --- src/devices/boiler.cpp | 2 +- src/devices/solar.h | 46 +++++++++++++++++++++--------------------- src/devices/switch.h | 11 +++++----- src/system.cpp | 2 +- 4 files changed, 30 insertions(+), 31 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 73ccbe08..522c9743 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -775,7 +775,7 @@ void Boiler::show_values(uuid::console::Shell & shell) { * Values will always be posted first time as heatingActive_ and tapwaterActive_ will have values EMS_VALUE_BOOL_NOTSET */ void Boiler::check_active() { - if (!Helpers::hasValue(boilerState_)) { + if (!Helpers::hasValue(boilerState_)) { return; } bool b; diff --git a/src/devices/solar.h b/src/devices/solar.h index fcdc998d..00324777 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -67,29 +67,29 @@ class Solar : public EMSdevice { uint8_t userFlag_ = EMS_VALUE_BOOL_NOTSET; // telegram 0x0358 - uint8_t heatTransferSystem_ = EMS_VALUE_UINT_NOTSET; // Umladesystem, 00=no - uint8_t externalTank_ = EMS_VALUE_UINT_NOTSET; // Heat exchanger, 00=no - uint8_t thermalDisinfect_ = EMS_VALUE_UINT_NOTSET; // Daily heatup for disinfection, 00=no - uint8_t heatMetering_ = EMS_VALUE_UINT_NOTSET; // Wärmemengenzählung, 00=no - uint8_t solarIsEnabled_ = EMS_VALUE_UINT_NOTSET; // System enable, 00=no - + uint8_t heatTransferSystem_ = EMS_VALUE_UINT_NOTSET; // Umladesystem, 00=no + uint8_t externalTank_ = EMS_VALUE_UINT_NOTSET; // Heat exchanger, 00=no + uint8_t thermalDisinfect_ = EMS_VALUE_UINT_NOTSET; // Daily heatup for disinfection, 00=no + uint8_t heatMetering_ = EMS_VALUE_UINT_NOTSET; // Wärmemengenzählung, 00=no + uint8_t solarIsEnabled_ = EMS_VALUE_UINT_NOTSET; // System enable, 00=no + // telegram 0x035A - uint8_t collectorTempMax_ = EMS_VALUE_UINT_NOTSET; // maximum allowable temperature for collector - uint8_t tank1MaxTempCurrent_ = EMS_VALUE_UINT_NOTSET; // Current value for max tank temp - uint8_t collectorTempMin_ = EMS_VALUE_UINT_NOTSET; // minimum allowable temperature for collector - uint8_t solarPumpMode_ = EMS_VALUE_UINT_NOTSET; // 00=off, 01=PWM, 02=10V - uint8_t solarPumpMinRPM_ = EMS_VALUE_UINT_NOTSET; // minimum RPM setting, *5 % - uint8_t solarPumpTurnoffDiff_ = EMS_VALUE_UINT_NOTSET; // solar pump turnoff collector/tank diff - uint8_t solarPumpTurnonDiff_ = EMS_VALUE_UINT_NOTSET; // solar pump turnon collector/tank diff - uint8_t solarPumpKick_ = EMS_VALUE_UINT_NOTSET; // pump kick for vacuum collector, 00=off - uint8_t plainWaterMode_ = EMS_VALUE_UINT_NOTSET; // system does not use antifreeze, 00=off - uint8_t doubleMatchFlow_ = EMS_VALUE_UINT_NOTSET; // double Match Flow, 00=off - + uint8_t collectorTempMax_ = EMS_VALUE_UINT_NOTSET; // maximum allowable temperature for collector + uint8_t tank1MaxTempCurrent_ = EMS_VALUE_UINT_NOTSET; // Current value for max tank temp + uint8_t collectorTempMin_ = EMS_VALUE_UINT_NOTSET; // minimum allowable temperature for collector + uint8_t solarPumpMode_ = EMS_VALUE_UINT_NOTSET; // 00=off, 01=PWM, 02=10V + uint8_t solarPumpMinRPM_ = EMS_VALUE_UINT_NOTSET; // minimum RPM setting, *5 % + uint8_t solarPumpTurnoffDiff_ = EMS_VALUE_UINT_NOTSET; // solar pump turnoff collector/tank diff + uint8_t solarPumpTurnonDiff_ = EMS_VALUE_UINT_NOTSET; // solar pump turnon collector/tank diff + uint8_t solarPumpKick_ = EMS_VALUE_UINT_NOTSET; // pump kick for vacuum collector, 00=off + uint8_t plainWaterMode_ = EMS_VALUE_UINT_NOTSET; // system does not use antifreeze, 00=off + uint8_t doubleMatchFlow_ = EMS_VALUE_UINT_NOTSET; // double Match Flow, 00=off + // telegram 0x380 - uint8_t climateZone_ = EMS_VALUE_UINT_NOTSET; // climate zone identifier - uint16_t collector1Area_ = EMS_VALUE_USHORT_NOTSET;// Area of collector field 1 - uint8_t collector1Type_ = EMS_VALUE_UINT_NOTSET; // Type of collector field 1, 01=flat, 02=vacuum - + uint8_t climateZone_ = EMS_VALUE_UINT_NOTSET; // climate zone identifier + uint16_t collector1Area_ = EMS_VALUE_USHORT_NOTSET; // Area of collector field 1 + uint8_t collector1Type_ = EMS_VALUE_UINT_NOTSET; // Type of collector field 1, 01=flat, 02=vacuum + bool changed_ = false; bool mqtt_ha_config_ = false; // for HA MQTT Discovery @@ -114,8 +114,8 @@ class Solar : public EMSdevice { void process_ISM1StatusMessage(std::shared_ptr telegram); void process_ISM1Set(std::shared_ptr telegram); - - + + bool set_SM100Tank1MaxTemp(const char * value, const int8_t id); }; diff --git a/src/devices/switch.h b/src/devices/switch.h index e7afaba2..d11b7f3f 100644 --- a/src/devices/switch.h +++ b/src/devices/switch.h @@ -49,12 +49,11 @@ class Switch : public EMSdevice { void process_WM10MonitorMessage(std::shared_ptr telegram); void register_mqtt_ha_config(); - uint16_t flowTemp_ = EMS_VALUE_USHORT_NOTSET; - uint8_t status_ = EMS_VALUE_UINT_NOTSET; - uint8_t activated_ = EMS_VALUE_BOOL_NOTSET; - bool changed_ = false; - bool mqtt_ha_config_ = false; // for HA MQTT Discovery - + uint16_t flowTemp_ = EMS_VALUE_USHORT_NOTSET; + uint8_t status_ = EMS_VALUE_UINT_NOTSET; + uint8_t activated_ = EMS_VALUE_BOOL_NOTSET; + bool changed_ = false; + bool mqtt_ha_config_ = false; // for HA MQTT Discovery }; } // namespace emsesp diff --git a/src/system.cpp b/src/system.cpp index c32cd410..508f06cd 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -753,7 +753,7 @@ bool System::check_upgrade() { bool failed = false; File file; JsonObject network, general, mqtt, custom_settings; - StaticJsonDocument<1024> doc; + StaticJsonDocument doc; // open the system settings: // { From cd016ae6397be246feeb52b5cd66988d1a8fa802 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:13:59 +0100 Subject: [PATCH 149/225] split out commands with and without json --- src/WebAPIService.cpp | 2 +- src/command.cpp | 76 ++++++++++++++++++++++++++----------------- src/command.h | 12 ++++--- 3 files changed, 54 insertions(+), 36 deletions(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index 94da9e15..bcbbe379 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -52,7 +52,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { String cmd = request->getParam(F_(cmd))->value(); // look up command in our list - if (!Command::find_command(device_type, cmd.c_str())) { + if (Command::find_command(device_type, cmd.c_str()) == nullptr) { request->send(400, "text/plain", F("Invalid cmd")); return; } diff --git a/src/command.cpp b/src/command.cpp index 78d0c4f2..880a479a 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -29,6 +29,29 @@ std::vector Command::cmdfunctions_; // calls a command, context is the device_type // id may be used to represent a heating circuit for example // returns false if error or not found +bool Command::call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id) { +#ifdef EMSESP_DEBUG + std::string dname = EMSdevice::device_type_2_device_name(device_type); + if (value == nullptr) { + LOG_DEBUG(F("[DEBUG] Calling %s command %s"), dname.c_str(), cmd); + } else if (id == -1) { + LOG_DEBUG(F("[DEBUG] Calling %s command %s, value %s, id is default"), dname.c_str(), cmd, value); + } else { + LOG_DEBUG(F("[DEBUG] Calling %s command %s, value %s, id is %d"), dname.c_str(), cmd, value, id); + } +#endif + + auto cf = find_command(device_type, cmd); + if ((cf == nullptr) || (cf->cmdfunction_json_)) { + return false; // command not found, or requires a json + } + + return ((cf->cmdfunction_)(value, id)); +} + +// calls a command, context is the device_type. Takes a json object for output. +// id may be used to represent a heating circuit for example +// returns false if error or not found bool Command::call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id, JsonObject & json) { #ifdef EMSESP_DEBUG std::string dname = EMSdevice::device_type_2_device_name(device_type); @@ -37,31 +60,22 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val } else if (id == -1) { LOG_DEBUG(F("[DEBUG] Calling %s command %s, value %s, id is default"), dname.c_str(), cmd, value); } else { - LOG_DEBUG(F("[DEBUG] Calling %s command %s, value %s, id is %d in %s"), dname.c_str(), cmd, value, id); + LOG_DEBUG(F("[DEBUG] Calling %s command %s, value %s, id is %d"), dname.c_str(), cmd, value, id); } #endif - bool ok = false; - if (!cmdfunctions_.empty()) { - for (const auto & cf : cmdfunctions_) { - if (cf.device_type_ == device_type) { - // find a matching command and call it - if (uuid::read_flash_string(cf.cmd_) == cmd) { - // see if we this function wants to send its result to a json doc - if (cf.cmdfunction_json_) { - // check if json object is empty, if so quit - if (json.isNull()) { - LOG_WARNING(F("Ignore call for command %s in %s because no json"), cmd, EMSdevice::device_type_2_device_name(device_type).c_str()); - return false; - } - ok |= ((cf.cmdfunction_json_)(value, id, json)); - } else { - ok |= ((cf.cmdfunction_)(value, id)); - } - } - } - } + + auto cf = find_command(device_type, cmd); + if ((cf == nullptr) || (!cf->cmdfunction_json_)) { + return false; // command not found or not json } - return ok; + + // check if json object is empty, if so quit + if (json.isNull()) { + LOG_WARNING(F("Ignore call for command %s in %s because no json"), cmd, EMSdevice::device_type_2_device_name(device_type).c_str()); + return false; + } + + return ((cf->cmdfunction_json_)(value, id, json)); } // add a command to the list, which does not return json @@ -77,24 +91,26 @@ void Command::add(const uint8_t device_type, const uint8_t device_id, const __Fl // add a command to the list, which does return json object as output void Command::add_with_json(const uint8_t device_type, const __FlashStringHelper * cmd, cmdfunction_json_p cb) { // if the command already exists for that device type don't add it - if (!find_command(device_type, uuid::read_flash_string(cmd).c_str())) { - cmdfunctions_.emplace_back(device_type, cmd, nullptr, cb); + if (find_command(device_type, uuid::read_flash_string(cmd).c_str()) != nullptr) { + return; } + + cmdfunctions_.emplace_back(device_type, cmd, nullptr, cb); // add command } // see if a command exists for that device type -bool Command::find_command(const uint8_t device_type, const char * cmd) { - if ((cmd == nullptr) || (strlen(cmd) == 0)) { - return false; +Command::CmdFunction * Command::find_command(const uint8_t device_type, const char * cmd) { + if ((cmd == nullptr) || (strlen(cmd) == 0) || (cmdfunctions_.empty())) { + return nullptr; } - for (const auto & cf : cmdfunctions_) { + for (auto & cf : cmdfunctions_) { if (!strcmp_P(cmd, reinterpret_cast(cf.cmd_)) && (cf.device_type_ == device_type)) { - return true; + return &cf; } } - return false; // not found + return nullptr; // not found } // output list of all commands to console for a specific DeviceType diff --git a/src/command.h b/src/command.h index 2910ca2b..eeb142b5 100644 --- a/src/command.h +++ b/src/command.h @@ -57,11 +57,13 @@ class Command { return cmdfunctions_; } - static bool call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id, JsonObject & json); - static void add(const uint8_t device_type, const uint8_t device_id, const __FlashStringHelper * cmd, cmdfunction_p cb); - static void add_with_json(const uint8_t device_type, const __FlashStringHelper * cmd, cmdfunction_json_p cb); - static void show_all(uuid::console::Shell & shell); - static bool find_command(const uint8_t device_type, const char * cmd); + static bool call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id, JsonObject & json); + static bool call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id); + static void add(const uint8_t device_type, const uint8_t device_id, const __FlashStringHelper * cmd, cmdfunction_p cb); + static void add_with_json(const uint8_t device_type, const __FlashStringHelper * cmd, cmdfunction_json_p cb); + static void show_all(uuid::console::Shell & shell); + static Command::CmdFunction * find_command(const uint8_t device_type, const char * cmd); + static void show(uuid::console::Shell & shell, uint8_t device_type); static void show_devices(uuid::console::Shell & shell); static bool device_has_commands(const uint8_t device_type); From 647384f5c887df92a92c86d146608ce0c58c8026 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:14:40 +0100 Subject: [PATCH 150/225] change call to not use json, prevent duplicate inits --- src/mqtt.cpp | 20 ++++++++++---------- src/mqtt.h | 1 + 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 32286a61..b18a7052 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -41,6 +41,7 @@ std::vector Mqtt::mqtt_subfunctions_; uint16_t Mqtt::mqtt_publish_fails_ = 0; bool Mqtt::connecting_ = false; +bool Mqtt::initialized_ = false; uint8_t Mqtt::connectcount_ = 0; uint16_t Mqtt::mqtt_message_id_ = 0; std::list Mqtt::mqtt_messages_; @@ -268,22 +269,20 @@ void Mqtt::on_message(const char * topic, const char * payload, size_t len) { bool cmd_known = false; JsonVariant data = doc["data"]; - JsonObject json; // empty object - if (data.is()) { - cmd_known = Command::call(mf.device_type_, command, data.as(), n, json); + cmd_known = Command::call(mf.device_type_, command, data.as(), n); } else if (data.is()) { char data_str[10]; - cmd_known = Command::call(mf.device_type_, command, Helpers::itoa(data_str, (int16_t)data.as()), n, json); + cmd_known = Command::call(mf.device_type_, command, Helpers::itoa(data_str, (int16_t)data.as()), n); } else if (data.is()) { char data_str[10]; - cmd_known = Command::call(mf.device_type_, command, Helpers::render_value(data_str, (float)data.as(), 2), n, json); + cmd_known = Command::call(mf.device_type_, command, Helpers::render_value(data_str, (float)data.as(), 2), n); } else if (data.isNull()) { - cmd_known = Command::call(mf.device_type_, command, "", n, json); + cmd_known = Command::call(mf.device_type_, command, "", n); } if (!cmd_known) { - LOG_ERROR(F("MQTT: no matching cmd (%s), invalid data or command failed"), command); + LOG_ERROR(F("No matching cmd (%s), invalid data or command failed"), command); } return; @@ -358,9 +357,10 @@ void Mqtt::start() { }); // if MQTT disabled, quit - if (!mqtt_enabled_) { + if (!mqtt_enabled_ || initialized_) { return; } + initialized_ = true; mqttClient_->onConnect([this](bool sessionPresent) { on_connect(); }); @@ -475,7 +475,7 @@ void Mqtt::on_connect() { // first time to connect if (connectcount_ == 1) { // send info topic appended with the version information as JSON - StaticJsonDocument<90> doc; + StaticJsonDocument doc; doc["event"] = "start"; doc["version"] = EMSESP_APP_VERSION; #ifndef EMSESP_STANDALONE @@ -821,7 +821,7 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, LOG_ERROR(F("Failed to publish topic %s"), topic); } else { #if defined(EMSESP_STANDALONE) - LOG_DEBUG(F("Publishing topic=%s, payload=%s"), topic, payload_text); + LOG_DEBUG(F("Publishing topic=%s, payload=%s"), topic, payload_text.c_str()); #else LOG_DEBUG(F("Publishing topic %s"), topic); #endif diff --git a/src/mqtt.h b/src/mqtt.h index 7d2decdc..377ba11e 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -219,6 +219,7 @@ class Mqtt { uint32_t last_publish_sensor_ = 0; static bool connecting_; + static bool initialized_; static uint16_t mqtt_publish_fails_; static uint8_t connectcount_; From 060c3c76b25baeea193b64f6a7c542dab1006055 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:14:51 +0100 Subject: [PATCH 151/225] 2.1.1b5 --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index cd910c59..9bc795ad 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b4" +#define EMSESP_APP_VERSION "2.1.1b5" From cb7ba31afa395c21135e8fd226403577ce2b3f4c Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:15:13 +0100 Subject: [PATCH 152/225] surpress log messages when starting telnet --- src/console.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/console.cpp b/src/console.cpp index e1bbd4cc..13674b68 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -46,14 +46,14 @@ EMSESPShell::EMSESPShell() } void EMSESPShell::started() { - logger().log(LogLevel::INFO, LogFacility::CONSOLE, F("User session opened on console %s"), console_name().c_str()); + logger().log(LogLevel::DEBUG, LogFacility::CONSOLE, F("User session opened on console %s"), console_name().c_str()); } void EMSESPShell::stopped() { if (has_flags(CommandFlags::ADMIN)) { - logger().log(LogLevel::INFO, LogFacility::AUTH, F("su session closed on console %s"), console_name().c_str()); + logger().log(LogLevel::DEBUG, LogFacility::AUTH, F("su session closed on console %s"), console_name().c_str()); } - logger().log(LogLevel::INFO, LogFacility::CONSOLE, F("User session closed on console %s"), console_name().c_str()); + logger().log(LogLevel::DEBUG, LogFacility::CONSOLE, F("User session closed on console %s"), console_name().c_str()); // remove all custom contexts commands->remove_all_commands(); @@ -381,7 +381,7 @@ void EMSESPShell::add_console_commands() { } const char * cmd = arguments[1].c_str(); - if (!Command::find_command(device_type, cmd)) { + if (Command::find_command(device_type, cmd) == nullptr) { shell.print(F("Unknown command. Available commands are: ")); Command::show(shell, device_type); return; @@ -488,9 +488,12 @@ void Console::load_standard_commands(unsigned int context) { Test::run_test(shell, arguments.front()); } }); +#if defined(EMSESP_STANDALONE) + EMSESPShell::commands->add_command(context, CommandFlags::USER, flash_string_vector{F("t")}, [](Shell & shell, const std::vector & arguments) { + Test::run_test(shell, "default"); + }); +#endif #endif - - EMSESPShell::commands->add_command( context, From ffd2f6fe7379ddeb44c0c4c1e26a2abfaddc8827 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:15:41 +0100 Subject: [PATCH 153/225] always register HA for each HC --- src/devices/thermostat.cpp | 39 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 69a4fb87..3680be4b 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -353,7 +353,7 @@ void Thermostat::publish_values(JsonObject & json, bool force) { return; } - // see if we have already registered this with HA MQTT Discovery, if not send the config + // see if we have already registered this with HA MQTT Discovery, if not send the config first if (Mqtt::mqtt_format() == Mqtt::Format::HA) { if (!ha_config(force)) { return; @@ -726,7 +726,6 @@ bool Thermostat::ha_config(bool force) { if (!ha_registered()) { register_mqtt_ha_config(); ha_registered(true); - return false; } // check to see which heating circuits need to be added as HA climate components @@ -735,11 +734,11 @@ bool Thermostat::ha_config(bool force) { if (hc->is_active() && !hc->ha_registered()) { if (Helpers::hasValue(hc->curr_roomTemp)) { register_mqtt_ha_config(hc->hc_num()); + hc->ha_registered(true); } - hc->ha_registered(true); - return false; } } + return true; } @@ -937,9 +936,9 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { doc["mode_cmd_t"] = str3; doc["temp_cmd_t"] = str3; doc["~"] = System::hostname(); // ems-esp - doc["mode_stat_t"] = F("~/thermostat_data"); - doc["temp_stat_t"] = F("~/thermostat_data"); - doc["curr_temp_t"] = F("~/thermostat_data"); + doc["mode_stat_t"] = "~/thermostat_data"; + doc["temp_stat_t"] = "~/thermostat_data"; + doc["curr_temp_t"] = "~/thermostat_data"; char mode_str[30]; snprintf_P(mode_str, sizeof(mode_str), PSTR("{{value_json.hc%d.mode}}"), hc_num); @@ -953,30 +952,29 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { snprintf_P(currtemp_str, sizeof(currtemp_str), PSTR("{{value_json.hc%d.currtemp}}"), hc_num); doc["curr_temp_tpl"] = currtemp_str; - doc["min_temp"] = F("5"); - doc["max_temp"] = F("30"); - doc["temp_step"] = F("0.5"); + doc["min_temp"] = "5"; + doc["max_temp"] = "30"; + doc["temp_step"] = "0.5"; // the HA climate component only responds to auto, heat and off - JsonArray modes = doc.createNestedArray(F("modes")); - modes.add(F("auto")); - modes.add(F("heat")); - modes.add(F("off")); + JsonArray modes = doc.createNestedArray("modes"); + modes.add("auto"); + modes.add("heat"); + modes.add("off"); JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP Thermostat"); + dev["name"] = "EMS-ESP Thermostat"; dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); - ids.add(F("ems-esp-thermostat")); + ids.add("ems-esp-thermostat"); std::string topic(100, '\0'); snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/climate/ems-esp/thermostat_hc%d/config"), hc_num); Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag - // enable the thermostat topic to take both mode strings and floats - // for each of the heating circuits + // enable the a special "thermostat_hc" topic to take both mode strings and floats for each of the heating circuits std::string topic2(100, '\0'); snprintf_P(&topic2[0], topic2.capacity() + 1, PSTR("thermostat_hc%d"), hc_num); register_mqtt_topic(topic2, [=](const char * m) { return thermostat_ha_cmd(m, hc_num); }); @@ -991,8 +989,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(seltemp), device_type(), "seltemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(currtemp), device_type(), "currtemp", F_(degrees), F_(icontemperature)); - uint8_t model = this->model(); - switch (model) { + switch (this->model()) { case EMS_DEVICE_FLAG_RC100: case EMS_DEVICE_FLAG_RC300: Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), device_type(), "modetype", nullptr, nullptr); @@ -1316,7 +1313,7 @@ void Thermostat::process_RC35wwSettings(std::shared_ptr telegram changed_ |= telegram->read_value(wwCircMode_, 3); // 0 off, 1-on, 2-auto } -// type 0x6F - FR10/FR50/FR100 Junkers +// type 0x6F - FR10/FR50/FR100/FR110/FR120 Junkers void Thermostat::process_JunkersMonitor(std::shared_ptr telegram) { // ignore single byte telegram messages if (telegram->message_length <= 1) { From d0efe4709c3376bbb3e054b50742fcd9903b0a07 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 13:17:15 +0100 Subject: [PATCH 154/225] mention MQTT duplicate msg on publish --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index eb26bff3..994fb26a 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -16,6 +16,7 @@ - mixer devices in HA were incorrectly named - Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) - serviceCodeNumber, 3-char serviceCode, exhausttemp and heating_active for newer ems+ boilers +- prevent MQTT publish messages from sending twice ### Changed - optimized MQTT for HA to reduce heap fragmentation issues From d47a6f36af909a96fbaf9d9d47e83463cad4bd8c Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Mon, 23 Nov 2020 15:29:26 +0100 Subject: [PATCH 155/225] fix MM100 pump status #629 It was fixed in #486, something happend that it was wrong again. --- src/devices/mixer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index e611b919..9a8aaa68 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -292,7 +292,7 @@ void Mixer::process_MMPLUSStatusMessage_HC(std::shared_ptr teleg hc_ = telegram->type_id - 0x02D7 + 1; // determine which circuit this is changed_ |= telegram->read_value(flowTemp_, 3); // is * 10 changed_ |= telegram->read_value(flowSetTemp_, 5); - changed_ |= telegram->read_bitvalue(pumpStatus_, 2, 0); + changed_ |= telegram->read_bitvalue(pumpStatus_, 0, 0); changed_ |= telegram->read_value(status_, 2); // valve status } @@ -368,4 +368,4 @@ void Mixer::process_MMSetMessage(std::shared_ptr telegram) { #pragma GCC diagnostic pop -} // namespace emsesp \ No newline at end of file +} // namespace emsesp From ac1f8c0c58e4348daa1d15065d7e53d4f8c51b66 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 23 Nov 2020 18:15:47 +0100 Subject: [PATCH 156/225] code optimizations based on static analysis checks --- src/devices/boiler.cpp | 2 ++ src/devices/connect.cpp | 2 +- src/devices/controller.cpp | 2 +- src/devices/generic.cpp | 2 +- src/devices/switch.cpp | 5 ++--- src/emsdevice.cpp | 2 +- src/emsesp.cpp | 5 +++-- src/helpers.cpp | 7 ++++--- src/helpers.h | 4 ++-- src/system.cpp | 14 +++++++------- src/uart/emsuart_esp8266.cpp | 10 +++++++--- 11 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 522c9743..82ff0099 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -736,6 +736,8 @@ void Boiler::show_values(uuid::console::Shell & shell) { shell.println(); return; } + + // ww print_value_json(shell, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); print_value_json(shell, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); print_value_json(shell, F("wWDisinfectionTemp"), nullptr, F_(wWDisinfectionTemp), F_(degrees), json); diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp index 99f8510f..25937441 100644 --- a/src/devices/connect.cpp +++ b/src/devices/connect.cpp @@ -33,7 +33,7 @@ void Connect::device_info_web(JsonArray & root) { // display all values into the shell console void Connect::show_values(uuid::console::Shell & shell) { - // EMSdevice::show_values(shell); // always call this to show header + EMSdevice::show_values(shell); // always call this to show header } // publish values via MQTT diff --git a/src/devices/controller.cpp b/src/devices/controller.cpp index 6adb7c05..4899d5cb 100644 --- a/src/devices/controller.cpp +++ b/src/devices/controller.cpp @@ -33,7 +33,7 @@ void Controller::device_info_web(JsonArray & root) { // display all values into the shell console void Controller::show_values(uuid::console::Shell & shell) { - // EMSdevice::show_values(shell); // always call this to show header + EMSdevice::show_values(shell); // always call this to show header } // publish values via MQTT diff --git a/src/devices/generic.cpp b/src/devices/generic.cpp index 7f29d3e7..a212677d 100644 --- a/src/devices/generic.cpp +++ b/src/devices/generic.cpp @@ -33,7 +33,7 @@ void Generic::device_info_web(JsonArray & root) { // display all values into the shell console void Generic::show_values(uuid::console::Shell & shell) { - // EMSdevice::show_values(shell); // always call this to show header + EMSdevice::show_values(shell); // always call this to show header } // publish values via MQTT diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index 60ca552a..8c40e8dd 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -34,8 +34,8 @@ Switch::Switch(uint8_t device_type, uint8_t device_id, uint8_t product_id, const register_telegram_type(0x9B, F("WM10SetMessage"), false, [&](std::shared_ptr t) { process_WM10SetMessage(t); }); } +// fetch the values into a JSON document for display in the web void Switch::device_info_web(JsonArray & root) { - // fetch the values into a JSON document StaticJsonDocument doc; JsonObject json = doc.to(); if (export_values(json)) { @@ -47,8 +47,6 @@ void Switch::device_info_web(JsonArray & root) { // display all values into the shell console void Switch::show_values(uuid::console::Shell & shell) { - // EMSdevice::show_values(shell); // always call this to show header - // fetch the values into a JSON document StaticJsonDocument doc; JsonObject json = doc.to(); if (export_values(json)) { @@ -66,6 +64,7 @@ void Switch::publish_values(JsonObject & json, bool force) { return; } } + StaticJsonDocument doc; JsonObject json_data = doc.to(); if (export_values(json_data)) { diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index a356057c..5466aaa5 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -413,7 +413,7 @@ void EMSdevice::print_value_json(uuid::console::Shell & shell, shell.println(); } -// print value to shell from the json doc into a name/value pair +// create json key/value pair void EMSdevice::print_value_json(JsonArray & root, const __FlashStringHelper * key, const __FlashStringHelper * prefix, diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 64070b4b..3279baf3 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -108,9 +108,9 @@ void EMSESP::scan_devices() { * we send to right device and match all reads to 0x18 */ uint8_t EMSESP::check_master_device(const uint8_t device_id, const uint16_t type_id, const bool read) { - uint16_t mon_id[4] = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; - uint16_t set_id[4] = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; if (actual_master_thermostat_ == 0x18) { + uint16_t mon_id[4] = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; + uint16_t set_id[4] = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; for (uint8_t i = 0; i < 4; i++) { if (type_id == mon_id[i] || type_id == set_id[i]) { if (read) { @@ -121,6 +121,7 @@ uint8_t EMSESP::check_master_device(const uint8_t device_id, const uint16_t type } } } + return device_id; } diff --git a/src/helpers.cpp b/src/helpers.cpp index c6383140..2507fcbf 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -82,7 +82,7 @@ char * Helpers::itoa(char * result, int32_t value, const uint8_t base) { return result; } - char * ptr = result, *ptr1 = result, tmp_char; + char * ptr = result, *ptr1 = result; int16_t tmp_value; do { @@ -97,6 +97,7 @@ char * Helpers::itoa(char * result, int32_t value, const uint8_t base) { } *ptr-- = '\0'; + char tmp_char; while (ptr1 < ptr) { tmp_char = *ptr; *ptr-- = *ptr1; @@ -136,7 +137,7 @@ char * Helpers::render_boolean(char * result, bool value) { } // depending on format render a number or a string -char * Helpers::render_enum(char * result, const std::vector value, const uint8_t no) { +char * Helpers::render_enum(char * result, const std::vector &value, const uint8_t no) { if (no >= value.size()) { return nullptr; // out of bounds } @@ -459,7 +460,7 @@ bool Helpers::value2bool(const char * v, bool & value) { } // checks to see if a string is member of a vector and return the index, also allow true/false for on/off -bool Helpers::value2enum(const char * v, uint8_t & value, const std::vector strs) { +bool Helpers::value2enum(const char * v, uint8_t & value, const std::vector &strs) { if ((v == nullptr) || (strlen(v) == 0)) { return false; } diff --git a/src/helpers.h b/src/helpers.h index 8573d579..b20c3771 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -40,7 +40,7 @@ class Helpers { static char * render_value(char * result, const int16_t value, const uint8_t format); static char * render_value(char * result, const char * value, uint8_t format); static char * render_boolean(char * result, bool value); - static char * render_enum(char * result, const std::vector value, const uint8_t no); + static char * render_enum(char * result, const std::vector & value, const uint8_t no); static char * hextoa(char * result, const uint8_t value); static std::string data_to_hex(const uint8_t * data, const uint8_t length); @@ -63,7 +63,7 @@ class Helpers { static bool value2float(const char * v, float & value); static bool value2bool(const char * v, bool & value); static bool value2string(const char * v, std::string & value); - static bool value2enum(const char * v, uint8_t & value, const std::vector strs); + static bool value2enum(const char * v, uint8_t & value, const std::vector & strs); static void bool_format(uint8_t bool_format) { bool_format_ = bool_format; diff --git a/src/system.cpp b/src/system.cpp index 508f06cd..f6a35a64 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -434,14 +434,13 @@ void System::led_monitor() { // Low quality: 30% ~= -85dBm // Unusable quality: 8% ~= -96dBm int8_t System::wifi_quality() { -#ifndef EMSESP_STANDALONE +#ifdef EMSESP_STANDALONE + return 100; +#else if (WiFi.status() != WL_CONNECTED) { return -1; } int32_t dBm = WiFi.RSSI(); -#else - int32_t dBm = -70; -#endif if (dBm <= -100) { return 0; } @@ -450,6 +449,7 @@ int8_t System::wifi_quality() { return 100; } return 2 * (dBm + 100); +#endif } // print users to console @@ -750,9 +750,9 @@ bool System::check_upgrade() { Serial.begin(115200); - bool failed = false; - File file; - JsonObject network, general, mqtt, custom_settings; + bool failed = false; + File file; + JsonObject network, general, mqtt, custom_settings; StaticJsonDocument doc; // open the system settings: diff --git a/src/uart/emsuart_esp8266.cpp b/src/uart/emsuart_esp8266.cpp index 67a40b87..d73cb1b4 100644 --- a/src/uart/emsuart_esp8266.cpp +++ b/src/uart/emsuart_esp8266.cpp @@ -41,7 +41,6 @@ bool EMSuart::sending_ = false; // Important: must not use ICACHE_FLASH_ATTR // void ICACHE_RAM_ATTR EMSuart::emsuart_rx_intr_handler(void * para) { - static uint8_t length = 0; static uint8_t uart_buffer[EMS_MAXBUFFERSIZE + 2]; if (USIS(EMSUART_UART) & ((1 << UIBD))) { // BREAK detection = End of EMS data block @@ -49,8 +48,10 @@ void ICACHE_RAM_ATTR EMSuart::emsuart_rx_intr_handler(void * para) { if (sending_) { // irq tx_mode is interrupted by , should never happen drop_next_rx = true; // we have trash in buffer } - USIC(EMSUART_UART) = (1 << UIBD); // INT clear the BREAK detect interrupt - length = 0; + + USIC(EMSUART_UART) = (1 << UIBD); // INT clear the BREAK detect interrupt + static uint8_t length = 0; + while ((USS(EMSUART_UART) >> USRXC) & 0x0FF) { // read fifo into buffer uint8_t rx = USF(EMSUART_UART); if (length < EMS_MAXBUFFERSIZE) { @@ -61,14 +62,17 @@ void ICACHE_RAM_ATTR EMSuart::emsuart_rx_intr_handler(void * para) { drop_next_rx = true; } } + if (!drop_next_rx) { if (uart_buffer[length - 1]) { // check if last byte is break length++; } + pEMSRxBuf->length = length; os_memcpy((void *)pEMSRxBuf->buffer, (void *)&uart_buffer, pEMSRxBuf->length); // copy data into transfer buffer, including the BRK 0x00 at the end system_os_post(EMSUART_recvTaskPrio, 0, 0); // call emsuart_recvTask() at next opportunity } + drop_next_rx = false; sending_ = false; } From fc475c50dfe6ec564d0d4ee2e1172c677c85e815 Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Tue, 24 Nov 2020 14:34:34 +0100 Subject: [PATCH 157/225] fix uart8266 --- src/uart/emsuart_esp8266.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/uart/emsuart_esp8266.cpp b/src/uart/emsuart_esp8266.cpp index d73cb1b4..e6abdbe9 100644 --- a/src/uart/emsuart_esp8266.cpp +++ b/src/uart/emsuart_esp8266.cpp @@ -41,7 +41,6 @@ bool EMSuart::sending_ = false; // Important: must not use ICACHE_FLASH_ATTR // void ICACHE_RAM_ATTR EMSuart::emsuart_rx_intr_handler(void * para) { - static uint8_t uart_buffer[EMS_MAXBUFFERSIZE + 2]; if (USIS(EMSUART_UART) & ((1 << UIBD))) { // BREAK detection = End of EMS data block USC0(EMSUART_UART) &= ~(1 << UCBRK); // reset tx-brk @@ -49,8 +48,9 @@ void ICACHE_RAM_ATTR EMSuart::emsuart_rx_intr_handler(void * para) { drop_next_rx = true; // we have trash in buffer } - USIC(EMSUART_UART) = (1 << UIBD); // INT clear the BREAK detect interrupt - static uint8_t length = 0; + USIC(EMSUART_UART) = (1 << UIBD); // INT clear the BREAK detect interrupt + uint8_t length = 0; + uint8_t uart_buffer[EMS_MAXBUFFERSIZE + 2]; while ((USS(EMSUART_UART) >> USRXC) & 0x0FF) { // read fifo into buffer uint8_t rx = USF(EMSUART_UART); @@ -334,4 +334,4 @@ uint16_t ICACHE_FLASH_ATTR EMSuart::transmit(uint8_t * buf, uint8_t len) { } // namespace emsesp -#endif \ No newline at end of file +#endif From ec06442b85292f8a52b32c8af3e482ff70055468 Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Tue, 24 Nov 2020 14:37:19 +0100 Subject: [PATCH 158/225] fix call commands from console --- src/command.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/command.cpp b/src/command.cpp index 880a479a..dcf8328a 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -65,7 +65,7 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val #endif auto cf = find_command(device_type, cmd); - if ((cf == nullptr) || (!cf->cmdfunction_json_)) { + if (cf == nullptr) { return false; // command not found or not json } @@ -75,7 +75,11 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val return false; } - return ((cf->cmdfunction_json_)(value, id, json)); + if (!cf->cmdfunction_json_) { + return ((cf->cmdfunction_)(value, id)); + } else { + return ((cf->cmdfunction_json_)(value, id, json)); + } } // add a command to the list, which does not return json @@ -197,4 +201,4 @@ void Command::show_all(uuid::console::Shell & shell) { } } -} // namespace emsesp \ No newline at end of file +} // namespace emsesp From f4548a266737d74b44f2cb9700e19a4a1b5e6b8a Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Tue, 24 Nov 2020 14:50:41 +0100 Subject: [PATCH 159/225] temporary remove `clear` on scan devices to avoid crash --- src/emsesp.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 3279baf3..3ffcf617 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -83,7 +83,8 @@ void EMSESP::fetch_device_values(const uint8_t device_id) { // clears list of recognized devices void EMSESP::clear_all_devices() { - emsdevices.clear(); // remove entries, but doesn't delete actual devices + // temporary removed: clearing the list causes a crash, the associated commands and mqtt should also be removed. + // emsdevices.clear(); // remove entries, but doesn't delete actual devices } // return number of devices of a known type From 5fb8ca166bf129445f55046d53fb84db061ede4f Mon Sep 17 00:00:00 2001 From: MichaelDvP <59284019+MichaelDvP@users.noreply.github.com> Date: Tue, 24 Nov 2020 15:01:48 +0100 Subject: [PATCH 160/225] Update CHANGELOG_LATEST.md --- CHANGELOG_LATEST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 994fb26a..d1c67c15 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -3,7 +3,7 @@ ### Added - function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts - SM100 pump working time and energy units -- heating curve parameters for RC300 +- heating curve parameters and commands for RC300 - `wwonetime` for RC300 thermostat - expose test framework via api (#611) - SysLog has enable/disable flag in WebUI From 18b6dc645f108d46dcdebcfb19fe627dff06fcc3 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:06:56 +0100 Subject: [PATCH 161/225] web and shell printing share common functions - refactor how device values are printed to shell #632 --- interface/src/project/EMSESPDevicesForm.tsx | 39 +-- interface/src/project/EMSESPtypes.ts | 8 +- src/devices/boiler.cpp | 285 +++++++------------- src/devices/boiler.h | 1 - src/devices/connect.cpp | 5 - src/devices/connect.h | 1 - src/devices/controller.cpp | 5 - src/devices/controller.h | 1 - src/devices/gateway.cpp | 5 - src/devices/gateway.h | 1 - src/devices/generic.cpp | 5 - src/devices/generic.h | 1 - src/devices/heatpump.cpp | 23 +- src/devices/heatpump.h | 1 - src/devices/mixer.cpp | 60 +---- src/devices/mixer.h | 1 - src/devices/solar.cpp | 81 ++---- src/devices/solar.h | 1 - src/devices/switch.cpp | 23 +- src/devices/switch.h | 1 - src/devices/thermostat.cpp | 205 +++++--------- src/devices/thermostat.h | 1 - src/emsdevice.cpp | 79 +----- src/emsdevice.h | 58 +--- src/emsesp.cpp | 20 +- src/locale_EN.h | 15 +- src/telegram.h | 2 + src/version.h | 2 +- 28 files changed, 282 insertions(+), 648 deletions(-) diff --git a/interface/src/project/EMSESPDevicesForm.tsx b/interface/src/project/EMSESPDevicesForm.tsx index 47043241..00b7ee2d 100644 --- a/interface/src/project/EMSESPDevicesForm.tsx +++ b/interface/src/project/EMSESPDevicesForm.tsx @@ -35,6 +35,7 @@ import { RestFormProps, FormButton } from "../components"; import { EMSESPDevices, EMSESPDeviceData, Device } from "./EMSESPtypes"; import { ENDPOINT_ROOT } from "../api"; + export const SCANDEVICES_ENDPOINT = ENDPOINT_ROOT + "scanDevices"; export const DEVICE_DATA_ENDPOINT = ENDPOINT_ROOT + "deviceData"; @@ -80,7 +81,7 @@ function formatTemp(t: string) { class EMSESPDevicesForm extends Component< EMSESPDevicesFormProps, EMSESPDevicesFormState -> { + > { state: EMSESPDevicesFormState = { confirmScanDevices: false, processing: false, @@ -149,8 +150,8 @@ class EMSESPDevicesForm extends Component< 0x {("00" + device.deviceid.toString(16).toUpperCase()).slice( - -2 - )} + -2 + )} {device.productid} {device.version} @@ -340,26 +341,30 @@ class EMSESPDevicesForm extends Component< > - {deviceData.deviceData.map((deviceData) => ( - - - {deviceData.n} - - {deviceData.v} - - ))} + {deviceData.deviceData.map((item, i) => { + if (i % 2) { + return null; + } else { + return ( + + {deviceData.deviceData[i]} + {deviceData.deviceData[i + 1]} + + ); + } + })} )} {this.noDeviceData() && ( - - - No data available for this device - - + + + No data available for this device + + )} - + ); } diff --git a/interface/src/project/EMSESPtypes.ts b/interface/src/project/EMSESPtypes.ts index ba0c4e82..ba76b401 100644 --- a/interface/src/project/EMSESPtypes.ts +++ b/interface/src/project/EMSESPtypes.ts @@ -54,13 +54,7 @@ export interface EMSESPDevices { sensors: Sensor[]; } -export interface DeviceData { - n: string; - v: string; -} - export interface EMSESPDeviceData { deviceName: string; - deviceData: DeviceData[]; + deviceData: string[]; } - diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 82ff0099..f04df7bc 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -85,17 +85,17 @@ void Boiler::register_mqtt_ha_config() { // Create the Master device StaticJsonDocument doc; - doc["name"] = F("Service Code"); - doc["uniq_id"] = F("boiler"); - doc["ic"] = F("mdi:home-thermometer-outline"); + doc["name"] = FJSON("Service Code"); + doc["uniq_id"] = FJSON("boiler"); + doc["ic"] = FJSON("mdi:home-thermometer-outline"); char stat_t[50]; snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/boiler_data"), System::hostname().c_str()); doc["stat_t"] = stat_t; - doc["val_tpl"] = F("{{value_json.serviceCode}}"); + doc["val_tpl"] = FJSON("{{value_json.serviceCode}}"); JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP Boiler"); + dev["name"] = FJSON("EMS-ESP Boiler"); dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = name(); @@ -191,43 +191,47 @@ void Boiler::device_info_web(JsonArray & root) { return; // empty } - print_value_json(root, F("heatingActive"), nullptr, F_(heatingActive), nullptr, json); - print_value_json(root, F("tapwaterActive"), nullptr, F_(tapwaterActive), nullptr, json); - print_value_json(root, F("serviceCode"), nullptr, F_(serviceCode), nullptr, json); - print_value_json(root, F("serviceCodeNumber"), nullptr, F_(serviceCodeNumber), nullptr, json); - print_value_json(root, F("lastCode"), nullptr, F_(lastCode), nullptr, json); - print_value_json(root, F("selFlowTemp"), nullptr, F_(selFlowTemp), F_(degrees), json); - print_value_json(root, F("selBurnPow"), nullptr, F_(selBurnPow), F_(percent), json); - print_value_json(root, F("curBurnPow"), nullptr, F_(curBurnPow), F_(percent), json); - print_value_json(root, F("pumpMod"), nullptr, F_(pumpMod), F_(percent), json); - print_value_json(root, F("pumpMod2"), nullptr, F_(pumpMod2), F_(percent), json); - print_value_json(root, F("outdoorTemp"), nullptr, F_(outdoorTemp), F_(degrees), json); - print_value_json(root, F("curFlowTemp"), nullptr, F_(curFlowTemp), F_(degrees), json); - print_value_json(root, F("retTemp"), nullptr, F_(retTemp), F_(degrees), json); - print_value_json(root, F("switchTemp"), nullptr, F_(switchTemp), F_(degrees), json); - print_value_json(root, F("sysPress"), nullptr, F_(sysPress), nullptr, json); - print_value_json(root, F("boilTemp"), nullptr, F_(boilTemp), F_(degrees), json); - print_value_json(root, F("burnGas"), nullptr, F_(burnGas), nullptr, json); - print_value_json(root, F("flameCurr"), nullptr, F_(flameCurr), F_(uA), json); - print_value_json(root, F("heatPump"), nullptr, F_(heatPump), nullptr, json); - print_value_json(root, F("fanWork"), nullptr, F_(fanWork), nullptr, json); - print_value_json(root, F("ignWork"), nullptr, F_(ignWork), nullptr, json); - print_value_json(root, F("heatingActivated"), nullptr, F_(heatingActivated), nullptr, json); - print_value_json(root, F("heatingTemp"), nullptr, F_(heatingTemp), F_(degrees), json); - print_value_json(root, F("pumpModMax"), nullptr, F_(pumpModMax), F_(percent), json); - print_value_json(root, F("pumpModMin"), nullptr, F_(pumpModMin), F_(percent), json); - print_value_json(root, F("pumpDelay"), nullptr, F_(pumpDelay), F_(min), json); - print_value_json(root, F("burnMinPeriod"), nullptr, F_(burnMinPeriod), F_(min), json); - print_value_json(root, F("burnMinPower"), nullptr, F_(burnMinPower), F_(percent), json); - print_value_json(root, F("burnMaxPower"), nullptr, F_(burnMaxPower), F_(percent), json); - print_value_json(root, F("boilHystOn"), nullptr, F_(boilHystOn), F_(degrees), json); - print_value_json(root, F("boilHystOff"), nullptr, F_(boilHystOff), F_(degrees), json); - print_value_json(root, F("setFlowTemp"), nullptr, F_(setFlowTemp), F_(degrees), json); - print_value_json(root, F("setBurnPow"), nullptr, F_(setBurnPow), F_(percent), json); - print_value_json(root, F("burnStarts"), nullptr, F_(burnStarts), nullptr, json); - print_value_json(root, F("burnWorkMin"), nullptr, F_(burnWorkMin), F_(min), json); - print_value_json(root, F("heatWorkMin"), nullptr, F_(heatWorkMin), F_(min), json); - print_value_json(root, F("UBAuptime"), nullptr, F_(UBAuptime), F_(min), json); + create_value_json(root, F("heatingActive"), nullptr, F_(heatingActive), nullptr, json); + create_value_json(root, F("tapwaterActive"), nullptr, F_(tapwaterActive), nullptr, json); + create_value_json(root, F("serviceCode"), nullptr, F_(serviceCode), nullptr, json); + create_value_json(root, F("serviceCodeNumber"), nullptr, F_(serviceCodeNumber), nullptr, json); + create_value_json(root, F("lastCode"), nullptr, F_(lastCode), nullptr, json); + create_value_json(root, F("selFlowTemp"), nullptr, F_(selFlowTemp), F_(degrees), json); + create_value_json(root, F("selBurnPow"), nullptr, F_(selBurnPow), F_(percent), json); + create_value_json(root, F("curBurnPow"), nullptr, F_(curBurnPow), F_(percent), json); + create_value_json(root, F("pumpMod"), nullptr, F_(pumpMod), F_(percent), json); + create_value_json(root, F("pumpMod2"), nullptr, F_(pumpMod2), F_(percent), json); + create_value_json(root, F("outdoorTemp"), nullptr, F_(outdoorTemp), F_(degrees), json); + create_value_json(root, F("curFlowTemp"), nullptr, F_(curFlowTemp), F_(degrees), json); + create_value_json(root, F("retTemp"), nullptr, F_(retTemp), F_(degrees), json); + create_value_json(root, F("switchTemp"), nullptr, F_(switchTemp), F_(degrees), json); + create_value_json(root, F("sysPress"), nullptr, F_(sysPress), nullptr, json); + create_value_json(root, F("boilTemp"), nullptr, F_(boilTemp), F_(degrees), json); + create_value_json(root, F("burnGas"), nullptr, F_(burnGas), nullptr, json); + create_value_json(root, F("flameCurr"), nullptr, F_(flameCurr), F_(uA), json); + create_value_json(root, F("heatPump"), nullptr, F_(heatPump), nullptr, json); + create_value_json(root, F("fanWork"), nullptr, F_(fanWork), nullptr, json); + create_value_json(root, F("ignWork"), nullptr, F_(ignWork), nullptr, json); + create_value_json(root, F("heatingActivated"), nullptr, F_(heatingActivated), nullptr, json); + create_value_json(root, F("heatingTemp"), nullptr, F_(heatingTemp), F_(degrees), json); + create_value_json(root, F("pumpModMax"), nullptr, F_(pumpModMax), F_(percent), json); + create_value_json(root, F("pumpModMin"), nullptr, F_(pumpModMin), F_(percent), json); + create_value_json(root, F("pumpDelay"), nullptr, F_(pumpDelay), F_(min), json); + create_value_json(root, F("burnMinPeriod"), nullptr, F_(burnMinPeriod), F_(min), json); + create_value_json(root, F("burnMinPower"), nullptr, F_(burnMinPower), F_(percent), json); + create_value_json(root, F("burnMaxPower"), nullptr, F_(burnMaxPower), F_(percent), json); + create_value_json(root, F("boilHystOn"), nullptr, F_(boilHystOn), F_(degrees), json); + create_value_json(root, F("boilHystOff"), nullptr, F_(boilHystOff), F_(degrees), json); + create_value_json(root, F("setFlowTemp"), nullptr, F_(setFlowTemp), F_(degrees), json); + create_value_json(root, F("setBurnPow"), nullptr, F_(setBurnPow), F_(percent), json); + create_value_json(root, F("burnStarts"), nullptr, F_(burnStarts), nullptr, json); + create_value_json(root, F("burnWorkMin"), nullptr, F_(burnWorkMin), F_(min), json); + create_value_json(root, F("heatWorkMin"), nullptr, F_(heatWorkMin), F_(min), json); + create_value_json(root, F("UBAuptime"), nullptr, F_(UBAuptime), F_(min), json); + + create_value_json(root, F("burnWorkMintxt"), nullptr, F_(burnWorkMintxt), nullptr, json); + create_value_json(root, F("heatWorkMintxt"), nullptr, F_(heatWorkMintxt), nullptr, json); + create_value_json(root, F("UBAuptimetxt"), nullptr, F_(UBAuptimetxt), nullptr, json); doc.clear(); if (!export_values_ww(json)) { // append ww values @@ -235,33 +239,35 @@ void Boiler::device_info_web(JsonArray & root) { } // ww - print_value_json(root, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); - print_value_json(root, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); - print_value_json(root, F("wWDisinfectionTemp"), nullptr, F_(wWDisinfectionTemp), F_(degrees), json); - print_value_json(root, F("wWType"), nullptr, F_(wWType), nullptr, json); - print_value_json(root, F("wWChargeType"), nullptr, F_(wWChargeType), nullptr, json); - print_value_json(root, F("wWCircPump"), nullptr, F_(wWCircPump), nullptr, json); - print_value_json(root, F("wWCircPumpMode"), nullptr, F_(wWCircPumpMode), nullptr, json); - print_value_json(root, F("wWCirc"), nullptr, F_(wWCirc), nullptr, json); - print_value_json(root, F("wWCurTemp"), nullptr, F_(wWCurTemp), F_(degrees), json); - print_value_json(root, F("wWCurTemp2"), nullptr, F_(wWCurTemp2), F_(degrees), json); - print_value_json(root, F("wWCurFlow"), nullptr, F_(wWCurFlow), F("l/min"), json); - print_value_json(root, F("wwStorageTemp1"), nullptr, F_(wwStorageTemp1), F_(degrees), json); - print_value_json(root, F("wwStorageTemp2"), nullptr, F_(wwStorageTemp2), F_(degrees), json); - print_value_json(root, F("exhaustTemp"), nullptr, F_(exhaustTemp), F_(degrees), json); - print_value_json(root, F("wWActivated"), nullptr, F_(wWActivated), nullptr, json); - print_value_json(root, F("wWOneTime"), nullptr, F_(wWOneTime), nullptr, json); - print_value_json(root, F("wWDisinfecting"), nullptr, F_(wWDisinfecting), nullptr, json); - print_value_json(root, F("wWCharging"), nullptr, F_(wWCharging), nullptr, json); - print_value_json(root, F("wWRecharging"), nullptr, F_(wWRecharging), nullptr, json); - print_value_json(root, F("wWTempOK"), nullptr, F_(wWTempOK), nullptr, json); - print_value_json(root, F("wWActive"), nullptr, F_(wWActive), nullptr, json); - print_value_json(root, F("wWHeat"), nullptr, F_(wWHeat), nullptr, json); - print_value_json(root, F("wWSetPumpPower"), nullptr, F_(wWSetPumpPower), F_(percent), json); - print_value_json(root, F("wwMixTemperature"), nullptr, F_(wwMixTemperature), F_(degrees), json); - print_value_json(root, F("wwBufferTemperature"), nullptr, F_(wwBufferTemperature), F_(degrees), json); - print_value_json(root, F("wWStarts"), nullptr, F_(wWStarts), nullptr, json); - print_value_json(root, F("wWWorkM"), nullptr, F_(wWWorkM), F_(min), json); + create_value_json(root, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); + create_value_json(root, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); + create_value_json(root, F("wWDisinfectionTemp"), nullptr, F_(wWDisinfectionTemp), F_(degrees), json); + create_value_json(root, F("wWType"), nullptr, F_(wWType), nullptr, json); + create_value_json(root, F("wWChargeType"), nullptr, F_(wWChargeType), nullptr, json); + create_value_json(root, F("wWCircPump"), nullptr, F_(wWCircPump), nullptr, json); + create_value_json(root, F("wWCircPumpMode"), nullptr, F_(wWCircPumpMode), nullptr, json); + create_value_json(root, F("wWCirc"), nullptr, F_(wWCirc), nullptr, json); + create_value_json(root, F("wWCurTemp"), nullptr, F_(wWCurTemp), F_(degrees), json); + create_value_json(root, F("wWCurTemp2"), nullptr, F_(wWCurTemp2), F_(degrees), json); + create_value_json(root, F("wWCurFlow"), nullptr, F_(wWCurFlow), F("l/min"), json); + create_value_json(root, F("wwStorageTemp1"), nullptr, F_(wwStorageTemp1), F_(degrees), json); + create_value_json(root, F("wwStorageTemp2"), nullptr, F_(wwStorageTemp2), F_(degrees), json); + create_value_json(root, F("exhaustTemp"), nullptr, F_(exhaustTemp), F_(degrees), json); + create_value_json(root, F("wWActivated"), nullptr, F_(wWActivated), nullptr, json); + create_value_json(root, F("wWOneTime"), nullptr, F_(wWOneTime), nullptr, json); + create_value_json(root, F("wWDisinfecting"), nullptr, F_(wWDisinfecting), nullptr, json); + create_value_json(root, F("wWCharging"), nullptr, F_(wWCharging), nullptr, json); + create_value_json(root, F("wWRecharging"), nullptr, F_(wWRecharging), nullptr, json); + create_value_json(root, F("wWTempOK"), nullptr, F_(wWTempOK), nullptr, json); + create_value_json(root, F("wWActive"), nullptr, F_(wWActive), nullptr, json); + create_value_json(root, F("wWHeat"), nullptr, F_(wWHeat), nullptr, json); + create_value_json(root, F("wWSetPumpPower"), nullptr, F_(wWSetPumpPower), F_(percent), json); + create_value_json(root, F("wwMixTemperature"), nullptr, F_(wwMixTemperature), F_(degrees), json); + create_value_json(root, F("wwBufferTemperature"), nullptr, F_(wwBufferTemperature), F_(degrees), json); + create_value_json(root, F("wWStarts"), nullptr, F_(wWStarts), nullptr, json); + create_value_json(root, F("wWWorkM"), nullptr, F_(wWWorkM), F_(min), json); + + create_value_json(root, F("wWWorkMtxt"), nullptr, F_(wWWorkMtxt), nullptr, json); } bool Boiler::export_values(JsonObject & json) { @@ -280,11 +286,11 @@ bool Boiler::export_values_ww(JsonObject & json) { // Warm Water comfort setting if (Helpers::hasValue(wWComfort_)) { if (wWComfort_ == 0x00) { - json["wWComfort"] = F("Hot"); + json["wWComfort"] = FJSON("Hot"); } else if (wWComfort_ == 0xD8) { - json["wWComfort"] = F("Eco"); + json["wWComfort"] = FJSON("Eco"); } else if (wWComfort_ == 0xEC) { - json["wWComfort"] = F("Intelligent"); + json["wWComfort"] = FJSON("Intelligent"); } } @@ -305,20 +311,20 @@ bool Boiler::export_values_ww(JsonObject & json) { // Warm Water type if (wWType_ == 0) { // no json if not set - json["wWType"] = F("off"); + json["wWType"] = FJSON("off"); } else if (wWType_ == 1) { - json["wWType"] = F("flow"); + json["wWType"] = FJSON("flow"); } else if (wWType_ == 2) { - json["wWType"] = F("buffered flow"); + json["wWType"] = FJSON("buffered flow"); } else if (wWType_ == 3) { - json["wWType"] = F("buffer"); + json["wWType"] = FJSON("buffer"); } else if (wWType_ == 4) { - json["wWType"] = F("layered buffer"); + json["wWType"] = FJSON("layered buffer"); } // Warm Water charging type if (Helpers::hasValue(wWChargeType_, EMS_VALUE_BOOL)) { - json["wWChargeType"] = wWChargeType_ ? F("3-way valve") : F("charge pump"); + json["wWChargeType"] = wWChargeType_ ? FJSON("3-way valve") : FJSON("charge pump"); } // Warm Water circulation pump available bool @@ -329,7 +335,7 @@ bool Boiler::export_values_ww(JsonObject & json) { // Warm Water circulation pump freq if (Helpers::hasValue(wWCircPumpMode_)) { if (wWCircPumpMode_ == 7) { - json["wWCircPumpMode"] = F("continuous"); + json["wWCircPumpMode"] = FJSON("continuous"); } else { char s[7]; char buffer[2]; @@ -434,6 +440,8 @@ bool Boiler::export_values_ww(JsonObject & json) { // Warm Water active time if (Helpers::hasValue(wWWorkM_)) { json["wWWorkM"] = wWWorkM_; + char slong[40]; + json["wWWorkMtxt"] = Helpers::render_value(slong, wWWorkM_, EMS_VALUE_TIME); // Warm Water active time (full text) } return (json.size()); @@ -594,11 +602,7 @@ bool Boiler::export_values_main(JsonObject & json) { json["setFlowTemp"] = setFlowTemp_; } - // Total UBA working time - if (Helpers::hasValue(UBAuptime_)) { - json["UBAuptime"] = UBAuptime_; - } - + // burn power % if (Helpers::hasValue(setBurnPow_)) { json["setBurnPow"] = setBurnPow_; } @@ -611,15 +615,25 @@ bool Boiler::export_values_main(JsonObject & json) { // Total burner operating time if (Helpers::hasValue(burnWorkMin_)) { json["burnWorkMin"] = burnWorkMin_; + char slong[40]; + json["burnWorkMintxt"] = Helpers::render_value(slong, burnWorkMin_, EMS_VALUE_TIME); } // Total heat operating time if (Helpers::hasValue(heatWorkMin_)) { json["heatWorkMin"] = heatWorkMin_; + char slong[40]; + json["heatWorkMintxt"] = Helpers::render_value(slong, heatWorkMin_, EMS_VALUE_TIME); + } + + // Total UBA working time + if (Helpers::hasValue(UBAuptime_)) { + json["UBAuptime"] = UBAuptime_; + char slong[40]; + json["UBAuptimetxt"] = Helpers::render_value(slong, UBAuptime_, EMS_VALUE_TIME); } - // Service Code - // Service Code Number + // Service Code & Service Code Number if (Helpers::hasValue(serviceCodeNumber_)) { json["serviceCode"] = serviceCode_; json["serviceCodeNumber"] = serviceCodeNumber_; @@ -630,7 +644,7 @@ bool Boiler::export_values_main(JsonObject & json) { } return (json.size()); -} +} // namespace emsesp // publish values via MQTT void Boiler::publish_values(JsonObject & json, bool force) { @@ -674,103 +688,6 @@ bool Boiler::updated_values() { return false; } -// print values to shell console -void Boiler::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // for showing the header - - // fetch the values into a JSON document - StaticJsonDocument doc; - JsonObject json = doc.to(); - if (!export_values_main(json)) { - return; // empty - } - - print_value_json(shell, F("heatingActive"), nullptr, F_(heatingActive), nullptr, json); - print_value_json(shell, F("tapwaterActive"), nullptr, F_(tapwaterActive), nullptr, json); - print_value_json(shell, F("serviceCode"), nullptr, F_(serviceCode), nullptr, json); - print_value_json(shell, F("serviceCodeNumber"), nullptr, F_(serviceCodeNumber), nullptr, json); - print_value_json(shell, F("lastCode"), nullptr, F_(lastCode), nullptr, json); - print_value_json(shell, F("selFlowTemp"), nullptr, F_(selFlowTemp), F_(degrees), json); - print_value_json(shell, F("selBurnPow"), nullptr, F_(selBurnPow), F_(percent), json); - print_value_json(shell, F("curBurnPow"), nullptr, F_(curBurnPow), F_(percent), json); - print_value_json(shell, F("pumpMod"), nullptr, F_(pumpMod), F_(percent), json); - print_value_json(shell, F("pumpMod2"), nullptr, F_(pumpMod2), F_(percent), json); - print_value_json(shell, F("outdoorTemp"), nullptr, F_(outdoorTemp), F_(degrees), json); - print_value_json(shell, F("curFlowTemp"), nullptr, F_(curFlowTemp), F_(degrees), json); - print_value_json(shell, F("retTemp"), nullptr, F_(retTemp), F_(degrees), json); - print_value_json(shell, F("switchTemp"), nullptr, F_(switchTemp), F_(degrees), json); - print_value_json(shell, F("sysPress"), nullptr, F_(sysPress), nullptr, json); - print_value_json(shell, F("boilTemp"), nullptr, F_(boilTemp), F_(degrees), json); - print_value_json(shell, F("exhaustTemp"), nullptr, F_(exhaustTemp), F_(degrees), json); - print_value_json(shell, F("burnGas"), nullptr, F_(burnGas), nullptr, json); - print_value_json(shell, F("flameCurr"), nullptr, F_(flameCurr), F_(uA), json); - print_value_json(shell, F("heatPump"), nullptr, F_(heatPump), nullptr, json); - print_value_json(shell, F("fanWork"), nullptr, F_(fanWork), nullptr, json); - print_value_json(shell, F("ignWork"), nullptr, F_(ignWork), nullptr, json); - print_value_json(shell, F("heatingActivated"), nullptr, F_(heatingActivated), nullptr, json); - print_value_json(shell, F("heatingTemp"), nullptr, F_(heatingTemp), F_(degrees), json); - print_value_json(shell, F("pumpModMax"), nullptr, F_(pumpModMax), F_(percent), json); - print_value_json(shell, F("pumpModMin"), nullptr, F_(pumpModMin), F_(percent), json); - print_value_json(shell, F("pumpDelay"), nullptr, F_(pumpDelay), F_(min), json); - print_value_json(shell, F("burnMinPeriod"), nullptr, F_(burnMinPeriod), F_(min), json); - print_value_json(shell, F("burnMinPower"), nullptr, F_(burnMinPower), F_(percent), json); - print_value_json(shell, F("burnMaxPower"), nullptr, F_(burnMaxPower), F_(percent), json); - print_value_json(shell, F("boilHystOn"), nullptr, F_(boilHystOn), F_(degrees), json); - print_value_json(shell, F("boilHystOff"), nullptr, F_(boilHystOff), F_(degrees), json); - print_value_json(shell, F("setFlowTemp"), nullptr, F_(setFlowTemp), F_(degrees), json); - print_value_json(shell, F("setBurnPow"), nullptr, F_(setBurnPow), F_(percent), json); - print_value_json(shell, F("burnStarts"), nullptr, F_(burnStarts), nullptr, json); - - if (Helpers::hasValue(burnWorkMin_)) { - shell.printfln(F(" Total burner operating time: %d days %d hours %d minutes"), burnWorkMin_ / 1440, (burnWorkMin_ % 1440) / 60, burnWorkMin_ % 60); - } - if (Helpers::hasValue(heatWorkMin_)) { - shell.printfln(F(" Total heat operating time: %d days %d hours %d minutes"), heatWorkMin_ / 1440, (heatWorkMin_ % 1440) / 60, heatWorkMin_ % 60); - } - if (Helpers::hasValue(UBAuptime_)) { - shell.printfln(F(" Total UBA working time: %d days %d hours %d minutes"), UBAuptime_ / 1440, (UBAuptime_ % 1440) / 60, UBAuptime_ % 60); - } - - doc.clear(); - if (!export_values_ww(json)) { // append ww values - shell.println(); - return; - } - - // ww - print_value_json(shell, F("wWSelTemp"), nullptr, F_(wWSelTemp), F_(degrees), json); - print_value_json(shell, F("wWSetTemp"), nullptr, F_(wWSetTemp), F_(degrees), json); - print_value_json(shell, F("wWDisinfectionTemp"), nullptr, F_(wWDisinfectionTemp), F_(degrees), json); - print_value_json(shell, F("wWType"), nullptr, F_(wWType), nullptr, json); - print_value_json(shell, F("wWChargeType"), nullptr, F_(wWChargeType), nullptr, json); - print_value_json(shell, F("wWCircPump"), nullptr, F_(wWCircPump), nullptr, json); - print_value_json(shell, F("wWCircPumpMode"), nullptr, F_(wWCircPumpMode), nullptr, json); - print_value_json(shell, F("wWCirc"), nullptr, F_(wWCirc), nullptr, json); - print_value_json(shell, F("wWCurTemp"), nullptr, F_(wWCurTemp), F_(degrees), json); - print_value_json(shell, F("wWCurTemp2"), nullptr, F_(wWCurTemp2), F_(degrees), json); - print_value_json(shell, F("wWCurFlow"), nullptr, F_(wWCurFlow), F("l/min"), json); - print_value_json(shell, F("wwStorageTemp1"), nullptr, F_(wwStorageTemp1), F_(degrees), json); - print_value_json(shell, F("wwStorageTemp2"), nullptr, F_(wwStorageTemp2), F_(degrees), json); - print_value_json(shell, F("wWActivated"), nullptr, F_(wWActivated), nullptr, json); - print_value_json(shell, F("wWOneTime"), nullptr, F_(wWOneTime), nullptr, json); - print_value_json(shell, F("wWDisinfecting"), nullptr, F_(wWDisinfecting), nullptr, json); - print_value_json(shell, F("wWCharging"), nullptr, F_(wWCharging), nullptr, json); - print_value_json(shell, F("wWRecharging"), nullptr, F_(wWRecharging), nullptr, json); - print_value_json(shell, F("wWTempOK"), nullptr, F_(wWTempOK), nullptr, json); - print_value_json(shell, F("wWActive"), nullptr, F_(wWActive), nullptr, json); - print_value_json(shell, F("wWHeat"), nullptr, F_(wWHeat), nullptr, json); - print_value_json(shell, F("wWSetPumpPower"), nullptr, F_(wWSetPumpPower), F_(percent), json); - print_value_json(shell, F("wwMixTemperature"), nullptr, F_(wwMixTemperature), F_(degrees), json); - print_value_json(shell, F("wwBufferTemperature"), nullptr, F_(wwBufferTemperature), F_(degrees), json); - print_value_json(shell, F("wWStarts"), nullptr, F_(wWStarts), nullptr, json); - - if (Helpers::hasValue(wWWorkM_)) { - shell.printfln(F(" Warm Water active time: %d days %d hours %d minutes"), wWWorkM_ / 1440, (wWWorkM_ % 1440) / 60, wWWorkM_ % 60); - } - - shell.println(); -} - /* * Check if hot tap water or heating is active * If a value has changed, post it immediately to MQTT so we get real time data diff --git a/src/devices/boiler.h b/src/devices/boiler.h index b8e9938e..a153d63e 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -38,7 +38,6 @@ class Boiler : public EMSdevice { public: Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/connect.cpp b/src/devices/connect.cpp index 25937441..401f08aa 100644 --- a/src/devices/connect.cpp +++ b/src/devices/connect.cpp @@ -31,11 +31,6 @@ Connect::Connect(uint8_t device_type, uint8_t device_id, uint8_t product_id, con void Connect::device_info_web(JsonArray & root) { } -// display all values into the shell console -void Connect::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header -} - // publish values via MQTT void Connect::publish_values(JsonObject & json, bool force) { } diff --git a/src/devices/connect.h b/src/devices/connect.h index aeffe084..40991315 100644 --- a/src/devices/connect.h +++ b/src/devices/connect.h @@ -35,7 +35,6 @@ class Connect : public EMSdevice { public: Connect(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/controller.cpp b/src/devices/controller.cpp index 4899d5cb..7acc5460 100644 --- a/src/devices/controller.cpp +++ b/src/devices/controller.cpp @@ -31,11 +31,6 @@ Controller::Controller(uint8_t device_type, uint8_t device_id, uint8_t product_i void Controller::device_info_web(JsonArray & root) { } -// display all values into the shell console -void Controller::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header -} - // publish values via MQTT void Controller::publish_values(JsonObject & json, bool force) { } diff --git a/src/devices/controller.h b/src/devices/controller.h index 1432414c..1db0222a 100644 --- a/src/devices/controller.h +++ b/src/devices/controller.h @@ -35,7 +35,6 @@ class Controller : public EMSdevice { public: Controller(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/gateway.cpp b/src/devices/gateway.cpp index 0ee3f441..9a0827f1 100644 --- a/src/devices/gateway.cpp +++ b/src/devices/gateway.cpp @@ -31,11 +31,6 @@ Gateway::Gateway(uint8_t device_type, uint8_t device_id, uint8_t product_id, con void Gateway::device_info_web(JsonArray & root) { } -// display all values into the shell console -void Gateway::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header -} - // publish values via MQTT void Gateway::publish_values(JsonObject & json, bool force) { } diff --git a/src/devices/gateway.h b/src/devices/gateway.h index 46d54ddb..92563e00 100644 --- a/src/devices/gateway.h +++ b/src/devices/gateway.h @@ -35,7 +35,6 @@ class Gateway : public EMSdevice { public: Gateway(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/generic.cpp b/src/devices/generic.cpp index a212677d..749c01ed 100644 --- a/src/devices/generic.cpp +++ b/src/devices/generic.cpp @@ -31,11 +31,6 @@ Generic::Generic(uint8_t device_type, uint8_t device_id, uint8_t product_id, con void Generic::device_info_web(JsonArray & root) { } -// display all values into the shell console -void Generic::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header -} - // publish values via MQTT void Generic::publish_values(JsonObject & json, bool force) { } diff --git a/src/devices/generic.h b/src/devices/generic.h index 18be62e6..4762bd9c 100644 --- a/src/devices/generic.h +++ b/src/devices/generic.h @@ -35,7 +35,6 @@ class Generic : public EMSdevice { public: Generic(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index 2fa66fab..67b53e4f 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -55,23 +55,8 @@ void Heatpump::device_info_web(JsonArray & root) { return; // empty } - print_value_json(root, F("airHumidity"), nullptr, F_(airHumidity), F_(percent), json); - print_value_json(root, F("dewTemperature"), nullptr, F_(dewTemperature), F_(degrees), json); -} - -// display all values into the shell console -void Heatpump::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header - - // fetch the values into a JSON document - StaticJsonDocument doc; - JsonObject json = doc.to(); - if (!export_values(json)) { - return; // empty - } - - print_value_json(shell, F("airHumidity"), nullptr, F_(airHumidity), F_(percent), json); - print_value_json(shell, F("dewTemperature"), nullptr, F_(dewTemperature), F_(degrees), json); + create_value_json(root, F("airHumidity"), nullptr, F_(airHumidity), F_(percent), json); + create_value_json(root, F("dewTemperature"), nullptr, F_(dewTemperature), F_(degrees), json); } // publish values via MQTT @@ -106,10 +91,10 @@ void Heatpump::register_mqtt_ha_config() { snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/heatpump_data"), System::hostname().c_str()); doc["stat_t"] = stat_t; - doc["val_tpl"] = F("{{value_json.airHumidity}}"); + doc["val_tpl"] = FJSON("{{value_json.airHumidity}}"); JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP Heat Pump"); + dev["name"] = FJSON("EMS-ESP Heat Pump"); dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = this->name(); diff --git a/src/devices/heatpump.h b/src/devices/heatpump.h index 2f453523..6685df54 100644 --- a/src/devices/heatpump.h +++ b/src/devices/heatpump.h @@ -36,7 +36,6 @@ class Heatpump : public EMSdevice { public: Heatpump(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index 9a8aaa68..d3c2c6a0 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -72,15 +72,15 @@ void Mixer::device_info_web(JsonArray & root) { char prefix_str[10]; if (type() == Type::HC) { snprintf_P(prefix_str, sizeof(prefix_str), PSTR("(hc %d) "), hc_); - print_value_json(root, F("flowTemp"), FPSTR(prefix_str), F_(flowTemp), F_(degrees), json); - print_value_json(root, F("flowSetTemp"), FPSTR(prefix_str), F_(flowSetTemp), F_(degrees), json); - print_value_json(root, F("pumpStatus"), FPSTR(prefix_str), F_(pumpStatus), nullptr, json); - print_value_json(root, F("valveStatus"), FPSTR(prefix_str), F_(valveStatus), F_(percent), json); + create_value_json(root, F("flowTemp"), FPSTR(prefix_str), F_(flowTemp), F_(degrees), json); + create_value_json(root, F("flowSetTemp"), FPSTR(prefix_str), F_(flowSetTemp), F_(degrees), json); + create_value_json(root, F("pumpStatus"), FPSTR(prefix_str), F_(pumpStatus), nullptr, json); + create_value_json(root, F("valveStatus"), FPSTR(prefix_str), F_(valveStatus), F_(percent), json); } else { snprintf_P(prefix_str, sizeof(prefix_str), PSTR("(wwc %d) "), hc_); - print_value_json(root, F("wwTemp"), FPSTR(prefix_str), F_(wwTemp), F_(degrees), json); - print_value_json(root, F("pumpStatus"), FPSTR(prefix_str), F_(pumpStatus), nullptr, json); - print_value_json(root, F("tempStatus"), FPSTR(prefix_str), F_(tempStatus), nullptr, json); + create_value_json(root, F("wwTemp"), FPSTR(prefix_str), F_(wwTemp), F_(degrees), json); + create_value_json(root, F("pumpStatus"), FPSTR(prefix_str), F_(pumpStatus), nullptr, json); + create_value_json(root, F("tempStatus"), FPSTR(prefix_str), F_(tempStatus), nullptr, json); } } @@ -93,38 +93,6 @@ bool Mixer::updated_values() { return false; } -// display all values into the shell console -void Mixer::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header - - if (type() == Type::NONE) { - return; // don't have any values yet - } - - // fetch the values into a JSON document - StaticJsonDocument doc; - JsonObject json = doc.to(); - - if (!export_values_format(Mqtt::Format::SINGLE, json)) { - return; // empty - } - - if (type() == Type::HC) { - shell.printfln(F_(hc), hc_); - print_value_json(shell, F("flowTemp"), F_(2spaces), F_(flowTemp), F_(degrees), json); - print_value_json(shell, F("flowSetTemp"), F_(2spaces), F_(flowSetTemp), F_(degrees), json); - print_value_json(shell, F("pumpStatus"), F_(2spaces), F_(pumpStatus), nullptr, json); - print_value_json(shell, F("valveStatus"), F_(2spaces), F_(valveStatus), F_(percent), json); - } else { - shell.printfln(F_(ww_hc), hc_); - print_value_json(shell, F("wwTemp"), F_(2spaces), F_(wwTemp), F_(degrees), json); - print_value_json(shell, F("pumpStatus"), F_(2spaces), F_(pumpStatus), nullptr, json); - print_value_json(shell, F("tempStatus"), F_(2spaces), F_(tempStatus), nullptr, json); - } - - shell.println(); -} - // publish values via MQTT // topic is mixer_data void Mixer::publish_values(JsonObject & json, bool force) { @@ -176,16 +144,16 @@ void Mixer::register_mqtt_ha_config() { snprintf_P(uniq_id, sizeof(uniq_id), PSTR("mixer%02X"), device_id() - 0x20 + 1); doc["uniq_id"] = uniq_id; - doc["ic"] = F("mdi:home-thermometer-outline"); + doc["ic"] = FJSON("mdi:home-thermometer-outline"); char stat_t[50]; snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/mixer_data"), System::hostname().c_str()); doc["stat_t"] = stat_t; - doc["val_tpl"] = F("{{value_json.type}}"); // HA needs a single value. We take the type which is wwc or hc + doc["val_tpl"] = FJSON("{{value_json.type}}"); // HA needs a single value. We take the type which is wwc or hc JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP Mixer"); + dev["name"] = FJSON("EMS-ESP Mixer"); dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = this->name(); @@ -235,10 +203,10 @@ bool Mixer::export_values_format(uint8_t mqtt_format, JsonObject & json) { snprintf_P(hc_name, sizeof(hc_name), PSTR("hc%d"), hc_); if (mqtt_format == Mqtt::Format::SINGLE) { json_hc = json; - json["type"] = F("hc"); + json["type"] = FJSON("hc"); } else if (mqtt_format == Mqtt::Format::HA) { json_hc = json.createNestedObject(hc_name); - json_hc["type"] = F("hc"); + json_hc["type"] = FJSON("hc"); } else { json_hc = json.createNestedObject(hc_name); } @@ -263,10 +231,10 @@ bool Mixer::export_values_format(uint8_t mqtt_format, JsonObject & json) { snprintf_P(hc_name, sizeof(hc_name), PSTR("wwc%d"), hc_); if (mqtt_format == Mqtt::Format::SINGLE) { json_hc = json; - json["type"] = F("wwc"); + json["type"] = FJSON("wwc"); } else if (mqtt_format == Mqtt::Format::HA) { json_hc = json.createNestedObject(hc_name); - json_hc["type"] = F("wwc"); + json_hc["type"] = FJSON("wwc"); } else { json_hc = json.createNestedObject(hc_name); } diff --git a/src/devices/mixer.h b/src/devices/mixer.h index 4341b214..4ad5d044 100644 --- a/src/devices/mixer.h +++ b/src/devices/mixer.h @@ -36,7 +36,6 @@ class Mixer : public EMSdevice { public: Mixer(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index b714b0ad..154d7123 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -70,65 +70,22 @@ void Solar::device_info_web(JsonArray & root) { return; // empty } - print_value_json(root, F("collectorTemp"), nullptr, F_(collectorTemp), F_(degrees), json); - print_value_json(root, F("tankBottomTemp"), nullptr, F_(tankBottomTemp), F_(degrees), json); - print_value_json(root, F("tankBottomTemp2"), nullptr, F_(tankBottomTemp2), F_(degrees), json); - print_value_json(root, F("tank1MaxTempCurrent"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); - print_value_json(root, F("heatExchangerTemp"), nullptr, F_(heatExchangerTemp), F_(degrees), json); - print_value_json(root, F("solarPumpModulation"), nullptr, F_(solarPumpModulation), F_(percent), json); - print_value_json(root, F("cylinderPumpModulation"), nullptr, F_(cylinderPumpModulation), F_(percent), json); - print_value_json(root, F("valveStatus"), nullptr, F_(valveStatus), nullptr, json); - print_value_json(root, F("solarPump"), nullptr, F_(solarPump), nullptr, json); - print_value_json(root, F("tankHeated"), nullptr, F_(tankHeated), nullptr, json); - print_value_json(root, F("collectorShutdown"), nullptr, F_(collectorShutdown), nullptr, json); - print_value_json(root, F("energyLastHour"), nullptr, F_(energyLastHour), F_(wh), json); - print_value_json(root, F("energyToday"), nullptr, F_(energyToday), F_(wh), json); - print_value_json(root, F("energyTotal"), nullptr, F_(energyTotal), F_(kwh), json); - print_value_json(root, F("pumpWorkMin"), nullptr, F_(pumpWorkMin), F_(min), json); - - if (Helpers::hasValue(pumpWorkMin_)) { - JsonObject dataElement = root.createNestedObject(); - dataElement["n"] = F_(pumpWorkMin); - char time_str[60]; - snprintf_P(time_str, sizeof(time_str), PSTR("%d days %d hours %d minutes"), pumpWorkMin_ / 1440, (pumpWorkMin_ % 1440) / 60, pumpWorkMin_ % 60); - dataElement["v"] = time_str; - } -} - -// display all values into the shell console -void Solar::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header - - // fetch the values into a JSON document - StaticJsonDocument doc; - JsonObject json = doc.to(); - if (!export_values(json)) { - return; // empty - } - - print_value_json(shell, F("collectorTemp"), nullptr, F_(collectorTemp), F_(degrees), json); - print_value_json(shell, F("tankBottomTemp"), nullptr, F_(tankBottomTemp), F_(degrees), json); - print_value_json(shell, F("tankBottomTemp2"), nullptr, F_(tankBottomTemp2), F_(degrees), json); - print_value_json(shell, F("tank1MaxTempCurrent"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); - print_value_json(shell, F("heatExchangerTemp"), nullptr, F_(heatExchangerTemp), F_(degrees), json); - print_value_json(shell, F("solarPumpModulation"), nullptr, F_(solarPumpModulation), F_(percent), json); - print_value_json(shell, F("cylinderPumpModulation"), nullptr, F_(cylinderPumpModulation), F_(percent), json); - print_value_json(shell, F("valveStatus"), nullptr, F_(valveStatus), nullptr, json); - print_value_json(shell, F("solarPump"), nullptr, F_(solarPump), nullptr, json); - print_value_json(shell, F("tankHeated"), nullptr, F_(tankHeated), nullptr, json); - print_value_json(shell, F("collectorShutdown"), nullptr, F_(collectorShutdown), nullptr, json); - print_value_json(shell, F("energyLastHour"), nullptr, F_(energyLastHour), F_(wh), json); - print_value_json(shell, F("energyToday"), nullptr, F_(energyToday), F_(wh), json); - print_value_json(shell, F("energyTotal"), nullptr, F_(energyTotal), F_(kwh), json); - print_value_json(shell, F("pumpWorkMin"), nullptr, F_(pumpWorkMin), F_(min), json); - - if (Helpers::hasValue(pumpWorkMin_)) { - shell.printfln(F(" %s: %d days %d hours %d minutes"), - uuid::read_flash_string(F_(pumpWorkMin)).c_str(), - pumpWorkMin_ / 1440, - (pumpWorkMin_ % 1440) / 60, - pumpWorkMin_ % 60); - } + create_value_json(root, F("collectorTemp"), nullptr, F_(collectorTemp), F_(degrees), json); + create_value_json(root, F("tankBottomTemp"), nullptr, F_(tankBottomTemp), F_(degrees), json); + create_value_json(root, F("tankBottomTemp2"), nullptr, F_(tankBottomTemp2), F_(degrees), json); + create_value_json(root, F("tank1MaxTempCurrent"), nullptr, F_(tank1MaxTempCurrent), F_(degrees), json); + create_value_json(root, F("heatExchangerTemp"), nullptr, F_(heatExchangerTemp), F_(degrees), json); + create_value_json(root, F("solarPumpModulation"), nullptr, F_(solarPumpModulation), F_(percent), json); + create_value_json(root, F("cylinderPumpModulation"), nullptr, F_(cylinderPumpModulation), F_(percent), json); + create_value_json(root, F("valveStatus"), nullptr, F_(valveStatus), nullptr, json); + create_value_json(root, F("solarPump"), nullptr, F_(solarPump), nullptr, json); + create_value_json(root, F("tankHeated"), nullptr, F_(tankHeated), nullptr, json); + create_value_json(root, F("collectorShutdown"), nullptr, F_(collectorShutdown), nullptr, json); + create_value_json(root, F("energyLastHour"), nullptr, F_(energyLastHour), F_(wh), json); + create_value_json(root, F("energyToday"), nullptr, F_(energyToday), F_(wh), json); + create_value_json(root, F("energyTotal"), nullptr, F_(energyTotal), F_(kwh), json); + create_value_json(root, F("pumpWorkMin"), nullptr, F_(pumpWorkMin), F_(min), json); + create_value_json(root, F("pumpWorkMintxt"), nullptr, F_(pumpWorkMintxt), F_(min), json); } // publish values via MQTT @@ -168,9 +125,9 @@ void Solar::register_mqtt_ha_config() { snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/solar_data"), System::hostname().c_str()); doc["stat_t"] = stat_t; - doc["val_tpl"] = F("{{value_json.solarPump}}"); + doc["val_tpl"] = FJSON("{{value_json.solarPump}}"); JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP Solar"); + dev["name"] = FJSON("EMS-ESP Solar"); dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = name(); @@ -240,6 +197,8 @@ bool Solar::export_values(JsonObject & json) { if (Helpers::hasValue(pumpWorkMin_)) { json["pumpWorkMin"] = pumpWorkMin_; + char slong[40]; + json["pumpWorkMintxt"] = Helpers::render_value(slong, pumpWorkMin_, EMS_VALUE_TIME); } if (Helpers::hasValue(tankHeated_, EMS_VALUE_BOOL)) { diff --git a/src/devices/solar.h b/src/devices/solar.h index 00324777..33b54c5a 100644 --- a/src/devices/solar.h +++ b/src/devices/solar.h @@ -36,7 +36,6 @@ class Solar : public EMSdevice { public: Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index 8c40e8dd..e0d3ac5d 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -39,20 +39,9 @@ void Switch::device_info_web(JsonArray & root) { StaticJsonDocument doc; JsonObject json = doc.to(); if (export_values(json)) { - print_value_json(root, F("activated"), nullptr, F_(activated), nullptr, json); - print_value_json(root, F("flowTemp"), nullptr, F_(flowTemp), F_(degrees), json); - print_value_json(root, F("status"), nullptr, F_(status), nullptr, json); - } -} - -// display all values into the shell console -void Switch::show_values(uuid::console::Shell & shell) { - StaticJsonDocument doc; - JsonObject json = doc.to(); - if (export_values(json)) { - print_value_json(shell, F("activated"), nullptr, F_(activated), nullptr, json); - print_value_json(shell, F("flowTemp"), F_(2spaces), F_(flowTemp), F_(degrees), json); - print_value_json(shell, F("status"), nullptr, F_(status), nullptr, json); + create_value_json(root, F("activated"), nullptr, F_(activated), nullptr, json); + create_value_json(root, F("flowTemp"), nullptr, F_(flowTemp), F_(degrees), json); + create_value_json(root, F("status"), nullptr, F_(status), nullptr, json); } } @@ -121,16 +110,16 @@ void Switch::register_mqtt_ha_config() { snprintf_P(uniq_id, sizeof(uniq_id), PSTR("switch")); doc["uniq_id"] = uniq_id; - doc["ic"] = F("mdi:home-thermometer-outline"); + doc["ic"] = FJSON("mdi:home-thermometer-outline"); char stat_t[50]; snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/switch_data"), System::hostname().c_str()); doc["stat_t"] = stat_t; - doc["val_tpl"] = F("{{value_json.type}}"); // HA needs a single value. We take the type which is wwc or hc + doc["val_tpl"] = FJSON("{{value_json.type}}"); // HA needs a single value. We take the type which is wwc or hc JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP Switch"); + dev["name"] = FJSON("EMS-ESP Switch"); dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = this->name(); diff --git a/src/devices/switch.h b/src/devices/switch.h index d11b7f3f..c5c82617 100644 --- a/src/devices/switch.h +++ b/src/devices/switch.h @@ -36,7 +36,6 @@ class Switch : public EMSdevice { public: Switch(uint8_t device_type, uint8_t device_id, uint8_t product_id, const std::string & version, const std::string & name, uint8_t flags, uint8_t brand); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 3680be4b..36536766 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -185,25 +185,25 @@ void Thermostat::device_info_web(JsonArray & root) { StaticJsonDocument doc; JsonObject json_main = doc.to(); if (export_values_main(json_main)) { - print_value_json(root, F("time"), nullptr, F_(time), nullptr, json_main); - print_value_json(root, F("errorcode"), nullptr, F_(error), nullptr, json_main); - print_value_json(root, F("lastcode"), nullptr, F_(lastCode), nullptr, json_main); - print_value_json(root, F("display"), nullptr, F_(display), nullptr, json_main); - print_value_json(root, F("language"), nullptr, F_(language), nullptr, json_main); - print_value_json(root, F("offsetclock"), nullptr, F_(offsetclock), nullptr, json_main); - print_value_json(root, F("dampedtemp"), nullptr, F_(dampedtemp), F_(degrees), json_main); - print_value_json(root, F("inttemp1"), nullptr, F_(inttemp1), F_(degrees), json_main); - print_value_json(root, F("inttemp2"), nullptr, F_(inttemp2), F_(degrees), json_main); - print_value_json(root, F("intoffset"), nullptr, F_(intoffset), nullptr, json_main); - print_value_json(root, F("minexttemp"), nullptr, F_(minexttemp), F_(degrees), json_main); - print_value_json(root, F("building"), nullptr, F_(building), nullptr, json_main); - print_value_json(root, F("floordry"), nullptr, F_(floordry), nullptr, json_main); - print_value_json(root, F("floordrytemp"), nullptr, F_(floordrytemp), F_(degrees), json_main); - print_value_json(root, F("wwmode"), nullptr, F_(wwmode), nullptr, json_main); - print_value_json(root, F("wwtemp"), nullptr, F_(wwtemp), nullptr, json_main); - print_value_json(root, F("wwtemplow"), nullptr, F_(wwtemplow), nullptr, json_main); - print_value_json(root, F("wwextra1"), nullptr, F_(wwextra1), nullptr, json_main); - print_value_json(root, F("wwcircmode"), nullptr, F_(wwcircmode), nullptr, json_main); + create_value_json(root, F("time"), nullptr, F_(time), nullptr, json_main); + create_value_json(root, F("errorcode"), nullptr, F_(error), nullptr, json_main); + create_value_json(root, F("lastcode"), nullptr, F_(lastCode), nullptr, json_main); + create_value_json(root, F("display"), nullptr, F_(display), nullptr, json_main); + create_value_json(root, F("language"), nullptr, F_(language), nullptr, json_main); + create_value_json(root, F("offsetclock"), nullptr, F_(offsetclock), nullptr, json_main); + create_value_json(root, F("dampedtemp"), nullptr, F_(dampedtemp), F_(degrees), json_main); + create_value_json(root, F("inttemp1"), nullptr, F_(inttemp1), F_(degrees), json_main); + create_value_json(root, F("inttemp2"), nullptr, F_(inttemp2), F_(degrees), json_main); + create_value_json(root, F("intoffset"), nullptr, F_(intoffset), nullptr, json_main); + create_value_json(root, F("minexttemp"), nullptr, F_(minexttemp), F_(degrees), json_main); + create_value_json(root, F("building"), nullptr, F_(building), nullptr, json_main); + create_value_json(root, F("floordry"), nullptr, F_(floordry), nullptr, json_main); + create_value_json(root, F("floordrytemp"), nullptr, F_(floordrytemp), F_(degrees), json_main); + create_value_json(root, F("wwmode"), nullptr, F_(wwmode), nullptr, json_main); + create_value_json(root, F("wwtemp"), nullptr, F_(wwtemp), nullptr, json_main); + create_value_json(root, F("wwtemplow"), nullptr, F_(wwtemplow), nullptr, json_main); + create_value_json(root, F("wwextra1"), nullptr, F_(wwextra1), nullptr, json_main); + create_value_json(root, F("wwcircmode"), nullptr, F_(wwcircmode), nullptr, json_main); } doc.clear(); JsonObject json_hc = doc.to(); @@ -218,28 +218,28 @@ void Thermostat::device_info_web(JsonArray & root) { snprintf_P(prefix_str, sizeof(prefix_str), PSTR("(hc %d) "), hc->hc_num()); - print_value_json(root, F("seltemp"), FPSTR(prefix_str), F_(seltemp), F_(degrees), json); - print_value_json(root, F("currtemp"), FPSTR(prefix_str), F_(currtemp), F_(degrees), json); - print_value_json(root, F("heattemp"), FPSTR(prefix_str), F_(heattemp), F_(degrees), json); - print_value_json(root, F("comforttemp"), FPSTR(prefix_str), F_(comforttemp), F_(degrees), json); - print_value_json(root, F("daytemp"), FPSTR(prefix_str), F_(daytemp), F_(degrees), json); - print_value_json(root, F("ecotemp"), FPSTR(prefix_str), F_(ecotemp), F_(degrees), json); - print_value_json(root, F("nighttemp"), FPSTR(prefix_str), F_(nighttemp), F_(degrees), json); - print_value_json(root, F("manualtemp"), FPSTR(prefix_str), F_(manualtemp), F_(degrees), json); - print_value_json(root, F("holidaytemp"), FPSTR(prefix_str), F_(holidaytemp), F_(degrees), json); - print_value_json(root, F("nofrosttemp"), FPSTR(prefix_str), F_(nofrosttemp), F_(degrees), json); - print_value_json(root, F("heatingtype"), FPSTR(prefix_str), F_(heatingtype), nullptr, json); - print_value_json(root, F("targetflowtemp"), FPSTR(prefix_str), F_(targetflowtemp), F_(degrees), json); - print_value_json(root, F("offsettemp"), FPSTR(prefix_str), F_(offsettemp), F_(degrees), json); - print_value_json(root, F("designtemp"), FPSTR(prefix_str), F_(designtemp), F_(degrees), json); - print_value_json(root, F("roominfluence"), FPSTR(prefix_str), F_(roominfluence), F_(degrees), json); - print_value_json(root, F("flowtempoffset"), FPSTR(prefix_str), F_(flowtempoffset), F_(degrees), json); - print_value_json(root, F("minflowtemp"), FPSTR(prefix_str), F_(minflowtemp), F_(degrees), json); - print_value_json(root, F("maxflowtemp"), FPSTR(prefix_str), F_(maxflowtemp), F_(degrees), json); - print_value_json(root, F("summertemp"), FPSTR(prefix_str), F_(summertemp), F_(degrees), json); - print_value_json(root, F("summermode"), FPSTR(prefix_str), F_(summermode), F_(degrees), json); - print_value_json(root, F("mode"), FPSTR(prefix_str), F_(mode), nullptr, json); - print_value_json(root, F("modetype"), FPSTR(prefix_str), F_(modetype), nullptr, json); + create_value_json(root, F("seltemp"), FPSTR(prefix_str), F_(seltemp), F_(degrees), json); + create_value_json(root, F("currtemp"), FPSTR(prefix_str), F_(currtemp), F_(degrees), json); + create_value_json(root, F("heattemp"), FPSTR(prefix_str), F_(heattemp), F_(degrees), json); + create_value_json(root, F("comforttemp"), FPSTR(prefix_str), F_(comforttemp), F_(degrees), json); + create_value_json(root, F("daytemp"), FPSTR(prefix_str), F_(daytemp), F_(degrees), json); + create_value_json(root, F("ecotemp"), FPSTR(prefix_str), F_(ecotemp), F_(degrees), json); + create_value_json(root, F("nighttemp"), FPSTR(prefix_str), F_(nighttemp), F_(degrees), json); + create_value_json(root, F("manualtemp"), FPSTR(prefix_str), F_(manualtemp), F_(degrees), json); + create_value_json(root, F("holidaytemp"), FPSTR(prefix_str), F_(holidaytemp), F_(degrees), json); + create_value_json(root, F("nofrosttemp"), FPSTR(prefix_str), F_(nofrosttemp), F_(degrees), json); + create_value_json(root, F("heatingtype"), FPSTR(prefix_str), F_(heatingtype), nullptr, json); + create_value_json(root, F("targetflowtemp"), FPSTR(prefix_str), F_(targetflowtemp), F_(degrees), json); + create_value_json(root, F("offsettemp"), FPSTR(prefix_str), F_(offsettemp), F_(degrees), json); + create_value_json(root, F("designtemp"), FPSTR(prefix_str), F_(designtemp), F_(degrees), json); + create_value_json(root, F("roominfluence"), FPSTR(prefix_str), F_(roominfluence), F_(degrees), json); + create_value_json(root, F("flowtempoffset"), FPSTR(prefix_str), F_(flowtempoffset), F_(degrees), json); + create_value_json(root, F("minflowtemp"), FPSTR(prefix_str), F_(minflowtemp), F_(degrees), json); + create_value_json(root, F("maxflowtemp"), FPSTR(prefix_str), F_(maxflowtemp), F_(degrees), json); + create_value_json(root, F("summertemp"), FPSTR(prefix_str), F_(summertemp), F_(degrees), json); + create_value_json(root, F("summermode"), FPSTR(prefix_str), F_(summermode), F_(degrees), json); + create_value_json(root, F("mode"), FPSTR(prefix_str), F_(mode), nullptr, json); + create_value_json(root, F("modetype"), FPSTR(prefix_str), F_(modetype), nullptr, json); } } } @@ -265,75 +265,6 @@ bool Thermostat::export_values(JsonObject & json) { return has_value; } -// display all thermostat values into the shell console -void Thermostat::show_values(uuid::console::Shell & shell) { - EMSdevice::show_values(shell); // always call this to show header - - StaticJsonDocument doc; - JsonObject json_main = doc.to(); - if (export_values_main(json_main)) { - print_value_json(shell, F("time"), nullptr, F_(time), nullptr, json_main); - print_value_json(shell, F("errorcode"), nullptr, F_(error), nullptr, json_main); - print_value_json(shell, F("lastcode"), nullptr, F_(lastCode), nullptr, json_main); - print_value_json(shell, F("display"), nullptr, F_(display), nullptr, json_main); - print_value_json(shell, F("language"), nullptr, F_(language), nullptr, json_main); - print_value_json(shell, F("offsetclock"), nullptr, F_(offsetclock), nullptr, json_main); - print_value_json(shell, F("dampedtemp"), nullptr, F_(dampedtemp), F_(degrees), json_main); - print_value_json(shell, F("inttemp1"), nullptr, F_(inttemp1), F_(degrees), json_main); - print_value_json(shell, F("inttemp2"), nullptr, F_(inttemp2), F_(degrees), json_main); - print_value_json(shell, F("intoffset"), nullptr, F_(intoffset), nullptr, json_main); - print_value_json(shell, F("minexttemp"), nullptr, F_(minexttemp), F_(degrees), json_main); - print_value_json(shell, F("building"), nullptr, F_(building), nullptr, json_main); - print_value_json(shell, F("floordry"), nullptr, F_(floordry), nullptr, json_main); - print_value_json(shell, F("floordrytemp"), nullptr, F_(floordrytemp), F_(degrees), json_main); - print_value_json(shell, F("wwmode"), nullptr, F_(wwmode), nullptr, json_main); - print_value_json(shell, F("wwtemp"), nullptr, F_(wwtemp), nullptr, json_main); - print_value_json(shell, F("wwtemplow"), nullptr, F_(wwtemplow), nullptr, json_main); - print_value_json(shell, F("wwextra1"), nullptr, F_(wwextra1), nullptr, json_main); - print_value_json(shell, F("wwcircmode"), nullptr, F_(wwcircmode), nullptr, json_main); - } - - doc.clear(); // reuse the doc - JsonObject json_hc = doc.to(); - // e.g. {"hc1":{"seltemp":849.4,"currtemp":819.2,"mode":"unknown","modetype":"day"},"hc2":{"seltemp":875.1,"currtemp":409.6,"mode":"unknown","modetype":"day"},"hc3":{"seltemp":0,"currtemp":0,"mode":"unknown","modetype":"day"}} - - if (export_values_hc(Mqtt::Format::NESTED, json_hc)) { - // display for each active heating circuit - for (const auto & hc : heating_circuits_) { - if (hc->is_active()) { - shell.printfln(F_(hc), hc->hc_num()); - - char hc_name[10]; // hc{1-4} - snprintf_P(hc_name, sizeof(hc_name), PSTR("hc%d"), hc->hc_num()); - JsonObject json = json_hc[hc_name]; - - print_value_json(shell, F("seltemp"), F_(2spaces), F_(seltemp), F_(degrees), json); - print_value_json(shell, F("currtemp"), F_(2spaces), F_(currtemp), F_(degrees), json); - print_value_json(shell, F("heattemp"), F_(2spaces), F_(heattemp), F_(degrees), json); - print_value_json(shell, F("comforttemp"), F_(2spaces), F_(comforttemp), F_(degrees), json); - print_value_json(shell, F("daytemp"), F_(2spaces), F_(daytemp), F_(degrees), json); - print_value_json(shell, F("ecotemp"), F_(2spaces), F_(ecotemp), F_(degrees), json); - print_value_json(shell, F("nighttemp"), F_(2spaces), F_(nighttemp), F_(degrees), json); - print_value_json(shell, F("manualtemp"), F_(2spaces), F_(manualtemp), F_(degrees), json); - print_value_json(shell, F("holidaytemp"), F_(2spaces), F_(holidaytemp), F_(degrees), json); - print_value_json(shell, F("nofrosttemp"), F_(2spaces), F_(nofrosttemp), F_(degrees), json); - print_value_json(shell, F("targetflowtemp"), F_(2spaces), F_(targetflowtemp), F_(degrees), json); - print_value_json(shell, F("offsettemp"), F_(2spaces), F_(offsettemp), F_(degrees), json); - print_value_json(shell, F("designtemp"), F_(2spaces), F_(designtemp), F_(degrees), json); - print_value_json(shell, F("roominfluence"), F_(2spaces), F_(roominfluence), F_(degrees), json); - print_value_json(shell, F("flowtempoffset"), F_(2spaces), F_(flowtempoffset), F_(degrees), json); - print_value_json(shell, F("minflowtemp"), F_(2spaces), F_(minflowtemp), F_(degrees), json); - print_value_json(shell, F("maxflowtemp"), F_(2spaces), F_(maxflowtemp), F_(degrees), json); - print_value_json(shell, F("summertemp"), F_(2spaces), F_(summertemp), F_(degrees), json); - print_value_json(shell, F("summermode"), F_(2spaces), F_(summermode), F_(degrees), json); - print_value_json(shell, F("mode"), F_(2spaces), F_(mode), nullptr, json); - print_value_json(shell, F("modetype"), F_(2spaces), F_(modetype), nullptr, json); - } - } - } - shell.println(); -} - // publish values via MQTT void Thermostat::publish_values(JsonObject & json, bool force) { if (EMSESP::actual_master_thermostat() != device_id()) { @@ -394,36 +325,36 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { // Display if (Helpers::hasValue(ibaMainDisplay_)) { if (ibaMainDisplay_ == 0) { - rootThermostat["display"] = F("internal temperature"); + rootThermostat["display"] = FJSON("internal temperature"); } else if (ibaMainDisplay_ == 1) { - rootThermostat["display"] = F("internal setpoint"); + rootThermostat["display"] = FJSON("internal setpoint"); } else if (ibaMainDisplay_ == 2) { - rootThermostat["display"] = F("external temperature"); + rootThermostat["display"] = FJSON("external temperature"); } else if (ibaMainDisplay_ == 3) { - rootThermostat["display"] = F("burner temperature"); + rootThermostat["display"] = FJSON("burner temperature"); } else if (ibaMainDisplay_ == 4) { - rootThermostat["display"] = F("WW temperature"); + rootThermostat["display"] = FJSON("WW temperature"); } else if (ibaMainDisplay_ == 5) { - rootThermostat["display"] = F("functioning mode"); + rootThermostat["display"] = FJSON("functioning mode"); } else if (ibaMainDisplay_ == 6) { - rootThermostat["display"] = F("time"); + rootThermostat["display"] = FJSON("time"); } else if (ibaMainDisplay_ == 7) { - rootThermostat["display"] = F("date"); + rootThermostat["display"] = FJSON("date"); } else if (ibaMainDisplay_ == 8) { - rootThermostat["display"] = F("smoke temperature"); + rootThermostat["display"] = FJSON("smoke temperature"); } } // Language if (Helpers::hasValue(ibaLanguage_)) { if (ibaLanguage_ == 0) { - rootThermostat["language"] = F("German"); + rootThermostat["language"] = FJSON("German"); } else if (ibaLanguage_ == 1) { - rootThermostat["language"] = F("Dutch"); + rootThermostat["language"] = FJSON("Dutch"); } else if (ibaLanguage_ == 2) { - rootThermostat["language"] = F("French"); + rootThermostat["language"] = FJSON("French"); } else if (ibaLanguage_ == 3) { - rootThermostat["language"] = F("Italian"); + rootThermostat["language"] = FJSON("Italian"); } } @@ -687,9 +618,9 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // https://github.com/proddy/EMS-ESP/issues/373#issuecomment-619810209 // Mode Type if (Helpers::hasValue(hc->summer_mode) && hc->summer_mode) { - dataThermostat["modetype"] = F("summer"); + dataThermostat["modetype"] = FJSON("summer"); } else if (Helpers::hasValue(hc->holiday_mode) && hc->holiday_mode) { - dataThermostat["modetype"] = F("holiday"); + dataThermostat["modetype"] = FJSON("holiday"); } else if (Helpers::hasValue(hc->mode_type)) { dataThermostat["modetype"] = mode_tostring(hc->get_mode_type(model)); } @@ -867,17 +798,17 @@ std::shared_ptr Thermostat::heating_circuit(std::sha // homeassistant/sensor/ems-esp/thermostat/config void Thermostat::register_mqtt_ha_config() { StaticJsonDocument doc; - doc["uniq_id"] = F("thermostat"); - doc["ic"] = F("mdi:home-thermometer-outline"); + doc["uniq_id"] = FJSON("thermostat"); + doc["ic"] = FJSON("mdi:home-thermometer-outline"); char stat_t[50]; snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/thermostat_data"), System::hostname().c_str()); doc["stat_t"] = stat_t; - doc["name"] = F("Thermostat Status"); - doc["val_tpl"] = F("{{value_json.errorcode}}"); // default value - must have one, so we use errorcode + doc["name"] = FJSON("Thermostat Status"); + doc["val_tpl"] = FJSON("{{value_json.errorcode}}"); // default value - must have one, so we use errorcode JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP Thermostat"); + dev["name"] = FJSON("EMS-ESP Thermostat"); dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = name(); @@ -936,9 +867,9 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { doc["mode_cmd_t"] = str3; doc["temp_cmd_t"] = str3; doc["~"] = System::hostname(); // ems-esp - doc["mode_stat_t"] = "~/thermostat_data"; - doc["temp_stat_t"] = "~/thermostat_data"; - doc["curr_temp_t"] = "~/thermostat_data"; + doc["mode_stat_t"] = FJSON("~/thermostat_data"); + doc["temp_stat_t"] = FJSON("~/thermostat_data"); + doc["curr_temp_t"] = FJSON("~/thermostat_data"); char mode_str[30]; snprintf_P(mode_str, sizeof(mode_str), PSTR("{{value_json.hc%d.mode}}"), hc_num); @@ -952,9 +883,9 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { snprintf_P(currtemp_str, sizeof(currtemp_str), PSTR("{{value_json.hc%d.currtemp}}"), hc_num); doc["curr_temp_tpl"] = currtemp_str; - doc["min_temp"] = "5"; - doc["max_temp"] = "30"; - doc["temp_step"] = "0.5"; + doc["min_temp"] = FJSON("5"); + doc["max_temp"] = FJSON("30"); + doc["temp_step"] = FJSON("0.5"); // the HA climate component only responds to auto, heat and off JsonArray modes = doc.createNestedArray("modes"); @@ -963,7 +894,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { modes.add("off"); JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = "EMS-ESP Thermostat"; + dev["name"] = FJSON("EMS-ESP Thermostat"); dev["sw"] = EMSESP_APP_VERSION; dev["mf"] = brand_to_string(); dev["mdl"] = name(); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index c0560df2..e3065a07 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -121,7 +121,6 @@ class Thermostat : public EMSdevice { static std::string mode_tostring(uint8_t mode); - virtual void show_values(uuid::console::Shell & shell); virtual void publish_values(JsonObject & json, bool force); virtual bool export_values(JsonObject & json); virtual void device_info_web(JsonArray & root); diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 5466aaa5..a496cb08 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -208,11 +208,6 @@ std::string EMSdevice::to_string_short() const { return str; } -// prints the header for the section -void EMSdevice::show_values(uuid::console::Shell & shell) { - shell.printfln(F("%s: %s"), device_type_name().c_str(), to_string().c_str()); -} - // for each telegram that has the fetch value set (true) do a read request void EMSdevice::fetch_values() { EMSESP::logger().debug(F("Fetching values for device ID 0x%02X"), device_id()); @@ -360,79 +355,25 @@ void EMSdevice::read_command(const uint16_t type_id) { EMSESP::send_read_request(type_id, device_id()); } -// prints a string value to the console -void EMSdevice::print_value(uuid::console::Shell & shell, uint8_t padding, const __FlashStringHelper * name, const __FlashStringHelper * value) { - print_value(shell, padding, name, uuid::read_flash_string(value).c_str()); -} - -// print string value, value is not in flash -void EMSdevice::print_value(uuid::console::Shell & shell, uint8_t padding, const __FlashStringHelper * name, const char * value) { - uint8_t i = padding; - while (i-- > 0) { - shell.print(F_(1space)); - } - - shell.printfln(PSTR("%s: %s"), uuid::read_flash_string(name).c_str(), value); -} - -// print value to shell from the json doc -void EMSdevice::print_value_json(uuid::console::Shell & shell, - const __FlashStringHelper * key, - const __FlashStringHelper * prefix, - const __FlashStringHelper * name, - const __FlashStringHelper * suffix, - JsonObject & json) { - JsonVariant data = json[uuid::read_flash_string(key)]; - if (data == nullptr) { - return; // doesn't exist - } - - if (prefix != nullptr) { - shell.printf(PSTR(" %s%s: "), uuid::read_flash_string(prefix).c_str(), uuid::read_flash_string(name).c_str()); - } else { - shell.printf(PSTR(" %s: "), uuid::read_flash_string(name).c_str()); - } - - if (data.is()) { - shell.printf(PSTR("%s"), data.as()); - } else if (data.is()) { - shell.printf(PSTR("%d"), data.as()); - } else if (data.is()) { - char data_str[10]; - shell.printf(PSTR("%s"), Helpers::render_value(data_str, (float)data.as(), 1)); - } else if (data.is()) { - char data_str[10]; - shell.printf(PSTR("%s"), Helpers::render_boolean(data_str, data.as())); - } - - if (suffix != nullptr) { - shell.print(' '); - shell.print(uuid::read_flash_string(suffix).c_str()); - } - - shell.println(); -} - // create json key/value pair -void EMSdevice::print_value_json(JsonArray & root, - const __FlashStringHelper * key, - const __FlashStringHelper * prefix, - const __FlashStringHelper * name, - const __FlashStringHelper * suffix, - JsonObject & json) { +void EMSdevice::create_value_json(JsonArray & root, + const __FlashStringHelper * key, + const __FlashStringHelper * prefix, + const __FlashStringHelper * name, + const __FlashStringHelper * suffix, + JsonObject & json) { JsonVariant data = json[uuid::read_flash_string(key)]; if (data == nullptr) { return; // doesn't exist } - JsonObject dataElement = root.createNestedObject(); // add prefix to name if (prefix != nullptr) { char name_text[100]; snprintf_P(name_text, sizeof(name_text), PSTR("%s%s"), uuid::read_flash_string(prefix).c_str(), uuid::read_flash_string(name).c_str()); - dataElement["n"] = name_text; + root.add(name_text); } else { - dataElement["n"] = name; + root.add(name); } // convert to string and add the suffix, this is to save space when sending to the web as json @@ -444,7 +385,7 @@ void EMSdevice::print_value_json(JsonArray & root, suffix_string = " " + uuid::read_flash_string(suffix); } - char data_string[20]; + char data_string[40]; if (data.is()) { snprintf_P(data_string, sizeof(data_string), PSTR("%s%s"), data.as(), suffix_string.c_str()); } else if (data.is()) { @@ -457,7 +398,7 @@ void EMSdevice::print_value_json(JsonArray & root, snprintf_P(data_string, sizeof(data_string), PSTR("%s%s"), Helpers::render_boolean(s, data.as()), suffix_string.c_str()); } - dataElement["v"] = data_string; + root.add(data_string); } } // namespace emsesp diff --git a/src/emsdevice.h b/src/emsdevice.h index 1c35858a..59a3ee1c 100644 --- a/src/emsdevice.h +++ b/src/emsdevice.h @@ -140,7 +140,6 @@ class EMSdevice { void register_mqtt_cmd(const __FlashStringHelper * cmd, cmdfunction_p f); // virtual functions overrules by derived classes - virtual void show_values(uuid::console::Shell & shell) = 0; virtual void publish_values(JsonObject & json, bool force = false) = 0; virtual bool export_values(JsonObject & json) = 0; virtual bool updated_values() = 0; @@ -156,57 +155,12 @@ class EMSdevice { telegram_functions_.reserve(n); } - static void print_value_json(uuid::console::Shell & shell, - const __FlashStringHelper * key, - const __FlashStringHelper * prefix, - const __FlashStringHelper * name, - const __FlashStringHelper * suffix, - JsonObject & json); - - static void print_value_json(JsonArray & root, - const __FlashStringHelper * key, - const __FlashStringHelper * prefix, - const __FlashStringHelper * name, - const __FlashStringHelper * suffix, - JsonObject & json); - - // prints an EMS device value to the console, handling the correct rendering of the type - // padding is # white space - // name is the name of the parameter - // suffix is any string to be appended after the value - // format: - // for ints its 0=no division, 255=handle as boolean, other divide by the value given and render with a decimal point - // for floats its the precision in number of decimal places from 0 to 8 - // for bools its EMS_VALUE_BOOL (0xFF) - template - static void print_value(uuid::console::Shell & shell, - uint8_t padding, - const __FlashStringHelper * name, - Value & value, - const __FlashStringHelper * suffix, - const uint8_t format = 0) { - char buffer[15]; - if (Helpers::render_value(buffer, value, format) == nullptr) { - return; - } - - uint8_t i = padding; - while (i-- > 0) { - shell.print(F_(1space)); - } - - shell.printf(PSTR("%s: %s"), uuid::read_flash_string(name).c_str(), buffer); - - if (suffix != nullptr) { - shell.print(F_(1space)); - shell.println(uuid::read_flash_string(suffix).c_str()); - } else { - shell.println(); - } - } - - static void print_value(uuid::console::Shell & shell, uint8_t padding, const __FlashStringHelper * name, const __FlashStringHelper * value); - static void print_value(uuid::console::Shell & shell, uint8_t padding, const __FlashStringHelper * name, const char * value); + static void create_value_json(JsonArray & root, + const __FlashStringHelper * key, + const __FlashStringHelper * prefix, + const __FlashStringHelper * name, + const __FlashStringHelper * suffix, + JsonObject & json); enum Brand : uint8_t { NO_BRAND = 0, // 0 diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 3ffcf617..df7a9acd 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -264,11 +264,26 @@ void EMSESP::show_device_values(uuid::console::Shell & shell) { return; } + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE_DYN); + // do this in the order of factory classes to keep a consistent order when displaying for (const auto & device_class : EMSFactory::device_handlers()) { for (const auto & emsdevice : emsdevices) { if ((emsdevice) && (emsdevice->device_type() == device_class.first)) { - emsdevice->show_values(shell); + // print header + shell.printfln(F("%s: %s"), emsdevice->device_type_name().c_str(), emsdevice->to_string().c_str()); + + doc.clear(); // clear so we can re-use for each device + JsonArray root = doc.to(); + emsdevice->device_info_web(root); // create array + + // iterate values and print to shell + uint8_t key_value = 0; + for (const JsonVariant & value : root) { + shell.printf((++key_value & 1) ? " %s: " : "%s\r\n", value.as()); + } + + shell.println(); } } } @@ -358,7 +373,6 @@ void EMSESP::publish_device_values(uint8_t device_type, bool force) { emsdevice->publish_values(json, force); } } - // doc.shrinkToFit(); Mqtt::publish("mixer_data", doc.as()); return; } @@ -663,7 +677,7 @@ void EMSESP::device_info_web(const uint8_t unique_id, JsonObject & root) { for (const auto & emsdevice : emsdevices) { if (emsdevice) { if (emsdevice->unique_id() == unique_id) { - root["deviceName"] = emsdevice->to_string_short(); // can;t use c_str() because of scope + root["deviceName"] = emsdevice->to_string_short(); // can't use c_str() because of scope JsonArray data = root.createNestedArray("deviceData"); emsdevice->device_info_web(data); return; diff --git a/src/locale_EN.h b/src/locale_EN.h index d86122de..f284e866 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -193,12 +193,16 @@ MAKE_PSTR(wWSetPumpPower, "Warm water pump set power") MAKE_PSTR(wwMixTemperature, "Warm water mix temperature") MAKE_PSTR(wwBufferTemperature, "Warm water buffer temperature") MAKE_PSTR(wWStarts, "Warm water starts") -MAKE_PSTR(wWWorkM, "Warm water active time") +MAKE_PSTR(wWWorkM, "Warm water active time (min)") +MAKE_PSTR(wWWorkMtxt, "Warm water active time") MAKE_PSTR(setBurnPow, "Burner set power") MAKE_PSTR(burnStarts, "Burner starts") -MAKE_PSTR(burnWorkMin, "Burner active time") -MAKE_PSTR(heatWorkMin, "Heating active time") -MAKE_PSTR(UBAuptime, "Boiler total uptime") +MAKE_PSTR(burnWorkMin, "Burner active time (min)") +MAKE_PSTR(heatWorkMin, "Heating active time (min)") +MAKE_PSTR(burnWorkMintxt, "Burner active time") +MAKE_PSTR(heatWorkMintxt, "Heating active time") +MAKE_PSTR(UBAuptime, "Boiler total uptime (min)") +MAKE_PSTR(UBAuptimetxt, "Boiler total uptime") // solar MAKE_PSTR(collectorTemp, "Collector temperature (TS1)") @@ -208,7 +212,8 @@ MAKE_PSTR(tank1MaxTempCurrent, "Maximum Tank temperature") MAKE_PSTR(heatExchangerTemp, "Heat exchanger temperature (TS6)") MAKE_PSTR(solarPumpModulation, "Solar pump modulation (PS1)") MAKE_PSTR(cylinderPumpModulation, "Cylinder pump modulation (PS5)") -MAKE_PSTR(pumpWorkMin, "Pump working time") +MAKE_PSTR(pumpWorkMin, "Pump working time (min)") +MAKE_PSTR(pumpWorkMintxt, "Pump working time") MAKE_PSTR(energyLastHour, "Energy last hour") MAKE_PSTR(energyToday, "Energy today") MAKE_PSTR(energyTotal, "Energy total") diff --git a/src/telegram.h b/src/telegram.h index e438d784..173f368a 100644 --- a/src/telegram.h +++ b/src/telegram.h @@ -40,6 +40,8 @@ static constexpr uint8_t EMS_VALUE_BOOL = 0xFF; // used to mark that somethi static constexpr uint8_t EMS_VALUE_BOOL_OFF = 0x00; // boolean false static constexpr uint8_t EMS_VALUE_BOOL_ON = 0x01; // boolean true. True can be 0x01 or 0xFF sometimes +static constexpr uint8_t EMS_VALUE_TIME = 0xFD; // for converting uint32 to time strings + static constexpr uint8_t EMS_VALUE_BOOL_NOTSET = 0xFE; // random number for booleans, that's not 0, 1 or FF static constexpr uint8_t EMS_VALUE_UINT_NOTSET = 0xFF; // for 8-bit unsigned ints/bytes static constexpr int8_t EMS_VALUE_INT_NOTSET = 0x7F; // for signed 8-bit ints/bytes diff --git a/src/version.h b/src/version.h index 9bc795ad..c8d87ebc 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b5" +#define EMSESP_APP_VERSION "2.1.1b6" From 6c55a0a4da857c04593949a49a5e189ee5910aed Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:07:05 +0100 Subject: [PATCH 162/225] cleanup list --- .gitignore | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 8271f200..5f922a0b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,25 +2,25 @@ .vscode # build -/build/ +build/ .clang_complete .gcc-flags.json +cppcheck.out.xml +debug.log # platformio .pio pio_local.ini +.VSCodeCounter/ # OS specific .DS_Store *Thumbs.db # project specfic -/scripts/stackdmp.txt +scripts/stackdmp.txt emsesp -firmware -/data/www/ -/lib/framework/WWWData.h -/interface/build/ -/interface/node_modules/ -.VSCodeCounter/ -cppcheck.out.xml +data/www/ +lib/framework/WWWData.h +interface/build/ +interface/node_modules/ From 3f275121cf73f191425781fad8761652205cc9db Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:07:26 +0100 Subject: [PATCH 163/225] remove shrinktofit to improve frag mem --- src/console.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/console.cpp b/src/console.cpp index 13674b68..a811e343 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -403,7 +403,6 @@ void EMSESPShell::add_console_commands() { } if (ok && json.size()) { - doc.shrinkToFit(); serializeJsonPretty(doc, shell); shell.println(); } From 8447c961febb122778d03896671f5019085701a1 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:08:22 +0100 Subject: [PATCH 164/225] test flash vs non-flash for json variables --- src/dallassensor.cpp | 6 +++--- src/helpers.h | 3 +++ src/mqtt.cpp | 34 +++++++++++++++++----------------- src/system.cpp | 8 ++++---- 4 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index 741c2210..68fe8824 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -342,13 +342,13 @@ void DallasSensor::publish_values(const bool force) { if (mqtt_format_ == Mqtt::Format::HA) { if (!(registered_ha_[sensor_no - 1]) || force) { StaticJsonDocument config; - config["dev_cla"] = F("temperature"); + config["dev_cla"] = FJSON("temperature"); char stat_t[50]; snprintf_P(stat_t, sizeof(stat_t), PSTR("%s/dallassensor_data"), System::hostname().c_str()); config["stat_t"] = stat_t; - config["unit_of_meas"] = F("°C"); + config["unit_of_meas"] = FJSON("°C"); char str[50]; snprintf_P(str, sizeof(str), PSTR("{{value_json.sensor%d.temp}}"), sensor_no); @@ -375,7 +375,7 @@ void DallasSensor::publish_values(const bool force) { sensor_no++; // increment sensor count } - doc.shrinkToFit(); + // doc.shrinkToFit(); Mqtt::publish(F("dallassensor_data"), doc.as()); } diff --git a/src/helpers.h b/src/helpers.h index b20c3771..0c50c503 100644 --- a/src/helpers.h +++ b/src/helpers.h @@ -28,6 +28,9 @@ #define BOOL_FORMAT_TRUEFALSE 2 #define BOOL_FORMAT_NUMBERS 3 +// #define FJSON(x) x +#define FJSON(x) F(x) + namespace emsesp { class Helpers { diff --git a/src/mqtt.cpp b/src/mqtt.cpp index b18a7052..62ab7fd5 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -476,7 +476,7 @@ void Mqtt::on_connect() { if (connectcount_ == 1) { // send info topic appended with the version information as JSON StaticJsonDocument doc; - doc["event"] = "start"; + doc["event"] = FJSON("start"); doc["version"] = EMSESP_APP_VERSION; #ifndef EMSESP_STANDALONE doc["ip"] = WiFi.localIP().toString(); @@ -505,20 +505,20 @@ void Mqtt::on_connect() { void Mqtt::ha_status() { StaticJsonDocument doc; - doc["name"] = F("EMS-ESP status"); - doc["uniq_id"] = F("status"); + doc["name"] = FJSON("EMS-ESP status"); + doc["uniq_id"] = FJSON("status"); doc["~"] = System::hostname(); // ems-esp - doc["avty_t"] = F("~/status"); - doc["json_attr_t"] = F("~/heartbeat"); - doc["stat_t"] = F("~/heartbeat"); - doc["val_tpl"] = F("{{value_json['status']}}"); - doc["ic"] = F("mdi:home-thermometer-outline"); + doc["avty_t"] = FJSON("~/status"); + doc["json_attr_t"] = FJSON("~/heartbeat"); + doc["stat_t"] = FJSON("~/heartbeat"); + doc["val_tpl"] = FJSON("{{value_json['status']}}"); + doc["ic"] = FJSON("mdi:home-thermometer-outline"); JsonObject dev = doc.createNestedObject("dev"); - dev["name"] = F("EMS-ESP"); + dev["name"] = FJSON("EMS-ESP"); dev["sw"] = EMSESP_APP_VERSION; - dev["mf"] = F("proddy"); - dev["mdl"] = F("EMS-ESP"); + dev["mf"] = FJSON("proddy"); + dev["mdl"] = FJSON("EMS-ESP"); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp"); @@ -706,14 +706,14 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons EMSESP::webSettingsService.read([&](WebSettings & settings) { if (settings.bool_format == BOOL_FORMAT_ONOFF) { - doc[F("payload_on")] = "on"; - doc[F("payload_off")] = "off"; + doc[F("payload_on")] = FJSON("on"); + doc[F("payload_off")] = FJSON("off"); } else if (settings.bool_format == BOOL_FORMAT_TRUEFALSE) { - doc[F("payload_on")] = "true"; - doc[F("payload_off")] = "false"; + doc[F("payload_on")] = FJSON("true"); + doc[F("payload_off")] = FJSON("false"); } else { - doc[F("payload_on")] = "1"; - doc[F("payload_off")] = "0"; + doc[F("payload_on")] = FJSON("1"); + doc[F("payload_off")] = FJSON("0"); } }); diff --git a/src/system.cpp b/src/system.cpp index f6a35a64..bd5418d0 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -308,7 +308,7 @@ void System::show_mem(const char * note) { // send periodic MQTT message with system information void System::send_heartbeat() { // don't send heartbeat if WiFi is not connected - int rssi = wifi_quality(); + int8_t rssi = wifi_quality(); if (rssi == -1) { return; } @@ -323,11 +323,11 @@ void System::send_heartbeat() { uint8_t ems_status = EMSESP::bus_status(); if (ems_status == EMSESP::BUS_STATUS_TX_ERRORS) { - doc["status"] = "txerror"; + doc["status"] = FJSON("txerror"); } else if (ems_status == EMSESP::BUS_STATUS_CONNECTED) { - doc["status"] = "connected"; + doc["status"] = FJSON("connected"); } else { - doc["status"] = "disconnected"; + doc["status"] = FJSON("disconnected"); } doc["rssi"] = rssi; From 46a6c3893fc0db87e50c8de6f7770844bc89819f Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:08:43 +0100 Subject: [PATCH 165/225] move JSON sizes from mqtt to main header --- src/emsesp.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/emsesp.h b/src/emsesp.h index 711f9e8c..771443e8 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -52,6 +52,13 @@ #define WATCH_ID_NONE 0 // no watch id set +#define EMSESP_MAX_JSON_SIZE_HA_CONFIG 384 // for small HA config payloads +#define EMSESP_MAX_JSON_SIZE_SMALL 256 // for smaller json docs when using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_DYN 2048 // for large json docs from web. Using DynamicJsonDocument +#define EMSESP_MAX_JSON_SIZE_LARGE_DYN 4098 // for very large json docs. Using DynamicJsonDocument + namespace emsesp { class Shower; // forward declaration for compiler From ccfe5be568723406242ebfefc865341e87744a19 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:08:56 +0100 Subject: [PATCH 166/225] static code analysis nice things --- src/helpers.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/helpers.cpp b/src/helpers.cpp index 2507fcbf..9c667289 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -97,11 +97,10 @@ char * Helpers::itoa(char * result, int32_t value, const uint8_t base) { } *ptr-- = '\0'; - char tmp_char; while (ptr1 < ptr) { - tmp_char = *ptr; - *ptr-- = *ptr1; - *ptr1++ = tmp_char; + char tmp_char = *ptr; + *ptr-- = *ptr1; + *ptr1++ = tmp_char; } return result; @@ -133,14 +132,16 @@ char * Helpers::render_boolean(char * result, bool value) { } else { strlcpy(result, value ? "1" : "0", 2); } + return result; } // depending on format render a number or a string -char * Helpers::render_enum(char * result, const std::vector &value, const uint8_t no) { +char * Helpers::render_enum(char * result, const std::vector & value, const uint8_t no) { if (no >= value.size()) { return nullptr; // out of bounds } + strcpy(result, uuid::read_flash_string(value[no]).c_str()); if (bool_format() == BOOL_FORMAT_TRUEFALSE) { if (no == 0 && uuid::read_flash_string(value[0]) == "off") { @@ -151,6 +152,7 @@ char * Helpers::render_enum(char * result, const std::vector &strs) { +bool Helpers::value2enum(const char * v, uint8_t & value, const std::vector & strs) { if ((v == nullptr) || (strlen(v) == 0)) { return false; } From 48bacde5699b2125f4439e81f0cad37aeb1055cb Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:09:10 +0100 Subject: [PATCH 167/225] removed JSON sizes --- src/mqtt.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/mqtt.h b/src/mqtt.h index 377ba11e..00877883 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -38,12 +38,6 @@ using uuid::console::Shell; -#define EMSESP_MAX_JSON_SIZE_HA_CONFIG 384 // for small HA config payloads -#define EMSESP_MAX_JSON_SIZE_SMALL 256 // for smaller json docs when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_DYN 2048 // for large json docs from web. Using DynamicJsonDocument - namespace emsesp { using mqtt_subfunction_p = std::function; From e56715f24c97a559f06fa8aabdd98f883062ff5a Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:09:22 +0100 Subject: [PATCH 168/225] updated tests --- src/test/test.cpp | 14 +++++++++++--- src/test/test.h | 2 ++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index 9aa45fed..321f5cc3 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -125,6 +125,13 @@ bool Test::run_test(const char * command, int8_t id) { // UBAuptime uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); + // Boiler -> Me, UBAMonitorFast(0x18), telegram: 08 00 18 00 00 02 5A 73 3D 0A 10 65 40 02 1A 80 00 01 E1 01 76 0E 3D 48 00 C9 44 02 00 (#data=25) + uart_telegram({0x08, 0x00, 0x18, 0x00, 0x00, 0x02, 0x5A, 0x73, 0x3D, 0x0A, 0x10, 0x65, 0x40, 0x02, 0x1A, + 0x80, 0x00, 0x01, 0xE1, 0x01, 0x76, 0x0E, 0x3D, 0x48, 0x00, 0xC9, 0x44, 0x02, 0x00}); + + // Boiler -> Me, UBAParameterWW(0x33), telegram: 08 0B 33 00 08 FF 34 FB 00 28 00 00 46 00 FF FF 00 (#data=13) + uart_telegram({0x08, 0x0B, 0x33, 0x00, 0x08, 0xFF, 0x34, 0xFB, 0x00, 0x28, 0x00, 0x00, 0x46, 0x00, 0xFF, 0xFF, 0x00}); + return true; } @@ -192,7 +199,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { std::string command(20, '\0'); if ((cmd.empty()) || (cmd == "default")) { - command = "thermostat"; + command = EMSESP_TEST_DEFAULT; } else { command = cmd; } @@ -226,6 +233,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { uint16_t test3u = EMS_VALUE_USHORT_NOTSET; int16_t test4u = EMS_VALUE_SHORT_NOTSET; + /* EMSdevice::print_value(shell, 2, F("Selected flow temperature1"), test1, F_(degrees)); // 12 EMSdevice::print_value(shell, 2, F("Selected flow temperature2"), test2, F_(degrees)); // -12 EMSdevice::print_value(shell, 2, F("Selected flow temperature3"), test3, F_(degrees), 10); // 45.6 @@ -246,7 +254,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { EMSdevice::print_value(shell, 2, F("Selected flow temperature4u"), test4u, F_(degrees), 10); EMSdevice::print_value(shell, 2, F("Selected flow temperature5u"), test5u, F_(degrees), EMS_VALUE_BOOL); EMSdevice::print_value(shell, 2, F("Selected flow temperature6u"), test6u, F_(degrees), 100); - +*/ shell.println(); // check read_value to make sure it handles all the data type correctly @@ -390,7 +398,7 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { shell.printfln(F("Testing boiler...")); run_test("boiler"); shell.invoke_command("show"); - shell.invoke_command("call boiler info"); + // shell.invoke_command("call boiler info"); } if (command == "fr120") { diff --git a/src/test/test.h b/src/test/test.h index be85cf25..066ba004 100644 --- a/src/test/test.h +++ b/src/test/test.h @@ -38,6 +38,8 @@ namespace emsesp { +#define EMSESP_TEST_DEFAULT "boiler" + class Test { public: static void run_test(uuid::console::Shell & shell, const std::string & command); From 25b0ab0cdec28651fb263319dd19b5ab69906f18 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:09:39 +0100 Subject: [PATCH 169/225] use JSON size from ems main header --- src/WebDevicesService.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/WebDevicesService.h b/src/WebDevicesService.h index fd0a4231..d82eb642 100644 --- a/src/WebDevicesService.h +++ b/src/WebDevicesService.h @@ -24,8 +24,6 @@ #include #include -#define MAX_EMSESP_DEVICE_SIZE 4096 - #define EMSESP_DEVICES_SERVICE_PATH "/rest/allDevices" #define SCAN_DEVICES_SERVICE_PATH "/rest/scanDevices" #define DEVICE_DATA_SERVICE_PATH "/rest/deviceData" From a08b880b6729d26a2f637517eb1d2c8ba1225077 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:10:03 +0100 Subject: [PATCH 170/225] remove shrinktofit to help mem frag --- src/WebAPIService.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index bcbbe379..4f3e6d4c 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -109,7 +109,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { // if we have returned data in JSON format, send this to the WEB if (json.size()) { - doc.shrinkToFit(); + // doc.shrinkToFit(); char buffer[EMSESP_MAX_JSON_SIZE_DYN]; serializeJsonPretty(doc, buffer); request->send(200, "text/plain", buffer); From c2c6a933bbf562128085c3019109c4d0f9e6620f Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:10:26 +0100 Subject: [PATCH 171/225] use standard JSON sizes from main EMS-ESP header --- src/WebDevicesService.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WebDevicesService.cpp b/src/WebDevicesService.cpp index 1a4fb259..cd910fc1 100644 --- a/src/WebDevicesService.cpp +++ b/src/WebDevicesService.cpp @@ -45,7 +45,7 @@ void WebDevicesService::scan_devices(AsyncWebServerRequest * request) { } void WebDevicesService::all_devices(AsyncWebServerRequest * request) { - AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_EMSESP_DEVICE_SIZE); + AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE_DYN); JsonObject root = response->getRoot(); JsonArray devices = root.createNestedArray("devices"); @@ -80,7 +80,7 @@ void WebDevicesService::all_devices(AsyncWebServerRequest * request) { void WebDevicesService::device_data(AsyncWebServerRequest * request, JsonVariant & json) { if (json.is()) { - AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_EMSESP_DEVICE_SIZE); + AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE_DYN); #ifndef EMSESP_STANDALONE uint8_t id = json["id"]; // get id from selected table row EMSESP::device_info_web(id, (JsonObject &)response->getRoot()); From e5dd46be460d4c23dae1c677c6480061e8f382e7 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 26 Nov 2020 23:11:35 +0100 Subject: [PATCH 172/225] trigger build --- CHANGELOG_LATEST.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index d1c67c15..55fee68c 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -30,6 +30,7 @@ - renamed pio targets (esp8266-ci and esp32-ci for GitHub CI) - telnet default settings `log info`, timeout 60 min - `log debug` not showing telegram names, use `log trace` or `watch on` to show the telegrams +- optimized how console and web display device data ([#632](https://github.com/proddy/EMS-ESP/issues/632)) ### Removed - old shell and python build scripts From c3228c3b30a9271a25dda5e5a2b76a9bb680bd14 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 27 Nov 2020 13:27:41 +0100 Subject: [PATCH 173/225] boiler information #633, time-textformat web, console --- CHANGELOG_LATEST.md | 1 + src/devices/boiler.cpp | 269 ++++++++++++++++++++++++++++++++++++----- src/devices/boiler.h | 33 ++++- src/locale_EN.h | 31 +++-- src/telegram.h | 2 +- 5 files changed, 294 insertions(+), 42 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 55fee68c..e37914c1 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -10,6 +10,7 @@ - Add solar configuration telegrams (#616) [thanks @hpanther] - `log trace` shows decoded telegrams, `watch unknown` for only unknown telegrams - WM10 switch telegrams +- boiler information (#633) ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index f04df7bc..79e04939 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -51,6 +51,8 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_telegram_type(0xE6, F("UBAParametersPlus"), true, [&](std::shared_ptr t) { process_UBAParametersPlus(t); }); register_telegram_type(0xE9, F("UBADHWStatus"), false, [&](std::shared_ptr t) { process_UBADHWStatus(t); }); register_telegram_type(0xEA, F("UBAParameterWWPlus"), true, [&](std::shared_ptr t) { process_UBAParameterWWPlus(t); }); + register_telegram_type(0x494, F("UBAEnergySupplied"), false, [&](std::shared_ptr t) { process_UBAEnergySupplied(t); }); + register_telegram_type(0x495, F("UBAInformation"), false, [&](std::shared_ptr t) { process_UBAInformation(t); }); // MQTT commands for boiler topic register_mqtt_cmd(F("comfort"), [&](const char * value, const int8_t id) { return set_warmwater_mode(value, id); }); @@ -141,6 +143,26 @@ void Boiler::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(burnWorkMin), device_type(), "burnWorkMin", F_(min), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatWorkMin), device_type(), "heatWorkMin", F_(min), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(UBAuptime), device_type(), "UBAuptime", F_(min), nullptr); + // information + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(upTimeControl), device_type(), "upTimeControl", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(upTimeCompHeating), device_type(), "upTimeCompHeating", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(upTimeCompCooling), device_type(), "upTimeCompCooling", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(upTimeCompWw), device_type(), "upTimeCompWw", F_(min), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(heatingStarts), device_type(), "heatingStarts", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(coolingStarts), device_type(), "coolingStarts_", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(wWStarts2), device_type(), "wWStarts2", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgConsTotal), device_type(), "nrgConsTotal", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(auxElecHeatNrgConsTotal), device_type(), "auxElecHeatNrgConsTotal_", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(auxElecHeatNrgConsHeating), device_type(), "auxElecHeatNrgConsHeating", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(auxElecHeatNrgConsDHW), device_type(), "auxElecHeatNrgConsDHW", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgConsCompTotal), device_type(), "nrgConsCompTotal", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgConsCompHeating), device_type(), "nrgConsCompHeating", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgConsCompWw), device_type(), "nrgConsCompWw", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgConsCompCooling), device_type(), "nrgConsCompCooling", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppTotal), device_type(), "nrgSuppTotal_", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppHeating), device_type(), "nrgSuppHeating", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppWw), device_type(), "nrgSuppWw", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppCooling), device_type(), "nrgSuppCooling", F_(kwh), nullptr); mqtt_ha_config_ = true; // done } @@ -187,7 +209,7 @@ void Boiler::device_info_web(JsonArray & root) { // fetch the values into a JSON document StaticJsonDocument doc; JsonObject json = doc.to(); - if (!export_values_main(json)) { + if (!export_values_main(json, true)) { return; // empty } @@ -225,16 +247,33 @@ void Boiler::device_info_web(JsonArray & root) { create_value_json(root, F("setFlowTemp"), nullptr, F_(setFlowTemp), F_(degrees), json); create_value_json(root, F("setBurnPow"), nullptr, F_(setBurnPow), F_(percent), json); create_value_json(root, F("burnStarts"), nullptr, F_(burnStarts), nullptr, json); - create_value_json(root, F("burnWorkMin"), nullptr, F_(burnWorkMin), F_(min), json); - create_value_json(root, F("heatWorkMin"), nullptr, F_(heatWorkMin), F_(min), json); - create_value_json(root, F("UBAuptime"), nullptr, F_(UBAuptime), F_(min), json); - - create_value_json(root, F("burnWorkMintxt"), nullptr, F_(burnWorkMintxt), nullptr, json); - create_value_json(root, F("heatWorkMintxt"), nullptr, F_(heatWorkMintxt), nullptr, json); - create_value_json(root, F("UBAuptimetxt"), nullptr, F_(UBAuptimetxt), nullptr, json); + create_value_json(root, F("burnWorkMin"), nullptr, F_(burnWorkMin), nullptr, json); + create_value_json(root, F("heatWorkMin"), nullptr, F_(heatWorkMin), nullptr, json); + create_value_json(root, F("UBAuptime"), nullptr, F_(UBAuptime), nullptr, json); + + // information + create_value_json(root, F("upTimeControl"), nullptr, F_(upTimeControl), nullptr, json); + create_value_json(root, F("upTimeCompHeating"), nullptr, F_(upTimeCompHeating), nullptr, json); + create_value_json(root, F("upTimeCompCooling"), nullptr, F_(upTimeCompCooling), nullptr, json); + create_value_json(root, F("upTimeCompWw"), nullptr, F_(upTimeCompWw), nullptr, json); + create_value_json(root, F("heatingStarts"), nullptr, F_(heatingStarts), nullptr, json); + create_value_json(root, F("coolingStarts"), nullptr, F_(coolingStarts), nullptr, json); + create_value_json(root, F("wWStarts2"), nullptr, F_(wWStarts2), nullptr, json); + create_value_json(root, F("nrgConsTotal"), nullptr, F_(nrgConsTotal), F_(kwh), json); + create_value_json(root, F("auxElecHeatNrgConsTotal"), nullptr, F_(auxElecHeatNrgConsTotal), F_(kwh), json); + create_value_json(root, F("auxElecHeatNrgConsHeating"), nullptr, F_(auxElecHeatNrgConsHeating), F_(kwh), json); + create_value_json(root, F("auxElecHeatNrgConsDHW"), nullptr, F_(auxElecHeatNrgConsDHW), F_(kwh), json); + create_value_json(root, F("nrgConsCompTotal"), nullptr, F_(nrgConsCompTotal), F_(kwh), json); + create_value_json(root, F("nrgConsCompHeating"), nullptr, F_(nrgConsCompHeating), F_(kwh), json); + create_value_json(root, F("nrgConsCompWw"), nullptr, F_(nrgConsCompWw), F_(kwh), json); + create_value_json(root, F("nrgConsCoolingTotal"), nullptr, F_(nrgConsCompCooling), F_(kwh), json); + create_value_json(root, F("nrgSuppTotal"), nullptr, F_(nrgSuppTotal), F_(kwh), json); + create_value_json(root, F("nrgSuppHeating"), nullptr, F_(nrgSuppHeating), F_(kwh), json); + create_value_json(root, F("nrgSuppWw"), nullptr, F_(nrgSuppWw), F_(kwh), json); + create_value_json(root, F("nrgSuppCooling"), nullptr, F_(nrgSuppCooling), F_(kwh), json); doc.clear(); - if (!export_values_ww(json)) { // append ww values + if (!export_values_ww(json, true)) { // append ww values return; } @@ -265,9 +304,7 @@ void Boiler::device_info_web(JsonArray & root) { create_value_json(root, F("wwMixTemperature"), nullptr, F_(wwMixTemperature), F_(degrees), json); create_value_json(root, F("wwBufferTemperature"), nullptr, F_(wwBufferTemperature), F_(degrees), json); create_value_json(root, F("wWStarts"), nullptr, F_(wWStarts), nullptr, json); - create_value_json(root, F("wWWorkM"), nullptr, F_(wWWorkM), F_(min), json); - - create_value_json(root, F("wWWorkMtxt"), nullptr, F_(wWWorkMtxt), nullptr, json); + create_value_json(root, F("wWWorkM"), nullptr, F_(wWWorkM), nullptr, json); } bool Boiler::export_values(JsonObject & json) { @@ -280,7 +317,7 @@ bool Boiler::export_values(JsonObject & json) { // creates JSON doc from values // returns false if empty -bool Boiler::export_values_ww(JsonObject & json) { +bool Boiler::export_values_ww(JsonObject & json, const bool textformat) { char s[10]; // for formatting strings // Warm Water comfort setting @@ -439,9 +476,12 @@ bool Boiler::export_values_ww(JsonObject & json) { // Warm Water active time if (Helpers::hasValue(wWWorkM_)) { - json["wWWorkM"] = wWWorkM_; - char slong[40]; - json["wWWorkMtxt"] = Helpers::render_value(slong, wWWorkM_, EMS_VALUE_TIME); // Warm Water active time (full text) + if (textformat) { + char slong[40]; + json["wWWorkM"] = Helpers::render_value(slong, wWWorkM_, EMS_VALUE_TIME); // Warm Water active time (full text) + } else { + json["wWWorkM"] = wWWorkM_; + } } return (json.size()); @@ -449,7 +489,7 @@ bool Boiler::export_values_ww(JsonObject & json) { // creates JSON doc from values // returns false if empty -bool Boiler::export_values_main(JsonObject & json) { +bool Boiler::export_values_main(JsonObject & json, const bool textformat) { char s[10]; // for formatting strings // Hot tap water bool @@ -614,23 +654,32 @@ bool Boiler::export_values_main(JsonObject & json) { // Total burner operating time if (Helpers::hasValue(burnWorkMin_)) { - json["burnWorkMin"] = burnWorkMin_; - char slong[40]; - json["burnWorkMintxt"] = Helpers::render_value(slong, burnWorkMin_, EMS_VALUE_TIME); + if (textformat) { + char slong[40]; + json["burnWorkMin"] = Helpers::render_value(slong, burnWorkMin_, EMS_VALUE_TIME); + } else { + json["burnWorkMin"] = burnWorkMin_; + } } // Total heat operating time if (Helpers::hasValue(heatWorkMin_)) { - json["heatWorkMin"] = heatWorkMin_; - char slong[40]; - json["heatWorkMintxt"] = Helpers::render_value(slong, heatWorkMin_, EMS_VALUE_TIME); + if (textformat) { + char slong[40]; + json["heatWorkMin"] = Helpers::render_value(slong, heatWorkMin_, EMS_VALUE_TIME); + } else { + json["heatWorkMin"] = heatWorkMin_; + } } // Total UBA working time if (Helpers::hasValue(UBAuptime_)) { - json["UBAuptime"] = UBAuptime_; - char slong[40]; - json["UBAuptimetxt"] = Helpers::render_value(slong, UBAuptime_, EMS_VALUE_TIME); + if (textformat) { + char slong[40]; + json["UBAuptime"] = Helpers::render_value(slong, UBAuptime_, EMS_VALUE_TIME); + } else { + json["UBAuptime"] = UBAuptime_; + } } // Service Code & Service Code Number @@ -643,6 +692,121 @@ bool Boiler::export_values_main(JsonObject & json) { json["lastCode"] = lastCode_; } + // Total heat operating time + if (Helpers::hasValue(upTimeControl_)) { + if (textformat) { + char slong[40]; + json["upTimeControl"] = Helpers::render_value(slong, upTimeControl_, EMS_VALUE_TIME); + } else { + json["upTimeControl"] = upTimeControl_; + } + } + + // Operating time compressor heating + if (Helpers::hasValue(upTimeCompHeating_)) { + if (textformat) { + char slong[40]; + json["upTimeCompHeating"] = Helpers::render_value(slong, upTimeCompHeating_, EMS_VALUE_TIME); + } else { + json["upTimeCompHeating"] = upTimeCompHeating_; + } + } + + // Operating time compressor cooling + if (Helpers::hasValue(upTimeCompCooling_)) { + if (textformat) { + char slong[40]; + json["upTimeCompCooling"] = Helpers::render_value(slong, upTimeCompCooling_, EMS_VALUE_TIME); + } else { + json["upTimeCompCooling"] = upTimeCompCooling_; + } + } + + // Operating time compressor warm water + if (Helpers::hasValue(upTimeCompWw_)) { + if (textformat) { + char slong[40]; + json["upTimeCompWw"] = Helpers::render_value(slong, upTimeCompWw_, EMS_VALUE_TIME); + } else { + json["upTimeCompWw"] = upTimeCompWw_; + } + } + + // Number of heating starts + if (Helpers::hasValue(heatingStarts_)) { + json["heatingStarts"] = heatingStarts_; + } + + // Number of cooling starts + if (Helpers::hasValue(coolingStarts_)) { + json["coolingStarts"] = coolingStarts_; + } + + // Number of warm water starts + if (Helpers::hasValue(wWStarts2_)) { + json["wWStarts2"] = wWStarts2_; + } + + // Total energy consumption + if (Helpers::hasValue(nrgConsTotal_)) { + json["nrgConsTotal"] = nrgConsTotal_; + } + + // Auxiliary electrical heater energy total + if (Helpers::hasValue(auxElecHeatNrgConsTotal_)) { + json["auxElecHeatNrgConsTotal"] = auxElecHeatNrgConsTotal_; + } + + // Auxiliary electrical heater energy heating + if (Helpers::hasValue(auxElecHeatNrgConsHeating_)) { + json["auxElecHeatNrgConsHeating"] = auxElecHeatNrgConsHeating_; + } + + // Auxiliary electrical heater energy DHW + if (Helpers::hasValue(auxElecHeatNrgConsDHW_)) { + json["auxElecHeatNrgConsDHW"] = auxElecHeatNrgConsDHW_; + } + + // Energy consumption compressor total + if (Helpers::hasValue(nrgConsCompTotal_)) { + json["nrgConsCompTotal"] = nrgConsCompTotal_; + } + + // Energy consumption compressor heating + if (Helpers::hasValue(nrgConsCompHeating_)) { + json["nrgConsCompHeating"] = nrgConsCompHeating_; + } + + // Energy consumption compressor warm water + if (Helpers::hasValue(nrgConsCompWw_)) { + json["nrgConsCompWw"] = nrgConsCompWw_; + } + + // Energy consumption compressor cooling + if (Helpers::hasValue(nrgConsCompCooling_)) { + json["nrgConsCompCooling"] = nrgConsCompCooling_; + } + + // Total energy supplied + if (Helpers::hasValue(nrgSuppTotal_)) { + json["nrgSuppTotal"] = nrgSuppTotal_; + } + + // Total energy heating + if (Helpers::hasValue(nrgSuppHeating_)) { + json["nrgSuppHeating"] = nrgSuppHeating_; + } + + // Total energy warm water + if (Helpers::hasValue(nrgSuppWw_)) { + json["nrgSuppWw"] = nrgSuppWw_; + } + + // Total energy cooling + if (Helpers::hasValue(nrgSuppCooling_)) { + json["nrgSuppCooling"] = nrgSuppCooling_; + } + return (json.size()); } // namespace emsesp @@ -676,7 +840,7 @@ void Boiler::publish_values(JsonObject & json, bool force) { } // send out heating and tapwater status - check_active(); + check_active(force); } // called after a process command is called, to check values and see if we need to force an MQTT publish @@ -693,7 +857,7 @@ bool Boiler::updated_values() { * If a value has changed, post it immediately to MQTT so we get real time data * Values will always be posted first time as heatingActive_ and tapwaterActive_ will have values EMS_VALUE_BOOL_NOTSET */ -void Boiler::check_active() { +void Boiler::check_active(const bool force) { if (!Helpers::hasValue(boilerState_)) { return; } @@ -703,7 +867,7 @@ void Boiler::check_active() { // check if heating is active, bits 2 and 4 must be set b = ((boilerState_ & 0x09) == 0x09); val = b ? EMS_VALUE_BOOL_ON : EMS_VALUE_BOOL_OFF; - if (heatingActive_ != val) { + if (heatingActive_ != val || force) { heatingActive_ = val; char s[7]; Mqtt::publish(F("heating_active"), Helpers::render_boolean(s, b)); @@ -712,7 +876,7 @@ void Boiler::check_active() { // check if tap water is active, bits 1 and 4 must be set b = ((boilerState_ & 0x0A) == 0x0A); val = b ? EMS_VALUE_BOOL_ON : EMS_VALUE_BOOL_OFF; - if (tapwaterActive_ != val) { + if (tapwaterActive_ != val || force ) { tapwaterActive_ = val; char s[7]; Mqtt::publish(F("tapwater_active"), Helpers::render_boolean(s, b)); @@ -943,6 +1107,51 @@ void Boiler::process_UBADHWStatus(std::shared_ptr telegram) { changed_ |= telegram->read_value(wWDisinfectionTemp_, 9); } +/* + * UBAInformation - type 0x495 + * all values 32 bit + * 08 0B FF 00 03 95 01 01 AB 83 00 27 78 EB 00 84 FA 39 FF FF FF 00 00 53 7D 8D 00 00 0F 04 1C + * 08 00 FF 00 03 95 01 01 AB 83 00 27 78 EB 00 84 FA 39 FF FF FF 00 00 53 7D 8D 00 00 0F 04 63 + * 08 00 FF 18 03 95 00 00 05 84 00 00 07 22 FF FF FF FF 00 00 02 5C 00 00 03 C0 00 00 01 98 64 + * 08 00 FF 30 03 95 00 00 00 D4 FF FF FF FF 00 00 1C 70 FF FF FF FF 00 00 20 30 00 00 0E 06 FB + * 08 00 FF 48 03 95 00 00 06 C0 00 00 07 66 FF FF FF FF 2E + */ +void Boiler::process_UBAInformation(std::shared_ptr telegram) { + changed_ |= telegram->read_value(upTimeControl_, 0); + changed_ |= telegram->read_value(upTimeCompHeating_, 8); + changed_ |= telegram->read_value(upTimeCompCooling_, 16); + changed_ |= telegram->read_value(upTimeCompWw_, 4); + + changed_ |= telegram->read_value(heatingStarts_, 28); + changed_ |= telegram->read_value(coolingStarts_, 36); + changed_ |= telegram->read_value(wWStarts2_, 24); + + changed_ |= telegram->read_value(nrgConsTotal_, 64); + + changed_ |= telegram->read_value(auxElecHeatNrgConsTotal_, 40); + changed_ |= telegram->read_value(auxElecHeatNrgConsHeating_, 48); + changed_ |= telegram->read_value(auxElecHeatNrgConsDHW_, 44); + + changed_ |= telegram->read_value(nrgConsCompTotal_, 56); + changed_ |= telegram->read_value(nrgConsCompHeating_, 68); + changed_ |= telegram->read_value(nrgConsCompWw_, 72); + changed_ |= telegram->read_value(nrgConsCompCooling_, 76); +} + +/* + * UBAEnergy - type 0x494 + * Energy-values all 32bit + * 08 00 FF 00 03 94 03 31 21 59 00 00 7C 70 00 00 15 B8 00 00 40 E3 00 00 27 23 FF FF FF FF EA + * 08 00 FF 18 03 94 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 00 7E + * 08 00 FF 31 03 94 00 00 00 00 00 00 00 38 + */ +void Boiler::process_UBAEnergySupplied(std::shared_ptr telegram) { + changed_ |= telegram->read_value(nrgSuppTotal_, 4); + changed_ |= telegram->read_value(nrgSuppHeating_, 12); + changed_ |= telegram->read_value(nrgSuppWw_, 8); + changed_ |= telegram->read_value(nrgSuppCooling_, 16); +} + // 0x2A - MC10Status // e.g. 88 00 2A 00 00 00 00 00 00 00 00 00 D2 00 00 80 00 00 01 08 80 00 02 47 00 // see https://github.com/proddy/EMS-ESP/issues/397 diff --git a/src/devices/boiler.h b/src/devices/boiler.h index a153d63e..919190fd 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -48,9 +48,9 @@ class Boiler : public EMSdevice { void register_mqtt_ha_config(); void register_mqtt_ha_config_ww(); - void check_active(); - bool export_values_main(JsonObject & doc); - bool export_values_ww(JsonObject & doc); + void check_active(const bool force = false); + bool export_values_main(JsonObject & doc, const bool textformat = false); + bool export_values_ww(JsonObject & doc, const bool textformat = false); bool changed_ = false; bool mqtt_ha_config_ = false; // HA MQTT Discovery @@ -63,6 +63,8 @@ class Boiler : public EMSdevice { static constexpr uint8_t EMS_TYPE_UBAParameters = 0x16; static constexpr uint8_t EMS_TYPE_UBAParametersPlus = 0xE6; static constexpr uint8_t EMS_TYPE_UBAParameterWWPlus = 0xEA; + static constexpr uint16_t EMS_TYPE_UBAInfomration = 0x495; + static constexpr uint16_t EMS_TYPE_UBAEnergySupplied = 0x494; static constexpr uint8_t EMS_BOILER_SELFLOWTEMP_HEATING = 20; // was originally 70, changed to 30 for issue #193, then to 20 with issue #344 @@ -151,6 +153,29 @@ class Boiler : public EMSdevice { uint8_t heatingActive_ = EMS_VALUE_BOOL_NOTSET; // Central heating is on/off uint8_t pumpMod2_ = EMS_VALUE_UINT_NOTSET; // heatpump modulation from 0xE3 (heatpumps) + // UBAInformation + uint32_t upTimeControl_ = EMS_VALUE_ULONG_NOTSET; // Operating time control + uint32_t upTimeCompHeating_ = EMS_VALUE_ULONG_NOTSET; // Operating time compressor heating + uint32_t upTimeCompCooling_ = EMS_VALUE_ULONG_NOTSET; // Operating time compressor cooling + uint32_t upTimeCompWw_ = EMS_VALUE_ULONG_NOTSET; // Operating time compressor warm water + uint32_t heatingStarts_ = EMS_VALUE_ULONG_NOTSET; // Heating starts (control) + uint32_t coolingStarts_ = EMS_VALUE_ULONG_NOTSET; // Cooling starts (control) + uint32_t wWStarts2_ = EMS_VALUE_ULONG_NOTSET; // Warm water starts (control) + uint32_t nrgConsTotal_ = EMS_VALUE_ULONG_NOTSET; // Energy consumption total + uint32_t auxElecHeatNrgConsTotal_ = EMS_VALUE_ULONG_NOTSET; // Auxiliary electrical heater energy consumption total + uint32_t auxElecHeatNrgConsHeating_ = EMS_VALUE_ULONG_NOTSET; // Auxiliary electrical heater energy consumption heating + uint32_t auxElecHeatNrgConsDHW_ = EMS_VALUE_ULONG_NOTSET; // Auxiliary electrical heater energ consumption DHW + uint32_t nrgConsCompTotal_ = EMS_VALUE_ULONG_NOTSET; // Energy consumption compressor total + uint32_t nrgConsCompHeating_ = EMS_VALUE_ULONG_NOTSET; // Energy consumption compressor heating + uint32_t nrgConsCompWw_ = EMS_VALUE_ULONG_NOTSET; // Energy consumption compressor warm water + uint32_t nrgConsCompCooling_ = EMS_VALUE_ULONG_NOTSET; // Energy consumption compressor cooling + + // UBAEnergySupplied + uint32_t nrgSuppTotal_ = EMS_VALUE_ULONG_NOTSET; // Energy supplied total + uint32_t nrgSuppHeating_ = EMS_VALUE_ULONG_NOTSET; // Energy supplied heating + uint32_t nrgSuppWw_ = EMS_VALUE_ULONG_NOTSET; // Energy supplied warm water + uint32_t nrgSuppCooling_ = EMS_VALUE_ULONG_NOTSET; // Energy supplied cooling + void process_UBAParameterWW(std::shared_ptr telegram); void process_UBAMonitorFast(std::shared_ptr telegram); void process_UBATotalUptime(std::shared_ptr telegram); @@ -170,6 +195,8 @@ class Boiler : public EMSdevice { void process_UBAMaintenanceData(std::shared_ptr telegram); void process_UBAErrorMessage(std::shared_ptr telegram); void process_UBADHWStatus(std::shared_ptr telegram); + void process_UBAInformation(std::shared_ptr telegram); + void process_UBAEnergySupplied(std::shared_ptr telegram); // commands - none of these use the additional id parameter bool set_warmwater_mode(const char * value, const int8_t id); diff --git a/src/locale_EN.h b/src/locale_EN.h index f284e866..2ff007df 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -193,17 +193,32 @@ MAKE_PSTR(wWSetPumpPower, "Warm water pump set power") MAKE_PSTR(wwMixTemperature, "Warm water mix temperature") MAKE_PSTR(wwBufferTemperature, "Warm water buffer temperature") MAKE_PSTR(wWStarts, "Warm water starts") -MAKE_PSTR(wWWorkM, "Warm water active time (min)") -MAKE_PSTR(wWWorkMtxt, "Warm water active time") +MAKE_PSTR(wWWorkM, "Warm water active time") MAKE_PSTR(setBurnPow, "Burner set power") MAKE_PSTR(burnStarts, "Burner starts") -MAKE_PSTR(burnWorkMin, "Burner active time (min)") -MAKE_PSTR(heatWorkMin, "Heating active time (min)") -MAKE_PSTR(burnWorkMintxt, "Burner active time") -MAKE_PSTR(heatWorkMintxt, "Heating active time") -MAKE_PSTR(UBAuptime, "Boiler total uptime (min)") -MAKE_PSTR(UBAuptimetxt, "Boiler total uptime") +MAKE_PSTR(burnWorkMin, "Burner active time") +MAKE_PSTR(heatWorkMin, "Heating active time") +MAKE_PSTR(UBAuptime, "Boiler total uptime") +MAKE_PSTR(upTimeControl, "Operating time control") +MAKE_PSTR(upTimeCompHeating, "Operating time compressor heating") +MAKE_PSTR(upTimeCompCooling, "Operating time compressor cooling") +MAKE_PSTR(upTimeCompWw, "Operating time compressor warm water") +MAKE_PSTR(heatingStarts, "Heating starts (control)") +MAKE_PSTR(coolingStarts, "Cooling starts (control)") +MAKE_PSTR(wWStarts2, "Warm water starts (control)") +MAKE_PSTR(nrgConsTotal, "Energy consumption total") +MAKE_PSTR(auxElecHeatNrgConsTotal, "Auxiliary electrical heater energy consumption total") +MAKE_PSTR(auxElecHeatNrgConsHeating, "Auxiliary electrical heater energy consumption heating") +MAKE_PSTR(auxElecHeatNrgConsDHW, "Auxiliary electrical heater energy consumption DHW") +MAKE_PSTR(nrgConsCompTotal, "Energy consumption compressor total") +MAKE_PSTR(nrgConsCompHeating, "Energy consumption compressor heating") +MAKE_PSTR(nrgConsCompWw, "Energy consumption compressor warm water") +MAKE_PSTR(nrgConsCompCooling, "Energy consumption compressor total") +MAKE_PSTR(nrgSuppTotal, "Energy supplied total") +MAKE_PSTR(nrgSuppHeating, "Energy supplied heating") +MAKE_PSTR(nrgSuppWw, "Energy supplied warm water") +MAKE_PSTR(nrgSuppCooling, "Energy supplied cooling") // solar MAKE_PSTR(collectorTemp, "Collector temperature (TS1)") MAKE_PSTR(tankBottomTemp, "Bottom temperature (TS2)") diff --git a/src/telegram.h b/src/telegram.h index 173f368a..8a4e9393 100644 --- a/src/telegram.h +++ b/src/telegram.h @@ -263,7 +263,7 @@ class RxService : public EMSbus { class TxService : public EMSbus { public: - static constexpr size_t MAX_TX_TELEGRAMS = 20; // size of Tx queue + static constexpr size_t MAX_TX_TELEGRAMS = 30; // size of Tx queue static constexpr uint8_t TX_WRITE_FAIL = 4; // EMS return code for fail static constexpr uint8_t TX_WRITE_SUCCESS = 1; // EMS return code for success From 388c9594686b3d8d75888a538433476a00875caf Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 27 Nov 2020 20:52:14 +0100 Subject: [PATCH 174/225] change time to hours and minutes (no short-hand) --- src/helpers.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/helpers.cpp b/src/helpers.cpp index 9c667289..99762d31 100644 --- a/src/helpers.cpp +++ b/src/helpers.cpp @@ -294,9 +294,9 @@ char * Helpers::render_value(char * result, const uint32_t value, const uint8_t result[0] = '\0'; - // check if we're converted from minutes to a time + // check if we're converting from minutes to a time string if (format == EMS_VALUE_TIME) { - snprintf_P(result, 40, PSTR("%d days %d hrs %d mins"), (value / 1440), ((value % 1440) / 60), (value % 60)); + snprintf_P(result, 40, PSTR("%d days %d hours %d minutes"), (value / 1440), ((value % 1440) / 60), (value % 60)); return result; } From 45933d3c3bbf02b634b20d281173071e8f1d6b55 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 27 Nov 2020 20:52:33 +0100 Subject: [PATCH 175/225] convert cmd's to lowercase --- src/command.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/src/command.cpp b/src/command.cpp index dcf8328a..6dc23308 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -30,6 +30,11 @@ std::vector Command::cmdfunctions_; // id may be used to represent a heating circuit for example // returns false if error or not found bool Command::call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id) { + auto cf = find_command(device_type, cmd); + if ((cf == nullptr) || (cf->cmdfunction_json_)) { + return false; // command not found, or requires a json + } + #ifdef EMSESP_DEBUG std::string dname = EMSdevice::device_type_2_device_name(device_type); if (value == nullptr) { @@ -41,11 +46,6 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val } #endif - auto cf = find_command(device_type, cmd); - if ((cf == nullptr) || (cf->cmdfunction_json_)) { - return false; // command not found, or requires a json - } - return ((cf->cmdfunction_)(value, id)); } @@ -53,6 +53,11 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val // id may be used to represent a heating circuit for example // returns false if error or not found bool Command::call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id, JsonObject & json) { + auto cf = find_command(device_type, cmd); + if (cf == nullptr) { + return false; // command not found or not json + } + #ifdef EMSESP_DEBUG std::string dname = EMSdevice::device_type_2_device_name(device_type); if (value == nullptr) { @@ -64,11 +69,6 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val } #endif - auto cf = find_command(device_type, cmd); - if (cf == nullptr) { - return false; // command not found or not json - } - // check if json object is empty, if so quit if (json.isNull()) { LOG_WARNING(F("Ignore call for command %s in %s because no json"), cmd, EMSdevice::device_type_2_device_name(device_type).c_str()); @@ -108,13 +108,20 @@ Command::CmdFunction * Command::find_command(const uint8_t device_type, const ch return nullptr; } + // convert cmd to lowercase and compare + char lowerCmd[20]; + strlcpy(lowerCmd, cmd, sizeof(lowerCmd)); + for (char * p = lowerCmd; *p; p++) { + *p = tolower(*p); + } + for (auto & cf : cmdfunctions_) { - if (!strcmp_P(cmd, reinterpret_cast(cf.cmd_)) && (cf.device_type_ == device_type)) { + if (!strcmp_P(lowerCmd, reinterpret_cast(cf.cmd_)) && (cf.device_type_ == device_type)) { return &cf; } } - return nullptr; // not found + return nullptr; // command not found } // output list of all commands to console for a specific DeviceType From 9e0640a1f7e7e16352cb19869a2dda7acc01e04a Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 27 Nov 2020 20:52:42 +0100 Subject: [PATCH 176/225] command tests --- src/test/test.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/test.cpp b/src/test/test.cpp index 321f5cc3..911f5d8b 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -724,6 +724,9 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { EMSESP::mqtt_.incoming("ems-esp/system", "{\"cmd\":\"info\"}"); // this should fail + EMSESP::mqtt_.incoming("ems-esp/thermostat", "{\"cmd\":\"temp\",\"data\":23.45}"); // this should work just fine + EMSESP::mqtt_.incoming("ems-esp/thermostat", "{\"cmd\":\"TeMP\",\"data\":23.45}"); // test mix cased cmd + EMSESP::mqtt_.incoming("ems-esp/thermostat_hc1", "20"); shell.invoke_command("call thermostat wwmode"); // should do nothing From 2deb84e3e10c47efea13eb1a9f90d209ea4b5695 Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 27 Nov 2020 20:52:51 +0100 Subject: [PATCH 177/225] make linter happy --- src/uart/emsuart_esp32.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 19f1945a..0599b181 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -57,12 +57,11 @@ void EMSuart::emsuart_recvTask(void * para) { * UART interrupt, on break read the fifo and put the whole telegram to ringbuffer */ void IRAM_ATTR EMSuart::emsuart_rx_intr_handler(void * para) { - static uint8_t rxbuf[EMS_MAXBUFFERSIZE]; - static uint8_t length; portENTER_CRITICAL(&mux); if (EMS_UART.int_st.brk_det) { EMS_UART.int_clr.brk_det = 1; // clear flag - length = 0; + uint8_t rxbuf[EMS_MAXBUFFERSIZE]; + uint8_t length = 0; while (EMS_UART.status.rxfifo_cnt) { uint8_t rx = EMS_UART.fifo.rw_byte; // read all bytes from fifo if (length < EMS_MAXBUFFERSIZE) { From cbb0953f44631b62dfa3376bf087f2c951fa6c5a Mon Sep 17 00:00:00 2001 From: proddy Date: Fri, 27 Nov 2020 20:53:05 +0100 Subject: [PATCH 178/225] auto formatting --- src/devices/boiler.cpp | 8 ++++---- src/devices/boiler.h | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 79e04939..5d5d09dc 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -792,17 +792,17 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { json["nrgSuppTotal"] = nrgSuppTotal_; } - // Total energy heating + // Total energy heating if (Helpers::hasValue(nrgSuppHeating_)) { json["nrgSuppHeating"] = nrgSuppHeating_; } - // Total energy warm water + // Total energy warm water if (Helpers::hasValue(nrgSuppWw_)) { json["nrgSuppWw"] = nrgSuppWw_; } - // Total energy cooling + // Total energy cooling if (Helpers::hasValue(nrgSuppCooling_)) { json["nrgSuppCooling"] = nrgSuppCooling_; } @@ -876,7 +876,7 @@ void Boiler::check_active(const bool force) { // check if tap water is active, bits 1 and 4 must be set b = ((boilerState_ & 0x0A) == 0x0A); val = b ? EMS_VALUE_BOOL_ON : EMS_VALUE_BOOL_OFF; - if (tapwaterActive_ != val || force ) { + if (tapwaterActive_ != val || force) { tapwaterActive_ = val; char s[7]; Mqtt::publish(F("tapwater_active"), Helpers::render_boolean(s, b)); diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 919190fd..4b838a7e 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -56,15 +56,15 @@ class Boiler : public EMSdevice { bool mqtt_ha_config_ = false; // HA MQTT Discovery bool mqtt_ha_config_ww_ = false; // HA MQTT Discovery - static constexpr uint8_t EMS_TYPE_UBAParameterWW = 0x33; - static constexpr uint8_t EMS_TYPE_UBAFunctionTest = 0x1D; - static constexpr uint8_t EMS_TYPE_UBAFlags = 0x35; - static constexpr uint8_t EMS_TYPE_UBASetPoints = 0x1A; - static constexpr uint8_t EMS_TYPE_UBAParameters = 0x16; - static constexpr uint8_t EMS_TYPE_UBAParametersPlus = 0xE6; - static constexpr uint8_t EMS_TYPE_UBAParameterWWPlus = 0xEA; - static constexpr uint16_t EMS_TYPE_UBAInfomration = 0x495; - static constexpr uint16_t EMS_TYPE_UBAEnergySupplied = 0x494; + static constexpr uint8_t EMS_TYPE_UBAParameterWW = 0x33; + static constexpr uint8_t EMS_TYPE_UBAFunctionTest = 0x1D; + static constexpr uint8_t EMS_TYPE_UBAFlags = 0x35; + static constexpr uint8_t EMS_TYPE_UBASetPoints = 0x1A; + static constexpr uint8_t EMS_TYPE_UBAParameters = 0x16; + static constexpr uint8_t EMS_TYPE_UBAParametersPlus = 0xE6; + static constexpr uint8_t EMS_TYPE_UBAParameterWWPlus = 0xEA; + static constexpr uint16_t EMS_TYPE_UBAInfomration = 0x495; + static constexpr uint16_t EMS_TYPE_UBAEnergySupplied = 0x494; static constexpr uint8_t EMS_BOILER_SELFLOWTEMP_HEATING = 20; // was originally 70, changed to 30 for issue #193, then to 20 with issue #344 From d31758f69bda41ccb0921cecc53e095486fb1e3e Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 18:43:26 +0100 Subject: [PATCH 179/225] clean-up tests --- src/test/test.cpp | 41 ----------------------------------------- 1 file changed, 41 deletions(-) diff --git a/src/test/test.cpp b/src/test/test.cpp index 911f5d8b..171caa6c 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -216,47 +216,6 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { if (command == "render") { shell.printfln(F("Testing render...")); - uint8_t test1 = 12; - int8_t test2 = -12; - uint16_t test3 = 456; - int16_t test4 = -456; - uint8_t test5 = 1; // bool = on - uint32_t test6 = 305419896; - float test7 = 89.43; - - uint8_t test1u = EMS_VALUE_UINT_NOTSET; - int8_t test2u = EMS_VALUE_INT_NOTSET; - - uint8_t test5u = EMS_VALUE_BOOL_NOTSET; - uint32_t test6u = EMS_VALUE_ULONG_NOTSET; - - uint16_t test3u = EMS_VALUE_USHORT_NOTSET; - int16_t test4u = EMS_VALUE_SHORT_NOTSET; - - /* - EMSdevice::print_value(shell, 2, F("Selected flow temperature1"), test1, F_(degrees)); // 12 - EMSdevice::print_value(shell, 2, F("Selected flow temperature2"), test2, F_(degrees)); // -12 - EMSdevice::print_value(shell, 2, F("Selected flow temperature3"), test3, F_(degrees), 10); // 45.6 - EMSdevice::print_value(shell, 2, F("Selected flow temperature4"), test4, F_(degrees), 10); // -45.6 - EMSdevice::print_value(shell, 2, F("Selected flow temperature5"), test5, nullptr, EMS_VALUE_BOOL); // on - EMSdevice::print_value(shell, 2, F("Selected flow temperature6"), test6, F_(degrees)); // - EMSdevice::print_value(shell, 2, F("Selected flow temperature7"), test7, F_(degrees), 2); // 89.43 - EMSdevice::print_value(shell, 2, F("Warm Water comfort setting"), F("Intelligent")); - char s[100]; - strcpy(s, "Not very intelligent"); - EMSdevice::print_value(shell, 2, F("Warm Water comfort setting2"), s); - - shell.println(); - - EMSdevice::print_value(shell, 2, F("Selected flow temperature1u"), test1u, F_(degrees)); - EMSdevice::print_value(shell, 2, F("Selected flow temperature2u"), test2u, F_(degrees)); - EMSdevice::print_value(shell, 2, F("Selected flow temperature3u"), test3u, F_(degrees), 10); - EMSdevice::print_value(shell, 2, F("Selected flow temperature4u"), test4u, F_(degrees), 10); - EMSdevice::print_value(shell, 2, F("Selected flow temperature5u"), test5u, F_(degrees), EMS_VALUE_BOOL); - EMSdevice::print_value(shell, 2, F("Selected flow temperature6u"), test6u, F_(degrees), 100); -*/ - shell.println(); - // check read_value to make sure it handles all the data type correctly uint8_t message_data[] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; // message_length is 9 auto telegram = std::make_shared(Telegram::Operation::RX, 0x10, 0x11, 0x1234, 0, message_data, sizeof(message_data)); From dc5c33c3c32db517ba21cda926b064be5a99a00b Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 18:43:51 +0100 Subject: [PATCH 180/225] merge gzip into firmware rename function --- platformio.ini | 4 ++-- scripts/gzip_fw.py | 39 --------------------------------------- scripts/rename_fw.py | 39 ++++++++++++++++++++------------------- 3 files changed, 22 insertions(+), 60 deletions(-) delete mode 100644 scripts/gzip_fw.py diff --git a/platformio.ini b/platformio.ini index e42dcbd8..520a3412 100644 --- a/platformio.ini +++ b/platformio.ini @@ -50,7 +50,6 @@ check_flags = extra_scripts = scripts/main_script.py scripts/rename_fw.py - scripts/gzip_fw.py board = esp12e platform = espressif8266 board_build.filesystem = littlefs @@ -61,7 +60,6 @@ build_flags = ${common.build_flags} [env:esp32-ci] extra_scripts = scripts/rename_fw.py - scripts/gzip_fw.py board = esp32dev platform = espressif32 board_build.partitions = min_spiffs.csv @@ -71,6 +69,7 @@ build_flags = ${common.build_flags} extra_scripts = pre:scripts/build_interface.py scripts/main_script.py + scripts/rename_fw.py board = esp12e ; https://github.com/platformio/platform-espressif8266/tree/master/boards platform = espressif8266 ; https://github.com/platformio/platform-espressif8266/releases board_build.filesystem = littlefs @@ -85,6 +84,7 @@ lib_ignore = [env:esp32] extra_scripts = pre:scripts/build_interface.py + scripts/rename_fw.py board = esp32dev platform = espressif32 ; platform = https://github.com/platformio/platform-espressif32.git diff --git a/scripts/gzip_fw.py b/scripts/gzip_fw.py deleted file mode 100644 index 8c39ede1..00000000 --- a/scripts/gzip_fw.py +++ /dev/null @@ -1,39 +0,0 @@ -Import('env') -import os -import re -import shutil -import gzip - -OUTPUT_DIR = "build{}".format(os.path.sep) - -def bin_gzip(source, target, env): - - # get the version - bag = {} - exprs = [ - (re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"'), 'app_version'), - ] - with open('./src/version.h', 'r') as f: - for l in f.readlines(): - for expr, var in exprs: - m = expr.match(l) - if m and len(m.groups()) > 0: - bag[var] = m.group(1) - - app_version = bag.get('app_version') - - variant = "EMS-ESP-" + app_version.replace(".", "_") + "-" + str(target[0]).split(os.path.sep)[2] - - # create string with location and file names based on variant - bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) - gzip_file = "{}firmware{}{}.bin.gz".format(OUTPUT_DIR, os.path.sep, variant) - - # check if new target files exist and remove if necessary - if os.path.isfile(gzip_file): os.remove(gzip_file) - - # write gzip firmware file - with open(bin_file,"rb") as fp: - with gzip.open(gzip_file, "wb", compresslevel = 9) as f: - shutil.copyfileobj(fp, f) - -env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_gzip]) \ No newline at end of file diff --git a/scripts/rename_fw.py b/scripts/rename_fw.py index ec80c625..37eec618 100644 --- a/scripts/rename_fw.py +++ b/scripts/rename_fw.py @@ -1,17 +1,16 @@ -Import('env') +Import('env', "projenv") import os import re import shutil +import gzip OUTPUT_DIR = "build{}".format(os.path.sep) def bin_copy(source, target, env): - # get the version + # get the EMS-ESP version bag = {} - exprs = [ - (re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"'), 'app_version'), - ] + exprs = [(re.compile(r'^#define EMSESP_APP_VERSION\s+"(\S+)"'), 'app_version')] with open('./src/version.h', 'r') as f: for l in f.readlines(): for expr, var in exprs: @@ -19,27 +18,29 @@ def bin_copy(source, target, env): if m and len(m.groups()) > 0: bag[var] = m.group(1) - app_version = bag.get('app_version') - variant = "EMS-ESP-" + app_version.replace(".", "_") + "-" + str(target[0]).split(os.path.sep)[2] - - # check if output directories exist and create if necessary - if not os.path.isdir(OUTPUT_DIR): - os.mkdir(OUTPUT_DIR) - - for d in ['firmware']: - if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)): - os.mkdir("{}{}".format(OUTPUT_DIR, d)) + # esp8266 or esp32 + platform = "esp" + env['PIOPLATFORM'].strip("espressif") + # str(target[0]).split(os.path.sep)[2] + variant = "EMS-ESP-" + bag.get('app_version').replace(".", "_") + "-" + platform + # create string with location and file names based on variant bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) + gzip_file = "{}firmware{}{}.bin.gz".format(OUTPUT_DIR, os.path.sep, variant) # check if new target files exist and remove if necessary - for f in [bin_file]: - if os.path.isfile(f): - os.remove(f) + if os.path.isfile(bin_file): os.remove(bin_file) + if os.path.isfile(gzip_file): os.remove(gzip_file) - # copy firmware.bin to firmware/.bin + # copy firmware.bin to new name shutil.copy(str(target[0]), bin_file) + # create a zip'd version + with open(bin_file, "rb") as fp: + with gzip.open(gzip_file, "wb", compresslevel = 9) as f: + shutil.copyfileobj(fp, f) + + print("Built firmwares: "+ bin_file + ", " + gzip_file) + env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_copy]) From a69ad09eb7c0014a7945778d5876863f5129b4f0 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 18:44:14 +0100 Subject: [PATCH 181/225] mention external libs like esp8266-react and uuid-* --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 164076b1..0e319bbe 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![release-date](https://img.shields.io/github/release-date/proddy/EMS-ESP.svg?label=Released)](https://github.com/proddy/EMS-ESP/commits/master) [![license](https://img.shields.io/github/license/proddy/EMS-ESP.svg)](LICENSE) ![Build Firmware](https://github.com/proddy/EMS-ESP/workflows/Build%20Firmware/badge.svg?branch=dev) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/b8880625bdf841d4adb2829732030887)](https://app.codacy.com/app/proddy/EMS-ESP?utm_source=github.com&utm_medium=referral&utm_content=proddy/EMS-ESP&utm_campaign=Badge_Grade_Settings) +[![Codacy Badge](https://app.codacy.com/project/badge/Grade/a37be4d45e5f47749b6e356c8e738a80)](https://www.codacy.com/gh/proddy/EMS-ESP/dashboard?utm_source=github.com&utm_medium=referral&utm_content=proddy/EMS-ESP&utm_campaign=Badge_Grade) [![downloads](https://img.shields.io/github/downloads/proddy/EMS-ESP/total.svg)](https://github.com/proddy/EMS-ESP/releases) [![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/proddy/EMS-ESP.svg)](http://isitmaintained.com/project/proddy/EMS-ESP "Average time to resolve an issue") [![Percentage of issues still open](http://isitmaintained.com/badge/open/proddy/EMS-ESP.svg)](http://isitmaintained.com/project/proddy/EMS-ESP "Percentage of issues still open") @@ -82,17 +82,18 @@ If you're looking for support on **EMS-ESP** there are some options available: ## **Contributing** You can contribute to EMS-ESP by -- providing Pull Requests (Features, Fixes, suggestions). -- testing new released features and report issues on your EMS equipment. -- contributing to missing [Documentation](https://emsesp.github.io/docs). +- providing Pull Requests (Features, Fixes, suggestions) +- testing new released features and report issues on your EMS equipment +- contributing to missing [Documentation](https://emsesp.github.io/docs) ## **Credits** A shout out to the people helping EMS-ESP get to where it is today... - **@MichaelDvP** for all his amazing contributions and patience. Specifically for the improved uart library, thermostat and mixer logic. - **@BBQKees** for his endless testing and building the awesome circuit boards -- **@susisstrolch** for writing a first working version of the EMS bridge circuit which I used to design EMS-ESP version 0.1 back in August 2017 -- plus everyone else providing suggestions, PRs and the odd donation that keep us motivated. Thanks! +- **@rjwats** for his [esp8266-react](https://github.com/rjwats/esp8266-react) framework that provides the new Web UI +- **@nomis** for his core [console](https://github.com/nomis/mcu-uuid-console), telnet and syslog core libraries +- plus everyone else providing suggestions, PRs and the odd donation that keeps this project open source. Thanks! ## **License** From cd8cc9d8610a132f2a769da41002b0dd7c119584 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 21:30:55 +0100 Subject: [PATCH 182/225] fix: create firmware folder if it doesn't exist --- scripts/rename_fw.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/rename_fw.py b/scripts/rename_fw.py index 37eec618..17075b91 100644 --- a/scripts/rename_fw.py +++ b/scripts/rename_fw.py @@ -18,28 +18,32 @@ def bin_copy(source, target, env): if m and len(m.groups()) > 0: bag[var] = m.group(1) - # esp8266 or esp32 platform = "esp" + env['PIOPLATFORM'].strip("espressif") - # str(target[0]).split(os.path.sep)[2] + # if using the pio build directory, use str(target[0]).split(os.path.sep)[2] variant = "EMS-ESP-" + bag.get('app_version').replace(".", "_") + "-" + platform # create string with location and file names based on variant bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) gzip_file = "{}firmware{}{}.bin.gz".format(OUTPUT_DIR, os.path.sep, variant) - # check if new target files exist and remove if necessary - if os.path.isfile(bin_file): os.remove(bin_file) - if os.path.isfile(gzip_file): os.remove(gzip_file) + # check if firmware directory and target subdirectories (esp8266/esp32) exist and create if necessary + if not os.path.isdir(OUTPUT_DIR): + os.mkdir(OUTPUT_DIR) + for d in ['firmware']: + if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)): + os.mkdir("{}{}".format(OUTPUT_DIR, d)) - # copy firmware.bin to new name + # copy firmware.bin to new name and in the build/firmware folder, delete if already exists + if os.path.isfile(bin_file): os.remove(bin_file) shutil.copy(str(target[0]), bin_file) - # create a zip'd version + # create the gzip'd version + if os.path.isfile(gzip_file): os.remove(gzip_file) with open(bin_file, "rb") as fp: - with gzip.open(gzip_file, "wb", compresslevel = 9) as f: - shutil.copyfileobj(fp, f) + with gzip.open(gzip_file, "wb", compresslevel = 9) as f: + shutil.copyfileobj(fp, f) print("Built firmwares: "+ bin_file + ", " + gzip_file) From 558f61489d66025c8d934bc30d141818010536f0 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 21:43:33 +0100 Subject: [PATCH 183/225] minor cleanup of log messages --- src/WebAPIService.cpp | 7 +++---- src/WebSettingsService.cpp | 6 ------ src/WebStatusService.cpp | 8 ++++---- src/emsdevice.cpp | 1 - src/mqtt.cpp | 6 +++--- src/system.cpp | 4 ++-- 6 files changed, 12 insertions(+), 20 deletions(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index 4f3e6d4c..9d1938c4 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -93,23 +93,22 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { std::string debug(200, '\0'); snprintf_P(&debug[0], debug.capacity() + 1, - PSTR("API: device=%s cmd=%s data=%s id=%s [%s]"), + PSTR("[DEBUG] API: device=%s cmd=%s data=%s id=%s [%s]"), device.c_str(), cmd.c_str(), data.c_str(), id.c_str(), ok ? PSTR("OK") : PSTR("Invalid")); - EMSESP::logger().info(debug.c_str()); + EMSESP::logger().debug(debug.c_str()); if (json.size()) { char buffer2[EMSESP_MAX_JSON_SIZE_DYN]; serializeJson(doc, buffer2); - EMSESP::logger().info("json (max 255 chars): %s", buffer2); + EMSESP::logger().debug("json (max 255 chars): %s", buffer2); } #endif // if we have returned data in JSON format, send this to the WEB if (json.size()) { - // doc.shrinkToFit(); char buffer[EMSESP_MAX_JSON_SIZE_DYN]; serializeJsonPretty(doc, buffer); request->send(200, "text/plain", buffer); diff --git a/src/WebSettingsService.cpp b/src/WebSettingsService.cpp index caac97a7..84739786 100644 --- a/src/WebSettingsService.cpp +++ b/src/WebSettingsService.cpp @@ -138,32 +138,26 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) // either via the Web UI or via the Console void WebSettingsService::onUpdate() { if (WebSettings::has_flags(WebSettings::ChangeFlags::SHOWER)) { - // EMSESP::logger().info(F("shower changed!")); EMSESP::shower_.start(); } if (WebSettings::has_flags(WebSettings::ChangeFlags::DALLAS)) { - // EMSESP::logger().info(F("dallas changed!")); EMSESP::dallassensor_.start(); } if (WebSettings::has_flags(WebSettings::ChangeFlags::UART)) { - // EMSESP::logger().info(F("uart changed!")); EMSESP::init_tx(); } if (WebSettings::has_flags(WebSettings::ChangeFlags::SYSLOG)) { - // EMSESP::logger().info(F("syslog changed!")); System::syslog_init(); } if (WebSettings::has_flags(WebSettings::ChangeFlags::OTHER)) { - // EMSESP::logger().info(F("other changed!")); System::other_init(); } if (WebSettings::has_flags(WebSettings::ChangeFlags::LED)) { - // EMSESP::logger().info(F("led changed!")); System::led_init(); } } diff --git a/src/WebStatusService.cpp b/src/WebStatusService.cpp index dcafa34f..c50db160 100644 --- a/src/WebStatusService.cpp +++ b/src/WebStatusService.cpp @@ -40,18 +40,18 @@ WebStatusService::WebStatusService(AsyncWebServer * server, SecurityManager * se #ifdef ESP32 void WebStatusService::onStationModeDisconnected(WiFiEvent_t event, WiFiEventInfo_t info) { - EMSESP::logger().debug(F("WiFi Disconnected. Reason code=%d"), info.disconnected.reason); + EMSESP::logger().info(F("WiFi Disconnected. Reason code=%d"), info.disconnected.reason); } void WebStatusService::onStationModeGotIP(WiFiEvent_t event, WiFiEventInfo_t info) { - EMSESP::logger().debug(F("WiFi Connected with IP=%s, hostname=%s"), WiFi.localIP().toString().c_str(), WiFi.getHostname()); + EMSESP::logger().info(F("WiFi Connected with IP=%s, hostname=%s"), WiFi.localIP().toString().c_str(), WiFi.getHostname()); EMSESP::system_.send_heartbeat(); // send out heartbeat MQTT as soon as we have a connection } #elif defined(ESP8266) void WebStatusService::onStationModeDisconnected(const WiFiEventStationModeDisconnected & event) { - EMSESP::logger().debug(F("WiFi Disconnected. Reason code=%d"), event.reason); + EMSESP::logger().info(F("WiFi Disconnected. Reason code=%d"), event.reason); } void WebStatusService::onStationModeGotIP(const WiFiEventStationModeGotIP & event) { - EMSESP::logger().debug(F("WiFi Connected with IP=%s, hostname=%s"), event.ip.toString().c_str(), WiFi.hostname().c_str()); + EMSESP::logger().info(F("WiFi Connected with IP=%s, hostname=%s"), event.ip.toString().c_str(), WiFi.hostname().c_str()); EMSESP::system_.send_heartbeat(); // send out heartbeat MQTT as soon as we have a connection } #endif diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index a496cb08..4299052e 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -327,7 +327,6 @@ bool EMSdevice::handle_telegram(std::shared_ptr telegram) { return false; } - // EMSESP::logger().debug(F("Received %s"), uuid::read_flash_string(tf.telegram_type_name_).c_str()); tf.process_function_(telegram); return true; } diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 62ab7fd5..ed168595 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -681,7 +681,7 @@ void Mqtt::process_queue() { if (mqtt_qos_ != 0) { mqtt_messages_.front().packet_id_ = packet_id; #if defined(EMSESP_DEBUG) - LOG_DEBUG(F("Setting packetID for ACK to %d"), packet_id); + LOG_DEBUG(F("[DEBUG] Setting packetID for ACK to %d"), packet_id); #endif return; } @@ -821,9 +821,9 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, LOG_ERROR(F("Failed to publish topic %s"), topic); } else { #if defined(EMSESP_STANDALONE) - LOG_DEBUG(F("Publishing topic=%s, payload=%s"), topic, payload_text.c_str()); + LOG_DEBUG(F("[DEBUG] Publishing topic=%s, payload=%s"), topic, payload_text.c_str()); #else - LOG_DEBUG(F("Publishing topic %s"), topic); + LOG_DEBUG(F("[DEBUG] Publishing topic %s"), topic); #endif } diff --git a/src/system.cpp b/src/system.cpp index bd5418d0..2634a1ab 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -93,7 +93,7 @@ bool System::command_publish(const char * value, const int8_t id) { // restart EMS-ESP void System::restart() { - LOG_NOTICE(F("Restarting system...")); + LOG_INFO(F("Restarting system...")); Shell::loop_all(); delay(1000); // wait a second #if defined(ESP8266) @@ -105,7 +105,7 @@ void System::restart() { // saves all settings void System::wifi_reconnect() { - LOG_NOTICE(F("The wifi will reconnect...")); + LOG_INFO(F("The wifi will reconnect...")); Shell::loop_all(); delay(1000); // wait a second EMSESP::webSettingsService.save(); // local settings From 5a31de24a80ff7e7b8fae93bf4b7ad0202ee5145 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 23:32:58 +0100 Subject: [PATCH 184/225] default to my esp32 build --- interface/.env.development | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/interface/.env.development b/interface/.env.development index 214c0f7b..8f0b64ff 100644 --- a/interface/.env.development +++ b/interface/.env.development @@ -2,9 +2,9 @@ # Remember to also enable CORS in platformio.ini before uploading the code to the device. # ESP32 dev -#REACT_APP_HTTP_ROOT=http://10.10.10.194 -#REACT_APP_WEB_SOCKET_ROOT=ws://10.10.10.194 +REACT_APP_HTTP_ROOT=http://10.10.10.194 +REACT_APP_WEB_SOCKET_ROOT=ws://10.10.10.194 # ESP8266 dev -REACT_APP_HTTP_ROOT=http://10.10.10.140 -REACT_APP_WEB_SOCKET_ROOT=ws://10.10.10.140 +#REACT_APP_HTTP_ROOT=http://10.10.10.140 +#REACT_APP_WEB_SOCKET_ROOT=ws://10.10.10.140 From bf65b99e7fffc0cf95961f829e3ab6be2598de4f Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 23:33:37 +0100 Subject: [PATCH 185/225] rename devicedata nodes --- interface/src/project/EMSESPDevicesForm.tsx | 10 +++++----- interface/src/project/EMSESPtypes.ts | 4 ++-- src/emsesp.cpp | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/interface/src/project/EMSESPDevicesForm.tsx b/interface/src/project/EMSESPDevicesForm.tsx index 00b7ee2d..bed023de 100644 --- a/interface/src/project/EMSESPDevicesForm.tsx +++ b/interface/src/project/EMSESPDevicesForm.tsx @@ -96,7 +96,7 @@ class EMSESPDevicesForm extends Component< }; noDeviceData = () => { - return (this.state.deviceData?.deviceData || []).length === 0; + return (this.state.deviceData?.data || []).length === 0; }; createDeviceItems() { @@ -330,7 +330,7 @@ class EMSESPDevicesForm extends Component<

    - {deviceData.deviceName} + {deviceData.name} {!this.noDeviceData() && ( @@ -341,14 +341,14 @@ class EMSESPDevicesForm extends Component< > - {deviceData.deviceData.map((item, i) => { + {deviceData.data.map((item, i) => { if (i % 2) { return null; } else { return ( - {deviceData.deviceData[i]} - {deviceData.deviceData[i + 1]} + {deviceData.data[i]} + {deviceData.data[i + 1]} ); } diff --git a/interface/src/project/EMSESPtypes.ts b/interface/src/project/EMSESPtypes.ts index ba76b401..0142f3fe 100644 --- a/interface/src/project/EMSESPtypes.ts +++ b/interface/src/project/EMSESPtypes.ts @@ -55,6 +55,6 @@ export interface EMSESPDevices { } export interface EMSESPDeviceData { - deviceName: string; - deviceData: string[]; + name: string; + data: string[]; } diff --git a/src/emsesp.cpp b/src/emsesp.cpp index df7a9acd..01dfb2ef 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -677,8 +677,8 @@ void EMSESP::device_info_web(const uint8_t unique_id, JsonObject & root) { for (const auto & emsdevice : emsdevices) { if (emsdevice) { if (emsdevice->unique_id() == unique_id) { - root["deviceName"] = emsdevice->to_string_short(); // can't use c_str() because of scope - JsonArray data = root.createNestedArray("deviceData"); + root["name"] = emsdevice->to_string_short(); // can't use c_str() because of scope + JsonArray data = root.createNestedArray("data"); emsdevice->device_info_web(data); return; } @@ -741,7 +741,7 @@ bool EMSESP::add_device(const uint8_t device_id, const uint8_t product_id, std:: for (const auto & emsdevice : emsdevices) { if (emsdevice) { if (emsdevice->is_device_id(device_id)) { - LOG_DEBUG(F("Updating details on already existing device ID 0x%02X"), device_id); + LOG_DEBUG(F("Updating details for already active device ID 0x%02X"), device_id); emsdevice->product_id(product_id); emsdevice->version(version); // only set brand if it doesn't already exist From a745aa4fd83b1467889e11fef5a7192f7d71e3f0 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 23:34:14 +0100 Subject: [PATCH 186/225] rename json sizes --- src/WebAPIService.cpp | 6 +++--- src/WebDevicesService.cpp | 2 +- src/WebStatusService.cpp | 2 +- src/WebStatusService.h | 1 - src/console.cpp | 2 +- src/emsesp.h | 12 ++++++------ 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index 9d1938c4..e986adbf 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -71,7 +71,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { id = "-1"; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_DYN); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_MEDIUM_DYN); JsonObject json = doc.to(); bool ok = false; @@ -109,9 +109,9 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { // if we have returned data in JSON format, send this to the WEB if (json.size()) { - char buffer[EMSESP_MAX_JSON_SIZE_DYN]; + std::string buffer; serializeJsonPretty(doc, buffer); - request->send(200, "text/plain", buffer); + request->send(200, "text/plain", buffer.c_str()); } else { request->send(200, "text/plain", ok ? F("OK") : F("Invalid")); } diff --git a/src/WebDevicesService.cpp b/src/WebDevicesService.cpp index cd910fc1..0c644864 100644 --- a/src/WebDevicesService.cpp +++ b/src/WebDevicesService.cpp @@ -45,7 +45,7 @@ void WebDevicesService::scan_devices(AsyncWebServerRequest * request) { } void WebDevicesService::all_devices(AsyncWebServerRequest * request) { - AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE_DYN); + AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE); JsonObject root = response->getRoot(); JsonArray devices = root.createNestedArray("devices"); diff --git a/src/WebStatusService.cpp b/src/WebStatusService.cpp index c50db160..dc812e49 100644 --- a/src/WebStatusService.cpp +++ b/src/WebStatusService.cpp @@ -57,7 +57,7 @@ void WebStatusService::onStationModeGotIP(const WiFiEventStationModeGotIP & even #endif void WebStatusService::webStatusService(AsyncWebServerRequest * request) { - AsyncJsonResponse * response = new AsyncJsonResponse(false, MAX_EMSESP_STATUS_SIZE); + AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE); JsonObject root = response->getRoot(); root["status"] = EMSESP::bus_status(); // 0, 1 or 2 diff --git a/src/WebStatusService.h b/src/WebStatusService.h index f1625354..353413dc 100644 --- a/src/WebStatusService.h +++ b/src/WebStatusService.h @@ -25,7 +25,6 @@ #include #include -#define MAX_EMSESP_STATUS_SIZE 1024 #define EMSESP_STATUS_SERVICE_PATH "/rest/emsespStatus" namespace emsesp { diff --git a/src/console.cpp b/src/console.cpp index a811e343..f2b54c69 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -387,7 +387,7 @@ void EMSESPShell::add_console_commands() { return; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_DYN); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_MEDIUM_DYN); JsonObject json = doc.to(); bool ok = false; diff --git a/src/emsesp.h b/src/emsesp.h index 771443e8..c537c039 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -52,12 +52,12 @@ #define WATCH_ID_NONE 0 // no watch id set -#define EMSESP_MAX_JSON_SIZE_HA_CONFIG 384 // for small HA config payloads -#define EMSESP_MAX_JSON_SIZE_SMALL 256 // for smaller json docs when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, when using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data. Using StaticJsonDocument -#define EMSESP_MAX_JSON_SIZE_DYN 2048 // for large json docs from web. Using DynamicJsonDocument -#define EMSESP_MAX_JSON_SIZE_LARGE_DYN 4098 // for very large json docs. Using DynamicJsonDocument +#define EMSESP_MAX_JSON_SIZE_HA_CONFIG 384 // for small HA config payloads, using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_SMALL 256 // for smaller json docs, using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_MEDIUM 768 // for medium json docs from ems devices, using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data, using StaticJsonDocument +#define EMSESP_MAX_JSON_SIZE_MEDIUM_DYN 1024 // for large json docs, using DynamicJsonDocument +#define EMSESP_MAX_JSON_SIZE_LARGE_DYN 2048 // for very large json docs, using DynamicJsonDocument namespace emsesp { From 08e2c519e6705d85c7997afa855d9d8aaf73b0e6 Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 23:34:30 +0100 Subject: [PATCH 187/225] remove telegram_error_count() --- src/telegram.h | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/telegram.h b/src/telegram.h index 8a4e9393..706b57f7 100644 --- a/src/telegram.h +++ b/src/telegram.h @@ -223,10 +223,6 @@ class RxService : public EMSbus { return telegram_error_count_; } - void increment_telegram_error_count() { - telegram_error_count_++; - } - uint8_t quality() const { if (telegram_error_count_ == 0) { return 100; // all good, 100% From 5c4f85948d16891e0d8a8626a2fb4c1038a721da Mon Sep 17 00:00:00 2001 From: proddy Date: Sat, 28 Nov 2020 23:34:54 +0100 Subject: [PATCH 188/225] don't count errors if Rx queue is full --- src/telegram.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/telegram.cpp b/src/telegram.cpp index dfca8afc..d0167945 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -145,7 +145,7 @@ void RxService::add(uint8_t * data, uint8_t length) { // validate the CRC. if it fails then increment the number of corrupt/incomplete telegrams and only report to console/syslog uint8_t crc = calculate_crc(data, length - 1); if (data[length - 1] != crc) { - increment_telegram_error_count(); + telegram_error_count_++; LOG_ERROR(F("Rx: %s (CRC %02X != %02X)"), Helpers::data_to_hex(data, length).c_str(), data[length - 1], crc); return; } @@ -218,7 +218,6 @@ void RxService::add(uint8_t * data, uint8_t length) { // check if queue is full, if so remove top item to make space if (rx_telegrams_.size() >= MAX_RX_TELEGRAMS) { rx_telegrams_.pop_front(); - increment_telegram_error_count(); } rx_telegrams_.emplace_back(rx_telegram_id_++, std::move(telegram)); // add to queue From ca2b3ec2f82aed65b31ce93d2fe060b0551f389f Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 29 Nov 2020 10:19:42 +0100 Subject: [PATCH 189/225] max number for gpio is 40 (not 255) --- interface/src/project/EMSESPSettingsController.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/interface/src/project/EMSESPSettingsController.tsx b/interface/src/project/EMSESPSettingsController.tsx index 1bf8b113..6ea8dc90 100644 --- a/interface/src/project/EMSESPSettingsController.tsx +++ b/interface/src/project/EMSESPSettingsController.tsx @@ -82,7 +82,7 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) Date: Sun, 29 Nov 2020 10:20:46 +0100 Subject: [PATCH 190/225] max number of gpios is 40 --- interface/src/project/EMSESPSettingsController.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/interface/src/project/EMSESPSettingsController.tsx b/interface/src/project/EMSESPSettingsController.tsx index 6ea8dc90..ca97a8af 100644 --- a/interface/src/project/EMSESPSettingsController.tsx +++ b/interface/src/project/EMSESPSettingsController.tsx @@ -110,7 +110,7 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps)
    Date: Sun, 29 Nov 2020 10:30:14 +0100 Subject: [PATCH 191/225] fix standalone compile error, use string stream --- src/WebAPIService.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index e986adbf..3aee6c42 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -101,7 +101,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { ok ? PSTR("OK") : PSTR("Invalid")); EMSESP::logger().debug(debug.c_str()); if (json.size()) { - char buffer2[EMSESP_MAX_JSON_SIZE_DYN]; + std::string buffer2; serializeJson(doc, buffer2); EMSESP::logger().debug("json (max 255 chars): %s", buffer2); } From 4f469326c4b57b54d87d397dee8b1af7cdbb80cc Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 29 Nov 2020 21:05:48 +0100 Subject: [PATCH 192/225] script updates --- debug_esp32_pio_local.ini | 3 +++ example_esp8266_pio_local.ini | 5 +++++ scripts/firmware_upload.py | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 scripts/firmware_upload.py diff --git a/debug_esp32_pio_local.ini b/debug_esp32_pio_local.ini index 5fdf2b1d..b32b1e3f 100644 --- a/debug_esp32_pio_local.ini +++ b/debug_esp32_pio_local.ini @@ -23,3 +23,6 @@ debug_tool = esp-prog debug_init_break = tbreak setup build_type = debug extra_scripts = + ; pre:scripts/build_interface.py + scripts/rename_fw.py + diff --git a/example_esp8266_pio_local.ini b/example_esp8266_pio_local.ini index b7a63ef6..efa8e404 100644 --- a/example_esp8266_pio_local.ini +++ b/example_esp8266_pio_local.ini @@ -4,6 +4,9 @@ [platformio] default_envs = esp8266 +[common] +; debug_flags = -DENABLE_CORS -DEMSESP_TEST + [env] ; upload_port = COM3 @@ -15,4 +18,6 @@ upload_port = ems-esp.local [env:esp8266] extra_scripts = + ; pre:scripts/build_interface.py scripts/main_script.py + scripts/rename_fw.py diff --git a/scripts/firmware_upload.py b/scripts/firmware_upload.py new file mode 100644 index 00000000..3528452e --- /dev/null +++ b/scripts/firmware_upload.py @@ -0,0 +1,18 @@ +# for calling dos upload from Window WSL2 Linux, because serial ports are not mapped yet +Import('env', "projenv") +from subprocess import call + +def upload(source, target, env): + + print("bin file: " + str(target[0])) + + # esp8266 or esp32 + platform = "esp" + env['PIOPLATFORM'].strip("espressif") + + if platform == 'esp8266': + call(["cmd.exe", "/c", "C:\\Users\\Paul\\OneDrive\\Desktop\\com8266.bat"]) + + if platform == 'esp32': + call(["cmd.exe", "/c", "C:\\Users\\Paul\\OneDrive\\Desktop\\com32.bat"]) + +env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [upload]) From 561803dd7e90103edee2cefee699c6500eb90a20 Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 29 Nov 2020 21:06:04 +0100 Subject: [PATCH 193/225] test for #620 --- src/test/test.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/test/test.cpp b/src/test/test.cpp index 171caa6c..b677539b 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -290,6 +290,16 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { uart_telegram({0x08, 0x0B, 0x14, 00, 0x3C, 0x1F, 0xAC, 0x70}); } + if (command == "620") { + EMSESP::logger().info(F("Testing 620...")); + + // Version Controller + uart_telegram({0x09, 0x0B, 0x02, 0x00, 0x5F, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + + // Version Boiler + uart_telegram({0x08, 0x0B, 0x02, 0x00, 0x5F, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}); + } + // unknown device if (command == "unknown") { shell.printfln(F("Testing unknown...")); From d840c61af3ac13aa8fdc5e850d376b637dd476ca Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 29 Nov 2020 21:06:43 +0100 Subject: [PATCH 194/225] use publish_ha() for HA config topics --- src/dallassensor.cpp | 4 ++-- src/devices/boiler.cpp | 2 +- src/devices/heatpump.cpp | 2 +- src/devices/mixer.cpp | 4 ++-- src/devices/solar.cpp | 2 +- src/devices/switch.cpp | 3 ++- src/devices/thermostat.cpp | 4 ++-- 7 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/dallassensor.cpp b/src/dallassensor.cpp index 68fe8824..3beef959 100644 --- a/src/dallassensor.cpp +++ b/src/dallassensor.cpp @@ -151,7 +151,7 @@ void DallasSensor::loop() { scancnt_ = 0; } else if (scancnt_ == -2) { // startup firstscan_ = sensors_.size(); - LOG_DEBUG(F("First scan found %d dallassensor(s). Adding them."), firstscan_); + LOG_DEBUG(F("Adding %d dallassensor(s) from first scan"), firstscan_); } else if ((scancnt_ <= 0) && (firstscan_ != sensors_.size())) { // check 2 times for no change of sensor # scancnt_ = -3; sensors_.clear(); // restart scaning and clear to get correct numbering @@ -367,7 +367,7 @@ void DallasSensor::publish_values(const bool force) { std::string topic(100, '\0'); snprintf_P(&topic[0], 100, PSTR("homeassistant/sensor/ems-esp/dallas_%s/config"), sensor.to_string().c_str()); - Mqtt::publish_retain(topic, config.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(topic, config.as()); registered_ha_[sensor_no - 1] = true; } diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 5d5d09dc..af9c4dd6 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -103,7 +103,7 @@ void Boiler::register_mqtt_ha_config() { dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-boiler"); - Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/boiler/config"), doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(F("homeassistant/sensor/ems-esp/boiler/config"), doc.as()); // publish the config payload with retain flag Mqtt::register_mqtt_ha_binary_sensor(F_(tapwaterActive), device_type(), "tapwater_active"); Mqtt::register_mqtt_ha_binary_sensor(F_(heatingActive), device_type(), "heating_active"); diff --git a/src/devices/heatpump.cpp b/src/devices/heatpump.cpp index 67b53e4f..8245d1b6 100644 --- a/src/devices/heatpump.cpp +++ b/src/devices/heatpump.cpp @@ -100,7 +100,7 @@ void Heatpump::register_mqtt_ha_config() { dev["mdl"] = this->name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-heatpump"); - Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/heatpump/config"), doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(F("homeassistant/sensor/ems-esp/heatpump/config"), doc.as()); // publish the config payload with retain flag Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(airHumidity), device_type(), "airHumidity", F_(percent), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(dewTemperature), device_type(), "dewTemperature", F_(degrees), nullptr); diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index d3c2c6a0..07140c57 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -163,7 +163,7 @@ void Mixer::register_mqtt_ha_config() { std::string topic(100, '\0'); if (type() == Type::HC) { snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_hc%d/config"), hc_); - Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(topic, doc.as()); // publish the config payload with retain flag char hc_name[10]; snprintf_P(hc_name, sizeof(hc_name), PSTR("hc%d"), hc_); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowTemp), device_type(), "flowTemp", F_(degrees), F_(icontemperature)); @@ -173,7 +173,7 @@ void Mixer::register_mqtt_ha_config() { } else { // WWC snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_wwc%d/config"), hc_); - Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(topic, doc.as()); // publish the config payload with retain flag char wwc_name[10]; snprintf_P(wwc_name, sizeof(wwc_name), PSTR("wwc%d"), hc_); Mqtt::register_mqtt_ha_sensor(wwc_name, nullptr, F_(wwTemp), device_type(), "wwTemp", F_(degrees), F_(icontemperature)); diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 154d7123..5b8dd9df 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -133,7 +133,7 @@ void Solar::register_mqtt_ha_config() { dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-solar"); - Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/solar/config"), doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(F("homeassistant/sensor/ems-esp/solar/config"), doc.as()); // publish the config payload with retain flag Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(collectorTemp), device_type(), "collectorTemp", F_(degrees), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(tankBottomTemp), device_type(), "tankBottomTemp", F_(degrees), nullptr); diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index e0d3ac5d..278536a7 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -126,7 +126,8 @@ void Switch::register_mqtt_ha_config() { JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-switch"); - Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/switch/config"), doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(F("homeassistant/sensor/ems-esp/switch/config"), doc.as()); // publish the config payload with retain flag + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(activated), device_type(), "activated", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(flowTemp), device_type(), "flowTemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(status), device_type(), "status", nullptr, nullptr); diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 36536766..a8b6b00f 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -814,7 +814,7 @@ void Thermostat::register_mqtt_ha_config() { dev["mdl"] = name(); JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp-thermostat"); - Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/thermostat/config"), doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(F("homeassistant/sensor/ems-esp/thermostat/config"), doc.as()); // publish the config payload with retain flag Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(time), device_type(), "time", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(error), device_type(), "errorcode", nullptr, nullptr); @@ -903,7 +903,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { std::string topic(100, '\0'); snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/climate/ems-esp/thermostat_hc%d/config"), hc_num); - Mqtt::publish_retain(topic, doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(topic, doc.as()); // publish the config payload with retain flag // enable the a special "thermostat_hc" topic to take both mode strings and floats for each of the heating circuits std::string topic2(100, '\0'); From 5893739e73a364d3ab91a16da1fa65301806a18c Mon Sep 17 00:00:00 2001 From: proddy Date: Sun, 29 Nov 2020 21:07:53 +0100 Subject: [PATCH 195/225] publish_ha()..still causes the occasional crash on ESP8266 --- src/mqtt.cpp | 98 +++++++++++++++++++++++++++++++--------------------- src/mqtt.h | 4 +++ 2 files changed, 63 insertions(+), 39 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index ed168595..8e974be3 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -487,14 +487,14 @@ void Mqtt::on_connect() { if (mqtt_format() == Format::HA) { ha_status(); } - - publish_retain(F("status"), "online", true); // say we're alive to the Last Will topic, with retain on } else { // we doing a re-connect from a TCP break // only re-subscribe again to all MQTT topics resubscribe(); } + publish_retain(F("status"), "online", true); // say we're alive to the Last Will topic, with retain on + LOG_INFO(F("MQTT connected")); reset_publish_fails(); // reset fail count to 0 } @@ -522,7 +522,7 @@ void Mqtt::ha_status() { JsonArray ids = dev.createNestedArray("ids"); ids.add("ems-esp"); - Mqtt::publish_retain(F("homeassistant/sensor/ems-esp/status/config"), doc.as(), true); // publish the config payload with retain flag + Mqtt::publish_ha(F("homeassistant/sensor/ems-esp/status/config"), doc.as()); // publish the config payload with retain flag } // add sub or pub task to the queue. @@ -603,13 +603,6 @@ void Mqtt::publish_retain(const __FlashStringHelper * topic, const std::string & // publish json doc, only if its not empty, using the retain flag void Mqtt::publish_retain(const std::string & topic, const JsonObject & payload, bool retain) { - /* - // for HA, empty payload will remove the previous config - if (retain == true) { - publish(topic); - } - */ - if (enabled() && payload.size()) { std::string payload_text; serializeJson(payload, payload_text); // convert json to string @@ -621,6 +614,54 @@ void Mqtt::publish_retain(const __FlashStringHelper * topic, const JsonObject & publish_retain(uuid::read_flash_string(topic), payload, retain); } +void Mqtt::publish_ha(const __FlashStringHelper * topic, const JsonObject & payload) { + publish_ha(uuid::read_flash_string(topic), payload); +} + +// publish a Home Assistant config topic and payload, with retain flag off. +// for ESP32 its added to the queue, for ESP8266 is sent immediatelty +void Mqtt::publish_ha(const std::string & topic, const JsonObject & payload) { + if (!enabled() || !payload.size()) { + return; + } + + // empty payload will remove the previous config + // publish(topic); + + std::string payload_text; + payload_text.reserve(measureJson(payload) + 1); + serializeJson(payload, payload_text); // convert json to string + +#if defined(EMSESP_STANDALONE) + LOG_DEBUG(F("Publishing HA topic=%s, payload=%s"), topic, payload_text.c_str()); +#else + LOG_DEBUG(F("Publishing HA topic %s"), topic.c_str()); +#endif + +#if defined(ESP32) + bool queued = true; // queue MQTT publish +#else + bool queued = false; // publish immediately +#endif + + // if MQTT is not connected, then we have to queue the msg until the MQTT is online + if (!connected()) { + queued = true; // override + } + + if (queued) { + queue_publish_message(topic, payload_text, true); // with retain true + return; + } + + // send immediately and then wait a while + if (!mqttClient_->publish(topic.c_str(), 0, true, payload_text.c_str())) { + LOG_ERROR(F("Failed to publish topic %s"), topic.c_str()); + } + + delay(MQTT_HA_PUBLISH_DELAY); // enough time to send the short message out +} + // take top from queue and perform the publish or subscribe action // assumes there is an MQTT connection void Mqtt::process_queue() { @@ -695,7 +736,8 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons return; } - StaticJsonDocument doc; + // StaticJsonDocument doc; + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_HA_CONFIG); doc["name"] = name; doc["uniq_id"] = entity; @@ -726,8 +768,7 @@ void Mqtt::register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, cons char topic[MQTT_TOPIC_MAX_SIZE]; snprintf_P(topic, sizeof(topic), PSTR("homeassistant/binary_sensor/ems-esp/%s/config"), entity); - // queue MQTT publish - publish_retain(topic, doc.as(), true); + publish_ha(topic, doc.as()); } // HA config for a normal 'sensor' type @@ -744,6 +785,9 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, return; } + // StaticJsonDocument doc; + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_HA_CONFIG); + // create entity by prefixing any given prefix char new_entity[50]; if (prefix != nullptr) { @@ -789,11 +833,6 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, } new_name[0] = toupper(new_name[0]); // capitalize first letter -#if defined(ESP32) - StaticJsonDocument doc; -#else - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_HA_CONFIG); -#endif doc["name"] = new_name; doc["uniq_id"] = uniq; if (uom != nullptr) { @@ -804,31 +843,12 @@ void Mqtt::register_mqtt_ha_sensor(const char * prefix, if (icon != nullptr) { doc["ic"] = icon; } + JsonObject dev = doc.createNestedObject("dev"); JsonArray ids = dev.createNestedArray("ids"); ids.add(ha_device); -#if defined(ESP32) - // queue MQTT publish - publish_retain(topic, doc.as(), true); -#else - // convert json to string and publish immediately with retain forced to true - std::string payload_text; - serializeJson(doc, payload_text); // convert json to string - - uint16_t packet_id = mqttClient_->publish(topic, 0, true, payload_text.c_str()); - if (!packet_id) { - LOG_ERROR(F("Failed to publish topic %s"), topic); - } else { -#if defined(EMSESP_STANDALONE) - LOG_DEBUG(F("[DEBUG] Publishing topic=%s, payload=%s"), topic, payload_text.c_str()); -#else - LOG_DEBUG(F("[DEBUG] Publishing topic %s"), topic); -#endif - } - - delay(50); // enough time to send the short message out -#endif + publish_ha(topic, doc.as()); } } // namespace emsesp diff --git a/src/mqtt.h b/src/mqtt.h index 00877883..03b469c0 100644 --- a/src/mqtt.h +++ b/src/mqtt.h @@ -38,6 +38,8 @@ using uuid::console::Shell; +#define MQTT_HA_PUBLISH_DELAY 50 + namespace emsesp { using mqtt_subfunction_p = std::function; @@ -95,6 +97,8 @@ class Mqtt { static void publish_retain(const std::string & topic, const JsonObject & payload, bool retain); static void publish_retain(const __FlashStringHelper * topic, const std::string & payload, bool retain); static void publish_retain(const __FlashStringHelper * topic, const JsonObject & payload, bool retain); + static void publish_ha(const std::string & topic, const JsonObject & payload); + static void publish_ha(const __FlashStringHelper * topic, const JsonObject & payload); static void register_mqtt_ha_binary_sensor(const __FlashStringHelper * name, const uint8_t device_type, const char * entity); static void register_mqtt_ha_sensor(const char * prefix, From 33625d12e2b50cf6913f8a991c1a5cca64f523cc Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 30 Nov 2020 09:07:37 +0100 Subject: [PATCH 196/225] fix standalone build --- src/WebAPIService.cpp | 2 +- src/mqtt.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index 3aee6c42..77d13de9 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -103,7 +103,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { if (json.size()) { std::string buffer2; serializeJson(doc, buffer2); - EMSESP::logger().debug("json (max 255 chars): %s", buffer2); + EMSESP::logger().debug("json (max 255 chars): %s", buffer2.c_str()); } #endif diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 8e974be3..9be2cd84 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -633,7 +633,7 @@ void Mqtt::publish_ha(const std::string & topic, const JsonObject & payload) { serializeJson(payload, payload_text); // convert json to string #if defined(EMSESP_STANDALONE) - LOG_DEBUG(F("Publishing HA topic=%s, payload=%s"), topic, payload_text.c_str()); + LOG_DEBUG(F("Publishing HA topic=%s, payload=%s"), topic.c_str(), payload_text.c_str()); #else LOG_DEBUG(F("Publishing HA topic %s"), topic.c_str()); #endif From 9ccf3966d97c94a2a7878aea2e49d74f625539f2 Mon Sep 17 00:00:00 2001 From: Henne Van Och Date: Mon, 30 Nov 2020 12:12:45 +0100 Subject: [PATCH 197/225] Add % as unit of measurement for the valve status --- src/devices/mixer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index 07140c57..878be10c 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -169,7 +169,7 @@ void Mixer::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowTemp), device_type(), "flowTemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowSetTemp), device_type(), "flowSetTemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(pumpStatus), device_type(), "pumpStatus", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(valveStatus), device_type(), "valveStatus", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(valveStatus), device_type(), "valveStatus", F_(percent), F_(iconpercent)); } else { // WWC snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_wwc%d/config"), hc_); From f3b3f9fc60de877e05c784a55688ef6846ddac7d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 30 Nov 2020 17:00:06 +0100 Subject: [PATCH 198/225] json sizes for web and console --- src/WebDevicesService.cpp | 4 ++-- src/WebStatusService.cpp | 2 +- src/emsesp.cpp | 6 +++--- src/emsesp.h | 1 + 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/WebDevicesService.cpp b/src/WebDevicesService.cpp index 0c644864..e3410f5f 100644 --- a/src/WebDevicesService.cpp +++ b/src/WebDevicesService.cpp @@ -45,7 +45,7 @@ void WebDevicesService::scan_devices(AsyncWebServerRequest * request) { } void WebDevicesService::all_devices(AsyncWebServerRequest * request) { - AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE); + AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE_DYN); JsonObject root = response->getRoot(); JsonArray devices = root.createNestedArray("devices"); @@ -80,7 +80,7 @@ void WebDevicesService::all_devices(AsyncWebServerRequest * request) { void WebDevicesService::device_data(AsyncWebServerRequest * request, JsonVariant & json) { if (json.is()) { - AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE_DYN); + AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_MAX_DYN); #ifndef EMSESP_STANDALONE uint8_t id = json["id"]; // get id from selected table row EMSESP::device_info_web(id, (JsonObject &)response->getRoot()); diff --git a/src/WebStatusService.cpp b/src/WebStatusService.cpp index dc812e49..cb1ed697 100644 --- a/src/WebStatusService.cpp +++ b/src/WebStatusService.cpp @@ -57,7 +57,7 @@ void WebStatusService::onStationModeGotIP(const WiFiEventStationModeGotIP & even #endif void WebStatusService::webStatusService(AsyncWebServerRequest * request) { - AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_LARGE); + AsyncJsonResponse * response = new AsyncJsonResponse(false, EMSESP_MAX_JSON_SIZE_MEDIUM_DYN); JsonObject root = response->getRoot(); root["status"] = EMSESP::bus_status(); // 0, 1 or 2 diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 01dfb2ef..b0e18478 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -264,7 +264,7 @@ void EMSESP::show_device_values(uuid::console::Shell & shell) { return; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE_DYN); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_MAX_DYN); // do this in the order of factory classes to keep a consistent order when displaying for (const auto & device_class : EMSFactory::device_handlers()) { @@ -677,8 +677,8 @@ void EMSESP::device_info_web(const uint8_t unique_id, JsonObject & root) { for (const auto & emsdevice : emsdevices) { if (emsdevice) { if (emsdevice->unique_id() == unique_id) { - root["name"] = emsdevice->to_string_short(); // can't use c_str() because of scope - JsonArray data = root.createNestedArray("data"); + root["name"] = emsdevice->to_string_short(); // can't use c_str() because of scope + JsonArray data = root.createNestedArray("data"); emsdevice->device_info_web(data); return; } diff --git a/src/emsesp.h b/src/emsesp.h index c537c039..4fc851b2 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -58,6 +58,7 @@ #define EMSESP_MAX_JSON_SIZE_LARGE 1024 // for large json docs from ems devices, like boiler or thermostat data, using StaticJsonDocument #define EMSESP_MAX_JSON_SIZE_MEDIUM_DYN 1024 // for large json docs, using DynamicJsonDocument #define EMSESP_MAX_JSON_SIZE_LARGE_DYN 2048 // for very large json docs, using DynamicJsonDocument +#define EMSESP_MAX_JSON_SIZE_MAX_DYN 4096 // for very very large json docs, using DynamicJsonDocument namespace emsesp { From bf0c966c1140c268821b421b6d7b8d5195cf5777 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 30 Nov 2020 17:00:35 +0100 Subject: [PATCH 199/225] check command before adding --- src/command.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/command.cpp b/src/command.cpp index 6dc23308..54186b78 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -84,6 +84,10 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val // add a command to the list, which does not return json void Command::add(const uint8_t device_type, const uint8_t device_id, const __FlashStringHelper * cmd, cmdfunction_p cb) { + // if the command already exists for that device type don't add it + if (find_command(device_type, uuid::read_flash_string(cmd).c_str()) != nullptr) { + return; + } cmdfunctions_.emplace_back(device_type, cmd, cb, nullptr); // see if we need to subscribe From 998de8b3c115cf61147d8e5ee6c85ae1c7f8a450 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 30 Nov 2020 17:01:45 +0100 Subject: [PATCH 200/225] if mqtt disconnected save memory --- src/mqtt.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 9be2cd84..e711cef9 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -74,6 +74,10 @@ void Mqtt::subscribe(const uint8_t device_type, const std::string & topic, mqtt_ // add to MQTT queue as a subscribe operation auto message = queue_subscribe_message(topic); + if (message == nullptr) { + return; + } + // register in our libary with the callback function. // We store both the original topic and the fully-qualified one mqtt_subfunctions_.emplace_back(device_type, std::move(topic), std::move(message->topic), std::move(cb)); @@ -556,7 +560,7 @@ std::shared_ptr Mqtt::queue_message(const uint8_t operation, // add MQTT message to queue, payload is a string std::shared_ptr Mqtt::queue_publish_message(const std::string & topic, const std::string & payload, bool retain) { - if (!enabled()) { + if (!enabled() || !connected()) { return nullptr; }; return queue_message(Operation::PUBLISH, topic, payload, retain); From e25104289764ab605d4959823f1fd82ae8217f3c Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 30 Nov 2020 17:05:58 +0100 Subject: [PATCH 201/225] boiler maintenance and time units --- src/devices/boiler.cpp | 49 +++++++++++++++++++++++++++++++----------- src/devices/boiler.h | 6 ++++++ src/devices/mixer.cpp | 2 +- src/locale_EN.h | 5 +++++ 4 files changed, 48 insertions(+), 14 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index af9c4dd6..d4a96091 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -76,6 +76,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors) + EMSESP::send_read_request(0x15, device_id); // read maintenace data on start (only published on change) } // create the config topics for Home Assistant MQTT Discovery @@ -163,6 +164,9 @@ void Boiler::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppHeating), device_type(), "nrgSuppHeating", F_(kwh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppWw), device_type(), "nrgSuppWw", F_(kwh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppCooling), device_type(), "nrgSuppCooling", F_(kwh), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceType), device_type(), "maintenanceType", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceTime), device_type(), "maintenanceTime", F_(hours), nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceDate), device_type(), "maintenanceDate", nullptr, nullptr); mqtt_ha_config_ = true; // done } @@ -271,6 +275,9 @@ void Boiler::device_info_web(JsonArray & root) { create_value_json(root, F("nrgSuppHeating"), nullptr, F_(nrgSuppHeating), F_(kwh), json); create_value_json(root, F("nrgSuppWw"), nullptr, F_(nrgSuppWw), F_(kwh), json); create_value_json(root, F("nrgSuppCooling"), nullptr, F_(nrgSuppCooling), F_(kwh), json); + create_value_json(root, F("maintenanceType"), nullptr, F_(maintenanceType), nullptr, json); + create_value_json(root, F("maintenanceTime"), nullptr, F_(maintenanceTime), F_(hours), json); + create_value_json(root, F("maintenanceDate"), nullptr, F_(maintenanceDate), nullptr, json); doc.clear(); if (!export_values_ww(json, true)) { // append ww values @@ -696,9 +703,9 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { if (Helpers::hasValue(upTimeControl_)) { if (textformat) { char slong[40]; - json["upTimeControl"] = Helpers::render_value(slong, upTimeControl_, EMS_VALUE_TIME); + json["upTimeControl"] = Helpers::render_value(slong, upTimeControl_ / 60, EMS_VALUE_TIME); } else { - json["upTimeControl"] = upTimeControl_; + json["upTimeControl"] = upTimeControl_ / 60; } } @@ -706,9 +713,9 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { if (Helpers::hasValue(upTimeCompHeating_)) { if (textformat) { char slong[40]; - json["upTimeCompHeating"] = Helpers::render_value(slong, upTimeCompHeating_, EMS_VALUE_TIME); + json["upTimeCompHeating"] = Helpers::render_value(slong, upTimeCompHeating_ / 60, EMS_VALUE_TIME); } else { - json["upTimeCompHeating"] = upTimeCompHeating_; + json["upTimeCompHeating"] = upTimeCompHeating_ / 60; } } @@ -716,9 +723,9 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { if (Helpers::hasValue(upTimeCompCooling_)) { if (textformat) { char slong[40]; - json["upTimeCompCooling"] = Helpers::render_value(slong, upTimeCompCooling_, EMS_VALUE_TIME); + json["upTimeCompCooling"] = Helpers::render_value(slong, upTimeCompCooling_ / 60, EMS_VALUE_TIME); } else { - json["upTimeCompCooling"] = upTimeCompCooling_; + json["upTimeCompCooling"] = upTimeCompCooling_ / 60; } } @@ -726,9 +733,9 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { if (Helpers::hasValue(upTimeCompWw_)) { if (textformat) { char slong[40]; - json["upTimeCompWw"] = Helpers::render_value(slong, upTimeCompWw_, EMS_VALUE_TIME); + json["upTimeCompWw"] = Helpers::render_value(slong, upTimeCompWw_ / 60, EMS_VALUE_TIME); } else { - json["upTimeCompWw"] = upTimeCompWw_; + json["upTimeCompWw"] = upTimeCompWw_ / 60; } } @@ -807,6 +814,16 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { json["nrgSuppCooling"] = nrgSuppCooling_; } + if (Helpers::hasValue(maintenanceType_)) { + // char s[7]; + // json["maintenanceType"] = Helpers::render_enum(s, {F("off"), F("Time"), F("Date")}, maintenanceType_); + if (maintenanceType_ == 1) { + json["maintenanceTime"] = maintenanceTime_ * 100; + } else if (maintenanceType_ == 2) { + json["maintenanceDate"] = maintenanceDate_; + } + } + return (json.size()); } // namespace emsesp @@ -1184,8 +1201,10 @@ void Boiler::process_UBAFlags(std::shared_ptr telegram) { // 0x1C // not yet implemented -void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegram) { - // first byte: Maintenance due (0 = no, 3 = yes, due to operating hours, 8 = yes, due to date) +// 08 00 1C 94 0B 0A 1D 31 08 00 80 00 00 00 -> message for 29.11.2020 +// 08 00 1C 94 0B 0A 1D 31 00 00 00 00 00 00 -> message reset + void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegram) { + // 5. byte: Maintenance due (0 = no, 3 = yes, due to operating hours, 8 = yes, due to date) } #pragma GCC diagnostic pop @@ -1217,9 +1236,13 @@ void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { // 0x15 void Boiler::process_UBAMaintenanceData(std::shared_ptr telegram) { // first byte: Maintenance messages (0 = none, 1 = by operating hours, 2 = by date) - // I see a value of 3 in the 1st byte when the boiler is booted, so probably a flag - if (telegram->message_data[0] == 3) { - LOG_WARNING(F("Boiler has booted.")); + telegram->read_value(maintenanceType_, 0); + telegram->read_value(maintenanceTime_, 1); + uint8_t day = telegram->message_data[2]; + uint8_t month = telegram->message_data[3]; + uint8_t year = telegram->message_data[4]; + if (day > 0 && month > 0 && year > 0) { + snprintf_P(maintenanceDate_,sizeof(maintenanceDate_),PSTR("%02d.%02d.%04d"),day,month,year + 2000); } } diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 4b838a7e..180f6c46 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -176,6 +176,12 @@ class Boiler : public EMSdevice { uint32_t nrgSuppWw_ = EMS_VALUE_ULONG_NOTSET; // Energy supplied warm water uint32_t nrgSuppCooling_ = EMS_VALUE_ULONG_NOTSET; // Energy supplied cooling + // _UBAMaintenanceData + uint8_t maintenanceType_ = EMS_VALUE_UINT_NOTSET; + uint8_t maintenanceTime_ = EMS_VALUE_UINT_NOTSET; + char maintenanceDate_[12] = {'\0'}; + + void process_UBAParameterWW(std::shared_ptr telegram); void process_UBAMonitorFast(std::shared_ptr telegram); void process_UBATotalUptime(std::shared_ptr telegram); diff --git a/src/devices/mixer.cpp b/src/devices/mixer.cpp index 878be10c..7b9a7a03 100644 --- a/src/devices/mixer.cpp +++ b/src/devices/mixer.cpp @@ -169,7 +169,7 @@ void Mixer::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowTemp), device_type(), "flowTemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(flowSetTemp), device_type(), "flowSetTemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(pumpStatus), device_type(), "pumpStatus", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(valveStatus), device_type(), "valveStatus", F_(percent), F_(iconpercent)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(valveStatus), device_type(), "valveStatus", F_(percent), F_(iconpercent)); } else { // WWC snprintf_P(&topic[0], topic.capacity() + 1, PSTR("homeassistant/sensor/ems-esp/mixer_wwc%d/config"), hc_); diff --git a/src/locale_EN.h b/src/locale_EN.h index 2ff007df..e8d5fb39 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -64,6 +64,7 @@ MAKE_PSTR_WORD(pin) MAKE_PSTR_WORD(publish) MAKE_PSTR_WORD(bar) MAKE_PSTR_WORD(min) +MAKE_PSTR_WORD(hours) MAKE_PSTR_WORD(uA) MAKE_PSTR_WORD(timeout) @@ -219,6 +220,10 @@ MAKE_PSTR(nrgSuppTotal, "Energy supplied total") MAKE_PSTR(nrgSuppHeating, "Energy supplied heating") MAKE_PSTR(nrgSuppWw, "Energy supplied warm water") MAKE_PSTR(nrgSuppCooling, "Energy supplied cooling") +MAKE_PSTR(maintenanceType, "Type of maintenace") +MAKE_PSTR(maintenanceTime, "Next maintenace in") +MAKE_PSTR(maintenanceDate, "Next maintenace on") + // solar MAKE_PSTR(collectorTemp, "Collector temperature (TS1)") MAKE_PSTR(tankBottomTemp, "Bottom temperature (TS2)") From 6ac0140a2da876600d193fc2e5cbc722ce5ee803 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 30 Nov 2020 17:07:42 +0100 Subject: [PATCH 202/225] add maintenance to changelog --- CHANGELOG_LATEST.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index e37914c1..ad7fb9da 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -10,7 +10,7 @@ - Add solar configuration telegrams (#616) [thanks @hpanther] - `log trace` shows decoded telegrams, `watch unknown` for only unknown telegrams - WM10 switch telegrams -- boiler information (#633) +- boiler information (#633) and maintenance ### Fixed - mixer IPM pumpstatus From 0567f9176b059c14eb569a033b857fdf74bd726d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Mon, 30 Nov 2020 19:57:28 +0100 Subject: [PATCH 203/225] maintenance message and command --- CHANGELOG_LATEST.md | 3 +- src/devices/boiler.cpp | 66 +++++++++++++++++++++++++++++++++++------- src/devices/boiler.h | 2 ++ src/locale_EN.h | 7 +++-- 4 files changed, 64 insertions(+), 14 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index ad7fb9da..b6408f82 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -10,7 +10,8 @@ - Add solar configuration telegrams (#616) [thanks @hpanther] - `log trace` shows decoded telegrams, `watch unknown` for only unknown telegrams - WM10 switch telegrams -- boiler information (#633) and maintenance +- boiler information (#633) +- maintenance message and command ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index d4a96091..73e319a8 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -73,6 +73,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_mqtt_cmd(F("burnperiod"), [&](const char * value, const int8_t id) { return set_burn_period(value, id); }); register_mqtt_cmd(F("pumpdelay"), [&](const char * value, const int8_t id) { return set_pump_delay(value, id); }); register_mqtt_cmd(F("reset"), [&](const char * value, const int8_t id) { return set_reset(value, id); }); + register_mqtt_cmd(F("maintenance"), [&](const char * value, const int8_t id) { return set_maintenance(value, id); }); EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors) @@ -164,7 +165,8 @@ void Boiler::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppHeating), device_type(), "nrgSuppHeating", F_(kwh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppWw), device_type(), "nrgSuppWw", F_(kwh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppCooling), device_type(), "nrgSuppCooling", F_(kwh), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceType), device_type(), "maintenanceType", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceMessage), device_type(), "maintenanceMessage", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenance), device_type(), "maintenance", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceTime), device_type(), "maintenanceTime", F_(hours), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceDate), device_type(), "maintenanceDate", nullptr, nullptr); mqtt_ha_config_ = true; // done @@ -275,7 +277,8 @@ void Boiler::device_info_web(JsonArray & root) { create_value_json(root, F("nrgSuppHeating"), nullptr, F_(nrgSuppHeating), F_(kwh), json); create_value_json(root, F("nrgSuppWw"), nullptr, F_(nrgSuppWw), F_(kwh), json); create_value_json(root, F("nrgSuppCooling"), nullptr, F_(nrgSuppCooling), F_(kwh), json); - create_value_json(root, F("maintenanceType"), nullptr, F_(maintenanceType), nullptr, json); + create_value_json(root, F("maintenanceMessage"), nullptr, F_(maintenanceMessage), nullptr, json); + create_value_json(root, F("maintenance"), nullptr, F_(maintenance), nullptr, json); create_value_json(root, F("maintenanceTime"), nullptr, F_(maintenanceTime), F_(hours), json); create_value_json(root, F("maintenanceDate"), nullptr, F_(maintenanceDate), nullptr, json); @@ -814,10 +817,16 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { json["nrgSuppCooling"] = nrgSuppCooling_; } + if (Helpers::hasValue(maintenanceMessage_) && maintenanceMessage_ > 0) { + char s[5]; + snprintf_P(s, sizeof(s), PSTR("H%02d"), maintenanceMessage_); + json["maintenanceMessage"] = s; + } + if (Helpers::hasValue(maintenanceType_)) { - // char s[7]; - // json["maintenanceType"] = Helpers::render_enum(s, {F("off"), F("Time"), F("Date")}, maintenanceType_); - if (maintenanceType_ == 1) { + if (maintenanceType_ == 0) { + json["maintenance"] = FJSON("off"); + } else if (maintenanceType_ == 1) { json["maintenanceTime"] = maintenanceTime_ * 100; } else if (maintenanceType_ == 2) { json["maintenanceDate"] = maintenanceDate_; @@ -1199,16 +1208,16 @@ void Boiler::process_UBASetPoints(std::shared_ptr telegram) { void Boiler::process_UBAFlags(std::shared_ptr telegram) { } +#pragma GCC diagnostic pop + // 0x1C -// not yet implemented // 08 00 1C 94 0B 0A 1D 31 08 00 80 00 00 00 -> message for 29.11.2020 // 08 00 1C 94 0B 0A 1D 31 00 00 00 00 00 00 -> message reset void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegram) { // 5. byte: Maintenance due (0 = no, 3 = yes, due to operating hours, 8 = yes, due to date) + changed_ |= telegram->read_value(maintenanceMessage_,5); } -#pragma GCC diagnostic pop - // 0x10, 0x11 void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr @@ -1601,8 +1610,45 @@ bool Boiler::set_reset(const char * value, const int8_t id) { if (v == false) { return false; } - LOG_INFO(F("restarting boiler")); - write_command(0x05, 0x08, 0xFF); + LOG_INFO(F("Reset boiler maintenance message")); + write_command(0x05, 0x08, 0xFF, 0x1C); + + return true; +} + +//maintenance +bool Boiler::set_maintenance(const char * value, const int8_t id) { + if (strlen(value) == 10) { // date + uint8_t day = (value[0] - '0') * 10 + (value[1] - '0'); + uint8_t month = (value[3] - '0') * 10 + (value[4] - '0'); + uint8_t year = (Helpers::atoint(&value[6]) - 2000); + if (day > 0 && day < 32 && month > 0 && month < 13 && year > 19) { + LOG_INFO(F("Setting maintenance to %02d.%02d.%04d"), day, month, year + 2000); + write_command(0x15, 2, day); + write_command(0x15, 3, month); + write_command(0x15, 4, year); + write_command(0x15, 0, 2, 0x15); + } else { + LOG_WARNING(F("Setting maintenance: wrong format %d.%d.%d"), day, month, year + 2000); + return false; + } + return true; + } + + int hrs; + if (!Helpers::value2number(value, hrs)) { + LOG_WARNING(F("Setting maintenance: wrong format")); + return false; + } + + if (hrs == 0) { + LOG_INFO(F("Setting maintenance off")); + write_command(0x15, 0, 0, 0x15); // off + } else { + LOG_INFO(F("Setting maintenance in %d hours"), hrs); + write_command(0x15, 1, (uint8_t)(hrs / 100)); + write_command(0x15, 0, 1, 0x15); + } return true; } diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 180f6c46..a81fd98d 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -177,6 +177,7 @@ class Boiler : public EMSdevice { uint32_t nrgSuppCooling_ = EMS_VALUE_ULONG_NOTSET; // Energy supplied cooling // _UBAMaintenanceData + uint8_t maintenanceMessage_ = EMS_VALUE_UINT_NOTSET; uint8_t maintenanceType_ = EMS_VALUE_UINT_NOTSET; uint8_t maintenanceTime_ = EMS_VALUE_UINT_NOTSET; char maintenanceDate_[12] = {'\0'}; @@ -223,6 +224,7 @@ class Boiler : public EMSdevice { bool set_burn_period(const char * value, const int8_t id); bool set_pump_delay(const char * value, const int8_t id); bool set_reset(const char * value, const int8_t id); + bool set_maintenance(const char * value, const int8_t id); }; } // namespace emsesp diff --git a/src/locale_EN.h b/src/locale_EN.h index e8d5fb39..5422a7b1 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -220,9 +220,10 @@ MAKE_PSTR(nrgSuppTotal, "Energy supplied total") MAKE_PSTR(nrgSuppHeating, "Energy supplied heating") MAKE_PSTR(nrgSuppWw, "Energy supplied warm water") MAKE_PSTR(nrgSuppCooling, "Energy supplied cooling") -MAKE_PSTR(maintenanceType, "Type of maintenace") -MAKE_PSTR(maintenanceTime, "Next maintenace in") -MAKE_PSTR(maintenanceDate, "Next maintenace on") +MAKE_PSTR(maintenanceMessage, "Maintenance message") +MAKE_PSTR(maintenance, "Scheduled maintenance") +MAKE_PSTR(maintenanceTime, "Next maintenance in") +MAKE_PSTR(maintenanceDate, "Next maintenance on") // solar MAKE_PSTR(collectorTemp, "Collector temperature (TS1)") From a54a89d3e566719080536153efe34fc069c3ff07 Mon Sep 17 00:00:00 2001 From: proddy Date: Tue, 1 Dec 2020 13:38:04 +0100 Subject: [PATCH 204/225] mention EMS-ESP version when reporting bugs --- .github/ISSUE_TEMPLATE/bug_report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 7a3704ca..26b44d84 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -17,7 +17,7 @@ assignees: '' *You can now remove this line and the above ones. Text in italic is meant to be replaced by your own words. If any of the sections below are not relevant to the issue (for instance, the screenshots) then you can delete them.* **Bug description** -*A clear and concise description of what the bug is.* +*A clear and concise description of what the bug is. Mention which EMS-ESP version you're using.* **Steps to reproduce** *Steps to reproduce the behavior.* From c1e8c64c8d97eb43b146eefda2188fad7c037d12 Mon Sep 17 00:00:00 2001 From: proddy Date: Thu, 3 Dec 2020 10:44:56 +0100 Subject: [PATCH 205/225] remove HA availabilty topic for showing EMS-ESP status attributes --- src/mqtt.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index e711cef9..51c8f992 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -512,7 +512,7 @@ void Mqtt::ha_status() { doc["name"] = FJSON("EMS-ESP status"); doc["uniq_id"] = FJSON("status"); doc["~"] = System::hostname(); // ems-esp - doc["avty_t"] = FJSON("~/status"); + // doc["avty_t"] = FJSON("~/status"); doc["json_attr_t"] = FJSON("~/heartbeat"); doc["stat_t"] = FJSON("~/heartbeat"); doc["val_tpl"] = FJSON("{{value_json['status']}}"); From 9484c713a26bb09ae839a95d489b103e863c198d Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 3 Dec 2020 18:48:46 +0100 Subject: [PATCH 206/225] json size for console and api --- src/WebAPIService.cpp | 2 +- src/console.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/WebAPIService.cpp b/src/WebAPIService.cpp index 77d13de9..55077cb3 100644 --- a/src/WebAPIService.cpp +++ b/src/WebAPIService.cpp @@ -71,7 +71,7 @@ void WebAPIService::webAPIService(AsyncWebServerRequest * request) { id = "-1"; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_MEDIUM_DYN); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE_DYN); JsonObject json = doc.to(); bool ok = false; diff --git a/src/console.cpp b/src/console.cpp index f2b54c69..65e1b80e 100644 --- a/src/console.cpp +++ b/src/console.cpp @@ -387,7 +387,7 @@ void EMSESPShell::add_console_commands() { return; } - DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_MEDIUM_DYN); + DynamicJsonDocument doc(EMSESP_MAX_JSON_SIZE_LARGE_DYN); JsonObject json = doc.to(); bool ok = false; From 1b5989dc6d1d0fe3cadcbc523e8800e63f52c721 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 3 Dec 2020 18:49:23 +0100 Subject: [PATCH 207/225] make sure tx_mode 0 never sends --- src/uart/emsuart_esp32.cpp | 3 +++ src/uart/emsuart_esp8266.cpp | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/uart/emsuart_esp32.cpp b/src/uart/emsuart_esp32.cpp index 0599b181..1f050ab3 100644 --- a/src/uart/emsuart_esp32.cpp +++ b/src/uart/emsuart_esp32.cpp @@ -186,6 +186,9 @@ uint16_t EMSuart::transmit(const uint8_t * buf, const uint8_t len) { if (len == 0 || len >= EMS_MAXBUFFERSIZE) { return EMS_TX_STATUS_ERR; } + if (tx_mode_ == 0) { + return EMS_TX_STATUS_OK; + } if (tx_mode_ > 5) { // timer controlled modes for (uint8_t i = 0; i < len; i++) { diff --git a/src/uart/emsuart_esp8266.cpp b/src/uart/emsuart_esp8266.cpp index e6abdbe9..017f898d 100644 --- a/src/uart/emsuart_esp8266.cpp +++ b/src/uart/emsuart_esp8266.cpp @@ -233,6 +233,9 @@ uint16_t ICACHE_FLASH_ATTR EMSuart::transmit(uint8_t * buf, uint8_t len) { if (len == 0 || len >= EMS_MAXBUFFERSIZE) { return EMS_TX_STATUS_ERR; // nothing or to much to send } + if (tx_mode_ == 0) { + return EMS_TX_STATUS_OK; + } // timer controlled modes with extra delay if (tx_mode_ >= 5) { From 7209750d85b40887001cba51f2c6232100c2b1c3 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 3 Dec 2020 18:51:57 +0100 Subject: [PATCH 208/225] boiler maintenance less publish-names --- src/devices/boiler.cpp | 70 +++++++++++++++++++++++++++++------------- src/devices/boiler.h | 3 +- 2 files changed, 50 insertions(+), 23 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 73e319a8..28fe323d 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -72,7 +72,7 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_mqtt_cmd(F("boilhystoff"), [&](const char * value, const int8_t id) { return set_hyst_off(value, id); }); register_mqtt_cmd(F("burnperiod"), [&](const char * value, const int8_t id) { return set_burn_period(value, id); }); register_mqtt_cmd(F("pumpdelay"), [&](const char * value, const int8_t id) { return set_pump_delay(value, id); }); - register_mqtt_cmd(F("reset"), [&](const char * value, const int8_t id) { return set_reset(value, id); }); + // register_mqtt_cmd(F("reset"), [&](const char * value, const int8_t id) { return set_reset(value, id); }); register_mqtt_cmd(F("maintenance"), [&](const char * value, const int8_t id) { return set_maintenance(value, id); }); EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) @@ -167,8 +167,8 @@ void Boiler::register_mqtt_ha_config() { Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(nrgSuppCooling), device_type(), "nrgSuppCooling", F_(kwh), nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceMessage), device_type(), "maintenanceMessage", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenance), device_type(), "maintenance", nullptr, nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceTime), device_type(), "maintenanceTime", F_(hours), nullptr); - Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceDate), device_type(), "maintenanceDate", nullptr, nullptr); + // Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceTime), device_type(), "maintenanceTime", F_(hours), nullptr); + // Mqtt::register_mqtt_ha_sensor(nullptr, nullptr, F_(maintenanceDate), device_type(), "maintenanceDate", nullptr, nullptr); mqtt_ha_config_ = true; // done } @@ -278,10 +278,14 @@ void Boiler::device_info_web(JsonArray & root) { create_value_json(root, F("nrgSuppWw"), nullptr, F_(nrgSuppWw), F_(kwh), json); create_value_json(root, F("nrgSuppCooling"), nullptr, F_(nrgSuppCooling), F_(kwh), json); create_value_json(root, F("maintenanceMessage"), nullptr, F_(maintenanceMessage), nullptr, json); - create_value_json(root, F("maintenance"), nullptr, F_(maintenance), nullptr, json); - create_value_json(root, F("maintenanceTime"), nullptr, F_(maintenanceTime), F_(hours), json); - create_value_json(root, F("maintenanceDate"), nullptr, F_(maintenanceDate), nullptr, json); - + if (maintenanceType_ == 1) { + create_value_json(root, F("maintenance"), nullptr, F_(maintenance), F_(hours), json); + } else { + create_value_json(root, F("maintenance"), nullptr, F_(maintenance), nullptr, json); + } + // create_value_json(root, F("maintenance"), nullptr, F_(maintenance), nullptr, json); + // create_value_json(root, F("maintenanceTime"), nullptr, F_(maintenanceTime), F_(hours), json); + // create_value_json(root, F("maintenanceDate"), nullptr, F_(maintenanceDate), nullptr, json); doc.clear(); if (!export_values_ww(json, true)) { // append ww values return; @@ -817,19 +821,23 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { json["nrgSuppCooling"] = nrgSuppCooling_; } - if (Helpers::hasValue(maintenanceMessage_) && maintenanceMessage_ > 0) { - char s[5]; - snprintf_P(s, sizeof(s), PSTR("H%02d"), maintenanceMessage_); - json["maintenanceMessage"] = s; + if (Helpers::hasValue(maintenanceMessage_)) { + if (maintenanceMessage_ > 0) { + char s[5]; + snprintf_P(s, sizeof(s), PSTR("H%02d"), maintenanceMessage_); + json["maintenanceMessage"] = s; + // } else { + // json["maintenanceMessage"] = ""; + } } if (Helpers::hasValue(maintenanceType_)) { if (maintenanceType_ == 0) { json["maintenance"] = FJSON("off"); } else if (maintenanceType_ == 1) { - json["maintenanceTime"] = maintenanceTime_ * 100; + json["maintenance"] = maintenanceTime_ * 100; } else if (maintenanceType_ == 2) { - json["maintenanceDate"] = maintenanceDate_; + json["maintenance"] = maintenanceDate_; } } @@ -1283,7 +1291,9 @@ bool Boiler::set_flow_temp(const char * value, const int8_t id) { } LOG_INFO(F("Setting boiler flow temperature to %d C"), v); + // some boiler have it in 0x1A, some in 0x35, but both telegrams are sometimes writeonly write_command(EMS_TYPE_UBASetPoints, 0, v, EMS_TYPE_UBASetPoints); + // write_command(0x35, 3, v, 0x35); return true; } @@ -1601,23 +1611,41 @@ bool Boiler::set_warmwater_circulation_mode(const char * value, const int8_t id) return true; } + +/* // Reset command +// 0 & 1 Reset-Mode (Manuel, others) +// 8 reset maintenance message Hxx +// 12 & 13 Reset that Error-memory + bool Boiler::set_reset(const char * value, const int8_t id) { - bool v = false; - if (!Helpers::value2bool(value, v)) { + std::string s(12, '\0'); + if (!Helpers::value2string(value, s)) { return false; } - if (v == false) { - return false; + if (s == "maintenance") { + LOG_INFO(F("Reset boiler maintenance message")); + write_command(0x05, 0x08, 0xFF, 0x1C); + return true; + } else if (s == "error") { + LOG_INFO(F("Reset boiler error message")); + write_command(0x05, 0x00, 0x5A); error reset + return true; } - LOG_INFO(F("Reset boiler maintenance message")); - write_command(0x05, 0x08, 0xFF, 0x1C); - - return true; + return false; } +*/ //maintenance bool Boiler::set_maintenance(const char * value, const int8_t id) { + std::string s(12, '\0'); + if (Helpers::value2string(value, s)) { + if (s == "reset") { + LOG_INFO(F("Reset boiler maintenance message")); + write_command(0x05, 0x08, 0xFF, 0x1C); + return true; + } + } if (strlen(value) == 10) { // date uint8_t day = (value[0] - '0') * 10 + (value[1] - '0'); uint8_t month = (value[3] - '0') * 10 + (value[4] - '0'); diff --git a/src/devices/boiler.h b/src/devices/boiler.h index a81fd98d..8712a65a 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -182,7 +182,6 @@ class Boiler : public EMSdevice { uint8_t maintenanceTime_ = EMS_VALUE_UINT_NOTSET; char maintenanceDate_[12] = {'\0'}; - void process_UBAParameterWW(std::shared_ptr telegram); void process_UBAMonitorFast(std::shared_ptr telegram); void process_UBATotalUptime(std::shared_ptr telegram); @@ -223,7 +222,7 @@ class Boiler : public EMSdevice { bool set_hyst_off(const char * value, const int8_t id); bool set_burn_period(const char * value, const int8_t id); bool set_pump_delay(const char * value, const int8_t id); - bool set_reset(const char * value, const int8_t id); + // bool set_reset(const char * value, const int8_t id); bool set_maintenance(const char * value, const int8_t id); }; From b2b3ffc7def028bffbbd5f4b8133290a6d96bbf4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 3 Dec 2020 18:53:00 +0100 Subject: [PATCH 209/225] use connecting_ instead of connected() --- src/mqtt.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index e711cef9..c15cfc3a 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -512,7 +512,7 @@ void Mqtt::ha_status() { doc["name"] = FJSON("EMS-ESP status"); doc["uniq_id"] = FJSON("status"); doc["~"] = System::hostname(); // ems-esp - doc["avty_t"] = FJSON("~/status"); + // doc["avty_t"] = FJSON("~/status"); doc["json_attr_t"] = FJSON("~/heartbeat"); doc["stat_t"] = FJSON("~/heartbeat"); doc["val_tpl"] = FJSON("{{value_json['status']}}"); @@ -560,7 +560,7 @@ std::shared_ptr Mqtt::queue_message(const uint8_t operation, // add MQTT message to queue, payload is a string std::shared_ptr Mqtt::queue_publish_message(const std::string & topic, const std::string & payload, bool retain) { - if (!enabled() || !connected()) { + if (!enabled() || !connecting_) { return nullptr; }; return queue_message(Operation::PUBLISH, topic, payload, retain); From 2ce90a1dc55920ae859c8edd65cc8601987d7ff4 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 3 Dec 2020 18:54:57 +0100 Subject: [PATCH 210/225] thermostat reducemode, timer program, controlmode, dampedtemp 0 for RC35, ha-currtemp fallback --- src/devices/thermostat.cpp | 185 +++++++++++++++++++++++++++++++++++-- src/devices/thermostat.h | 9 ++ src/locale_EN.h | 7 +- 3 files changed, 189 insertions(+), 12 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index a8b6b00f..3bd45ba1 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -67,6 +67,7 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i for (uint8_t i = 0; i < monitor_typeids.size(); i++) { register_telegram_type(monitor_typeids[i], F("RC35Monitor"), false, [&](std::shared_ptr t) { process_RC35Monitor(t); }); register_telegram_type(set_typeids[i], F("RC35Set"), false, [&](std::shared_ptr t) { process_RC35Set(t); }); + register_telegram_type(timer_typeids[i], F("RC35Timer"), false, [&](std::shared_ptr t) { process_RC35Timer(t); }); } register_telegram_type(EMS_TYPE_IBASettings, F("IBASettings"), true, [&](std::shared_ptr t) { process_IBASettings(t); }); register_telegram_type(EMS_TYPE_wwSettings, F("WWSettings"), true, [&](std::shared_ptr t) { process_RC35wwSettings(t); }); @@ -167,16 +168,20 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i EMSESP::send_read_request(monitor_typeids[i], device_id); } + /* do not flood tx-queue now, these values are fetched later for (uint8_t i = 0; i < set_typeids.size(); i++) { EMSESP::send_read_request(set_typeids[i], device_id); } - for (uint8_t i = 0; i < summer_typeids.size(); i++) { EMSESP::send_read_request(summer_typeids[i], device_id); } for (uint8_t i = 0; i < curve_typeids.size(); i++) { EMSESP::send_read_request(curve_typeids[i], device_id); } + for (uint8_t i = 0; i < timer_typeids.size(); i++) { + EMSESP::send_read_request(timer_typeids[i], device_id); + } + */ EMSESP::send_read_request(0x12, device_id); // read last error (only published on errors) } @@ -238,6 +243,9 @@ void Thermostat::device_info_web(JsonArray & root) { create_value_json(root, F("maxflowtemp"), FPSTR(prefix_str), F_(maxflowtemp), F_(degrees), json); create_value_json(root, F("summertemp"), FPSTR(prefix_str), F_(summertemp), F_(degrees), json); create_value_json(root, F("summermode"), FPSTR(prefix_str), F_(summermode), F_(degrees), json); + create_value_json(root, F("reducemode"), FPSTR(prefix_str), F_(reducemode), nullptr, json); + create_value_json(root, F("program"), FPSTR(prefix_str), F_(program), nullptr, json); + create_value_json(root, F("controlmode"), FPSTR(prefix_str), F_(controlmode), nullptr, json); create_value_json(root, F("mode"), FPSTR(prefix_str), F_(mode), nullptr, json); create_value_json(root, F("modetype"), FPSTR(prefix_str), F_(modetype), nullptr, json); } @@ -366,7 +374,9 @@ bool Thermostat::export_values_main(JsonObject & rootThermostat) { // Damped outdoor temperature (RC35) if (Helpers::hasValue(dampedoutdoortemp_)) { - rootThermostat["dampedtemp"] = dampedoutdoortemp_; + if (model == EMS_DEVICE_FLAG_RC35 || model == EMS_DEVICE_FLAG_RC30_1) { + rootThermostat["dampedtemp"] = dampedoutdoortemp_; + } } // Damped outdoor temperature (RC300) @@ -500,6 +510,16 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost dataThermostat["currtemp"] = Helpers::round2((float)hc->curr_roomTemp / curr_temp_divider); } + if (Mqtt::mqtt_format() == Mqtt::Format::HA) { + if (Helpers::hasValue(hc->ha_temp)) { + dataThermostat["hatemp"] = Helpers::round2((float)hc->ha_temp / 10); + } else if (Helpers::hasValue(hc->curr_roomTemp)) { + dataThermostat["hatemp"] = Helpers::round2((float)hc->curr_roomTemp / curr_temp_divider); + } else { + dataThermostat["hatemp"] = Helpers::round2((float)hc->setpoint_roomTemp / setpoint_temp_divider); + } + } + if (Helpers::hasValue(hc->daytemp)) { if (model == EMSdevice::EMS_DEVICE_FLAG_JUNKERS) { // Heat temperature @@ -597,6 +617,27 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost dataThermostat["summermode"] = Helpers::render_enum(s, {F("summer"), F("auto"), F("winter")}, hc->summer_setmode); } + // Reduce mode + if (Helpers::hasValue(hc->reducemode)) { + char s[10]; + dataThermostat["reducemode"] = Helpers::render_enum(s, {F("nofrost"), F("reduce"), F("room"), F("outdoor")}, hc->reducemode); + } + + // Control mode room or outdoor + if (Helpers::hasValue(hc->controlmode)) { + char s[10]; + if (model == EMS_DEVICE_FLAG_RC35 || model == EMS_DEVICE_FLAG_RC30_1) { + dataThermostat["controlmode"] = Helpers::render_enum(s, {F("outdoor"), F("room")}, hc->controlmode); + } else if (model == EMS_DEVICE_FLAG_RC300 || model == EMS_DEVICE_FLAG_RC100) { + dataThermostat["controlmode"] = Helpers::render_enum(s, {F("off"), F("outdoor"), F("simple"), F("MPC"), F("room"), F("power"), F("const.")}, hc->controlmode); + } + } + + // program no. + if (Helpers::hasValue(hc->program)) { + dataThermostat["program"] = hc->program; + } + // mode - always force showing this when in HA so not to break HA's climate component if ((Helpers::hasValue(hc->mode)) || (mqtt_format == Mqtt::Format::HA)) { uint8_t hc_mode = hc->get_mode(model); @@ -880,7 +921,7 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { doc["temp_stat_tpl"] = seltemp_str; char currtemp_str[30]; - snprintf_P(currtemp_str, sizeof(currtemp_str), PSTR("{{value_json.hc%d.currtemp}}"), hc_num); + snprintf_P(currtemp_str, sizeof(currtemp_str), PSTR("{{value_json.hc%d.hatemp}}"), hc_num); doc["curr_temp_tpl"] = currtemp_str; doc["min_temp"] = FJSON("5"); @@ -918,9 +959,9 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(mode), device_type(), "mode", nullptr, nullptr); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(seltemp), device_type(), "seltemp", F_(degrees), F_(icontemperature)); - Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(currtemp), device_type(), "currtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F("hatemp"), device_type(), "hatemp", F_(degrees), F_(icontemperature)); - switch (this->model()) { + switch (model()) { case EMS_DEVICE_FLAG_RC100: case EMS_DEVICE_FLAG_RC300: Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), device_type(), "modetype", nullptr, nullptr); @@ -935,10 +976,13 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), device_type(), "roominfluence", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nofrosttemp), device_type(), "nofrosttemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(targetflowtemp), device_type(), "targetflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(controlmode), device_type(), "controlmode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(program), device_type(), "program", nullptr, nullptr); break; case EMS_DEVICE_FLAG_RC20_2: Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(daytemp), device_type(), "daytemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(nighttemp), device_type(), "nighttemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(program), device_type(), "program", nullptr, nullptr); break; case EMS_DEVICE_FLAG_RC30_1: case EMS_DEVICE_FLAG_RC35: @@ -954,6 +998,9 @@ void Thermostat::register_mqtt_ha_config(uint8_t hc_num) { Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(roominfluence), device_type(), "roominfluence", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(minflowtemp), device_type(), "minflowtemp", F_(degrees), F_(icontemperature)); Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(maxflowtemp), device_type(), "maxflowtemp", F_(degrees), F_(icontemperature)); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(reducemode), device_type(), "reducemode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(controlmode), device_type(), "controlmode", nullptr, nullptr); + Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(program), device_type(), "program", nullptr, nullptr); break; case EMS_DEVICE_FLAG_JUNKERS: Mqtt::register_mqtt_ha_sensor(hc_name, nullptr, F_(modetype), device_type(), "modetype", nullptr, nullptr); @@ -1126,6 +1173,7 @@ void Thermostat::process_RC20Set(std::shared_ptr telegram) { } // type 0xAE - data from the RC20 thermostat (0x17) +// 17 00 AE 00 80 12 2E 00 D0 00 00 64 (#data=8) void Thermostat::process_RC20Monitor_2(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); if (hc == nullptr) { @@ -1138,12 +1186,16 @@ void Thermostat::process_RC20Monitor_2(std::shared_ptr telegram) // 0xAD - for reading the mode from the RC20/ES72 thermostat (0x17) // see https://github.com/proddy/EMS-ESP/issues/334#issuecomment-611698259 +// offset: 01-nighttemp, 02-daytemp, 03-mode, 0B-program(1-9), 0D-setpoint_roomtemp(temporary) void Thermostat::process_RC20Set_2(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); if (hc == nullptr) { return; } + changed_ |= telegram->read_value(hc->nighttemp, 1); // is * 2, + changed_ |= telegram->read_value(hc->daytemp, 2); // is * 2, changed_ |= telegram->read_value(hc->mode, 3); + changed_ |= telegram->read_value(hc->program, 11); // 1 .. 9 predefined programs } // 0xAF - for reading the roomtemperature from the RC20/ES72 thermostat (0x18, 0x19, ..) @@ -1198,9 +1250,6 @@ void Thermostat::process_JunkersSet2(std::shared_ptr telegram) { // type 0xA3 - for external temp settings from the the RC* thermostats (e.g. RC35) void Thermostat::process_RCOutdoorTemp(std::shared_ptr telegram) { changed_ |= telegram->read_value(dampedoutdoortemp_, 0); - if (dampedoutdoortemp_ == 0) { - dampedoutdoortemp_ = EMS_VALUE_INT_NOTSET; // special case for RC20's where the value is always 0 - } changed_ |= telegram->read_value(tempsensor1_, 3); // sensor 1 - is * 10 changed_ |= telegram->read_value(tempsensor2_, 5); // sensor 2 - is * 10 } @@ -1305,6 +1354,7 @@ void Thermostat::process_RC300Set(std::shared_ptr telegram) { changed_ |= telegram->read_value(hc->daytemp, 2); // is * 2 changed_ |= telegram->read_value(hc->nighttemp, 4); // is * 2 changed_ |= telegram->read_value(hc->manualtemp, 10); // is * 2 + changed_ |= telegram->read_value(hc->program, 11); // timer program 1 or 2 } // types 0x2AF ff @@ -1331,6 +1381,7 @@ void Thermostat::process_RC300Curve(std::shared_ptr telegram) { if (hc == nullptr) { return; } + changed_ |= telegram->read_value(hc->controlmode, 0); // 1-outdoor, 2-simple, 3-MPC, 4-room, 5-power, 6-const changed_ |= telegram->read_value(hc->heatingtype, 1); // 1=radiator, 2=convector, 3=floor changed_ |= telegram->read_value(hc->nofrosttemp, 6); if (hc->heatingtype < 3) { @@ -1448,6 +1499,9 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { changed_ |= telegram->read_value(hc->summertemp, 22); // is * 1 changed_ |= telegram->read_value(hc->nofrosttemp, 23); // is * 1 changed_ |= telegram->read_value(hc->flowtempoffset, 24); // is * 1, only in mixed circuits + changed_ |= telegram->read_value(hc->reducemode, 25); // 0-nofrost, 1-reduce, 2-roomhold, 3-outdoorhold + changed_ |= telegram->read_value(hc->controlmode, 33); // 0-outdoortemp, 1-roomtemp + // changed_ |= telegram->read_value(hc->noreducetemp, 38); // outdoor temperature for no reduce changed_ |= telegram->read_value(hc->minflowtemp, 16); if (hc->heatingtype == 3) { changed_ |= telegram->read_value(hc->designtemp, 36); // is * 1 @@ -1458,6 +1512,15 @@ void Thermostat::process_RC35Set(std::shared_ptr telegram) { } } +// type 0x3F (HC1), 0x49 (HC2), 0x53 (HC3), 0x5D (HC4) - timer setting +void Thermostat::process_RC35Timer(std::shared_ptr telegram) { + std::shared_ptr hc = heating_circuit(telegram); + if (hc == nullptr) { + return; + } + changed_ |= telegram->read_value(hc->program, 84); // 0 .. 10, 0-userprogram 1, 10-userprogram 2 +} + // process_RCTime - type 0x06 - date and time from a thermostat - 14 bytes long void Thermostat::process_RCTime(std::shared_ptr telegram) { if (flags() == EMS_DEVICE_FLAG_EASY) { @@ -1592,6 +1655,30 @@ bool Thermostat::set_display(const char * value, const int8_t id) { return true; } +bool Thermostat::set_roomtemp(const char * value, const int8_t id) { + float f = 0; + if (!Helpers::value2float(value, f)) { + LOG_WARNING(F("Set roomtemperature: Invalid value")); + return false; + } + + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + return false; + } + + if (f > 100 || f < 0) { + hc->ha_temp = EMS_VALUE_SHORT_NOTSET; + } else { + hc->ha_temp = (int16_t)(f * 10); + } + + return true; +} + + + bool Thermostat::set_remotetemp(const char * value, const int8_t id) { float f = 0; if (!Helpers::value2float(value, f)) { @@ -1670,6 +1757,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) { // sets the thermostat ww working mode, where mode is a string, ems and ems+ bool Thermostat::set_wwmode(const char * value, const int8_t id) { uint8_t set = 0xFF; + if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, {F("off"), F("low"), F("high"), F("auto"), F("own")})) { LOG_WARNING(F("Set warm water mode: Invalid mode")); @@ -1729,6 +1817,7 @@ bool Thermostat::set_wwonetime(const char * value, const int8_t id) { // sets the thermostat ww circulation working mode, where mode is a string bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set = 0xFF; + if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { if (!Helpers::value2enum(value, set, {F("off"), F("on"), F("auto"), F("own")})) { LOG_WARNING(F("Set warm water circulation mode: Invalid mode")); @@ -2025,6 +2114,76 @@ bool Thermostat::set_summermode(const char * value, const int8_t id) { return true; } +// sets the thermostat reducemode for RC35 +bool Thermostat::set_reducemode(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + LOG_WARNING(F("Setting reduce mode: Heating Circuit %d not found or activated"), hc_num); + return false; + } + uint8_t set = 0xFF; + if (!Helpers::value2enum(value, set, {F("nofrost"), F("reduce"), F("room"), F("outdoor")})) { + LOG_WARNING(F("Setting reduce mode: Invalid mode")); + return false; + } + LOG_INFO(F("Setting reduce mode to %s for heating circuit %d"), value, hc->hc_num()); + write_command(set_typeids[hc->hc_num() - 1], 25, set, set_typeids[hc->hc_num() - 1]); + return true; +} + +// sets the thermostat controlmode for RC35, RC300 +bool Thermostat::set_controlmode(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + LOG_WARNING(F("Setting control mode: Heating Circuit %d not found or activated"), hc_num); + return false; + } + uint8_t set = 0xFF; + if (model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) { + if (Helpers::value2enum(value, set, {F("off"), F("outdoor"), F("simple"), F("MPC"), F("room"), F("power"), F("const")})) { + LOG_INFO(F("Setting control mode to %d for heating circuit %d"), set, hc->hc_num()); + write_command(curve_typeids[hc->hc_num() - 1], 0, set, curve_typeids[hc->hc_num() - 1]); + return true; + } + } else if (model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_1) { + if (Helpers::value2enum(value, set, {F("outdoor"), F("room")})) { + LOG_INFO(F("Setting control mode to %d for heating circuit %d"), set, hc->hc_num()); + write_command(set_typeids[hc->hc_num() - 1], 33, set, set_typeids[hc->hc_num() - 1]); + return true; + } + } + LOG_WARNING(F("Setting control mode: Invalid mode")); + return false; +} +// sets the thermostat program for RC35 and RC20 +bool Thermostat::set_program(const char * value, const int8_t id) { + uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; + std::shared_ptr hc = heating_circuit(hc_num); + if (hc == nullptr) { + LOG_WARNING(F("Setting program: Heating Circuit %d not found or activated"), hc_num); + return false; + } + int set = 0xFF; + if (!Helpers::value2number(value, set)) { + LOG_WARNING(F("Setting program: Invalid number")); + return false; + } + if (set < 0 || set > 11) { + LOG_WARNING(F("Setting program: Invalid number")); + return false; + } + LOG_INFO(F("Setting program to %d for heating circuit %d"), set, hc->hc_num()); + if (model() == EMS_DEVICE_FLAG_RC20_2 && set > 0 && set < 10) { + write_command(set_typeids[hc->hc_num() - 1], 11, set, set_typeids[hc->hc_num() - 1]); + } else if ((model() == EMS_DEVICE_FLAG_RC35) || (model() == EMS_DEVICE_FLAG_RC30_1)) { + write_command(timer_typeids[hc->hc_num() - 1], 84, set, timer_typeids[hc->hc_num() - 1]); + } else if ((model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) && (set == 0 || set == 1)) { + write_command(set_typeids[hc->hc_num() - 1], 11, set, set_typeids[hc->hc_num() - 1]); + } + return true; +} // sets the thermostat temp, where mode is a string bool Thermostat::set_temperature(const float temperature, const std::string & mode, const uint8_t hc_num) { @@ -2425,9 +2584,9 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("temp"), [&](const char * value, const int8_t id) { return set_temp(value, id); }); register_mqtt_cmd(F("mode"), [&](const char * value, const int8_t id) { return set_mode(value, id); }); register_mqtt_cmd(F("datetime"), [&](const char * value, const int8_t id) { return set_datetime(value, id); }); + register_mqtt_cmd(F("roomtemp"), [&](const char * value, const int8_t id) { return set_roomtemp(value, id); }); - uint8_t model = this->model(); - switch (model) { + switch (model()) { case EMS_DEVICE_FLAG_RC100: case EMS_DEVICE_FLAG_RC300: register_mqtt_cmd(F("manualtemp"), [&](const char * value, const int8_t id) { return set_manualtemp(value, id); }); @@ -2448,10 +2607,13 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("maxflowtemp"), [&](const char * value, const int8_t id) { return set_maxflowtemp(value, id); }); register_mqtt_cmd(F("minexttemp"), [&](const char * value, const int8_t id) { return set_minexttemp(value, id); }); register_mqtt_cmd(F("roominfluence"), [&](const char * value, const int8_t id) { return set_roominfluence(value, id); }); + register_mqtt_cmd(F("program"), [&](const char * value, const int8_t id) { return set_program(value, id); }); + register_mqtt_cmd(F("controlmode"), [&](const char * value, const int8_t id) { return set_controlmode(value, id); }); break; case EMS_DEVICE_FLAG_RC20_2: register_mqtt_cmd(F("nighttemp"), [&](const char * value, const int8_t id) { return set_nighttemp(value, id); }); register_mqtt_cmd(F("daytemp"), [&](const char * value, const int8_t id) { return set_daytemp(value, id); }); + register_mqtt_cmd(F("program"), [&](const char * value, const int8_t id) { return set_program(value, id); }); break; case EMS_DEVICE_FLAG_RC30_1: // only RC30_1 register_mqtt_cmd(F("clockoffset"), [&](const char * value, const int8_t id) { return set_clockoffset(value, id); }); @@ -2479,6 +2641,9 @@ void Thermostat::add_commands() { register_mqtt_cmd(F("flowtempoffset"), [&](const char * value, const int8_t id) { return set_flowtempoffset(value, id); }); register_mqtt_cmd(F("minflowtemp"), [&](const char * value, const int8_t id) { return set_minflowtemp(value, id); }); register_mqtt_cmd(F("maxflowtemp"), [&](const char * value, const int8_t id) { return set_maxflowtemp(value, id); }); + register_mqtt_cmd(F("reducemode"), [&](const char * value, const int8_t id) { return set_reducemode(value, id); }); + register_mqtt_cmd(F("program"), [&](const char * value, const int8_t id) { return set_program(value, id); }); + register_mqtt_cmd(F("controlmode"), [&](const char * value, const int8_t id) { return set_controlmode(value, id); }); break; case EMS_DEVICE_FLAG_JUNKERS: register_mqtt_cmd(F("nofrosttemp"), [&](const char * value, const int8_t id) { return set_nofrosttemp(value, id); }); diff --git a/src/devices/thermostat.h b/src/devices/thermostat.h index e3065a07..c0d40f25 100644 --- a/src/devices/thermostat.h +++ b/src/devices/thermostat.h @@ -67,6 +67,10 @@ class Thermostat : public EMSdevice { uint8_t flowtempoffset = EMS_VALUE_UINT_NOTSET; uint8_t minflowtemp = EMS_VALUE_UINT_NOTSET; uint8_t maxflowtemp = EMS_VALUE_UINT_NOTSET; + uint8_t reducemode = EMS_VALUE_UINT_NOTSET; + int16_t ha_temp = EMS_VALUE_SHORT_NOTSET; + uint8_t program = EMS_VALUE_UINT_NOTSET; + uint8_t controlmode = EMS_VALUE_UINT_NOTSET; uint8_t hc_num() const { return hc_num_; @@ -279,6 +283,7 @@ class Thermostat : public EMSdevice { void process_RC35wwSettings(std::shared_ptr telegram); void process_RC35Monitor(std::shared_ptr telegram); void process_RC35Set(std::shared_ptr telegram); + void process_RC35Timer(std::shared_ptr telegram); void process_RC30Monitor(std::shared_ptr telegram); void process_RC30Set(std::shared_ptr telegram); void process_RC20Monitor(std::shared_ptr telegram); @@ -335,6 +340,10 @@ class Thermostat : public EMSdevice { bool set_flowtempoffset(const char * value, const int8_t id); bool set_minflowtemp(const char * value, const int8_t id); bool set_maxflowtemp(const char * value, const int8_t id); + bool set_roomtemp(const char * value, const int8_t id); + bool set_reducemode(const char * value, const int8_t id); + bool set_program(const char * value, const int8_t id); + bool set_controlmode(const char * value, const int8_t id); // set functions - these don't use the id/hc, the parameters are ignored bool set_wwmode(const char * value, const int8_t id); diff --git a/src/locale_EN.h b/src/locale_EN.h index 5422a7b1..58d96e70 100644 --- a/src/locale_EN.h +++ b/src/locale_EN.h @@ -222,8 +222,8 @@ MAKE_PSTR(nrgSuppWw, "Energy supplied warm water") MAKE_PSTR(nrgSuppCooling, "Energy supplied cooling") MAKE_PSTR(maintenanceMessage, "Maintenance message") MAKE_PSTR(maintenance, "Scheduled maintenance") -MAKE_PSTR(maintenanceTime, "Next maintenance in") -MAKE_PSTR(maintenanceDate, "Next maintenance on") +// MAKE_PSTR(maintenanceTime, "Next maintenance in") +// MAKE_PSTR(maintenanceDate, "Next maintenance on") // solar MAKE_PSTR(collectorTemp, "Collector temperature (TS1)") @@ -295,6 +295,9 @@ MAKE_PSTR(roominfluence, "Room influence") MAKE_PSTR(flowtempoffset, "Flow temperature offset") MAKE_PSTR(minflowtemp, "Min. flow temperature") MAKE_PSTR(maxflowtemp, "Max. flow temperature") +MAKE_PSTR(reducemode, "Reduce mode") +MAKE_PSTR(program, "Timer program") +MAKE_PSTR(controlmode, "Control mode") MAKE_PSTR(mode, "Mode") MAKE_PSTR(modetype, "Mode type") From ca27dcb89fb799426b4a1f61261bf2b4943cf0b8 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Thu, 3 Dec 2020 19:09:24 +0100 Subject: [PATCH 211/225] changelog, comments --- CHANGELOG_LATEST.md | 1 + src/devices/thermostat.cpp | 11 ++++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index b6408f82..2b554e69 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -12,6 +12,7 @@ - WM10 switch telegrams - boiler information (#633) - maintenance message and command +- thermostat program, reducemode, controlmode ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 3bd45ba1..0c902b6f 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -168,7 +168,8 @@ Thermostat::Thermostat(uint8_t device_type, uint8_t device_id, uint8_t product_i EMSESP::send_read_request(monitor_typeids[i], device_id); } - /* do not flood tx-queue now, these values are fetched later + /* do not flood tx-queue now, these values are fetched later by toggle fetch + for (uint8_t i = 0; i < set_typeids.size(); i++) { EMSESP::send_read_request(set_typeids[i], device_id); } @@ -1236,6 +1237,7 @@ void Thermostat::process_JunkersSet(std::shared_ptr telegram) { changed_ |= telegram->read_value(hc->nighttemp, 16); // is * 2 changed_ |= telegram->read_value(hc->nofrosttemp, 15); // is * 2 } + // type 0x0179, ff void Thermostat::process_JunkersSet2(std::shared_ptr telegram) { std::shared_ptr hc = heating_circuit(telegram); @@ -1576,7 +1578,8 @@ void Thermostat::process_RCError(std::shared_ptr telegram) { snprintf_P(&errorCode_[0], errorCode_.capacity() + 1, PSTR("%s(%d)"), buf, errorNumber_); } -// 0x12 + +// 0x12 error log void Thermostat::process_RCErrorMessage(std::shared_ptr telegram) { // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr if (telegram->message_data[4] & 0x80) { // valid date @@ -1677,8 +1680,6 @@ bool Thermostat::set_roomtemp(const char * value, const int8_t id) { return true; } - - bool Thermostat::set_remotetemp(const char * value, const int8_t id) { float f = 0; if (!Helpers::value2float(value, f)) { @@ -1813,7 +1814,6 @@ bool Thermostat::set_wwonetime(const char * value, const int8_t id) { return true; } - // sets the thermostat ww circulation working mode, where mode is a string bool Thermostat::set_wwcircmode(const char * value, const int8_t id) { uint8_t set = 0xFF; @@ -2157,6 +2157,7 @@ bool Thermostat::set_controlmode(const char * value, const int8_t id) { LOG_WARNING(F("Setting control mode: Invalid mode")); return false; } + // sets the thermostat program for RC35 and RC20 bool Thermostat::set_program(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; From f872715f31b1bd05efccffd45ec2fb39fb8cd0eb Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 6 Dec 2020 17:02:37 +0100 Subject: [PATCH 212/225] always log debug the incoming mqtt --- src/mqtt.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/mqtt.cpp b/src/mqtt.cpp index c15cfc3a..5916b1e2 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -234,9 +234,8 @@ void Mqtt::on_message(const char * topic, const char * payload, size_t len) { char message[len + 2]; strlcpy(message, payload, len + 1); -#ifdef EMSESP_DEBUG - LOG_DEBUG(F("[DEBUG] Received %s => %s (length %d)"), topic, message, len); -#endif + // always log debug the incoming mqtt + LOG_DEBUG(F("Received %s => %s (length %d)"), topic, message, len); // see if we have this topic in our subscription list, then call its callback handler for (const auto & mf : mqtt_subfunctions_) { From baa1b9982dd52a57413559b22f7e14f5d6096ba0 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 6 Dec 2020 17:04:33 +0100 Subject: [PATCH 213/225] HA register active heating circuits for thermostat ha_temp --- src/devices/thermostat.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 0c902b6f..2e07d33c 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -703,12 +703,11 @@ bool Thermostat::ha_config(bool force) { // check to see which heating circuits need to be added as HA climate components // but only if it's active and there is a real value for the current room temperature (https://github.com/proddy/EMS-ESP/issues/582) + // no check for room temperature, we have fallback ha_temp now. for (const auto & hc : heating_circuits_) { if (hc->is_active() && !hc->ha_registered()) { - if (Helpers::hasValue(hc->curr_roomTemp)) { - register_mqtt_ha_config(hc->hc_num()); - hc->ha_registered(true); - } + register_mqtt_ha_config(hc->hc_num()); + hc->ha_registered(true); } } From b79f4449f01a918e57680784b0c71400999b0c16 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 6 Dec 2020 17:05:30 +0100 Subject: [PATCH 214/225] publish empty maintenanceMessage if there is none --- src/devices/boiler.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 28fe323d..a98d77db 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -826,8 +826,8 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { char s[5]; snprintf_P(s, sizeof(s), PSTR("H%02d"), maintenanceMessage_); json["maintenanceMessage"] = s; - // } else { - // json["maintenanceMessage"] = ""; + } else { + json["maintenanceMessage"] = " "; } } From a131cbd8fe0de6e48194ccb060e8803464b9be15 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 6 Dec 2020 17:07:19 +0100 Subject: [PATCH 215/225] optional delayed tx start for KM200, optional raw messages in trace-log --- CHANGELOG_LATEST.md | 3 ++- .../src/project/EMSESPSettingsController.tsx | 23 +++++++++++++++++++ interface/src/project/EMSESPtypes.ts | 2 ++ src/WebSettingsService.cpp | 12 +++++++--- src/WebSettingsService.h | 4 ++++ src/emsesp.cpp | 23 +++++++++++++++---- src/emsesp.h | 10 ++++++++ src/telegram.cpp | 4 ++++ 8 files changed, 72 insertions(+), 9 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 2b554e69..b797a575 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -8,11 +8,12 @@ - expose test framework via api (#611) - SysLog has enable/disable flag in WebUI - Add solar configuration telegrams (#616) [thanks @hpanther] -- `log trace` shows decoded telegrams, `watch unknown` for only unknown telegrams +- `log trace` shows decoded or optional raw telegrams, `watch unknown` for only unknown telegrams - WM10 switch telegrams - boiler information (#633) - maintenance message and command - thermostat program, reducemode, controlmode +- optional delayed start for sending tx-telegrams to prevent conflicts with KM200 ### Fixed - mixer IPM pumpstatus diff --git a/interface/src/project/EMSESPSettingsController.tsx b/interface/src/project/EMSESPSettingsController.tsx index ca97a8af..7c2ec691 100644 --- a/interface/src/project/EMSESPSettingsController.tsx +++ b/interface/src/project/EMSESPSettingsController.tsx @@ -104,6 +104,18 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) onChange={handleValueChange('tx_gpio')} margin="normal" /> +

    Dallas Sensor @@ -245,6 +257,17 @@ function EMSESPSettingsControllerForm(props: EMSESPSettingsControllerFormProps) onChange={handleValueChange('syslog_mark_interval')} margin="normal" /> + + } + label="Trace ems-telegrams in raw format" + /> +

    Analog Input diff --git a/interface/src/project/EMSESPtypes.ts b/interface/src/project/EMSESPtypes.ts index 0142f3fe..f9f5c54f 100644 --- a/interface/src/project/EMSESPtypes.ts +++ b/interface/src/project/EMSESPtypes.ts @@ -1,5 +1,6 @@ export interface EMSESPSettings { tx_mode: number; + tx_delay: number; ems_bus_id: number; syslog_enabled: boolean; syslog_level: number; @@ -17,6 +18,7 @@ export interface EMSESPSettings { api_enabled: boolean; bool_format: number; analog_enabled: boolean; + trace_raw: boolean; } export enum busConnectionStatus { diff --git a/src/WebSettingsService.cpp b/src/WebSettingsService.cpp index 84739786..12f035ed 100644 --- a/src/WebSettingsService.cpp +++ b/src/WebSettingsService.cpp @@ -31,9 +31,11 @@ WebSettingsService::WebSettingsService(AsyncWebServer * server, FS * fs, Securit void WebSettings::read(WebSettings & settings, JsonObject & root) { root["tx_mode"] = settings.tx_mode; + root["tx_delay"] = settings.tx_delay; root["ems_bus_id"] = settings.ems_bus_id; root["syslog_enabled"] = settings.syslog_enabled; root["syslog_level"] = settings.syslog_level; + root["trace_raw"] = settings.trace_raw; root["syslog_mark_interval"] = settings.syslog_mark_interval; root["syslog_host"] = settings.syslog_host; root["master_thermostat"] = settings.master_thermostat; @@ -57,9 +59,10 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) // tx_mode, rx and tx pins snprintf_P(&crc_before[0], crc_before.capacity() + 1, PSTR("%d%d%d"), settings.tx_mode, settings.rx_gpio, settings.tx_gpio); - settings.tx_mode = root["tx_mode"] | EMSESP_DEFAULT_TX_MODE; - settings.rx_gpio = root["rx_gpio"] | EMSESP_DEFAULT_RX_GPIO; - settings.tx_gpio = root["tx_gpio"] | EMSESP_DEFAULT_TX_GPIO; + settings.tx_mode = root["tx_mode"] | EMSESP_DEFAULT_TX_MODE; + settings.tx_delay = root["tx_delay"] | EMSESP_DEFAULT_TX_DELAY; + settings.rx_gpio = root["rx_gpio"] | EMSESP_DEFAULT_RX_GPIO; + settings.tx_gpio = root["tx_gpio"] | EMSESP_DEFAULT_TX_GPIO; snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d%d"), settings.tx_mode, settings.rx_gpio, settings.tx_gpio); if (crc_before != crc_after) { add_flags(ChangeFlags::UART); @@ -77,6 +80,9 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) settings.syslog_level = root["syslog_level"] | EMSESP_DEFAULT_SYSLOG_LEVEL; settings.syslog_mark_interval = root["syslog_mark_interval"] | EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL; settings.syslog_host = root["syslog_host"] | EMSESP_DEFAULT_SYSLOG_HOST; + settings.trace_raw = root["trace_raw"] | EMSESP_DEFAULT_TRACELOG_RAW ; + EMSESP::trace_raw(settings.trace_raw); + snprintf_P(&crc_after[0], crc_after.capacity() + 1, PSTR("%d%d%d%s"), diff --git a/src/WebSettingsService.h b/src/WebSettingsService.h index 7345394b..92f865a0 100644 --- a/src/WebSettingsService.h +++ b/src/WebSettingsService.h @@ -26,11 +26,13 @@ #define EMSESP_SETTINGS_SERVICE_PATH "/rest/emsespSettings" #define EMSESP_DEFAULT_TX_MODE 1 // EMS1.0 +#define EMSESP_DEFAULT_TX_DELAY 0 // no delay #define EMSESP_DEFAULT_EMS_BUS_ID 0x0B // service key #define EMSESP_DEFAULT_SYSLOG_ENABLED false #define EMSESP_DEFAULT_SYSLOG_LEVEL 3 // ERR #define EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL 0 #define EMSESP_DEFAULT_SYSLOG_HOST "" +#define EMSESP_DEFAULT_TRACELOG_RAW false #define EMSESP_DEFAULT_MASTER_THERMOSTAT 0 // not set #define EMSESP_DEFAULT_SHOWER_TIMER false #define EMSESP_DEFAULT_SHOWER_ALERT false @@ -64,6 +66,7 @@ namespace emsesp { class WebSettings { public: uint8_t tx_mode; + uint8_t tx_delay; uint8_t ems_bus_id; uint8_t master_thermostat; bool shower_timer; @@ -72,6 +75,7 @@ class WebSettings { int8_t syslog_level; // uuid::log::Level uint32_t syslog_mark_interval; String syslog_host; + bool trace_raw; uint8_t rx_gpio; uint8_t tx_gpio; uint8_t dallas_gpio; diff --git a/src/emsesp.cpp b/src/emsesp.cpp index b0e18478..e78be0f8 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -65,6 +65,8 @@ bool EMSESP::tap_water_active_ = false; // for when Boiler states we uint32_t EMSESP::last_fetch_ = 0; uint8_t EMSESP::publish_all_idx_ = 0; uint8_t EMSESP::unique_id_count_ = 0; +bool EMSESP::trace_raw_ = false; +uint64_t EMSESP::tx_delay_ = 0; // for a specific EMS device go and request data values // or if device_id is 0 it will fetch from all our known and active devices @@ -145,7 +147,8 @@ void EMSESP::watch_id(uint16_t watch_id) { void EMSESP::init_tx() { uint8_t tx_mode; EMSESP::webSettingsService.read([&](WebSettings & settings) { - tx_mode = settings.tx_mode; + tx_mode = settings.tx_mode; + tx_delay_ = settings.tx_delay * 1000; #ifndef EMSESP_FORCE_SERIAL EMSuart::stop(); @@ -617,10 +620,10 @@ bool EMSESP::process_telegram(std::shared_ptr telegram) { if ((watch_id_ == WATCH_ID_NONE) || (telegram->type_id == watch_id_) || ((watch_id_ < 0x80) && ((telegram->src == watch_id_) || (telegram->dest == watch_id_)))) { LOG_NOTICE(pretty_telegram(telegram).c_str()); - } else { + } else if (!trace_raw_) { LOG_TRACE(pretty_telegram(telegram).c_str()); } - } else { + } else if (!trace_raw_){ LOG_TRACE(pretty_telegram(telegram).c_str()); } @@ -919,10 +922,20 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { return; } } - // check for poll if (length == 1) { - EMSbus::last_bus_activity(uuid::get_uptime()); // set the flag indication the EMS bus is active + static uint64_t delayed_tx_start_ = 0; + if (!rxservice_.bus_connected() && (tx_delay_ > 0)) { + delayed_tx_start_ = uuid::get_uptime_ms(); + LOG_DEBUG(F("Tx delay started")); + } + if ((first_value ^ 0x80 ^ rxservice_.ems_mask()) == txservice_.ems_bus_id()) { + EMSbus::last_bus_activity(uuid::get_uptime()); // set the flag indication the EMS bus is active + } + // first send delayed after connect + if ((uuid::get_uptime_ms() - delayed_tx_start_) < tx_delay_) { + return; + } #ifdef EMSESP_UART_DEBUG char s[4]; diff --git a/src/emsesp.h b/src/emsesp.h index 4fc851b2..1aecfc14 100644 --- a/src/emsesp.h +++ b/src/emsesp.h @@ -150,6 +150,14 @@ class EMSESP { return tap_water_active_; } + static bool trace_raw() { + return trace_raw_; + } + + static void trace_raw(bool set) { + trace_raw_ = set; + } + static void tap_water_active(const bool tap_water_active) { tap_water_active_ = tap_water_active; } @@ -217,6 +225,8 @@ class EMSESP { static bool tap_water_active_; static uint8_t publish_all_idx_; static uint8_t unique_id_count_; + static bool trace_raw_; + static uint64_t tx_delay_; }; } // namespace emsesp diff --git a/src/telegram.cpp b/src/telegram.cpp index d0167945..4d9b146b 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -196,7 +196,11 @@ void RxService::add(uint8_t * data, uint8_t length) { if ((trace_watch_id == WATCH_ID_NONE) || (type_id == trace_watch_id) || ((trace_watch_id < 0x80) && ((src == trace_watch_id) || (dest == trace_watch_id)))) { LOG_NOTICE(F("Rx: %s"), Helpers::data_to_hex(data, length).c_str()); + } else if (EMSESP::trace_raw()) { + LOG_TRACE(F("Rx: %s"), Helpers::data_to_hex(data, length).c_str()); } + } else if (EMSESP::trace_raw()) { + LOG_TRACE(F("Rx: %s"), Helpers::data_to_hex(data, length).c_str()); } #ifdef EMSESP_DEBUG From a0973df026c7217ec91b7409be48a02eb09e91c9 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 6 Dec 2020 18:11:01 +0100 Subject: [PATCH 216/225] fix rc300 program number setting --- src/devices/thermostat.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 2e07d33c..e3d11d5c 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -2170,18 +2170,18 @@ bool Thermostat::set_program(const char * value, const int8_t id) { LOG_WARNING(F("Setting program: Invalid number")); return false; } - if (set < 0 || set > 11) { - LOG_WARNING(F("Setting program: Invalid number")); - return false; - } - LOG_INFO(F("Setting program to %d for heating circuit %d"), set, hc->hc_num()); - if (model() == EMS_DEVICE_FLAG_RC20_2 && set > 0 && set < 10) { + + if (model() == EMS_DEVICE_FLAG_RC20_2 && set > 0 && set < 10) { write_command(set_typeids[hc->hc_num() - 1], 11, set, set_typeids[hc->hc_num() - 1]); - } else if ((model() == EMS_DEVICE_FLAG_RC35) || (model() == EMS_DEVICE_FLAG_RC30_1)) { + } else if ((model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_1) && set < 11) { write_command(timer_typeids[hc->hc_num() - 1], 84, set, timer_typeids[hc->hc_num() - 1]); - } else if ((model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) && (set == 0 || set == 1)) { + } else if ((model() == EMS_DEVICE_FLAG_RC300 || model() == EMS_DEVICE_FLAG_RC100) && (set == 1 || set == 2)) { write_command(set_typeids[hc->hc_num() - 1], 11, set, set_typeids[hc->hc_num() - 1]); + } else { + LOG_WARNING(F("Setting program: Invalid number")); + return false; } + LOG_INFO(F("Setting program to %d for heating circuit %d"), set, hc->hc_num()); return true; } From 820ce1bcb99de3827b87a9c082acf290de873567 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sun, 6 Dec 2020 19:13:58 +0100 Subject: [PATCH 217/225] add ES72, product-id 66 thermostat --- src/device_library.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/device_library.h b/src/device_library.h index 95631e34..63f89d3d 100644 --- a/src/device_library.h +++ b/src/device_library.h @@ -78,6 +78,7 @@ {165, DeviceType::THERMOSTAT, F("RC100/Moduline 1000/1010"), DeviceFlags::EMS_DEVICE_FLAG_RC100}, // 0x18, 0x38 // Thermostat - Sieger - 0x10 / 0x17 +{ 66, DeviceType::THERMOSTAT, F("ES72"), DeviceFlags::EMS_DEVICE_FLAG_RC20}, // first seen as remote 0x19, could also be RC20_2? { 76, DeviceType::THERMOSTAT, F("ES73"), DeviceFlags::EMS_DEVICE_FLAG_RC35}, // 0x10 {113, DeviceType::THERMOSTAT, F("ES72/RC20"), DeviceFlags::EMS_DEVICE_FLAG_RC20_2}, // 0x17 From 8c164a5d856afcae33a72aa215ee4fa7bab3f4b7 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 8 Dec 2020 13:07:10 +0100 Subject: [PATCH 218/225] fix switch WM10, boiler E4: retTemp, sysPress, typos --- src/command.cpp | 2 ++ src/devices/boiler.cpp | 20 ++++++++++++-------- src/devices/switch.cpp | 14 ++++++++++++-- src/devices/switch.h | 1 + src/devices/thermostat.cpp | 7 +++++-- src/system.cpp | 4 +++- 6 files changed, 35 insertions(+), 13 deletions(-) diff --git a/src/command.cpp b/src/command.cpp index 54186b78..3e9e2af6 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -32,6 +32,7 @@ std::vector Command::cmdfunctions_; bool Command::call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id) { auto cf = find_command(device_type, cmd); if ((cf == nullptr) || (cf->cmdfunction_json_)) { + LOG_WARNING(F("Command %s not found"), cmd); return false; // command not found, or requires a json } @@ -55,6 +56,7 @@ bool Command::call(const uint8_t device_type, const char * cmd, const char * val bool Command::call(const uint8_t device_type, const char * cmd, const char * value, const int8_t id, JsonObject & json) { auto cf = find_command(device_type, cmd); if (cf == nullptr) { + LOG_WARNING(F("Command %s not found"), cmd); return false; // command not found or not json } diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index a98d77db..674977f0 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -551,8 +551,8 @@ bool Boiler::export_values_main(JsonObject & json, const bool textformat) { json["curFlowTemp"] = (float)curFlowTemp_ / 10; } - // Return temperature - if (Helpers::hasValue(retTemp_)) { + // Return temperature, with no sensor retTemp can be 0x8000 or 0x0000 + if (Helpers::hasValue(retTemp_) && (retTemp_ > 0)) { json["retTemp"] = (float)retTemp_ / 10; } @@ -1016,10 +1016,11 @@ void Boiler::process_UBAMonitorWW(std::shared_ptr telegram) { /* * UBAMonitorFastPlus - type 0xE4 - central heating monitor EMS+ - * Still to figure out are: retTemp, sysPress * temperatures at 7 and 23 always identical - * 88 00 E4 00 00 2D 2D 00 00 C9 34 02 21 64 3D 05 02 01 DE 00 00 00 00 03 62 14 00 02 21 00 00 33 - * 88 00 E4 23 00 00 00 00 00 2B 2B 83 + * Bosch Logamax Plus GB122: issue #620 + * 88 00 E4 00 00 2D 2D 00 00 C9 34 02 21 64 3D 05 02 01 DE 00 00 00 00 03 62 14 00 02 21 00 00 00 00 00 00 00 2B 2B 83 + * GB125/Logamatic MC110: issue #650: add retTemp & sysPress + * 08 00 E4 00 10 20 2D 48 00 C8 38 02 37 3C 27 03 00 00 00 00 00 01 7B 01 8F 11 00 02 37 80 00 02 1B 80 00 7F FF 80 00 */ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram) { changed_ |= telegram->read_value(selFlowTemp_, 6); @@ -1030,8 +1031,11 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram changed_ |= telegram->read_value(selBurnPow_, 9); changed_ |= telegram->read_value(curFlowTemp_, 7); changed_ |= telegram->read_value(flameCurr_, 19); + changed_ |= telegram->read_value(retTemp_, 17); // can be 0 if no sensor, handled in export_values + changed_ |= telegram->read_value(sysPress_, 21); - //changed_ |= telegram->read_value(temperatur_, 13); unknown temperature + //changed_ |= telegram->read_value(temperatur_, 13); // unknown temperature + //changed_ |= telegram->read_value(temperatur_, 27); // unknown temperature // read 3 char service code / installation status as appears on the display if ((telegram->message_length > 3) && (telegram->offset == 0)) { @@ -1614,8 +1618,8 @@ bool Boiler::set_warmwater_circulation_mode(const char * value, const int8_t id) /* // Reset command -// 0 & 1 Reset-Mode (Manuel, others) -// 8 reset maintenance message Hxx +// 0 & 1 Reset-Mode (Manual, others), 5A resets Lxx error? +// 8 reset maintenance message Hxx, send FF // 12 & 13 Reset that Error-memory bool Boiler::set_reset(const char * value, const int8_t id) { diff --git a/src/devices/switch.cpp b/src/devices/switch.cpp index 278536a7..f7d0ed92 100644 --- a/src/devices/switch.cpp +++ b/src/devices/switch.cpp @@ -31,7 +31,8 @@ Switch::Switch(uint8_t device_type, uint8_t device_id, uint8_t product_id, const LOG_DEBUG(F("Adding new Switch with device ID 0x%02X"), device_id); register_telegram_type(0x9C, F("WM10MonitorMessage"), false, [&](std::shared_ptr t) { process_WM10MonitorMessage(t); }); - register_telegram_type(0x9B, F("WM10SetMessage"), false, [&](std::shared_ptr t) { process_WM10SetMessage(t); }); + register_telegram_type(0x9D, F("WM10SetMessage"), false, [&](std::shared_ptr t) { process_WM10SetMessage(t); }); + register_telegram_type(0x1E, F("WM10TempMessage"), false, [&](std::shared_ptr t) { process_WM10TempMessage(t); }); } // fetch the values into a JSON document for display in the web @@ -135,15 +136,24 @@ void Switch::register_mqtt_ha_config() { mqtt_ha_config_ = true; // done } -// message 0x9B switch on/off +// message 0x9D switch on/off +// Thermostat(0x10) -> Switch(0x11), ?(0x9D), data: 00 void Switch::process_WM10SetMessage(std::shared_ptr telegram) { changed_ |= telegram->read_value(activated_, 0); } // message 0x9C holds flowtemp and unknown status value +// Switch(0x11) -> All(0x00), ?(0x9C), data: 01 BA 00 01 00 void Switch::process_WM10MonitorMessage(std::shared_ptr telegram) { changed_ |= telegram->read_value(flowTemp_, 0); // is * 10 changed_ |= telegram->read_value(status_, 2); + // changed_ |= telegram->read_value(status2_, 3); // unknown +} + +// message 0x1E flow temperature, same as in 9C, published often, republished also by boiler UBAFast 0x18 +// Switch(0x11) -> Boiler(0x08), ?(0x1E), data: 01 BA +void Switch::process_WM10TempMessage(std::shared_ptr telegram) { + changed_ |= telegram->read_value(flowTemp_, 0); // is * 10 } } // namespace emsesp \ No newline at end of file diff --git a/src/devices/switch.h b/src/devices/switch.h index c5c82617..6a6f4436 100644 --- a/src/devices/switch.h +++ b/src/devices/switch.h @@ -46,6 +46,7 @@ class Switch : public EMSdevice { void process_WM10SetMessage(std::shared_ptr telegram); void process_WM10MonitorMessage(std::shared_ptr telegram); + void process_WM10TempMessage(std::shared_ptr telegram); void register_mqtt_ha_config(); uint16_t flowTemp_ = EMS_VALUE_USHORT_NOTSET; diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index e3d11d5c..1d0e3228 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -565,7 +565,8 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost // Heating Type if (Helpers::hasValue(hc->heatingtype)) { - dataThermostat["heatingtype"] = hc->heatingtype; + char s[10]; + dataThermostat["heatingtype"] = Helpers::render_enum(s, {F("off"), F("radiator"), F("convector"), F("floor")}, hc->heatingtype); } // Target flow temperature @@ -1657,6 +1658,7 @@ bool Thermostat::set_display(const char * value, const int8_t id) { return true; } +// set roomtemp for HA-thermostat bool Thermostat::set_roomtemp(const char * value, const int8_t id) { float f = 0; if (!Helpers::value2float(value, f)) { @@ -1679,6 +1681,7 @@ bool Thermostat::set_roomtemp(const char * value, const int8_t id) { return true; } +// set remotetemp for RC20 remote simulation on RC35 master bool Thermostat::set_remotetemp(const char * value, const int8_t id) { float f = 0; if (!Helpers::value2float(value, f)) { @@ -2171,7 +2174,7 @@ bool Thermostat::set_program(const char * value, const int8_t id) { return false; } - if (model() == EMS_DEVICE_FLAG_RC20_2 && set > 0 && set < 10) { + if (model() == EMS_DEVICE_FLAG_RC20_2 && set > 0 && set < 10) { write_command(set_typeids[hc->hc_num() - 1], 11, set, set_typeids[hc->hc_num() - 1]); } else if ((model() == EMS_DEVICE_FLAG_RC35 || model() == EMS_DEVICE_FLAG_RC30_1) && set < 11) { write_command(timer_typeids[hc->hc_num() - 1], 84, set, timer_typeids[hc->hc_num() - 1]); diff --git a/src/system.cpp b/src/system.cpp index 2634a1ab..2c7f865b 100644 --- a/src/system.cpp +++ b/src/system.cpp @@ -395,9 +395,11 @@ void System::system_check() { // not healthy if bus not connected if (!EMSbus::bus_connected()) { + if (system_healthy_) { + LOG_ERROR(F("Error: No connection to the EMS bus")); + } system_healthy_ = false; set_led_speed(LED_WARNING_BLINK); // flash every 1/2 second from now on - // LOG_ERROR(F("Error: No connection to the EMS bus")); } else { // if it was unhealthy but now we're better, make sure the LED is solid again cos we've been healed if (!system_healthy_) { From 28686c99f700bb8af16f46a3f60b7a9845d147fa Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 8 Dec 2020 17:12:51 +0100 Subject: [PATCH 219/225] v2.1.1b7 --- src/version.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/version.h b/src/version.h index c8d87ebc..2396e96f 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b6" +#define EMSESP_APP_VERSION "2.1.1b7" From 5a4af7c8ed6f3f7f42e697863ae1c5b7e78003fb Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Wed, 9 Dec 2020 21:24:38 +0100 Subject: [PATCH 220/225] fix repeated output on read command --- CHANGELOG_LATEST.md | 1 + src/emsesp.cpp | 5 +++-- src/telegram.cpp | 3 ++- src/telegram.h | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index b797a575..032a800b 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -21,6 +21,7 @@ - Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) - serviceCodeNumber, 3-char serviceCode, exhausttemp and heating_active for newer ems+ boilers - prevent MQTT publish messages from sending twice +- repeated output on read commands ### Changed - optimized MQTT for HA to reduce heap fragmentation issues diff --git a/src/emsesp.cpp b/src/emsesp.cpp index e78be0f8..63d58b2b 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -910,8 +910,9 @@ void EMSESP::incoming_telegram(uint8_t * data, const uint8_t length) { tx_successful = true; // if telegram is longer read next part with offset + 25 for ems+ if (length == 32) { - txservice_.read_next_tx(); - read_next_ = true; + if (txservice_.read_next_tx() == read_id_) { + read_next_ = true; + } } } } diff --git a/src/telegram.cpp b/src/telegram.cpp index 4d9b146b..fe80dfe5 100644 --- a/src/telegram.cpp +++ b/src/telegram.cpp @@ -580,10 +580,11 @@ void TxService::retry_tx(const uint8_t operation, const uint8_t * data, const ui tx_telegrams_.emplace_front(tx_telegram_id_++, std::move(telegram_last_), true); } -void TxService::read_next_tx() { +uint16_t TxService::read_next_tx() { // add to the top of the queue uint8_t message_data[1] = {EMS_MAX_TELEGRAM_LENGTH}; // request all data, 32 bytes add(Telegram::Operation::TX_READ, telegram_last_->dest, telegram_last_->type_id, telegram_last_->offset + 25, message_data, 1, true); + return telegram_last_->type_id; } // checks if a telegram is sent to us matches the last Tx request diff --git a/src/telegram.h b/src/telegram.h index 706b57f7..08e06ecf 100644 --- a/src/telegram.h +++ b/src/telegram.h @@ -283,7 +283,7 @@ class TxService : public EMSbus { void retry_tx(const uint8_t operation, const uint8_t * data, const uint8_t length); bool is_last_tx(const uint8_t src, const uint8_t dest) const; uint16_t post_send_query(); - void read_next_tx(); + uint16_t read_next_tx(); uint8_t retry_count() const { return retry_count_; From 0e26e6712657e3311a8f7bd68850e011ecfd8b09 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Tue, 15 Dec 2020 14:50:38 +0100 Subject: [PATCH 221/225] add commands pumpmodmin/max, circuits for secondary thermostats --- CHANGELOG_LATEST.md | 2 +- src/devices/boiler.cpp | 47 +++++++++++++++++++++++++++++++++++--- src/devices/boiler.h | 2 ++ src/devices/thermostat.cpp | 10 ++++---- src/emsesp.cpp | 18 ++++++++++++--- 5 files changed, 67 insertions(+), 12 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 032a800b..1f3b621d 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -10,7 +10,7 @@ - Add solar configuration telegrams (#616) [thanks @hpanther] - `log trace` shows decoded or optional raw telegrams, `watch unknown` for only unknown telegrams - WM10 switch telegrams -- boiler information (#633) +- boiler information (#633), pumpmod min/max commands - maintenance message and command - thermostat program, reducemode, controlmode - optional delayed start for sending tx-telegrams to prevent conflicts with KM200 diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 674977f0..ea18faab 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -74,6 +74,9 @@ Boiler::Boiler(uint8_t device_type, int8_t device_id, uint8_t product_id, const register_mqtt_cmd(F("pumpdelay"), [&](const char * value, const int8_t id) { return set_pump_delay(value, id); }); // register_mqtt_cmd(F("reset"), [&](const char * value, const int8_t id) { return set_reset(value, id); }); register_mqtt_cmd(F("maintenance"), [&](const char * value, const int8_t id) { return set_maintenance(value, id); }); + register_mqtt_cmd(F("pumpmodmax"), [&](const char * value, const int8_t id) { return set_max_pump(value, id); }); + register_mqtt_cmd(F("pumpmodmin"), [&](const char * value, const int8_t id) { return set_min_pump(value, id); }); + EMSESP::send_read_request(0x10, device_id); // read last errorcode on start (only published on errors) EMSESP::send_read_request(0x11, device_id); // read last errorcode on start (only published on errors) @@ -1112,6 +1115,8 @@ void Boiler::process_UBAParametersPlus(std::shared_ptr telegram) changed_ |= telegram->read_value(boilHystOff_, 8); changed_ |= telegram->read_value(boilHystOn_, 9); changed_ |= telegram->read_value(burnMinPeriod_, 10); + // changed_ |= telegram->read_value(pumpModMax_, 13); // guess + // changed_ |= telegram->read_value(pumpModMin_, 14); // guess } // 0xEA @@ -1328,7 +1333,7 @@ bool Boiler::set_heating_temp(const char * value, const int8_t id) { return false; } - LOG_INFO(F("Setting boiler heating temperature to "), v); + LOG_INFO(F("Setting boiler heating temperature to %d C"), v); if (get_toggle_fetch(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 1, v, EMS_TYPE_UBAParametersPlus); } else { @@ -1346,7 +1351,7 @@ bool Boiler::set_min_power(const char * value, const int8_t id) { return false; } - LOG_INFO(F("Setting boiler min power to "), v); + LOG_INFO(F("Setting boiler min power to %d %%"), v); if (get_toggle_fetch(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 7, v, EMS_TYPE_UBAParametersPlus); } else { @@ -1364,7 +1369,7 @@ bool Boiler::set_max_power(const char * value, const int8_t id) { return false; } - LOG_INFO(F("Setting boiler max power to %d C"), v); + LOG_INFO(F("Setting boiler max power to %d %%"), v); if (get_toggle_fetch(EMS_TYPE_UBAParametersPlus)) { write_command(EMS_TYPE_UBAParametersPlus, 6, v, EMS_TYPE_UBAParametersPlus); } else { @@ -1374,6 +1379,42 @@ bool Boiler::set_max_power(const char * value, const int8_t id) { return true; } +// set min pump modulation +bool Boiler::set_min_pump(const char * value, const int8_t id) { + int v = 0; + if (!Helpers::value2number(value, v)) { + LOG_WARNING(F("Set pump min: Invalid value")); + return false; + } + + LOG_INFO(F("Setting pump min to %d %%"), v); + if (get_toggle_fetch(EMS_TYPE_UBAParametersPlus)) { + write_command(EMS_TYPE_UBAParametersPlus, 14, v, EMS_TYPE_UBAParametersPlus); + } else { + write_command(EMS_TYPE_UBAParameters, 10, v, EMS_TYPE_UBAParameters); + } + + return true; +} + +// set max pump modulation +bool Boiler::set_max_pump(const char * value, const int8_t id) { + int v = 0; + if (!Helpers::value2number(value, v)) { + LOG_WARNING(F("Set pump max: Invalid value")); + return false; + } + + LOG_INFO(F("Setting pump max to %d %%"), v); + if (get_toggle_fetch(EMS_TYPE_UBAParametersPlus)) { + write_command(EMS_TYPE_UBAParametersPlus, 13, v, EMS_TYPE_UBAParametersPlus); + } else { + write_command(EMS_TYPE_UBAParameters, 9, v, EMS_TYPE_UBAParameters); + } + + return true; +} + // set boiler on hysteresis bool Boiler::set_hyst_on(const char * value, const int8_t id) { int v = 0; diff --git a/src/devices/boiler.h b/src/devices/boiler.h index 8712a65a..afdb81bc 100644 --- a/src/devices/boiler.h +++ b/src/devices/boiler.h @@ -218,6 +218,8 @@ class Boiler : public EMSdevice { bool set_heating_temp(const char * value, const int8_t id); bool set_min_power(const char * value, const int8_t id); bool set_max_power(const char * value, const int8_t id); + bool set_min_pump(const char * value, const int8_t id); + bool set_max_pump(const char * value, const int8_t id); bool set_hyst_on(const char * value, const int8_t id); bool set_hyst_off(const char * value, const int8_t id); bool set_burn_period(const char * value, const int8_t id); diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 1d0e3228..6d0bf847 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1638,7 +1638,7 @@ bool Thermostat::set_calinttemp(const char * value, const int8_t id) { return false; } - LOG_INFO(F("Calibrating internal temperature to %d.%d"), ct / 10, ct < 0 ? -ct % 10 : ct % 10); + LOG_INFO(F("Calibrating internal temperature to %d.%d C"), ct / 10, ct < 0 ? -ct % 10 : ct % 10); write_command(EMS_TYPE_IBASettings, 2, ct, EMS_TYPE_IBASettings); return true; @@ -1739,8 +1739,8 @@ bool Thermostat::set_language(const char * value, const int8_t id) { // Set the control-mode for hc 0-off, 1-RC20, 2-RC3x bool Thermostat::set_control(const char * value, const int8_t id) { - int ctrl = 0; - if (!Helpers::value2number(value, ctrl)) { + uint8_t ctrl = 0; + if (!Helpers::value2enum(value, ctrl, {F("off"), F("rc20"), F("rc3x")})) { LOG_WARNING(F("Set control: Invalid value")); return false; } @@ -1786,7 +1786,7 @@ bool Thermostat::set_wwtemp(const char * value, const int8_t id) { LOG_WARNING(F("Set warm water high temperature: Invalid value")); return false; } - LOG_INFO(F("Setting warm water high temperature to %d"), t); + LOG_INFO(F("Setting warm water high temperature to %d C"), t); write_command(0x031B, 0, t, 0x031B); return true; } @@ -1798,7 +1798,7 @@ bool Thermostat::set_wwtemplow(const char * value, const int8_t id) { LOG_WARNING(F("Set warm water low temperature: Invalid value")); return false; } - LOG_INFO(F("Setting warm water low temperature to %d"), t); + LOG_INFO(F("Setting warm water low temperature to %d C"), t); write_command(0x031B, 1, t, 0x031B); return true; } diff --git a/src/emsesp.cpp b/src/emsesp.cpp index 63d58b2b..c60420cd 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -112,17 +112,29 @@ void EMSESP::scan_devices() { */ uint8_t EMSESP::check_master_device(const uint8_t device_id, const uint16_t type_id, const bool read) { if (actual_master_thermostat_ == 0x18) { - uint16_t mon_id[4] = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; - uint16_t set_id[4] = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; + uint16_t mon_ids[4] = {0x02A5, 0x02A6, 0x02A7, 0x02A8}; + uint16_t set_ids[4] = {0x02B9, 0x02BA, 0x02BB, 0x02BC}; + uint16_t summer_ids[4] = {0x02AF, 0x02B0, 0x02B1, 0x02B2}; + uint16_t curve_ids[4] = {0x029B, 0x029C, 0x029D, 0x029E}; + uint16_t master_ids[] = {0x02F5, 0x031B, 0x031D, 0x031E, 0x023A, 0x0267, 0x0240}; + // look for heating circuits for (uint8_t i = 0; i < 4; i++) { - if (type_id == mon_id[i] || type_id == set_id[i]) { + if (type_id == mon_ids[i] || type_id == set_ids[i] || type_id == summer_ids[i] || type_id == curve_ids[i]) { if (read) { + // receiving telegrams and map all to master thermostat at 0x18 (src manipulated) return 0x18; } else { + // sending telegrams to the individual thermostats (dst manipulated) return 0x18 + i; } } } + // look for ids that are only handled by master + for (uint8_t i = 0; i < sizeof(master_ids); i++) { + if (type_id == master_ids[i]) { + return 0x18; + } + } } return device_id; From ea07af0ab2b98f600751b7a527a0c7258163ef0b Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 18 Dec 2020 11:14:28 +0100 Subject: [PATCH 222/225] fix boilerstate in 0xE4 #667 --- CHANGELOG_LATEST.md | 1 + src/devices/boiler.cpp | 11 ++++++----- src/emsdevice.cpp | 5 +++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 1f3b621d..75163828 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -22,6 +22,7 @@ - serviceCodeNumber, 3-char serviceCode, exhausttemp and heating_active for newer ems+ boilers - prevent MQTT publish messages from sending twice - repeated output on read commands +- heating_active for ems+ ### Changed - optimized MQTT for HA to reduce heap fragmentation issues diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index ea18faab..17c3e525 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1050,11 +1050,12 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram changed_ |= telegram->read_value(serviceCodeNumber_, 4); // at this point do a quick check to see if the hot water or heating is active - uint8_t state = 0; - telegram->read_value(state, 11); - boilerState_ = state & 0x01 ? 0x08 : 0; - boilerState_ |= state & 0x02 ? 0x01 : 0; - boilerState_ |= state & 0x04 ? 0x02 : 0; + uint8_t state = EMS_VALUE_UINT_NOTSET; + if (telegram->read_value(state, 11)) { + boilerState_ = state & 0x01 ? 0x08 : 0; + boilerState_ |= state & 0x02 ? 0x01 : 0; + boilerState_ |= state & 0x04 ? 0x02 : 0; + } check_active(); } diff --git a/src/emsdevice.cpp b/src/emsdevice.cpp index 4299052e..099944d0 100644 --- a/src/emsdevice.cpp +++ b/src/emsdevice.cpp @@ -326,8 +326,9 @@ bool EMSdevice::handle_telegram(std::shared_ptr telegram) { toggle_fetch(tf.telegram_type_id_, false); return false; } - - tf.process_function_(telegram); + if (telegram->message_length > 0) { + tf.process_function_(telegram); + } return true; } } From 5cd5661375cc1570d45a281edfb3439f38292b1f Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Fri, 18 Dec 2020 15:16:08 +0100 Subject: [PATCH 223/225] check telegram offset and length if access direct. --- src/devices/boiler.cpp | 6 ++++++ src/devices/thermostat.cpp | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 17c3e525..550734af 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1238,6 +1238,9 @@ void Boiler::process_UBAFlags(std::shared_ptr telegram) { // 0x10, 0x11 void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { + if (telegram->offset > 0 || telegram->message_length < 9) { + return; + } // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr if (telegram->message_data[4] & 0x80) { // valid date char code[3]; @@ -1262,6 +1265,9 @@ void Boiler::process_UBAErrorMessage(std::shared_ptr telegram) { // 0x15 void Boiler::process_UBAMaintenanceData(std::shared_ptr telegram) { + if (telegram->offset > 0 || telegram->message_length < 5) { + return; + } // first byte: Maintenance messages (0 = none, 1 = by operating hours, 2 = by date) telegram->read_value(maintenanceType_, 0); telegram->read_value(maintenanceTime_, 1); diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 6d0bf847..370f21ec 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1461,6 +1461,9 @@ void Thermostat::process_RC35Monitor(std::shared_ptr telegram) { // exit if the 15th byte (second from last) is 0x00, which I think is calculated flow setpoint temperature // with weather controlled RC35s this value is >=5, otherwise can be zero and our setpoint temps will be incorrect // see https://github.com/proddy/EMS-ESP/issues/373#issuecomment-627907301 + if (telegram->offset > 0 || telegram->message_length < 15) { + return; + } if (telegram->message_data[14] == 0x00) { return; } @@ -1482,7 +1485,7 @@ void Thermostat::process_RC35Monitor(std::shared_ptr telegram) { // type 0x3D (HC1), 0x47 (HC2), 0x51 (HC3), 0x5B (HC4) - Working Mode Heating - for reading the mode from the RC35 thermostat (0x10) void Thermostat::process_RC35Set(std::shared_ptr telegram) { // check to see we have a valid type. heating: 1 radiator, 2 convectors, 3 floors, 4 room supply - if (telegram->message_data[0] == 0x00) { + if (telegram->offset == 0 && telegram->message_data[0] == 0x00) { return; } @@ -1528,7 +1531,7 @@ void Thermostat::process_RCTime(std::shared_ptr telegram) { if (flags() == EMS_DEVICE_FLAG_EASY) { return; // not supported } - if (telegram->message_length < 7) { + if (telegram->offset > 0 || telegram->message_length < 8) { return; } if (telegram->message_data[7] & 0x0C) { // date and time not valid @@ -1566,6 +1569,9 @@ void Thermostat::process_RCTime(std::shared_ptr telegram) { // 10 00 A2 00 41 32 32 03 30 00 02 00 00 00 00 00 00 02 CRC // A 2 2 816 void Thermostat::process_RCError(std::shared_ptr telegram) { + if (telegram->offset > 0 || telegram->message_length < 5) { + return; + } if (errorCode_.empty()) { errorCode_.resize(10, '\0'); } @@ -1581,6 +1587,9 @@ void Thermostat::process_RCError(std::shared_ptr telegram) { // 0x12 error log void Thermostat::process_RCErrorMessage(std::shared_ptr telegram) { + if (telegram->offset > 0 || telegram->message_length < 12) { + return; + } // data: displaycode(2), errornumber(2), year, month, hour, day, minute, duration(2), src-addr if (telegram->message_data[4] & 0x80) { // valid date char code[3]; @@ -1606,7 +1615,7 @@ bool Thermostat::set_minexttemp(const char * value, const int8_t id) { return false; } - LOG_INFO(F("Setting min external temperature to %d"), mt); + LOG_INFO(F("Setting min external temperature to %d C"), mt); if ((model() == EMS_DEVICE_FLAG_RC300) || (model() == EMS_DEVICE_FLAG_RC100)) { write_command(0x240, 10, mt, 0x240); } else { @@ -1747,7 +1756,7 @@ bool Thermostat::set_control(const char * value, const int8_t id) { uint8_t hc_num = (id == -1) ? AUTO_HEATING_CIRCUIT : id; std::shared_ptr hc = heating_circuit(hc_num); - if (hc == nullptr || ctrl > 2) { + if (hc == nullptr) { return false; } From 200e20686b52aff26b907c881813bce3500effa2 Mon Sep 17 00:00:00 2001 From: MichaelDvP Date: Sat, 26 Dec 2020 10:57:16 +0100 Subject: [PATCH 224/225] holiday command: fix day, add 'at home' mode --- CHANGELOG_LATEST.md | 1 + src/devices/thermostat.cpp | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 75163828..0baf08fb 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -14,6 +14,7 @@ - maintenance message and command - thermostat program, reducemode, controlmode - optional delayed start for sending tx-telegrams to prevent conflicts with KM200 +- RC35 holiday setting with `+` for 'at home' ### Fixed - mixer IPM pumpstatus diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index 370f21ec..a8a003b2 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -1865,12 +1865,20 @@ bool Thermostat::set_holiday(const char * value, const int8_t id) { data[0] = (hd[0] - '0') * 10 + (hd[1] - '0'); data[1] = (hd[3] - '0') * 10 + (hd[4] - '0'); data[2] = (hd[7] - '0') * 100 + (hd[8] - '0') * 10 + (hd[9] - '0'); - data[3] = (hd[11] - '0') * 10 + (hd[11] - '0'); + data[3] = (hd[11] - '0') * 10 + (hd[12] - '0'); data[4] = (hd[14] - '0') * 10 + (hd[15] - '0'); data[5] = (hd[18] - '0') * 100 + (hd[19] - '0') * 10 + (hd[20] - '0'); - LOG_INFO(F("Setting holiday for hc %d"), hc->hc_num()); - write_command(timer_typeids[hc->hc_num() - 1], 87, data, 6, 0); + if (hd[10] == '-') { + LOG_INFO(F("Setting holiday away from home for hc %d"), hc->hc_num()); + write_command(timer_typeids[hc->hc_num() - 1], 87, data, 6, 0); + } else if (hd[10] == '+') { + LOG_INFO(F("Setting holiday at home for hc %d"), hc->hc_num()); + write_command(timer_typeids[hc->hc_num() - 1], 93, data, 6, 0); + } else { + LOG_WARNING(F("Set holiday: Invalid")); + return false; + } return true; } From 19c547e9099cb21a1c1982d0a56587942b0ad1e5 Mon Sep 17 00:00:00 2001 From: proddy Date: Mon, 28 Dec 2020 11:10:03 +0100 Subject: [PATCH 225/225] auto formatting --- CHANGELOG.md | 47 +++++++++++++++++++++++++++++++++++++- CHANGELOG_LATEST.md | 34 --------------------------- RELEASENOTES.md | 2 +- RELEASENOTES_DEV.md | 2 +- src/WebSettingsService.cpp | 2 +- src/WebSettingsService.h | 2 +- src/devices/boiler.cpp | 26 ++++++++++----------- src/devices/solar.cpp | 2 +- src/devices/thermostat.cpp | 5 ++-- src/emsesp.cpp | 2 +- src/mqtt.cpp | 6 ++--- src/test/test.cpp | 4 ++-- src/version.h | 2 +- 13 files changed, 74 insertions(+), 62 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 10628b88..0fbe9c16 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,51 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [2.2.0] December 28 2020 + +### Added +- function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts +- SM100 pump working time and energy units +- heating curve parameters and commands for RC300 +- `wwonetime` for RC300 thermostat +- expose test framework via api (#611) +- SysLog has enable/disable flag in WebUI +- Add solar configuration telegrams (#616) [thanks @hpanther] +- `log trace` shows decoded or optional raw telegrams, `watch unknown` for only unknown telegrams +- WM10 switch telegrams +- boiler information (#633), pumpmod min/max commands +- maintenance message and command +- thermostat program, reducemode, controlmode +- optional delayed start for sending tx-telegrams to prevent conflicts with KM200 +- RC35 holiday setting with `+` for 'at home' + +### Fixed +- mixer IPM pumpstatus +- mixer devices in HA were incorrectly named +- Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) +- serviceCodeNumber, 3-char serviceCode, exhausttemp and heating_active for newer ems+ boilers +- prevent MQTT publish messages from sending twice +- repeated output on read commands +- heating_active for ems+ + +### Changed +- optimized MQTT for HA to reduce heap fragmentation issues +- change syslog settings without reboot +- HA-config split in smaller blocks +- commands `fetch` and `publish [ha]` as call +- mqtt json package sizes +- renamed the command system info (which showed settings) to `settings` +- renamed the command system report (Which dumped debug info) to `info` +- Changing settings via web restarts only selected services +- renamed pio targets (esp8266-ci and esp32-ci for GitHub CI) +- telnet default settings `log info`, timeout 60 min +- `log debug` not showing telegram names, use `log trace` or `watch on` to show the telegrams +- optimized how console and web display device data ([#632](https://github.com/proddy/EMS-ESP/issues/632)) + +### Removed +- old shell and python build scripts + + ## [2.1.0] October 31 2020 ### Added @@ -39,7 +84,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Fix writing to the Junkers FR120 thermostat - support for changing summermode - added missing `heatingtype` to thermostat data -- handle incomming ems+ read requests, ignore F7 telegrams with 3byte-id +- handle incoming ems+ read requests, ignore F7 telegrams with 3byte-id - fix month for setting clock from NTP ### Changed diff --git a/CHANGELOG_LATEST.md b/CHANGELOG_LATEST.md index 0baf08fb..ed105de5 100644 --- a/CHANGELOG_LATEST.md +++ b/CHANGELOG_LATEST.md @@ -1,43 +1,9 @@ # Changelog ### Added -- function keys in editor: cursor, del, home, end. F1=help, F2=show, and other shortcuts -- SM100 pump working time and energy units -- heating curve parameters and commands for RC300 -- `wwonetime` for RC300 thermostat -- expose test framework via api (#611) -- SysLog has enable/disable flag in WebUI -- Add solar configuration telegrams (#616) [thanks @hpanther] -- `log trace` shows decoded or optional raw telegrams, `watch unknown` for only unknown telegrams -- WM10 switch telegrams -- boiler information (#633), pumpmod min/max commands -- maintenance message and command -- thermostat program, reducemode, controlmode -- optional delayed start for sending tx-telegrams to prevent conflicts with KM200 -- RC35 holiday setting with `+` for 'at home' ### Fixed -- mixer IPM pumpstatus -- mixer devices in HA were incorrectly named -- Prevent HA MQTT config messages for thermostat that has no 'currtemp' (#582) -- serviceCodeNumber, 3-char serviceCode, exhausttemp and heating_active for newer ems+ boilers -- prevent MQTT publish messages from sending twice -- repeated output on read commands -- heating_active for ems+ ### Changed -- optimized MQTT for HA to reduce heap fragmentation issues -- change syslog settings without reboot -- HA-config split in smaller blocks -- commands `fetch` and `publish [ha]` as call -- mqtt json package sizes -- renamed the command system info (which showed settings) to `settings` -- renamed the command system report (Which dumped debug info) to `info` -- Changing settings via web restarts only selected services -- renamed pio targets (esp8266-ci and esp32-ci for GitHub CI) -- telnet default settings `log info`, timeout 60 min -- `log debug` not showing telegram names, use `log trace` or `watch on` to show the telegrams -- optimized how console and web display device data ([#632](https://github.com/proddy/EMS-ESP/issues/632)) ### Removed -- old shell and python build scripts diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 1a8605f4..e7668cb3 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -2,5 +2,5 @@ # Firmware Installation -Follow the instructions in the [documentation](https://emsesp.github.io/docs) on how to install the firmware binaries in the Assets below. +Follow the instructions in the [documentation](https://emsesp.github.io/docs) on how to install the firmware binaries from the Assets below. diff --git a/RELEASENOTES_DEV.md b/RELEASENOTES_DEV.md index 88cf53e9..623978f9 100644 --- a/RELEASENOTES_DEV.md +++ b/RELEASENOTES_DEV.md @@ -4,5 +4,5 @@ This is a snapshot of the current "beta" development code and firmware binaries # Firmware Installation -Follow the instructions in the [documentation](https://emsesp.github.io/docs) on how to install the firmware binaries in the Assets below. +Follow the instructions in the [documentation](https://emsesp.github.io/docs) on how to install the firmware binaries from the Assets below. diff --git a/src/WebSettingsService.cpp b/src/WebSettingsService.cpp index 12f035ed..525f0040 100644 --- a/src/WebSettingsService.cpp +++ b/src/WebSettingsService.cpp @@ -80,7 +80,7 @@ StateUpdateResult WebSettings::update(JsonObject & root, WebSettings & settings) settings.syslog_level = root["syslog_level"] | EMSESP_DEFAULT_SYSLOG_LEVEL; settings.syslog_mark_interval = root["syslog_mark_interval"] | EMSESP_DEFAULT_SYSLOG_MARK_INTERVAL; settings.syslog_host = root["syslog_host"] | EMSESP_DEFAULT_SYSLOG_HOST; - settings.trace_raw = root["trace_raw"] | EMSESP_DEFAULT_TRACELOG_RAW ; + settings.trace_raw = root["trace_raw"] | EMSESP_DEFAULT_TRACELOG_RAW; EMSESP::trace_raw(settings.trace_raw); snprintf_P(&crc_after[0], diff --git a/src/WebSettingsService.h b/src/WebSettingsService.h index 92f865a0..1edda0f6 100644 --- a/src/WebSettingsService.h +++ b/src/WebSettingsService.h @@ -39,7 +39,7 @@ #define EMSESP_DEFAULT_HIDE_LED false #define EMSESP_DEFAULT_DALLAS_PARASITE false #define EMSESP_DEFAULT_API_ENABLED false // turn off, because its insecure -#define EMSESP_DEFAULT_BOOL_FORMAT 1 // on/off +#define EMSESP_DEFAULT_BOOL_FORMAT 1 // on/off #define EMSESP_DEFAULT_ANALOG_ENABLED false // Default GPIO PIN definitions diff --git a/src/devices/boiler.cpp b/src/devices/boiler.cpp index 550734af..31d74b15 100644 --- a/src/devices/boiler.cpp +++ b/src/devices/boiler.cpp @@ -1037,8 +1037,8 @@ void Boiler::process_UBAMonitorFastPlus(std::shared_ptr telegram changed_ |= telegram->read_value(retTemp_, 17); // can be 0 if no sensor, handled in export_values changed_ |= telegram->read_value(sysPress_, 21); - //changed_ |= telegram->read_value(temperatur_, 13); // unknown temperature - //changed_ |= telegram->read_value(temperatur_, 27); // unknown temperature + //changed_ |= telegram->read_value(temperature_, 13); // unknown temperature + //changed_ |= telegram->read_value(temperature_, 27); // unknown temperature // read 3 char service code / installation status as appears on the display if ((telegram->message_length > 3) && (telegram->offset == 0)) { @@ -1231,9 +1231,9 @@ void Boiler::process_UBAFlags(std::shared_ptr telegram) { // 0x1C // 08 00 1C 94 0B 0A 1D 31 08 00 80 00 00 00 -> message for 29.11.2020 // 08 00 1C 94 0B 0A 1D 31 00 00 00 00 00 00 -> message reset - void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegram) { +void Boiler::process_UBAMaintenanceStatus(std::shared_ptr telegram) { // 5. byte: Maintenance due (0 = no, 3 = yes, due to operating hours, 8 = yes, due to date) - changed_ |= telegram->read_value(maintenanceMessage_,5); + changed_ |= telegram->read_value(maintenanceMessage_, 5); } // 0x10, 0x11 @@ -1271,11 +1271,11 @@ void Boiler::process_UBAMaintenanceData(std::shared_ptr telegram // first byte: Maintenance messages (0 = none, 1 = by operating hours, 2 = by date) telegram->read_value(maintenanceType_, 0); telegram->read_value(maintenanceTime_, 1); - uint8_t day = telegram->message_data[2]; - uint8_t month = telegram->message_data[3]; - uint8_t year = telegram->message_data[4]; + uint8_t day = telegram->message_data[2]; + uint8_t month = telegram->message_data[3]; + uint8_t year = telegram->message_data[4]; if (day > 0 && month > 0 && year > 0) { - snprintf_P(maintenanceDate_,sizeof(maintenanceDate_),PSTR("%02d.%02d.%04d"),day,month,year + 2000); + snprintf_P(maintenanceDate_, sizeof(maintenanceDate_), PSTR("%02d.%02d.%04d"), day, month, year + 2000); } } @@ -1715,15 +1715,15 @@ bool Boiler::set_maintenance(const char * value, const int8_t id) { return true; } - int hrs; - if (!Helpers::value2number(value, hrs)) { - LOG_WARNING(F("Setting maintenance: wrong format")); - return false; + int hrs; + if (!Helpers::value2number(value, hrs)) { + LOG_WARNING(F("Setting maintenance: wrong format")); + return false; } if (hrs == 0) { LOG_INFO(F("Setting maintenance off")); - write_command(0x15, 0, 0, 0x15); // off + write_command(0x15, 0, 0, 0x15); // off } else { LOG_INFO(F("Setting maintenance in %d hours"), hrs); write_command(0x15, 1, (uint8_t)(hrs / 100)); diff --git a/src/devices/solar.cpp b/src/devices/solar.cpp index 5b8dd9df..17751b48 100644 --- a/src/devices/solar.cpp +++ b/src/devices/solar.cpp @@ -327,7 +327,7 @@ void Solar::process_SM100Monitor2(std::shared_ptr telegram) { // not implemented yet } -// SM100wwTemperatur - 0x07D6 +// SM100wwTemperature - 0x07D6 // Solar Module(0x2A) -> (0x00), (0x7D6), data: 01 C1 00 00 02 5B 01 AF 01 AD 80 00 01 90 void Solar::process_SM100wwTemperature(std::shared_ptr telegram) { // changed_ |= telegram->read_value(wwTemp_1_, 0); diff --git a/src/devices/thermostat.cpp b/src/devices/thermostat.cpp index a8a003b2..62686351 100644 --- a/src/devices/thermostat.cpp +++ b/src/devices/thermostat.cpp @@ -631,7 +631,8 @@ bool Thermostat::export_values_hc(uint8_t mqtt_format, JsonObject & rootThermost if (model == EMS_DEVICE_FLAG_RC35 || model == EMS_DEVICE_FLAG_RC30_1) { dataThermostat["controlmode"] = Helpers::render_enum(s, {F("outdoor"), F("room")}, hc->controlmode); } else if (model == EMS_DEVICE_FLAG_RC300 || model == EMS_DEVICE_FLAG_RC100) { - dataThermostat["controlmode"] = Helpers::render_enum(s, {F("off"), F("outdoor"), F("simple"), F("MPC"), F("room"), F("power"), F("const.")}, hc->controlmode); + dataThermostat["controlmode"] = + Helpers::render_enum(s, {F("off"), F("outdoor"), F("simple"), F("MPC"), F("room"), F("power"), F("const.")}, hc->controlmode); } } @@ -1565,7 +1566,7 @@ void Thermostat::process_RCTime(std::shared_ptr telegram) { } } -// process_RCError - type 0xA2 - error maeesage - 14 bytes long +// process_RCError - type 0xA2 - error message - 14 bytes long // 10 00 A2 00 41 32 32 03 30 00 02 00 00 00 00 00 00 02 CRC // A 2 2 816 void Thermostat::process_RCError(std::shared_ptr telegram) { diff --git a/src/emsesp.cpp b/src/emsesp.cpp index c60420cd..882ad53e 100644 --- a/src/emsesp.cpp +++ b/src/emsesp.cpp @@ -635,7 +635,7 @@ bool EMSESP::process_telegram(std::shared_ptr telegram) { } else if (!trace_raw_) { LOG_TRACE(pretty_telegram(telegram).c_str()); } - } else if (!trace_raw_){ + } else if (!trace_raw_) { LOG_TRACE(pretty_telegram(telegram).c_str()); } diff --git a/src/mqtt.cpp b/src/mqtt.cpp index 5916b1e2..11f052a0 100644 --- a/src/mqtt.cpp +++ b/src/mqtt.cpp @@ -508,9 +508,9 @@ void Mqtt::on_connect() { void Mqtt::ha_status() { StaticJsonDocument doc; - doc["name"] = FJSON("EMS-ESP status"); - doc["uniq_id"] = FJSON("status"); - doc["~"] = System::hostname(); // ems-esp + doc["name"] = FJSON("EMS-ESP status"); + doc["uniq_id"] = FJSON("status"); + doc["~"] = System::hostname(); // ems-esp // doc["avty_t"] = FJSON("~/status"); doc["json_attr_t"] = FJSON("~/heartbeat"); doc["stat_t"] = FJSON("~/heartbeat"); diff --git a/src/test/test.cpp b/src/test/test.cpp index b677539b..4d3c696e 100644 --- a/src/test/test.cpp +++ b/src/test/test.cpp @@ -755,8 +755,8 @@ void Test::run_test(uuid::console::Shell & shell, const std::string & cmd) { EMSESP::mqtt_.incoming(system_topic, "{\"cmd\":\"pin\",\"id\":12,\"data\":\"1\"}"); EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"wwmode\",\"data\":\"auto\"}"); - EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"control\",\"data\":\"1\"}"); // RC35 only, should error - EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"mode\",\"data\":\"poep\",\"id\":2}"); // invalid mode + EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"control\",\"data\":\"1\"}"); // RC35 only, should error + EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"mode\",\"data\":\"bad\",\"id\":2}"); // invalid mode EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"mode\",\"data\":\"auto\",\"id\":2}"); EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"mode\",\"data\":\"auto\",\"hc\":2}"); // hc as number EMSESP::mqtt_.incoming(thermostat_topic, "{\"cmd\":\"temp\",\"data\":19.5,\"hc\":1}"); // data as number diff --git a/src/version.h b/src/version.h index 2396e96f..36ebd4a5 100644 --- a/src/version.h +++ b/src/version.h @@ -1 +1 @@ -#define EMSESP_APP_VERSION "2.1.1b7" +#define EMSESP_APP_VERSION "2.2.0"